Index: ELF/LinkerScript.cpp =================================================================== --- ELF/LinkerScript.cpp +++ ELF/LinkerScript.cpp @@ -533,7 +533,8 @@ if (!Cmd || Cmd->Name == ".") continue; - if (Symtab::X->find(Cmd->Name) == nullptr) + SymbolBody *B = Symtab::X->find(Cmd->Name); + if (B == nullptr || B->isUndefined()) Symtab::X->addAbsolute(Cmd->Name, Cmd->Hidden ? STV_HIDDEN : STV_DEFAULT); else Index: test/ELF/linkerscript-undef.s =================================================================== --- /dev/null +++ test/ELF/linkerscript-undef.s @@ -0,0 +1,11 @@ +# REQUIRES: x86 +# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t + +# RUN: echo "SECTIONS { patatino = 0x1234; }" > %t.script +# RUN: ld.lld -o %t1 --script %t.script %t +# RUN: llvm-objdump -t %t1 | FileCheck %s +# CHECK: 0000000000001234 *ABS* 00000000 patatino + +.global _start +_start: + call patatino