uint64_t &Res) const {
if (is64Bit()) {
MachO::nlist_64 Entry = getSymbol64TableEntry(Symb);
- Res = Entry.n_value;
+ if ((Entry.n_type & MachO::N_TYPE) == MachO::N_UNDF &&
+ Entry.n_value == 0)
+ Res = UnknownAddressOrSize;
+ else
+ Res = Entry.n_value;
} else {
MachO::nlist Entry = getSymbolTableEntry(Symb);
- Res = Entry.n_value;
+ if ((Entry.n_type & MachO::N_TYPE) == MachO::N_UNDF &&
+ Entry.n_value == 0)
+ Res = UnknownAddressOrSize;
+ else
+ Res = Entry.n_value;
}
return object_error::success;
}
ABSOLUTE-ELF64: 0000000000000123 a a1
ABSOLUTE-ELF64: 0000000000000123 A a2
-macho: 00000000 U _SomeOtherFunction
+macho: U _SomeOtherFunction
macho: 00000000 T _main
-macho: 00000000 U _puts
+macho: U _puts
macho64: 0000000000000028 s L_.str
-macho64: 0000000000000000 U _SomeOtherFunction
+macho64: U _SomeOtherFunction
macho64: 0000000000000000 T _main
-macho64: 0000000000000000 U _puts
+macho64: U _puts
Test that nm uses addresses even with ELF .o files.
CHECK-AR: 000000000000003b s L_.str
CHECK-AR: 0000000000000000 T _main
CHECK-AR: 0000000000000080 S _main.eh
-CHECK-AR: 0000000000000000 U _printf
+CHECK-AR: U _printf
CHECK-AR: macho-universal-archive.x86_64.i386:i386:foo.o:
CHECK-AR: 00000008 S _bar
CHECK-AR: 00000000 T _foo