[PATCH] D44991: Show alignment 0 as alignment 1 in the map file.

Rui Ueyama via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Mar 28 11:33:27 PDT 2018


ruiu created this revision.
ruiu added a reviewer: grimar.
Herald added subscribers: arichardson, emaste.

Show alignment 0 as alignment 1 in the map file.


https://reviews.llvm.org/D44991

Files:
  lld/ELF/MapFile.cpp
  lld/test/ELF/map-file.s


Index: lld/test/ELF/map-file.s
===================================================================
--- lld/test/ELF/map-file.s
+++ lld/test/ELF/map-file.s
@@ -54,38 +54,38 @@
 // CHECK-NEXT: 0000000000200300 0000000000000030     8 .rela.plt
 // CHECK-NEXT: 0000000000200300 0000000000000030     8         <internal>:(.rela.plt)
 // CHECK-NEXT: 0000000000200330 0000000000000060     8 .eh_frame
-// CHECK-NEXT: 0000000000200330 000000000000002c     0         {{.*}}{{/|\\}}map-file.s.tmp1.o:(.eh_frame+0x0)
-// CHECK-NEXT: 0000000000200360 0000000000000014     0         {{.*}}{{/|\\}}map-file.s.tmp1.o:(.eh_frame+0x2c)
-// CHECK-NEXT: 0000000000200378 0000000000000018     0         {{.*}}{{/|\\}}map-file.s.tmp2.o:(.eh_frame+0x18)
+// CHECK-NEXT: 0000000000200330 000000000000002c     1         {{.*}}{{/|\\}}map-file.s.tmp1.o:(.eh_frame+0x0)
+// CHECK-NEXT: 0000000000200360 0000000000000014     1         {{.*}}{{/|\\}}map-file.s.tmp1.o:(.eh_frame+0x2c)
+// CHECK-NEXT: 0000000000200378 0000000000000018     1         {{.*}}{{/|\\}}map-file.s.tmp2.o:(.eh_frame+0x18)
 // CHECK-NEXT: 0000000000201000 000000000000002d     4 .text
 // CHECK-NEXT: 0000000000201000 0000000000000028     4         {{.*}}{{/|\\}}map-file.s.tmp1.o:(.text)
-// CHECK-NEXT: 0000000000201000 0000000000000000     0                 _start
-// CHECK-NEXT: 000000000020101f 0000000000000000     0                 f(int)
-// CHECK-NEXT: 0000000000201028 0000000000000000     0                 local
+// CHECK-NEXT: 0000000000201000 0000000000000000     1                 _start
+// CHECK-NEXT: 000000000020101f 0000000000000000     1                 f(int)
+// CHECK-NEXT: 0000000000201028 0000000000000000     1                 local
 // CHECK-NEXT: 0000000000201028 0000000000000002     4         {{.*}}{{/|\\}}map-file.s.tmp2.o:(.text)
-// CHECK-NEXT: 0000000000201028 0000000000000000     0                 foo
-// CHECK-NEXT: 0000000000201029 0000000000000000     0                 bar
+// CHECK-NEXT: 0000000000201028 0000000000000000     1                 foo
+// CHECK-NEXT: 0000000000201029 0000000000000000     1                 bar
 // CHECK-NEXT: 000000000020102a 0000000000000000     1         {{.*}}{{/|\\}}map-file.s.tmp2.o:(.text.zed)
-// CHECK-NEXT: 000000000020102a 0000000000000000     0                 zed
+// CHECK-NEXT: 000000000020102a 0000000000000000     1                 zed
 // CHECK-NEXT: 000000000020102c 0000000000000000     4         {{.*}}{{/|\\}}map-file.s.tmp3.o:(.text)
-// CHECK-NEXT: 000000000020102c 0000000000000000     0                 bah
+// CHECK-NEXT: 000000000020102c 0000000000000000     1                 bah
 // CHECK-NEXT: 000000000020102c 0000000000000001     4         {{.*}}{{/|\\}}map-file.s.tmp4.a(map-file.s.tmp4.o):(.text)
-// CHECK-NEXT: 000000000020102c 0000000000000000     0                 baz
+// CHECK-NEXT: 000000000020102c 0000000000000000     1                 baz
 // CHECK-NEXT: 0000000000201030 0000000000000030    16 .plt
 // CHECK-NEXT: 0000000000201030 0000000000000030    16         <internal>:(.plt)
-// CHECK-NEXT: 0000000000201040 0000000000000000     0                 sharedFunc1
-// CHECK-NEXT: 0000000000201050 0000000000000000     0                 sharedFunc2
+// CHECK-NEXT: 0000000000201040 0000000000000000     1                 sharedFunc1
+// CHECK-NEXT: 0000000000201050 0000000000000000     1                 sharedFunc2
 // CHECK-NEXT: 0000000000202000 0000000000000028     8 .got.plt
 // CHECK-NEXT: 0000000000202000 0000000000000028     8         <internal>:(.got.plt)
 // CHECK-NEXT: 0000000000203000 0000000000000100     8 .dynamic
 // CHECK-NEXT: 0000000000203000 0000000000000100     8         <internal>:(.dynamic)
 // CHECK-NEXT: 0000000000204000 0000000000000010    16 .bss
 // CHECK-NEXT: 0000000000204000 0000000000000004    16         {{.*}}{{/|\\}}map-file.s.tmp1.o:(COMMON)
-// CHECK-NEXT: 0000000000204000 0000000000000004     0                 common
+// CHECK-NEXT: 0000000000204000 0000000000000004     1                 common
 // CHECK-NEXT: 0000000000204004 0000000000000004     1         <internal>:(.bss)
-// CHECK-NEXT: 0000000000204004 0000000000000004     0                 sharedFoo
+// CHECK-NEXT: 0000000000204004 0000000000000004     1                 sharedFoo
 // CHECK-NEXT: 0000000000204008 0000000000000008     1         <internal>:(.bss)
-// CHECK-NEXT: 0000000000204008 0000000000000008     0                 sharedBar
+// CHECK-NEXT: 0000000000204008 0000000000000008     1                 sharedBar
 // CHECK-NEXT: 0000000000000000 0000000000000008     1 .comment
 // CHECK-NEXT: 0000000000000000 0000000000000008     1         <internal>:(.comment)
 // CHECK-NEXT: 0000000000000000 0000000000000198     8 .symtab
Index: lld/ELF/MapFile.cpp
===================================================================
--- lld/ELF/MapFile.cpp
+++ lld/ELF/MapFile.cpp
@@ -46,6 +46,11 @@
 // Print out the first three columns of a line.
 static void writeHeader(raw_ostream &OS, uint64_t Addr, uint64_t Size,
                         uint64_t Align) {
+  // Alignment 0 is a special value and is equivalent to 1.
+  // Canonicalize it for the convenience of interpreting the map file.
+  if (Align == 0)
+    Align = 1;
+
   int W = Config->Is64 ? 16 : 8;
   OS << format("%0*llx %0*llx %5lld ", W, Addr, W, Size, Align);
 }


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D44991.140113.patch
Type: text/x-patch
Size: 5318 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180328/4e735491/attachment.bin>


More information about the llvm-commits mailing list