Skip to content

Commit

Permalink
[release-branch.go1.19] cmd/link: recognize the new R_LARCH_32_PCREL …
Browse files Browse the repository at this point in the history
…type on loong64

This is a minimum backport of CL 420983 without an API change in
debug/elf.

Original CL description:

Due to the latest binutils change [1], at least for certain 32-bit
relocs in .eh_frame section, this new type of relocation record is
emitted, leading to breakage on systems with bleeding-edge toolchain
when trying to link with object(s) with such new-style relocs.

Simply treating it the same as the existing reloc types seems enough.

Updates #54222.
Fixes #57444.

[1]: https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=f09482a8747b6fd4c2d59a6a64677d3a3fe1e092

Change-Id: Idd86294a11c1d13b88acbca59e537656a57d8109
Reviewed-on: https://go-review.googlesource.com/c/go/+/458836
Reviewed-by: WANG Xuerui <[email protected]>
Auto-Submit: Dmitri Shuralyov <[email protected]>
Reviewed-by: David Chase <[email protected]>
TryBot-Result: Gopher Robot <[email protected]>
Run-TryBot: Cherry Mui <[email protected]>
  • Loading branch information
cherrymui authored and gopherbot committed Dec 28, 2022
1 parent 5758a14 commit 24963e5
Showing 1 changed file with 2 additions and 1 deletion.
3 changes: 2 additions & 1 deletion src/cmd/link/internal/loadelf/ldelf.go
Original file line number Diff line number Diff line change
Expand Up @@ -1002,7 +1002,8 @@ func relSize(arch *sys.Arch, pn string, elftype uint32) (uint8, uint8, error) {
LOONG64 | uint32(elf.R_LARCH_MARK_LA)<<16,
LOONG64 | uint32(elf.R_LARCH_SOP_POP_32_S_0_10_10_16_S2)<<16,
LOONG64 | uint32(elf.R_LARCH_64)<<16,
LOONG64 | uint32(elf.R_LARCH_MARK_PCREL)<<16:
LOONG64 | uint32(elf.R_LARCH_MARK_PCREL)<<16,
LOONG64 | 99<<16: // R_LARCH_32_PCREL
return 4, 4, nil

case S390X | uint32(elf.R_390_8)<<16:
Expand Down

0 comments on commit 24963e5

Please sign in to comment.