[llvm] r356037 - [ELF] Fix GCC8 warnings about "fall through", NFCI
Jonas Hahnfeld via llvm-commits
llvm-commits at lists.llvm.org
Wed Mar 13 03:38:17 PDT 2019
Author: hahnfeld
Date: Wed Mar 13 03:38:17 2019
New Revision: 356037
URL: http://llvm.org/viewvc/llvm-project?rev=356037&view=rev
Log:
[ELF] Fix GCC8 warnings about "fall through", NFCI
Add break statements in Object/ELF.cpp since the code should consider the
generic tags for Hexagon, MIPS, and PPC. Add a test (copied from llvm-readobj)
to show that this works correctly (earlier versions of this patch would have
asserted).
The warnings in X86ELFObjectWriter.cpp are actually false-positives since
the nested switch() handles all possible values and returns in all cases.
Make this explicit by adding llvm_unreachable's.
Differential Revision: https://reviews.llvm.org/D58837
Added:
llvm/trunk/test/tools/llvm-objdump/elf-dynamic-section-machine-specific.test
llvm/trunk/test/tools/llvm-readobj/Inputs/elf-dynamic-tags-machine-specific.yaml
Modified:
llvm/trunk/lib/Object/ELF.cpp
llvm/trunk/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp
llvm/trunk/test/tools/llvm-readobj/elf-dynamic-tags-machine-specific.test
Modified: llvm/trunk/lib/Object/ELF.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Object/ELF.cpp?rev=356037&r1=356036&r2=356037&view=diff
==============================================================================
--- llvm/trunk/lib/Object/ELF.cpp (original)
+++ llvm/trunk/lib/Object/ELF.cpp Wed Mar 13 03:38:17 2019
@@ -438,6 +438,7 @@ std::string ELFFile<ELFT>::getDynamicTag
#include "llvm/BinaryFormat/DynamicTags.def"
#undef HEXAGON_DYNAMIC_TAG
}
+ break;
case ELF::EM_MIPS:
switch (Type) {
@@ -445,6 +446,7 @@ std::string ELFFile<ELFT>::getDynamicTag
#include "llvm/BinaryFormat/DynamicTags.def"
#undef MIPS_DYNAMIC_TAG
}
+ break;
case ELF::EM_PPC64:
switch (Type) {
@@ -452,6 +454,7 @@ std::string ELFFile<ELFT>::getDynamicTag
#include "llvm/BinaryFormat/DynamicTags.def"
#undef PPC64_DYNAMIC_TAG
}
+ break;
}
#undef DYNAMIC_TAG
switch (Type) {
Modified: llvm/trunk/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp?rev=356037&r1=356036&r2=356037&view=diff
==============================================================================
--- llvm/trunk/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp (original)
+++ llvm/trunk/lib/Target/X86/MCTargetDesc/X86ELFObjectWriter.cpp Wed Mar 13 03:38:17 2019
@@ -113,6 +113,7 @@ static unsigned getRelocType64(MCContext
case RT64_8:
return IsPCRel ? ELF::R_X86_64_PC8 : ELF::R_X86_64_8;
}
+ llvm_unreachable("unexpected relocation type!");
case MCSymbolRefExpr::VK_GOT:
switch (Type) {
case RT64_64:
@@ -124,6 +125,7 @@ static unsigned getRelocType64(MCContext
case RT64_8:
llvm_unreachable("Unimplemented");
}
+ llvm_unreachable("unexpected relocation type!");
case MCSymbolRefExpr::VK_GOTOFF:
assert(Type == RT64_64);
assert(!IsPCRel);
@@ -140,6 +142,7 @@ static unsigned getRelocType64(MCContext
case RT64_8:
llvm_unreachable("Unimplemented");
}
+ llvm_unreachable("unexpected relocation type!");
case MCSymbolRefExpr::VK_DTPOFF:
assert(!IsPCRel);
switch (Type) {
@@ -152,6 +155,7 @@ static unsigned getRelocType64(MCContext
case RT64_8:
llvm_unreachable("Unimplemented");
}
+ llvm_unreachable("unexpected relocation type!");
case MCSymbolRefExpr::VK_SIZE:
assert(!IsPCRel);
switch (Type) {
@@ -164,6 +168,7 @@ static unsigned getRelocType64(MCContext
case RT64_8:
llvm_unreachable("Unimplemented");
}
+ llvm_unreachable("unexpected relocation type!");
case MCSymbolRefExpr::VK_TLSCALL:
return ELF::R_X86_64_TLSDESC_CALL;
case MCSymbolRefExpr::VK_TLSDESC:
@@ -196,6 +201,7 @@ static unsigned getRelocType64(MCContext
case X86::reloc_riprel_4byte_movq_load:
return ELF::R_X86_64_REX_GOTPCRELX;
}
+ llvm_unreachable("unexpected relocation type!");
}
}
@@ -233,6 +239,7 @@ static unsigned getRelocType32(MCContext
case RT32_8:
return IsPCRel ? ELF::R_386_PC8 : ELF::R_386_8;
}
+ llvm_unreachable("unexpected relocation type!");
case MCSymbolRefExpr::VK_GOT:
assert(Type == RT32_32);
if (IsPCRel)
Added: llvm/trunk/test/tools/llvm-objdump/elf-dynamic-section-machine-specific.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-objdump/elf-dynamic-section-machine-specific.test?rev=356037&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-objdump/elf-dynamic-section-machine-specific.test (added)
+++ llvm/trunk/test/tools/llvm-objdump/elf-dynamic-section-machine-specific.test Wed Mar 13 03:38:17 2019
@@ -0,0 +1,77 @@
+# Test that hexagon machine-specific tags can be dumped.
+# RUN: yaml2obj --docnum=1 -o %t.hex \
+# RUN: %S/../llvm-readobj/Inputs/elf-dynamic-tags-machine-specific.yaml
+# RUN: llvm-objdump -p %t.hex | FileCheck %s --check-prefix=HEXAGON
+
+# HEXAGON: Dynamic Section:
+# HEXAGON-NEXT: HASH 0x0000000000001000
+# HEXAGON-NEXT: HEXAGON_SYMSZ 0x0000000000000010
+# HEXAGON-NEXT: HEXAGON_VER 0x0000000000001000
+# HEXAGON-NEXT: HEXAGON_PLT 0x0000000000001000
+# HEXAGON-NEXT: <unknown:>0x1234abcd 0x0000000000000001
+
+
+# Test that MIPS machine-specific tags can be dumped.
+# RUN: yaml2obj --docnum=2 -o %t.mips \
+# RUN: %S/../llvm-readobj/Inputs/elf-dynamic-tags-machine-specific.yaml
+# RUN: llvm-objdump -p %t.mips | FileCheck %s --check-prefix=MIPS
+
+# MIPS: Dynamic Section:
+# MIPS-NEXT: HASH 0x0000000000001000
+# MIPS-NEXT: MIPS_RLD_VERSION 0x0000000012345678
+# MIPS-NEXT: MIPS_TIME_STAMP 0x0000000011223344
+# MIPS-NEXT: MIPS_ICHECKSUM 0x0000000011112222
+# MIPS-NEXT: MIPS_IVERSION 0x0000000000000001
+# MIPS-NEXT: MIPS_FLAGS 0x0000000011111111
+# MIPS-NEXT: MIPS_BASE_ADDRESS 0x0000000087654321
+# MIPS-NEXT: MIPS_MSYM 0x0000000000001000
+# MIPS-NEXT: MIPS_CONFLICT 0x0000000000001000
+# MIPS-NEXT: MIPS_LIBLIST 0x0000000000001000
+# MIPS-NEXT: MIPS_LOCAL_GOTNO 0x0000000000000001
+# MIPS-NEXT: MIPS_CONFLICTNO 0x0000000000000001
+# MIPS-NEXT: MIPS_LIBLISTNO 0x0000000000000001
+# MIPS-NEXT: MIPS_SYMTABNO 0x0000000000000001
+# MIPS-NEXT: MIPS_UNREFEXTNO 0x0000000000000000
+# MIPS-NEXT: MIPS_GOTSYM 0x0000000000000000
+# MIPS-NEXT: MIPS_HIPAGENO 0x0000000088776655
+# MIPS-NEXT: MIPS_RLD_MAP 0x0000000000001000
+# MIPS-NEXT: MIPS_DELTA_CLASS 0x0000000000001000
+# MIPS-NEXT: MIPS_DELTA_CLASS_NO 0x0000000000000001
+# MIPS-NEXT: MIPS_DELTA_INSTANCE 0x0000000000001000
+# MIPS-NEXT: MIPS_DELTA_INSTANCE_NO0x0000000000000001
+# MIPS-NEXT: MIPS_DELTA_RELOC 0x0000000000001000
+# MIPS-NEXT: MIPS_DELTA_RELOC_NO 0x0000000000000001
+# MIPS-NEXT: MIPS_DELTA_SYM 0x0000000000001000
+# MIPS-NEXT: MIPS_DELTA_SYM_NO 0x0000000000000001
+# MIPS-NEXT: MIPS_DELTA_CLASSSYM 0x0000000000001000
+# MIPS-NEXT: MIPS_DELTA_CLASSSYM_NO0x0000000000000001
+# MIPS-NEXT: MIPS_CXX_FLAGS 0x0000000088887777
+# MIPS-NEXT: MIPS_PIXIE_INIT 0x0000000000001000
+# MIPS-NEXT: MIPS_LOCALPAGE_GOTIDX0x0000000000000001
+# MIPS-NEXT: MIPS_LOCAL_GOTIDX 0x0000000000000001
+# MIPS-NEXT: MIPS_HIDDEN_GOTIDX 0x0000000000000001
+# MIPS-NEXT: MIPS_PROTECTED_GOTIDX0x0000000000000001
+# MIPS-NEXT: MIPS_OPTIONS 0x0000000000001000
+# MIPS-NEXT: MIPS_INTERFACE 0x0000000000001000
+# MIPS-NEXT: MIPS_DYNSTR_ALIGN 0x0000000088888888
+# MIPS-NEXT: MIPS_INTERFACE_SIZE 0x0000000000000010
+# MIPS-NEXT: MIPS_RLD_TEXT_RESOLVE_ADDR0x0000000000000008
+# MIPS-NEXT: MIPS_PERF_SUFFIX 0x0000000000000000
+# MIPS-NEXT: MIPS_COMPACT_SIZE 0x0000000000000010
+# MIPS-NEXT: MIPS_GP_VALUE 0x0000000000000001
+# MIPS-NEXT: MIPS_AUX_DYNAMIC 0x0000000000001000
+# MIPS-NEXT: MIPS_PLTGOT 0x0000000000001000
+# MIPS-NEXT: MIPS_RWPLT 0x0000000000001000
+# MIPS-NEXT: MIPS_RLD_MAP_REL 0x0000000000001000
+# MIPS-NEXT: <unknown:>0x1234abcd 0x0000000000000001
+
+
+# Test that PPC64 machine-specific tags can be dumped.
+# RUN: yaml2obj --docnum=3 -o %t.ppc \
+# RUN: %S/../llvm-readobj/Inputs/elf-dynamic-tags-machine-specific.yaml
+# RUN: llvm-objdump -p %t.ppc | FileCheck %s --check-prefix=PPC
+
+# PPC: Dynamic Section:
+# PPC-NEXT: HASH 0x0000000000001000
+# PPC-NEXT: PPC64_GLINK 0x0000000000001000
+# PPC-NEXT: <unknown:>0x1234abcd 0x0000000000000001
Added: llvm/trunk/test/tools/llvm-readobj/Inputs/elf-dynamic-tags-machine-specific.yaml
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-readobj/Inputs/elf-dynamic-tags-machine-specific.yaml?rev=356037&view=auto
==============================================================================
--- llvm/trunk/test/tools/llvm-readobj/Inputs/elf-dynamic-tags-machine-specific.yaml (added)
+++ llvm/trunk/test/tools/llvm-readobj/Inputs/elf-dynamic-tags-machine-specific.yaml Wed Mar 13 03:38:17 2019
@@ -0,0 +1,202 @@
+# Used by llvm-readobj/elf-dynamic-tags-machine-specific.test and
+# llvm-objdump/elf-dynamic-section-machine-specific.test.
+
+# First document: Hexagon
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+ Machine: EM_HEXAGON
+Sections:
+ - Name: .dynstr
+ Type: SHT_STRTAB
+ Address: 0x1000
+ Size: 0x10
+ Content: "004400550066007700"
+ - Name: .dynamic
+ Type: SHT_DYNAMIC
+ Address: 0x1010
+ Entries:
+ - Tag: DT_HASH
+ Value: 0x1000
+ - Tag: DT_HEXAGON_SYMSZ
+ Value: 0x10
+ - Tag: DT_HEXAGON_VER
+ Value: 0x1000
+ - Tag: DT_HEXAGON_PLT
+ Value: 0x1000
+ - Tag: 0x1234abcd
+ Value: 0x1
+ - Tag: DT_NULL
+ Value: 0
+ProgramHeaders:
+ - Type: PT_LOAD
+ VAddr: 0x1000
+ Sections:
+ - Section: .dynstr
+ - Section: .dynamic
+ - Type: PT_DYNAMIC
+ VAddr: 0x1010
+ Sections:
+ - Section: .dynamic
+
+# Second document: MIPS
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+ Machine: EM_MIPS
+Sections:
+ - Name: .dynstr
+ Type: SHT_STRTAB
+ Address: 0x1000
+ Size: 0x10
+ Content: "004400550066007700"
+ - Name: .dynamic
+ Type: SHT_DYNAMIC
+ Address: 0x1010
+ Entries:
+ - Tag: DT_HASH
+ Value: 0x1000
+ - Tag: DT_MIPS_RLD_VERSION
+ Value: 0x12345678
+ - Tag: DT_MIPS_TIME_STAMP
+ Value: 0x11223344
+ - Tag: DT_MIPS_ICHECKSUM
+ Value: 0x11112222
+ - Tag: DT_MIPS_IVERSION
+ Value: 0x1
+ - Tag: DT_MIPS_FLAGS
+ Value: 0x11111111
+ - Tag: DT_MIPS_BASE_ADDRESS
+ Value: 0x87654321
+ - Tag: DT_MIPS_MSYM
+ Value: 0x1000
+ - Tag: DT_MIPS_CONFLICT
+ Value: 0x1000
+ - Tag: DT_MIPS_LIBLIST
+ Value: 0x1000
+ - Tag: DT_MIPS_LOCAL_GOTNO
+ Value: 0x1
+ - Tag: DT_MIPS_CONFLICTNO
+ Value: 0x1
+ - Tag: DT_MIPS_LIBLISTNO
+ Value: 0x1
+ - Tag: DT_MIPS_SYMTABNO
+ Value: 0x1
+ - Tag: DT_MIPS_UNREFEXTNO
+ Value: 0x0
+ - Tag: DT_MIPS_GOTSYM
+ Value: 0x0
+ - Tag: DT_MIPS_HIPAGENO
+ Value: 0x88776655
+ - Tag: DT_MIPS_RLD_MAP
+ Value: 0x1000
+ - Tag: DT_MIPS_DELTA_CLASS
+ Value: 0x1000
+ - Tag: DT_MIPS_DELTA_CLASS_NO
+ Value: 0x1
+ - Tag: DT_MIPS_DELTA_INSTANCE
+ Value: 0x1000
+ - Tag: DT_MIPS_DELTA_INSTANCE_NO
+ Value: 0x1
+ - Tag: DT_MIPS_DELTA_RELOC
+ Value: 0x1000
+ - Tag: DT_MIPS_DELTA_RELOC_NO
+ Value: 0x1
+ - Tag: DT_MIPS_DELTA_SYM
+ Value: 0x1000
+ - Tag: DT_MIPS_DELTA_SYM_NO
+ Value: 0x1
+ - Tag: DT_MIPS_DELTA_CLASSSYM
+ Value: 0x1000
+ - Tag: DT_MIPS_DELTA_CLASSSYM_NO
+ Value: 0x1
+ - Tag: DT_MIPS_CXX_FLAGS
+ Value: 0x88887777
+ - Tag: DT_MIPS_PIXIE_INIT
+ Value: 0x1000
+ - Tag: DT_MIPS_LOCALPAGE_GOTIDX
+ Value: 0x1
+ - Tag: DT_MIPS_LOCAL_GOTIDX
+ Value: 0x1
+ - Tag: DT_MIPS_HIDDEN_GOTIDX
+ Value: 0x1
+ - Tag: DT_MIPS_PROTECTED_GOTIDX
+ Value: 0x1
+ - Tag: DT_MIPS_OPTIONS
+ Value: 0x1000
+ - Tag: DT_MIPS_INTERFACE
+ Value: 0x1000
+ - Tag: DT_MIPS_DYNSTR_ALIGN
+ Value: 0x88888888
+ - Tag: DT_MIPS_INTERFACE_SIZE
+ Value: 0x10
+ - Tag: DT_MIPS_RLD_TEXT_RESOLVE_ADDR
+ Value: 0x8
+ - Tag: DT_MIPS_PERF_SUFFIX
+ Value: 0x0
+ - Tag: DT_MIPS_COMPACT_SIZE
+ Value: 0x10
+ - Tag: DT_MIPS_GP_VALUE
+ Value: 0x1
+ - Tag: DT_MIPS_AUX_DYNAMIC
+ Value: 0x1000
+ - Tag: DT_MIPS_PLTGOT
+ Value: 0x1000
+ - Tag: DT_MIPS_RWPLT
+ Value: 0x1000
+ - Tag: DT_MIPS_RLD_MAP_REL
+ Value: 0x1000
+ - Tag: 0x1234abcd
+ Value: 0x1
+ - Tag: DT_NULL
+ Value: 0
+ProgramHeaders:
+ - Type: PT_LOAD
+ VAddr: 0x1000
+ Sections:
+ - Section: .dynstr
+ - Section: .dynamic
+ - Type: PT_DYNAMIC
+ VAddr: 0x1010
+ Sections:
+ - Section: .dynamic
+
+# Third document: PPC64
+--- !ELF
+FileHeader:
+ Class: ELFCLASS64
+ Data: ELFDATA2LSB
+ Type: ET_EXEC
+ Machine: EM_PPC64
+Sections:
+ - Name: .dynstr
+ Type: SHT_STRTAB
+ Address: 0x1000
+ Size: 0x10
+ Content: "004400550066007700"
+ - Name: .dynamic
+ Type: SHT_DYNAMIC
+ Address: 0x1010
+ Entries:
+ - Tag: DT_HASH
+ Value: 0x1000
+ - Tag: DT_PPC64_GLINK
+ Value: 0x1000
+ - Tag: 0x1234abcd
+ Value: 0x1
+ - Tag: DT_NULL
+ Value: 0
+ProgramHeaders:
+ - Type: PT_LOAD
+ VAddr: 0x1000
+ Sections:
+ - Section: .dynstr
+ - Section: .dynamic
+ - Type: PT_DYNAMIC
+ VAddr: 0x1010
+ Sections:
+ - Section: .dynamic
Modified: llvm/trunk/test/tools/llvm-readobj/elf-dynamic-tags-machine-specific.test
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/tools/llvm-readobj/elf-dynamic-tags-machine-specific.test?rev=356037&r1=356036&r2=356037&view=diff
==============================================================================
--- llvm/trunk/test/tools/llvm-readobj/elf-dynamic-tags-machine-specific.test (original)
+++ llvm/trunk/test/tools/llvm-readobj/elf-dynamic-tags-machine-specific.test Wed Mar 13 03:38:17 2019
@@ -1,66 +1,37 @@
# Test that hexagon machine-specific tags can be dumped.
-# RUN: yaml2obj --docnum=1 %s -o %t.hex
+# RUN: yaml2obj --docnum=1 %S/Inputs/elf-dynamic-tags-machine-specific.yaml -o %t.hex
# RUN: llvm-readobj --dynamic-table %t.hex | FileCheck %s --check-prefix=LLVM-HEXAGON
# RUN: llvm-readelf --dynamic-table %t.hex | FileCheck %s --check-prefix=GNU-HEXAGON
---- !ELF
-FileHeader:
- Class: ELFCLASS64
- Data: ELFDATA2LSB
- Type: ET_EXEC
- Machine: EM_HEXAGON
-Sections:
- - Name: .dynstr
- Type: SHT_STRTAB
- Address: 0x1000
- Size: 0x10
- Content: "004400550066007700"
- - Name: .dynamic
- Type: SHT_DYNAMIC
- Address: 0x1010
- Entries:
- - Tag: DT_HEXAGON_SYMSZ
- Value: 0x10
- - Tag: DT_HEXAGON_VER
- Value: 0x1000
- - Tag: DT_HEXAGON_PLT
- Value: 0x1000
- - Tag: DT_NULL
- Value: 0
-ProgramHeaders:
- - Type: PT_LOAD
- VAddr: 0x1000
- Sections:
- - Section: .dynstr
- - Section: .dynamic
- - Type: PT_DYNAMIC
- VAddr: 0x1010
- Sections:
- - Section: .dynamic
-
-# LLVM-HEXAGON: DynamicSection [ (4 entries)
+# LLVM-HEXAGON: DynamicSection [ (6 entries)
# LLVM-HEXAGON-NEXT: Tag Type Name/Value
+# LLVM-HEXAGON-NEXT: 0x0000000000000004 HASH 0x1000
# LLVM-HEXAGON-NEXT: 0x0000000070000000 HEXAGON_SYMSZ 0x10
# LLVM-HEXAGON-NEXT: 0x0000000070000001 HEXAGON_VER 4096
# LLVM-HEXAGON-NEXT: 0x0000000070000002 HEXAGON_PLT 0x1000
+# LLVM-HEXAGON-NEXT: 0x000000001234ABCD unknown 0x1
# LLVM-HEXAGON-NEXT: 0x0000000000000000 NULL 0x0
# LLVM-HEXAGON-NEXT: ]
-# GNU-HEXAGON: DynamicSection [ (4 entries)
+# GNU-HEXAGON: DynamicSection [ (6 entries)
# GNU-HEXAGON-NEXT: Tag Type Name/Value
+# GNU-HEXAGON-NEXT: 0x0000000000000004 HASH 0x1000
# GNU-HEXAGON-NEXT: 0x0000000070000000 HEXAGON_SYMSZ 0x10
# GNU-HEXAGON-NEXT: 0x0000000070000001 HEXAGON_VER 4096
# GNU-HEXAGON-NEXT: 0x0000000070000002 HEXAGON_PLT 0x1000
+# GNU-HEXAGON-NEXT: 0x000000001234abcd unknown 0x1
# GNU-HEXAGON-NEXT: 0x0000000000000000 NULL 0x0
# GNU-HEXAGON-NEXT: ]
+
# Test that MIPS machine-specific tags can be dumped.
-# RUN: yaml2obj --docnum=2 %s -o %t.mips
+# RUN: yaml2obj --docnum=2 %S/Inputs/elf-dynamic-tags-machine-specific.yaml -o %t.mips
# RUN: llvm-readobj --dynamic-table %t.mips | FileCheck %s --check-prefix=LLVM-MIPS
# RUN: llvm-readelf --dynamic-table %t.mips | FileCheck %s --check-prefix=GNU-MIPS
-# LLVM-MIPS: DynamicSection [ (46 entries)
+# LLVM-MIPS: DynamicSection [ (48 entries)
# LLVM-MIPS-NEXT: Tag Type Name/Value
+# LLVM-MIPS-NEXT: 0x0000000000000004 HASH 0x1000
# LLVM-MIPS-NEXT: 0x0000000070000001 MIPS_RLD_VERSION 305419896
# LLVM-MIPS-NEXT: 0x0000000070000002 MIPS_TIME_STAMP 0x11223344
# LLVM-MIPS-NEXT: 0x0000000070000003 MIPS_ICHECKSUM 0x11112222
@@ -106,11 +77,13 @@ ProgramHeaders:
# LLVM-MIPS-NEXT: 0x0000000070000032 MIPS_PLTGOT 0x1000
# LLVM-MIPS-NEXT: 0x0000000070000034 MIPS_RWPLT 0x1000
# LLVM-MIPS-NEXT: 0x0000000070000035 MIPS_RLD_MAP_REL 0x1000
+# LLVM-MIPS-NEXT: 0x000000001234ABCD unknown 0x1
# LLVM-MIPS-NEXT: 0x0000000000000000 NULL 0x0
# LLVM-MIPS-NEXT: ]
-# GNU-MIPS: DynamicSection [ (46 entries)
+# GNU-MIPS: DynamicSection [ (48 entries)
# GNU-MIPS-NEXT: Tag Type Name/Value
+# GNU-MIPS-NEXT: 0x0000000000000004 HASH 0x1000
# GNU-MIPS-NEXT: 0x0000000070000001 MIPS_RLD_VERSION 305419896
# GNU-MIPS-NEXT: 0x0000000070000002 MIPS_TIME_STAMP 0x11223344
# GNU-MIPS-NEXT: 0x0000000070000003 MIPS_ICHECKSUM 0x11112222
@@ -156,172 +129,28 @@ ProgramHeaders:
# GNU-MIPS-NEXT: 0x0000000070000032 MIPS_PLTGOT 0x1000
# GNU-MIPS-NEXT: 0x0000000070000034 MIPS_RWPLT 0x1000
# GNU-MIPS-NEXT: 0x0000000070000035 MIPS_RLD_MAP_REL 0x1000
+# GNU-MIPS-NEXT: 0x000000001234abcd unknown 0x1
# GNU-MIPS-NEXT: 0x0000000000000000 NULL 0x0
# GNU-MIPS-NEXT: ]
---- !ELF
-FileHeader:
- Class: ELFCLASS64
- Data: ELFDATA2LSB
- Type: ET_EXEC
- Machine: EM_MIPS
-Sections:
- - Name: .dynstr
- Type: SHT_STRTAB
- Address: 0x1000
- Size: 0x10
- Content: "004400550066007700"
- - Name: .dynamic
- Type: SHT_DYNAMIC
- Address: 0x1010
- Entries:
- - Tag: DT_MIPS_RLD_VERSION
- Value: 0x12345678
- - Tag: DT_MIPS_TIME_STAMP
- Value: 0x11223344
- - Tag: DT_MIPS_ICHECKSUM
- Value: 0x11112222
- - Tag: DT_MIPS_IVERSION
- Value: 0x1
- - Tag: DT_MIPS_FLAGS
- Value: 0x11111111
- - Tag: DT_MIPS_BASE_ADDRESS
- Value: 0x87654321
- - Tag: DT_MIPS_MSYM
- Value: 0x1000
- - Tag: DT_MIPS_CONFLICT
- Value: 0x1000
- - Tag: DT_MIPS_LIBLIST
- Value: 0x1000
- - Tag: DT_MIPS_LOCAL_GOTNO
- Value: 0x1
- - Tag: DT_MIPS_CONFLICTNO
- Value: 0x1
- - Tag: DT_MIPS_LIBLISTNO
- Value: 0x1
- - Tag: DT_MIPS_SYMTABNO
- Value: 0x1
- - Tag: DT_MIPS_UNREFEXTNO
- Value: 0x0
- - Tag: DT_MIPS_GOTSYM
- Value: 0x0
- - Tag: DT_MIPS_HIPAGENO
- Value: 0x88776655
- - Tag: DT_MIPS_RLD_MAP
- Value: 0x1000
- - Tag: DT_MIPS_DELTA_CLASS
- Value: 0x1000
- - Tag: DT_MIPS_DELTA_CLASS_NO
- Value: 0x1
- - Tag: DT_MIPS_DELTA_INSTANCE
- Value: 0x1000
- - Tag: DT_MIPS_DELTA_INSTANCE_NO
- Value: 0x1
- - Tag: DT_MIPS_DELTA_RELOC
- Value: 0x1000
- - Tag: DT_MIPS_DELTA_RELOC_NO
- Value: 0x1
- - Tag: DT_MIPS_DELTA_SYM
- Value: 0x1000
- - Tag: DT_MIPS_DELTA_SYM_NO
- Value: 0x1
- - Tag: DT_MIPS_DELTA_CLASSSYM
- Value: 0x1000
- - Tag: DT_MIPS_DELTA_CLASSSYM_NO
- Value: 0x1
- - Tag: DT_MIPS_CXX_FLAGS
- Value: 0x88887777
- - Tag: DT_MIPS_PIXIE_INIT
- Value: 0x1000
- - Tag: DT_MIPS_LOCALPAGE_GOTIDX
- Value: 0x1
- - Tag: DT_MIPS_LOCAL_GOTIDX
- Value: 0x1
- - Tag: DT_MIPS_HIDDEN_GOTIDX
- Value: 0x1
- - Tag: DT_MIPS_PROTECTED_GOTIDX
- Value: 0x1
- - Tag: DT_MIPS_OPTIONS
- Value: 0x1000
- - Tag: DT_MIPS_INTERFACE
- Value: 0x1000
- - Tag: DT_MIPS_DYNSTR_ALIGN
- Value: 0x88888888
- - Tag: DT_MIPS_INTERFACE_SIZE
- Value: 0x10
- - Tag: DT_MIPS_RLD_TEXT_RESOLVE_ADDR
- Value: 0x8
- - Tag: DT_MIPS_PERF_SUFFIX
- Value: 0x0
- - Tag: DT_MIPS_COMPACT_SIZE
- Value: 0x10
- - Tag: DT_MIPS_GP_VALUE
- Value: 0x1
- - Tag: DT_MIPS_AUX_DYNAMIC
- Value: 0x1000
- - Tag: DT_MIPS_PLTGOT
- Value: 0x1000
- - Tag: DT_MIPS_RWPLT
- Value: 0x1000
- - Tag: DT_MIPS_RLD_MAP_REL
- Value: 0x1000
- - Tag: DT_NULL
- Value: 0
-ProgramHeaders:
- - Type: PT_LOAD
- VAddr: 0x1000
- Sections:
- - Section: .dynstr
- - Section: .dynamic
- - Type: PT_DYNAMIC
- VAddr: 0x1010
- Sections:
- - Section: .dynamic
# Test that PPC64 machine-specific tags can be dumped.
-# RUN: yaml2obj --docnum=3 %s -o %t.ppc
+# RUN: yaml2obj --docnum=3 %S/Inputs/elf-dynamic-tags-machine-specific.yaml -o %t.ppc
# RUN: llvm-readobj --dynamic-table %t.ppc | FileCheck %s --check-prefix=LLVM-PPC
# RUN: llvm-readelf --dynamic-table %t.ppc | FileCheck %s --check-prefix=GNU-PPC
-# LLVM-PPC: DynamicSection [ (2 entries)
+# LLVM-PPC: DynamicSection [ (4 entries)
# LLVM-PPC-NEXT: Tag Type Name/Value
+# LLVM-PPC-NEXT: 0x0000000000000004 HASH 0x1000
# LLVM-PPC-NEXT: 0x0000000070000000 PPC64_GLINK 0x1000
+# LLVM-PPC-NEXT: 0x000000001234ABCD unknown 0x1
# LLVM-PPC-NEXT: 0x0000000000000000 NULL 0x0
# LLVM-PPC-NEXT: ]
-# GNU-PPC: DynamicSection [ (2 entries)
+# GNU-PPC: DynamicSection [ (4 entries)
# GNU-PPC-NEXT: Tag Type Name/Value
+# GNU-PPC-NEXT: 0x0000000000000004 HASH 0x1000
# GNU-PPC-NEXT: 0x0000000070000000 PPC64_GLINK 0x1000
+# GNU-PPC-NEXT: 0x000000001234abcd unknown 0x1
# GNU-PPC-NEXT: 0x0000000000000000 NULL 0x0
# GNU-PPC-NEXT: ]
-
---- !ELF
-FileHeader:
- Class: ELFCLASS64
- Data: ELFDATA2LSB
- Type: ET_EXEC
- Machine: EM_PPC64
-Sections:
- - Name: .dynstr
- Type: SHT_STRTAB
- Address: 0x1000
- Size: 0x10
- Content: "004400550066007700"
- - Name: .dynamic
- Type: SHT_DYNAMIC
- Address: 0x1010
- Entries:
- - Tag: DT_PPC64_GLINK
- Value: 0x1000
- - Tag: DT_NULL
- Value: 0
-ProgramHeaders:
- - Type: PT_LOAD
- VAddr: 0x1000
- Sections:
- - Section: .dynstr
- - Section: .dynamic
- - Type: PT_DYNAMIC
- VAddr: 0x1010
- Sections:
- - Section: .dynamic
More information about the llvm-commits
mailing list