llvm.org GIT mirror llvm / 97f2a5e
[Sparc] Add support for sparc relocation types in ELF object file. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@200112 91177308-0d34-0410-b5e6-96231b3b80d8 Venkatraman Govindaraju 6 years ago
3 changed file(s) with 117 addition(s) and 0 deletion(s). Raw diff Collapse all Expand all
923923 return "ELF32-mips";
924924 case ELF::EM_PPC:
925925 return "ELF32-ppc";
926 case ELF::EM_SPARC:
927 case ELF::EM_SPARC32PLUS:
928 return "ELF32-sparc";
926929 default:
927930 return "ELF32-unknown";
928931 }
938941 return "ELF64-ppc64";
939942 case ELF::EM_S390:
940943 return "ELF64-s390";
944 case ELF::EM_SPARCV9:
945 return "ELF64-sparc";
941946 default:
942947 return "ELF64-unknown";
943948 }
968973 : Triple::ppc64;
969974 case ELF::EM_S390:
970975 return Triple::systemz;
976
977 case ELF::EM_SPARC:
978 case ELF::EM_SPARC32PLUS:
979 return Triple::sparc;
980 case ELF::EM_SPARCV9:
981 return Triple::sparcv9;
982
971983 default:
972984 return Triple::UnknownArch;
973985 }
703703 break;
704704 }
705705 break;
706 case ELF::EM_SPARC:
707 case ELF::EM_SPARC32PLUS:
708 case ELF::EM_SPARCV9:
709 switch (Type) {
710 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_NONE);
711 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_8);
712 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_16);
713 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_32);
714 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_DISP8);
715 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_DISP16);
716 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_DISP32);
717 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_WDISP30);
718 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_WDISP22);
719 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_HI22);
720 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_22);
721 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_13);
722 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_LO10);
723 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_GOT10);
724 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_GOT13);
725 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_GOT22);
726 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_PC10);
727 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_PC22);
728 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_WPLT30);
729 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_COPY);
730 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_GLOB_DAT);
731 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_JMP_SLOT);
732 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_RELATIVE);
733 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_UA32);
734 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_PLT32);
735 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_HIPLT22);
736 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_LOPLT10);
737 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_PCPLT32);
738 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_PCPLT22);
739 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_PCPLT10);
740 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_10);
741 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_11);
742 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_64);
743 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_OLO10);
744 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_HH22);
745 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_HM10);
746 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_LM22);
747 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_PC_HH22);
748 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_PC_HM10);
749 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_PC_LM22);
750 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_WDISP16);
751 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_WDISP19);
752 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_7);
753 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_5);
754 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_6);
755 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_DISP64);
756 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_PLT64);
757 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_HIX22);
758 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_LOX10);
759 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_H44);
760 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_M44);
761 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_L44);
762 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_REGISTER);
763 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_UA64);
764 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_UA16);
765 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_GD_HI22);
766 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_GD_LO10);
767 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_GD_ADD);
768 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_GD_CALL);
769 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_LDM_HI22);
770 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_LDM_LO10);
771 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_LDM_ADD);
772 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_LDM_CALL);
773 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_LDO_HIX22);
774 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_LDO_LOX10);
775 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_LDO_ADD);
776 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_IE_HI22);
777 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_IE_LO10);
778 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_IE_LD);
779 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_IE_LDX);
780 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_IE_ADD);
781 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_LE_HIX22);
782 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_LE_LOX10);
783 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_DTPMOD32);
784 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_DTPMOD64);
785 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_DTPOFF32);
786 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_DTPOFF64);
787 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_TPOFF32);
788 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_TLS_TPOFF64);
789 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_GOTDATA_HIX22);
790 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_GOTDATA_LOX22);
791 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_GOTDATA_OP_HIX22);
792 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_GOTDATA_OP_LOX22);
793 LLVM_ELF_SWITCH_RELOC_TYPE_NAME(R_SPARC_GOTDATA_OP);
794 default:
795 break;
796 }
797 break;
706798 default:
707799 break;
708800 }
0 ! RUN: llvm-mc %s -arch=sparcv9 -show-encoding | FileCheck %s
1 ! RUN: llvm-mc %s -arch=sparcv9 -filetype=obj | llvm-readobj -r | FileCheck %s --check-prefix=CHECK-OBJ
2
3 ! CHECK-OBJ: Format: ELF64-sparc
4 ! CHECK-OBJ: Relocations [
5 ! CHECK-OBJ: 0x{{[0-9,A-F]+}} R_SPARC_WDISP30 foo
6 ! CHECK-OBJ: 0x{{[0-9,A-F]+}} R_SPARC_LO10 sym
7 ! CHECK-OBJ: 0x{{[0-9,A-F]+}} R_SPARC_HI22 sym
8 ! CHECK-OBJ: 0x{{[0-9,A-F]+}} R_SPARC_H44 sym
9 ! CHECK-OBJ: 0x{{[0-9,A-F]+}} R_SPARC_M44 sym
10 ! CHECK-OBJ: 0x{{[0-9,A-F]+}} R_SPARC_L44 sym
11 ! CHECK-OBJ: 0x{{[0-9,A-F]+}} R_SPARC_HH22 sym
12 ! CHECK-OBJ: 0x{{[0-9,A-F]+}} R_SPARC_HM10 sym
13 ! CHECK-ELF: ]
114
215 ! CHECK: call foo ! encoding: [0b01AAAAAA,A,A,A]
316 ! CHECK: ! fixup A - offset: 0, value: foo, kind: fixup_sparc_call30