[lld] bdd0cec - [lld-macho] Include symbol sizes in mapfile
Jez Ng via llvm-commits
llvm-commits at lists.llvm.org
Thu Oct 13 13:45:00 PDT 2022
Author: Jez Ng
Date: 2022-10-13T16:44:29-04:00
New Revision: bdd0cec5697f1df988cda1b5305fe9a8b869a680
URL: https://github.com/llvm/llvm-project/commit/bdd0cec5697f1df988cda1b5305fe9a8b869a680
DIFF: https://github.com/llvm/llvm-project/commit/bdd0cec5697f1df988cda1b5305fe9a8b869a680.diff
LOG: [lld-macho] Include symbol sizes in mapfile
This matches ld64's behavior.
Additionally, I edited the "Dead Stripped Symbols" header to omit "Address" --
this also matches ld64.
Reviewed By: #lld-macho, oontvoo
Differential Revision: https://reviews.llvm.org/D135883
Added:
Modified:
lld/MachO/MapFile.cpp
lld/test/MachO/dead-strip.s
lld/test/MachO/map-file.s
Removed:
################################################################################
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<Symbol *, std::string> 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<Symbol *, std::string> 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("<<dead>>\t[%3u] %s\n", readerToFileOrdinal[sym->getFile()],
+ os << format("<<dead>>\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: <<dead>> [ 1] _unref_com
-# MAP: <<dead>> [ 1] _unref_data
-# MAP: <<dead>> [ 1] _unref_extern
-# MAP: <<dead>> [ 1] _unref_local
-# MAP: <<dead>> [ 1] _unref_private_extern
-# MAP: <<dead>> [ 1] l_unref_data
+# MAP: <<dead>> 0x00000000 [ 1] _unref_com
+# MAP: <<dead>> 0x00000008 [ 1] _unref_data
+# MAP: <<dead>> 0x00000006 [ 1] _unref_extern
+# MAP: <<dead>> 0x00000001 [ 1] _unref_local
+# MAP: <<dead>> 0x00000007 [ 1] _unref_private_extern
+# MAP: <<dead>> 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: <<dead>> [ 2] _foo
+# DUPMAP: <<dead>> 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: <C string literal>"
# 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: <<dead>> 0x0000000F [ 1] literal string: Hello, it's me
# MAPFILE: "name":"Total Write map file"
More information about the llvm-commits
mailing list