1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 19:52:54 +01:00

Updated ELF relocation test for .eh_frame section

Made sure we were looking a correct section
Added Mips32/64 as an extra check
Updated llvm-objdump to generate symbolic info for Mips relocations

llvm-svn: 178190
This commit is contained in:
Jack Carter 2013-03-27 22:58:49 +00:00
parent 09bc7a9c8d
commit 8ed2f31d8e
2 changed files with 83 additions and 4 deletions

View File

@ -1634,6 +1634,63 @@ error_code ELFObjectFile<ELFT>::getRelocationTypeName(
res = "Unknown"; res = "Unknown";
} }
break; break;
case ELF::EM_MIPS:
switch (type) {
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_NONE);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_16);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_32);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_REL32);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_26);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_HI16);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_LO16);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_GPREL16);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_LITERAL);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_GOT16);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_PC16);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_CALL16);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_GPREL32);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_SHIFT5);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_SHIFT6);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_64);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_GOT_DISP);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_GOT_PAGE);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_GOT_OFST);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_GOT_HI16);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_GOT_LO16);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_SUB);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_INSERT_A);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_INSERT_B);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_DELETE);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_HIGHER);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_HIGHEST);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_CALL_HI16);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_CALL_LO16);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_SCN_DISP);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_REL16);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_ADD_IMMEDIATE);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_PJUMP);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_RELGOT);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_JALR);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_DTPMOD32);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_DTPREL32);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_DTPMOD64);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_DTPREL64);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_GD);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_LDM);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_DTPREL_HI16);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_DTPREL_LO16);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_GOTTPREL);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_TPREL32);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_TPREL64);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_TPREL_HI16);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_TLS_TPREL_LO16);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_GLOB_DAT);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_COPY);
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_MIPS_JUMP_SLOT);
default:
res = "Unknown";
}
break;
case ELF::EM_AARCH64: case ELF::EM_AARCH64:
switch (type) { switch (type) {
LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_NONE); LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_AARCH64_NONE);

View File

@ -1,5 +1,18 @@
// RUN: llvm-mc -filetype=obj %s -o - -triple x86_64-pc-linux | llvm-objdump -r - | FileCheck --check-prefix=X86-64 %s // This just tests that a relocation of the specified type shows up as the first
// RUN: llvm-mc -filetype=obj %s -o - -triple i686-pc-linux | llvm-objdump -r - | FileCheck --check-prefix=I686 %s // relocation in the relocation section for .eh_frame when produced by the
// assembler.
// RUN: llvm-mc -filetype=obj %s -o - -triple x86_64-pc-linux | \
// RUN: llvm-objdump -r - | FileCheck --check-prefix=X86-64 %s
// RUN: llvm-mc -filetype=obj %s -o - -triple i686-pc-linux | \
// RUN: llvm-objdump -r - | FileCheck --check-prefix=I686 %s
// RUN: llvm-mc -filetype=obj %s -o - -triple mips-unknown-unknown | \
// RUN: llvm-objdump -r - | FileCheck --check-prefix=MIPS32 %s
// RUN: llvm-mc -filetype=obj %s -o - -triple mips64-unknown-unknown | \
// RUN: llvm-objdump -r - | FileCheck --check-prefix=MIPS64 %s
// PR15448 // PR15448
@ -7,5 +20,14 @@ func:
.cfi_startproc .cfi_startproc
.cfi_endproc .cfi_endproc
// X86-64: R_X86_64_PC32 // X86-64: RELOCATION RECORDS FOR [.eh_frame]:
// I686: R_386_PC32 // X86-64-NEXT: R_X86_64_PC32
// I686: RELOCATION RECORDS FOR [.eh_frame]:
// I686-NEXT: R_386_PC32
// MIPS32: RELOCATION RECORDS FOR [.eh_frame]:
// MIPS32-NEXT: R_MIPS_32
// MIPS64: RELOCATION RECORDS FOR [.eh_frame]:
// MIPS64-NEXT: R_MIPS_64