Revert "[lld-macho] Implement and test resolution of common symbols"
authorMuhammad Omair Javaid <omair.javaid@linaro.org>
Thu, 24 Sep 2020 07:25:47 +0000 (12:25 +0500)
committerMuhammad Omair Javaid <omair.javaid@linaro.org>
Thu, 24 Sep 2020 07:25:47 +0000 (12:25 +0500)
This reverts commit cd7cb0c30305501982ba37b4905bb264b3539ad0.
Break lldb Arm build:
http://lab.llvm.org:8011/builders/lldb-arm-ubuntu/builds/4409

lld/MachO/SymbolTable.cpp
lld/test/MachO/common-symbol-resolution.s [deleted file]
lld/test/MachO/nonweak-definition-override.s

index 0aa8828..6719981 100644 (file)
@@ -84,11 +84,10 @@ Symbol *SymbolTable::addCommon(StringRef name, InputFile *file, uint64_t size,
     if (auto *common = dyn_cast<CommonSymbol>(s)) {
       if (size < common->size)
         return s;
-    } else if (isa<Defined>(s)) {
+    } else if (!isa<Undefined>(s)) {
+      error("TODO: implement common symbol resolution with other symbol kinds");
       return s;
     }
-    // Common symbols take priority over all non-Defined symbols, so in case of
-    // a name conflict, we fall through to the replaceSymbol() call below.
   }
 
   replaceSymbol<CommonSymbol>(s, name, file, size, align);
diff --git a/lld/test/MachO/common-symbol-resolution.s b/lld/test/MachO/common-symbol-resolution.s
deleted file mode 100644 (file)
index 6cefe30..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-# REQUIRES: x86
-# RUN: split-file %s %t
-
-# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/common.s -o %t/common.o
-# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/weak-common.s -o %t/weak-common.o
-# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/defined.s -o %t/defined.o
-# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/weak-defined.s -o %t/weak-defined.o
-# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/libfoo.s -o %t/libfoo.o
-# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/test.s -o %t/test.o
-# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/calls-foo.s -o %t/calls-foo.o
-
-# RUN: lld -flavor darwinnew -syslibroot %S/Inputs/MacOSX.sdk -lSystem -order_file %t/order -dylib %t/libfoo.o -o %t/libfoo.dylib
-
-# RUN: rm -f %t/defined.a %t/weak-defined-and-common.a
-# RUN: llvm-ar rcs %t/defined.a %t/defined.o
-# RUN: llvm-ar rcs %t/weak-defined-and-common.a %t/weak-defined.o %t/common.o
-
-## The weak attribute appears to have no effect on common symbols. Given two
-## common symbols of the same name, we always pick the one with the larger size,
-## regardless of whether it is weak. Moreover, the resolved symbol in the output
-## file will always be non-weak, even if the winning input symbol definition was
-## weak.
-# RUN: lld -flavor darwinnew -syslibroot %S/Inputs/MacOSX.sdk -lSystem -order_file %t/order %t/common.o %t/weak-common.o %t/test.o -o %t/test
-# RUN: llvm-objdump --syms %t/test | FileCheck %s --check-prefix=LARGER-COMMON
-# RUN: lld -flavor darwinnew -syslibroot %S/Inputs/MacOSX.sdk -lSystem -order_file %t/order %t/weak-common.o %t/common.o %t/test.o -o %t/test
-# RUN: llvm-objdump --syms %t/test | FileCheck %s --check-prefix=LARGER-COMMON
-
-## Defined symbols are the only ones that take precedence over common symbols.
-# RUN: lld -flavor darwinnew -syslibroot %S/Inputs/MacOSX.sdk -lSystem -order_file %t/order %t/defined.o %t/common.o %t/test.o -o %t/test
-# RUN: llvm-objdump --syms %t/test | FileCheck %s --check-prefix=DEFINED
-# RUN: lld -flavor darwinnew -syslibroot %S/Inputs/MacOSX.sdk -lSystem -order_file %t/order %t/common.o %t/defined.o %t/test.o -o %t/test
-# RUN: llvm-objdump --syms %t/test | FileCheck %s --check-prefix=DEFINED
-
-# RUN: lld -flavor darwinnew -syslibroot %S/Inputs/MacOSX.sdk -lSystem -order_file %t/order %t/weak-defined.o %t/common.o %t/test.o -o %t/test
-# RUN: llvm-objdump --syms %t/test | FileCheck %s --check-prefix=WEAK-DEFINED
-# RUN: lld -flavor darwinnew -syslibroot %S/Inputs/MacOSX.sdk -lSystem -order_file %t/order %t/common.o %t/weak-defined.o %t/test.o -o %t/test
-# RUN: llvm-objdump --syms %t/test | FileCheck %s --check-prefix=WEAK-DEFINED
-
-## Common symbols take precedence over archive symbols.
-# RUN: lld -flavor darwinnew -syslibroot %S/Inputs/MacOSX.sdk -lSystem -order_file %t/order %t/defined.a %t/weak-common.o %t/test.o -o %t/test
-# RUN: llvm-objdump --syms %t/test | FileCheck %s --check-prefix=LARGER-COMMON
-# RUN: lld -flavor darwinnew -syslibroot %S/Inputs/MacOSX.sdk -lSystem -order_file %t/order %t/weak-common.o %t/defined.a %t/test.o -o %t/test
-# RUN: llvm-objdump --syms %t/test | FileCheck %s --check-prefix=LARGER-COMMON
-
-## If an archive has both a common and a defined symbol, the defined one should
-## win.
-# RUN: lld -flavor darwinnew -syslibroot %S/Inputs/MacOSX.sdk -lSystem -order_file %t/order %t/weak-defined-and-common.a %t/calls-foo.o -o %t/calls-foo
-# RUN: llvm-objdump --syms %t/calls-foo | FileCheck %s --check-prefix=WEAK-DEFINED
-# RUN: lld -flavor darwinnew -syslibroot %S/Inputs/MacOSX.sdk -lSystem -order_file %t/order %t/calls-foo.o %t/weak-defined-and-common.a -o %t/calls-foo
-# RUN: llvm-objdump --syms %t/calls-foo | FileCheck %s --check-prefix=WEAK-DEFINED
-
-## Common symbols take precedence over dylib symbols.
-# RUN: lld -flavor darwinnew -syslibroot %S/Inputs/MacOSX.sdk -lSystem -order_file %t/order %t/libfoo.dylib %t/weak-common.o %t/test.o -o %t/test
-# RUN: llvm-objdump --syms %t/test | FileCheck %s --check-prefix=LARGER-COMMON
-# RUN: lld -flavor darwinnew -syslibroot %S/Inputs/MacOSX.sdk -lSystem -order_file %t/order %t/weak-common.o %t/libfoo.dylib %t/test.o -o %t/test
-# RUN: llvm-objdump --syms %t/test | FileCheck %s --check-prefix=LARGER-COMMON
-
-# LARGER-COMMON-LABEL: SYMBOL TABLE:
-# LARGER-COMMON-DAG:   [[#%x, FOO_ADDR:]] g     O __DATA,__common _foo
-# LARGER-COMMON-DAG:   [[#FOO_ADDR + 2]]  g     O __DATA,__common _foo_end
-
-# DEFINED-LABEL:       SYMBOL TABLE:
-# DEFINED:             g     F __TEXT,__text _foo
-
-# WEAK-DEFINED-LABEL:  SYMBOL TABLE:
-# WEAK-DEFINED:        w     F __TEXT,__text _foo
-
-#--- order
-## %t/order is important as we determine the size of a given symbol via the
-## address of the next symbol.
-_foo
-_foo_end
-
-#--- common.s
-.comm _foo, 1
-
-.globl _bar
-_bar:
-
-#--- weak-common.s
-.weak_definition _foo
-.comm _foo, 2
-
-#--- defined.s
-.globl _foo
-_foo:
-  .quad 0x1234
-
-#--- weak-defined.s
-.globl _foo
-.weak_definition _foo
-_foo:
-  .quad 0x1234
-
-#--- libfoo.s
-.globl _foo
-_foo:
-  .quad 0x1234
-
-#--- test.s
-.comm _foo_end, 1
-
-.globl _main
-_main:
-  ret
-
-#--- calls-foo.s
-.comm _foo_end, 1
-
-.globl _main
-_main:
-  callq _foo
-  ret
index c531d2b..d5c94d4 100644 (file)
@@ -3,7 +3,6 @@
 # RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/libfoo.s -o %t/libfoo.o
 # RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/nonweakdef.s -o %t/nonweakdef.o
 # RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/weakdef.s -o %t/weakdef.o
-# RUN: llvm-mc -filetype=obj -triple=x86_64-apple-darwin %t/common.s -o %t/common.o
 # RUN: lld -flavor darwinnew -syslibroot %S/Inputs/MacOSX.sdk -dylib %t/libfoo.o -o %t/libfoo.dylib
 
 ## Check that non-weak defined symbols override weak dylib symbols.
 # NO-WEAK-OVERRIDE-NEXT:  segment section address type addend symbol
 # NO-WEAK-OVERRIDE-EMPTY:
 
-## Check that common symbols take precedence over weak dylib symbols, but do not
-## generate an overridding weak binding.
-# RUN: lld -flavor darwinnew -syslibroot %S/Inputs/MacOSX.sdk -L%t -lfoo %t/common.o -o %t/common -lSystem
-# RUN: llvm-objdump --macho --weak-bind %t/common | FileCheck %s --check-prefix=NO-WEAK-OVERRIDE
-# RUN: llvm-objdump --syms %t/common | FileCheck %s --check-prefix=COMMON
-# COMMON-DAG: g     O __DATA,__common _nonweak_in_dylib
-# COMMON-DAG: g     O __DATA,__common _weak_in_dylib
-
 #--- libfoo.s
 
 .globl _weak_in_dylib, _nonweak_in_dylib
@@ -67,12 +58,3 @@ _nonweak_in_dylib:
 
 _main:
   ret
-
-#--- common.s
-
-.globl _main
-.comm _weak_in_dylib, 1
-.comm _nonweak_in_dylib, 1
-
-_main:
-  ret