elfstrdbg[ElfStrDebugStr] = Addstring(shstrtab, ".debug_str")
elfstrdbg[ElfStrGDBScripts] = Addstring(shstrtab, ".debug_gdb_scripts")
if Linkmode == LinkExternal {
- switch Thearch.Thechar {
- case '0', '6', '7', '9', 'z':
- elfstrdbg[ElfStrRelDebugInfo] = Addstring(shstrtab, ".rela.debug_info")
- elfstrdbg[ElfStrRelDebugAranges] = Addstring(shstrtab, ".rela.debug_aranges")
- elfstrdbg[ElfStrRelDebugLine] = Addstring(shstrtab, ".rela.debug_line")
- elfstrdbg[ElfStrRelDebugFrame] = Addstring(shstrtab, ".rela.debug_frame")
- default:
- elfstrdbg[ElfStrRelDebugInfo] = Addstring(shstrtab, ".rel.debug_info")
- elfstrdbg[ElfStrRelDebugAranges] = Addstring(shstrtab, ".rel.debug_aranges")
- elfstrdbg[ElfStrRelDebugLine] = Addstring(shstrtab, ".rel.debug_line")
- elfstrdbg[ElfStrRelDebugFrame] = Addstring(shstrtab, ".rel.debug_frame")
- }
+ elfstrdbg[ElfStrRelDebugInfo] = Addstring(shstrtab, elfRelType+".debug_info")
+ elfstrdbg[ElfStrRelDebugAranges] = Addstring(shstrtab, elfRelType+".debug_aranges")
+ elfstrdbg[ElfStrRelDebugLine] = Addstring(shstrtab, elfRelType+".debug_line")
+ elfstrdbg[ElfStrRelDebugFrame] = Addstring(shstrtab, elfRelType+".debug_frame")
infosym = Linklookup(Ctxt, ".debug_info", 0)
infosym.Attr |= AttrHidden
func dwarfaddelfrelocheader(elfstr int, shdata *ElfShdr, off int64, size int64) {
sh := newElfShdr(elfstrdbg[elfstr])
- switch Thearch.Thechar {
- case '0', '6', '7', '9', 'z':
+ if elfRelType == ".rela" {
sh.type_ = SHT_RELA
- default:
+ } else {
sh.type_ = SHT_REL
}
s.Type = obj.SELFROSECT
s.Attr |= AttrReachable
- switch Thearch.Thechar {
- case '0', '6', '7', '9', 'z':
+ if elf64 {
s.Size += ELF64SYMSIZE
- default:
+ } else {
s.Size += ELF32SYMSIZE
}
elfwritedynentsym(s, DT_HASH, Linklookup(Ctxt, ".hash", 0))
elfwritedynentsym(s, DT_SYMTAB, Linklookup(Ctxt, ".dynsym", 0))
- switch Thearch.Thechar {
- case '0', '6', '7', '9', 'z':
+ if elf64 {
Elfwritedynent(s, DT_SYMENT, ELF64SYMSIZE)
- default:
+ } else {
Elfwritedynent(s, DT_SYMENT, ELF32SYMSIZE)
}
elfwritedynentsym(s, DT_STRTAB, Linklookup(Ctxt, ".dynstr", 0))
}
func putelfsyment(off int, addr int64, size int64, info int, shndx int, other int) {
- switch Thearch.Thechar {
- case '0', '6', '7', '9', 'z':
+ if elf64 {
Thearch.Lput(uint32(off))
Cput(uint8(info))
Cput(uint8(other))
Thearch.Vput(uint64(addr))
Thearch.Vput(uint64(size))
Symsize += ELF64SYMSIZE
-
- default:
+ } else {
Thearch.Lput(uint32(off))
Thearch.Lput(uint32(addr))
Thearch.Lput(uint32(size))