[llvm] r178190 - Updated ELF relocation test for .eh_frame section
Jack Carter
Jack.Carter at imgtec.com
Thu Mar 28 10:05:26 PDT 2013
Rafael,
Great question. First I was mimicking what the other targets were doing. Second, this is a subset of legal relocations. I was planning to add the others later.
This is for a pretty printer. One wants to be more permissive. Before I added the Mips variations it at least gave me a relocation number which I could look up in my ABI specs. If a relocation is encountered that this routine doesn't recognize, it should still work non-symbolically. This is different from code generation and object generation where one wants to error out if it sees something it doesn't understand or expect.
Meanwhile, I need to move the test to the test/MC/Mips directory so I don't break buildbots in the middle of the night again :-o
Jack
________________________________________
From: Rafael EspĂndola [rafael.espindola at gmail.com]
Sent: Thursday, March 28, 2013 9:52 AM
To: Jack Carter
Cc: llvm-commits at cs.uiuc.edu
Subject: Re: [llvm] r178190 - Updated ELF relocation test for .eh_frame section
> + 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";
> + }
Why the default? Can't you make this list exhaustive?
Cheers,
Rafael
More information about the llvm-commits
mailing list