svn commit: r358708 - head/contrib/elftoolchain/readelf
Ed Maste
emaste at FreeBSD.org
Fri Mar 6 15:58:53 UTC 2020
Author: emaste
Date: Fri Mar 6 15:58:52 2020
New Revision: 358708
URL: https://svnweb.freebsd.org/changeset/base/358708
Log:
readelf: decode and print Xen ELF note strings
Sponsored by: The FreeBSD Foundation
Modified:
head/contrib/elftoolchain/readelf/readelf.c
Modified: head/contrib/elftoolchain/readelf/readelf.c
==============================================================================
--- head/contrib/elftoolchain/readelf/readelf.c Fri Mar 6 15:57:21 2020 (r358707)
+++ head/contrib/elftoolchain/readelf/readelf.c Fri Mar 6 15:58:52 2020 (r358708)
@@ -3677,6 +3677,33 @@ static struct flag_desc note_feature_ctl_flags[] = {
};
static void
+dump_note_string(const char *description, const char *s, size_t len)
+{
+ size_t i;
+ int printable = 1;
+
+ if (len == 0 || s[--len] != '\0') {
+ printable = 0;
+ } else {
+ for (i = 0; i < len; i++) {
+ if (!isprint(s[i])) {
+ printable = 0;
+ break;
+ }
+ }
+ }
+
+ if (printable) {
+ printf(" %s: %s\n", description, s);
+ } else {
+ printf(" description data:");
+ for (i = 0; i < len; i++)
+ printf(" %02x", (unsigned char)s[i]);
+ printf("\n");
+ }
+}
+
+static void
dump_notes_data(struct readelf *re, const char *name, uint32_t type,
const char *buf, size_t sz)
{
@@ -3714,6 +3741,30 @@ dump_notes_data(struct readelf *re, const char *name,
switch (type) {
case NT_GNU_PROPERTY_TYPE_0:
dump_gnu_property_type_0(re, buf, sz);
+ return;
+ }
+ } else if (strcmp(name, "Xen") == 0) {
+ switch (type) {
+ case 5:
+ dump_note_string("Xen version", buf, sz);
+ return;
+ case 6:
+ dump_note_string("Guest OS", buf, sz);
+ return;
+ case 7:
+ dump_note_string("Guest version", buf, sz);
+ return;
+ case 8:
+ dump_note_string("Loader", buf, sz);
+ return;
+ case 9:
+ dump_note_string("PAE mode", buf, sz);
+ return;
+ case 10:
+ dump_note_string("Features", buf, sz);
+ return;
+ case 11:
+ dump_note_string("BSD symtab", buf, sz);
return;
}
}
More information about the svn-src-all
mailing list