[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