...
Source file src/pkg/cmd/link/internal/mips64/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 mips64
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.ArchMIPS64
41 if objabi.GOARCH == "mips64le" {
42 arch = sys.ArchMIPS64LE
43 }
44
45 theArch := ld.Arch{
46 Funcalign: funcAlign,
47 Maxalign: maxAlign,
48 Minalign: minAlign,
49 Dwarfregsp: dwarfRegSP,
50 Dwarfreglr: dwarfRegLR,
51 Adddynrel: adddynrel,
52 Archinit: archinit,
53 Archreloc: archreloc,
54 Archrelocvariant: archrelocvariant,
55 Asmb: asmb,
56 Asmb2: asmb2,
57 Elfreloc1: elfreloc1,
58 Elfsetupplt: elfsetupplt,
59 Gentext: gentext,
60 Machoreloc1: machoreloc1,
61
62 Linuxdynld: "/lib64/ld64.so.1",
63 Freebsddynld: "XXX",
64 Openbsddynld: "XXX",
65 Netbsddynld: "XXX",
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 = 16*1024 + int64(ld.HEADR)
83 }
84 if *ld.FlagRound == -1 {
85 *ld.FlagRound = 16 * 1024
86 }
87
88 case objabi.Hlinux:
89 ld.Elfinit(ctxt)
90 ld.HEADR = ld.ELFRESERVE
91 if *ld.FlagTextAddr == -1 {
92 *ld.FlagTextAddr = 0x10000 + int64(ld.HEADR)
93 }
94 if *ld.FlagRound == -1 {
95 *ld.FlagRound = 0x10000
96 }
97
98 case objabi.Hnacl:
99 ld.Elfinit(ctxt)
100 ld.HEADR = 0x10000
101 ld.Funcalign = 16
102 if *ld.FlagTextAddr == -1 {
103 *ld.FlagTextAddr = 0x20000
104 }
105 if *ld.FlagRound == -1 {
106 *ld.FlagRound = 0x10000
107 }
108 }
109 }
110
View as plain text