[all-commits] [llvm/llvm-project] ab40c0: [MC][ELF] Work around R_MIPS_LO16 relocation handl...
Dimitry Andric via All-commits
all-commits at lists.llvm.org
Mon May 3 13:59:49 PDT 2021
Branch: refs/heads/main
Home: https://github.com/llvm/llvm-project
Commit: ab40c027f0ce9492919a72ad339de40bdb84b354
https://github.com/llvm/llvm-project/commit/ab40c027f0ce9492919a72ad339de40bdb84b354
Author: Dimitry Andric <dimitry at andric.com>
Date: 2021-05-03 (Mon, 03 May 2021)
Changed paths:
M llvm/lib/MC/ELFObjectWriter.cpp
A llvm/test/MC/Mips/mips_lo16.s
Log Message:
-----------
[MC][ELF] Work around R_MIPS_LO16 relocation handling problem
This fixes PR49821, and avoids "ld.lld: error: test.o:(.rodata.str1.1):
offset is outside the section" errors when linking MIPS objects with
negative R_MIPS_LO16 implicit addends.
ld.lld handles R_MIPS_HI16/R_MIPS_LO16 separately, not as a whole, so it
doesn't know that an R_MIPS_HI16 with implicit addend 1 and an
R_MIPS_LO16 with implicit addend -32768 represents 32768, which is in
range of a MergeInputSection. We could introduce a new RelExpr member
(like R_RISCV_PC_INDIRECT for R_RISCV_PCREL_HI20 / R_RISCV_PCREL_LO12)
but the complexity is unnecessary given that GNU as keeps the original
symbol for this case as well.
Reviewed By: atanasyan, MaskRay
Differential Revision: https://reviews.llvm.org/D101773
More information about the All-commits
mailing list