cmd/link: move ELF reader to its own package

Along the way, switch to using relocation constants from debug/elf.

For #22095

Change-Id: I1a64353619f95dde5aa39060c4b9d001af7dc1e4
Reviewed-on: https://go-review.googlesource.com/69013
Run-TryBot: David Crawshaw <crawshaw@golang.org>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
David Crawshaw 2017-10-06 16:01:02 -04:00
parent 70576947fd
commit ecfa7375e4
13 changed files with 347 additions and 767 deletions

View file

@ -35,6 +35,7 @@ import (
"cmd/internal/sys"
"cmd/link/internal/ld"
"cmd/link/internal/sym"
"debug/elf"
"fmt"
"log"
)
@ -59,15 +60,15 @@ func elfreloc1(ctxt *ld.Link, r *sym.Reloc, sectoff int64) bool {
if r.Siz != 4 {
return false
}
ctxt.Out.Write32(ld.R_MIPS_32 | uint32(elfsym)<<8)
ctxt.Out.Write32(uint32(elf.R_MIPS_32) | uint32(elfsym)<<8)
case objabi.R_ADDRMIPS:
ctxt.Out.Write32(ld.R_MIPS_LO16 | uint32(elfsym)<<8)
ctxt.Out.Write32(uint32(elf.R_MIPS_LO16) | uint32(elfsym)<<8)
case objabi.R_ADDRMIPSU:
ctxt.Out.Write32(ld.R_MIPS_HI16 | uint32(elfsym)<<8)
ctxt.Out.Write32(uint32(elf.R_MIPS_HI16) | uint32(elfsym)<<8)
case objabi.R_ADDRMIPSTLS:
ctxt.Out.Write32(ld.R_MIPS_TLS_TPREL_LO16 | uint32(elfsym)<<8)
ctxt.Out.Write32(uint32(elf.R_MIPS_TLS_TPREL_LO16) | uint32(elfsym)<<8)
case objabi.R_CALLMIPS, objabi.R_JMPMIPS:
ctxt.Out.Write32(ld.R_MIPS_26 | uint32(elfsym)<<8)
ctxt.Out.Write32(uint32(elf.R_MIPS_26) | uint32(elfsym)<<8)
}
return true