diff --git a/lld/COFF/Writer.cpp b/lld/COFF/Writer.cpp index 484ac9cdcaf9e..b03a4eab16ce2 100644 --- a/lld/COFF/Writer.cpp +++ b/lld/COFF/Writer.cpp @@ -1215,9 +1215,11 @@ void Writer::createMiscChunks() { // if we're ultimately not going to write CodeView data to the PDB. buildId = make(ctx); debugRecords.emplace_back(COFF::IMAGE_DEBUG_TYPE_CODEVIEW, buildId); - if (Symbol *buildidSym = ctx.symtab.findUnderscore("__buildid")) - replaceSymbol(buildidSym, buildidSym->getName(), - buildId, 4); + ctx.forEachSymtab([&](SymbolTable &symtab) { + if (Symbol *buildidSym = symtab.findUnderscore("__buildid")) + replaceSymbol(buildidSym, buildidSym->getName(), + buildId, 4); + }); } if (config->cetCompat) { diff --git a/lld/test/COFF/arm64x-buildid.s b/lld/test/COFF/arm64x-buildid.s new file mode 100644 index 0000000000000..99f50073eaa69 --- /dev/null +++ b/lld/test/COFF/arm64x-buildid.s @@ -0,0 +1,14 @@ +# REQUIRES: aarch64 +# RUN: llvm-mc -triple=aarch64-windows -filetype=obj -o %t-arm64.obj %s +# RUN: llvm-mc -triple=arm64ec-windows -filetype=obj -o %t-arm64ec.obj %s + +# RUN: lld-link -machine:arm64x -dll -noentry %t-arm64.obj %t-arm64ec.obj -debug -build-id -Brepro -out:%t.dll +# RUN: llvm-readobj --hex-dump=.test %t.dll | FileCheck %s +# CHECK: 0x180003000 3c100000 3c100000 + +.section .test,"dr" +.rva __buildid + +.section .bss,"bw",discard,__buildid +.global __buildid +__buildid: