diff --git a/llvm/lib/Object/Archive.cpp b/llvm/lib/Object/Archive.cpp --- a/llvm/lib/Object/Archive.cpp +++ b/llvm/lib/Object/Archive.cpp @@ -256,6 +256,10 @@ return Name; if (Name.size() == 2 && Name[1] == '/') // String table. return Name; + // System libraries from the Windows SDK for Windows 11 contain this symbol. + // It looks like a CFG guard: we just skip it for now. + if (Name.equals("//")) + return Name; // It's a long name. // Get the string table offset. std::size_t StringOffset; diff --git a/llvm/test/tools/llvm-lib/xfghashmap-list.test b/llvm/test/tools/llvm-lib/xfghashmap-list.test new file mode 100644 --- /dev/null +++ b/llvm/test/tools/llvm-lib/xfghashmap-list.test @@ -0,0 +1,33 @@ +# RUN: rm -rf %t && mkdir -p %t && cd %t +# RUN: llvm-mc -triple=x86_64-pc-windows-msvc -filetype=obj -o a.obj %S/Inputs/a.s +# RUN: llvm-mc -triple=x86_64-pc-windows-msvc -filetype=obj -o b.obj %S/Inputs/b.s +# RUN: llvm-lib /out:xfghashmap.lib a.obj b.obj + +## Replace a section in the library file with // emulating +## a library from the Windows SDK for Windows 11. +# RUN: %python %s xfghashmap.lib b.obj/ + +## This should print the // section as well as an .obj one. +# RUN: llvm-lib /list %t/xfghashmap.lib | FileCheck %s + +# CHECK: a.obj +# CHECK: // +# CHECK-NOT: b.obj + +import sys + +if len(sys.argv) < 3: + print("Use: python3 xfghashmap-list.test