Reviewed By: grimar
Differential Revision: https://reviews.llvm.org/D77630
// 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();
}
## --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 --warn-backrefs -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 --warn-backrefs --export-dynamic-symbol foo %t2.a %t1.o -o /dev/null
+
.globl _start, foo
_start:
call foo