forked from OSchip/llvm-project
Bring r264761 back with an extra fix.
The extra fix is to note that it still requires copy relocations. Original message: Change how we handle R_MIPS_LO16. Mips aligns PT_LOAD to 16 bits (0x10000). That means that the lower 16 bits are always the same, so we can, effectively, say that the relocation is relative. P.S.: Suggestions for a better name for the predicate are welcome :-) llvm-svn: 265150
This commit is contained in:
parent
8e8fe859e0
commit
790db9c458
|
@ -1722,7 +1722,7 @@ void MipsTargetInfo<ELFT>::writeThunk(uint8_t *Buf, uint64_t S) const {
|
|||
|
||||
template <class ELFT>
|
||||
bool MipsTargetInfo<ELFT>::needsCopyRelImpl(uint32_t Type) const {
|
||||
return !isRelRelative(Type);
|
||||
return !isRelRelative(Type) || Type == R_MIPS_LO16;
|
||||
}
|
||||
|
||||
template <class ELFT>
|
||||
|
@ -1897,7 +1897,6 @@ bool MipsTargetInfo<ELFT>::isRelRelative(uint32_t Type) const {
|
|||
case R_MIPS_32:
|
||||
case R_MIPS_64:
|
||||
case R_MIPS_HI16:
|
||||
case R_MIPS_LO16:
|
||||
case R_MIPS_TLS_DTPREL_HI16:
|
||||
case R_MIPS_TLS_DTPREL_LO16:
|
||||
case R_MIPS_TLS_TPREL_HI16:
|
||||
|
|
|
@ -445,15 +445,6 @@ void Writer<ELFT>::scanRelocs(InputSectionBase<ELFT> &C,
|
|||
}
|
||||
|
||||
if (Config->EMachine == EM_MIPS) {
|
||||
if (Type == R_MIPS_LO16)
|
||||
// Ignore R_MIPS_LO16 relocation. If it is a pair for R_MIPS_GOT16 we
|
||||
// already completed all required action (GOT entry allocation) when
|
||||
// handle R_MIPS_GOT16. If it is a pair for R_MIPS_HI16 against
|
||||
// _gp_disp it does not require dynamic relocation. If its a pair for
|
||||
// R_MIPS_HI16 against a regular symbol it does not require dynamic
|
||||
// relocation too because that case is possible for executable file
|
||||
// linking only.
|
||||
continue;
|
||||
if (&Body == Config->MipsGpDisp || &Body == Config->MipsLocalGp)
|
||||
// MIPS _gp_disp designates offset between start of function and 'gp'
|
||||
// pointer into GOT. __gnu_local_gp is equal to the current value of
|
||||
|
|
Loading…
Reference in New Issue