Index: include/llvm/Object/ELFObjectFile.h =================================================================== --- include/llvm/Object/ELFObjectFile.h +++ include/llvm/Object/ELFObjectFile.h @@ -913,6 +913,8 @@ return "ELF32-lanai"; case ELF::EM_MIPS: return "ELF32-mips"; + case ELF::EM_NDS32: + return "ELF32-nds32"; case ELF::EM_PPC: return "ELF32-ppc"; case ELF::EM_RISCV: @@ -981,6 +983,8 @@ return Triple::hexagon; case ELF::EM_LANAI: return Triple::lanai; + case ELF::EM_NDS32: + return Triple::nds32; case ELF::EM_MIPS: switch (EF.getHeader()->e_ident[ELF::EI_CLASS]) { case ELF::ELFCLASS32: Index: include/llvm/Object/RelocVisitor.h =================================================================== --- include/llvm/Object/RelocVisitor.h +++ include/llvm/Object/RelocVisitor.h @@ -211,6 +211,14 @@ HasError = true; return RelocToApply(); } + case Triple::nds32: + switch (RelocType) { + case llvm::ELF::R_NDS32_32: + return visitELF_NDS32_32(R, Value); + default: + HasError = true; + return RelocToApply(); + } case Triple::sparc: switch (RelocType) { case llvm::ELF::R_SPARC_32: @@ -362,6 +370,13 @@ return RelocToApply(Res, 4); } + /// NDS32 ELF + RelocToApply visitELF_NDS32_32(RelocationRef R, uint64_t Value) { + int64_t Addend = getELFAddend(R); + uint32_t Res = (Value + Addend) & 0xFFFFFFFF; + return RelocToApply(Res, 4); + } + /// MIPS ELF RelocToApply visitELF_MIPS_32(RelocationRef R, uint64_t Value) { uint32_t Res = Value & 0xFFFFFFFF; Index: include/llvm/Support/ELF.h =================================================================== --- include/llvm/Support/ELF.h +++ include/llvm/Support/ELF.h @@ -582,6 +582,11 @@ #include "ELFRelocs/Hexagon.def" }; +// ELF Relocation type for NDS32 +enum { +#include "ELFRelocs/NDS32.def" +}; + // ELF Relocation type for Lanai. enum { #include "ELFRelocs/Lanai.def" Index: include/llvm/Support/ELFRelocs/NDS32.def =================================================================== --- /dev/null +++ include/llvm/Support/ELFRelocs/NDS32.def @@ -0,0 +1,141 @@ + +#ifndef ELF_RELOC +#error "ELF_RELOC must be defined" +#endif + +ELF_RELOC(R_NDS32_NONE, 0) +ELF_RELOC(R_NDS32_16, 1) +ELF_RELOC(R_NDS32_32, 2) +ELF_RELOC(R_NDS32_20, 3) +ELF_RELOC(R_NDS32_9_PCREL, 4) +ELF_RELOC(R_NDS32_15_PCREL, 5) +ELF_RELOC(R_NDS32_17_PCREL, 6) +ELF_RELOC(R_NDS32_25_PCREL, 7) +ELF_RELOC(R_NDS32_HI20, 8) +ELF_RELOC(R_NDS32_LO12S3, 9) +ELF_RELOC(R_NDS32_LO12S2, 10) +ELF_RELOC(R_NDS32_LO12S1, 11) +ELF_RELOC(R_NDS32_LO12S0, 12) +ELF_RELOC(R_NDS32_SDA15S3, 13) +ELF_RELOC(R_NDS32_SDA15S2, 14) +ELF_RELOC(R_NDS32_SDA15S1, 15) +ELF_RELOC(R_NDS32_SDA15S0, 16) +ELF_RELOC(R_NDS32_GNU_VTINHERIT, 17) +ELF_RELOC(R_NDS32_GNU_VTENTRY, 18) +ELF_RELOC(R_NDS32_16_RELA, 19) +ELF_RELOC(R_NDS32_32_RELA, 20) +ELF_RELOC(R_NDS32_20_RELA, 21) +ELF_RELOC(R_NDS32_9_PCREL_RELA, 22) +ELF_RELOC(R_NDS32_15_PCREL_RELA, 23) +ELF_RELOC(R_NDS32_17_PCREL_RELA, 24) +ELF_RELOC(R_NDS32_25_PCREL_RELA, 25) +ELF_RELOC(R_NDS32_HI20_RELA, 26) +ELF_RELOC(R_NDS32_LO12S3_RELA, 27) +ELF_RELOC(R_NDS32_LO12S2_RELA, 28) +ELF_RELOC(R_NDS32_LO12S1_RELA, 29) +ELF_RELOC(R_NDS32_LO12S0_RELA, 30) +ELF_RELOC(R_NDS32_SDA15S3_RELA, 31) +ELF_RELOC(R_NDS32_SDA15S2_RELA, 32) +ELF_RELOC(R_NDS32_SDA15S1_RELA, 33) +ELF_RELOC(R_NDS32_SDA15S0_RELA, 34) +ELF_RELOC(R_NDS32_RELA_GNU_VTINHERIT, 35) +ELF_RELOC(R_NDS32_RELA_GNU_VTENTRY, 36) +ELF_RELOC(R_NDS32_GOT20, 37) +ELF_RELOC(R_NDS32_25_PLTREL, 38) +ELF_RELOC(R_NDS32_COPY, 39) +ELF_RELOC(R_NDS32_GLOB_DAT, 40) +ELF_RELOC(R_NDS32_JMP_SLOT, 41) +ELF_RELOC(R_NDS32_RELATIVE, 42) +ELF_RELOC(R_NDS32_GOTOFF, 43) +ELF_RELOC(R_NDS32_GOTPC20, 44) +ELF_RELOC(R_NDS32_GOT_HI20, 45) +ELF_RELOC(R_NDS32_GOT_LO12, 46) +ELF_RELOC(R_NDS32_GOTPC_HI20, 47) +ELF_RELOC(R_NDS32_GOTPC_LO12, 48) +ELF_RELOC(R_NDS32_GOTOFF_HI20, 49) +ELF_RELOC(R_NDS32_GOTOFF_LO12, 50) +ELF_RELOC(R_NDS32_INSN16, 51) +ELF_RELOC(R_NDS32_LABEL, 52) +ELF_RELOC(R_NDS32_LONGCALL1, 53) +ELF_RELOC(R_NDS32_LONGCALL2, 54) +ELF_RELOC(R_NDS32_LONGCALL3, 55) +ELF_RELOC(R_NDS32_LONGJUMP1, 56) +ELF_RELOC(R_NDS32_LONGJUMP2, 57) +ELF_RELOC(R_NDS32_LONGJUMP3, 58) +ELF_RELOC(R_NDS32_LOADSTORE, 59) +ELF_RELOC(R_NDS32_9_FIXED_RELA, 60) +ELF_RELOC(R_NDS32_15_FIXED_RELA, 61) +ELF_RELOC(R_NDS32_17_FIXED_RELA, 62) +ELF_RELOC(R_NDS32_25_FIXED_RELA, 63) +ELF_RELOC(R_NDS32_PLTREL_HI20, 64) +ELF_RELOC(R_NDS32_PLTREL_LO12, 65) +ELF_RELOC(R_NDS32_PLT_GOTREL_HI20, 66) +ELF_RELOC(R_NDS32_PLT_GOTREL_LO12, 67) +ELF_RELOC(R_NDS32_SDA12S2_DP_RELA, 68) +ELF_RELOC(R_NDS32_SDA12S2_SP_RELA, 69) +ELF_RELOC(R_NDS32_LO12S2_DP_RELA, 70) +ELF_RELOC(R_NDS32_LO12S2_SP_RELA, 71) +ELF_RELOC(R_NDS32_LO12S0_ORI_RELA, 72) +ELF_RELOC(R_NDS32_SDA16S3_RELA, 73) +ELF_RELOC(R_NDS32_SDA17S2_RELA, 74) +ELF_RELOC(R_NDS32_SDA18S1_RELA, 75) +ELF_RELOC(R_NDS32_SDA19S0_RELA, 76) +ELF_RELOC(R_NDS32_DWARF2_OP1_RELA, 77) +ELF_RELOC(R_NDS32_DWARF2_OP2_RELA, 78) +ELF_RELOC(R_NDS32_DWARF2_LEB_RELA, 79) +ELF_RELOC(R_NDS32_UPDATE_TA_RELA, 80) +ELF_RELOC(R_NDS32_9_PLTREL, 81) +ELF_RELOC(R_NDS32_PLT_GOTREL_LO20, 82) +ELF_RELOC(R_NDS32_PLT_GOTREL_LO15, 83) +ELF_RELOC(R_NDS32_PLT_GOTREL_LO19, 84) +ELF_RELOC(R_NDS32_GOT_LO15, 85) +ELF_RELOC(R_NDS32_GOT_LO19, 86) +ELF_RELOC(R_NDS32_GOTOFF_LO15, 87) +ELF_RELOC(R_NDS32_GOTOFF_LO19, 88) +ELF_RELOC(R_NDS32_GOT15S2_RELA, 89) +ELF_RELOC(R_NDS32_GOT17S2_RELA, 90) +ELF_RELOC(R_NDS32_5_RELA, 91) +ELF_RELOC(R_NDS32_10_UPCREL_RELA, 92) +ELF_RELOC(R_NDS32_SDA_FP7U2_RELA, 93) +ELF_RELOC(R_NDS32_WORD_9_PCREL_RELA, 94) +ELF_RELOC(R_NDS32_25_ABS_RELA, 95) +ELF_RELOC(R_NDS32_17IFC_PCREL_RELA, 96) +ELF_RELOC(R_NDS32_10IFCU_PCREL_RELA, 97) +ELF_RELOC(R_NDS32_TLS_LE_HI20, 98) +ELF_RELOC(R_NDS32_TLS_LE_LO12, 99) +ELF_RELOC(R_NDS32_TLS_IE_HI20, 100) +ELF_RELOC(R_NDS32_TLS_IE_LO12S2, 101) +ELF_RELOC(R_NDS32_TLS_TPOFF, 102) +ELF_RELOC(R_NDS32_TLS_LE_20, 103) +ELF_RELOC(R_NDS32_TLS_LE_15S0, 104) +ELF_RELOC(R_NDS32_TLS_LE_15S1, 105) +ELF_RELOC(R_NDS32_TLS_LE_15S2, 106) +ELF_RELOC(R_NDS32_LONGCALL4, 107) +ELF_RELOC(R_NDS32_LONGCALL5, 108) +ELF_RELOC(R_NDS32_LONGCALL6, 109) +ELF_RELOC(R_NDS32_LONGJUMP4, 110) +ELF_RELOC(R_NDS32_LONGJUMP5, 111) +ELF_RELOC(R_NDS32_LONGJUMP6, 112) +ELF_RELOC(R_NDS32_LONGJUMP7, 113) +ELF_RELOC(R_NDS32_RELAX_ENTRY, 192) +ELF_RELOC(R_NDS32_GOT_SUFF, 193) +ELF_RELOC(R_NDS32_GOTOFF_SUFF, 194) +ELF_RELOC(R_NDS32_PLT_GOT_SUFF, 195) +ELF_RELOC(R_NDS32_MULCALL_SUFF, 196) +ELF_RELOC(R_NDS32_PTR, 197) +ELF_RELOC(R_NDS32_PTR_COUNT, 198) +ELF_RELOC(R_NDS32_PTR_RESOLVED, 199) +ELF_RELOC(R_NDS32_PLTBLOCK, 200) +ELF_RELOC(R_NDS32_RELAX_REGION_BEGIN,201) +ELF_RELOC(R_NDS32_RELAX_REGION_END, 202) +ELF_RELOC(R_NDS32_MINUEND, 203) +ELF_RELOC(R_NDS32_SUBTRAHEND, 204) +ELF_RELOC(R_NDS32_DIFF8, 205) +ELF_RELOC(R_NDS32_DIFF16, 206) +ELF_RELOC(R_NDS32_DIFF32, 207) +ELF_RELOC(R_NDS32_DIFF_ULEB128, 208) +ELF_RELOC(R_NDS32_DATA, 209) +ELF_RELOC(R_NDS32_TRAN, 210) +ELF_RELOC(R_NDS32_TLS_LE_ADD, 211) +ELF_RELOC(R_NDS32_TLS_LE_LS, 212) +ELF_RELOC(R_NDS32_EMPTY, 213) Index: lib/Object/ELF.cpp =================================================================== --- lib/Object/ELF.cpp +++ lib/Object/ELF.cpp @@ -61,6 +61,13 @@ break; } break; + case ELF::EM_NDS32: + switch (Type) { +#include "llvm/Support/ELFRelocs/NDS32.def" + default: + break; + } + break; case ELF::EM_HEXAGON: switch (Type) { #include "llvm/Support/ELFRelocs/Hexagon.def" Index: lib/ObjectYAML/ELFYAML.cpp =================================================================== --- lib/ObjectYAML/ELFYAML.cpp +++ lib/ObjectYAML/ELFYAML.cpp @@ -196,6 +196,7 @@ ECase(EM_AMDGPU) ECase(EM_RISCV) ECase(EM_LANAI) + ECase(EM_NDS32) ECase(EM_BPF) #undef ECase } @@ -343,6 +344,8 @@ case ELF::EM_AMDGPU: case ELF::EM_X86_64: break; + case ELF::EM_NDS32: + break; default: llvm_unreachable("Unsupported architecture"); } @@ -539,6 +542,9 @@ case ELF::EM_LANAI: #include "llvm/Support/ELFRelocs/Lanai.def" break; + case ELF::EM_NDS32: +#include "llvm/Support/ELFRelocs/NDS32.def" + break; case ELF::EM_AMDGPU: #include "llvm/Support/ELFRelocs/AMDGPU.def" break; Index: test/Object/NDS32/elf-nds32-rel.yaml =================================================================== --- /dev/null +++ test/Object/NDS32/elf-nds32-rel.yaml @@ -0,0 +1,116 @@ +# RUN: yaml2obj %s > %t +# RUN: llvm-readobj -r %t | FileCheck -check-prefix=OBJ %s +# RUN: obj2yaml %t | FileCheck -check-prefix=YAML %s + +# OBJ: Relocations [ +# OBJ-NEXT: Section (2) .rela.text { +# OBJ-NEXT: 0x14 R_NDS32_HI20_RELA main 0x4 +# OBJ-NEXT: 0x1C R_NDS32_LO12S0_RELA main 0x8 +# OBJ-NEXT: 0x20 R_NDS32_16 .rodata 0x0 +# OBJ-NEXT: 0x24 R_NDS32_32 .rodata 0x0 +# OBJ-NEXT: 0x28 R_NDS32_9_PCREL_RELA printf 0x0 +# OBJ-NEXT: 0x30 R_NDS32_15_PCREL_RELA printf 0x0 +# OBJ-NEXT: 0x34 R_NDS32_17_PCREL_RELA printf 0x0 +# OBJ-NEXT: 0x38 R_NDS32_25_PCREL_RELA printf 0x0 +# OBJ-NEXT: } +# OBJ-NEXT: ] +# YAML: Relocations: +# YAML-NEXT: - Offset: 0x0000000000000014 +# YAML-NEXT: Symbol: main +# YAML-NEXT: Type: R_NDS32_HI20_RELA +# YAML-NEXT: Addend: 4 +# YAML-NEXT: - Offset: 0x000000000000001C +# YAML-NEXT: Symbol: main +# YAML-NEXT: Type: R_NDS32_LO12S0_RELA +# YAML-NEXT: Addend: 8 +# YAML-NEXT: - Offset: 0x0000000000000020 +# YAML-NEXT: Symbol: .rodata +# YAML-NEXT: Type: R_NDS32_16 +# YAML-NEXT: - Offset: 0x0000000000000024 +# YAML-NEXT: Symbol: .rodata +# YAML-NEXT: Type: R_NDS32_32 +# YAML-NEXT: - Offset: 0x0000000000000028 +# YAML-NEXT: Symbol: printf +# YAML-NEXT: Type: R_NDS32_9_PCREL_RELA +# YAML-NEXT: - Offset: 0x0000000000000030 +# YAML-NEXT: Symbol: printf +# YAML-NEXT: Type: R_NDS32_15_PCREL_RELA +# YAML-NEXT: - Offset: 0x0000000000000034 +# YAML-NEXT: Symbol: printf +# YAML-NEXT: Type: R_NDS32_17_PCREL_RELA +# YAML-NEXT: - Offset: 0x0000000000000038 +# YAML-NEXT: Symbol: printf +# YAML-NEXT: Type: R_NDS32_25_PCREL_RELA + +--- !ELF +FileHeader: + Class: ELFCLASS32 + Data: ELFDATA2LSB + Type: ET_REL + Machine: EM_NDS32 + Flags: [] +Sections: + - Name: .text + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] + AddressAlign: 0x10 + Size: 0x60 + - Name: .rela.text + Type: SHT_RELA + Flags: [ SHF_INFO_LINK ] + AddressAlign: 0x8 + Info: .text + Relocations: + - Offset: 0x14 + Symbol: main + Type: R_NDS32_HI20_RELA + Addend: 4 + - Offset: 0x1C + Symbol: main + Type: R_NDS32_LO12S0_RELA + Addend: 8 + - Offset: 0x20 + Symbol: .rodata + Type: R_NDS32_16 + Addend: 0 + - Offset: 0x24 + Symbol: .rodata + Type: R_NDS32_32 + Addend: 0 + - Offset: 0x28 + Symbol: printf + Type: R_NDS32_9_PCREL_RELA + Addend: 0 + - Offset: 0x30 + Symbol: printf + Type: R_NDS32_15_PCREL_RELA + Addend: 0 + - Offset: 0x34 + Symbol: printf + Type: R_NDS32_17_PCREL_RELA + Addend: 0 + - Offset: 0x38 + Symbol: printf + Type: R_NDS32_25_PCREL_RELA + Addend: 0 + - Name: .rodata + Type: SHT_PROGBITS + Flags: [ SHF_ALLOC ] + AddressAlign: 0x10 + Size: 0x0F + +Symbols: + Local: + - Name: .text + Type: STT_SECTION + Section: .text + - Name: .rodata + Type: STT_SECTION + Section: .rodata + Global: + - Name: main + Type: STT_FUNC + Section: .text + Size: 0x58 + - Name: printf +... Index: test/Object/NDS32/lit.local.cfg =================================================================== --- /dev/null +++ test/Object/NDS32/lit.local.cfg @@ -0,0 +1,2 @@ +if not 'NDS32' in config.root.targets: + config.unsupported = True Index: test/tools/llvm-readobj/reloc-types.test =================================================================== --- test/tools/llvm-readobj/reloc-types.test +++ test/tools/llvm-readobj/reloc-types.test @@ -11,6 +11,7 @@ RUN: llvm-readobj -r -expand-relocs %p/Inputs/relocs.obj.elf-mips | FileCheck %s -check-prefix ELF-MIPS RUN: llvm-readobj -r -expand-relocs %p/Inputs/relocs.obj.elf-mips64el | FileCheck %s -check-prefix ELF-MIPS64EL RUN: llvm-readobj -r -expand-relocs %p/Inputs/relocs.obj.elf-ppc64 | FileCheck %s -check-prefix ELF-PPC64 +RUN: llvm-readobj -r -expand-relocs %p/Inputs/relocs.obj.elf-nds32 | FileCheck %s -check-prefix ELF-NDS32 RUN: llvm-readobj -r -expand-relocs %p/Inputs/relocs.obj.coff-i386 | FileCheck %s -check-prefix COFF-32 RUN: llvm-readobj -r -expand-relocs %p/Inputs/relocs.obj.coff-x86_64 | FileCheck %s -check-prefix COFF-64 RUN: llvm-readobj -r -expand-relocs %p/Inputs/relocs.obj.macho-arm | FileCheck %s -check-prefix MACHO-ARM @@ -606,6 +607,130 @@ ELF-HEXAGON: Type: R_HEX_TPREL_16_X (84) ELF-HEXAGON: Type: R_HEX_TPREL_11_X (85) +ELF-NDS32: Type: R_NDS32_NONE (0) +ELF-NDS32: Type: R_NDS32_16 (1) +ELF-NDS32: Type: R_NDS32_32 (2) +ELF-NDS32: Type: R_NDS32_20 (3) +ELF-NDS32: Type: R_NDS32_GNU_VTINHERIT (17) +ELF-NDS32: Type: R_NDS32_GNU_VTENTRY (18) +ELF-NDS32: Type: R_NDS32_16_RELA (19) +ELF-NDS32: Type: R_NDS32_32_RELA (20) +ELF-NDS32: Type: R_NDS32_20_RELA (21) +ELF-NDS32: Type: R_NDS32_9_PCREL_RELA (22) +ELF-NDS32: Type: R_NDS32_15_PCREL_RELA (23) +ELF-NDS32: Type: R_NDS32_17_PCREL_RELA (24) +ELF-NDS32: Type: R_NDS32_25_PCREL_RELA (25) +ELF-NDS32: Type: R_NDS32_HI20_RELA (26) +ELF-NDS32: Type: R_NDS32_LO12S3_RELA (27) +ELF-NDS32: Type: R_NDS32_LO12S2_RELA (28) +ELF-NDS32: Type: R_NDS32_LO12S1_RELA (29) +ELF-NDS32: Type: R_NDS32_LO12S0_RELA (30) +ELF-NDS32: Type: R_NDS32_SDA15S3_RELA (31) +ELF-NDS32: Type: R_NDS32_SDA15S2_RELA (32) +ELF-NDS32: Type: R_NDS32_SDA15S1_RELA (33) +ELF-NDS32: Type: R_NDS32_SDA15S0_RELA (34) +ELF-NDS32: Type: R_NDS32_RELA_GNU_VTINHERIT (35) +ELF-NDS32: Type: R_NDS32_RELA_GNU_VTENTRY (36) +ELF-NDS32: Type: R_NDS32_GOT20 (37) +ELF-NDS32: Type: R_NDS32_25_PLTREL (38) +ELF-NDS32: Type: R_NDS32_COPY (39) +ELF-NDS32: Type: R_NDS32_GLOB_DAT (40) +ELF-NDS32: Type: R_NDS32_JMP_SLOT (41) +ELF-NDS32: Type: R_NDS32_RELATIVE (42) +ELF-NDS32: Type: R_NDS32_GOTOFF (43) +ELF-NDS32: Type: R_NDS32_GOTPC20 (44) +ELF-NDS32: Type: R_NDS32_GOT_HI20 (45) +ELF-NDS32: Type: R_NDS32_GOT_LO12 (46) +ELF-NDS32: Type: R_NDS32_GOTPC_HI20 (47) +ELF-NDS32: Type: R_NDS32_GOTPC_LO12 (48) +ELF-NDS32: Type: R_NDS32_GOTOFF_HI20 (49) +ELF-NDS32: Type: R_NDS32_GOTOFF_LO12 (50) +ELF-NDS32: Type: R_NDS32_INSN16 (51) +ELF-NDS32: Type: R_NDS32_LABEL (52) +ELF-NDS32: Type: R_NDS32_LONGCALL1 (53) +ELF-NDS32: Type: R_NDS32_LONGCALL2 (54) +ELF-NDS32: Type: R_NDS32_LONGCALL3 (55) +ELF-NDS32: Type: R_NDS32_LONGJUMP1 (56) +ELF-NDS32: Type: R_NDS32_LONGJUMP2 (57) +ELF-NDS32: Type: R_NDS32_LONGJUMP3 (58) +ELF-NDS32: Type: R_NDS32_LOADSTORE (59) +ELF-NDS32: Type: R_NDS32_9_FIXED_RELA (60) +ELF-NDS32: Type: R_NDS32_15_FIXED_RELA (61) +ELF-NDS32: Type: R_NDS32_17_FIXED_RELA (62) +ELF-NDS32: Type: R_NDS32_25_FIXED_RELA (63) +ELF-NDS32: Type: R_NDS32_PLTREL_HI20 (64) +ELF-NDS32: Type: R_NDS32_PLTREL_LO12 (65) +ELF-NDS32: Type: R_NDS32_PLT_GOTREL_HI20 (66) +ELF-NDS32: Type: R_NDS32_PLT_GOTREL_LO12 (67) +ELF-NDS32: Type: R_NDS32_SDA12S2_DP_RELA (68) +ELF-NDS32: Type: R_NDS32_SDA12S2_SP_RELA (69) +ELF-NDS32: Type: R_NDS32_LO12S2_DP_RELA (70) +ELF-NDS32: Type: R_NDS32_LO12S2_SP_RELA (71) +ELF-NDS32: Type: R_NDS32_LO12S0_ORI_RELA (72) +ELF-NDS32: Type: R_NDS32_SDA16S3_RELA (73) +ELF-NDS32: Type: R_NDS32_SDA17S2_RELA (74) +ELF-NDS32: Type: R_NDS32_SDA18S1_RELA (75) +ELF-NDS32: Type: R_NDS32_SDA19S0_RELA (76) +ELF-NDS32: Type: R_NDS32_DWARF2_OP1_RELA (77) +ELF-NDS32: Type: R_NDS32_DWARF2_OP2_RELA (78) +ELF-NDS32: Type: R_NDS32_DWARF2_LEB_RELA (79) +ELF-NDS32: Type: R_NDS32_UPDATE_TA_RELA (80) +ELF-NDS32: Type: R_NDS32_9_PLTREL (81) +ELF-NDS32: Type: R_NDS32_PLT_GOTREL_LO20 (82) +ELF-NDS32: Type: R_NDS32_PLT_GOTREL_LO15 (83) +ELF-NDS32: Type: R_NDS32_PLT_GOTREL_LO19 (84) +ELF-NDS32: Type: R_NDS32_GOT_LO15 (85) +ELF-NDS32: Type: R_NDS32_GOT_LO19 (86) +ELF-NDS32: Type: R_NDS32_GOTOFF_LO15 (87) +ELF-NDS32: Type: R_NDS32_GOTOFF_LO19 (88) +ELF-NDS32: Type: R_NDS32_GOT15S2_RELA (89) +ELF-NDS32: Type: R_NDS32_GOT17S2_RELA (90) +ELF-NDS32: Type: R_NDS32_5_RELA (91) +ELF-NDS32: Type: R_NDS32_10_UPCREL_RELA (92) +ELF-NDS32: Type: R_NDS32_SDA_FP7U2_RELA (93) +ELF-NDS32: Type: R_NDS32_WORD_9_PCREL_RELA (94) +ELF-NDS32: Type: R_NDS32_25_ABS_RELA (95) +ELF-NDS32: Type: R_NDS32_17IFC_PCREL_RELA (96) +ELF-NDS32: Type: R_NDS32_10IFCU_PCREL_RELA (97) +ELF-NDS32: Type: R_NDS32_TLS_LE_HI20 (98) +ELF-NDS32: Type: R_NDS32_TLS_LE_LO12 (99) +ELF-NDS32: Type: R_NDS32_TLS_IE_HI20 (100) +ELF-NDS32: Type: R_NDS32_TLS_IE_LO12S2 (101) +ELF-NDS32: Type: R_NDS32_TLS_TPOFF (102) +ELF-NDS32: Type: R_NDS32_TLS_LE_20 (103) +ELF-NDS32: Type: R_NDS32_TLS_LE_15S0 (104) +ELF-NDS32: Type: R_NDS32_TLS_LE_15S1 (105) +ELF-NDS32: Type: R_NDS32_TLS_LE_15S2 (106) +ELF-NDS32: Type: R_NDS32_LONGCALL4 (107) +ELF-NDS32: Type: R_NDS32_LONGCALL5 (108) +ELF-NDS32: Type: R_NDS32_LONGCALL6 (109) +ELF-NDS32: Type: R_NDS32_LONGJUMP4 (110) +ELF-NDS32: Type: R_NDS32_LONGJUMP5 (111) +ELF-NDS32: Type: R_NDS32_LONGJUMP6 (112) +ELF-NDS32: Type: R_NDS32_LONGJUMP7 (113) +ELF-NDS32: Type: R_NDS32_RELAX_ENTRY (192) +ELF-NDS32: Type: R_NDS32_GOT_SUFF (193) +ELF-NDS32: Type: R_NDS32_GOTOFF_SUFF (194) +ELF-NDS32: Type: R_NDS32_PLT_GOT_SUFF (195) +ELF-NDS32: Type: R_NDS32_MULCALL_SUFF (196) +ELF-NDS32: Type: R_NDS32_PTR (197) +ELF-NDS32: Type: R_NDS32_PTR_COUNT (198) +ELF-NDS32: Type: R_NDS32_PTR_RESOLVED (199) +ELF-NDS32: Type: R_NDS32_PLTBLOCK (200) +ELF-NDS32: Type: R_NDS32_RELAX_REGION_BEGIN (201) +ELF-NDS32: Type: R_NDS32_RELAX_REGION_END (202) +ELF-NDS32: Type: R_NDS32_MINUEND (203) +ELF-NDS32: Type: R_NDS32_SUBTRAHEND (204) +ELF-NDS32: Type: R_NDS32_DIFF8 (205) +ELF-NDS32: Type: R_NDS32_DIFF16 (206) +ELF-NDS32: Type: R_NDS32_DIFF32 (207) +ELF-NDS32: Type: R_NDS32_DIFF_ULEB128 (208) +ELF-NDS32: Type: R_NDS32_DATA (209) +ELF-NDS32: Type: R_NDS32_TRAN (210) +ELF-NDS32: Type: R_NDS32_TLS_LE_ADD (211) +ELF-NDS32: Type: R_NDS32_TLS_LE_LS (212) +ELF-NDS32: Type: R_NDS32_EMPTY (213) + COFF-32: Type: IMAGE_REL_I386_ABSOLUTE (0) COFF-32: Type: IMAGE_REL_I386_DIR16 (1) COFF-32: Type: IMAGE_REL_I386_REL16 (2) Index: tools/llvm-objdump/llvm-objdump.cpp =================================================================== --- tools/llvm-objdump/llvm-objdump.cpp +++ tools/llvm-objdump/llvm-objdump.cpp @@ -738,6 +738,7 @@ case ELF::EM_MIPS: case ELF::EM_BPF: case ELF::EM_RISCV: + case ELF::EM_NDS32: res = Target; break; case ELF::EM_WEBASSEMBLY: Index: tools/llvm-readobj/ELFDumper.cpp =================================================================== --- tools/llvm-readobj/ELFDumper.cpp +++ tools/llvm-readobj/ELFDumper.cpp @@ -822,6 +822,7 @@ ENUM_ENT(EM_SPARCV9, "Sparc v9"), ENUM_ENT(EM_TRICORE, "Siemens Tricore"), ENUM_ENT(EM_ARC, "ARC"), + ENUM_ENT(EM_NDS32, "NDS32"), ENUM_ENT(EM_H8_300, "Hitachi H8/300"), ENUM_ENT(EM_H8_300H, "Hitachi H8/300H"), ENUM_ENT(EM_H8S, "Hitachi H8S"),