[clang-tools-extra] [lld] [llvm] [lld/ELF] Hint if R_X86_64_PC32 overflows and references a SHF_X86_64_LARGE section (PR #73045)

Fangrui Song via llvm-commits llvm-commits at lists.llvm.org
Wed Jan 17 14:21:47 PST 2024


================
@@ -105,6 +105,13 @@ void elf::reportRangeError(uint8_t *loc, const Relocation &rel, const Twine &v,
       hint = "; references '" + lld::toString(*rel.sym) + '\'';
     else if (auto *d = dyn_cast<Defined>(rel.sym))
       hint = ("; references section '" + d->section->name + "'").str();
+
+    if (config->emachine == EM_X86_64 && rel.type == R_X86_64_PC32 &&
+        rel.sym->getOutputSection() &&
+        (rel.sym->getOutputSection()->flags & SHF_X86_64_LARGE)) {
+      hint += "; a R_X86_64_PC32 relocation should not reference a section "
----------------
MaskRay wrote:

In the diagnostic the sentence can be more precise. Perhaps `; R_X86_64_PC32 should not reference a section marked `. In other messages we do use `R_*` to refer to a relocation of the type.

https://github.com/llvm/llvm-project/pull/73045


More information about the llvm-commits mailing list