Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
G
go
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
go
Commits
7d11924c
Commit
7d11924c
authored
Jun 24, 2008
by
Ken Thompson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
middle dot as alpha package separator
SVN=124419
parent
206daeab
Changes
11
Expand all
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
238 additions
and
191 deletions
+238
-191
src/cmd/6g/gen.c
src/cmd/6g/gen.c
+1
-0
src/cmd/6g/obj.c
src/cmd/6g/obj.c
+8
-1
src/cmd/cc/lexbody
src/cmd/cc/lexbody
+13
-3
src/cmd/gc/walk.c
src/cmd/gc/walk.c
+50
-23
src/runtime/rt0_amd64_darwin.s
src/runtime/rt0_amd64_darwin.s
+8
-8
src/runtime/rt0_amd64_linux.s
src/runtime/rt0_amd64_linux.s
+10
-10
src/runtime/rt1_amd64_darwin.c
src/runtime/rt1_amd64_darwin.c
+26
-26
src/runtime/rt1_amd64_linux.c
src/runtime/rt1_amd64_linux.c
+7
-7
src/runtime/rt2_amd64.c
src/runtime/rt2_amd64.c
+3
-3
src/runtime/runtime.c
src/runtime/runtime.c
+89
-88
src/runtime/runtime.h
src/runtime/runtime.h
+23
-22
No files found.
src/cmd/6g/gen.c
View file @
7d11924c
...
@@ -380,6 +380,7 @@ agen_inter(Node *n, Node *res)
...
@@ -380,6 +380,7 @@ agen_inter(Node *n, Node *res)
if
(
!
n
->
left
->
addable
)
{
if
(
!
n
->
left
->
addable
)
{
agen
(
n
->
left
,
&
nodr
);
agen
(
n
->
left
,
&
nodr
);
gmove
(
&
nodr
,
&
nodo
);
gmove
(
&
nodr
,
&
nodo
);
dump
(
"xxx"
,
n
->
left
);
fatal
(
"agen_inter i2s"
);
fatal
(
"agen_inter i2s"
);
}
else
{
}
else
{
cgen
(
n
->
left
,
&
nodo
);
cgen
(
n
->
left
,
&
nodo
);
...
...
src/cmd/6g/obj.c
View file @
7d11924c
...
@@ -165,6 +165,13 @@ return;
...
@@ -165,6 +165,13 @@ return;
Bterm
(
bout
);
Bterm
(
bout
);
}
}
Bputdot
(
Biobuf
*
b
)
{
// put out middle dot ·
Bputc
(
b
,
0xc2
);
Bputc
(
b
,
0xb7
);
}
void
void
zname
(
Biobuf
*
b
,
Sym
*
s
,
int
t
)
zname
(
Biobuf
*
b
,
Sym
*
s
,
int
t
)
{
{
...
@@ -177,7 +184,7 @@ zname(Biobuf *b, Sym *s, int t)
...
@@ -177,7 +184,7 @@ zname(Biobuf *b, Sym *s, int t)
for
(
n
=
s
->
opackage
;
*
n
;
n
++
)
for
(
n
=
s
->
opackage
;
*
n
;
n
++
)
Bputc
(
b
,
*
n
);
Bputc
(
b
,
*
n
);
Bput
c
(
b
,
'_'
);
Bput
dot
(
b
);
for
(
n
=
s
->
name
;
*
n
;
n
++
)
for
(
n
=
s
->
name
;
*
n
;
n
++
)
Bputc
(
b
,
*
n
);
Bputc
(
b
,
*
n
);
Bputc
(
b
,
0
);
Bputc
(
b
,
0
);
...
...
src/cmd/cc/lexbody
View file @
7d11924c
...
@@ -232,6 +232,16 @@ lookup(void)
...
@@ -232,6 +232,16 @@ lookup(void)
return s;
return s;
}
}
int
ISALPHA(int c)
{
if(isalpha(c))
return 1;
if(c >= Runeself)
return 1;
return 0;
}
long
long
yylex(void)
yylex(void)
{
{
...
@@ -259,7 +269,7 @@ l1:
...
@@ -259,7 +269,7 @@ l1:
}
}
goto l0;
goto l0;
}
}
if(
isalpha
(c))
if(
ISALPHA
(c))
goto talph;
goto talph;
if(isdigit(c))
if(isdigit(c))
goto tnum;
goto tnum;
...
@@ -275,7 +285,7 @@ l1:
...
@@ -275,7 +285,7 @@ l1:
case '.':
case '.':
c = GETC();
c = GETC();
if(
isalpha
(c)) {
if(
ISALPHA
(c)) {
cp = symb;
cp = symb;
*cp++ = '.';
*cp++ = '.';
goto aloop;
goto aloop;
...
@@ -296,7 +306,7 @@ l1:
...
@@ -296,7 +306,7 @@ l1:
aloop:
aloop:
*cp++ = c;
*cp++ = c;
c = GETC();
c = GETC();
if(
isalpha
(c) || isdigit(c) || c == '_' || c == '$')
if(
ISALPHA
(c) || isdigit(c) || c == '_' || c == '$')
goto aloop;
goto aloop;
*cp = 0;
*cp = 0;
peekc = c;
peekc = c;
...
...
src/cmd/gc/walk.c
View file @
7d11924c
...
@@ -1789,14 +1789,7 @@ badt:
...
@@ -1789,14 +1789,7 @@ badt:
return
nl
;
return
nl
;
}
}
Node
*
/*
reorder1
(
Node
*
n
)
{
Iter
save
;
Node
*
l
,
*
r
,
*
f
,
*
a
,
*
g
;
int
c
,
t
;
/*
* from ascompat[te]
* from ascompat[te]
* evaluating actual function arguments.
* evaluating actual function arguments.
* f(a,b)
* f(a,b)
...
@@ -1804,6 +1797,12 @@ reorder1(Node *n)
...
@@ -1804,6 +1797,12 @@ reorder1(Node *n)
* then it is done first. otherwise must
* then it is done first. otherwise must
* make temp variables
* make temp variables
*/
*/
Node
*
reorder1
(
Node
*
n
)
{
Iter
save
;
Node
*
l
,
*
r
,
*
f
,
*
a
,
*
g
;
int
c
,
t
;
l
=
listfirst
(
&
save
,
&
n
);
l
=
listfirst
(
&
save
,
&
n
);
c
=
0
;
// function calls
c
=
0
;
// function calls
...
@@ -1874,20 +1873,19 @@ more:
...
@@ -1874,20 +1873,19 @@ more:
goto
loop2
;
goto
loop2
;
}
}
Node
*
/*
reorder2
(
Node
*
n
)
{
Iter
save
;
Node
*
l
;
int
c
;
/*
* from ascompat[et]
* from ascompat[et]
* a,b = f()
* a,b = f()
* return of a multi.
* return of a multi.
* there can be no function calls at all,
* there can be no function calls at all,
* or they will over-write the return values.
* or they will over-write the return values.
*/
*/
Node
*
reorder2
(
Node
*
n
)
{
Iter
save
;
Node
*
l
;
int
c
;
l
=
listfirst
(
&
save
,
&
n
);
l
=
listfirst
(
&
save
,
&
n
);
c
=
0
;
c
=
0
;
...
@@ -1907,15 +1905,44 @@ loop1:
...
@@ -1907,15 +1905,44 @@ loop1:
goto
loop1
;
goto
loop1
;
}
}
Node
*
/*
reorder3
(
Node
*
n
)
{
/*
* from ascompat[ee]
* from ascompat[ee]
* a,b = c,d
* a,b = c,d
* simultaneous assignment. there can be
* simultaneous assignment. there can be
* later use of an earlier lvalue.
* later use of an earlier lvalue.
*/
*/
int
vmatch
(
Node
*
l
,
Node
*
r
)
{
dump
(
"l"
,
l
);
dump
(
"r"
,
r
);
return
0
;
}
Node
*
reorder3
(
Node
*
n
)
{
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
;
return
n
;
}
}
...
...
src/runtime/rt0_amd64_darwin.s
View file @
7d11924c
...
@@ -31,7 +31,7 @@ done:
...
@@ -31,7 +31,7 @@ done:
ADDQ
$
16
,
SP
ADDQ
$
16
,
SP
CALL
check
(
SB
)
CALL
check
(
SB
)
CALL
main_main
(
SB
)
CALL
main_main
(
SB
)
CALL
sys
_
exit
(
SB
)
CALL
sys
·
exit
(
SB
)
CALL
notok
(
SB
)
CALL
notok
(
SB
)
POPQ
AX
POPQ
AX
RET
RET
...
@@ -39,7 +39,7 @@ done:
...
@@ -39,7 +39,7 @@ done:
TEXT
FLUSH
(
SB
),1,$-8
TEXT
FLUSH
(
SB
),1,$-8
RET
RET
TEXT
sys
_
exit
(
SB
),1,$-8
TEXT
sys
·
exit
(
SB
),1,$-8
MOVL
8
(
SP
),
DI
//
arg
1
exit
status
MOVL
8
(
SP
),
DI
//
arg
1
exit
status
MOVL
$
(
0x2000000
+
1
),
AX
MOVL
$
(
0x2000000
+
1
),
AX
SYSCALL
SYSCALL
...
@@ -47,7 +47,7 @@ TEXT sys_exit(SB),1,$-8
...
@@ -47,7 +47,7 @@ TEXT sys_exit(SB),1,$-8
CALL
notok
(
SB
)
CALL
notok
(
SB
)
RET
RET
TEXT
sys
_
write
(
SB
),1,$-8
TEXT
sys
·
write
(
SB
),1,$-8
MOVL
8
(
SP
),
DI
//
arg
1
fid
MOVL
8
(
SP
),
DI
//
arg
1
fid
MOVQ
16
(
SP
),
SI
//
arg
2
buf
MOVQ
16
(
SP
),
SI
//
arg
2
buf
MOVL
24
(
SP
),
DX
//
arg
3
count
MOVL
24
(
SP
),
DX
//
arg
3
count
...
@@ -57,7 +57,7 @@ TEXT sys_write(SB),1,$-8
...
@@ -57,7 +57,7 @@ TEXT sys_write(SB),1,$-8
CALL
notok
(
SB
)
CALL
notok
(
SB
)
RET
RET
TEXT
sys
_
sigaction
(
SB
),1,$-8
TEXT
sys
·
sigaction
(
SB
),1,$-8
MOVL
8
(
SP
),
DI
//
arg
1
sig
MOVL
8
(
SP
),
DI
//
arg
1
sig
MOVQ
16
(
SP
),
SI
//
arg
2
act
MOVQ
16
(
SP
),
SI
//
arg
2
act
MOVQ
24
(
SP
),
DX
//
arg
3
oact
MOVQ
24
(
SP
),
DX
//
arg
3
oact
...
@@ -76,11 +76,11 @@ TEXT sigtramp(SB),1,$24
...
@@ -76,11 +76,11 @@ TEXT sigtramp(SB),1,$24
CALL
sighandler
(
SB
)
CALL
sighandler
(
SB
)
RET
RET
TEXT
sys
_
breakpoint
(
SB
),1,$-8
TEXT
sys
·
breakpoint
(
SB
),1,$-8
BYTE
$
0xcc
BYTE
$
0xcc
RET
RET
TEXT
sys
_
mmap
(
SB
),1,$-8
TEXT
sys
·
mmap
(
SB
),1,$-8
MOVQ
8
(
SP
),
DI
//
arg
1
addr
MOVQ
8
(
SP
),
DI
//
arg
1
addr
MOVL
16
(
SP
),
SI
//
arg
2
len
MOVL
16
(
SP
),
SI
//
arg
2
len
MOVL
20
(
SP
),
DX
//
arg
3
prot
MOVL
20
(
SP
),
DX
//
arg
3
prot
...
@@ -98,7 +98,7 @@ TEXT notok(SB),1,$-8
...
@@ -98,7 +98,7 @@ TEXT notok(SB),1,$-8
MOVQ
BP
,
(
BP
)
MOVQ
BP
,
(
BP
)
RET
RET
TEXT
sys
_
memclr
(
SB
),1,$-8
TEXT
sys
·
memclr
(
SB
),1,$-8
MOVQ
8
(
SP
),
DI
//
arg
1
addr
MOVQ
8
(
SP
),
DI
//
arg
1
addr
MOVL
16
(
SP
),
CX
//
arg
2
count
MOVL
16
(
SP
),
CX
//
arg
2
count
ADDL
$
7
,
CX
ADDL
$
7
,
CX
...
@@ -109,7 +109,7 @@ TEXT sys_memclr(SB),1,$-8
...
@@ -109,7 +109,7 @@ TEXT sys_memclr(SB),1,$-8
STOSQ
STOSQ
RET
RET
TEXT
sys
_
getcallerpc
+0(
SB
),0,$0
TEXT
sys
·
getcallerpc
+0(
SB
),0,$0
MOVQ
x
+
0
(
FP
),
AX
MOVQ
x
+
0
(
FP
),
AX
MOVQ
-
8
(
AX
),
AX
MOVQ
-
8
(
AX
),
AX
RET
RET
src/runtime/rt0_amd64_linux.s
View file @
7d11924c
...
@@ -25,8 +25,8 @@ loop:
...
@@ -25,8 +25,8 @@ loop:
done
:
done
:
ADDQ
$
8
,
CX
ADDQ
$
8
,
CX
CALL
check
(
SB
)
CALL
check
(
SB
)
CALL
main
_
main
(
SB
)
CALL
main
·
main
(
SB
)
CALL
sys
_
exit
(
SB
)
CALL
sys
·
exit
(
SB
)
CALL
notok
(
SB
)
CALL
notok
(
SB
)
POPQ
AX
POPQ
AX
RET
RET
...
@@ -34,7 +34,7 @@ done:
...
@@ -34,7 +34,7 @@ done:
TEXT
FLUSH
(
SB
),1,$-8
TEXT
FLUSH
(
SB
),1,$-8
RET
RET
TEXT
sys
_
exit
(
SB
),1,$-8
TEXT
sys
·
exit
(
SB
),1,$-8
MOVL
8
(
SP
),
DI
MOVL
8
(
SP
),
DI
MOVL
$
60
,
AX
MOVL
$
60
,
AX
SYSCALL
SYSCALL
...
@@ -42,7 +42,7 @@ TEXT sys_exit(SB),1,$-8
...
@@ -42,7 +42,7 @@ TEXT sys_exit(SB),1,$-8
CALL
notok
(
SB
)
CALL
notok
(
SB
)
RET
RET
TEXT
sys
_
write
(
SB
),1,$-8
TEXT
sys
·
write
(
SB
),1,$-8
MOVL
8
(
SP
),
DI
MOVL
8
(
SP
),
DI
MOVQ
16
(
SP
),
SI
MOVQ
16
(
SP
),
SI
MOVL
24
(
SP
),
DX
MOVL
24
(
SP
),
DX
...
@@ -52,7 +52,7 @@ TEXT sys_write(SB),1,$-8
...
@@ -52,7 +52,7 @@ TEXT sys_write(SB),1,$-8
CALL
notok
(
SB
)
CALL
notok
(
SB
)
RET
RET
TEXT
sys
_
rt_sigaction
(
SB
),1,$-8
TEXT
sys
·
rt_sigaction
(
SB
),1,$-8
MOVL
8
(
SP
),
DI
MOVL
8
(
SP
),
DI
MOVQ
16
(
SP
),
SI
MOVQ
16
(
SP
),
SI
MOVQ
24
(
SP
),
DX
MOVQ
24
(
SP
),
DX
...
@@ -71,11 +71,11 @@ TEXT sigtramp(SB),1,$24
...
@@ -71,11 +71,11 @@ TEXT sigtramp(SB),1,$24
CALL
sighandler
(
SB
)
CALL
sighandler
(
SB
)
RET
RET
TEXT
sys
_
breakpoint
(
SB
),1,$-8
TEXT
sys
·
breakpoint
(
SB
),1,$-8
BYTE
$
0xcc
BYTE
$
0xcc
RET
RET
TEXT
sys
_
mmap
(
SB
),1,$-8
TEXT
sys
·
mmap
(
SB
),1,$-8
MOVQ
8
(
SP
),
DI
MOVQ
8
(
SP
),
DI
MOVL
16
(
SP
),
SI
MOVL
16
(
SP
),
SI
MOVL
20
(
SP
),
DX
MOVL
20
(
SP
),
DX
...
@@ -103,7 +103,7 @@ TEXT notok(SB),1,$-8
...
@@ -103,7 +103,7 @@ TEXT notok(SB),1,$-8
MOVQ
BP
,
(
BP
)
MOVQ
BP
,
(
BP
)
RET
RET
TEXT
sys
_
memclr
(
SB
),1,$-8
TEXT
sys
·
memclr
(
SB
),1,$-8
MOVQ
8
(
SP
),
DI
//
arg
1
addr
MOVQ
8
(
SP
),
DI
//
arg
1
addr
MOVL
16
(
SP
),
CX
//
arg
2
count
MOVL
16
(
SP
),
CX
//
arg
2
count
ADDL
$
7
,
CX
ADDL
$
7
,
CX
...
@@ -114,7 +114,7 @@ TEXT sys_memclr(SB),1,$-8
...
@@ -114,7 +114,7 @@ TEXT sys_memclr(SB),1,$-8
STOSQ
STOSQ
RET
RET
TEXT
sys
_
getcallerpc
+0(
SB
),0,$0
TEXT
sys
·
getcallerpc
+0(
SB
),0,$0
MOVQ
x
+
0
(
FP
),
AX
MOVQ
x
+
0
(
FP
),
AX
MOVQ
-
8
(
AX
),
AX
MOVQ
-
8
(
AX
),
AX
RET
RET
src/runtime/rt1_amd64_darwin.c
View file @
7d11924c
...
@@ -39,27 +39,27 @@ _STRUCT_X86_THREAD_STATE64
...
@@ -39,27 +39,27 @@ _STRUCT_X86_THREAD_STATE64
void
void
print_thread_state
(
_STRUCT_X86_THREAD_STATE64
*
ss
)
print_thread_state
(
_STRUCT_X86_THREAD_STATE64
*
ss
)
{
{
prints
(
"
\n
rax 0x"
);
sys
_
printpointer
((
void
*
)
ss
->
__rax
);
prints
(
"
\n
rax 0x"
);
sys
·
printpointer
((
void
*
)
ss
->
__rax
);
prints
(
"
\n
rbx 0x"
);
sys
_
printpointer
((
void
*
)
ss
->
__rbx
);
prints
(
"
\n
rbx 0x"
);
sys
·
printpointer
((
void
*
)
ss
->
__rbx
);
prints
(
"
\n
rcx 0x"
);
sys
_
printpointer
((
void
*
)
ss
->
__rcx
);
prints
(
"
\n
rcx 0x"
);
sys
·
printpointer
((
void
*
)
ss
->
__rcx
);
prints
(
"
\n
rdx 0x"
);
sys
_
printpointer
((
void
*
)
ss
->
__rdx
);
prints
(
"
\n
rdx 0x"
);
sys
·
printpointer
((
void
*
)
ss
->
__rdx
);
prints
(
"
\n
rdi 0x"
);
sys
_
printpointer
((
void
*
)
ss
->
__rdi
);
prints
(
"
\n
rdi 0x"
);
sys
·
printpointer
((
void
*
)
ss
->
__rdi
);
prints
(
"
\n
rsi 0x"
);
sys
_
printpointer
((
void
*
)
ss
->
__rsi
);
prints
(
"
\n
rsi 0x"
);
sys
·
printpointer
((
void
*
)
ss
->
__rsi
);
prints
(
"
\n
rbp 0x"
);
sys
_
printpointer
((
void
*
)
ss
->
__rbp
);
prints
(
"
\n
rbp 0x"
);
sys
·
printpointer
((
void
*
)
ss
->
__rbp
);
prints
(
"
\n
rsp 0x"
);
sys
_
printpointer
((
void
*
)
ss
->
__rsp
);
prints
(
"
\n
rsp 0x"
);
sys
·
printpointer
((
void
*
)
ss
->
__rsp
);
prints
(
"
\n
r8 0x"
);
sys
_
printpointer
((
void
*
)
ss
->
__r8
);
prints
(
"
\n
r8 0x"
);
sys
·
printpointer
((
void
*
)
ss
->
__r8
);
prints
(
"
\n
r9 0x"
);
sys
_
printpointer
((
void
*
)
ss
->
__r9
);
prints
(
"
\n
r9 0x"
);
sys
·
printpointer
((
void
*
)
ss
->
__r9
);
prints
(
"
\n
r10 0x"
);
sys
_
printpointer
((
void
*
)
ss
->
__r10
);
prints
(
"
\n
r10 0x"
);
sys
·
printpointer
((
void
*
)
ss
->
__r10
);
prints
(
"
\n
r11 0x"
);
sys
_
printpointer
((
void
*
)
ss
->
__r11
);
prints
(
"
\n
r11 0x"
);
sys
·
printpointer
((
void
*
)
ss
->
__r11
);
prints
(
"
\n
r12 0x"
);
sys
_
printpointer
((
void
*
)
ss
->
__r12
);
prints
(
"
\n
r12 0x"
);
sys
·
printpointer
((
void
*
)
ss
->
__r12
);
prints
(
"
\n
r13 0x"
);
sys
_
printpointer
((
void
*
)
ss
->
__r13
);
prints
(
"
\n
r13 0x"
);
sys
·
printpointer
((
void
*
)
ss
->
__r13
);
prints
(
"
\n
r14 0x"
);
sys
_
printpointer
((
void
*
)
ss
->
__r14
);
prints
(
"
\n
r14 0x"
);
sys
·
printpointer
((
void
*
)
ss
->
__r14
);
prints
(
"
\n
r15 0x"
);
sys
_
printpointer
((
void
*
)
ss
->
__r15
);
prints
(
"
\n
r15 0x"
);
sys
·
printpointer
((
void
*
)
ss
->
__r15
);
prints
(
"
\n
rip 0x"
);
sys
_
printpointer
((
void
*
)
ss
->
__rip
);
prints
(
"
\n
rip 0x"
);
sys
·
printpointer
((
void
*
)
ss
->
__rip
);
prints
(
"
\n
rflags 0x"
);
sys
_
printpointer
((
void
*
)
ss
->
__rflags
);
prints
(
"
\n
rflags 0x"
);
sys
·
printpointer
((
void
*
)
ss
->
__rflags
);
prints
(
"
\n
cs 0x"
);
sys
_
printpointer
((
void
*
)
ss
->
__cs
);
prints
(
"
\n
cs 0x"
);
sys
·
printpointer
((
void
*
)
ss
->
__cs
);
prints
(
"
\n
fs 0x"
);
sys
_
printpointer
((
void
*
)
ss
->
__fs
);
prints
(
"
\n
fs 0x"
);
sys
·
printpointer
((
void
*
)
ss
->
__fs
);
prints
(
"
\n
gs 0x"
);
sys
_
printpointer
((
void
*
)
ss
->
__gs
);
prints
(
"
\n
gs 0x"
);
sys
·
printpointer
((
void
*
)
ss
->
__gs
);
prints
(
"
\n
"
);
prints
(
"
\n
"
);
}
}
...
@@ -134,7 +134,7 @@ sighandler(int32 sig, siginfo *info, void *context)
...
@@ -134,7 +134,7 @@ sighandler(int32 sig, siginfo *info, void *context)
{
{
if
(
sig
<
0
||
sig
>=
NSIG
){
if
(
sig
<
0
||
sig
>=
NSIG
){
prints
(
"Signal "
);
prints
(
"Signal "
);
sys
_
printint
(
sig
);
sys
·
printint
(
sig
);
}
else
{
}
else
{
prints
(
sigtab
[
sig
].
name
);
prints
(
sigtab
[
sig
].
name
);
}
}
...
@@ -142,14 +142,14 @@ sighandler(int32 sig, siginfo *info, void *context)
...
@@ -142,14 +142,14 @@ sighandler(int32 sig, siginfo *info, void *context)
_STRUCT_MCONTEXT64
*
uc_mcontext
=
get_uc_mcontext
(
context
);
_STRUCT_MCONTEXT64
*
uc_mcontext
=
get_uc_mcontext
(
context
);
_STRUCT_X86_THREAD_STATE64
*
ss
=
get___ss
(
uc_mcontext
);
_STRUCT_X86_THREAD_STATE64
*
ss
=
get___ss
(
uc_mcontext
);
prints
(
"
\n
Faulting address: 0x"
);
sys
_
printpointer
(
info
->
si_addr
);
prints
(
"
\n
Faulting address: 0x"
);
sys
·
printpointer
(
info
->
si_addr
);
prints
(
"
\n
pc: 0x"
);
sys
_
printpointer
((
void
*
)
ss
->
__rip
);
prints
(
"
\n
pc: 0x"
);
sys
·
printpointer
((
void
*
)
ss
->
__rip
);
prints
(
"
\n\n
"
);
prints
(
"
\n\n
"
);
traceback
((
void
*
)
ss
->
__rip
,
(
void
*
)
ss
->
__rsp
);
traceback
((
void
*
)
ss
->
__rip
,
(
void
*
)
ss
->
__rsp
);
print_thread_state
(
ss
);
print_thread_state
(
ss
);
sys
_
exit
(
2
);
sys
·
exit
(
2
);
}
}
sigaction
a
;
sigaction
a
;
...
@@ -167,6 +167,6 @@ initsig(void)
...
@@ -167,6 +167,6 @@ initsig(void)
for
(
i
=
0
;
i
<
NSIG
;
i
++
)
for
(
i
=
0
;
i
<
NSIG
;
i
++
)
if
(
sigtab
[
i
].
catch
){
if
(
sigtab
[
i
].
catch
){
sys
_
sigaction
(
i
,
&
a
,
(
void
*
)
0
);
sys
·
sigaction
(
i
,
&
a
,
(
void
*
)
0
);
}
}
}
}
src/runtime/rt1_amd64_linux.c
View file @
7d11924c
...
@@ -40,20 +40,20 @@ sighandler(int32 sig, siginfo* info, void** context) {
...
@@ -40,20 +40,20 @@ sighandler(int32 sig, siginfo* info, void** context) {
if
(
sig
<
0
||
sig
>=
NSIG
){
if
(
sig
<
0
||
sig
>=
NSIG
){
prints
(
"Signal "
);
prints
(
"Signal "
);
sys
_
printint
(
sig
);
sys
·
printint
(
sig
);
}
else
{
}
else
{
prints
(
sigtab
[
sig
].
name
);
prints
(
sigtab
[
sig
].
name
);
}
}
prints
(
"
\n
Faulting address: 0x"
);
prints
(
"
\n
Faulting address: 0x"
);
sys
_
printpointer
(
info
->
si_addr
);
sys
·
printpointer
(
info
->
si_addr
);
prints
(
"
\n
PC: 0x"
);
prints
(
"
\n
PC: 0x"
);
sys
_
printpointer
(
context
[
21
]);
sys
·
printpointer
(
context
[
21
]);
prints
(
"
\n
SP: 0x"
);
prints
(
"
\n
SP: 0x"
);
sys
_
printpointer
(
context
[
20
]);
sys
·
printpointer
(
context
[
20
]);
prints
(
"
\n
"
);
prints
(
"
\n
"
);
traceback
(
context
[
21
],
context
[
20
]);
/* empirically discovered locations */
traceback
(
context
[
21
],
context
[
20
]);
/* empirically discovered locations */
sys
_
breakpoint
();
sys
·
breakpoint
();
sys
_
exit
(
2
);
sys
·
exit
(
2
);
}
}
sigaction
a
;
sigaction
a
;
...
@@ -69,6 +69,6 @@ initsig(void)
...
@@ -69,6 +69,6 @@ initsig(void)
for
(
i
=
0
;
i
<
NSIG
;
i
++
)
for
(
i
=
0
;
i
<
NSIG
;
i
++
)
if
(
sigtab
[
i
].
catch
){
if
(
sigtab
[
i
].
catch
){
sys
_
rt_sigaction
(
i
,
&
a
,
(
void
*
)
0
,
8
);
sys
·
rt_sigaction
(
i
,
&
a
,
(
void
*
)
0
,
8
);
}
}
}
}
src/runtime/rt2_amd64.c
View file @
7d11924c
...
@@ -22,7 +22,7 @@ traceback(uint8 *pc, uint8 *sp)
...
@@ -22,7 +22,7 @@ traceback(uint8 *pc, uint8 *sp)
name
=
"panic"
;
name
=
"panic"
;
for
(;;){
for
(;;){
prints
(
"0x"
);
prints
(
"0x"
);
sys
_
printpointer
(
pc
);
sys
·
printpointer
(
pc
);
prints
(
"?zi
\n
"
);
prints
(
"?zi
\n
"
);
/* find SP offset by stepping back through instructions to SP offset marker */
/* find SP offset by stepping back through instructions to SP offset marker */
while
(
pc
>
(
uint8
*
)
0x1000
+
sizeof
spmark
-
1
)
{
while
(
pc
>
(
uint8
*
)
0x1000
+
sizeof
spmark
-
1
)
{
...
@@ -50,7 +50,7 @@ traceback(uint8 *pc, uint8 *sp)
...
@@ -50,7 +50,7 @@ traceback(uint8 *pc, uint8 *sp)
for
(
i
=
0
;
i
<
3
;
i
++
){
for
(
i
=
0
;
i
<
3
;
i
++
){
if
(
i
!=
0
)
if
(
i
!=
0
)
prints
(
", "
);
prints
(
", "
);
sys
_
printint
(((
uint32
*
)
sp
)[
i
]);
sys
·
printint
(((
uint32
*
)
sp
)[
i
]);
}
}
prints
(
", ...)
\n
"
);
prints
(
", ...)
\n
"
);
prints
(
"
\t
"
);
prints
(
"
\t
"
);
...
@@ -60,7 +60,7 @@ traceback(uint8 *pc, uint8 *sp)
...
@@ -60,7 +60,7 @@ traceback(uint8 *pc, uint8 *sp)
if
(
i
!=
0
)
if
(
i
!=
0
)
prints
(
", "
);
prints
(
", "
);
prints
(
"0x"
);
prints
(
"0x"
);
sys
_
printpointer
(((
void
**
)
sp
)[
i
]);
sys
·
printpointer
(((
void
**
)
sp
)[
i
]);
}
}
prints
(
", ...)
\n
"
);
prints
(
", ...)
\n
"
);
/* print pc for next frame */
/* print pc for next frame */
...
...
src/runtime/runtime.c
View file @
7d11924c
This diff is collapsed.
Click to expand it.
src/runtime/runtime.h
View file @
7d11924c
...
@@ -90,7 +90,8 @@ void* mal(uint32);
...
@@ -90,7 +90,8 @@ void* mal(uint32);
uint32
cmpstring
(
string
,
string
);
uint32
cmpstring
(
string
,
string
);
void
initsig
(
void
);
void
initsig
(
void
);
void
traceback
(
uint8
*
pc
,
uint8
*
sp
);
void
traceback
(
uint8
*
pc
,
uint8
*
sp
);
struct
SigTab
{
struct
SigTab
{
int32
catch
;
int32
catch
;
int8
*
name
;
int8
*
name
;
};
};
...
@@ -98,28 +99,28 @@ struct SigTab {
...
@@ -98,28 +99,28 @@ struct SigTab {
/*
/*
* low level go -called
* low level go -called
*/
*/
void
sys
_
exit
(
int32
);
void
sys
·
exit
(
int32
);
void
sys
_
write
(
int32
,
void
*
,
int32
);
void
sys
·
write
(
int32
,
void
*
,
int32
);
void
sys
_
breakpoint
(
void
);
void
sys
·
breakpoint
(
void
);
uint8
*
sys
_
mmap
(
byte
*
,
uint32
,
int32
,
int32
,
int32
,
uint32
);
uint8
*
sys
·
mmap
(
byte
*
,
uint32
,
int32
,
int32
,
int32
,
uint32
);
void
sys
_
memclr
(
byte
*
,
uint32
);
void
sys
·
memclr
(
byte
*
,
uint32
);
void
*
sys
_
getcallerpc
(
void
*
);
void
*
sys
·
getcallerpc
(
void
*
);
void
sys
_
sigaction
(
int64
,
void
*
,
void
*
);
void
sys
·
sigaction
(
int64
,
void
*
,
void
*
);
void
sys
_
rt_sigaction
(
int64
,
void
*
,
void
*
,
uint64
);
void
sys
·
rt_sigaction
(
int64
,
void
*
,
void
*
,
uint64
);
/*
/*
* runtime go-called
* runtime go-called
*/
*/
void
sys
_
printbool
(
bool
);
void
sys
·
printbool
(
bool
);
void
sys
_
printfloat
(
float64
);
void
sys
·
printfloat
(
float64
);
void
sys
_
printint
(
int64
);
void
sys
·
printint
(
int64
);
void
sys
_
printstring
(
string
);
void
sys
·
printstring
(
string
);
void
sys
_
printpointer
(
void
*
);
void
sys
·
printpointer
(
void
*
);
void
sys
_
catstring
(
string
,
string
,
string
);
void
sys
·
catstring
(
string
,
string
,
string
);
void
sys
_
cmpstring
(
string
,
string
,
int32
);
void
sys
·
cmpstring
(
string
,
string
,
int32
);
void
sys
_
slicestring
(
string
,
int32
,
int32
,
string
);
void
sys
·
slicestring
(
string
,
int32
,
int32
,
string
);
void
sys
_
indexstring
(
string
,
int32
,
byte
);
void
sys
·
indexstring
(
string
,
int32
,
byte
);
void
sys
_
intstring
(
int64
,
string
);
void
sys
·
intstring
(
int64
,
string
);
void
sys
_
ifaces2i
(
Sigi
*
,
Sigs
*
,
Map
*
,
void
*
);
void
sys
·
ifaces2i
(
Sigi
*
,
Sigs
*
,
Map
*
,
void
*
);
void
sys
_
ifacei2i
(
Sigi
*
,
Map
*
,
void
*
);
void
sys
·
ifacei2i
(
Sigi
*
,
Map
*
,
void
*
);
void
sys
_
ifacei2s
(
Sigs
*
,
Map
*
,
void
*
);
void
sys
·
ifacei2s
(
Sigs
*
,
Map
*
,
void
*
);
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment