Recent change to display_arc_attribute

Jeff Law law@redhat.com
Mon May 15 14:53:00 GMT 2017


Recent changes to display_arc_attribute are causing significant failures 
to build with modern compilers due to introduction of a switch case 
fallthru.

The code in question:

     case Tag_ARC_CPU_variation:
       val = read_uleb128 (p, &len, end);
       p += len;
       printf ("  Tag_ARC_CPU_variation: ");
       switch (val)
         {
         default:
           if (val > 0 && val < 16)
             {
               printf ("Core%d\n", val);
               break;
             }
         case 0:
           printf (_("Absent\n"));
           break;
         }
       break;

Note the fallthru from the default to case 0.


I'm not at all familiar with the ARC port and what we want to do here. 
But the attached seems fairly benign in that if someone added an out of 
range variation we'd flag it as "Unknown" rather than "Absent".

Thoughts?

Jeff
-------------- next part --------------
diff --git a/binutils/readelf.c b/binutils/readelf.c
index 16eb866..39bc88f 100644
--- a/binutils/readelf.c
+++ b/binutils/readelf.c
@@ -13586,10 +13586,11 @@ display_arc_attribute (unsigned char * p,
 	{
 	default:
 	  if (val > 0 && val < 16)
-	    {
 	      printf ("Core%d\n", val);
-	      break;
-	    }
+	  else
+	      printf ("Unknown\n");
+	  break;
+
 	case 0:
 	  printf (_("Absent\n"));
 	  break;


More information about the Binutils mailing list