update to ida 7.6, add builds
This commit is contained in:
104
idasdk76/ldr/elf/common.cpp
Normal file
104
idasdk76/ldr/elf/common.cpp
Normal file
@@ -0,0 +1,104 @@
|
||||
/*
|
||||
* Interactive disassembler (IDA)
|
||||
* Copyright (c) 1990-98 by Ilfak Guilfanov.
|
||||
* E-mail: ig@datarescue.com
|
||||
* ELF binary loader.
|
||||
* Copyright (c) 1995-2006 by Iouri Kharon.
|
||||
* E-mail: yjh@styx.cabel.net
|
||||
*
|
||||
* ALL RIGHTS RESERVED.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <idp.hpp>
|
||||
|
||||
#include "elfbase.h"
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// Functions common for EFD & DEBUGGER
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
static bool dummy_error_handler(const reader_t &, reader_t::errcode_t, ...)
|
||||
{
|
||||
// ignore all errors
|
||||
return true;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
bool is_elf_file(linput_t *li)
|
||||
{
|
||||
reader_t reader(li);
|
||||
reader.set_handler(dummy_error_handler);
|
||||
return reader.read_ident() && reader.read_header();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
inline bool can_be_solaris(reader_t &reader)
|
||||
{
|
||||
switch ( reader.get_header().e_machine )
|
||||
{
|
||||
case EM_SPARC:
|
||||
case EM_SPARC32PLUS:
|
||||
case EM_SPARC64:
|
||||
case EM_386:
|
||||
case EM_486:
|
||||
case EM_X86_64:
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
int elf_machine_2_proc_module_id(reader_t &reader)
|
||||
{
|
||||
int id = -1;
|
||||
switch ( reader.get_header().e_machine )
|
||||
{
|
||||
#define CASE(E_ID, P_ID) case EM_##E_ID: id = PLFM_##P_ID; break
|
||||
CASE(ARM, ARM);
|
||||
CASE(SH, SH);
|
||||
CASE(PPC, PPC);
|
||||
CASE(PPC64, PPC);
|
||||
CASE(860, I860);
|
||||
CASE(68K, 68K);
|
||||
CASE(MIPS, MIPS);
|
||||
CASE(CISCO7200, MIPS);
|
||||
CASE(CISCO3620, MIPS);
|
||||
CASE(386, 386);
|
||||
CASE(486, 386);
|
||||
CASE(X86_64, 386);
|
||||
CASE(SPARC, SPARC);
|
||||
CASE(SPARC32PLUS, SPARC);
|
||||
CASE(SPARC64, SPARC);
|
||||
CASE(ALPHA, ALPHA);
|
||||
CASE(IA64, IA64);
|
||||
CASE(H8300, H8);
|
||||
CASE(H8300H, H8);
|
||||
CASE(H8S, H8);
|
||||
CASE(H8500, H8);
|
||||
CASE(V850, NEC_V850X);
|
||||
CASE(NECV850, NEC_V850X);
|
||||
CASE(PARISC, HPPA);
|
||||
CASE(6811, 6800);
|
||||
CASE(6812, MC6812);
|
||||
CASE(I960, I960);
|
||||
CASE(ARC, ARC);
|
||||
CASE(ARCOMPACT, ARC);
|
||||
CASE(ARC_COMPACT2, ARC);
|
||||
CASE(M32R, M32R);
|
||||
CASE(ST9, ST9);
|
||||
CASE(FR, FR);
|
||||
CASE(AVR, AVR);
|
||||
CASE(SPU, SPU);
|
||||
CASE(C166, C166);
|
||||
CASE(M16C, M16C);
|
||||
CASE(MN10200, MN102L00);
|
||||
// CASE(MN10300, MN103L00); // FIXME: Dunno what to do, here.
|
||||
// CASE(MCORE, MCORE); // FIXME: PLFM_MCORE still defined in mcore/reg.cpp
|
||||
CASE(S390, S390);
|
||||
#undef CASE
|
||||
}
|
||||
return id;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user