https://github.com/llvmbot created https://github.com/llvm/llvm-project/pull/79961
resolves llvm/llvm-project#79960 >From 7203187739fbb333b0d4710d1e988fbcf440bd86 Mon Sep 17 00:00:00 2001 From: Fangrui Song <i...@maskray.me> Date: Mon, 29 Jan 2024 13:26:33 -0800 Subject: [PATCH] [ELF] --warn-backrefs: --defsym does not make a backward reference The interaction between --warn-backrefs was not tested, but if --defsym-created reference causes archive member extraction, it seems reasonable to suppress the diagnostic, which was the behavior before #78944. (cherry picked from commit 9a1ca245c8bc60b1ca12cd906fb31130801d977e) --- lld/ELF/InputFiles.cpp | 7 ++++++- lld/test/ELF/warn-backrefs.s | 4 ++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/lld/ELF/InputFiles.cpp b/lld/ELF/InputFiles.cpp index 75e5ee1d0da4f..a292e873e72f7 100644 --- a/lld/ELF/InputFiles.cpp +++ b/lld/ELF/InputFiles.cpp @@ -1788,7 +1788,12 @@ void BinaryFile::parse() { } InputFile *elf::createInternalFile(StringRef name) { - return make<InputFile>(InputFile::InternalKind, MemoryBufferRef("", name)); + auto *file = + make<InputFile>(InputFile::InternalKind, MemoryBufferRef("", name)); + // References from an internal file do not lead to --warn-backrefs + // diagnostics. + file->groupId = 0; + return file; } ELFFileBase *elf::createObjFile(MemoryBufferRef mb, StringRef archiveName, diff --git a/lld/test/ELF/warn-backrefs.s b/lld/test/ELF/warn-backrefs.s index 1e5c14ed052e6..453017eb1c8ec 100644 --- a/lld/test/ELF/warn-backrefs.s +++ b/lld/test/ELF/warn-backrefs.s @@ -100,6 +100,10 @@ ## -u does not make a backward reference. # RUN: ld.lld --fatal-warnings --warn-backrefs -u foo %t2.a %t1.o -o /dev/null +## --defsym does not make a backward reference, but it does not suppress the warning due to another file. +# RUN: ld.lld --fatal-warnings --warn-backrefs --defsym=x=foo -e 0 %t2.a -o /dev/null +# RUN: ld.lld --warn-backrefs --defsym=x=foo %t2.a %t1.o -o /dev/null 2>&1 | FileCheck %s + # RUN: not ld.lld --warn-backrefs-exclude='[' 2>&1 | FileCheck --check-prefix=INVALID %s # INVALID: error: --warn-backrefs-exclude: invalid glob pattern, unmatched '[': [ _______________________________________________ llvm-branch-commits mailing list llvm-branch-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits