summaryrefslogtreecommitdiff
path: root/src/cmd/link
diff options
context:
space:
mode:
authorMatthew Dempsky <mdempsky@google.com>2014-08-27 20:15:05 -0400
committerMatthew Dempsky <mdempsky@google.com>2014-08-27 20:15:05 -0400
commit5be0c6ab4d892d245c7b710d2e37adc462744ba4 (patch)
treea1c218b0996d3ced338fdb2d19668ae132b41f4c /src/cmd/link
parent9f83f9dedbd9665766ca4641d6ea77a471c750a7 (diff)
downloadgo-5be0c6ab4d892d245c7b710d2e37adc462744ba4.tar.gz
cmd/{ld,link,objdump}, runtime, debug/gosym: move linker-defined symbols into runtime package
Fixes issue 8092. LGTM=rsc R=iant, rsc CC=golang-codereviews https://codereview.appspot.com/126790043 Committer: Russ Cox <rsc@golang.org>
Diffstat (limited to 'src/cmd/link')
-rw-r--r--src/cmd/link/auto.go40
-rw-r--r--src/cmd/link/layout.go6
-rw-r--r--src/cmd/link/pclntab.go2
-rw-r--r--src/cmd/link/pclntab_test.go2
-rw-r--r--src/cmd/link/runtime.go4
-rw-r--r--src/cmd/link/testdata/autosection.6bin850 -> 942 bytes
-rw-r--r--src/cmd/link/testdata/autosection.s22
-rw-r--r--src/cmd/link/testdata/dead.6bin836 -> 854 bytes
-rw-r--r--src/cmd/link/testdata/dead.s3
-rw-r--r--src/cmd/link/testdata/genpcln.go2
-rw-r--r--src/cmd/link/testdata/pclntab.6bin3799 -> 3809 bytes
-rw-r--r--src/cmd/link/testdata/pclntab.s2
12 files changed, 41 insertions, 42 deletions
diff --git a/src/cmd/link/auto.go b/src/cmd/link/auto.go
index 8f0c39f8c..f9228e8ca 100644
--- a/src/cmd/link/auto.go
+++ b/src/cmd/link/auto.go
@@ -18,26 +18,26 @@ import (
// linkerDefined lists the symbols supplied by other parts of the linker
// (runtime.go and layout.go).
var linkerDefined = map[string]bool{
- "bss": true,
- "data": true,
- "ebss": true,
- "edata": true,
- "efunctab": true,
- "end": true,
- "enoptrbss": true,
- "enoptrdata": true,
- "erodata": true,
- "etext": true,
- "etypelink": true,
- "functab": true,
- "gcbss": true,
- "gcdata": true,
- "noptrbss": true,
- "noptrdata": true,
- "pclntab": true,
- "rodata": true,
- "text": true,
- "typelink": true,
+ "runtime.bss": true,
+ "runtime.data": true,
+ "runtime.ebss": true,
+ "runtime.edata": true,
+ "runtime.efunctab": true,
+ "runtime.end": true,
+ "runtime.enoptrbss": true,
+ "runtime.enoptrdata": true,
+ "runtime.erodata": true,
+ "runtime.etext": true,
+ "runtime.etypelink": true,
+ "runtime.functab": true,
+ "runtime.gcbss": true,
+ "runtime.gcdata": true,
+ "runtime.noptrbss": true,
+ "runtime.noptrdata": true,
+ "runtime.pclntab": true,
+ "runtime.rodata": true,
+ "runtime.text": true,
+ "runtime.typelink": true,
}
// isAuto reports whether sym is an automatically-generated data or constant symbol.
diff --git a/src/cmd/link/layout.go b/src/cmd/link/layout.go
index 647702244..149ebced0 100644
--- a/src/cmd/link/layout.go
+++ b/src/cmd/link/layout.go
@@ -172,9 +172,9 @@ func (p *Prog) layout() {
start = sect.VirtAddr
end = sect.VirtAddr + sect.Size
}
- p.defineConst(name, start)
- p.defineConst("e"+name, end)
+ p.defineConst("runtime."+name, start)
+ p.defineConst("runtime.e"+name, end)
progEnd = end
}
- p.defineConst("end", progEnd)
+ p.defineConst("runtime.end", progEnd)
}
diff --git a/src/cmd/link/pclntab.go b/src/cmd/link/pclntab.go
index a950895aa..232d586bf 100644
--- a/src/cmd/link/pclntab.go
+++ b/src/cmd/link/pclntab.go
@@ -183,7 +183,7 @@ func (p *Prog) pclntab() {
pclntab := &Sym{
Sym: &goobj.Sym{
- SymID: goobj.SymID{Name: "pclntab"},
+ SymID: goobj.SymID{Name: "runtime.pclntab"},
Kind: goobj.SPCLNTAB,
Size: buf.Size(),
Reloc: buf.Reloc(),
diff --git a/src/cmd/link/pclntab_test.go b/src/cmd/link/pclntab_test.go
index 75d432fc5..19953f579 100644
--- a/src/cmd/link/pclntab_test.go
+++ b/src/cmd/link/pclntab_test.go
@@ -141,7 +141,7 @@ func TestPclntab(t *testing.T) {
// It returns a symbol reader for pclntab, the offset of the function information
// within that symbol, and the args and frame values read out of the information.
func findFunc(t *testing.T, p *Prog, name string) (r *SymReader, off, args, frame int, ok bool) {
- tabsym := p.Syms[goobj.SymID{Name: "pclntab"}]
+ tabsym := p.Syms[goobj.SymID{Name: "runtime.pclntab"}]
if tabsym == nil {
t.Errorf("pclntab is missing in binary")
return
diff --git a/src/cmd/link/runtime.go b/src/cmd/link/runtime.go
index 5d37015eb..b0c1ac98a 100644
--- a/src/cmd/link/runtime.go
+++ b/src/cmd/link/runtime.go
@@ -15,13 +15,13 @@ func (p *Prog) runtime() {
// TODO: Implement garbage collection data.
p.addSym(&Sym{
Sym: &goobj.Sym{
- SymID: goobj.SymID{Name: "gcdata"},
+ SymID: goobj.SymID{Name: "runtime.gcdata"},
Kind: goobj.SRODATA,
},
})
p.addSym(&Sym{
Sym: &goobj.Sym{
- SymID: goobj.SymID{Name: "gcbss"},
+ SymID: goobj.SymID{Name: "runtime.gcbss"},
Kind: goobj.SRODATA,
},
})
diff --git a/src/cmd/link/testdata/autosection.6 b/src/cmd/link/testdata/autosection.6
index 97e8872bd..386f422cf 100644
--- a/src/cmd/link/testdata/autosection.6
+++ b/src/cmd/link/testdata/autosection.6
Binary files differ
diff --git a/src/cmd/link/testdata/autosection.s b/src/cmd/link/testdata/autosection.s
index fd9e94da4..e0cb21723 100644
--- a/src/cmd/link/testdata/autosection.s
+++ b/src/cmd/link/testdata/autosection.s
@@ -16,37 +16,37 @@ GLOBL zero(SB), $8
GLOBL zeronoptr(SB), NOPTR, $16
// text
-DATA autotab+0x00(SB)/8, $text(SB)
+DATA autotab+0x00(SB)/8, $runtime·text(SB)
DATA autotab+0x08(SB)/8, $start(SB)
-DATA autotab+0x10(SB)/8, $etext(SB)
+DATA autotab+0x10(SB)/8, $runtime·etext(SB)
DATA autotab+0x18(SB)/8, $start+16(SB)
// data
-DATA autotab+0x20(SB)/8, $data(SB)
+DATA autotab+0x20(SB)/8, $runtime·data(SB)
DATA autotab+0x28(SB)/8, $autotab(SB)
-DATA autotab+0x30(SB)/8, $edata(SB)
+DATA autotab+0x30(SB)/8, $runtime·edata(SB)
DATA autotab+0x38(SB)/8, $nonzero+4(SB)
// bss
-DATA autotab+0x40(SB)/8, $bss(SB)
+DATA autotab+0x40(SB)/8, $runtime·bss(SB)
DATA autotab+0x48(SB)/8, $zero(SB)
-DATA autotab+0x50(SB)/8, $ebss(SB)
+DATA autotab+0x50(SB)/8, $runtime·ebss(SB)
DATA autotab+0x58(SB)/8, $zero+8(SB)
// noptrdata
-DATA autotab+0x60(SB)/8, $noptrdata(SB)
+DATA autotab+0x60(SB)/8, $runtime·noptrdata(SB)
DATA autotab+0x68(SB)/8, $nonzeronoptr(SB)
-DATA autotab+0x70(SB)/8, $enoptrdata(SB)
+DATA autotab+0x70(SB)/8, $runtime·enoptrdata(SB)
DATA autotab+0x78(SB)/8, $nonzeronoptr+8(SB)
// noptrbss
-DATA autotab+0x80(SB)/8, $noptrbss(SB)
+DATA autotab+0x80(SB)/8, $runtime·noptrbss(SB)
DATA autotab+0x88(SB)/8, $zeronoptr(SB)
-DATA autotab+0x90(SB)/8, $enoptrbss(SB)
+DATA autotab+0x90(SB)/8, $runtime·enoptrbss(SB)
DATA autotab+0x98(SB)/8, $zeronoptr+16(SB)
// end
-DATA autotab+0xa0(SB)/8, $end(SB)
+DATA autotab+0xa0(SB)/8, $runtime·end(SB)
DATA autotab+0xa8(SB)/8, $zeronoptr+16(SB)
GLOBL autotab(SB), $0xb0
diff --git a/src/cmd/link/testdata/dead.6 b/src/cmd/link/testdata/dead.6
index c60b1b6c6..9540adc1a 100644
--- a/src/cmd/link/testdata/dead.6
+++ b/src/cmd/link/testdata/dead.6
Binary files differ
diff --git a/src/cmd/link/testdata/dead.s b/src/cmd/link/testdata/dead.s
index 832ddaff6..86f31360f 100644
--- a/src/cmd/link/testdata/dead.s
+++ b/src/cmd/link/testdata/dead.s
@@ -17,7 +17,7 @@ TEXT text1(SB),7,$0
RET
TEXT text2(SB),7,$0
- MOVQ $edata(SB),BX
+ MOVQ $runtime·edata(SB),BX
RET
DATA data1<>+0(SB)/8, $data2(SB)
@@ -46,4 +46,3 @@ GLOBL dead_data1(SB), $16
GLOBL dead_data2(SB), $1
GLOBL dead_data3(SB), $1
GLOBL dead_funcdata(SB), $8
-
diff --git a/src/cmd/link/testdata/genpcln.go b/src/cmd/link/testdata/genpcln.go
index 684cc07a2..c10eaeae9 100644
--- a/src/cmd/link/testdata/genpcln.go
+++ b/src/cmd/link/testdata/genpcln.go
@@ -107,6 +107,6 @@ func main() {
for f := 0; f < 3; f++ {
fmt.Printf("\tCALL func%d(SB)\n", f)
}
- fmt.Printf("\tMOVQ $pclntab(SB), AX\n")
+ fmt.Printf("\tMOVQ $runtime·pclntab(SB), AX\n")
fmt.Printf("\n\tRET\n")
}
diff --git a/src/cmd/link/testdata/pclntab.6 b/src/cmd/link/testdata/pclntab.6
index 596daa9b5..9e7f9afdb 100644
--- a/src/cmd/link/testdata/pclntab.6
+++ b/src/cmd/link/testdata/pclntab.6
Binary files differ
diff --git a/src/cmd/link/testdata/pclntab.s b/src/cmd/link/testdata/pclntab.s
index 22c4ee0de..12dac70b0 100644
--- a/src/cmd/link/testdata/pclntab.s
+++ b/src/cmd/link/testdata/pclntab.s
@@ -1746,6 +1746,6 @@ TEXT start(SB),7,$0
CALL func0(SB)
CALL func1(SB)
CALL func2(SB)
- MOVQ $pclntab(SB), AX
+ MOVQ $runtime·pclntab(SB), AX
RET