rupprecht created this revision.
Herald added subscribers: llvm-commits, cfe-commits, seiya, arphaman, 
jakehehrlich, aheejin, arichardson, sbc100, emaste.
Herald added a reviewer: espindola.
Herald added a reviewer: alexshap.
Herald added a reviewer: jhenderson.
Herald added projects: clang, LLVM.
rupprecht planned changes to this revision.
rupprecht added a comment.

Note: herald added reviewers, but this patch is just to provide context. I'll 
send the real patches for review in the coming days.


Note: this patch is large and not intended for submission as-is. Instead, this 
patch presents a poor implementation that makes llvm-objdump GNU compatibile 
for this option (with all existing tests passing, but few added tests, hacky 
code, etc.), and will serve as context for smaller changes to be submitted 
separately with more careful review.

llvm-objdump -h was implemented to be similar to readelf -S (see rL141579 
<https://reviews.llvm.org/rL141579>). However, it is not completely compatible 
with that, and anyone that does want headers displayed that way can use 
llvm-readelf -S now that it exists. Make llvm-objdump compatible with GNU 
objdump instead.

A brief overview of changes:

- Add file offset (with implementations for all filetypes supported by 
llvm-readobj).
- Add 2**n section alignment column (with implementations for all filetypes 
supported by llvm-readobj).
- Section numbers are not the actual section numbers, but something different, 
corresponding to libbfd section numbers. llvm-readelf -s prints the actual 
section numbers if those are desired.
- Filter out certain sections like symtabs/strtabs/relocs. The actual logic is 
a lot more convoluted (and probably isn't fully compatibile, but is pretty 
close).


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D68669

Files:
  clang/test/Modules/pch_container.m
  lld/test/ELF/bss-start-common.s
  lld/test/ELF/edata-etext.s
  lld/test/ELF/edata-no-bss.s
  lld/test/ELF/emit-relocs-gc.s
  lld/test/ELF/gc-sections-metadata.s
  lld/test/ELF/init_fini_priority.s
  lld/test/ELF/invalid-fde-rel.s
  lld/test/ELF/linkerscript/addr.test
  lld/test/ELF/linkerscript/align-empty.test
  lld/test/ELF/linkerscript/align1.test
  lld/test/ELF/linkerscript/align2.test
  lld/test/ELF/linkerscript/align3.test
  lld/test/ELF/linkerscript/at2.test
  lld/test/ELF/linkerscript/constructor.test
  lld/test/ELF/linkerscript/define.test
  lld/test/ELF/linkerscript/double-bss.test
  lld/test/ELF/linkerscript/eh-frame-emit-relocs.s
  lld/test/ELF/linkerscript/emit-reloc-section-names.s
  lld/test/ELF/linkerscript/expr-sections.test
  lld/test/ELF/linkerscript/input-sec-dup.s
  lld/test/ELF/linkerscript/insert-after.test
  lld/test/ELF/linkerscript/insert-before.test
  lld/test/ELF/linkerscript/memory-include.test
  lld/test/ELF/linkerscript/memory.s
  lld/test/ELF/linkerscript/memory3.s
  lld/test/ELF/linkerscript/memory4.test
  lld/test/ELF/linkerscript/memory5.test
  lld/test/ELF/linkerscript/multi-sections-constraint.s
  lld/test/ELF/linkerscript/non-absolute2.test
  lld/test/ELF/linkerscript/numbers.s
  lld/test/ELF/linkerscript/orphan.s
  lld/test/ELF/linkerscript/orphans.s
  lld/test/ELF/linkerscript/out-of-order-section-in-region.test
  lld/test/ELF/linkerscript/out-of-order.s
  lld/test/ELF/linkerscript/output-section-include.test
  lld/test/ELF/linkerscript/region-alias.s
  lld/test/ELF/linkerscript/repsection-va.s
  lld/test/ELF/linkerscript/section-include.test
  lld/test/ELF/linkerscript/sections-constraint.s
  lld/test/ELF/linkerscript/sections-gc2.s
  lld/test/ELF/linkerscript/sections-keep.s
  lld/test/ELF/linkerscript/sections-sort.s
  lld/test/ELF/linkerscript/sections.s
  lld/test/ELF/linkerscript/sizeof.s
  lld/test/ELF/linkerscript/symbol-only.test
  lld/test/ELF/linkerscript/va.s
  lld/test/ELF/linkerscript/wildcards.s
  lld/test/ELF/linkerscript/wildcards2.s
  lld/test/ELF/relocatable-sections.s
  lld/test/ELF/relocatable.s
  lld/test/ELF/relro-omagic.s
  lld/test/ELF/section-name.s
  lld/test/ELF/sectionstart-noallochdr.s
  lld/test/ELF/sectionstart.s
  lld/test/ELF/strip-all.s
  lld/test/ELF/synthetic-got.s
  llvm/test/MC/COFF/assoc-private.s
  llvm/test/Object/objdump-no-sectionheaders.test
  llvm/test/Object/objdump-sectionheaders.test
  llvm/test/ObjectYAML/CodeView/sections.yaml
  llvm/test/tools/llvm-objcopy/ELF/symtab-error-on-remove-strtab.test
  llvm/test/tools/llvm-objdump/X86/adjust-vma.test
  llvm/test/tools/llvm-objdump/X86/macho-section-headers.test
  llvm/test/tools/llvm-objdump/X86/phdrs-lma.test
  llvm/test/tools/llvm-objdump/X86/phdrs-lma2.test
  llvm/test/tools/llvm-objdump/X86/section-index.s
  llvm/test/tools/llvm-objdump/section-filter.test
  llvm/test/tools/llvm-objdump/wasm.txt
  llvm/test/tools/llvm-objdump/xcoff-section-headers.test
  llvm/tools/llvm-objdump/llvm-objdump.cpp
  llvm/tools/llvm-objdump/llvm-objdump.h

Index: llvm/tools/llvm-objdump/llvm-objdump.h
===================================================================
--- llvm/tools/llvm-objdump/llvm-objdump.h
+++ llvm/tools/llvm-objdump/llvm-objdump.h
@@ -79,7 +79,13 @@
 };
 
 // Various helper functions.
-SectionFilter ToolSectionFilter(llvm::object::ObjectFile const &O);
+struct ToolFilterOptions {
+  // Start at -1 so that it's 0 the first time we increment & return it.
+  int Idx = -1;
+  bool SkipSpecialELFSections = false;
+};
+SectionFilter ToolSectionFilter(llvm::object::ObjectFile const &O,
+                                ToolFilterOptions *Opts = nullptr);
 
 Error getELFRelocationValueString(const object::ELFObjectFileBase *Obj,
                                   const object::RelocationRef &Rel,
Index: llvm/tools/llvm-objdump/llvm-objdump.cpp
===================================================================
--- llvm/tools/llvm-objdump/llvm-objdump.cpp
+++ llvm/tools/llvm-objdump/llvm-objdump.cpp
@@ -45,6 +45,7 @@
 #include "llvm/Object/MachOUniversal.h"
 #include "llvm/Object/ObjectFile.h"
 #include "llvm/Object/Wasm.h"
+#include "llvm/Object/XCOFFObjectFile.h"
 #include "llvm/Support/Casting.h"
 #include "llvm/Support/CommandLine.h"
 #include "llvm/Support/Debug.h"
@@ -342,26 +343,98 @@
 
 typedef std::vector<std::tuple<uint64_t, StringRef, uint8_t>> SectionSymbolsTy;
 
-static bool shouldKeep(object::SectionRef S) {
-  if (FilterSections.empty())
-    return true;
-
+static bool shouldKeep(object::SectionRef S,
+                       ToolFilterOptions *Opts = nullptr) {
   Expected<StringRef> SecNameOrErr = S.getName();
   if (!SecNameOrErr) {
     consumeError(SecNameOrErr.takeError());
-    return false;
+    // FIXME: clarify this case. This is for Object/invalid.test which tests a
+    // bad .shstrtab section type.
+    return FilterSections.empty();
   }
   StringRef SecName = *SecNameOrErr;
 
-  // StringSet does not allow empty key so avoid adding sections with
-  // no name (such as the section with index 0) here.
-  if (!SecName.empty())
-    FoundSectionSet.insert(SecName);
+  // Always skip the null section
+  // FIXME: check if this is still necessary after checking for SHT_NULL below.
+  if (SecName.empty())
+    return false;
+
+  if (Opts && Opts->SkipSpecialELFSections) {
+    // TODO: this is ELF specific, but could easily crash if
+    // SkipSpecialELFSections is set when Obj->isELF() is false.
+    // This whole ELF-specific part of the loop should probably be extracted
+    // anyway.
+    ELFSectionRef ELFSection = static_cast<ELFSectionRef>(S);
+    switch (ELFSection.getType()) {
+    case ELF::SHT_NULL:
+    case ELF::SHT_SYMTAB:
+    case ELF::SHT_SYMTAB_SHNDX:
+      return false;
+    case ELF::SHT_REL:
+    case ELF::SHT_RELA:
+      // Discard reloc sections that don't look like reloc sections:
+      // 1. sh_link should point to a symbol table.
+      // 2. sh_info should point to a non-reloc section.
+      // See http://www.sco.com/developers/gabi/latest/ch4.sheader.html#sh_link.
+      // TODO: templatize this for other ELF types
+      if (const ELF64LEObjectFile *ELFObj =
+              dyn_cast<ELF64LEObjectFile>(S.getObject())) {
+        using Elf_Shdr = typename ELF64LE::Shdr;
+        const Elf_Shdr *ElfShdr = ELFObj->getSection(S.getRawDataRefImpl());
+        bool FoundSymtab = false;
+        bool FoundRelTarget = false;
+        // TODO: remove this loop which makes things O(n^2)
+        for (SectionRef OtherSection : S.getObject()->sections()) {
+          const Elf_Shdr *OtherShdr =
+              ELFObj->getSection(OtherSection.getRawDataRefImpl());
+          if (ElfShdr->sh_link == OtherSection.getIndex()) {
+            FoundSymtab = (OtherShdr->sh_type == ELF::SHT_SYMTAB);
+          }
+          if (ElfShdr->sh_info == OtherSection.getIndex()) {
+            FoundRelTarget = (OtherShdr->sh_type != ELF::SHT_REL &&
+                              OtherShdr->sh_type != ELF::SHT_RELA);
+          }
+        }
+        if (FoundSymtab && FoundRelTarget) {
+          return false;
+        } else {
+          ++Opts->Idx;
+          return true;
+        }
+      } else {
+        // TODO: remove fallback
+        return false;
+      }
+      return true;
+    case ELF::SHT_STRTAB:
+      // We want to keep sections like ".dynstr", so only discard sections like
+      // ".strtab" or ".shstrtab".
+      if (SecName.endswith("strtab")) {
+        return false;
+      } else {
+        ++Opts->Idx;
+        return true;
+      }
+    }
+  }
+
+  if (Opts)
+    ++Opts->Idx;
+
+  if (FilterSections.empty())
+    return true;
+
+  // StringSet does not allow empty key so avoid adding sections with no name
+  // (such as the null section with index 0 for ELF files) here. This is
+  // checked above.
+  FoundSectionSet.insert(SecName);
   return is_contained(FilterSections, SecName);
 }
 
-SectionFilter ToolSectionFilter(object::ObjectFile const &O) {
-  return SectionFilter([](object::SectionRef S) { return shouldKeep(S); }, O);
+SectionFilter ToolSectionFilter(llvm::object::ObjectFile const &O,
+                                ToolFilterOptions *Opts) {
+  return SectionFilter(
+      [Opts](object::SectionRef S) { return shouldKeep(S, Opts); }, O);
 }
 
 std::string getFileNameForError(const object::Archive::Child &C,
@@ -1650,17 +1723,51 @@
   return ShowLMA;
 }
 
+static uint64_t getFileOffset(const ObjectFile *Obj,
+                              const SectionRef &Section) {
+  if (Obj->isELF())
+    return ELFSectionRef(Section).getOffset();
+  if (Obj->isMachO()) {
+    auto *MachOObj = dyn_cast<MachOObjectFile>(Obj);
+    return MachOObj->is64Bit()
+               ? MachOObj->getSection64(Section.getRawDataRefImpl()).offset
+               : MachOObj->getSection(Section.getRawDataRefImpl()).offset;
+  }
+  if (Obj->isWasm()) {
+    // FIXME: the file offset here agree with llvm-readobj, but not GNU objdump.
+    auto *WasmObj = dyn_cast<WasmObjectFile>(Obj);
+    return WasmObj->getWasmSection(Section).Offset;
+  }
+  if (Obj->isXCOFF()) {
+    auto *XCoffObj = dyn_cast<XCOFFObjectFile>(Obj);
+    // FIXME: This seems very unsafe
+    return XCoffObj->is64Bit() ? XCoffObj->sections64()[Section.getIndex() - 1]
+                                     .FileOffsetToRawData
+                               : XCoffObj->sections32()[Section.getIndex() - 1]
+                                     .FileOffsetToRawData;
+  }
+  if (Obj->isCOFF()) {
+    auto *CoffObj = dyn_cast<COFFObjectFile>(Obj);
+    return CoffObj->getCOFFSection(Section)->PointerToRawData;
+  }
+  // TODO: crash here if unsupported?
+  return 0;
+}
+
 void printSectionHeaders(const ObjectFile *Obj) {
   bool HasLMAColumn = shouldDisplayLMA(Obj);
   if (HasLMAColumn)
     outs() << "Sections:\n"
               "Idx Name          Size     VMA              LMA              "
-              "Type\n";
+              "File off         Algn  Type\n";
   else
     outs() << "Sections:\n"
-              "Idx Name          Size     VMA          Type\n";
+              "Idx Name          Size     VMA              File off         "
+              "Algn  Type\n";
 
-  for (const SectionRef &Section : ToolSectionFilter(*Obj)) {
+  ToolFilterOptions FilterOpts;
+  FilterOpts.SkipSpecialELFSections = Obj->isELF();
+  for (const SectionRef &Section : ToolSectionFilter(*Obj, &FilterOpts)) {
     StringRef Name = unwrapOrError(Section.getName(), Obj->getFileName());
     uint64_t VMA = Section.getAddress();
     if (shouldAdjustVA(Section))
@@ -1670,18 +1777,39 @@
     bool Text = Section.isText();
     bool Data = Section.isData();
     bool BSS = Section.isBSS();
+    // Note: GNU objdump prints CONTENTS, ALLOC, LOAD, READONLY, CODE etc. here
+    // instead.
     std::string Type = (std::string(Text ? "TEXT " : "") +
                         (Data ? "DATA " : "") + (BSS ? "BSS" : ""));
 
+    uint64_t FileOffset = getFileOffset(Obj, Section);
+    // FIXME: what happens if an object has an invalid alignment (i.e. 3, 5, or
+    // any other value not 2^n)? Test that case.
+
+    // Note: alignment = 0 is a "valid" alignment but not considered so for
+    // llvm::Align. So use valueOrOne() to be nice in that case.
+    llvm::Align SectionAlign =
+        llvm::MaybeAlign(Section.getAlignment()).valueOrOne();
+
+    if (Obj->isXCOFF()) {
+      // FIXME: XCOFF alignment value looks wrong. See:
+      // llvm/test/tools/llvm-objdump/Inputs/xcoff-section-headers.o.
+      // Ignore our current implementation and print "2**0" instead of something
+      // bogus to get tests stable; but revise before committing.
+      SectionAlign = llvm::Align();
+    }
+
     if (HasLMAColumn)
       outs() << format("%3d %-13s %08" PRIx64 " %016" PRIx64 " %016" PRIx64
-                       " %s\n",
-                       (unsigned)Section.getIndex(), Name.str().c_str(), Size,
-                       VMA, getELFSectionLMA(Section), Type.c_str());
+                       " %016" PRIx64 " 2**%d  %s\n",
+                       FilterOpts.Idx, Name.str().c_str(), Size, VMA,
+                       getELFSectionLMA(Section), FileOffset,
+                       Log2(SectionAlign), Type.c_str());
     else
-      outs() << format("%3d %-13s %08" PRIx64 " %016" PRIx64 " %s\n",
-                       (unsigned)Section.getIndex(), Name.str().c_str(), Size,
-                       VMA, Type.c_str());
+      outs() << format("%3d %-13s %08" PRIx64 " %016" PRIx64 " %016" PRIx64
+                       " 2**%d  %s\n",
+                       FilterOpts.Idx, Name.str().c_str(), Size, VMA,
+                       FileOffset, Log2(SectionAlign), Type.c_str());
   }
   outs() << "\n";
 }
Index: llvm/test/tools/llvm-objdump/xcoff-section-headers.test
===================================================================
--- llvm/test/tools/llvm-objdump/xcoff-section-headers.test
+++ llvm/test/tools/llvm-objdump/xcoff-section-headers.test
@@ -12,12 +12,12 @@
 
 # CHECK: xcoff-section-headers.o:      file format aixcoff-rs6000
 # CHECK: Sections:
-# CHECK: Idx Name          Size     VMA          Type
-# CHECK:   1 .text         00000080 0000000000000000 TEXT
-# CHECK:   2 .data         00000024 0000000000000080 DATA
-# CHECK:   3 .bss          00000004 00000000000000a4 BSS
-# CHECK:   4 .tdata        00000008 0000000000000000 DATA
-# CHECK:   5 .tbss         00000004 0000000000000008 BSS
+# CHECK: Idx Name          Size     VMA              File off         Algn  Type
+# CHECK:   0 .text         00000080 0000000000000000 0000000000000200 2**0  TEXT
+# CHECK:   1 .data         00000024 0000000000000080 0000000000000280 2**0  DATA
+# CHECK:   2 .bss          00000004 00000000000000a4 0000000000000000 2**0  BSS
+# CHECK:   3 .tdata        00000008 0000000000000000 00000000000002a4 2**0  DATA
+# CHECK:   4 .tbss         00000004 0000000000000008 0000000000000000 2**0  BSS
 
 # xcoff-section-headers.o Compiled with IBM XL C/C++ for AIX, V16.1.0
 # test.c:
@@ -32,10 +32,10 @@
 
 # LONG: xcoff-long-sec-names.o:      file format aixcoff-rs6000
 # LONG: Sections:
-# LONG: Idx Name          Size     VMA          Type
-# LONG: 1 .dwarnge      00000004 0000000000000000
-# LONG: 2 .dwpbnms      00000004 0000000000000000
-# LONG: 3 .dwpbtyp      00000004 0000000000000000
+# LONG: Idx Name          Size     VMA              File off         Algn  Type
+# LONG:   0 .dwarnge      00000004 0000000000000000 000000000000008c 2**0
+# LONG:   1 .dwpbnms      00000004 0000000000000000 0000000000000090 2**0
+# LONG:   2 .dwpbtyp      00000004 0000000000000000 0000000000000094 2**0
 
 # xcoff-long-sec-names.o was generated by assembling the following .s file:
 #  .dwsect 0x30000 # .dwpbnms section
Index: llvm/test/tools/llvm-objdump/wasm.txt
===================================================================
--- llvm/test/tools/llvm-objdump/wasm.txt
+++ llvm/test/tools/llvm-objdump/wasm.txt
@@ -1,14 +1,14 @@
 # RUN: llvm-objdump -h %p/Inputs/trivial.obj.wasm | FileCheck %s
 
 # CHECK:      Sections:
-# CHECK-NEXT: Idx Name          Size    VMA              Type
-# CHECK-NEXT:  0 TYPE          00000011 0000000000000000
-# CHECK-NEXT:  1 IMPORT        0000005d 0000000000000000
-# CHECK-NEXT:  2 FUNCTION      00000003 0000000000000000
-# CHECK-NEXT:  3 CODE          00000024 0000000000000000 TEXT
-# CHECK-NEXT:  4 DATA          0000001c 0000000000000000 DATA
-# CHECK-NEXT:  5 linking       0000006d 0000000000000000
-# CHECK-NEXT:  6 reloc.CODE    0000000f 0000000000000000
+# CHECK-NEXT: Idx Name          Size     VMA              File off         Algn Type
+# CHECK-NEXT:   0 TYPE          00000011 0000000000000000 0000000000000008 2**0
+# CHECK-NEXT:   1 IMPORT        0000005d 0000000000000000 000000000000001f 2**0
+# CHECK-NEXT:   2 FUNCTION      00000003 0000000000000000 0000000000000082 2**0
+# CHECK-NEXT:   3 CODE          00000024 0000000000000000 000000000000008b 2**0 TEXT
+# CHECK-NEXT:   4 DATA          0000001c 0000000000000000 00000000000000b5 2**0 DATA
+# CHECK-NEXT:   5 linking       0000006d 0000000000000000 00000000000000d7 2**0
+# CHECK-NEXT:   6 reloc.CODE    0000000f 0000000000000000 0000000000000152 2**0
 
 # RUN: llvm-objdump -p %p/Inputs/trivial.obj.wasm | FileCheck %s -check-prefix CHECK-HEADER
 
Index: llvm/test/tools/llvm-objdump/section-filter.test
===================================================================
--- llvm/test/tools/llvm-objdump/section-filter.test
+++ llvm/test/tools/llvm-objdump/section-filter.test
@@ -5,9 +5,9 @@
 # RUN: llvm-objdump -h %t.h.elf -j=.text --section=.bss \
 # RUN:   | FileCheck %s --check-prefix=SHDRS --implicit-check-not=.data --implicit-check-not=.text2
 
-# SHDRS: Name  Size     VMA              LMA
-# SHDRS: .text 00000001 0000000000000400 0000000000001000
-# SHDRS: .bss  00000001 0000000000000420 0000000000003000
+# SHDRS: Name  Size     VMA              LMA              File off         Algn  Type
+# SHDRS: .text 00000001 0000000000000400 0000000000001000 00000000000000f0 2**4  TEXT
+# SHDRS: .bss  00000001 0000000000000420 0000000000003000 0000000000000110 2**4  BSS
 
 --- !ELF
 FileHeader:
@@ -114,5 +114,5 @@
 # RUN:   | FileCheck %s --check-prefix=NO-SECTION
 
 # NO-SECTION:      Sections:
-# NO-SECTION-NEXT: Idx Name Size VMA Type
+# NO-SECTION-NEXT: Idx Name Size VMA File off Algn Type
 # NO-SECTION-NOT:  {{.}}
Index: llvm/test/tools/llvm-objdump/X86/section-index.s
===================================================================
--- llvm/test/tools/llvm-objdump/X86/section-index.s
+++ llvm/test/tools/llvm-objdump/X86/section-index.s
@@ -2,16 +2,16 @@
 
 # RUN: llvm-objdump -section-headers %t | FileCheck %s
 # CHECK:     Idx Name
-# CHECK:      3  .foo
-# CHECK-NEXT: 4  .bar
-# CHECK-NEXT: 5  .zed
+# CHECK:      1  .foo
+# CHECK-NEXT: 2  .bar
+# CHECK-NEXT: 3  .zed
 
 ## Check we report the valid section index
 ## when requesting a specific section.
 # RUN: llvm-objdump -section-headers -section=.bar %t \
 # RUN:   | FileCheck %s --check-prefix=BAR
 # BAR:      Idx Name
-# BAR-NEXT:  4  .bar
+# BAR-NEXT:  2  .bar
 # BAR-NOT:  foo
 # BAR-NOT:  zed
 
Index: llvm/test/tools/llvm-objdump/X86/phdrs-lma2.test
===================================================================
--- llvm/test/tools/llvm-objdump/X86/phdrs-lma2.test
+++ llvm/test/tools/llvm-objdump/X86/phdrs-lma2.test
@@ -5,22 +5,20 @@
 # RUN: llvm-objdump --section-headers %t | FileCheck %s
 
 # CHECK:      Sections:
-# CHECK-NEXT: Idx Name  Size     VMA              Type
-# CHECK-NEXT:   0       00000000 0000000000000000
-# CHECK-NEXT:   1 .text 00000004 0000000000001000 TEXT
-# CHECK-NEXT:   2 .init 00000004 0000000000001010 TEXT
-# CHECK-NEXT:   3 .data 00000004 0000000000002000 DATA
+# CHECK-NEXT: Idx Name  Size     VMA              File off         Algn Type
+# CHECK-NEXT:   0 .text 00000004 0000000000001000 00000000000000b0 2**0 TEXT
+# CHECK-NEXT:   1 .init 00000004 0000000000001010 00000000000000b4 2**0 TEXT
+# CHECK-NEXT:   2 .data 00000004 0000000000002000 00000000000000b8 2**0 DATA
 
 ## Check we can trigger displaying the LMA column with --show-lma.
 # RUN: llvm-objdump --section-headers --show-lma %t |\
 # RUN:   FileCheck %s --check-prefix=LMA
 
 # LMA:      Sections:
-# LMA-NEXT: Idx Name  Size     VMA              LMA              Type
-# LMA-NEXT:   0       00000000 0000000000000000 0000000000000000
-# LMA-NEXT:   1 .text 00000004 0000000000001000 0000000000001000 TEXT
-# LMA-NEXT:   2 .init 00000004 0000000000001010 0000000000001010 TEXT
-# LMA-NEXT:   3 .data 00000004 0000000000002000 0000000000002000 DATA
+# LMA-NEXT: Idx Name  Size     VMA              LMA              File off         Algn Type
+# LMA-NEXT:   0 .text 00000004 0000000000001000 0000000000001000 00000000000000b0 2**0 TEXT
+# LMA-NEXT:   1 .init 00000004 0000000000001010 0000000000001010 00000000000000b4 2**0 TEXT
+# LMA-NEXT:   2 .data 00000004 0000000000002000 0000000000002000 00000000000000b8 2**0 DATA
 
 !ELF
 FileHeader:
Index: llvm/test/tools/llvm-objdump/X86/phdrs-lma.test
===================================================================
--- llvm/test/tools/llvm-objdump/X86/phdrs-lma.test
+++ llvm/test/tools/llvm-objdump/X86/phdrs-lma.test
@@ -4,11 +4,10 @@
 # RUN: llvm-objdump --section-headers %t | FileCheck %s
 
 # CHECK:      Sections:
-# CHECK-NEXT: Idx Name  Size     VMA              LMA              Type
-# CHECK-NEXT:   0       00000000 0000000000000000 0000000000000000
-# CHECK-NEXT:   1 .text 00000004 0000000000001000 0000000000002000 TEXT
-# CHECK-NEXT:   2 .init 00000004 0000000000001010 0000000000001010 TEXT
-# CHECK-NEXT:   3 .data 00000004 0000000000002000 0000000000003000 DATA
+# CHECK-NEXT: Idx Name  Size     VMA              LMA              File off         Algn Type
+# CHECK-NEXT:   0 .text 00000004 0000000000001000 0000000000002000 00000000000000b0 2**0 TEXT
+# CHECK-NEXT:   1 .init 00000004 0000000000001010 0000000000001010 00000000000000b4 2**0 TEXT
+# CHECK-NEXT:   2 .data 00000004 0000000000002000 0000000000003000 00000000000000b8 2**0 DATA
 
 !ELF
 FileHeader:
Index: llvm/test/tools/llvm-objdump/X86/macho-section-headers.test
===================================================================
--- llvm/test/tools/llvm-objdump/X86/macho-section-headers.test
+++ llvm/test/tools/llvm-objdump/X86/macho-section-headers.test
@@ -1,8 +1,8 @@
 RUN: llvm-objdump -macho -h %p/Inputs/hello.obj.macho-x86_64 | FileCheck %s
 
 CHECK: Sections:
-CHECK: Idx Name          Size     VMA              Type
-CHECK:   0 __text        0000003b 0000000000000000 TEXT 
-CHECK:   1 __cstring     0000000d 000000000000003b DATA 
-CHECK:   2 __compact_unwind 00000020 0000000000000048 DATA 
-CHECK:   3 __eh_frame    00000040 0000000000000068 DATA 
+CHECK: Idx Name          Size     VMA              File off         Algn  Type
+CHECK:   0 __text        0000003b 0000000000000000 0000000000000210 2**4  TEXT
+CHECK:   1 __cstring     0000000d 000000000000003b 000000000000024b 2**0  DATA
+CHECK:   2 __compact_unwind 00000020 0000000000000048 0000000000000258 2**3  DATA
+CHECK:   3 __eh_frame    00000040 0000000000000068 0000000000000278 2**3  DATA
Index: llvm/test/tools/llvm-objdump/X86/adjust-vma.test
===================================================================
--- llvm/test/tools/llvm-objdump/X86/adjust-vma.test
+++ llvm/test/tools/llvm-objdump/X86/adjust-vma.test
@@ -4,28 +4,16 @@
 # RUN: llvm-objdump --all-headers -D -z --adjust-vma=0x123000 %t | FileCheck %s --check-prefixes=COMMON,ADJUST
 
 # NOADJUST:      Sections:
-# NOADJUST-NEXT: Idx Name           Size     VMA              Type
-# NOADJUST-NEXT:  0                 00000000 0000000000000000
-# NOADJUST-NEXT:  1 .text           00000002 0000000000000000 TEXT
-# NOADJUST-NEXT:  2 .debug_str      00000004 0000000000000000
-# NOADJUST-NEXT:  3 .rela.debug_str 00000018 0000000000000000
-# NOADJUST-NEXT:  4 .data           00000004 0000000000000000 DATA
-# NOADJUST-NEXT:  5 .rela.data      00000018 0000000000000000
-# NOADJUST-NEXT:  6 .symtab         00000060 0000000000000000
-# NOADJUST-NEXT:  7 .strtab         00000010 0000000000000000
-# NOADJUST-NEXT:  8 .shstrtab       0000003c 0000000000000000
+# NOADJUST-NEXT: Idx Name          Size     VMA              File off         Algn  Type
+# NOADJUST-NEXT:   0 .text         00000002 0000000000000000 0000000000000040 2**2  TEXT
+# NOADJUST-NEXT:   1 .debug_str    00000004 0000000000000000 0000000000000042 2**0
+# NOADJUST-NEXT:   2 .data         00000004 0000000000000000 0000000000000060 2**0  DATA
 
 # ADJUST:        Sections:
-# ADJUST-NEXT:   Idx Name           Size     VMA              Type
-# ADJUST-NEXT:    0                 00000000 0000000000000000
-# ADJUST-NEXT:    1 .text           00000002 0000000000123000 TEXT
-# ADJUST-NEXT:    2 .debug_str      00000004 0000000000000000
-# ADJUST-NEXT:    3 .rela.debug_str 00000018 0000000000000000
-# ADJUST-NEXT:    4 .data           00000004 0000000000123000 DATA
-# ADJUST-NEXT:    5 .rela.data      00000018 0000000000000000
-# ADJUST-NEXT:    6 .symtab         00000060 0000000000000000
-# ADJUST-NEXT:    7 .strtab         00000010 0000000000000000
-# ADJUST-NEXT:    8 .shstrtab       0000003c 0000000000000000
+# ADJUST-NEXT: Idx Name          Size     VMA              File off         Algn  Type
+# ADJUST-NEXT:   0 .text         00000002 0000000000123000 0000000000000040 2**2  TEXT
+# ADJUST-NEXT:   1 .debug_str    00000004 0000000000000000 0000000000000042 2**0
+# ADJUST-NEXT:   2 .data         00000004 0000000000123000 0000000000000060 2**0  DATA
 
 # COMMON:      SYMBOL TABLE:
 # COMMON-NEXT:  0000000000000001  l F .text 00000000 func
Index: llvm/test/tools/llvm-objcopy/ELF/symtab-error-on-remove-strtab.test
===================================================================
--- llvm/test/tools/llvm-objcopy/ELF/symtab-error-on-remove-strtab.test
+++ llvm/test/tools/llvm-objcopy/ELF/symtab-error-on-remove-strtab.test
@@ -14,9 +14,9 @@
 # ERR2: error: '[[INPUT]]': string table '.strtab' cannot be removed because it is referenced by the symbol table '.symtab'
 
 # RUN: llvm-objcopy --allow-broken-links -R .strtab %t %t4
-# RUN: llvm-objdump --section-headers %t4 | FileCheck %s --check-prefix=SECTIONS --implicit-check-not=.strtab
+# RUN: llvm-readelf --section-headers %t4 | FileCheck %s --check-prefix=SECTIONS --implicit-check-not=.strtab
 # RUN: cp %t %t5
 # RUN: llvm-strip --no-strip-all --allow-broken-links -R .strtab %t %t5
-# RUN: llvm-objdump --section-headers %t5 | FileCheck %s --check-prefix=SECTIONS --implicit-check-not=.strtab
+# RUN: llvm-readelf --section-headers %t5 | FileCheck %s --check-prefix=SECTIONS --implicit-check-not=.strtab
 
 # SECTIONS: .symtab
Index: llvm/test/ObjectYAML/CodeView/sections.yaml
===================================================================
--- llvm/test/ObjectYAML/CodeView/sections.yaml
+++ llvm/test/ObjectYAML/CodeView/sections.yaml
@@ -108,5 +108,5 @@
 # CHECK:       Number:          1
 # CHECK: ...
 
-# HEADERS:   0 .debug$T      00000040 0000000000000000 DATA
-# HEADERS:   1 .debug$H      00000030 0000000000000000 DATA
+# HEADERS:   0 .debug$T      00000040 0000000000000000 0000000000000064 2**0 DATA
+# HEADERS:   1 .debug$H      00000030 0000000000000000 00000000000000a4 2**2 DATA
Index: llvm/test/Object/objdump-sectionheaders.test
===================================================================
--- llvm/test/Object/objdump-sectionheaders.test
+++ llvm/test/Object/objdump-sectionheaders.test
@@ -5,15 +5,10 @@
 # results in a way that we don't emulate.
 
 # CHECK: Sections:
-# CHECK: Idx Name          Size     VMA              Type
-# CHECK:   0               00000000 0000000000000000
-# CHECK:   1 .text         00000026 0000000000000000 TEXT
-# CHECK:   2 .rodata.str1.1 0000000d 0000000000000026 DATA
-# CHECK:   3 .note.GNU-stack 00000000 0000000000000033
-# CHECK:   4 .rela.text    00000000 0000000000000038
-# CHECK:   5 .symtab       00000018 0000000000000000
-# CHECK:   6 .strtab       00000001 0000000000000000
-# CHECK:   7 .shstrtab     00000045 0000000000000000
+# CHECK: Idx Name          Size     VMA              File off         Algn Type
+# CHECK:   0 .text         00000026 0000000000000000 0000000000000040 2**0 TEXT
+# CHECK:   1 .rodata.str1.1 0000000d 0000000000000026 0000000000000066 2**0 DATA
+# CHECK:   2 .note.GNU-stack 00000000 0000000000000033 0000000000000073 2**0
 
 --- !ELF
 FileHeader:
Index: llvm/test/Object/objdump-no-sectionheaders.test
===================================================================
--- llvm/test/Object/objdump-no-sectionheaders.test
+++ llvm/test/Object/objdump-no-sectionheaders.test
@@ -2,5 +2,5 @@
 ; RUN:              | FileCheck %s
 
 ; CHECK: Sections:
-; CHECK: Idx Name          Size      VMA              Type
+; CHECK: Idx Name Size VMA File off Algn Type
 ; CHECK-NOT: {{.}}
Index: llvm/test/MC/COFF/assoc-private.s
===================================================================
--- llvm/test/MC/COFF/assoc-private.s
+++ llvm/test/MC/COFF/assoc-private.s
@@ -5,9 +5,9 @@
 # it anyway.
 
 # CHECK: Sections:
-# CHECK: Idx Name          Size     VMA              Type
-# CHECK:   3 .rdata        00000004 0000000000000000 DATA
-# CHECK:   4 .CRT$XCU      00000008 0000000000000000 DATA
+# CHECK: Idx Name          Size     VMA              File off         Algn Type
+# CHECK:   3 .rdata        00000004 0000000000000000 00000000000000dc 2**2 DATA
+# CHECK:   4 .CRT$XCU      00000008 0000000000000000 00000000000000e0 2**3 DATA
 # CHECK: SYMBOL TABLE:
 # CHECK: [ 6](sec  4)(fl 0x00)(ty   0)(scl   3) (nx 1) 0x00000000 .rdata
 # CHECK: AUX scnlen 0x4 nreloc 0 nlnno 0 checksum 0x0 assoc 4 comdat 0
Index: lld/test/ELF/synthetic-got.s
===================================================================
--- lld/test/ELF/synthetic-got.s
+++ lld/test/ELF/synthetic-got.s
@@ -7,8 +7,8 @@
 # RUN:   | FileCheck %s --check-prefix=GOTDATA
 
 # GOT:     Sections:
-# GOT:       9 .got         00000008 00000000000001b0 DATA
-# GOT:      10 .got.plt     00000020 00000000000001b8 DATA
+# GOT:       8 .got         00000008 00000000000001b0 00000000000011b0 2**3 DATA
+# GOT:       9 .got.plt     00000020 00000000000001b8 00000000000011b8 2**3 DATA
 # GOTDATA:      Contents of section .got:
 # GOTDATA-NEXT:  01b0 00000000 00000000
 # GOTDATA-NEXT: Contents of section .got.plt:
@@ -21,7 +21,7 @@
 # RUN: llvm-objdump -s -section=.mygot %t1.out | FileCheck %s --check-prefix=MYGOTDATA
 
 # MYGOT:     Sections:
-# MYGOT:      8  .mygot     00000028 00000000000000e0 DATA
+# MYGOT:      7  .mygot     00000028 00000000000000e0 00000000000010e0 2**3 DATA
 # MYGOT-NOT:  .got
 # MYGOT-NOT:  .got.plt
 # MYGOTDATA:      00e0 00000000 00000000 08010000 00000000
Index: lld/test/ELF/strip-all.s
===================================================================
--- lld/test/ELF/strip-all.s
+++ lld/test/ELF/strip-all.s
@@ -2,24 +2,24 @@
 
 # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
 # RUN: ld.lld %t.o -o %t1
-#RUN: llvm-objdump -section-headers %t1 | FileCheck %s -check-prefix BEFORE
+#RUN: llvm-readelf --sections %t1 | FileCheck %s -check-prefix BEFORE
 #BEFORE:       .symtab
 #BEFORE-NEXT:  .shstrtab
 #BEFORE-NEXT:  .strtab
 
 #RUN: ld.lld %t.o --strip-all -o %t1
-#RUN: llvm-objdump -section-headers %t1 | FileCheck %s -check-prefix AFTER
+#RUN: llvm-readelf --sections %t1 | FileCheck %s -check-prefix AFTER
 #AFTER-NOT: .symtab
 #AFTER:     .shstrtab
 #AFTER-NOT: .strtab
 
 # Ignore --strip-all if -r is specified
 #RUN: ld.lld %t.o --strip-all -r -o %t1
-#RUN: llvm-objdump -section-headers %t1 | FileCheck %s -check-prefix BEFORE
+#RUN: llvm-readelf --sections %t1 | FileCheck %s -check-prefix BEFORE
 
 # Test alias -s
 #RUN: ld.lld %t.o -s -o %t1
-#RUN: llvm-objdump -section-headers %t1 | FileCheck %s -check-prefix AFTER
+#RUN: llvm-readelf --sections %t1 | FileCheck %s -check-prefix AFTER
 
 # RUN: not ld.lld %t.o --strip-all --emit-relocs -o /dev/null 2>&1 | FileCheck --check-prefix=ERR %s
 # ERR: error: --strip-all and --emit-relocs may not be used together
Index: lld/test/ELF/sectionstart.s
===================================================================
--- lld/test/ELF/sectionstart.s
+++ lld/test/ELF/sectionstart.s
@@ -5,11 +5,10 @@
 # RUN: llvm-objdump -section-headers %t | FileCheck %s
 
 # CHECK:      Sections:
-# CHECK-NEXT:  Idx Name          Size     VMA              Type
-# CHECK-NEXT:    0               00000000 0000000000000000
-# CHECK-NEXT:    1 .text         00000001 0000000000100000 TEXT
-# CHECK-NEXT:    2 .data         00000004 0000000000110000 DATA
-# CHECK-NEXT:    3 .bss          00000004 0000000000200000 BSS
+# CHECK-NEXT:  Idx Name          Size     VMA              File off         Algn  Type
+# CHECK-NEXT:    0 .text         00000001 0000000000100000 0000000000001000 2**2  TEXT
+# CHECK-NEXT:    1 .data         00000004 0000000000110000 0000000000002000 2**0  DATA
+# CHECK-NEXT:    2 .bss          00000004 0000000000200000 0000000000002004 2**0  BSS
 
 ## The same, but dropped "0x" prefix.
 # RUN: ld.lld %t.o --section-start .text=100000 \
Index: lld/test/ELF/sectionstart-noallochdr.s
===================================================================
--- lld/test/ELF/sectionstart-noallochdr.s
+++ lld/test/ELF/sectionstart-noallochdr.s
@@ -5,11 +5,11 @@
 # RUN: llvm-objdump -section-headers %t1 | FileCheck %s
 
 # CHECK:      Sections:
-# CHECK-NEXT:  Idx Name          Size     VMA              Type
-# CHECK-NEXT:    0               00000000 0000000000000000
-# CHECK-NEXT:    1 .text         00000001 0000000000000010 TEXT
-# CHECK-NEXT:    2 .data         00000004 0000000000000020 DATA
-# CHECK-NEXT:    3 .bss          00000004 0000000000000030 BSS
+# CHECK-NEXT:  Idx Name          Size     VMA              File off         Algn  Type
+# CHECK-NEXT:    0 .text         00000001 0000000000000010 0000000000001010 2**2  TEXT
+# CHECK-NEXT:    1 .data         00000004 0000000000000020 0000000000001020 2**0  DATA
+# CHECK-NEXT:    2 .bss          00000004 0000000000000030 0000000000001024 2**0  BSS
+
 
 .text
 .globl _start
Index: lld/test/ELF/section-name.s
===================================================================
--- lld/test/ELF/section-name.s
+++ lld/test/ELF/section-name.s
@@ -42,17 +42,14 @@
 .section .tdata.foo,"aGwT",@progbits,foo,comdat
 .byte 0
 
-// CHECK:  1 .rodata  00000002
-// CHECK:  2 .gcc_except_table 00000001
-// CHECK:  3 .text         00000002
-// CHECK:  4 .tdata        00000001
-// CHECK:  5 .tbss         00000001
-// CHECK:  6 .data.rel.ro  00000004
-// CHECK:  7 .data         00000002
-// CHECK:  8 .foo.a        00000001
-// CHECK:  9 .foo          00000001
-// CHECK: 10 .bss          00000002
-// CHECK: 11 .comment      00000008
-// CHECK: 12 .symtab       00000030
-// CHECK: 13 .shstrtab     00000075
-// CHECK: 14 .strtab       00000008
+// CHECK:  0 .rodata  00000002
+// CHECK:  1 .gcc_except_table 00000001
+// CHECK:  2 .text         00000002
+// CHECK:  3 .tdata        00000001
+// CHECK:  4 .tbss         00000001
+// CHECK:  5 .data.rel.ro  00000004
+// CHECK:  6 .data         00000002
+// CHECK:  7 .foo.a        00000001
+// CHECK:  8 .foo          00000001
+// CHECK:  9 .bss          00000002
+// CHECK: 10 .comment      00000008
Index: lld/test/ELF/relro-omagic.s
===================================================================
--- lld/test/ELF/relro-omagic.s
+++ lld/test/ELF/relro-omagic.s
@@ -7,20 +7,20 @@
 # RUN: llvm-readobj --program-headers %t | FileCheck --check-prefix=NOPHDRS %s
 
 # NORELRO:      Sections:
-# NORELRO-NEXT: Idx Name          Size     VMA              Type
-# NORELRO-NEXT:   0               00000000 0000000000000000
-# NORELRO-NEXT:   1 .dynsym       00000048 00000000002000e8
-# NORELRO-NEXT:   2 .hash         00000020 0000000000200130
-# NORELRO-NEXT:   3 .dynstr       00000021 0000000000200150
-# NORELRO-NEXT:   4 .rela.dyn     00000018 0000000000200178
-# NORELRO-NEXT:   5 .rela.plt     00000018 0000000000200190
-# NORELRO-NEXT:   6 .text         0000000a 00000000002001a8 TEXT
-# NORELRO-NEXT:   7 .plt          00000020 00000000002001c0 TEXT
-# NORELRO-NEXT:   8 .data         00000008 00000000002001e0 DATA
-# NORELRO-NEXT:   9 .foo          00000004 00000000002001e8 DATA
-# NORELRO-NEXT:  10 .dynamic      000000f0 00000000002001f0
-# NORELRO-NEXT:  11 .got          00000008 00000000002002e0 DATA
-# NORELRO-NEXT:  12 .got.plt      00000020 00000000002002e8 DATA
+# NORELRO-NEXT: Idx Name          Size     VMA              File off         Algn  Type
+# NORELRO-NEXT:   0 .dynsym       00000048 00000000002000e8 00000000000000e8 2**3
+# NORELRO-NEXT:   1 .hash         00000020 0000000000200130 0000000000000130 2**2
+# NORELRO-NEXT:   2 .dynstr       00000021 0000000000200150 0000000000000150 2**0
+# NORELRO-NEXT:   3 .rela.dyn     00000018 0000000000200178 0000000000000178 2**3
+# NORELRO-NEXT:   4 .rela.plt     00000018 0000000000200190 0000000000000190 2**3
+# NORELRO-NEXT:   5 .text         0000000a 00000000002001a8 00000000000001a8 2**2  TEXT
+# NORELRO-NEXT:   6 .plt          00000020 00000000002001c0 00000000000001c0 2**4  TEXT
+# NORELRO-NEXT:   7 .data         00000008 00000000002001e0 00000000000001e0 2**0  DATA
+# NORELRO-NEXT:   8 .foo          00000004 00000000002001e8 00000000000001e8 2**0  DATA
+# NORELRO-NEXT:   9 .dynamic      000000f0 00000000002001f0 00000000000001f0 2**3
+# NORELRO-NEXT:  10 .got          00000008 00000000002002e0 00000000000002e0 2**3  DATA
+# NORELRO-NEXT:  11 .got.plt      00000020 00000000002002e8 00000000000002e8 2**3  DATA
+# NORELRO-NEXT:  12 .comment      00000008 0000000000000000 0000000000000308 2**0
 
 # NOPHDRS:     ProgramHeaders [
 # NOPHDRS-NOT: PT_GNU_RELRO
Index: lld/test/ELF/relocatable.s
===================================================================
--- lld/test/ELF/relocatable.s
+++ lld/test/ELF/relocatable.s
@@ -53,15 +53,10 @@
 # CHECK-NEXT:  }
 
 # SECTION: Sections:
-# SECTION: Idx Name          Size     VMA              Type
-# SECTION:   0               00000000 0000000000000000
-# SECTION:   1 .text         00000056 0000000000000000 TEXT
-# SECTION:   2 .rela.text    00000090 0000000000000000
-# SECTION:   3 .bss          00000018 0000000000000000 BSS
-# SECTION:   4 .note.GNU-stack 00000000 0000000000000000
-# SECTION:   5 .symtab       00000168 0000000000000000
-# SECTION:   6 .shstrtab     00000041 0000000000000000
-# SECTION:   7 .strtab       0000002d 0000000000000000
+# SECTION: Idx Name          Size     VMA              File off         Algn  Type
+# SECTION:   0 .text         00000056 0000000000000000 0000000000000040 2**4  TEXT
+# SECTION:   1 .bss          00000018 0000000000000000 0000000000000128 2**2  BSS
+# SECTION:   2 .note.GNU-stack 00000000 0000000000000000 0000000000000128 2**0
 
 # CHECKTEXT:      Disassembly of section .text:
 # CHECKTEXT-EMPTY:
Index: lld/test/ELF/relocatable-sections.s
===================================================================
--- lld/test/ELF/relocatable-sections.s
+++ lld/test/ELF/relocatable-sections.s
@@ -1,7 +1,7 @@
 # REQUIRES: x86
 # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t1.o
 # RUN: ld.lld -r %t1.o -o %t
-# RUN: llvm-objdump -section-headers %t | FileCheck %s
+# RUN: llvm-readelf --sections %t | FileCheck %s
 
 # CHECK:      .text
 # CHECK-NEXT: .rela.text
Index: lld/test/ELF/linkerscript/wildcards2.s
===================================================================
--- lld/test/ELF/linkerscript/wildcards2.s
+++ lld/test/ELF/linkerscript/wildcards2.s
@@ -9,9 +9,8 @@
 # RUN:   FileCheck %s
 # CHECK:      Sections:
 # CHECK-NEXT:  Idx Name          Size
-# CHECK-NEXT:    0               00000000
-# CHECK-NEXT:    1 .text         00000004
-# CHECK-NEXT:    2 aabc          00000004
+# CHECK-NEXT:    0 .text         00000004
+# CHECK-NEXT:    1 aabc          00000004
 
 .text
 .section .abc,"ax",@progbits
Index: lld/test/ELF/linkerscript/wildcards.s
===================================================================
--- lld/test/ELF/linkerscript/wildcards.s
+++ lld/test/ELF/linkerscript/wildcards.s
@@ -9,15 +9,11 @@
 # RUN:   FileCheck -check-prefix=SEC-DEFAULT %s
 # SEC-DEFAULT:      Sections:
 # SEC-DEFAULT-NEXT: Idx Name          Size
-# SEC-DEFAULT-NEXT:   0               00000000
-# SEC-DEFAULT-NEXT:   1 .text         00000008
-# SEC-DEFAULT-NEXT:   2 .abcd         00000004
-# SEC-DEFAULT-NEXT:   3 .ad           00000004
-# SEC-DEFAULT-NEXT:   4 .ag           00000004
-# SEC-DEFAULT-NEXT:   5 .comment      00000008 {{[0-9a-f]*}}
-# SEC-DEFAULT-NEXT:   6 .symtab       00000030
-# SEC-DEFAULT-NEXT:   7 .shstrtab     00000038
-# SEC-DEFAULT-NEXT:   8 .strtab       00000008
+# SEC-DEFAULT-NEXT:   0 .text         00000008
+# SEC-DEFAULT-NEXT:   1 .abcd         00000004
+# SEC-DEFAULT-NEXT:   2 .ad           00000004
+# SEC-DEFAULT-NEXT:   3 .ag           00000004
+# SEC-DEFAULT-NEXT:   4 .comment      00000008 {{[0-9a-f]*}}
 
 ## Now replace the symbol with '?' and check that results are the same.
 # RUN: echo "SECTIONS { \
@@ -34,14 +30,10 @@
 # RUN:   FileCheck -check-prefix=SEC-ALL %s
 # SEC-ALL:      Sections:
 # SEC-ALL-NEXT: Idx Name          Size
-# SEC-ALL-NEXT:   0               00000000
-# SEC-ALL-NEXT:   1 .text         0000000c
-# SEC-ALL-NEXT:   2 .ad           00000004
-# SEC-ALL-NEXT:   3 .ag           00000004
-# SEC-ALL-NEXT:   4 .comment      00000008
-# SEC-ALL-NEXT:   5 .symtab       00000030
-# SEC-ALL-NEXT:   6 .shstrtab     00000032
-# SEC-ALL-NEXT:   7 .strtab       00000008
+# SEC-ALL-NEXT:   0 .text         0000000c
+# SEC-ALL-NEXT:   1 .ad           00000004
+# SEC-ALL-NEXT:   2 .ag           00000004
+# SEC-ALL-NEXT:   3 .comment      00000008
 
 ## All sections started with .a are merged.
 # RUN: echo "SECTIONS { \
@@ -51,12 +43,8 @@
 # RUN:   FileCheck -check-prefix=SEC-NO %s
 # SEC-NO: Sections:
 # SEC-NO-NEXT: Idx Name          Size
-# SEC-NO-NEXT:   0               00000000
-# SEC-NO-NEXT:   1 .text         00000014
-# SEC-NO-NEXT:   2 .comment      00000008
-# SEC-NO-NEXT:   3 .symtab       00000030
-# SEC-NO-NEXT:   4 .shstrtab     0000002a
-# SEC-NO-NEXT:   5 .strtab       00000008
+# SEC-NO-NEXT:   0 .text         00000014
+# SEC-NO-NEXT:   1 .comment      00000008
 
 .text
 .section .abc,"ax",@progbits
Index: lld/test/ELF/linkerscript/va.s
===================================================================
--- lld/test/ELF/linkerscript/va.s
+++ lld/test/ELF/linkerscript/va.s
@@ -6,10 +6,9 @@
 # RUN: llvm-objdump -section-headers %t1 | FileCheck %s
 # CHECK:      Sections:
 # CHECK-NEXT: Idx Name          Size     VMA
-# CHECK-NEXT:   0               00000000 0000000000000000
-# CHECK-NEXT:   1 .foo          00000004 0000000000000000
-# CHECK-NEXT:   2 .boo          00000004 0000000000000004
-# CHECK-NEXT:   3 .text         00000001 0000000000000008
+# CHECK-NEXT:   0 .foo          00000004 0000000000000000
+# CHECK-NEXT:   1 .boo          00000004 0000000000000004
+# CHECK-NEXT:   2 .text         00000001 0000000000000008
 
 .global _start
 _start:
Index: lld/test/ELF/linkerscript/symbol-only.test
===================================================================
--- lld/test/ELF/linkerscript/symbol-only.test
+++ lld/test/ELF/linkerscript/symbol-only.test
@@ -13,7 +13,6 @@
 
 # CHECK:      Sections:
 # CHECK-NEXT: Idx Name          Size     VMA
-# CHECK-NEXT:   0               00000000 0000000000000000
 # CHECK:          abc           00000000 [[ADDR:[0-9a-f]*]]
 # CHECK:          bar           00000000 0000000000001000
 
Index: lld/test/ELF/linkerscript/sizeof.s
===================================================================
--- lld/test/ELF/linkerscript/sizeof.s
+++ lld/test/ELF/linkerscript/sizeof.s
@@ -13,10 +13,9 @@
 # RUN: llvm-objdump -t -section-headers %t1 | FileCheck %s
 # CHECK:      Sections:
 # CHECK-NEXT:  Idx Name          Size
-# CHECK-NEXT:    0               00000000
-# CHECK-NEXT:    1 .aaa          00000008
-# CHECK-NEXT:    2 .bbb          00000010
-# CHECK-NEXT:    3 .ccc          00000018
+# CHECK-NEXT:    0 .aaa          00000008
+# CHECK-NEXT:    1 .bbb          00000010
+# CHECK-NEXT:    2 .ccc          00000018
 # CHECK:      SYMBOL TABLE:
 # CHECK-NEXT:                   .text 00000000 _start
 # CHECK-NEXT:  0000000000000008 *ABS* 00000000 _aaa
Index: lld/test/ELF/linkerscript/sections.s
===================================================================
--- lld/test/ELF/linkerscript/sections.s
+++ lld/test/ELF/linkerscript/sections.s
@@ -4,7 +4,7 @@
 # Empty SECTIONS command.
 # RUN: echo "SECTIONS {}" > %t.script
 # RUN: ld.lld -o %t1 --script %t.script %t
-# RUN: llvm-objdump -section-headers %t1 | \
+# RUN: llvm-readelf --sections %t1 | \
 # RUN:   FileCheck -check-prefix=SEC-DEFAULT %s
 
 # SECTIONS command with the same order as default.
@@ -12,18 +12,18 @@
 # RUN:          .text : { *(.text) } \
 # RUN:          .data : { *(.data) } }" > %t.script
 # RUN: ld.lld -o %t2 --script %t.script %t
-# RUN: llvm-objdump -section-headers %t2 | \
+# RUN: llvm-readelf --sections %t2 | \
 # RUN:   FileCheck -check-prefix=SEC-DEFAULT %s
 
-#             Idx Name          Size
-# SEC-DEFAULT: 1 .text         0000000e {{[0-9a-f]*}} TEXT
-# SEC-DEFAULT: 2 .data         00000020 {{[0-9a-f]*}} DATA
-# SEC-DEFAULT: 3 other         00000003 {{[0-9a-f]*}} DATA
-# SEC-DEFAULT: 4 .bss          00000002 {{[0-9a-f]*}} BSS
-# SEC-DEFAULT: 5 .comment      00000008 {{[0-9a-f]*}}
-# SEC-DEFAULT: 6 .symtab       00000030 {{[0-9a-f]*}}
-# SEC-DEFAULT: 7 .shstrtab     0000003b {{[0-9a-f]*}}
-# SEC-DEFAULT: 8 .strtab       00000008 {{[0-9a-f]*}}
+#              [Nr] Name      Type     Address       Off           Size
+# SEC-DEFAULT: [ 1] .text     PROGBITS {{[0-9a-f]*}} {{[0-9a-f]*}} 00000e
+# SEC-DEFAULT: [ 2] .data     PROGBITS {{[0-9a-f]*}} {{[0-9a-f]*}} 000020
+# SEC-DEFAULT: [ 3] other     PROGBITS {{[0-9a-f]*}} {{[0-9a-f]*}} 000003
+# SEC-DEFAULT: [ 4] .bss      NOBITS   {{[0-9a-f]*}} {{[0-9a-f]*}} 000002
+# SEC-DEFAULT: [ 5] .comment  PROGBITS {{[0-9a-f]*}} {{[0-9a-f]*}} 000008
+# SEC-DEFAULT: [ 6] .symtab   SYMTAB   {{[0-9a-f]*}} {{[0-9a-f]*}} 000030
+# SEC-DEFAULT: [ 7] .shstrtab STRTAB   {{[0-9a-f]*}} {{[0-9a-f]*}} 00003b
+# SEC-DEFAULT: [ 8] .strtab   STRTAB   {{[0-9a-f]*}} {{[0-9a-f]*}} 000008
 
 # Sections are put in order specified in linker script, other than alloc
 # sections going first.
@@ -36,36 +36,36 @@
 # RUN:          .data : { *(.data) } \
 # RUN:          .text : { *(.text) } }" > %t.script
 # RUN: ld.lld -o %t3 --script %t.script %t
-# RUN: llvm-objdump -section-headers %t3 | \
+# RUN: llvm-readelf --sections %t3 | \
 # RUN:   FileCheck -check-prefix=SEC-ORDER %s
 
-#           Idx Name          Size
-# SEC-ORDER: 1 .bss          00000002 {{[0-9a-f]*}} BSS
-# SEC-ORDER: 2 other         00000003 {{[0-9a-f]*}} DATA
-# SEC-ORDER: 3 .shstrtab     0000003b {{[0-9a-f]*}}
-# SEC-ORDER: 4 .symtab       00000030 {{[0-9a-f]*}}
-# SEC-ORDER: 5 .strtab       00000008 {{[0-9a-f]*}}
-# SEC-ORDER: 6 .comment      00000008 {{[0-9a-f]*}}
-# SEC-ORDER: 7 .data         00000020 {{[0-9a-f]*}} DATA
-# SEC-ORDER: 8 .text         0000000e {{[0-9a-f]*}} TEXT
+#            [Nr] Name      Type     Address       Off           Size
+# SEC-ORDER: [ 1] .bss      NOBITS   {{[0-9a-f]*}} {{[0-9a-f]*}} 000002
+# SEC-ORDER: [ 2] other     PROGBITS {{[0-9a-f]*}} {{[0-9a-f]*}} 000003
+# SEC-ORDER: [ 3] .shstrtab STRTAB   {{[0-9a-f]*}} {{[0-9a-f]*}} 00003b
+# SEC-ORDER: [ 4] .symtab   SYMTAB   {{[0-9a-f]*}} {{[0-9a-f]*}} 000030
+# SEC-ORDER: [ 5] .strtab   STRTAB   {{[0-9a-f]*}} {{[0-9a-f]*}} 000008
+# SEC-ORDER: [ 6] .comment  PROGBITS {{[0-9a-f]*}} {{[0-9a-f]*}} 000008
+# SEC-ORDER: [ 7] .data     PROGBITS {{[0-9a-f]*}} {{[0-9a-f]*}} 000020
+# SEC-ORDER: [ 8] .text     PROGBITS {{[0-9a-f]*}} {{[0-9a-f]*}} 00000e
 
 # .text and .data have swapped names but proper sizes and types.
 # RUN: echo "SECTIONS { \
 # RUN:          .data : { *(.text) } \
 # RUN:          .text : { *(.data) } }" > %t.script
 # RUN: ld.lld -o %t4 --script %t.script %t
-# RUN: llvm-objdump -section-headers %t4 | \
+# RUN: llvm-readelf --sections %t4 | \
 # RUN:   FileCheck -check-prefix=SEC-SWAP-NAMES %s
 
-#                Idx Name          Size
-# SEC-SWAP-NAMES: 1 .data         0000000e {{[0-9a-f]*}} TEXT
-# SEC-SWAP-NAMES: 2 .text         00000020 {{[0-9a-f]*}} DATA
-# SEC-SWAP-NAMES: 3 other         00000003 {{[0-9a-f]*}} DATA
-# SEC-SWAP-NAMES: 4 .bss          00000002 {{[0-9a-f]*}} BSS
-# SEC-SWAP-NAMES: 5 .comment      00000008 {{[0-9a-f]*}}
-# SEC-SWAP-NAMES: 6 .symtab       00000030 {{[0-9a-f]*}}
-# SEC-SWAP-NAMES: 7 .shstrtab     0000003b {{[0-9a-f]*}}
-# SEC-SWAP-NAMES: 8 .strtab       00000008 {{[0-9a-f]*}}
+#                 [Nr] Name      Type     Address       Off           Size
+# SEC-SWAP-NAMES: [ 1] .data     PROGBITS {{[0-9a-f]*}} {{[0-9a-f]*}} 00000e
+# SEC-SWAP-NAMES: [ 2] .text     PROGBITS {{[0-9a-f]*}} {{[0-9a-f]*}} 000020
+# SEC-SWAP-NAMES: [ 3] other     PROGBITS {{[0-9a-f]*}} {{[0-9a-f]*}} 000003
+# SEC-SWAP-NAMES: [ 4] .bss      NOBITS   {{[0-9a-f]*}} {{[0-9a-f]*}} 000002
+# SEC-SWAP-NAMES: [ 5] .comment  PROGBITS {{[0-9a-f]*}} {{[0-9a-f]*}} 000008
+# SEC-SWAP-NAMES: [ 6] .symtab   SYMTAB   {{[0-9a-f]*}} {{[0-9a-f]*}} 000030
+# SEC-SWAP-NAMES: [ 7] .shstrtab STRTAB   {{[0-9a-f]*}} {{[0-9a-f]*}} 00003b
+# SEC-SWAP-NAMES: [ 8] .strtab   STRTAB   {{[0-9a-f]*}} {{[0-9a-f]*}} 000008
 
 # Multiple SECTIONS command specifying additional input section descriptions
 # for the same output section description - input sections are merged into
@@ -76,18 +76,18 @@
 # RUN:       SECTIONS { \
 # RUN:          .data : { *(other) } }" > %t.script
 # RUN: ld.lld -o %t6 --script %t.script %t
-# RUN: llvm-objdump -section-headers %t6 | \
+# RUN: llvm-readelf --sections %t6 | \
 # RUN:   FileCheck -check-prefix=SEC-MULTI %s
 
-#           Idx Name          Size
-# SEC-MULTI:      1 .text         0000000e {{[0-9a-f]*}} TEXT
-# SEC-MULTI-NEXT:   .data         00000020 {{[0-9a-f]*}} DATA
-# SEC-MULTI-NEXT:   .data         00000003 {{[0-9a-f]*}} DATA
-# SEC-MULTI-NEXT:   .bss          00000002 {{[0-9a-f]*}} BSS
-# SEC-MULTI-NEXT:   .comment      00000008 {{[0-9a-f]*}}
-# SEC-MULTI-NEXT:   .symtab       00000030 {{[0-9a-f]*}}
-# SEC-MULTI-NEXT:   .shstrtab     00000035 {{[0-9a-f]*}}
-# SEC-MULTI-NEXT:   .strtab       00000008 {{[0-9a-f]*}}
+#                 [Nr] Name      Type     Address       Off           Size
+# SEC-MULTI:      [ 1] .text     PROGBITS {{[0-9a-f]*}} {{[0-9a-f]*}} 00000e
+# SEC-MULTI-NEXT: [ 2] .data     PROGBITS {{[0-9a-f]*}} {{[0-9a-f]*}} 000020
+# SEC-MULTI-NEXT: [ 3] .data     PROGBITS {{[0-9a-f]*}} {{[0-9a-f]*}} 000003
+# SEC-MULTI-NEXT: [ 4] .bss      NOBITS   {{[0-9a-f]*}} {{[0-9a-f]*}} 000002
+# SEC-MULTI-NEXT: [ 5] .comment  PROGBITS {{[0-9a-f]*}} {{[0-9a-f]*}} 000008
+# SEC-MULTI-NEXT: [ 6] .symtab   SYMTAB   {{[0-9a-f]*}} {{[0-9a-f]*}} 000030
+# SEC-MULTI-NEXT: [ 7] .shstrtab STRTAB   {{[0-9a-f]*}} {{[0-9a-f]*}} 000035
+# SEC-MULTI-NEXT: [ 8] .strtab   STRTAB   {{[0-9a-f]*}} {{[0-9a-f]*}} 000008
 
 # Input section pattern contains additional semicolon.
 # Case found in linux kernel script. Check we are able to parse it.
Index: lld/test/ELF/linkerscript/sections-sort.s
===================================================================
--- lld/test/ELF/linkerscript/sections-sort.s
+++ lld/test/ELF/linkerscript/sections-sort.s
@@ -14,14 +14,10 @@
 .byte 0
 
 # CHECK: Idx
-# CHECK-NEXT: 0
-# CHECK-NEXT: 1 .text
-# CHECK-NEXT: 2 .dynsym
-# CHECK-NEXT: 3 .hash
-# CHECK-NEXT: 4 .dynstr
-# CHECK-NEXT: 5 foo
-# CHECK-NEXT: 6 .dynamic
-# CHECK-NEXT: 7 .comment
-# CHECK-NEXT: 8 .symtab
-# CHECK-NEXT: 9 .shstrtab
-# CHECK-NEXT: 10 .strtab
+# CHECK-NEXT: 0 .text
+# CHECK-NEXT: 1 .dynsym
+# CHECK-NEXT: 2 .hash
+# CHECK-NEXT: 3 .dynstr
+# CHECK-NEXT: 4 foo
+# CHECK-NEXT: 5 .dynamic
+# CHECK-NEXT: 6 .comment
Index: lld/test/ELF/linkerscript/sections-keep.s
===================================================================
--- lld/test/ELF/linkerscript/sections-keep.s
+++ lld/test/ELF/linkerscript/sections-keep.s
@@ -12,9 +12,8 @@
 # RUN:   FileCheck -check-prefix=SECGC %s
 # SECGC:      Sections:
 # SECGC-NEXT: Idx Name          Size
-# SECGC-NEXT:   0               00000000
-# SECGC-NEXT:   1 .text         00000007
-# SECGC-NEXT:   2 .temp         00000004
+# SECGC-NEXT:   0 .text         00000007
+# SECGC-NEXT:   1 .temp         00000004
 
 ## Now apply KEEP command to preserve the section.
 # RUN: echo "SECTIONS { \
@@ -26,10 +25,9 @@
 # RUN:   FileCheck -check-prefix=SECNOGC %s
 # SECNOGC:      Sections:
 # SECNOGC-NEXT: Idx Name          Size
-# SECNOGC-NEXT:   0               00000000
-# SECNOGC-NEXT:   1 .text         00000007
-# SECNOGC-NEXT:   2 .keep         00000004
-# SECNOGC-NEXT:   3 .temp         00000004
+# SECNOGC-NEXT:   0 .text         00000007
+# SECNOGC-NEXT:   1 .keep         00000004
+# SECNOGC-NEXT:   2 .temp         00000004
 
 ## A section name matches two entries in the SECTIONS directive. The
 ## first one doesn't have KEEP, the second one does. If section that have
@@ -42,14 +40,10 @@
 # RUN: llvm-objdump -section-headers %t | FileCheck -check-prefix=MIXED1 %s
 # MIXED1:      Sections:
 # MIXED1-NEXT: Idx Name          Size
-# MIXED1-NEXT:   0               00000000
-# MIXED1-NEXT:   1 .keep         00000004
-# MIXED1-NEXT:   2 .temp         00000004 00000000000000ec
-# MIXED1-NEXT:   3 .text         00000007 00000000000000f0
-# MIXED1-NEXT:   4 .comment      00000008 0000000000000000
-# MIXED1-NEXT:   5 .symtab       00000060 0000000000000000
-# MIXED1-NEXT:   6 .shstrtab     00000036 0000000000000000
-# MIXED1-NEXT:   7 .strtab       00000012 0000000000000000
+# MIXED1-NEXT:   0 .keep         00000004
+# MIXED1-NEXT:   1 .temp         00000004 00000000000000ec
+# MIXED1-NEXT:   2 .text         00000007 00000000000000f0
+# MIXED1-NEXT:   3 .comment      00000008 0000000000000000
 
 ## The same, but now section without KEEP is at first place.
 ## gold and bfd linkers disagree here. gold collects .keep while
@@ -63,14 +57,10 @@
 # RUN: llvm-objdump -section-headers %t | FileCheck -check-prefix=MIXED2 %s
 # MIXED2:      Sections:
 # MIXED2-NEXT: Idx Name          Size
-# MIXED2-NEXT:   0               00000000
-# MIXED2-NEXT:   1 .nokeep       00000004 00000000000000e8
-# MIXED2-NEXT:   2 .temp         00000004 00000000000000ec
-# MIXED2-NEXT:   3 .text         00000007 00000000000000f0
-# MIXED2-NEXT:   4 .comment      00000008 0000000000000000
-# MIXED2-NEXT:   5 .symtab       00000060 0000000000000000
-# MIXED2-NEXT:   6 .shstrtab     00000038 0000000000000000
-# MIXED2-NEXT:   7 .strtab       00000012 0000000000000000
+# MIXED2-NEXT:   0 .nokeep       00000004 00000000000000e8
+# MIXED2-NEXT:   1 .temp         00000004 00000000000000ec
+# MIXED2-NEXT:   2 .text         00000007 00000000000000f0
+# MIXED2-NEXT:   3 .comment      00000008 0000000000000000
 
 # Check file pattern for kept sections.
 # RUN: echo "SECTIONS { \
Index: lld/test/ELF/linkerscript/sections-gc2.s
===================================================================
--- lld/test/ELF/linkerscript/sections-gc2.s
+++ lld/test/ELF/linkerscript/sections-gc2.s
@@ -8,14 +8,10 @@
 # RUN: ld.lld -T %t.script -o %t.so %t.o --gc-sections
 # RUN: llvm-objdump -h %t.so | FileCheck %s
 
-# CHECK: Idx Name          Size      VMA          Type
-# CHECK-NEXT:  0
+# CHECK: Idx Name Size VMA File off Algn Type
 # CHECK-NEXT:    used_in_reloc
 # CHECK-NEXT:    .text
 # CHECK-NEXT:    .comment
-# CHECK-NEXT:    .symtab
-# CHECK-NEXT:    .shstrtab
-# CHECK-NEXT:    .strtab
 
         .global _start
 _start:
Index: lld/test/ELF/linkerscript/sections-constraint.s
===================================================================
--- lld/test/ELF/linkerscript/sections-constraint.s
+++ lld/test/ELF/linkerscript/sections-constraint.s
@@ -8,7 +8,6 @@
 # RUN:   FileCheck -check-prefix=BASE %s
 # BASE: Sections:
 # BASE-NEXT: Idx Name          Size
-# BASE-NEXT:   0               00000000
 # BASE:   .writable     00000004
 # BASE:   .readable     00000004
 
@@ -21,7 +20,6 @@
 # RUN:   FileCheck -check-prefix=NO1 %s
 # NO1: Sections:
 # NO1-NEXT: Idx Name          Size
-# NO1-NEXT: 0               00000000
 # NO1:  .writable     00000004
 # NO1:  .foo.2        00000004
 # NO1:  .readable     00000004
Index: lld/test/ELF/linkerscript/section-include.test
===================================================================
--- lld/test/ELF/linkerscript/section-include.test
+++ lld/test/ELF/linkerscript/section-include.test
@@ -8,16 +8,16 @@
 # RUN: echo "" > %t.inc
 # RUN: ld.lld -o %t.elf --script %s %t.o -L %T
 # RUN: llvm-objdump -section-headers %t.elf | FileCheck %s --check-prefix=CHECK1
-# CHECK1:      .data         00000008 0000000000002000 DATA
-# CHECK1-NEXT: .data3        00000008 0000000000002008 DATA
+# CHECK1:      .data         00000008 0000000000002000 0000000000002000 2**0 DATA
+# CHECK1-NEXT: .data3        00000008 0000000000002008 0000000000002008 2**0 DATA
 
 ## Non-empty include file.
 # RUN: echo ".data2 : { QUAD(0) } > RAM" > %t.inc
 # RUN: ld.lld -o %t.elf --script %s %t.o -L %T
 # RUN: llvm-objdump -section-headers %t.elf | FileCheck %s --check-prefix=CHECK2
-# CHECK2:      .data         00000008 0000000000002000 DATA
-# CHECK2-NEXT: .data2        00000008 0000000000002008 DATA
-# CHECK2-NEXT: .data3        00000008 0000000000002010 DATA
+# CHECK2:      .data         00000008 0000000000002000 0000000000002000 2**0 DATA
+# CHECK2-NEXT: .data2        00000008 0000000000002008 0000000000002008 2**0 DATA
+# CHECK2-NEXT: .data3        00000008 0000000000002010 0000000000002010 2**0 DATA
 
 MEMORY {
   ROM (rwx): ORIGIN = 0x1000, LENGTH = 0x100
Index: lld/test/ELF/linkerscript/repsection-va.s
===================================================================
--- lld/test/ELF/linkerscript/repsection-va.s
+++ lld/test/ELF/linkerscript/repsection-va.s
@@ -5,7 +5,7 @@
 # RUN: ld.lld -o %t1 --script %t.script %t
 # RUN: llvm-objdump -section-headers %t1 | FileCheck %s
 # CHECK:      Sections:
-# CHECK-NEXT: Idx Name          Size     VMA          Type
+# CHECK-NEXT: Idx Name Size VMA File off Algn Type
 # CHECK-NOT: .foo
 # CHECK:  .foo          00000008 {{.*}} DATA
 # CHECK-NOT: .foo
Index: lld/test/ELF/linkerscript/region-alias.s
===================================================================
--- lld/test/ELF/linkerscript/region-alias.s
+++ lld/test/ELF/linkerscript/region-alias.s
@@ -15,16 +15,16 @@
 # RUN: echo "REGION_ALIAS (\"ALIAS_DATA\", RAM);" >> %t.script.inc
 # RUN: ld.lld %t --script %t.script -o %t2
 # RUN: llvm-objdump -section-headers %t2 | FileCheck %s
-# CHECK: .text       00000001 0000000000001000 TEXT
-# CHECK: .data       00000008 0000000000002000 DATA
+# CHECK: .text       00000001 0000000000001000 0000000000001000 2**2 TEXT
+# CHECK: .data       00000008 0000000000002000 0000000000002000 2**0 DATA
 
 ## All to ROM.
 # RUN: echo "REGION_ALIAS (\"ALIAS_TEXT\", ROM);" > %t.script.inc
 # RUN: echo "REGION_ALIAS (\"ALIAS_DATA\", ROM);" >> %t.script.inc
 # RUN: ld.lld %t --script %t.script -o %t2
 # RUN: llvm-objdump -section-headers %t2 | FileCheck %s --check-prefix=RAM
-# RAM: .text         00000001 0000000000001000 TEXT
-# RAM: .data         00000008 0000000000001001 DATA
+# RAM: .text         00000001 0000000000001000 0000000000001000 2**2 TEXT
+# RAM: .data         00000008 0000000000001001 0000000000001001 2**0 DATA
 
 ## Redefinition of region.
 # RUN: echo "REGION_ALIAS (\"ROM\", ROM);" > %t.script.inc
Index: lld/test/ELF/linkerscript/output-section-include.test
===================================================================
--- lld/test/ELF/linkerscript/output-section-include.test
+++ lld/test/ELF/linkerscript/output-section-include.test
@@ -8,13 +8,13 @@
 # RUN: echo "" > %t.inc
 # RUN: ld.lld -o %t.elf --script %s %t.o -L %T
 # RUN: llvm-objdump -section-headers %t.elf | FileCheck %s --check-prefix=CHECK1
-# CHECK1: .data         00000008 0000000000002000 DATA
+# CHECK1: .data         00000008 0000000000002000 0000000000002000 2**0 DATA
 
 ## Non-empty include file.
 # RUN: echo "QUAD(0)" > %t.inc
 # RUN: ld.lld -o %t.elf --script %s %t.o -L %T
 # RUN: llvm-objdump -section-headers %t.elf | FileCheck %s --check-prefix=CHECK2
-# CHECK2: .data         00000010 0000000000002000 DATA
+# CHECK2: .data         00000010 0000000000002000 0000000000002000 2**0 DATA
 
 MEMORY {
   ROM (rwx): ORIGIN = 0x1000, LENGTH = 0x100
Index: lld/test/ELF/linkerscript/out-of-order.s
===================================================================
--- lld/test/ELF/linkerscript/out-of-order.s
+++ lld/test/ELF/linkerscript/out-of-order.s
@@ -22,14 +22,13 @@
 # must take responsibility to make sure this does not happen.
 
 # CHECK:      Sections:
-# CHECK-NEXT: Idx Name          Size     VMA              Type
-# CHECK-NEXT:   0               00000000 0000000000000000
-# CHECK-NEXT:   1 .dynamic      00000060 0000000000000000
-# CHECK-NEXT:   2 .data         00000008 0000000000004000
-# CHECK-NEXT:   3 .dynsym       00000018 0000000000002000
-# CHECK-NEXT:   4 .dynstr       00000001 0000000000002018
-# CHECK-NEXT:   5 .hash         00000010 000000000000201c
-# CHECK-NEXT:   6 .text         00000008 000000000000202c
+# CHECK-NEXT: Idx Name          Size     VMA              File off Algn Type
+# CHECK-NEXT:   0 .dynamic      00000060 0000000000000000
+# CHECK-NEXT:   1 .data         00000008 0000000000004000
+# CHECK-NEXT:   2 .dynsym       00000018 0000000000002000
+# CHECK-NEXT:   3 .dynstr       00000001 0000000000002018
+# CHECK-NEXT:   4 .hash         00000010 000000000000201c
+# CHECK-NEXT:   5 .text         00000008 000000000000202c
 
 .quad 0
 .data
Index: lld/test/ELF/linkerscript/out-of-order-section-in-region.test
===================================================================
--- lld/test/ELF/linkerscript/out-of-order-section-in-region.test
+++ lld/test/ELF/linkerscript/out-of-order-section-in-region.test
@@ -5,8 +5,8 @@
 # RUN: ld.lld %t --script %s -o %t2
 
 # RUN: llvm-objdump -section-headers %t2 | FileCheck %s
-# CHECK: .aaa 00000008 0000000000001008 DATA
-# CHECK: .bbb 00000008 0000000000001000 DATA
+# CHECK: .aaa 00000008 0000000000001008 0000000000001008 2**0 DATA
+# CHECK: .bbb 00000008 0000000000001000 0000000000001000 2**0 DATA
 
 MEMORY {
   REGION (rwx) : ORIGIN = 0x1000, LENGTH = 0x100
Index: lld/test/ELF/linkerscript/orphans.s
===================================================================
--- lld/test/ELF/linkerscript/orphans.s
+++ lld/test/ELF/linkerscript/orphans.s
@@ -13,15 +13,13 @@
 
 # TEXTORPHAN:      Sections:
 # TEXTORPHAN-NEXT: Idx Name
-# TEXTORPHAN-NEXT:   0
-# TEXTORPHAN-NEXT:   1 .text
-# TEXTORPHAN-NEXT:   2 .writable
+# TEXTORPHAN-NEXT:   0 .text
+# TEXTORPHAN-NEXT:   1 .writable
 
 # WRITABLEORPHAN:      Sections:
 # WRITABLEORPHAN-NEXT: Idx Name
-# WRITABLEORPHAN-NEXT:   0
-# WRITABLEORPHAN-NEXT:   1 .text
-# WRITABLEORPHAN-NEXT:   2 .writable
+# WRITABLEORPHAN-NEXT:   0 .text
+# WRITABLEORPHAN-NEXT:   1 .writable
 
 .global _start
 _start:
Index: lld/test/ELF/linkerscript/orphan.s
===================================================================
--- lld/test/ELF/linkerscript/orphan.s
+++ lld/test/ELF/linkerscript/orphan.s
@@ -12,13 +12,12 @@
 ## .jcr is a relro section and should be placed before other RW sections.
 ## .bss is SHT_NOBITS section and should be last RW section, so some space
 ## in ELF file could be saved.
-# CHECK:       0               00000000 0000000000000000
-# CHECK-NEXT:  1 .text         00000000 0000000000000000 TEXT
-# CHECK-NEXT:  2 .jcr          00000008 0000000000000000 DATA
-# CHECK-NEXT:  3 .rw1          00000008 0000000000000008 DATA
-# CHECK-NEXT:  4 .rw2          00000008 0000000000000010 DATA
-# CHECK-NEXT:  5 .rw3          00000008 0000000000000018 DATA
-# CHECK-NEXT:  6 .bss          00000008 0000000000000020 BSS
+# CHECK:       0 .text         00000000 0000000000000000 0000000000001000 2**2 TEXT
+# CHECK-NEXT:  1 .jcr          00000008 0000000000000000 0000000000001000 2**0 DATA
+# CHECK-NEXT:  2 .rw1          00000008 0000000000000008 0000000000001008 2**0 DATA
+# CHECK-NEXT:  3 .rw2          00000008 0000000000000010 0000000000001010 2**0 DATA
+# CHECK-NEXT:  4 .rw3          00000008 0000000000000018 0000000000001018 2**0 DATA
+# CHECK-NEXT:  5 .bss          00000008 0000000000000020 0000000000001020 2**0 BSS
 
 .section .rw1, "aw"
  .quad 0
Index: lld/test/ELF/linkerscript/numbers.s
===================================================================
--- lld/test/ELF/linkerscript/numbers.s
+++ lld/test/ELF/linkerscript/numbers.s
@@ -19,13 +19,12 @@
 
 # CHECK:     Sections:
 # CHECK-NEXT: Idx Name          Size     VMA
-# CHECK-NEXT:   0               00000000 0000000000000000
-# CHECK-NEXT:   1 .hex1         00000008 0000000000001000
-# CHECK-NEXT:   2 .hex2         00000008 0000000000001010
-# CHECK-NEXT:   3 .kilo1        00000008 0000000000002800
-# CHECK-NEXT:   4 .kilo2        00000008 0000000000002c00
-# CHECK-NEXT:   5 .mega1        00000008 0000000000100000
-# CHECK-NEXT:   6 .mega2        00000008 0000000000200000
+# CHECK-NEXT:   0 .hex1         00000008 0000000000001000
+# CHECK-NEXT:   1 .hex2         00000008 0000000000001010
+# CHECK-NEXT:   2 .kilo1        00000008 0000000000002800
+# CHECK-NEXT:   3 .kilo2        00000008 0000000000002c00
+# CHECK-NEXT:   4 .mega1        00000008 0000000000100000
+# CHECK-NEXT:   5 .mega2        00000008 0000000000200000
 
 ## Mailformed number errors.
 # RUN: echo "SECTIONS { . = 0x11h; }" > %t2.script
@@ -68,9 +67,8 @@
 # RUN: llvm-objdump -section-headers %t6 | FileCheck -check-prefix=SECADDR %s
 # SECADDR:     Sections:
 # SECADDR-NEXT: Idx Name          Size     VMA
-# SECADDR-NEXT:   0               00000000 0000000000000000
-# SECADDR-NEXT:   1 .hex1         00000008 0000000000000400
-# SECADDR-NEXT:   2 .hex2         00000008 0000000000000500
+# SECADDR-NEXT:   0 .hex1         00000008 0000000000000400
+# SECADDR-NEXT:   1 .hex2         00000008 0000000000000500
 
 .globl _start
 _start:
Index: lld/test/ELF/linkerscript/non-absolute2.test
===================================================================
--- lld/test/ELF/linkerscript/non-absolute2.test
+++ lld/test/ELF/linkerscript/non-absolute2.test
@@ -10,8 +10,7 @@
 
 # CHECK:       Sections:
 # CHECK-NEXT:  Idx Name          Size     VMA
-# CHECK-NEXT:    0               00000000 0000000000000000
-# CHECK-NEXT:    1 .dynsym       00000030 0000000000001000
-# CHECK:         5 .text         00000000 000000000000106c
+# CHECK-NEXT:    0 .dynsym       00000030 0000000000001000
+# CHECK:         4 .text         00000000 000000000000106c
 
 # CHECK: 0000000000000001         .dynsym            00000000 A
Index: lld/test/ELF/linkerscript/multi-sections-constraint.s
===================================================================
--- lld/test/ELF/linkerscript/multi-sections-constraint.s
+++ lld/test/ELF/linkerscript/multi-sections-constraint.s
@@ -8,8 +8,8 @@
 # RUN: llvm-objdump -section-headers %t1 | FileCheck %s
 
 # CHECK:      Sections:
-# CHECK-NEXT: Idx Name          Size      VMA          Type
-# CHECK: .aaa          00000010 0000000000002000 DATA
+# CHECK-NEXT: Idx Name Size VMA File off Algn Type
+# CHECK: .aaa          00000010 0000000000002000 0000000000002000 2**0 DATA
 
 
 # RUN: echo "SECTIONS { \
@@ -20,8 +20,8 @@
 # RUN: llvm-objdump -section-headers %t2 | FileCheck %s --check-prefix=REV
 
 # REV:      Sections:
-# REV-NEXT: Idx Name          Size       VMA          Type
-# REV:  .aaa          00000010 0000000000001000 DATA
+# REV-NEXT: Idx Name Size VMA File off Algn Type
+# REV:  .aaa          00000010 0000000000001000 0000000000002000 2**0 DATA
 
 .global _start
 _start:
Index: lld/test/ELF/linkerscript/memory5.test
===================================================================
--- lld/test/ELF/linkerscript/memory5.test
+++ lld/test/ELF/linkerscript/memory5.test
@@ -4,8 +4,8 @@
 # RUN: ld.lld -o %t.so --script %s %t.o
 # RUN: llvm-objdump -section-headers %t.so | FileCheck %s
 
-# CHECK:      1 .text         00000001 0000000000042000
-# CHECK-NEXT: 2 .data         00000001 0000000000042001
+# CHECK:      0 .text         00000001 0000000000042000
+# CHECK-NEXT: 1 .data         00000001 0000000000042001
 
 ## Test that assigning to Dot does not change the position in a memory region.
 
Index: lld/test/ELF/linkerscript/memory4.test
===================================================================
--- lld/test/ELF/linkerscript/memory4.test
+++ lld/test/ELF/linkerscript/memory4.test
@@ -4,8 +4,8 @@
 # RUN: ld.lld -o %t.so --script %s %t.o
 # RUN: llvm-objdump -section-headers %t.so | FileCheck %s
 
-# CHECK:      1 .text         00000001 0000000000042000
-# CHECK-NEXT: 2 .data         00000001 0000000000042400
+# CHECK:      0 .text         00000001 0000000000042000
+# CHECK-NEXT: 1 .data         00000001 0000000000042400
 
 ## Test that address expressions changes the position in a memory region.
 
Index: lld/test/ELF/linkerscript/memory3.s
===================================================================
--- lld/test/ELF/linkerscript/memory3.s
+++ lld/test/ELF/linkerscript/memory3.s
@@ -15,8 +15,7 @@
 ## Check we place .text into first defined memory region with appropriate flags.
 # CHECK: Sections:
 # CHECK: Idx Name  Size     VMA
-# CHECK:   0       00000000 0000000000000000
-# CHECK:   1 .text 00000001 0000000000001000
+# CHECK:   0 .text 00000001 0000000000001000
 
 .section .text.foo,"ax",%progbits
 foo:
Index: lld/test/ELF/linkerscript/memory.s
===================================================================
--- lld/test/ELF/linkerscript/memory.s
+++ lld/test/ELF/linkerscript/memory.s
@@ -11,8 +11,8 @@
 # RUN: ld.lld -o %t1 --script %t.script %t
 # RUN: llvm-objdump -section-headers %t1 | FileCheck -check-prefix=RAM %s
 
-# RAM:       1 .text         00000001 0000000000008000 TEXT
-# RAM-NEXT:  2 .data         00001000 0000000000008001 DATA
+# RAM:       0 .text         00000001 0000000000008000 0000000000001000 2**2 TEXT
+# RAM-NEXT:  1 .data         00001000 0000000000008001 0000000000001001 2**0 DATA
 
 ## Check RAM and ROM memory regions.
 
@@ -27,8 +27,8 @@
 # RUN: ld.lld -o %t1 --script %t.script %t
 # RUN: llvm-objdump -section-headers %t1 | FileCheck -check-prefix=RAMROM %s
 
-# RAMROM:       1 .text         00000001 0000000080000000 TEXT
-# RAMROM-NEXT:  2 .data         00001000 0000000000000000 DATA
+# RAMROM:       0 .text         00000001 0000000080000000 0000000000001000 2**2 TEXT
+# RAMROM-NEXT:  1 .data         00001000 0000000000000000 0000000000002000 2**0 DATA
 
 ## Check memory region placement by attributes.
 
@@ -43,8 +43,8 @@
 # RUN: ld.lld -o %t1 --script %t.script %t
 # RUN: llvm-objdump -section-headers %t1 | FileCheck -check-prefix=ATTRS %s
 
-# ATTRS:  1 .text         00000001 0000000080000000 TEXT
-# ATTRS:  2 .data         00001000 0000000000000000 DATA
+# ATTRS:  0 .text         00000001 0000000080000000 0000000000001000 2**2 TEXT
+# ATTRS:  1 .data         00001000 0000000000000000 0000000000002000 2**0 DATA
 
 ## Check bad `ORIGIN`.
 
Index: lld/test/ELF/linkerscript/memory-include.test
===================================================================
--- lld/test/ELF/linkerscript/memory-include.test
+++ lld/test/ELF/linkerscript/memory-include.test
@@ -7,8 +7,8 @@
 # RUN: echo "RAM2 (rwx): ORIGIN = 0x3000, LENGTH = 0x100" > %t.inc
 # RUN: ld.lld -o %t.elf --script %s %t.o -L %T
 # RUN: llvm-objdump -section-headers %t.elf | FileCheck %s
-# CHECK: .data         00000008 0000000000002000 DATA
-# CHECK: .data2        00000008 0000000000003000 DATA
+# CHECK: .data         00000008 0000000000002000 0000000000002000 2**0 DATA
+# CHECK: .data2        00000008 0000000000003000 0000000000003000 2**0 DATA
 
 MEMORY {
   ROM (rwx): ORIGIN = 0x1000, LENGTH = 0x100
Index: lld/test/ELF/linkerscript/insert-before.test
===================================================================
--- lld/test/ELF/linkerscript/insert-before.test
+++ lld/test/ELF/linkerscript/insert-before.test
@@ -16,12 +16,11 @@
 # RUN: ld.lld %t1.o -o %t1 --script %p/Inputs/insert-after.script --script %s
 # RUN: llvm-objdump -section-headers %t1 | FileCheck %s
 # CHECK:      Sections:
-# CHECK-NEXT: Idx Name          Size     VMA         Type
-# CHECK-NEXT:   0               00000000 0000000000000000
-# CHECK-NEXT:   1 .foo.text     00000008 0000000000000000 TEXT
-# CHECK-NEXT:   2 .text         00000008 0000000000000008 TEXT
-# CHECK-NEXT:   3 .foo.data     00000008 0000000000000010 DATA
-# CHECK-NEXT:   4 .data         00000008 0000000000000018 DATA
+# CHECK-NEXT: Idx Name          Size     VMA              File off         Algn Type
+# CHECK-NEXT:   0 .foo.text     00000008 0000000000000000 0000000000001000 2**0 TEXT
+# CHECK-NEXT:   1 .text         00000008 0000000000000008 0000000000001008 2**2 TEXT
+# CHECK-NEXT:   2 .foo.data     00000008 0000000000000010 0000000000001010 2**0 DATA
+# CHECK-NEXT:   3 .data         00000008 0000000000000018 0000000000001018 2**0 DATA
 
 # RUN: not ld.lld %t1.o -o %t1 --script %s 2>&1 \
 # RUN:   | FileCheck %s --check-prefix=ERR
Index: lld/test/ELF/linkerscript/insert-after.test
===================================================================
--- lld/test/ELF/linkerscript/insert-after.test
+++ lld/test/ELF/linkerscript/insert-after.test
@@ -16,12 +16,11 @@
 # RUN: ld.lld %t1.o -o %t1 --script %p/Inputs/insert-after.script --script %s
 # RUN: llvm-objdump -section-headers %t1 | FileCheck %s
 # CHECK:      Sections:
-# CHECK-NEXT: Idx Name          Size     VMA              Type
-# CHECK-NEXT:   0               00000000 0000000000000000
-# CHECK-NEXT:   1 .text         00000008 0000000000000000 TEXT
-# CHECK-NEXT:   2 .foo.text     00000008 0000000000000008 TEXT
-# CHECK-NEXT:   3 .data         00000008 0000000000000010 DATA
-# CHECK-NEXT:   4 .foo.data     00000008 0000000000000018 DATA
+# CHECK-NEXT: Idx Name          Size     VMA              File off         Algn Type
+# CHECK-NEXT:   0 .text         00000008 0000000000000000 0000000000001000 2**2 TEXT
+# CHECK-NEXT:   1 .foo.text     00000008 0000000000000008 0000000000001008 2**0 TEXT
+# CHECK-NEXT:   2 .data         00000008 0000000000000010 0000000000001010 2**0 DATA
+# CHECK-NEXT:   3 .foo.data     00000008 0000000000000018 0000000000001018 2**0 DATA
 
 # RUN: not ld.lld %t1.o -o %t1 --script %s 2>&1 \
 # RUN:   | FileCheck %s --check-prefix=ERR
Index: lld/test/ELF/linkerscript/input-sec-dup.s
===================================================================
--- lld/test/ELF/linkerscript/input-sec-dup.s
+++ lld/test/ELF/linkerscript/input-sec-dup.s
@@ -6,9 +6,8 @@
 # RUN: llvm-objdump -section-headers %t1 | FileCheck %s
 # CHECK:      Sections:
 # CHECK-NEXT: Idx Name          Size
-# CHECK-NEXT:   0               00000000
-# CHECK-NEXT:   1 .foo          00000004
-# CHECK-NEXT:   2 .text         00000001
+# CHECK-NEXT:   0 .foo          00000004
+# CHECK-NEXT:   1 .text         00000001
 
 .global _start
 _start:
Index: lld/test/ELF/linkerscript/expr-sections.test
===================================================================
--- lld/test/ELF/linkerscript/expr-sections.test
+++ lld/test/ELF/linkerscript/expr-sections.test
@@ -13,7 +13,7 @@
   }
 };
 
-# CHECK:  5 .text         00000000 000000000000014c
+# CHECK:  4 .text         00000000 000000000000014c
 
 # CHECK: 000000000000014d         .text		 00000000 foo1
 # CHECK: 000000000000014d         .text		 00000000 bar1
Index: lld/test/ELF/linkerscript/emit-reloc-section-names.s
===================================================================
--- lld/test/ELF/linkerscript/emit-reloc-section-names.s
+++ lld/test/ELF/linkerscript/emit-reloc-section-names.s
@@ -2,7 +2,7 @@
 # RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t.o
 # RUN: echo "SECTIONS { .text.zed : { *(.text.foo) } .text.qux : { *(.text.bar) } }" > %t.script
 # RUN: ld.lld -T %t.script --emit-relocs %t.o -o %t
-# RUN: llvm-objdump -section-headers %t | FileCheck %s
+# RUN: llvm-readelf --sections %t | FileCheck %s
 
 ## Check we name relocation sections in according to
 ## their target sections names.
Index: lld/test/ELF/linkerscript/eh-frame-emit-relocs.s
===================================================================
--- lld/test/ELF/linkerscript/eh-frame-emit-relocs.s
+++ lld/test/ELF/linkerscript/eh-frame-emit-relocs.s
@@ -2,7 +2,7 @@
 # RUN: echo "SECTIONS { .foo : { *(.eh_frame) } }" > %t.script
 # RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t.o
 # RUN: ld.lld --emit-relocs %t.o -T %t.script -o %t
-# RUN: llvm-objdump -section-headers %t | FileCheck %s
+# RUN: llvm-readelf --sections %t | FileCheck %s
 
 # CHECK-NOT: eh_frame
 # CHECK:     .rela.foo
Index: lld/test/ELF/linkerscript/double-bss.test
===================================================================
--- lld/test/ELF/linkerscript/double-bss.test
+++ lld/test/ELF/linkerscript/double-bss.test
@@ -3,8 +3,8 @@
 # RUN:   | llvm-mc -filetype=obj -triple=x86_64-unknown-linux - -o %t
 # RUN: ld.lld -o %t1 --script %s %t
 # RUN: llvm-objdump -section-headers %t1 | FileCheck %s
-# CHECK:      .bss1          00000004 0000000000000122 BSS
-# CHECK-NEXT: .bss2          00000080 0000000000000128 BSS
+# CHECK:      .bss1          00000004 0000000000000122 0000000000000122 2**0 BSS
+# CHECK-NEXT: .bss2          00000080 0000000000000128 0000000000000122 2**3 BSS
 
 SECTIONS {
   . = SIZEOF_HEADERS;
Index: lld/test/ELF/linkerscript/define.test
===================================================================
--- lld/test/ELF/linkerscript/define.test
+++ lld/test/ELF/linkerscript/define.test
@@ -10,6 +10,6 @@
   .bar : { *(.bar*) }
 }
 
-# CHECK: 1 .foo  00000008 0000000000011000 DATA
-# CHECK: 2 .bar  00000008 0000000000013000 DATA
-# CHECK: 3 .text 00000000 0000000000013008 TEXT
+# CHECK: 0 .foo  00000008 0000000000011000 0000000000001000 2**0 DATA
+# CHECK: 1 .bar  00000008 0000000000013000 0000000000003000 2**0 DATA
+# CHECK: 2 .text 00000000 0000000000013008 0000000000003008 2**2 TEXT
Index: lld/test/ELF/linkerscript/constructor.test
===================================================================
--- lld/test/ELF/linkerscript/constructor.test
+++ lld/test/ELF/linkerscript/constructor.test
@@ -6,8 +6,7 @@
 # RUN: llvm-objdump -section-headers %t1 | FileCheck %s
 # CHECK:      Sections:
 # CHECK-NEXT: Idx Name          Size
-# CHECK-NEXT:   0               00000000
-# CHECK-NEXT:   1 foo           00000001
+# CHECK-NEXT:   0 foo           00000001
 
 SECTIONS {
   foo : {
Index: lld/test/ELF/linkerscript/at2.test
===================================================================
--- lld/test/ELF/linkerscript/at2.test
+++ lld/test/ELF/linkerscript/at2.test
@@ -49,10 +49,9 @@
 
 # SECTIONS:      Sections:
 # SECTIONS-NEXT: Idx Name          Size     VMA
-# SECTIONS-NEXT:   0               00000000 0000000000000000
-# SECTIONS-NEXT:   1 .foo1         00000008 0000000000002000
-# SECTIONS-NEXT:   2 .foo2         00000008 0000000000002008
-# SECTIONS-NEXT:   3 .text         00000000 0000000000002010
-# SECTIONS-NEXT:   4 .bar1         00000008 0000000000003000
-# SECTIONS-NEXT:   5 .bar2         00000008 0000000000003008
-# SECTIONS-NEXT:   6 .bar3         00000008 0000000000003010
+# SECTIONS-NEXT:   0 .foo1         00000008 0000000000002000
+# SECTIONS-NEXT:   1 .foo2         00000008 0000000000002008
+# SECTIONS-NEXT:   2 .text         00000000 0000000000002010
+# SECTIONS-NEXT:   3 .bar1         00000008 0000000000003000
+# SECTIONS-NEXT:   4 .bar2         00000008 0000000000003008
+# SECTIONS-NEXT:   5 .bar3         00000008 0000000000003010
Index: lld/test/ELF/linkerscript/align3.test
===================================================================
--- lld/test/ELF/linkerscript/align3.test
+++ lld/test/ELF/linkerscript/align3.test
@@ -11,8 +11,7 @@
 }
 
 # CHECK:      Sections:
-# CHECK-NEXT: Idx Name          Size     VMA              Type
-# CHECK-NEXT:   0               00000000 0000000000000000
-# CHECK-NEXT:   1 .aaa          00000008 0000000000010000 DATA
-# CHECK-NEXT:   2 .bbb          00000008 0000000000011000 DATA
-# CHECK-NEXT:   3 .ccc          00000008 0000000000014000 DATA
+# CHECK-NEXT: Idx Name          Size     VMA              File off         Algn  Type
+# CHECK-NEXT:   0 .aaa          00000008 0000000000010000 0000000000004000 2**0  DATA
+# CHECK-NEXT:   1 .bbb          00000008 0000000000011000 0000000000005000 2**12  DATA
+# CHECK-NEXT:   2 .ccc          00000008 0000000000014000 0000000000008000 2**14  DATA
Index: lld/test/ELF/linkerscript/align2.test
===================================================================
--- lld/test/ELF/linkerscript/align2.test
+++ lld/test/ELF/linkerscript/align2.test
@@ -13,8 +13,7 @@
 }
 
 # CHECK:      Sections:
-# CHECK-NEXT: Idx Name          Size     VMA              Type
-# CHECK-NEXT:   0               00000000 0000000000000000
-# CHECK-NEXT:   1 .aaa          00000008 0000000000010000 DATA
-# CHECK-NEXT:   2 .bbb          00000008 0000000000011000 DATA
-# CHECK-NEXT:   3 .ccc          00000008 0000000000014000 DATA
+# CHECK-NEXT: Idx Name          Size     VMA              File off         Algn Type
+# CHECK-NEXT:   0 .aaa          00000008 0000000000010000 0000000000001000 2**0 DATA
+# CHECK-NEXT:   1 .bbb          00000008 0000000000011000 0000000000002000 2**0 DATA
+# CHECK-NEXT:   2 .ccc          00000008 0000000000014000 0000000000005000 2**0 DATA
Index: lld/test/ELF/linkerscript/align1.test
===================================================================
--- lld/test/ELF/linkerscript/align1.test
+++ lld/test/ELF/linkerscript/align1.test
@@ -13,11 +13,10 @@
 }
 
 # CHECK:      Sections:
-# CHECK-NEXT: Idx Name          Size     VMA              Type
-# CHECK-NEXT:   0               00000000 0000000000000000
-# CHECK-NEXT:   1 .aaa          00000008 0000000000010000 DATA
-# CHECK-NEXT:   2 .bbb          00000008 0000000000011000 DATA
-# CHECK-NEXT:   3 .ccc          00000008 0000000000014000 DATA
+# CHECK-NEXT: Idx Name          Size     VMA              File off         Algn  Type
+# CHECK-NEXT:   0 .aaa          00000008 0000000000010000 0000000000001000 2**0  DATA
+# CHECK-NEXT:   1 .bbb          00000008 0000000000011000 0000000000002000 2**0  DATA
+# CHECK-NEXT:   2 .ccc          00000008 0000000000014000 0000000000005000 2**0  DATA
 
 ## Check that ALIGN zero do nothing and does not crash #1.
 # RUN: echo "SECTIONS { . = ALIGN(0x123, 0); .aaa : { *(.aaa) } }" > %t.script
@@ -25,9 +24,11 @@
 # RUN: llvm-objdump -section-headers %t4 | FileCheck %s -check-prefix=ZERO
 
 # ZERO:      Sections:
-# ZERO-NEXT: Idx Name          Size     VMA              Type
-# ZERO-NEXT:   0               00000000 0000000000000000
-# ZERO-NEXT:   1 .aaa          00000008 0000000000000123 DATA
+# ZERO-NEXT: Idx Name          Size     VMA              File off         Algn  Type
+# ZERO-NEXT:   0 .aaa          00000008 0000000000000123 0000000000000123 2**0  DATA
+# ZERO-NEXT:   1 .bbb          00000008 000000000000012b 000000000000012b 2**0  DATA
+# ZERO-NEXT:   2 .ccc          00000008 0000000000000133 0000000000000133 2**0  DATA
+
 
 ## Check that ALIGN zero do nothing and does not crash #2.
 # RUN: echo "SECTIONS { . = 0x123; . = ALIGN(0); .aaa : { *(.aaa) } }" > %t.script
Index: lld/test/ELF/linkerscript/align-empty.test
===================================================================
--- lld/test/ELF/linkerscript/align-empty.test
+++ lld/test/ELF/linkerscript/align-empty.test
@@ -14,9 +14,8 @@
 
 # CHECK:      Sections:
 # CHECK-NEXT: Idx Name          Size     VMA
-# CHECK-NEXT:   0               00000000 0000000000000000
-# CHECK-NEXT:   1 .dynsym       00000018 0000000000000190
-# CHECK-NEXT:   2 .gnu.hash     0000001c 00000000000001a8
-# CHECK-NEXT:   3 .hash         00000010 00000000000001c4
-# CHECK-NEXT:   4 .dynstr       00000001 00000000000001d4
-# CHECK-NEXT:   5 foo           00000001 0000000000001000
+# CHECK-NEXT:   0 .dynsym       00000018 0000000000000190
+# CHECK-NEXT:   1 .gnu.hash     0000001c 00000000000001a8
+# CHECK-NEXT:   2 .hash         00000010 00000000000001c4
+# CHECK-NEXT:   3 .dynstr       00000001 00000000000001d4
+# CHECK-NEXT:   4 foo           00000001 0000000000001000
Index: lld/test/ELF/linkerscript/addr.test
===================================================================
--- lld/test/ELF/linkerscript/addr.test
+++ lld/test/ELF/linkerscript/addr.test
@@ -4,12 +4,11 @@
 # RUN: llvm-objdump -section-headers %t1 | FileCheck %s
 
 # CHECK:      Sections:
-# CHECK-NEXT: Idx Name          Size     VMA              Type
-# CHECK-NEXT:   0               00000000 0000000000000000
-# CHECK-NEXT:   1 .text         00000000 0000000000001000 TEXT
-# CHECK-NEXT:   2 .foo.1        00000008 0000000000001000 DATA
-# CHECK-NEXT:   3 .foo.2        00000008 0000000000001100 DATA
-# CHECK-NEXT:   4 .foo.3        00000008 0000000000001108 DATA
+# CHECK-NEXT: Idx Name          Size     VMA              File off         Algn  Type
+# CHECK-NEXT:   0 .text         00000000 0000000000001000 0000000000001000 2**2  TEXT
+# CHECK-NEXT:   1 .foo.1        00000008 0000000000001000 0000000000001000 2**0  DATA
+# CHECK-NEXT:   2 .foo.2        00000008 0000000000001100 0000000000001100 2**0  DATA
+# CHECK-NEXT:   3 .foo.3        00000008 0000000000001108 0000000000001108 2**0  DATA
 
 SECTIONS {
   . = 0x1000;
Index: lld/test/ELF/invalid-fde-rel.s
===================================================================
--- lld/test/ELF/invalid-fde-rel.s
+++ lld/test/ELF/invalid-fde-rel.s
@@ -33,4 +33,4 @@
         .long 0x0
         .long 0x0
 
-// CHECK:  1 .eh_frame     0000001c
+// CHECK:  0 .eh_frame     0000001c
Index: lld/test/ELF/init_fini_priority.s
===================================================================
--- lld/test/ELF/init_fini_priority.s
+++ lld/test/ELF/init_fini_priority.s
@@ -4,16 +4,16 @@
 // RUN: ld.lld %t -o %t.exe
 // RUN: llvm-objdump -s %t.exe | FileCheck %s
 
-// OBJ:       3 .init_array
-// OBJ-NEXT:  4 .init_array.100
-// OBJ-NEXT:  5 .init_array.5
-// OBJ-NEXT:  6 .init_array
-// OBJ-NEXT:  7 .init_array
-// OBJ-NEXT:  8 .fini_array
-// OBJ-NEXT:  9 .fini_array.100
-// OBJ-NEXT: 10 .fini_array.5
-// OBJ-NEXT: 11 .fini_array
-// OBJ-NEXT: 12 .fini_array
+// OBJ:       1 .init_array
+// OBJ-NEXT:  2 .init_array.100
+// OBJ-NEXT:  3 .init_array.5
+// OBJ-NEXT:  4 .init_array
+// OBJ-NEXT:  5 .init_array
+// OBJ-NEXT:  6 .fini_array
+// OBJ-NEXT:  7 .fini_array.100
+// OBJ-NEXT:  8 .fini_array.5
+// OBJ-NEXT:  9 .fini_array
+// OBJ-NEXT: 10 .fini_array
 
 .globl _start
 _start:
Index: lld/test/ELF/gc-sections-metadata.s
===================================================================
--- lld/test/ELF/gc-sections-metadata.s
+++ lld/test/ELF/gc-sections-metadata.s
@@ -4,14 +4,11 @@
 # RUN: ld.lld --gc-sections %t.o -o %t
 # RUN: llvm-objdump -section-headers %t | FileCheck  %s
 
-# CHECK:      1 .foo1
+# CHECK:      0 .foo1
 # CHECK-NEXT:   bar1
 # CHECK-NEXT:   .zed1
 # CHECK-NEXT:   .text
 # CHECK-NEXT:   .comment
-# CHECK-NEXT:   .symtab
-# CHECK-NEXT:   .shstrtab
-# CHECK-NEXT:   .strtab
 
 .global _start
 _start:
Index: lld/test/ELF/emit-relocs-gc.s
===================================================================
--- lld/test/ELF/emit-relocs-gc.s
+++ lld/test/ELF/emit-relocs-gc.s
@@ -3,7 +3,7 @@
 
 ## Show that we emit .rela.bar and .rela.text when GC is disabled.
 # RUN: ld.lld --emit-relocs %t.o -o %t
-# RUN: llvm-objdump %t -section-headers | FileCheck %s --check-prefix=NOGC
+# RUN: llvm-readelf %t --sections | FileCheck %s --check-prefix=NOGC
 # NOGC: .rela.text
 # NOGC: .rela.bar
 
@@ -13,7 +13,7 @@
 # RUN:   | FileCheck --check-prefix=MSG %s
 # MSG: removing unused section {{.*}}.o:(.bar)
 # MSG: removing unused section {{.*}}.o:(.rela.bar)
-# RUN: llvm-objdump %t -section-headers | FileCheck %s --check-prefix=GC
+# RUN: llvm-readelf %t --sections | FileCheck %s --check-prefix=GC
 # GC-NOT:  rela.bar
 # GC:      rela.text
 # GC-NOT:  rela.bar
Index: lld/test/ELF/edata-no-bss.s
===================================================================
--- lld/test/ELF/edata-no-bss.s
+++ lld/test/ELF/edata-no-bss.s
@@ -6,7 +6,7 @@
 # RUN: ld.lld %t.o -o %t --gc-sections
 # RUN: llvm-objdump -t -section-headers %t | FileCheck %s
 
-# CHECK: .data         00000008 000000000020215c DATA
+# CHECK: .data         00000008 000000000020215c 000000000000015c 2**0 DATA
 
 # CHECK: 0000000000202164         .data                 00000000 _edata
 
Index: lld/test/ELF/edata-etext.s
===================================================================
--- lld/test/ELF/edata-etext.s
+++ lld/test/ELF/edata-etext.s
@@ -12,11 +12,10 @@
 ## 3) Address of _end is different from _edata because of 2.
 ## 4) Addresses of _edata == edata, _end == end and _etext == etext.
 # CHECK:      Sections:
-# CHECK-NEXT:  Idx Name          Size     VMA              Type
-# CHECK-NEXT:    0               00000000 0000000000000000
-# CHECK-NEXT:    1 .text         00000001 0000000000201158 TEXT
-# CHECK-NEXT:    2 .data         00000002 0000000000202159 DATA
-# CHECK-NEXT:    3 .bss          00000006 000000000020215c BSS
+# CHECK-NEXT: Idx Name          Size     VMA              File off         Algn  Type
+# CHECK-NEXT:   0 .text         00000001 0000000000201158 0000000000000158 2**2  TEXT
+# CHECK-NEXT:   1 .data         00000002 0000000000202159 0000000000000159 2**0  DATA
+# CHECK-NEXT:   2 .bss          00000006 000000000020215c 000000000000015b 2**2  BSS
 # CHECK:      SYMBOL TABLE:
 # CHECK-NEXT:  000000000020215b         .data 00000000 _edata
 # CHECK-NEXT:  0000000000202162         .bss  00000000 _end
Index: lld/test/ELF/bss-start-common.s
===================================================================
--- lld/test/ELF/bss-start-common.s
+++ lld/test/ELF/bss-start-common.s
@@ -6,8 +6,8 @@
 ## Test __bss_start is defined at the start of .bss
 
 # CHECK: Sections:
-# CHECK: Idx Name          Size     VMA                 Type
-# CHECK:   2 .bss          00000004 [[ADDR:[0-za-f]+]]  BSS
+# CHECK: Idx Name          Size      VMA               File off        Algn Type
+# CHECK:   1 .bss          00000004 [[ADDR:[0-9a-f]+]] {{[0-9a-f]+}} 2**2 BSS
 # CHECK: SYMBOL TABLE:
 # CHECK: [[ADDR]]          .bss 00000000 __bss_start
 
Index: clang/test/Modules/pch_container.m
===================================================================
--- clang/test/Modules/pch_container.m
+++ clang/test/Modules/pch_container.m
@@ -6,14 +6,13 @@
 // RUN: %clang_cc1 -triple=x86_64-windows-coff -fmodules -fmodule-format=obj -fimplicit-module-maps -fdisable-module-hash -fmodules-cache-path=%t-COFF -F %S/Inputs %s
 // RUN: %clang_cc1 -triple=x86_64-apple-darwin -fmodules -fmodule-format=raw -fimplicit-module-maps -fdisable-module-hash -fmodules-cache-path=%t-raw -F %S/Inputs %s
 
-
 // RUN: llvm-objdump --section-headers %t-MachO/DependsOnModule.pcm %t-ELF/DependsOnModule.pcm %t-COFF/DependsOnModule.pcm | FileCheck %s
 // CHECK: file format Mach-O 64-bit x86-64
-// CHECK: __clangast   {{[0-9a-f]+}} {{[0-9a-f]+}} DATA
+// CHECK: __clangast   {{[0-9a-f]+}} {{[0-9a-f]+}} {{[0-9a-f]+}} 2**{{[0-9]+}} DATA
 // CHECK: file format ELF64-x86-64
-// CHECK: __clangast   {{[0-9a-f]+}} {{[0-9a-f]+}} DATA
+// CHECK: __clangast   {{[0-9a-f]+}} {{[0-9a-f]+}} {{[0-9a-f]+}} 2**{{[0-9]+}} DATA
 // CHECK: file format COFF-x86-64
-// CHECK: clangast   {{[0-9a-f]+}} {{[0-9a-f]+}}
+// CHECK: clangast   {{[0-9a-f]+}} {{[0-9a-f]+}} {{[0-9a-f]+}} 2**{{[0-9]+}} DATA
 
 // RUN: not llvm-objdump --section-headers %t-raw/DependsOnModule.pcm
 
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
  • [PATCH] D68669: [llvm-obj... Jordan Rupprecht via Phabricator via cfe-commits

Reply via email to