diff --git a/lld/lib/ReaderWriter/ELF/X86_64/X86_64RelocationPass.cpp b/lld/lib/ReaderWriter/ELF/X86_64/X86_64RelocationPass.cpp index 730728813238..a06b48746ba7 100644 --- a/lld/lib/ReaderWriter/ELF/X86_64/X86_64RelocationPass.cpp +++ b/lld/lib/ReaderWriter/ELF/X86_64/X86_64RelocationPass.cpp @@ -379,7 +379,8 @@ public: return obj->second; auto oa = new (_file._alloc) ObjectAtom(_file); - oa->addReference(R_X86_64_COPY, 0, a, 0); + // This needs to point to the atom that we just created. + oa->addReference(R_X86_64_COPY, 0, oa, 0); oa->_name = a->name(); oa->_size = a->size(); diff --git a/lld/test/elf/undef-from-main-dso.test b/lld/test/elf/undef-from-main-dso.test index 1a282517bfa9..3a3a47ff0d8e 100644 --- a/lld/test/elf/undef-from-main-dso.test +++ b/lld/test/elf/undef-from-main-dso.test @@ -19,7 +19,7 @@ RUN: llvm-readobj -relocations -symbols %t | FileCheck %s CHECK: Relocations [ CHECK-NEXT: Section ({{[0-9]+}}) .rela.dyn { -CHECK-NEXT: 0x{{[1-9A-F][0-9A-F]*}} R_X86_64_COPY x 0x0 +CHECK-NEXT: 0x{{[1-9A-F][0-9A-F]*}} R_X86_64_COPY - 0x0 CHECK-NEXT: } CHECK-NEXT: ]