...
Source file src/pkg/cmd/link/internal/x86/obj.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31 package x86
32
33 import (
34 "cmd/internal/objabi"
35 "cmd/internal/sys"
36 "cmd/link/internal/ld"
37 )
38
39 func Init() (*sys.Arch, ld.Arch) {
40 arch := sys.Arch386
41
42 theArch := ld.Arch{
43 Funcalign: funcAlign,
44 Maxalign: maxAlign,
45 Minalign: minAlign,
46 Dwarfregsp: dwarfRegSP,
47 Dwarfreglr: dwarfRegLR,
48
49 Adddynrel: adddynrel,
50 Archinit: archinit,
51 Archreloc: archreloc,
52 Archrelocvariant: archrelocvariant,
53 Asmb: asmb,
54 Asmb2: asmb2,
55 Elfreloc1: elfreloc1,
56 Elfsetupplt: elfsetupplt,
57 Gentext: gentext,
58 Machoreloc1: machoreloc1,
59 PEreloc1: pereloc1,
60
61 Linuxdynld: "/lib/ld-linux.so.2",
62 Freebsddynld: "/usr/libexec/ld-elf.so.1",
63 Openbsddynld: "/usr/libexec/ld.so",
64 Netbsddynld: "/usr/libexec/ld.elf_so",
65 Solarisdynld: "/lib/ld.so.1",
66 }
67
68 return arch, theArch
69 }
70
71 func archinit(ctxt *ld.Link) {
72 switch ctxt.HeadType {
73 default:
74 ld.Exitf("unknown -H option: %v", ctxt.HeadType)
75
76 case objabi.Hplan9:
77 ld.HEADR = 32
78
79 if *ld.FlagTextAddr == -1 {
80 *ld.FlagTextAddr = 4096 + int64(ld.HEADR)
81 }
82 if *ld.FlagRound == -1 {
83 *ld.FlagRound = 4096
84 }
85
86 case objabi.Hdarwin:
87 ld.HEADR = ld.INITIAL_MACHO_HEADR
88 if *ld.FlagTextAddr == -1 {
89 *ld.FlagTextAddr = 4096 + int64(ld.HEADR)
90 }
91 if *ld.FlagRound == -1 {
92 *ld.FlagRound = 4096
93 }
94
95 case objabi.Hlinux,
96 objabi.Hfreebsd,
97 objabi.Hnetbsd,
98 objabi.Hopenbsd:
99 ld.Elfinit(ctxt)
100
101 ld.HEADR = ld.ELFRESERVE
102 if *ld.FlagTextAddr == -1 {
103 *ld.FlagTextAddr = 0x08048000 + int64(ld.HEADR)
104 }
105 if *ld.FlagRound == -1 {
106 *ld.FlagRound = 4096
107 }
108
109 case objabi.Hnacl:
110 ld.Elfinit(ctxt)
111 ld.HEADR = 0x10000
112 ld.Funcalign = 32
113 if *ld.FlagTextAddr == -1 {
114 *ld.FlagTextAddr = 0x20000
115 }
116 if *ld.FlagRound == -1 {
117 *ld.FlagRound = 0x10000
118 }
119
120 case objabi.Hwindows:
121
122 return
123 }
124 }
125
View as plain text