Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 5 Feb 2016 20:56:12 +0000 (UTC)
From:      Ed Maste <emaste@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r295335 - head/contrib/elftoolchain/readelf
Message-ID:  <201602052056.u15KuCHm056480@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: emaste
Date: Fri Feb  5 20:56:11 2016
New Revision: 295335
URL: https://svnweb.freebsd.org/changeset/base/295335

Log:
  readelf: report value of unknown relocation types
  
  Obtained from:	ELF Tool Chain r3387
  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 Feb  5 20:54:51 2016	(r295334)
+++ head/contrib/elftoolchain/readelf/readelf.c	Fri Feb  5 20:56:11 2016	(r295335)
@@ -1053,8 +1053,9 @@ static struct {
 static const char *
 r_type(unsigned int mach, unsigned int type)
 {
+	static char s_type[32];
+
 	switch(mach) {
-	case EM_NONE: return "";
 	case EM_386:
 	case EM_IAMCU:
 		switch(type) {
@@ -1089,8 +1090,8 @@ r_type(unsigned int mach, unsigned int t
 		case 35: return "R_386_TLS_DTPMOD32";
 		case 36: return "R_386_TLS_DTPOFF32";
 		case 37: return "R_386_TLS_TPOFF32";
-		default: return "";
 		}
+		break;
 	case EM_AARCH64:
 		switch(type) {
 		case 0: return "R_AARCH64_NONE";
@@ -1154,8 +1155,8 @@ r_type(unsigned int mach, unsigned int t
 		case 1030: return "R_AARCH64_TLS_TPREL64";
 		case 1031: return "R_AARCH64_TLSDESC";
 		case 1032: return "R_AARCH64_IRELATIVE";
-		default: return "";
 		}
+		break;
 	case EM_ARM:
 		switch(type) {
 		case 0: return "R_ARM_NONE";
@@ -1206,8 +1207,8 @@ r_type(unsigned int mach, unsigned int t
 		case 253: return "R_ARM_RABS32";
 		case 254: return "R_ARM_RPC24";
 		case 255: return "R_ARM_RBASE";
-		default: return "";
 		}
+		break;
 	case EM_IA_64:
 		switch(type) {
 		case 0: return "R_IA_64_NONE";
@@ -1290,8 +1291,8 @@ r_type(unsigned int mach, unsigned int t
 		case 182: return "R_IA_64_DTPREL64MSB";
 		case 183: return "R_IA_64_DTPREL64LSB";
 		case 186: return "R_IA_64_LTOFF_DTPREL22";
-		default: return "";
 		}
+		break;
 	case EM_MIPS:
 		switch(type) {
 		case 0: return "R_MIPS_NONE";
@@ -1324,9 +1325,8 @@ r_type(unsigned int mach, unsigned int t
 		case 48: return "R_MIPS_TLS_TPREL64";
 		case 49: return "R_MIPS_TLS_TPREL_HI16";
 		case 50: return "R_MIPS_TLS_TPREL_LO16";
-
-		default: return "";
 		}
+		break;
 	case EM_PPC:
 		switch(type) {
 		case 0: return "R_PPC_NONE";
@@ -1406,8 +1406,8 @@ r_type(unsigned int mach, unsigned int t
 		case 114: return "R_PPC_EMB_RELST_HA";
 		case 115: return "R_PPC_EMB_BIT_FLD";
 		case 116: return "R_PPC_EMB_RELSDA";
-		default: return "";
 		}
+		break;
 	case EM_RISCV:
 		switch(type) {
 		case 0: return "R_RISCV_NONE";
@@ -1452,8 +1452,8 @@ r_type(unsigned int mach, unsigned int t
 		case 43: return "R_RISCV_ALIGN";
 		case 44: return "R_RISCV_RVC_BRANCH";
 		case 45: return "R_RISCV_RVC_JUMP";
-		default: return "";
 		}
+		break;
 	case EM_SPARC:
 	case EM_SPARCV9:
 		switch(type) {
@@ -1537,8 +1537,8 @@ r_type(unsigned int mach, unsigned int t
 		case 77: return "R_SPARC_TLS_DTPOFF64";
 		case 78: return "R_SPARC_TLS_TPOFF32";
 		case 79: return "R_SPARC_TLS_TPOFF64";
-		default: return "";
 		}
+		break;
 	case EM_X86_64:
 		switch(type) {
 		case 0: return "R_X86_64_NONE";
@@ -1579,10 +1579,12 @@ r_type(unsigned int mach, unsigned int t
 		case 35: return "R_X86_64_TLSDESC_CALL";
 		case 36: return "R_X86_64_TLSDESC";
 		case 37: return "R_X86_64_IRELATIVE";
-		default: return "";
 		}
-	default: return "";
+		break;
 	}
+
+	snprintf(s_type, sizeof(s_type), "<unknown: %#x>", type);
+	return (s_type);
 }
 
 static const char *



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201602052056.u15KuCHm056480>