[PATCH] D112485: [lld-macho][nfc] Test that we don't emit undef symbol errors for dead code

Jez Ng via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Oct 25 13:26:35 PDT 2021


int3 created this revision.
int3 added a reviewer: lld-macho.
Herald added a reviewer: gkm.
Herald added a project: lld-macho.
int3 requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

This is what ld64 does too, so we have parity here (though I think ld64
still removes dead code more effectively than we do...)


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D112485

Files:
  lld/test/MachO/treat-undef-sym.s


Index: lld/test/MachO/treat-undef-sym.s
===================================================================
--- lld/test/MachO/treat-undef-sym.s
+++ lld/test/MachO/treat-undef-sym.s
@@ -1,28 +1,33 @@
 # REQUIRES: x86
 
 # 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: not %lld -dylib -undefined bogus -o /dev/null %t.o 2>&1 | \
 # RUN:     FileCheck %s -check-prefix=UNKNOWN
-# RUN: not %lld -undefined error -o /dev/null %t.o 2>&1 | \
+# RUN: not %lld -dylib -undefined error -o /dev/null %t.o 2>&1 | \
 # RUN:     FileCheck %s -check-prefix=ERROR
+## Since the undefined symbol is in dead code, it should not raise an error if
+## -dead_strip is enabled.
+# RUN: %lld -dylib -dead_strip -undefined error -o /dev/null %t.o
 
-# RUN: not %lld -undefined warning -o /dev/null %t.o 2>&1 | \
+# RUN: not %lld -dylib -undefined warning -o /dev/null %t.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 -dylib -undefined suppress -o /dev/null %t.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: %lld -dylib -undefined dynamic_lookup -lSystem -o %t.out %t.o 2>&1 | count 0
 # RUN: llvm-objdump --macho --lazy-bind %t.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: %no_fatal_warnings_lld -dylib -lSystem -flat_namespace \
+# RUN:     -undefined warning -o %t.out %t.o 2>&1 | \
 # RUN:     FileCheck %s -check-prefix=WARNING
 # RUN: llvm-objdump --macho --lazy-bind %t.out \
 # RUN:     | FileCheck --check-prefix=BIND %s
-# RUN: %lld -flat_namespace -lSystem -undefined suppress -o %t.out %t.o 2>&1 | count 0
+# RUN: %lld -dylib -flat_namespace -lSystem -undefined suppress -o %t.out %t.o \
+# RUN:     2>&1 | count 0
 # RUN: llvm-objdump --macho --lazy-bind %t.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: %lld -dylib -flat_namespace -lSystem -undefined dynamic_lookup -o \
+# RUN:     %t.out %t.o 2>&1 | count 0
 # RUN: llvm-objdump --macho --lazy-bind %t.out \
 # RUN:     | FileCheck --check-prefix=BIND %s
 
@@ -45,7 +50,6 @@
 # BIND: Lazy bind table:
 # BIND: __DATA   __la_symbol_ptr    0x{{[0-9a-f]*}} flat-namespace   _bar
 
-.globl _main
-_main:
+_dead:
   callq _bar
   ret


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D112485.382105.patch
Type: text/x-patch
Size: 2602 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20211025/e43406d2/attachment.bin>


More information about the llvm-commits mailing list