@@ -2027,6 +2027,18 @@ template <typename ELFT> void ELFDumper<ELFT>::parseDynamicTable() {
2027
2027
uint64_t StringTableSize = 0 ;
2028
2028
std::optional<DynRegionInfo> DynSymFromTable;
2029
2029
for (const Elf_Dyn &Dyn : dynamic_table ()) {
2030
+ if (Obj.getHeader ().e_machine == EM_AARCH64) {
2031
+ switch (Dyn.d_tag ) {
2032
+ case ELF::DT_AARCH64_AUTH_RELRSZ:
2033
+ DynRelrRegion.Size = Dyn.getVal ();
2034
+ DynRelrRegion.SizePrintName = " DT_AARCH64_AUTH_RELRSZ value" ;
2035
+ continue ;
2036
+ case ELF::DT_AARCH64_AUTH_RELRENT:
2037
+ DynRelrRegion.EntSize = Dyn.getVal ();
2038
+ DynRelrRegion.EntSizePrintName = " DT_AARCH64_AUTH_RELRENT value" ;
2039
+ continue ;
2040
+ }
2041
+ }
2030
2042
switch (Dyn.d_tag ) {
2031
2043
case ELF::DT_HASH:
2032
2044
HashTable = reinterpret_cast <const Elf_Hash *>(
@@ -2097,27 +2109,17 @@ template <typename ELFT> void ELFDumper<ELFT>::parseDynamicTable() {
2097
2109
case ELF::DT_ANDROID_RELRSZ:
2098
2110
case ELF::DT_AARCH64_AUTH_RELRSZ:
2099
2111
DynRelrRegion.Size = Dyn.getVal ();
2100
- if (Dyn.d_tag == ELF::DT_RELRSZ)
2101
- DynRelrRegion.SizePrintName = " DT_RELRSZ value" ;
2102
- else if (Dyn.d_tag == ELF::DT_ANDROID_RELRSZ)
2103
- DynRelrRegion.SizePrintName = " DT_ANDROID_RELRSZ value" ;
2104
- else if (Dyn.d_tag == ELF::DT_AARCH64_AUTH_RELRSZ)
2105
- DynRelrRegion.SizePrintName = " DT_AARCH64_AUTH_RELRSZ value" ;
2106
- else
2107
- llvm_unreachable (" unexpected Dyn.d_tag value" );
2112
+ DynRelrRegion.SizePrintName = Dyn.d_tag == ELF::DT_RELRSZ
2113
+ ? " DT_RELRSZ value"
2114
+ : " DT_ANDROID_RELRSZ value" ;
2108
2115
break ;
2109
2116
case ELF::DT_RELRENT:
2110
2117
case ELF::DT_ANDROID_RELRENT:
2111
2118
case ELF::DT_AARCH64_AUTH_RELRENT:
2112
2119
DynRelrRegion.EntSize = Dyn.getVal ();
2113
- if (Dyn.d_tag == ELF::DT_RELRENT)
2114
- DynRelrRegion.EntSizePrintName = " DT_RELRENT value" ;
2115
- else if (Dyn.d_tag == ELF::DT_ANDROID_RELRENT)
2116
- DynRelrRegion.EntSizePrintName = " DT_ANDROID_RELRENT value" ;
2117
- else if (Dyn.d_tag == ELF::DT_AARCH64_AUTH_RELRENT)
2118
- DynRelrRegion.EntSizePrintName = " DT_AARCH64_AUTH_RELRENT value" ;
2119
- else
2120
- llvm_unreachable (" unexpected Dyn.d_tag value" );
2120
+ DynRelrRegion.EntSizePrintName = Dyn.d_tag == ELF::DT_RELRENT
2121
+ ? " DT_RELRENT value"
2122
+ : " DT_ANDROID_RELRENT value" ;
2121
2123
break ;
2122
2124
case ELF::DT_PLTREL:
2123
2125
if (Dyn.getVal () == DT_REL)
@@ -5342,11 +5344,11 @@ static bool printAArch64Note(raw_ostream &OS, uint32_t NoteType,
5342
5344
return false ;
5343
5345
}
5344
5346
5345
- uint64_t platform =
5347
+ uint64_t Platform =
5346
5348
support::endian::read64<ELFT::TargetEndianness>(Desc.data () + 0 );
5347
- uint64_t version =
5349
+ uint64_t Version =
5348
5350
support::endian::read64<ELFT::TargetEndianness>(Desc.data () + 8 );
5349
- OS << format (" platform 0x%x, version 0x%x" , platform, version );
5351
+ OS << format (" platform 0x%x, version 0x%x" , Platform, Version );
5350
5352
5351
5353
if (Desc.size () > 16 )
5352
5354
OS << " , additional info 0x"
0 commit comments