Print this page
6066 dis: support for System/370, System/390, and z/Architecture ELF bins
@@ -23,10 +23,11 @@
* Copyright 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*
* Copyright 2011 Jason King. All rights reserved.
* Copyright 2012 Joshua M. Clulow <josh@sysmgr.org>
+ * Copyright 2015 Josef 'Jeff' Sipek <jeffpc@josefsipek.net>
*/
#include <ctype.h>
#include <getopt.h>
#include <stdio.h>
@@ -544,10 +545,36 @@
case EM_AMD64:
g_flags |= DIS_X86_SIZE64;
break;
+ case EM_S370:
+ g_flags |= DIS_S370;
+
+ if (ehdr.e_ident[EI_CLASS] != ELFCLASS32 ||
+ ehdr.e_ident[EI_DATA] != ELFDATA2MSB) {
+ warn("invalid E_IDENT field for S370 object");
+ return;
+ }
+ break;
+
+ case EM_S390:
+ if (ehdr.e_ident[EI_CLASS] == ELFCLASS32) {
+ g_flags |= DIS_S390_31;
+ } else if (ehdr.e_ident[EI_CLASS] == ELFCLASS64) {
+ g_flags |= DIS_S390_64;
+ } else {
+ warn("invalid E_IDENT field for S390 object");
+ return;
+ }
+
+ if (ehdr.e_ident[EI_DATA] != ELFDATA2MSB) {
+ warn("invalid E_IDENT field for S390 object");
+ return;
+ }
+ break;
+
default:
die("%s: unsupported ELF machine 0x%x", filename,
ehdr.e_machine);
}