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