From e35d6028388523908e86d6e99c90e3be7b0367d9 Mon Sep 17 00:00:00 2001 From: Simon Atanasyan Date: Sat, 1 Aug 2015 12:02:02 +0000 Subject: [PATCH] [Mips] Support DT_MIPS_RLD_MAP_REL dynamic section tag in the llvm-readobj git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@243833 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/Support/ELF.h | 4 ++- .../Inputs/mips-rld-map-rel.elf-mipsel | Bin 0 -> 2484 bytes test/tools/llvm-readobj/mips-rld-map-rel.test | 24 ++++++++++++++++++ tools/llvm-readobj/ELFDumper.cpp | 2 ++ 4 files changed, 29 insertions(+), 1 deletion(-) create mode 100755 test/tools/llvm-readobj/Inputs/mips-rld-map-rel.elf-mipsel create mode 100644 test/tools/llvm-readobj/mips-rld-map-rel.test diff --git a/include/llvm/Support/ELF.h b/include/llvm/Support/ELF.h index 94a4bfb2202..acd041803ad 100644 --- a/include/llvm/Support/ELF.h +++ b/include/llvm/Support/ELF.h @@ -1139,8 +1139,10 @@ enum { DT_MIPS_GP_VALUE = 0x70000030, // GP value for auxiliary GOTs. DT_MIPS_AUX_DYNAMIC = 0x70000031, // Address of auxiliary .dynamic. DT_MIPS_PLTGOT = 0x70000032, // Address of the base of the PLTGOT. - DT_MIPS_RWPLT = 0x70000034 // Points to the base + DT_MIPS_RWPLT = 0x70000034, // Points to the base // of a writable PLT. + DT_MIPS_RLD_MAP_REL = 0x70000035 // Relative offset of run time loader + // map, used for debugging. }; // DT_FLAGS values. diff --git a/test/tools/llvm-readobj/Inputs/mips-rld-map-rel.elf-mipsel b/test/tools/llvm-readobj/Inputs/mips-rld-map-rel.elf-mipsel new file mode 100755 index 0000000000000000000000000000000000000000..a8e396c2ec36e25dd16cac0458cb291982ccc806 GIT binary patch literal 2484 zcmb7FON$g&6h3W@Nyj|w84U#Tum=Ulz}#tdRLG08^EN#Xd=M0|rh2-jr=TB2bqyIw zAPs@60&yu>xy&xVK*_=%ke@IM7g;JOxDYzuSGP`A(MCxQe084p+}Am`eq5+6777JX za-=BKHXM;z@JDZm94tvVD`j}5WI_%LOo@+vA{l@|2O*9D7%H>S74JeP=woj9!(|AH z4`3tcF9M)&6MjYBuQ_a({q~WN;QX9{b68seypZH(4z8R21NiPCNbx&#g1L#;5&bi* zpgz-Tm|oYM&SJ|4aEx{dnUVSSb7~^?e<~#Nl(7&Fcmd9}-2^`bz6`t#lz?+Mi+v=1 zA2Nw&dk1^M@ zo9CD}Y5W&rU6EL4$H93&q!MPJWHqk$$>1aC8ec*@_A-ngM?4Sz?r{7e`E*2|8_~ZU z(Z!v=zE)jbnR9C^Yu~J_Es5)1uFbov)eUjCV}CCOYk09Iu5X!J@AceX>_zlIhNII! z){LGH?w=f!2Y*aHzUNHh0w@3e(}DhLQSP5C%6_{0EdCWze`#*+v+~r^+O<>V^QK}d zlDYQXY}=p!C;{IcvqhQ$ABsepxN1#0&itZuL*KS z>{XJJ-T-^k>h^{=hq~PYd&l~D^CGNel9N^eYuW0yVp!u=x0Rvy$~quv9XLs)*&4U; ztiFt#q%-pRJDCE>NnV=FzLl`u8Jxe?*sd5cZ~{R%5#D zh0~GWGF!va7PlFSyHs1hSgpD1i;GtluDVyN7i$adu(n@r0UE*sFubk>xuo1)bQBLNTi=8&`~154KxgvnM9h1|C96$WgK(P z18iQ#vEPUuEf5≧O_iTN1Y0T`!q-9=pT;K4?skN7U-UUxAYT{~^eMfwF$nfg=2oT6968TeiTVD5 Zk>mOHaD7|{|FQY09^$fphD}NH{R8kf?yCR* literal 0 HcmV?d00001 diff --git a/test/tools/llvm-readobj/mips-rld-map-rel.test b/test/tools/llvm-readobj/mips-rld-map-rel.test new file mode 100644 index 00000000000..adde78784d6 --- /dev/null +++ b/test/tools/llvm-readobj/mips-rld-map-rel.test @@ -0,0 +1,24 @@ +# Check DT_MIPS_RLD_MAP_REL .dynamic section tag reading + +RUN: llvm-readobj -dynamic-table %p/Inputs/mips-rld-map-rel.elf-mipsel | \ +RUN: FileCheck %s + +CHECK: DynamicSection [ (16 entries) +CHECK-NEXT: Tag Type Name/Value +CHECK-NEXT: 0x00000004 HASH 0x220 +CHECK-NEXT: 0x00000005 STRTAB 0x2FC +CHECK-NEXT: 0x00000006 SYMTAB 0x25C +CHECK-NEXT: 0x0000000A STRSZ 72 (bytes) +CHECK-NEXT: 0x0000000B SYMENT 16 (bytes) +CHECK-NEXT: 0x70000035 MIPS_RLD_MAP_REL 0x101E0 +CHECK-NEXT: 0x00000015 DEBUG 0x0 +CHECK-NEXT: 0x00000003 PLTGOT 0x10390 +CHECK-NEXT: 0x70000001 MIPS_RLD_VERSION 1 +CHECK-NEXT: 0x70000005 MIPS_FLAGS NOTPOT +CHECK-NEXT: 0x70000006 MIPS_BASE_ADDRESS 0x0 +CHECK-NEXT: 0x7000000A MIPS_LOCAL_GOTNO 2 +CHECK-NEXT: 0x70000011 MIPS_SYMTABNO 10 +CHECK-NEXT: 0x70000012 MIPS_UNREFEXTNO 15 +CHECK-NEXT: 0x70000013 MIPS_GOTSYM 0xA +CHECK-NEXT: 0x00000000 NULL 0x0 +CHECK-NEXT: ] diff --git a/tools/llvm-readobj/ELFDumper.cpp b/tools/llvm-readobj/ELFDumper.cpp index b4118f06665..ddab9fb5b57 100644 --- a/tools/llvm-readobj/ELFDumper.cpp +++ b/tools/llvm-readobj/ELFDumper.cpp @@ -1005,6 +1005,7 @@ static const char *getTypeString(uint64_t Type) { LLVM_READOBJ_TYPE_CASE(RELCOUNT); LLVM_READOBJ_TYPE_CASE(GNU_HASH); LLVM_READOBJ_TYPE_CASE(MIPS_RLD_VERSION); + LLVM_READOBJ_TYPE_CASE(MIPS_RLD_MAP_REL); LLVM_READOBJ_TYPE_CASE(MIPS_FLAGS); LLVM_READOBJ_TYPE_CASE(MIPS_BASE_ADDRESS); LLVM_READOBJ_TYPE_CASE(MIPS_LOCAL_GOTNO); @@ -1139,6 +1140,7 @@ void ELFDumper::printValue(uint64_t Type, uint64_t Value) { case DT_MIPS_BASE_ADDRESS: case DT_MIPS_GOTSYM: case DT_MIPS_RLD_MAP: + case DT_MIPS_RLD_MAP_REL: case DT_MIPS_PLTGOT: case DT_MIPS_OPTIONS: OS << format("0x%" PRIX64, Value); -- 2.34.1