[lld] 413e249 - [lld-macho][nfc] Test that we don't emit undef symbol errors for dead code
Jez Ng via llvm-commits
llvm-commits at lists.llvm.org
Mon Oct 25 16:06:03 PDT 2021
Author: Jez Ng
Date: 2021-10-25T19:05:39-04:00
New Revision: 413e249a47ce82b44a656dc3df32b584fc3036d5
URL: https://github.com/llvm/llvm-project/commit/413e249a47ce82b44a656dc3df32b584fc3036d5
DIFF: https://github.com/llvm/llvm-project/commit/413e249a47ce82b44a656dc3df32b584fc3036d5.diff
LOG: [lld-macho][nfc] Test that we don't emit undef symbol errors for dead code
This is what ld64 does too, so we have parity here (though I think ld64
still removes dead code more effectively than we do...)
Reviewed By: #lld-macho, thakis
Differential Revision: https://reviews.llvm.org/D112485
Added:
Modified:
lld/test/MachO/treat-undef-sym.s
Removed:
################################################################################
diff --git a/lld/test/MachO/treat-undef-sym.s b/lld/test/MachO/treat-undef-sym.s
index 18205c208a96d..353be025db241 100644
--- a/lld/test/MachO/treat-undef-sym.s
+++ b/lld/test/MachO/treat-undef-sym.s
@@ -1,31 +1,42 @@
# REQUIRES: x86
+# RUN: split-file %s %t
-# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-macos %s -o %t.o
-# RUN: not %lld -undefined bogus -o /dev/null %t.o 2>&1 | \
+# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-macos %s -o %t/live.o
+# RUN: not %lld -undefined bogus -o /dev/null %t/live.o 2>&1 | \
# RUN: FileCheck %s -check-prefix=UNKNOWN
-# RUN: not %lld -undefined error -o /dev/null %t.o 2>&1 | \
+# RUN: not %lld -undefined error -o /dev/null %t/live.o 2>&1 | \
# RUN: FileCheck %s -check-prefix=ERROR
-# RUN: not %lld -undefined warning -o /dev/null %t.o 2>&1 | \
+# RUN: not %lld -undefined warning -o /dev/null %t/live.o 2>&1 | \
# RUN: FileCheck %s -check-prefix=INVAL-WARNING
-# RUN: not %lld -undefined suppress -o /dev/null %t.o 2>&1 | \
+# RUN: not %lld -undefined suppress -o /dev/null %t/live.o 2>&1 | \
# RUN: FileCheck %s -check-prefix=INVAL-SUPPRESS
-# RUN: %lld -undefined dynamic_lookup -lSystem -o %t.out %t.o 2>&1 | count 0
-# RUN: llvm-objdump --macho --lazy-bind %t.out \
+# RUN: %lld -undefined dynamic_lookup -lSystem -o %t/live.out %t/live.o 2>&1 | count 0
+# RUN: llvm-objdump --macho --lazy-bind %t/live.out \
# RUN: | FileCheck --check-prefix=BIND %s
# RUN: %no_fatal_warnings_lld -lSystem -flat_namespace -undefined warning \
-# RUN: -o %t.out %t.o 2>&1 | \
+# RUN: -o %t/live.out %t/live.o 2>&1 | \
# RUN: FileCheck %s -check-prefix=WARNING
-# RUN: llvm-objdump --macho --lazy-bind %t.out \
+# RUN: llvm-objdump --macho --lazy-bind %t/live.out \
# RUN: | FileCheck --check-prefix=BIND %s
-# RUN: %lld -flat_namespace -lSystem -undefined suppress -o %t.out %t.o 2>&1 | count 0
-# RUN: llvm-objdump --macho --lazy-bind %t.out \
+# RUN: %lld -flat_namespace -lSystem -undefined suppress -o %t/live.out %t/live.o \
+# RUN: 2>&1 | count 0
+# RUN: llvm-objdump --macho --lazy-bind %t/live.out \
# RUN: | FileCheck --check-prefix=BIND %s
-# RUN: %lld -flat_namespace -lSystem -undefined dynamic_lookup -o %t.out %t.o 2>&1 | count 0
-# RUN: llvm-objdump --macho --lazy-bind %t.out \
+# RUN: %lld -flat_namespace -lSystem -undefined dynamic_lookup -o \
+# RUN: %t/live.out %t/live.o 2>&1 | count 0
+# RUN: llvm-objdump --macho --lazy-bind %t/live.out \
# RUN: | FileCheck --check-prefix=BIND %s
+## Undefined symbols in dead code should not raise an error iff
+## -dead_strip is enabled.
+# RUN: not %lld -dylib -undefined error -o /dev/null %t/dead.o 2>&1 \
+# RUN: | FileCheck --check-prefix=ERROR %s
+# RUN: not %lld -dylib -dead_strip -undefined error -o /dev/null %t/live.o 2>&1\
+# RUN: | FileCheck --check-prefix=ERROR %s
+# RUN: %lld -dylib -dead_strip -undefined error -o /dev/null %t/dead.o
+
# ERROR: error: undefined symbol: _bar
# ERROR-NEXT: >>> referenced by
@@ -45,7 +56,13 @@
# BIND: Lazy bind table:
# BIND: __DATA __la_symbol_ptr 0x{{[0-9a-f]*}} flat-namespace _bar
+#--- live.s
.globl _main
_main:
callq _bar
ret
+
+#--- dead.s
+_dead:
+ callq _bar
+ ret
More information about the llvm-commits
mailing list