Commit 7d11924c authored by Ken Thompson's avatar Ken Thompson

middle dot as alpha package separator

SVN=124419
parent 206daeab
......@@ -380,6 +380,7 @@ agen_inter(Node *n, Node *res)
if(!n->left->addable) {
agen(n->left, &nodr);
gmove(&nodr, &nodo);
dump("xxx", n->left);
fatal("agen_inter i2s");
} else {
cgen(n->left, &nodo);
......
......@@ -165,6 +165,13 @@ return;
Bterm(bout);
}
Bputdot(Biobuf *b)
{
// put out middle dot ·
Bputc(b, 0xc2);
Bputc(b, 0xb7);
}
void
zname(Biobuf *b, Sym *s, int t)
{
......@@ -177,7 +184,7 @@ zname(Biobuf *b, Sym *s, int t)
for(n=s->opackage; *n; n++)
Bputc(b, *n);
Bputc(b, '_');
Bputdot(b);
for(n=s->name; *n; n++)
Bputc(b, *n);
Bputc(b, 0);
......
......@@ -232,6 +232,16 @@ lookup(void)
return s;
}
int
ISALPHA(int c)
{
if(isalpha(c))
return 1;
if(c >= Runeself)
return 1;
return 0;
}
long
yylex(void)
{
......@@ -259,7 +269,7 @@ l1:
}
goto l0;
}
if(isalpha(c))
if(ISALPHA(c))
goto talph;
if(isdigit(c))
goto tnum;
......@@ -275,7 +285,7 @@ l1:
case '.':
c = GETC();
if(isalpha(c)) {
if(ISALPHA(c)) {
cp = symb;
*cp++ = '.';
goto aloop;
......@@ -296,7 +306,7 @@ l1:
aloop:
*cp++ = c;
c = GETC();
if(isalpha(c) || isdigit(c) || c == '_' || c == '$')
if(ISALPHA(c) || isdigit(c) || c == '_' || c == '$')
goto aloop;
*cp = 0;
peekc = c;
......
......@@ -1789,6 +1789,14 @@ badt:
return nl;
}
/*
* from ascompat[te]
* evaluating actual function arguments.
* f(a,b)
* if there is exactly one function expr,
* then it is done first. otherwise must
* make temp variables
*/
Node*
reorder1(Node *n)
{
......@@ -1796,15 +1804,6 @@ reorder1(Node *n)
Node *l, *r, *f, *a, *g;
int c, t;
/*
* from ascompat[te]
* evaluating actual function arguments.
* f(a,b)
* if there is exactly one function expr,
* then it is done first. otherwise must
* make temp variables
*/
l = listfirst(&save, &n);
c = 0; // function calls
t = 0; // total parameters
......@@ -1874,6 +1873,13 @@ more:
goto loop2;
}
/*
* from ascompat[et]
* a,b = f()
* return of a multi.
* there can be no function calls at all,
* or they will over-write the return values.
*/
Node*
reorder2(Node *n)
{
......@@ -1881,14 +1887,6 @@ reorder2(Node *n)
Node *l;
int c;
/*
* from ascompat[et]
* a,b = f()
* return of a multi.
* there can be no function calls at all,
* or they will over-write the return values.
*/
l = listfirst(&save, &n);
c = 0;
......@@ -1907,15 +1905,44 @@ loop1:
goto loop1;
}
/*
* from ascompat[ee]
* a,b = c,d
* simultaneous assignment. there can be
* later use of an earlier lvalue.
*/
int
vmatch(Node *l, Node *r)
{
dump("l", l);
dump("r", r);
return 0;
}
Node*
reorder3(Node *n)
{
/*
* from ascompat[ee]
* a,b = c,d
* simultaneous assignment. there can be
* later use of an earlier lvalue.
*/
Iter save1, save2;
Node *l1, *l2;
int c1, c2;
l1 = listfirst(&save1, &n);
c1 = 0;
while(l1 != N) {
l2 = listfirst(&save1, &n);
c2 = 0;
while(l2 != N) {
if(c2 > c1) {
if(vmatch(l1->left, l2->right)) {
}
}
l2 = listnext(&save1);
c2++;
}
l1 = listnext(&save1);
c1++;
}
return n;
}
......
......@@ -31,7 +31,7 @@ done:
ADDQ $16, SP
CALL check(SB)
CALL main_main(SB)
CALL sys_exit(SB)
CALL sys·exit(SB)
CALL notok(SB)
POPQ AX
RET
......@@ -39,7 +39,7 @@ done:
TEXT FLUSH(SB),1,$-8
RET
TEXT sys_exit(SB),1,$-8
TEXT sys·exit(SB),1,$-8
MOVL 8(SP), DI // arg 1 exit status
MOVL $(0x2000000+1), AX
SYSCALL
......@@ -47,7 +47,7 @@ TEXT sys_exit(SB),1,$-8
CALL notok(SB)
RET
TEXT sys_write(SB),1,$-8
TEXT sys·write(SB),1,$-8
MOVL 8(SP), DI // arg 1 fid
MOVQ 16(SP), SI // arg 2 buf
MOVL 24(SP), DX // arg 3 count
......@@ -57,7 +57,7 @@ TEXT sys_write(SB),1,$-8
CALL notok(SB)
RET
TEXT sys_sigaction(SB),1,$-8
TEXT sys·sigaction(SB),1,$-8
MOVL 8(SP), DI // arg 1 sig
MOVQ 16(SP), SI // arg 2 act
MOVQ 24(SP), DX // arg 3 oact
......@@ -76,11 +76,11 @@ TEXT sigtramp(SB),1,$24
CALL sighandler(SB)
RET
TEXT sys_breakpoint(SB),1,$-8
TEXT sys·breakpoint(SB),1,$-8
BYTE $0xcc
RET
TEXT sys_mmap(SB),1,$-8
TEXT sys·mmap(SB),1,$-8
MOVQ 8(SP), DI // arg 1 addr
MOVL 16(SP), SI // arg 2 len
MOVL 20(SP), DX // arg 3 prot
......@@ -98,7 +98,7 @@ TEXT notok(SB),1,$-8
MOVQ BP, (BP)
RET
TEXT sys_memclr(SB),1,$-8
TEXT sys·memclr(SB),1,$-8
MOVQ 8(SP), DI // arg 1 addr
MOVL 16(SP), CX // arg 2 count
ADDL $7, CX
......@@ -109,7 +109,7 @@ TEXT sys_memclr(SB),1,$-8
STOSQ
RET
TEXT sys_getcallerpc+0(SB),0,$0
TEXT sys·getcallerpc+0(SB),0,$0
MOVQ x+0(FP),AX
MOVQ -8(AX),AX
RET
......@@ -25,8 +25,8 @@ loop:
done:
ADDQ $8, CX
CALL check(SB)
CALL main_main(SB)
CALL sys_exit(SB)
CALL main·main(SB)
CALL sys·exit(SB)
CALL notok(SB)
POPQ AX
RET
......@@ -34,7 +34,7 @@ done:
TEXT FLUSH(SB),1,$-8
RET
TEXT sys_exit(SB),1,$-8
TEXT sys·exit(SB),1,$-8
MOVL 8(SP), DI
MOVL $60, AX
SYSCALL
......@@ -42,7 +42,7 @@ TEXT sys_exit(SB),1,$-8
CALL notok(SB)
RET
TEXT sys_write(SB),1,$-8
TEXT sys·write(SB),1,$-8
MOVL 8(SP), DI
MOVQ 16(SP), SI
MOVL 24(SP), DX
......@@ -52,7 +52,7 @@ TEXT sys_write(SB),1,$-8
CALL notok(SB)
RET
TEXT sys_rt_sigaction(SB),1,$-8
TEXT sys·rt_sigaction(SB),1,$-8
MOVL 8(SP), DI
MOVQ 16(SP), SI
MOVQ 24(SP), DX
......@@ -64,18 +64,18 @@ TEXT sys_rt_sigaction(SB),1,$-8
CALL notok(SB)
RET
TEXT sigtramp(SB),1,$24
TEXT sigtramp(SB),1,$24
MOVQ DI,0(SP)
MOVQ SI,8(SP)
MOVQ DX,16(SP)
CALL sighandler(SB)
RET
TEXT sys_breakpoint(SB),1,$-8
TEXT sys·breakpoint(SB),1,$-8
BYTE $0xcc
RET
TEXT sys_mmap(SB),1,$-8
TEXT sys·mmap(SB),1,$-8
MOVQ 8(SP), DI
MOVL 16(SP), SI
MOVL 20(SP), DX
......@@ -103,7 +103,7 @@ TEXT notok(SB),1,$-8
MOVQ BP, (BP)
RET
TEXT sys_memclr(SB),1,$-8
TEXT sys·memclr(SB),1,$-8
MOVQ 8(SP), DI // arg 1 addr
MOVL 16(SP), CX // arg 2 count
ADDL $7, CX
......@@ -114,7 +114,7 @@ TEXT sys_memclr(SB),1,$-8
STOSQ
RET
TEXT sys_getcallerpc+0(SB),0,$0
TEXT sys·getcallerpc+0(SB),0,$0
MOVQ x+0(FP),AX
MOVQ -8(AX),AX
RET
......@@ -39,27 +39,27 @@ _STRUCT_X86_THREAD_STATE64
void
print_thread_state(_STRUCT_X86_THREAD_STATE64* ss)
{
prints("\nrax 0x"); sys_printpointer((void*)ss->__rax);
prints("\nrbx 0x"); sys_printpointer((void*)ss->__rbx);
prints("\nrcx 0x"); sys_printpointer((void*)ss->__rcx);
prints("\nrdx 0x"); sys_printpointer((void*)ss->__rdx);
prints("\nrdi 0x"); sys_printpointer((void*)ss->__rdi);
prints("\nrsi 0x"); sys_printpointer((void*)ss->__rsi);
prints("\nrbp 0x"); sys_printpointer((void*)ss->__rbp);
prints("\nrsp 0x"); sys_printpointer((void*)ss->__rsp);
prints("\nr8 0x"); sys_printpointer((void*)ss->__r8 );
prints("\nr9 0x"); sys_printpointer((void*)ss->__r9 );
prints("\nr10 0x"); sys_printpointer((void*)ss->__r10);
prints("\nr11 0x"); sys_printpointer((void*)ss->__r11);
prints("\nr12 0x"); sys_printpointer((void*)ss->__r12);
prints("\nr13 0x"); sys_printpointer((void*)ss->__r13);
prints("\nr14 0x"); sys_printpointer((void*)ss->__r14);
prints("\nr15 0x"); sys_printpointer((void*)ss->__r15);
prints("\nrip 0x"); sys_printpointer((void*)ss->__rip);
prints("\nrflags 0x"); sys_printpointer((void*)ss->__rflags);
prints("\ncs 0x"); sys_printpointer((void*)ss->__cs);
prints("\nfs 0x"); sys_printpointer((void*)ss->__fs);
prints("\ngs 0x"); sys_printpointer((void*)ss->__gs);
prints("\nrax 0x"); sys·printpointer((void*)ss->__rax);
prints("\nrbx 0x"); sys·printpointer((void*)ss->__rbx);
prints("\nrcx 0x"); sys·printpointer((void*)ss->__rcx);
prints("\nrdx 0x"); sys·printpointer((void*)ss->__rdx);
prints("\nrdi 0x"); sys·printpointer((void*)ss->__rdi);
prints("\nrsi 0x"); sys·printpointer((void*)ss->__rsi);
prints("\nrbp 0x"); sys·printpointer((void*)ss->__rbp);
prints("\nrsp 0x"); sys·printpointer((void*)ss->__rsp);
prints("\nr8 0x"); sys·printpointer((void*)ss->__r8 );
prints("\nr9 0x"); sys·printpointer((void*)ss->__r9 );
prints("\nr10 0x"); sys·printpointer((void*)ss->__r10);
prints("\nr11 0x"); sys·printpointer((void*)ss->__r11);
prints("\nr12 0x"); sys·printpointer((void*)ss->__r12);
prints("\nr13 0x"); sys·printpointer((void*)ss->__r13);
prints("\nr14 0x"); sys·printpointer((void*)ss->__r14);
prints("\nr15 0x"); sys·printpointer((void*)ss->__r15);
prints("\nrip 0x"); sys·printpointer((void*)ss->__rip);
prints("\nrflags 0x"); sys·printpointer((void*)ss->__rflags);
prints("\ncs 0x"); sys·printpointer((void*)ss->__cs);
prints("\nfs 0x"); sys·printpointer((void*)ss->__fs);
prints("\ngs 0x"); sys·printpointer((void*)ss->__gs);
prints("\n");
}
......@@ -134,7 +134,7 @@ sighandler(int32 sig, siginfo *info, void *context)
{
if(sig < 0 || sig >= NSIG){
prints("Signal ");
sys_printint(sig);
sys·printint(sig);
}else{
prints(sigtab[sig].name);
}
......@@ -142,14 +142,14 @@ sighandler(int32 sig, siginfo *info, void *context)
_STRUCT_MCONTEXT64 *uc_mcontext = get_uc_mcontext(context);
_STRUCT_X86_THREAD_STATE64 *ss = get___ss(uc_mcontext);
prints("\nFaulting address: 0x"); sys_printpointer(info->si_addr);
prints("\npc: 0x"); sys_printpointer((void *)ss->__rip);
prints("\nFaulting address: 0x"); sys·printpointer(info->si_addr);
prints("\npc: 0x"); sys·printpointer((void *)ss->__rip);
prints("\n\n");
traceback((void *)ss->__rip, (void *)ss->__rsp);
print_thread_state(ss);
sys_exit(2);
sys·exit(2);
}
sigaction a;
......@@ -167,6 +167,6 @@ initsig(void)
for(i = 0; i <NSIG; i++)
if(sigtab[i].catch){
sys_sigaction(i, &a, (void*)0);
sys·sigaction(i, &a, (void*)0);
}
}
......@@ -40,20 +40,20 @@ sighandler(int32 sig, siginfo* info, void** context) {
if(sig < 0 || sig >= NSIG){
prints("Signal ");
sys_printint(sig);
sys·printint(sig);
}else{
prints(sigtab[sig].name);
}
prints("\nFaulting address: 0x");
sys_printpointer(info->si_addr);
sys·printpointer(info->si_addr);
prints("\nPC: 0x");
sys_printpointer(context[21]);
sys·printpointer(context[21]);
prints("\nSP: 0x");
sys_printpointer(context[20]);
sys·printpointer(context[20]);
prints("\n");
traceback(context[21], context[20]); /* empirically discovered locations */
sys_breakpoint();
sys_exit(2);
sys·breakpoint();
sys·exit(2);
}
sigaction a;
......@@ -69,6 +69,6 @@ initsig(void)
for(i = 0; i <NSIG; i++)
if(sigtab[i].catch){
sys_rt_sigaction(i, &a, (void*)0, 8);
sys·rt_sigaction(i, &a, (void*)0, 8);
}
}
......@@ -22,7 +22,7 @@ traceback(uint8 *pc, uint8 *sp)
name = "panic";
for(;;){
prints("0x");
sys_printpointer(pc);
sys·printpointer(pc);
prints("?zi\n");
/* find SP offset by stepping back through instructions to SP offset marker */
while(pc > (uint8*)0x1000+sizeof spmark-1) {
......@@ -50,7 +50,7 @@ traceback(uint8 *pc, uint8 *sp)
for(i = 0; i < 3; i++){
if(i != 0)
prints(", ");
sys_printint(((uint32*)sp)[i]);
sys·printint(((uint32*)sp)[i]);
}
prints(", ...)\n");
prints("\t");
......@@ -60,7 +60,7 @@ traceback(uint8 *pc, uint8 *sp)
if(i != 0)
prints(", ");
prints("0x");
sys_printpointer(((void**)sp)[i]);
sys·printpointer(((void**)sp)[i]);
}
prints(", ...)\n");
/* print pc for next frame */
......
This diff is collapsed.
......@@ -90,7 +90,8 @@ void* mal(uint32);
uint32 cmpstring(string, string);
void initsig(void);
void traceback(uint8 *pc, uint8 *sp);
struct SigTab {
struct SigTab
{
int32 catch;
int8 *name;
};
......@@ -98,28 +99,28 @@ struct SigTab {
/*
* low level go -called
*/
void sys_exit(int32);
void sys_write(int32, void*, int32);
void sys_breakpoint(void);
uint8* sys_mmap(byte*, uint32, int32, int32, int32, uint32);
void sys_memclr(byte*, uint32);
void* sys_getcallerpc(void*);
void sys_sigaction(int64, void*, void*);
void sys_rt_sigaction(int64, void*, void*, uint64);
void sys·exit(int32);
void sys·write(int32, void*, int32);
void sys·breakpoint(void);
uint8* sys·mmap(byte*, uint32, int32, int32, int32, uint32);
void sys·memclr(byte*, uint32);
void* sys·getcallerpc(void*);
void sys·sigaction(int64, void*, void*);
void sys·rt_sigaction(int64, void*, void*, uint64);
/*
* runtime go-called
*/
void sys_printbool(bool);
void sys_printfloat(float64);
void sys_printint(int64);
void sys_printstring(string);
void sys_printpointer(void*);
void sys_catstring(string, string, string);
void sys_cmpstring(string, string, int32);
void sys_slicestring(string, int32, int32, string);
void sys_indexstring(string, int32, byte);
void sys_intstring(int64, string);
void sys_ifaces2i(Sigi*, Sigs*, Map*, void*);
void sys_ifacei2i(Sigi*, Map*, void*);
void sys_ifacei2s(Sigs*, Map*, void*);
void sys·printbool(bool);
void sys·printfloat(float64);
void sys·printint(int64);
void sys·printstring(string);
void sys·printpointer(void*);
void sys·catstring(string, string, string);
void sys·cmpstring(string, string, int32);
void sys·slicestring(string, int32, int32, string);
void sys·indexstring(string, int32, byte);
void sys·intstring(int64, string);
void sys·ifaces2i(Sigi*, Sigs*, Map*, void*);
void sys·ifacei2i(Sigi*, Map*, void*);
void sys·ifacei2s(Sigs*, Map*, void*);
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment