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 *
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to