They are implemented like that in some object formats, but for the interface
provided by lib/Object, SF_Undefined and SF_Common are different things.
This matches the ELF and COFF implementation and fixes llvm-nm for MachO.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241587
91177308-0d34-0410-b5e6-
96231b3b80d8
uint32_t Result = SymbolRef::SF_None;
- if ((MachOType & MachO::N_TYPE) == MachO::N_UNDF)
- Result |= SymbolRef::SF_Undefined;
-
if ((MachOType & MachO::N_TYPE) == MachO::N_INDR)
Result |= SymbolRef::SF_Indirect;
if ((MachOType & MachO::N_TYPE) == MachO::N_UNDF) {
if (getNValue(DRI))
Result |= SymbolRef::SF_Common;
+ else
+ Result |= SymbolRef::SF_Undefined;
}
if (!(MachOType & MachO::N_PEXT))
--- /dev/null
+// RUN: llvm-mc %s -o %t -filetype=obj -triple=x86_64-apple-darwin
+// RUN: llvm-nm -n %t | FileCheck %s
+// CHECK: 0000000000000000 t _f
+// CHECK: 0000000000000004 C _a
+
+_f:
+ retq
+
+ .comm _a,4