ld signed overflow fix
[deliverable/binutils-gdb.git] / opcodes / arc-ext.c
index f7d2191f8d205a20d0adb846ea65eb586d01baf5..bc676687914ab2f4833167458e67aa57d44114c5 100644 (file)
@@ -1,5 +1,5 @@
 /* ARC target-dependent stuff.  Extension structure access functions
-   Copyright (C) 1995-2016 Free Software Foundation, Inc.
+   Copyright (C) 1995-2019 Free Software Foundation, Inc.
 
    This file is part of libopcodes.
 
 
 struct ExtAuxRegister
 {
-  long                  address;
-  char*                         name;
-  struct ExtAuxRegister* next;
+  unsigned               address;
+  char *                 name;
+  struct ExtAuxRegister * next;
 };
 
 struct ExtCoreRegister
 {
   short                    number;
   enum ExtReadWrite rw;
-  char*                    name;
+  char *           name;
 };
 
 struct arcExtMap
@@ -70,7 +70,7 @@ struct arcExtMap
   struct ExtAuxRegister* auxRegisters;
   struct ExtInstruction* instructions[INST_HASH_SIZE];
   struct ExtCoreRegister coreRegisters[NUM_EXT_CORE];
-  char*                         condCodes[NUM_EXT_COND];
+  char *                condCodes[NUM_EXT_COND];
 };
 
 
@@ -170,6 +170,7 @@ create_map (unsigned char *block,
            arc_extension_map.
              coreRegisters[number - FIRST_EXTENSION_CORE_REGISTER].name
              = xstrdup (name);
+           break;
          }
 
        case EXT_COND_CODE:
@@ -190,8 +191,8 @@ create_map (unsigned char *block,
            char *aux_name = xstrdup ((char *) (p + 6));
 
            newAuxRegister->name = aux_name;
-           newAuxRegister->address = (p[2] << 24) | (p[3] << 16)
-             | (p[4] << 8) | p[5];
+           newAuxRegister->address = (((unsigned) p[2] << 24) | (p[3] << 16)
+                                      | (p[4] << 8) | p[5]);
            newAuxRegister->next = arc_extension_map.auxRegisters;
            arc_extension_map.auxRegisters = newAuxRegister;
            break;
@@ -279,7 +280,7 @@ ExtReadWrite_image (enum ExtReadWrite val)
 /* Get the name of an extension instruction.  */
 
 const extInstruction_t *
-arcExtMap_insn (int opcode, int insn)
+arcExtMap_insn (int opcode, unsigned long long insn)
 {
   /* Here the following tasks need to be done.  First of all, the
      opcode stored in the Extension Map is the real opcode.  However,
@@ -405,7 +406,7 @@ arcExtMap_condCodeName (int code)
 /* Get the name of an extension auxiliary register.  */
 
 const char *
-arcExtMap_auxRegName (long address)
+arcExtMap_auxRegName (unsigned address)
 {
   /* Walk the list of auxiliary register names and find the name.  */
   struct ExtAuxRegister *r;
@@ -437,7 +438,7 @@ build_ARC_extmap (bfd *text_bfd)
          sizeof (".gnu.linkonce.arcextmap.") - 1)
        || !strcmp (sect->name,".arcextmap"))
       {
-       bfd_size_type  count  = bfd_get_section_size (sect);
+       bfd_size_type  count  = bfd_section_size (sect);
        unsigned char* buffer = xmalloc (count);
 
        if (buffer)
@@ -462,7 +463,7 @@ dump_ARC_extmap (void)
 
     while (r)
     {
-       printf ("AUX : %s %ld\n", r->name, r->address);
+       printf ("AUX : %s %u\n", r->name, r->address);
        r = r->next;
     }
 
This page took 0.043399 seconds and 4 git commands to generate.