diff --git a/lld/MachO/MapFile.cpp b/lld/MachO/MapFile.cpp index 84c536e0464ef..1f0a9ba44a5d9 100644 --- a/lld/MachO/MapFile.cpp +++ b/lld/MachO/MapFile.cpp @@ -154,10 +154,10 @@ void macho::writeMapFile() { DenseMap liveSymbolStrings = getSymbolStrings(liveSymbols); os << "# Symbols:\n"; - os << "# Address\t File Name\n"; - for (Symbol *sym : liveSymbols) { + os << "# Address\tSize \tFile Name\n"; + for (Defined *sym : liveSymbols) { assert(sym->isLive()); - os << format("0x%08llX\t[%3u] %s\n", sym->getVA(), + os << format("0x%08llX\t0x%08llX\t[%3u] %s\n", sym->getVA(), sym->size, readerToFileOrdinal[sym->getFile()], liveSymbolStrings[sym].c_str()); } @@ -166,10 +166,11 @@ void macho::writeMapFile() { DenseMap deadSymbolStrings = getSymbolStrings(deadSymbols); os << "# Dead Stripped Symbols:\n"; - os << "# Address\t File Name\n"; - for (Symbol *sym : deadSymbols) { + os << "# \tSize \tFile Name\n"; + for (Defined *sym : deadSymbols) { assert(!sym->isLive()); - os << format("<>\t[%3u] %s\n", readerToFileOrdinal[sym->getFile()], + os << format("<>\t0x%08llX\t[%3u] %s\n", sym->size, + readerToFileOrdinal[sym->getFile()], deadSymbolStrings[sym].c_str()); } } diff --git a/lld/test/MachO/dead-strip.s b/lld/test/MachO/dead-strip.s index ef92a96202883..e2de6198e8abf 100644 --- a/lld/test/MachO/dead-strip.s +++ b/lld/test/MachO/dead-strip.s @@ -48,12 +48,12 @@ # MAP: _main # MAP-LABEL: Dead Stripped Symbols -# MAP: <> [ 1] _unref_com -# MAP: <> [ 1] _unref_data -# MAP: <> [ 1] _unref_extern -# MAP: <> [ 1] _unref_local -# MAP: <> [ 1] _unref_private_extern -# MAP: <> [ 1] l_unref_data +# MAP: <> 0x00000000 [ 1] _unref_com +# MAP: <> 0x00000008 [ 1] _unref_data +# MAP: <> 0x00000006 [ 1] _unref_extern +# MAP: <> 0x00000001 [ 1] _unref_local +# MAP: <> 0x00000007 [ 1] _unref_private_extern +# MAP: <> 0x00000008 [ 1] l_unref_data ## Run dead stripping on code without any dead symbols. # RUN: llvm-mc -filetype=obj -triple=x86_64-apple-macos \ @@ -64,10 +64,10 @@ # RUN: FileCheck --check-prefix=NODEADSYMBOLS %s < %t/no-dead-symbols-map # NODEADSYMBOLS-LABEL: # Symbols: -# NODEADSYMBOLS-NEXT: # Address File Name -# NODEADSYMBOLS-NEXT: _main +# NODEADSYMBOLS-NEXT: # Address Size File Name +# NODEADSYMBOLS-NEXT: _main # NODEADSYMBOLS-LABEL: # Dead Stripped Symbols: -# NODEADSYMBOLS-NEXT: # Address File Name +# NODEADSYMBOLS-NEXT: # Size File Name # NODEADSYMBOLS-EMPTY: # RUN: %lld -dylib -dead_strip -u _ref_private_extern_u %t/basics.o -o %t/basics.dylib @@ -347,7 +347,7 @@ # RUN: FileCheck --check-prefix=DUPMAP %s < %t/stripped-duplicate-map # DUPMAP: _main # DUPMAP-LABEL: Dead Stripped Symbols -# DUPMAP: <> [ 2] _foo +# DUPMAP: <> 0x00000001 [ 2] _foo #--- duplicate1.s .text diff --git a/lld/test/MachO/map-file.s b/lld/test/MachO/map-file.s index 6c381eacfd27f..759a9ba445f81 100644 --- a/lld/test/MachO/map-file.s +++ b/lld/test/MachO/map-file.s @@ -37,10 +37,10 @@ # CHECK-NEXT: 0x[[#%X,BSS]] 0x{{[0-9a-f]+}} __DATA __common # CHECK-NEXT: # Symbols: -# CHECK-NEXT: # Address File Name -# CHECK-NEXT: 0x[[#%X,MAIN]] [ 1] _main -# CHECK-NEXT: 0x[[#%X,FOO]] [ 2] _foo -# CHECK-NEXT: 0x[[#%X,NUMBER]] [ 1] _number +# CHECK-NEXT: # Address Size File Name +# CHECK-NEXT: 0x[[#%X,MAIN]] 0x00000001 [ 1] _main +# CHECK-NEXT: 0x[[#%X,FOO]] 0x00000000 [ 2] _foo +# CHECK-NEXT: 0x[[#%X,NUMBER]] 0x00000000 [ 1] _number # RUN: %lld -map %t/c-string-literal-map %t/c-string-literal.o -o %t/c-string-literal-out # RUN: FileCheck --check-prefix=CSTRING %s < %t/c-string-literal-map @@ -56,10 +56,10 @@ ## C-string literals should be printed as "literal string: " # DEADCSTRING-LABEL: Symbols: -# DEADCSTRING-DAG: _main -# DEADCSTRING-DAG: literal string: Hello world!\n +# DEADCSTRING-DAG: 0x0000001D [ 1] _main +# DEADCSTRING-DAG: 0x0000000E [ 1] literal string: Hello world!\n # DEADCSTRING-LABEL: Dead Stripped Symbols: -# DEADCSTRING-DAG: literal string: Hello, it's me +# DEADCSTRING-DAG: <> 0x0000000F [ 1] literal string: Hello, it's me # MAPFILE: "name":"Total Write map file"