...
Source file src/pkg/cmd/link/internal/arm/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 arm
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.ArchARM
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 Trampoline: trampoline,
54 Asmb: asmb,
55 Asmb2: asmb2,
56 Elfreloc1: elfreloc1,
57 Elfsetupplt: elfsetupplt,
58 Gentext: gentext,
59 Machoreloc1: machoreloc1,
60 PEreloc1: pereloc1,
61
62 Linuxdynld: "/lib/ld-linux.so.3",
63 Freebsddynld: "/usr/libexec/ld-elf.so.1",
64 Openbsddynld: "/usr/libexec/ld.so",
65 Netbsddynld: "/libexec/ld.elf_so",
66 Dragonflydynld: "XXX",
67 Solarisdynld: "XXX",
68 }
69
70 return arch, theArch
71 }
72
73 func archinit(ctxt *ld.Link) {
74 switch ctxt.HeadType {
75 default:
76 ld.Exitf("unknown -H option: %v", ctxt.HeadType)
77
78 case objabi.Hplan9:
79 ld.HEADR = 32
80
81 if *ld.FlagTextAddr == -1 {
82 *ld.FlagTextAddr = 4128
83 }
84 if *ld.FlagRound == -1 {
85 *ld.FlagRound = 4096
86 }
87
88 case objabi.Hlinux,
89 objabi.Hfreebsd,
90 objabi.Hnetbsd,
91 objabi.Hopenbsd:
92 *ld.FlagD = false
93
94 ld.Elfinit(ctxt)
95 ld.HEADR = ld.ELFRESERVE
96 if *ld.FlagTextAddr == -1 {
97 *ld.FlagTextAddr = 0x10000 + int64(ld.HEADR)
98 }
99 if *ld.FlagRound == -1 {
100 *ld.FlagRound = 0x10000
101 }
102
103 case objabi.Hnacl:
104 ld.Elfinit(ctxt)
105 ld.HEADR = 0x10000
106 ld.Funcalign = 16
107 if *ld.FlagTextAddr == -1 {
108 *ld.FlagTextAddr = 0x20000
109 }
110 if *ld.FlagRound == -1 {
111 *ld.FlagRound = 0x10000
112 }
113
114 case objabi.Hdarwin:
115 ld.HEADR = ld.INITIAL_MACHO_HEADR
116 if *ld.FlagTextAddr == -1 {
117 *ld.FlagTextAddr = 4096 + int64(ld.HEADR)
118 }
119 if *ld.FlagRound == -1 {
120 *ld.FlagRound = 4096
121 }
122
123 case objabi.Hwindows:
124
125 return
126 }
127 }
128
View as plain text