[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