github.com/bir3/gocompiler@v0.3.205/src/cmd/link/internal/loong64/obj.go (about) 1 // Copyright 2022 The Go Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package loong64 6 7 import ( 8 "github.com/bir3/gocompiler/src/cmd/internal/objabi" 9 "github.com/bir3/gocompiler/src/cmd/internal/sys" 10 "github.com/bir3/gocompiler/src/cmd/link/internal/ld" 11 ) 12 13 func Init() (*sys.Arch, ld.Arch) { 14 arch := sys.ArchLoong64 15 16 theArch := ld.Arch{ 17 Funcalign: funcAlign, 18 Maxalign: maxAlign, 19 Minalign: minAlign, 20 Dwarfregsp: dwarfRegSP, 21 Dwarfreglr: dwarfRegLR, 22 Adddynrel: adddynrel, 23 Archinit: archinit, 24 Archreloc: archreloc, 25 Archrelocvariant: archrelocvariant, 26 Extreloc: extreloc, 27 Elfreloc1: elfreloc1, 28 ElfrelocSize: 24, 29 Elfsetupplt: elfsetupplt, 30 Machoreloc1: machoreloc1, 31 Gentext: gentext, 32 33 Linuxdynld: "/lib64/ld.so.1", 34 LinuxdynldMusl: "/lib64/ld-musl-loongarch.so.1", 35 Freebsddynld: "XXX", 36 Openbsddynld: "XXX", 37 Netbsddynld: "XXX", 38 Dragonflydynld: "XXX", 39 Solarisdynld: "XXX", 40 } 41 42 return arch, theArch 43 } 44 45 func archinit(ctxt *ld.Link) { 46 switch ctxt.HeadType { 47 default: 48 ld.Exitf("unknown -H option: %v", ctxt.HeadType) 49 case objabi.Hlinux: /* loong64 elf */ 50 ld.Elfinit(ctxt) 51 ld.HEADR = ld.ELFRESERVE 52 if *ld.FlagTextAddr == -1 { 53 *ld.FlagTextAddr = 0x10000 + int64(ld.HEADR) 54 } 55 if *ld.FlagRound == -1 { 56 *ld.FlagRound = 0x10000 57 } 58 } 59 }