...
Source file src/pkg/cmd/link/internal/ppc64/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 ppc64
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.ArchPPC64
41 if objabi.GOARCH == "ppc64le" {
42 arch = sys.ArchPPC64LE
43 }
44
45 theArch := ld.Arch{
46 Funcalign: funcAlign,
47 Maxalign: maxAlign,
48 Minalign: minAlign,
49 Dwarfregsp: dwarfRegSP,
50 Dwarfreglr: dwarfRegLR,
51
52 Adddynrel: adddynrel,
53 Archinit: archinit,
54 Archreloc: archreloc,
55 Archrelocvariant: archrelocvariant,
56 Asmb: asmb,
57 Asmb2: asmb2,
58 Elfreloc1: elfreloc1,
59 Elfsetupplt: elfsetupplt,
60 Gentext: gentext,
61 Trampoline: trampoline,
62 Machoreloc1: machoreloc1,
63 Xcoffreloc1: xcoffreloc1,
64
65
66 Linuxdynld: "/lib64/ld64.so.1",
67
68 Freebsddynld: "XXX",
69 Openbsddynld: "XXX",
70 Netbsddynld: "XXX",
71 Dragonflydynld: "XXX",
72 Solarisdynld: "XXX",
73 }
74
75 return arch, theArch
76 }
77
78 func archinit(ctxt *ld.Link) {
79 switch ctxt.HeadType {
80 default:
81 ld.Exitf("unknown -H option: %v", ctxt.HeadType)
82
83 case objabi.Hplan9:
84 ld.HEADR = 32
85
86 if *ld.FlagTextAddr == -1 {
87 *ld.FlagTextAddr = 4128
88 }
89 if *ld.FlagRound == -1 {
90 *ld.FlagRound = 4096
91 }
92
93 case objabi.Hlinux:
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.Haix:
115 ld.Xcoffinit(ctxt)
116 }
117 }
118
View as plain text