[obj2yaml] - Do not dump the segment's "Align" field when it is equal to 1.
authorGeorgii Rymar <grimar@accesssoftek.com>
Wed, 8 Apr 2020 10:10:01 +0000 (13:10 +0300)
committerGeorgii Rymar <grimar@accesssoftek.com>
Thu, 9 Apr 2020 11:20:36 +0000 (14:20 +0300)
yaml2obj sets the `Align` to 1 by default, hence we can stop
dumping it to reduce the output.

Differential revision: https://reviews.llvm.org/D77716

llvm/test/Object/obj2yaml.test
llvm/test/tools/obj2yaml/program-headers.yaml
llvm/tools/obj2yaml/elf2yaml.cpp

index 808e9fa..a4398fb 100644 (file)
@@ -672,7 +672,6 @@ Symbols:
 # ELF-AVR-NEXT:     - Section: .data
 # ELF-AVR-NEXT:    VAddr: 0x0000000000800060
 # ELF-AVR-NEXT:    PAddr: 0x0000000000000004
-# ELF-AVR-NEXT:    Align: 0x0000000000000001
 # ELF-AVR-NEXT: Sections:
 # ELF-AVR-NEXT:   - Name:            .text
 # ELF-AVR-NEXT:     Type:            SHT_PROGBITS
index 1c784f1..7f31494 100644 (file)
 # YAML-NEXT:    Sections:
 # YAML-NEXT:      - Section: .dynamic
 # YAML-NEXT:    VAddr: 0x0000000000003EF0
-# YAML-NEXT:    Align: 0x0000000000000001
 # YAML-NEXT:  - Type:  PT_LOAD
 # YAML-NEXT:    Flags: [ PF_R ]
 # YAML-NEXT:    VAddr: 0x0000000000004000
-# YAML-NEXT:    Align: 0x0000000000000001
 # YAML-NEXT:  - Type:  PT_LOAD
 # YAML-NEXT:    Flags: [ PF_R ]
 # YAML-NEXT:    Sections:
 # YAML-NEXT:      - Section: .gnu.hash
 # YAML-NEXT:    VAddr: 0x00000000000001A0
-# YAML-NEXT:    Align: 0x0000000000000001
 # YAML-NEXT:  - Type:  PT_LOAD
 # YAML-NEXT:    Flags: [ PF_R ]
 # YAML-NEXT:    Sections:
 # YAML-NEXT:      - Section: .gnu.hash
 # YAML-NEXT:    VAddr: 0x00000000000001A0
-# YAML-NEXT:    Align: 0x0000000000000001
 # YAML-NEXT: Sections:
 
 --- !ELF
@@ -150,6 +146,9 @@ ProgramHeaders:
 ## Show we can create a relro segment and put a section into it.
 ## We used .dynamic here and in tests above to demonstrate that
 ## we can place a section in any number of segments.
+## Also, we explicitly set the "Align" property to 1 to demonstate
+## that we do not dump it, because it is the default alignment
+## value set by yaml2obj.
   - Type:  PT_GNU_RELRO
     Flags: [ PF_R ]
     Sections:
@@ -257,19 +256,16 @@ DynamicSymbols: []
 # EMPTY-NEXT:   Sections:
 # EMPTY-NEXT:     - Section:         .empty.tls.start
 # EMPTY-NEXT:   VAddr:           0x0000000000001000
-# EMPTY-NEXT:   Align:           0x0000000000000001
 # EMPTY-NEXT: - Type:            PT_TLS
 # EMPTY-NEXT:   Flags:           [ PF_W, PF_R ]
 # EMPTY-NEXT:   Sections:
 # EMPTY-NEXT:     - Section:         .empty.tls.middle
 # EMPTY-NEXT:   VAddr:           0x0000000000001100
-# EMPTY-NEXT:   Align:           0x0000000000000001
 # EMPTY-NEXT: - Type:            PT_TLS
 # EMPTY-NEXT:   Flags:           [ PF_W, PF_R ]
 # EMPTY-NEXT:   Sections:
 # EMPTY-NEXT:     - Section:         .empty.tls.end
 # EMPTY-NEXT:   VAddr:           0x0000000000001200
-# EMPTY-NEXT:   Align:           0x0000000000000001
 # EMPTY-NEXT: Sections:
 
 --- !ELF
@@ -385,7 +381,6 @@ Sections:
 # NON-ALLOC-NEXT:      - Section: .non-alloc.1
 # NON-ALLOC-NEXT:      - Section: .alloc.2
 # NON-ALLOC-NEXT:     VAddr: 0x0000000000001000
-# NON-ALLOC-NEXT:     Align: 0x0000000000000001
 # NON-ALLOC-NEXT: Sections:
 
 --- !ELF
index 464f899..ac0d1e9 100644 (file)
@@ -317,7 +317,11 @@ ELFDumper<ELFT>::dumpProgramHeaders(
     PH.Flags = Phdr.p_flags;
     PH.VAddr = Phdr.p_vaddr;
     PH.PAddr = Phdr.p_paddr;
-    PH.Align = static_cast<llvm::yaml::Hex64>(Phdr.p_align);
+
+    // yaml2obj sets the alignment of a segment to 1 by default.
+    // We do not print the default alignment to reduce noise in the output.
+    if (Phdr.p_align != 1)
+      PH.Align = static_cast<llvm::yaml::Hex64>(Phdr.p_align);
 
     // Here we match sections with segments.
     // It is not possible to have a non-Section chunk, because