[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