return -1, 0, false
}
-func archrelocvariant(*ld.Target, *loader.Loader, loader.Reloc, sym.RelocVariant, loader.Sym, int64) int64 {
+func archrelocvariant(*ld.Target, *loader.Loader, loader.Reloc, sym.RelocVariant, loader.Sym, int64, []byte) int64 {
log.Fatalf("unexpected relocation variant")
return -1
}
return val, 0, false
}
-func archrelocvariant(*ld.Target, *loader.Loader, loader.Reloc, sym.RelocVariant, loader.Sym, int64) int64 {
+func archrelocvariant(*ld.Target, *loader.Loader, loader.Reloc, sym.RelocVariant, loader.Sym, int64, []byte) int64 {
log.Fatalf("unexpected relocation variant")
return -1
}
return val, 0, false
}
-func archrelocvariant(*ld.Target, *loader.Loader, loader.Reloc, sym.RelocVariant, loader.Sym, int64) int64 {
+func archrelocvariant(*ld.Target, *loader.Loader, loader.Reloc, sym.RelocVariant, loader.Sym, int64, []byte) int64 {
log.Fatalf("unexpected relocation variant")
return -1
}
if target.IsPPC64() || target.IsS390X() {
if rv != sym.RV_NONE {
- o = thearch.Archrelocvariant(target, ldr, r, rv, s, o)
+ o = thearch.Archrelocvariant(target, ldr, r, rv, s, o, P)
}
}
// to-be-relocated data item (from sym.P). Return is an updated
// offset value.
Archrelocvariant func(target *Target, ldr *loader.Loader, rel loader.Reloc,
- rv sym.RelocVariant, sym loader.Sym, offset int64) (relocatedOffset int64)
+ rv sym.RelocVariant, sym loader.Sym, offset int64, data []byte) (relocatedOffset int64)
// Generate a trampoline for a call from s to rs if necessary. ri is
// index of the relocation.
return val, 0, false
}
-func archrelocvariant(*ld.Target, *loader.Loader, loader.Reloc, sym.RelocVariant, loader.Sym, int64) int64 {
+func archrelocvariant(*ld.Target, *loader.Loader, loader.Reloc, sym.RelocVariant, loader.Sym, int64, []byte) int64 {
return -1
}
return val, 0, false
}
-func archrelocvariant(*ld.Target, *loader.Loader, loader.Reloc, sym.RelocVariant, loader.Sym, int64) int64 {
+func archrelocvariant(*ld.Target, *loader.Loader, loader.Reloc, sym.RelocVariant, loader.Sym, int64, []byte) int64 {
return -1
}
return val, nExtReloc, false
}
-func archrelocvariant(target *ld.Target, ldr *loader.Loader, r loader.Reloc, rv sym.RelocVariant, s loader.Sym, t int64) (relocatedOffset int64) {
+func archrelocvariant(target *ld.Target, ldr *loader.Loader, r loader.Reloc, rv sym.RelocVariant, s loader.Sym, t int64, p []byte) (relocatedOffset int64) {
rs := ldr.ResolveABIAlias(r.Sym())
switch rv & sym.RV_TYPE_MASK {
default:
// overflow depends on the instruction
var o1 uint32
if target.IsBigEndian() {
- o1 = binary.BigEndian.Uint32(ldr.Data(s)[r.Off()-2:])
+ o1 = binary.BigEndian.Uint32(p[r.Off()-2:])
+
} else {
- o1 = binary.LittleEndian.Uint32(ldr.Data(s)[r.Off():])
+ o1 = binary.LittleEndian.Uint32(p[r.Off():])
}
switch o1 >> 26 {
case 24, // ori
// overflow depends on the instruction
var o1 uint32
if target.IsBigEndian() {
- o1 = binary.BigEndian.Uint32(ldr.Data(s)[r.Off()-2:])
+ o1 = binary.BigEndian.Uint32(p[r.Off()-2:])
} else {
- o1 = binary.LittleEndian.Uint32(ldr.Data(s)[r.Off():])
+ o1 = binary.LittleEndian.Uint32(p[r.Off():])
}
switch o1 >> 26 {
case 25, // oris
case sym.RV_POWER_DS:
var o1 uint32
if target.IsBigEndian() {
- o1 = uint32(binary.BigEndian.Uint16(ldr.Data(s)[r.Off():]))
+ o1 = uint32(binary.BigEndian.Uint16(p[r.Off():]))
} else {
- o1 = uint32(binary.LittleEndian.Uint16(ldr.Data(s)[r.Off():]))
+ o1 = uint32(binary.LittleEndian.Uint16(p[r.Off():]))
}
if t&3 != 0 {
ldr.Errorf(s, "relocation for %s+%d is not aligned: %d", ldr.SymName(rs), r.Off(), t)
return val, 0, false
}
-func archrelocvariant(*ld.Target, *loader.Loader, loader.Reloc, sym.RelocVariant, loader.Sym, int64) int64 {
+func archrelocvariant(*ld.Target, *loader.Loader, loader.Reloc, sym.RelocVariant, loader.Sym, int64, []byte) int64 {
log.Fatalf("archrelocvariant")
return -1
}
return val, 0, false
}
-func archrelocvariant(target *ld.Target, ldr *loader.Loader, r loader.Reloc, rv sym.RelocVariant, s loader.Sym, t int64) int64 {
+func archrelocvariant(target *ld.Target, ldr *loader.Loader, r loader.Reloc, rv sym.RelocVariant, s loader.Sym, t int64, p []byte) int64 {
switch rv & sym.RV_TYPE_MASK {
default:
ldr.Errorf(s, "unexpected relocation variant %d", rv)
return -1, 0, false
}
-func archrelocvariant(*ld.Target, *loader.Loader, loader.Reloc, sym.RelocVariant, loader.Sym, int64) int64 {
+func archrelocvariant(*ld.Target, *loader.Loader, loader.Reloc, sym.RelocVariant, loader.Sym, int64, []byte) int64 {
log.Fatalf("unexpected relocation variant")
return -1
}