From 8c7b6a92a909c0fa269439ce06335e7b60baa451 Mon Sep 17 00:00:00 2001 From: midipix Date: Mon, 14 Nov 2016 23:09:50 -0500 Subject: info api: pe_get_image_abi(): initial implementation. --- src/logic/pe_get_image_abi.c | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/logic/pe_get_image_abi.c (limited to 'src/logic') diff --git a/src/logic/pe_get_image_abi.c b/src/logic/pe_get_image_abi.c new file mode 100644 index 0000000..7219ba3 --- /dev/null +++ b/src/logic/pe_get_image_abi.c @@ -0,0 +1,40 @@ +/***************************************************************/ +/* perk: PE Resource Kit */ +/* Copyright (C) 2015--2016 Z. Gilboa */ +/* Released under GPLv2 and GPLv3; see COPYING.PERK. */ +/***************************************************************/ + +#include + +#include +#include + +static const char const * pe_abi_str[PE_ABI_CAP] = { + [PE_ABI_UNSUPPORTED] = "UNSUPPORTED", + [PE_ABI_PE32] = "PE32", + [PE_ABI_PE64] = "PE64", +}; + +int pe_get_image_abi(const struct pe_image_meta * m, struct pe_info_string * infostr) +{ + int abi; + + switch (m->opt.std.magic) { + case PE_MAGIC_PE32: + abi = PE_ABI_PE32; + break; + + case PE_MAGIC_PE32_PLUS: + abi = PE_ABI_PE64; + break; + + default: + abi = PE_ABI_UNSUPPORTED; + break; + } + + if (infostr) + strcpy(infostr->buffer,pe_abi_str[abi]); + + return abi; +} -- cgit v1.2.3