summaryrefslogtreecommitdiffstats
path: root/contrib/elftoolchain
diff options
context:
space:
mode:
authoremaste <emaste@FreeBSD.org>2015-12-03 12:21:18 +0000
committeremaste <emaste@FreeBSD.org>2015-12-03 12:21:18 +0000
commit7e478f47e9fcf4393708e1111c3c84ad230b6cbc (patch)
tree0067d6f329f833257f538410430f66626d6dfd42 /contrib/elftoolchain
parent442aaceec584716da33165adf00f0f258e23a75b (diff)
downloadFreeBSD-src-7e478f47e9fcf4393708e1111c3c84ad230b6cbc.zip
FreeBSD-src-7e478f47e9fcf4393708e1111c3c84ad230b6cbc.tar.gz
readelf: add Xen ELF notes
Reviewed by: kib Sponsored by: The FreeBSD Foundation Differential Revision: https://reviews.freebsd.org/D4356
Diffstat (limited to 'contrib/elftoolchain')
-rw-r--r--contrib/elftoolchain/readelf/readelf.c29
1 files changed, 29 insertions, 0 deletions
diff --git a/contrib/elftoolchain/readelf/readelf.c b/contrib/elftoolchain/readelf/readelf.c
index a1e1931..f197403 100644
--- a/contrib/elftoolchain/readelf/readelf.c
+++ b/contrib/elftoolchain/readelf/readelf.c
@@ -332,6 +332,7 @@ static const char *note_type_gnu(unsigned int nt);
static const char *note_type_netbsd(unsigned int nt);
static const char *note_type_openbsd(unsigned int nt);
static const char *note_type_unknown(unsigned int nt);
+static const char *note_type_xen(unsigned int nt);
static const char *option_kind(uint8_t kind);
static const char *phdr_type(unsigned int ptype);
static const char *ppc_abi_fp(uint64_t fp);
@@ -1585,6 +1586,8 @@ note_type(const char *name, unsigned int et, unsigned int nt)
return note_type_netbsd(nt);
else if (strcmp(name, "OpenBSD") == 0 && et != ET_CORE)
return note_type_openbsd(nt);
+ else if (strcmp(name, "Xen") == 0 && et != ET_CORE)
+ return note_type_xen(nt);
return note_type_unknown(nt);
}
@@ -1693,6 +1696,32 @@ note_type_unknown(unsigned int nt)
return (s_nt);
}
+static const char *
+note_type_xen(unsigned int nt)
+{
+ switch (nt) {
+ case 0: return "XEN_ELFNOTE_INFO";
+ case 1: return "XEN_ELFNOTE_ENTRY";
+ case 2: return "XEN_ELFNOTE_HYPERCALL_PAGE";
+ case 3: return "XEN_ELFNOTE_VIRT_BASE";
+ case 4: return "XEN_ELFNOTE_PADDR_OFFSET";
+ case 5: return "XEN_ELFNOTE_XEN_VERSION";
+ case 6: return "XEN_ELFNOTE_GUEST_OS";
+ case 7: return "XEN_ELFNOTE_GUEST_VERSION";
+ case 8: return "XEN_ELFNOTE_LOADER";
+ case 9: return "XEN_ELFNOTE_PAE_MODE";
+ case 10: return "XEN_ELFNOTE_FEATURES";
+ case 11: return "XEN_ELFNOTE_BSD_SYMTAB";
+ case 12: return "XEN_ELFNOTE_HV_START_LOW";
+ case 13: return "XEN_ELFNOTE_L1_MFN_VALID";
+ case 14: return "XEN_ELFNOTE_SUSPEND_CANCEL";
+ case 15: return "XEN_ELFNOTE_INIT_P2M";
+ case 16: return "XEN_ELFNOTE_MOD_START_PFN";
+ case 17: return "XEN_ELFNOTE_SUPPORTED_FEATURES";
+ default: return (note_type_unknown(nt));
+ }
+}
+
static struct {
const char *name;
int value;
OpenPOWER on IntegriCloud