[lld-macho] Preserve the size of common symbols
authorJez Ng <jezng@fb.com>
Thu, 13 Oct 2022 20:44:33 +0000 (16:44 -0400)
committerJez Ng <jezng@fb.com>
Thu, 13 Oct 2022 20:44:33 +0000 (16:44 -0400)
We never noticed this before because the only time the size gets emitted is via
the linker map...

Reviewed By: #lld-macho, thakis

Differential Revision: https://reviews.llvm.org/D135884

lld/MachO/Driver.cpp
lld/test/MachO/dead-strip.s
lld/test/MachO/map-file.s

index 8ef2a36..9875c6f 100644 (file)
@@ -577,7 +577,7 @@ static void replaceCommonSymbols() {
     // FIXME: CommonSymbol should store isReferencedDynamically, noDeadStrip
     // and pass them on here.
     replaceSymbol<Defined>(
-        sym, sym->getName(), common->getFile(), isec, /*value=*/0, /*size=*/0,
+        sym, sym->getName(), common->getFile(), isec, /*value=*/0, common->size,
         /*isWeakDef=*/false, /*isExternal=*/true, common->privateExtern,
         /*includeInSymtab=*/true, /*isThumb=*/false,
         /*isReferencedDynamically=*/false, /*noDeadStrip=*/false);
index e2de619..a9892fd 100644 (file)
@@ -48,7 +48,7 @@
 
 # MAP: _main
 # MAP-LABEL: Dead Stripped Symbols
-# MAP: <<dead>> 0x00000000 [ 1] _unref_com
+# MAP: <<dead>> 0x00000001 [ 1] _unref_com
 # MAP: <<dead>> 0x00000008 [ 1] _unref_data
 # MAP: <<dead>> 0x00000006 [ 1] _unref_extern
 # MAP: <<dead>> 0x00000001 [ 1] _unref_local
index 759a9ba..f1c8660 100644 (file)
@@ -40,7 +40,7 @@
 # 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
+# CHECK-NEXT: 0x[[#%X,NUMBER]]    0x00000001  [  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