base: Expose the ObjectFile class to python.

This will make it possible to inspect a binary and determine, for
example, what architecture or operating system it was compiled for.

Change-Id: Ib40f1e1c02448dc5bf084bb0dd98d3767f463fef
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/33899
Reviewed-by: Andreas Sandberg <andreas.sandberg@arm.com>
Maintainer: Andreas Sandberg <andreas.sandberg@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
This commit is contained in:
Gabe Black
2020-08-31 21:13:06 -07:00
parent a21573cef0
commit 7e8bc77353
4 changed files with 116 additions and 0 deletions

View File

@@ -38,6 +38,60 @@ namespace Loader
ObjectFile::ObjectFile(ImageFileDataPtr ifd) : ImageFile(ifd) {}
const char *
archToString(Arch arch)
{
switch (arch) {
case UnknownArch:
return "unknown";
case SPARC64:
return "sparc64";
case SPARC32:
return "sparc32";
case Mips:
return "mips";
case X86_64:
return "x86_64";
case I386:
return "i386";
case Arm64:
return "arm64";
case Arm:
return "arm";
case Thumb:
return "thumb";
case Power:
return "power";
case Riscv64:
return "riscv64";
case Riscv32:
return "riscv32";
default:
panic("Unrecognized arch %d.", arch);
}
}
const char *
opSysToString(OpSys op_sys)
{
switch (op_sys) {
case UnknownOpSys:
return "unknown";
case Tru64:
return "tru64";
case Linux:
return "linux";
case Solaris:
return "solaris";
case LinuxArmOABI:
return "linux_arm_OABI";
case FreeBSD:
return "freebsd";
default:
panic("Unrecognized operating system %d.", op_sys);
}
}
namespace
{