[PATCH] D77630: [ELF] --warn-backrefs: don't warn if -u/--export-dynamic-symbol

Fangrui Song via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Apr 6 21:48:21 PDT 2020


MaskRay created this revision.
MaskRay added reviewers: grimar, psmith, ruiu.
Herald added subscribers: llvm-commits, arichardson, emaste.
Herald added a reviewer: espindola.
Herald added a project: LLVM.
MaskRay added a parent revision: D77522: [ELF] --warn-backrefs: don't warn for linking sandwich problems.

Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D77630

Files:
  lld/ELF/Driver.cpp
  lld/test/ELF/warn-backrefs.s


Index: lld/test/ELF/warn-backrefs.s
===================================================================
--- lld/test/ELF/warn-backrefs.s
+++ lld/test/ELF/warn-backrefs.s
@@ -63,6 +63,12 @@
 ## --warn-backrefs does not warn.
 # RUN: ld.lld --fatal-warnings --warn-backrefs %t2.a %t1.o %t2.so %t2.a -o /dev/null
 
+## In GNU linkers, -u does not make a backward reference.
+# RUN: ld.lld --fatal-warnings -u foo %t2.a %t1.o -o /dev/null
+
+## In GNU gold, --export-dynamic-symbol does not make a backward reference.
+# RUN: ld.lld --fatal-warnings --export-dynamic-symbol foo %t2.a %t1.o -o /dev/null
+
 .globl _start, foo
 _start:
   call foo
Index: lld/ELF/Driver.cpp
===================================================================
--- lld/ELF/Driver.cpp
+++ lld/ELF/Driver.cpp
@@ -1441,6 +1441,10 @@
   // eliminate it. Mark the symbol as "used" to prevent it.
   sym->isUsedInRegularObj = true;
 
+  // GNU linkers allow -u foo -ldef -lref. We should not treat it as a backward
+  // reference.
+  backwardReferences.erase(sym);
+
   if (sym->isLazy())
     sym->fetch();
 }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D77630.255584.patch
Type: text/x-patch
Size: 1081 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200407/e37f9074/attachment.bin>


More information about the llvm-commits mailing list