[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