forked from yath/ghidra-xtensa
Added load elf and dummy instructions
This commit is contained in:
@ -314,6 +314,45 @@ macro extract_bit(val, bit, result) {
|
||||
call [dst];
|
||||
}
|
||||
|
||||
# ENTRY - Subroutine Entry, pg. 340.
|
||||
:entry as, u15_12.23_sb3 is u15_12.23_sb3 & as & u2_6.7 = 0b00 & u2_4.5 = 0b11 & op0 = 0b0110 {
|
||||
#as=as-u15_12.23_sb3;
|
||||
}
|
||||
|
||||
# if (u15_12.23_sb3 ==4)
|
||||
# goto <shift4>;
|
||||
# if (u15_12.23_sb3 ==8)
|
||||
# goto <shift8>;
|
||||
# if (u15_12.23_sb3 ==12)
|
||||
# goto <shift12>;
|
||||
# <shift4>
|
||||
# a2=a6;
|
||||
# a3=a7;
|
||||
# a4=a8;
|
||||
# a5=a9;
|
||||
# a6=a10;
|
||||
# a7=a11;
|
||||
# a8=a12;
|
||||
# a9=a13;
|
||||
# a10=a14;
|
||||
# a11=a15;
|
||||
# goto <end>;
|
||||
# <shift8>
|
||||
# a2=a10;
|
||||
# a3=a11;
|
||||
# a4=a12;
|
||||
# a5=a13;
|
||||
# a6=a14;
|
||||
# a7=a15;
|
||||
# goto <end>;
|
||||
# <shift12>
|
||||
# a2=a14;
|
||||
# a3=a15;
|
||||
# <end>
|
||||
|
||||
|
||||
|
||||
|
||||
# CEIL.S - Ceiling Single to Fixed, pg. 311.
|
||||
:ceil.s ar, fs, u4_4.7 is op2 = 0b1011 & op1 = 0b1010 & ar & fs & u4_4.7 & op0 = 0 {
|
||||
local scale:4 = int2float(1:1 << u4_4.7:1);
|
||||
|
@ -1,25 +1,79 @@
|
||||
## Windowed Register Option ##
|
||||
|
||||
# CALL4 - Call PC-relative, Rotate Window by 4, pg. 298.
|
||||
:call4 srel_6.23_sb2 is srel_6.23_sb2 & u2_4.5 = 0b01 & op0 = 0b0101 unimpl
|
||||
:call4 srel_6.23_sb2 is srel_6.23_sb2 & u2_4.5 = 0b01 & op0 = 0b0101 {
|
||||
local dst = srel_6.23_sb2;
|
||||
a2=a6;
|
||||
a3=a7;
|
||||
a4=a8;
|
||||
a5=a9;
|
||||
a0 = inst_start + 3;
|
||||
call [dst];
|
||||
}
|
||||
|
||||
# CALL8 - Call PC-relative, Rotate Window by 8, pg. 300.
|
||||
:call8 srel_6.23_sb2 is srel_6.23_sb2 & u2_4.5 = 0b10 & op0 = 0b0101 unimpl
|
||||
:call8 srel_6.23_sb2 is srel_6.23_sb2 & u2_4.5 = 0b10 & op0 = 0b0101 {
|
||||
local dst = srel_6.23_sb2;
|
||||
a2=a10;
|
||||
a3=a11;
|
||||
a4=a12;
|
||||
a5=a13;
|
||||
a6=a14;
|
||||
a7=a15;
|
||||
a0 = inst_start + 3;
|
||||
call [dst];
|
||||
}
|
||||
|
||||
# CALL12 - Call PC-relative, Rotate Window by 12, pg. 302.
|
||||
:call12 srel_6.23_sb2 is srel_6.23_sb2 & u2_4.5 = 0b11 & op0 = 0b0101 unimpl
|
||||
|
||||
# CALLX4 - Call Register, Rotate Window by 4, pg. 305.
|
||||
:callx4 as is op2 = 0 & op1 = 0 & ar = 0 & as & u2_6.7 = 0b11 & u2_4.5 = 0b01 & op0 = 0 unimpl
|
||||
|
||||
# CALLX8 - Call Register, Rotate Window by 8, pg. 307.
|
||||
:callx8 as is op2 = 0 & op1 = 0 & ar = 0 & as & u2_6.7 = 0b11 & u2_4.5 = 0b10 & op0 = 0 unimpl
|
||||
|
||||
# CALLX12 - Call Register, Rotate Window by 12, pg. 308.
|
||||
:callx12 as is op2 = 0 & op1 = 0 & ar = 0 & as & u2_6.7 = 0b11 & u2_4.5 = 0b11 & op0 = 0 unimpl
|
||||
:call12 srel_6.23_sb2 is srel_6.23_sb2 & u2_4.5 = 0b11 & op0 = 0b0101 {
|
||||
local dst = srel_6.23_sb2;
|
||||
a2=a14;
|
||||
a3=a15;
|
||||
a0 = inst_start + 3;
|
||||
call [dst];
|
||||
}
|
||||
|
||||
# ENTRY - Subroutine Entry, pg. 340.
|
||||
:entry as, u15_12.23_sb3 is u15_12.23_sb3 & as & u2_6.7 = 0b00 & u2_4.5 = 0b11 & op0 = 0b0110 unimpl
|
||||
#:entry as, u15_12.23_sb3 is u15_12.23_sb3 & as & u2_6.7 = 0b00 & u2_4.5 = 0b11 & op0 = 0b0110 {
|
||||
# as normally a1
|
||||
# #a1=a1-u15_12.23_sb3;
|
||||
#}
|
||||
|
||||
|
||||
# CALLX4 - Call Register, Rotate Window by 4, pg. 305.
|
||||
:callx4 as is op2 = 0 & op1 = 0 & ar = 0 & as & u2_6.7 = 0b11 & u2_4.5 = 0b01 & op0 = 0 {
|
||||
local dst = as;
|
||||
a2=a6;
|
||||
a3=a7;
|
||||
a4=a8;
|
||||
a5=a9;
|
||||
a6=a10;
|
||||
a7=a11;
|
||||
a8=a12;
|
||||
a9=a13;
|
||||
a10=a14;
|
||||
a11=a15;
|
||||
a0 = inst_start + 3;
|
||||
call [dst];
|
||||
}
|
||||
|
||||
# CALLX8 - Call Register, Rotate Window by 8, pg. 307.
|
||||
:callx8 as is op2 = 0 & op1 = 0 & ar = 0 & as & u2_6.7 = 0b11 & u2_4.5 = 0b10 & op0 = 0 {
|
||||
local dst = as;
|
||||
a0 = inst_start + 3;
|
||||
call [dst];
|
||||
}
|
||||
|
||||
# CALLX12 - Call Register, Rotate Window by 12, pg. 308.
|
||||
:callx12 as is op2 = 0 & op1 = 0 & ar = 0 & as & u2_6.7 = 0b11 & u2_4.5 = 0b11 & op0 = 0 {
|
||||
local dst = as;
|
||||
a2=a14;
|
||||
a3=a15;
|
||||
a0 = inst_start + 3;
|
||||
call [dst];
|
||||
}
|
||||
|
||||
|
||||
|
||||
# L32E - Load 32-bit for Window Exceptions, pg. 376.
|
||||
:l32e at, as, s5_12.15_oex is op2 = 0 & op1 = 0b1001 & s5_12.15_oex & as & at & op0 = 0 unimpl
|
||||
@ -28,10 +82,13 @@
|
||||
:movsp at, as is op2 = 0 & op1 = 0 & ar = 0b0001 & as & at & op0 = 0 unimpl
|
||||
|
||||
# RETW - Windowed Return, pg. 480.
|
||||
:retw is op2 = 0 & ar = 0 & as = 0 & at = 0 & u2_18.19 = 0b10 & u2_16.17 = 0b01 & op0 = 0 unimpl
|
||||
:retw is op2 = 0 & ar = 0 & as = 0 & at = 0 & u2_18.19 = 0b10 & u2_16.17 = 0b01 & op0 = 0 {
|
||||
|
||||
}
|
||||
|
||||
# RETW.N - Narrow Windowed Return, pg. 482.
|
||||
:retw.n is n_ar = 0b1111 & n_as = 0 & n_at = 0b0001 & n_op0 = 0b1101 unimpl
|
||||
:retw.n is n_ar = 0b1111 & n_as = 0 & n_at = 0b0001 & n_op0 = 0b1101 {
|
||||
}
|
||||
|
||||
# ROTW - Rotate Window, pg. 496.
|
||||
:rotw s4_4.7 is op2 = 0b0100 & op1 = 0 & ar = 0b1000 & as = 0 & s4_4.7 & op0 = 0 unimpl
|
||||
|
@ -0,0 +1,58 @@
|
||||
package ghidra.app.util.bin.format.elf.relocation;
|
||||
|
||||
public class Xtensa_ElfRelocationConstants {
|
||||
/* Xtensa processor ELF architecture-magic number */
|
||||
|
||||
// EM_XTENSA is already definded
|
||||
public static final int EM_XTENSA_OLD = 0xABC7;
|
||||
|
||||
/* Xtensa relocations defined by the ABIs */
|
||||
|
||||
public static final int R_XTENSA_NONE = 0;
|
||||
public static final int R_XTENSA_32 = 1;
|
||||
public static final int R_XTENSA_RTLD = 2;
|
||||
public static final int R_XTENSA_GLOB_DAT = 3;
|
||||
public static final int R_XTENSA_JMP_SLOT = 4;
|
||||
public static final int R_XTENSA_RELATIVE = 5;
|
||||
public static final int R_XTENSA_PLT = 6;
|
||||
public static final int R_XTENSA_OP0 = 8;
|
||||
public static final int R_XTENSA_OP1 = 9;
|
||||
public static final int R_XTENSA_OP2 = 10;
|
||||
public static final int R_XTENSA_ASM_EXPAND = 11;
|
||||
public static final int R_XTENSA_ASM_SIMPLIFY = 12;
|
||||
public static final int R_XTENSA_GNU_VTINHERIT = 15;
|
||||
public static final int R_XTENSA_GNU_VTENTRY = 16;
|
||||
public static final int R_XTENSA_DIFF8 = 17;
|
||||
public static final int R_XTENSA_DIFF16 = 18;
|
||||
public static final int R_XTENSA_DIFF32 = 19;
|
||||
public static final int R_XTENSA_SLOT0_OP = 20;
|
||||
public static final int R_XTENSA_SLOT1_OP = 21;
|
||||
public static final int R_XTENSA_SLOT2_OP = 22;
|
||||
public static final int R_XTENSA_SLOT3_OP = 23;
|
||||
public static final int R_XTENSA_SLOT4_OP = 24;
|
||||
public static final int R_XTENSA_SLOT5_OP = 25;
|
||||
public static final int R_XTENSA_SLOT6_OP = 26;
|
||||
public static final int R_XTENSA_SLOT7_OP = 27;
|
||||
public static final int R_XTENSA_SLOT8_OP = 28;
|
||||
public static final int R_XTENSA_SLOT9_OP = 29;
|
||||
public static final int R_XTENSA_SLOT10_OP = 30;
|
||||
public static final int R_XTENSA_SLOT11_OP = 31;
|
||||
public static final int R_XTENSA_SLOT12_OP = 32;
|
||||
public static final int R_XTENSA_SLOT13_OP = 33;
|
||||
public static final int R_XTENSA_SLOT14_OP = 34;
|
||||
public static final int R_XTENSA_SLOT0_ALT = 35;
|
||||
public static final int R_XTENSA_SLOT1_ALT = 36;
|
||||
public static final int R_XTENSA_SLOT2_ALT = 37;
|
||||
public static final int R_XTENSA_SLOT3_ALT = 38;
|
||||
public static final int R_XTENSA_SLOT4_ALT = 39;
|
||||
public static final int R_XTENSA_SLOT5_ALT = 40;
|
||||
public static final int R_XTENSA_SLOT6_ALT = 41;
|
||||
public static final int R_XTENSA_SLOT7_ALT = 42;
|
||||
public static final int R_XTENSA_SLOT8_ALT = 43;
|
||||
public static final int R_XTENSA_SLOT9_ALT = 44;
|
||||
public static final int R_XTENSA_SLOT10_ALT = 45;
|
||||
public static final int R_XTENSA_SLOT11_ALT = 46;
|
||||
public static final int R_XTENSA_SLOT12_ALT = 47;
|
||||
public static final int R_XTENSA_SLOT13_ALT = 48;
|
||||
public static final int R_XTENSA_SLOT14_ALT = 49;
|
||||
}
|
@ -0,0 +1,292 @@
|
||||
package ghidra.app.util.bin.format.elf.relocation;
|
||||
|
||||
import ghidra.app.util.bin.format.elf.ElfConstants;
|
||||
import ghidra.app.util.bin.format.elf.ElfHeader;
|
||||
import ghidra.app.util.bin.format.elf.ElfRelocation;
|
||||
import ghidra.app.util.bin.format.elf.ElfSymbol;
|
||||
import ghidra.program.model.address.Address;
|
||||
import ghidra.program.model.listing.Program;
|
||||
import ghidra.program.model.mem.Memory;
|
||||
import ghidra.program.model.mem.MemoryAccessException;
|
||||
import ghidra.util.exception.NotFoundException;
|
||||
|
||||
public class Xtensa_ElfRelocationHandler extends ElfRelocationHandler {
|
||||
|
||||
@Override
|
||||
public boolean canRelocate(ElfHeader elf) {
|
||||
return elf.e_machine() == ElfConstants.EM_XTENSA ||
|
||||
elf.e_machine() == Xtensa_ElfRelocationConstants.EM_XTENSA_OLD;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void relocate(ElfRelocationContext elfRelocationContext, ElfRelocation relocation, Address relocationAddress)
|
||||
throws MemoryAccessException, NotFoundException {
|
||||
ElfHeader elf = elfRelocationContext.getElfHeader();
|
||||
if (!canRelocate(elf)) {
|
||||
return;
|
||||
}
|
||||
|
||||
int type=relocation.getType();
|
||||
if (Xtensa_ElfRelocationConstants.R_XTENSA_NONE == type) {
|
||||
return;
|
||||
}
|
||||
|
||||
Program program = elfRelocationContext.getProgram();
|
||||
Memory memory = program.getMemory();
|
||||
|
||||
long addend = relocation.hasAddend() ? relocation.getAddend() : memory.getInt(relocationAddress);
|
||||
long offset = relocationAddress.getOffset();
|
||||
long base = elfRelocationContext.getImageBaseWordAdjustmentOffset();
|
||||
ElfSymbol sym = null;
|
||||
long symbolValue = 0;
|
||||
String symbolName = null;
|
||||
|
||||
int symbolIndex = relocation.getSymbolIndex();
|
||||
if (symbolIndex != 0) {
|
||||
sym = elfRelocationContext.getSymbol(symbolIndex);
|
||||
}
|
||||
|
||||
if (null != sym) {
|
||||
symbolValue = elfRelocationContext.getSymbolValue(sym);
|
||||
symbolName = sym.getNameAsString();
|
||||
}
|
||||
|
||||
switch(type) {
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_32:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_32",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_RTLD:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_RTLD",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_GLOB_DAT:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_GLOB_DAT",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_JMP_SLOT:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_JMP_SLOT",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_RELATIVE:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_RELATIVE",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_PLT:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_PLT",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_OP0:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_OP0",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_OP1:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_OP1",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_OP2:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_OP2",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_ASM_EXPAND:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_ASM_EXPAND",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_ASM_SIMPLIFY:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_ASM_SIMPLIFY",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_GNU_VTINHERIT:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_GNU_VTINHERIT",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_GNU_VTENTRY:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_GNU_VTENTRY",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_DIFF8:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_DIFF8",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_DIFF16:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_DIFF16",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_DIFF32:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_DIFF32",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_SLOT0_OP:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_SLOT0_OP",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_SLOT1_OP:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_SLOT1_OP",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_SLOT2_OP:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_SLOT2_OP",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_SLOT3_OP:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_SLOT3_OP",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_SLOT4_OP:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_SLOT4_OP",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_SLOT5_OP:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_SLOT5_OP",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_SLOT6_OP:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_SLOT6_OP",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_SLOT7_OP:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_SLOT7_OP",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_SLOT8_OP:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_SLOT8_OP",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_SLOT9_OP:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_SLOT9_OP",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_SLOT10_OP:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_SLOT10_OP",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_SLOT11_OP:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_SLOT11_OP",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_SLOT12_OP:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_SLOT12_OP",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_SLOT13_OP:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_SLOT13_OP",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_SLOT14_OP:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_SLOT14_OP",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_SLOT0_ALT:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_SLOT0_ALT",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_SLOT1_ALT:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_SLOT1_ALT",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_SLOT2_ALT:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_SLOT2_ALT",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_SLOT3_ALT:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_SLOT3_ALT",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_SLOT4_ALT:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_SLOT4_ALT",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_SLOT5_ALT:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_SLOT5_ALT",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_SLOT6_ALT:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_SLOT6_ALT",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_SLOT7_ALT:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_SLOT7_ALT",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_SLOT8_ALT:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_SLOT8_ALT",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_SLOT9_ALT:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_SLOT9_ALT",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_SLOT10_ALT:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_SLOT10_ALT",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_SLOT11_ALT:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_SLOT11_ALT",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_SLOT12_ALT:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_SLOT12_ALT",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_SLOT13_ALT:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_SLOT13_ALT",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
case Xtensa_ElfRelocationConstants.R_XTENSA_SLOT14_ALT:
|
||||
markAsWarning(program, relocationAddress, "R_XTENSA_SLOT14_ALT",
|
||||
symbolName, symbolIndex, "TODO, needs support ",
|
||||
elfRelocationContext.getLog());
|
||||
break;
|
||||
default:
|
||||
markAsUnhandled(program, relocationAddress, type, symbolIndex,
|
||||
symbolName, elfRelocationContext.getLog());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user