@@ -197,8 +197,9 @@ static bool needsPlt(RelExpr expr) {
197197}
198198
199199bool lld::elf::needsGot (RelExpr expr) {
200- return oneof<R_GOT, RE_AARCH64_AUTH_GOT, R_GOT_OFF, RE_MIPS_GOT_LOCAL_PAGE,
201- RE_MIPS_GOT_OFF, RE_MIPS_GOT_OFF32, RE_AARCH64_GOT_PAGE_PC,
200+ return oneof<R_GOT, RE_AARCH64_AUTH_GOT, RE_AARCH64_AUTH_GOT_PC, R_GOT_OFF,
201+ RE_MIPS_GOT_LOCAL_PAGE, RE_MIPS_GOT_OFF, RE_MIPS_GOT_OFF32,
202+ RE_AARCH64_GOT_PAGE_PC, RE_AARCH64_AUTH_GOT_PAGE_PC,
202203 RE_AARCH64_AUTH_GOT_PAGE_PC, R_GOT_PC, R_GOTPLT,
203204 RE_AARCH64_GOT_PAGE, RE_LOONGARCH_GOT, RE_LOONGARCH_GOT_PAGE_PC>(
204205 expr);
@@ -974,15 +975,15 @@ bool RelocationScanner::isStaticLinkTimeConstant(RelExpr e, RelType type,
974975 const Symbol &sym,
975976 uint64_t relOff) const {
976977 // These expressions always compute a constant
977- if (oneof<R_GOTPLT, R_GOT_OFF, R_RELAX_HINT, RE_MIPS_GOT_LOCAL_PAGE,
978- RE_MIPS_GOTREL, RE_MIPS_GOT_OFF, RE_MIPS_GOT_OFF32 ,
979- RE_MIPS_GOT_GP_PC, RE_AARCH64_GOT_PAGE_PC ,
980- RE_AARCH64_AUTH_GOT_PAGE_PC, R_GOT_PC, R_GOTONLY_PC ,
981- R_GOTPLTONLY_PC, R_PLT_PC, R_PLT_GOTREL, R_PLT_GOTPLT,
982- R_GOTPLT_GOTREL, R_GOTPLT_PC, RE_PPC32_PLTREL, RE_PPC64_CALL_PLT,
983- RE_PPC64_RELAX_TOC, RE_RISCV_ADD, RE_AARCH64_GOT_PAGE,
984- RE_AARCH64_AUTH_GOT, RE_LOONGARCH_PLT_PAGE_PC, RE_LOONGARCH_GOT ,
985- RE_LOONGARCH_GOT_PAGE_PC>(e))
978+ if (oneof<
979+ R_GOTPLT, R_GOT_OFF, R_RELAX_HINT, RE_MIPS_GOT_LOCAL_PAGE ,
980+ RE_MIPS_GOTREL, RE_MIPS_GOT_OFF, RE_MIPS_GOT_OFF32, RE_MIPS_GOT_GP_PC ,
981+ RE_AARCH64_GOT_PAGE_PC, RE_AARCH64_AUTH_GOT_PAGE_PC, R_GOT_PC,
982+ R_GOTONLY_PC, R_GOTPLTONLY_PC, R_PLT_PC, R_PLT_GOTREL, R_PLT_GOTPLT,
983+ R_GOTPLT_GOTREL, R_GOTPLT_PC, RE_PPC32_PLTREL, RE_PPC64_CALL_PLT,
984+ RE_PPC64_RELAX_TOC, RE_RISCV_ADD, RE_AARCH64_GOT_PAGE,
985+ RE_AARCH64_AUTH_GOT, RE_AARCH64_AUTH_GOT_PC, RE_LOONGARCH_PLT_PAGE_PC ,
986+ RE_LOONGARCH_GOT, RE_LOONGARCH_GOT_PAGE_PC>(e))
986987 return true ;
987988
988989 // These never do, except if the entire file is position dependent or if
@@ -1096,7 +1097,8 @@ void RelocationScanner::processAux(RelExpr expr, RelType type, uint64_t offset,
10961097 } else if (!sym.isTls () || ctx.arg .emachine != EM_LOONGARCH) {
10971098 // Many LoongArch TLS relocs reuse the RE_LOONGARCH_GOT type, in which
10981099 // case the NEEDS_GOT flag shouldn't get set.
1099- if (expr == RE_AARCH64_AUTH_GOT || expr == RE_AARCH64_AUTH_GOT_PAGE_PC)
1100+ if (expr == RE_AARCH64_AUTH_GOT || expr == RE_AARCH64_AUTH_GOT_PAGE_PC ||
1101+ expr == RE_AARCH64_AUTH_GOT_PC)
11001102 sym.setFlags (NEEDS_GOT | NEEDS_GOT_AUTH);
11011103 else
11021104 sym.setFlags (NEEDS_GOT | NEEDS_GOT_NONAUTH);
0 commit comments