svn commit: r321045 - head/contrib/elftoolchain/readelf

Ed Maste emaste at FreeBSD.org
Sun Jul 16 12:30:41 UTC 2017


Author: emaste
Date: Sun Jul 16 12:30:39 2017
New Revision: 321045
URL: https://svnweb.freebsd.org/changeset/base/321045

Log:
  readelf: fix printing of DT_FILTER and some other DT_* values
  
  Some non-processor-specific DT_* values overlap the range DT_LOPROC to
  DT_HIPROC.  Handle common ones first, then the processor-specific ones.
  
  Obtained from:	ELF Tool Chain r3563
  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	Sun Jul 16 08:56:41 2017	(r321044)
+++ head/contrib/elftoolchain/readelf/readelf.c	Sun Jul 16 12:30:39 2017	(r321045)
@@ -783,6 +783,80 @@ dt_type(unsigned int mach, unsigned int dtype)
 {
 	static char s_dtype[32];
 
+	switch (dtype) {
+	case DT_NULL: return "NULL";
+	case DT_NEEDED: return "NEEDED";
+	case DT_PLTRELSZ: return "PLTRELSZ";
+	case DT_PLTGOT: return "PLTGOT";
+	case DT_HASH: return "HASH";
+	case DT_STRTAB: return "STRTAB";
+	case DT_SYMTAB: return "SYMTAB";
+	case DT_RELA: return "RELA";
+	case DT_RELASZ: return "RELASZ";
+	case DT_RELAENT: return "RELAENT";
+	case DT_STRSZ: return "STRSZ";
+	case DT_SYMENT: return "SYMENT";
+	case DT_INIT: return "INIT";
+	case DT_FINI: return "FINI";
+	case DT_SONAME: return "SONAME";
+	case DT_RPATH: return "RPATH";
+	case DT_SYMBOLIC: return "SYMBOLIC";
+	case DT_REL: return "REL";
+	case DT_RELSZ: return "RELSZ";
+	case DT_RELENT: return "RELENT";
+	case DT_PLTREL: return "PLTREL";
+	case DT_DEBUG: return "DEBUG";
+	case DT_TEXTREL: return "TEXTREL";
+	case DT_JMPREL: return "JMPREL";
+	case DT_BIND_NOW: return "BIND_NOW";
+	case DT_INIT_ARRAY: return "INIT_ARRAY";
+	case DT_FINI_ARRAY: return "FINI_ARRAY";
+	case DT_INIT_ARRAYSZ: return "INIT_ARRAYSZ";
+	case DT_FINI_ARRAYSZ: return "FINI_ARRAYSZ";
+	case DT_RUNPATH: return "RUNPATH";
+	case DT_FLAGS: return "FLAGS";
+	case DT_PREINIT_ARRAY: return "PREINIT_ARRAY";
+	case DT_PREINIT_ARRAYSZ: return "PREINIT_ARRAYSZ";
+	case DT_MAXPOSTAGS: return "MAXPOSTAGS";
+	case DT_SUNW_AUXILIARY: return "SUNW_AUXILIARY";
+	case DT_SUNW_RTLDINF: return "SUNW_RTLDINF";
+	case DT_SUNW_FILTER: return "SUNW_FILTER";
+	case DT_SUNW_CAP: return "SUNW_CAP";
+	case DT_CHECKSUM: return "CHECKSUM";
+	case DT_PLTPADSZ: return "PLTPADSZ";
+	case DT_MOVEENT: return "MOVEENT";
+	case DT_MOVESZ: return "MOVESZ";
+	case DT_FEATURE: return "FEATURE";
+	case DT_POSFLAG_1: return "POSFLAG_1";
+	case DT_SYMINSZ: return "SYMINSZ";
+	case DT_SYMINENT: return "SYMINENT";
+	case DT_GNU_HASH: return "GNU_HASH";
+	case DT_TLSDESC_PLT: return "DT_TLSDESC_PLT";
+	case DT_TLSDESC_GOT: return "DT_TLSDESC_GOT";
+	case DT_GNU_CONFLICT: return "GNU_CONFLICT";
+	case DT_GNU_LIBLIST: return "GNU_LIBLIST";
+	case DT_CONFIG: return "CONFIG";
+	case DT_DEPAUDIT: return "DEPAUDIT";
+	case DT_AUDIT: return "AUDIT";
+	case DT_PLTPAD: return "PLTPAD";
+	case DT_MOVETAB: return "MOVETAB";
+	case DT_SYMINFO: return "SYMINFO";
+	case DT_VERSYM: return "VERSYM";
+	case DT_RELACOUNT: return "RELACOUNT";
+	case DT_RELCOUNT: return "RELCOUNT";
+	case DT_FLAGS_1: return "FLAGS_1";
+	case DT_VERDEF: return "VERDEF";
+	case DT_VERDEFNUM: return "VERDEFNUM";
+	case DT_VERNEED: return "VERNEED";
+	case DT_VERNEEDNUM: return "VERNEEDNUM";
+	case DT_AUXILIARY: return "AUXILIARY";
+	case DT_USED: return "USED";
+	case DT_FILTER: return "FILTER";
+	case DT_GNU_PRELINKED: return "GNU_PRELINKED";
+	case DT_GNU_CONFLICTSZ: return "GNU_CONFLICTSZ";
+	case DT_GNU_LIBLISTSZ: return "GNU_LIBLISTSZ";
+	}
+
 	if (dtype >= DT_LOPROC && dtype <= DT_HIPROC) {
 		switch (mach) {
 		case EM_ARM:
@@ -903,86 +977,10 @@ dt_type(unsigned int mach, unsigned int dtype)
 		default:
 			break;
 		}
-		snprintf(s_dtype, sizeof(s_dtype), "<unknown: %#x>", dtype);
-		return (s_dtype);
 	}
 
-	switch (dtype) {
-	case DT_NULL: return "NULL";
-	case DT_NEEDED: return "NEEDED";
-	case DT_PLTRELSZ: return "PLTRELSZ";
-	case DT_PLTGOT: return "PLTGOT";
-	case DT_HASH: return "HASH";
-	case DT_STRTAB: return "STRTAB";
-	case DT_SYMTAB: return "SYMTAB";
-	case DT_RELA: return "RELA";
-	case DT_RELASZ: return "RELASZ";
-	case DT_RELAENT: return "RELAENT";
-	case DT_STRSZ: return "STRSZ";
-	case DT_SYMENT: return "SYMENT";
-	case DT_INIT: return "INIT";
-	case DT_FINI: return "FINI";
-	case DT_SONAME: return "SONAME";
-	case DT_RPATH: return "RPATH";
-	case DT_SYMBOLIC: return "SYMBOLIC";
-	case DT_REL: return "REL";
-	case DT_RELSZ: return "RELSZ";
-	case DT_RELENT: return "RELENT";
-	case DT_PLTREL: return "PLTREL";
-	case DT_DEBUG: return "DEBUG";
-	case DT_TEXTREL: return "TEXTREL";
-	case DT_JMPREL: return "JMPREL";
-	case DT_BIND_NOW: return "BIND_NOW";
-	case DT_INIT_ARRAY: return "INIT_ARRAY";
-	case DT_FINI_ARRAY: return "FINI_ARRAY";
-	case DT_INIT_ARRAYSZ: return "INIT_ARRAYSZ";
-	case DT_FINI_ARRAYSZ: return "FINI_ARRAYSZ";
-	case DT_RUNPATH: return "RUNPATH";
-	case DT_FLAGS: return "FLAGS";
-	case DT_PREINIT_ARRAY: return "PREINIT_ARRAY";
-	case DT_PREINIT_ARRAYSZ: return "PREINIT_ARRAYSZ";
-	case DT_MAXPOSTAGS: return "MAXPOSTAGS";
-	case DT_SUNW_AUXILIARY: return "SUNW_AUXILIARY";
-	case DT_SUNW_RTLDINF: return "SUNW_RTLDINF";
-	case DT_SUNW_FILTER: return "SUNW_FILTER";
-	case DT_SUNW_CAP: return "SUNW_CAP";
-	case DT_CHECKSUM: return "CHECKSUM";
-	case DT_PLTPADSZ: return "PLTPADSZ";
-	case DT_MOVEENT: return "MOVEENT";
-	case DT_MOVESZ: return "MOVESZ";
-	case DT_FEATURE: return "FEATURE";
-	case DT_POSFLAG_1: return "POSFLAG_1";
-	case DT_SYMINSZ: return "SYMINSZ";
-	case DT_SYMINENT: return "SYMINENT";
-	case DT_GNU_HASH: return "GNU_HASH";
-	case DT_TLSDESC_PLT: return "DT_TLSDESC_PLT";
-	case DT_TLSDESC_GOT: return "DT_TLSDESC_GOT";
-	case DT_GNU_CONFLICT: return "GNU_CONFLICT";
-	case DT_GNU_LIBLIST: return "GNU_LIBLIST";
-	case DT_CONFIG: return "CONFIG";
-	case DT_DEPAUDIT: return "DEPAUDIT";
-	case DT_AUDIT: return "AUDIT";
-	case DT_PLTPAD: return "PLTPAD";
-	case DT_MOVETAB: return "MOVETAB";
-	case DT_SYMINFO: return "SYMINFO";
-	case DT_VERSYM: return "VERSYM";
-	case DT_RELACOUNT: return "RELACOUNT";
-	case DT_RELCOUNT: return "RELCOUNT";
-	case DT_FLAGS_1: return "FLAGS_1";
-	case DT_VERDEF: return "VERDEF";
-	case DT_VERDEFNUM: return "VERDEFNUM";
-	case DT_VERNEED: return "VERNEED";
-	case DT_VERNEEDNUM: return "VERNEEDNUM";
-	case DT_AUXILIARY: return "AUXILIARY";
-	case DT_USED: return "USED";
-	case DT_FILTER: return "FILTER";
-	case DT_GNU_PRELINKED: return "GNU_PRELINKED";
-	case DT_GNU_CONFLICTSZ: return "GNU_CONFLICTSZ";
-	case DT_GNU_LIBLISTSZ: return "GNU_LIBLISTSZ";
-	default:
-		snprintf(s_dtype, sizeof(s_dtype), "<unknown: %#x>", dtype);
-		return (s_dtype);
-	}
+	snprintf(s_dtype, sizeof(s_dtype), "<unknown: %#x>", dtype);
+	return (s_dtype);
 }
 
 static const char *


More information about the svn-src-head mailing list