Skip to content
GitLab
Projects
Groups
Snippets
Help
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Open sidebar
Kirill Smelkov
go
Commits
54aba2e6
Commit
54aba2e6
authored
14 years ago
by
Luuk van Dijk
Browse files
Options
Download
Email Patches
Plain Diff
[68]l: expose genasmsym.
R=rsc CC=golang-dev
https://golang.org/cl/2512042
parent
e64280ec
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
26 additions
and
16 deletions
+26
-16
src/cmd/6l/l.h
src/cmd/6l/l.h
+1
-0
src/cmd/8l/l.h
src/cmd/8l/l.h
+1
-0
src/cmd/8l/symtab.c
src/cmd/8l/symtab.c
+24
-16
No files found.
src/cmd/6l/l.h
View file @
54aba2e6
...
...
@@ -397,6 +397,7 @@ void doprof2(void);
void
dostkoff
(
void
);
vlong
entryvalue
(
void
);
void
follow
(
void
);
void
genasmsym
(
void
(
*
put
)(
char
*
,
int
,
vlong
,
vlong
,
int
,
Sym
*
));
void
gethunk
(
void
);
void
gotypestrings
(
void
);
void
listinit
(
void
);
...
...
This diff is collapsed.
Click to expand it.
src/cmd/8l/l.h
View file @
54aba2e6
...
...
@@ -346,6 +346,7 @@ void doprof2(void);
void
dostkoff
(
void
);
int32
entryvalue
(
void
);
void
follow
(
void
);
void
genasmsym
(
void
(
*
put
)(
char
*
,
int
,
vlong
,
vlong
,
int
,
Sym
*
));
void
instinit
(
void
);
void
listinit
(
void
);
Sym
*
lookup
(
char
*
,
int
);
...
...
This diff is collapsed.
Click to expand it.
src/cmd/8l/symtab.c
View file @
54aba2e6
...
...
@@ -34,7 +34,7 @@
#include "../ld/lib.h"
void
putsymb
(
char
*
s
,
int
t
,
int32
v
,
int
ver
,
Sym
*
go
)
putsymb
(
char
*
s
,
int
t
,
vlong
v
,
vlong
size
,
int
ver
,
Sym
*
go
)
{
int
i
,
f
;
vlong
gv
;
...
...
@@ -89,7 +89,7 @@ putsymb(char *s, int t, int32 v, int ver, Sym *go)
}
void
asmsym
(
void
)
gen
asmsym
(
void
(
*
put
)(
char
*
,
int
,
vlong
,
vlong
,
int
,
Sym
*
)
)
{
Auto
*
a
;
Sym
*
s
;
...
...
@@ -97,10 +97,10 @@ asmsym(void)
s
=
lookup
(
"etext"
,
0
);
if
(
s
->
type
==
STEXT
)
put
symb
(
s
->
name
,
'T'
,
s
->
value
,
s
->
version
,
0
);
put
(
s
->
name
,
'T'
,
s
->
value
,
s
->
size
,
s
->
version
,
0
);
for
(
h
=
0
;
h
<
NHASH
;
h
++
)
for
(
s
=
hash
[
h
];
s
!=
S
;
s
=
s
->
hash
)
for
(
h
=
0
;
h
<
NHASH
;
h
++
)
{
for
(
s
=
hash
[
h
];
s
!=
S
;
s
=
s
->
hash
)
{
switch
(
s
->
type
)
{
case
SCONST
:
case
SRODATA
:
...
...
@@ -108,52 +108,60 @@ asmsym(void)
case
SELFDATA
:
if
(
!
s
->
reachable
)
continue
;
put
symb
(
s
->
name
,
'D'
,
symaddr
(
s
),
s
->
version
,
s
->
gotype
);
put
(
s
->
name
,
'D'
,
symaddr
(
s
),
s
->
size
,
s
->
version
,
s
->
gotype
);
continue
;
case
SMACHO
:
if
(
!
s
->
reachable
)
continue
;
put
symb
(
s
->
name
,
'D'
,
s
->
value
+
INITDAT
+
segdata
.
filelen
-
dynptrsize
,
s
->
version
,
s
->
gotype
);
put
(
s
->
name
,
'D'
,
s
->
value
+
INITDAT
+
segdata
.
filelen
-
dynptrsize
,
s
->
size
,
s
->
version
,
s
->
gotype
);
continue
;
case
SBSS
:
if
(
!
s
->
reachable
)
continue
;
put
symb
(
s
->
name
,
'B'
,
s
->
value
+
INITDAT
,
s
->
version
,
s
->
gotype
);
put
(
s
->
name
,
'B'
,
s
->
value
+
INITDAT
,
s
->
size
,
s
->
version
,
s
->
gotype
);
continue
;
case
SFIXED
:
put
symb
(
s
->
name
,
'B'
,
s
->
value
,
s
->
version
,
s
->
gotype
);
put
(
s
->
name
,
'B'
,
s
->
value
,
s
->
size
,
s
->
version
,
s
->
gotype
);
continue
;
case
SFILE
:
put
symb
(
s
->
name
,
'f'
,
s
->
value
,
s
->
version
,
0
);
put
(
s
->
name
,
'f'
,
s
->
value
,
0
,
s
->
version
,
0
);
continue
;
}
}
}
for
(
s
=
textp
;
s
!=
nil
;
s
=
s
->
next
)
{
/* filenames first */
for
(
a
=
s
->
autom
;
a
;
a
=
a
->
link
)
if
(
a
->
type
==
D_FILE
)
put
symb
(
a
->
asym
->
name
,
'z'
,
a
->
aoffset
,
0
,
0
);
put
(
a
->
asym
->
name
,
'z'
,
a
->
aoffset
,
0
,
0
,
0
);
else
if
(
a
->
type
==
D_FILE1
)
put
symb
(
a
->
asym
->
name
,
'Z'
,
a
->
aoffset
,
0
,
0
);
put
(
a
->
asym
->
name
,
'Z'
,
a
->
aoffset
,
0
,
0
,
0
);
put
symb
(
s
->
name
,
'T'
,
s
->
value
,
s
->
version
,
s
->
gotype
);
put
(
s
->
name
,
'T'
,
s
->
value
,
s
->
size
,
s
->
version
,
s
->
gotype
);
/* frame, auto and param after */
put
symb
(
".frame"
,
'm'
,
s
->
text
->
to
.
offset
+
4
,
0
,
0
);
put
(
".frame"
,
'm'
,
s
->
text
->
to
.
offset
+
4
,
0
,
0
,
0
);
for
(
a
=
s
->
autom
;
a
;
a
=
a
->
link
)
if
(
a
->
type
==
D_AUTO
)
put
symb
(
a
->
asym
->
name
,
'a'
,
-
a
->
aoffset
,
0
,
a
->
gotype
);
put
(
a
->
asym
->
name
,
'a'
,
-
a
->
aoffset
,
0
,
0
,
a
->
gotype
);
else
if
(
a
->
type
==
D_PARAM
)
put
symb
(
a
->
asym
->
name
,
'p'
,
a
->
aoffset
,
0
,
a
->
gotype
);
put
(
a
->
asym
->
name
,
'p'
,
a
->
aoffset
,
0
,
0
,
a
->
gotype
);
}
if
(
debug
[
'v'
]
||
debug
[
'n'
])
Bprint
(
&
bso
,
"symsize = %ud
\n
"
,
symsize
);
Bflush
(
&
bso
);
}
void
asmsym
(
void
)
{
genasmsym
(
putsymb
);
}
This diff is collapsed.
Click to expand it.
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