SAFE_BYTE_GET64
authorAlan Modra <amodra@gmail.com>
Wed, 12 May 2021 08:18:13 +0000 (17:48 +0930)
committerAlan Modra <amodra@gmail.com>
Wed, 12 May 2021 11:40:33 +0000 (21:10 +0930)
Functions dealing with lack of a 64-bit integer type can disappear now
that we require C99.  Printing using dwarf_vmatoa is better too.

binutils/
* dwarf.c (dwarf_vmatoa64, SAFE_BYTE_GET64, add64): Delete.
(skip_attr_bytes): Replace use of SAFE_BYTE_GET64 with
SAFE_BYTE_GET_AND_INC.
(read_and_display_attr_value): Likewise.  Print using dwarf_vmatoa.
(process_debug_info, process_cu_tu_index): Likewise.
* elfcomm.c (byte_put, byte_put_little_endian, byte_put_big_endian),
(byte_get, byte_get_little_endian, byte_get_big_endian),
(byte_get_signed): Make size param unsigned.  Remove code dealing
with 4-byte elf_vma.
(byte_get_64): Delete.
* elfcomm.h  (byte_put, byte_put_little_endian, byte_put_big_endian),
(byte_get, byte_get_little_endian, byte_get_big_endian),
(byte_get_signed): Update prototypes.
(byte_get_64): Delete.
gas/
* testsuite/gas/elf/dwarf-5-file0.d: Update.
* testsuite/gas/i386/dwarf5-line-1.d: Update.

binutils/ChangeLog
binutils/dwarf.c
binutils/elfcomm.c
binutils/elfcomm.h
gas/ChangeLog
gas/testsuite/gas/elf/dwarf-5-file0.d
gas/testsuite/gas/i386/dwarf5-line-1.d

index aef73a5a7b9ae60f43a25f72f62709469c4fb509..1d97d6bfe79a892b136a21a4d12644fae95cd659 100644 (file)
@@ -1,3 +1,20 @@
+2021-05-12  Alan Modra  <amodra@gmail.com>
+
+       * dwarf.c (dwarf_vmatoa64, SAFE_BYTE_GET64, add64): Delete.
+       (skip_attr_bytes): Replace use of SAFE_BYTE_GET64 with
+       SAFE_BYTE_GET_AND_INC.
+       (read_and_display_attr_value): Likewise.  Print using dwarf_vmatoa.
+       (process_debug_info, process_cu_tu_index): Likewise.
+       * elfcomm.c (byte_put, byte_put_little_endian, byte_put_big_endian),
+       (byte_get, byte_get_little_endian, byte_get_big_endian),
+       (byte_get_signed): Make size param unsigned.  Remove code dealing
+       with 4-byte elf_vma.
+       (byte_get_64): Delete.
+       * elfcomm.h  (byte_put, byte_put_little_endian, byte_put_big_endian),
+       (byte_get, byte_get_little_endian, byte_get_big_endian),
+       (byte_get_signed): Update prototypes.
+       (byte_get_64): Delete.
+
 2021-05-12  Alan Modra  <amodra@gmail.com>
 
        PR 27836
index 51c0afc275e44eb4987b3734c1ba35ec911a3182..08f8ccdee43fa5e6e8ced8cd7bd6bd6891c393b2 100644 (file)
@@ -307,27 +307,6 @@ print_dwarf_view (dwarf_vma value, unsigned num_bytes, int force)
     printf ("%*s", len + 1, "");
 }
 
-/* Format a 64-bit value, given as two 32-bit values, in hex.
-   For reentrancy, this uses a buffer provided by the caller.  */
-
-static const char *
-dwarf_vmatoa64 (dwarf_vma hvalue, dwarf_vma lvalue, char *buf,
-               unsigned int buf_len)
-{
-  int len = 0;
-
-  if (hvalue == 0)
-    snprintf (buf, buf_len, "%" DWARF_VMA_FMT "x", lvalue);
-  else
-    {
-      len = snprintf (buf, buf_len, "%" DWARF_VMA_FMT "x", hvalue);
-      snprintf (buf + len, buf_len - len,
-               "%08" DWARF_VMA_FMT "x", lvalue);
-    }
-
-  return buf;
-}
-
 /* Read in a LEB128 encoded value starting at address DATA.
    If SIGN is true, return a signed LEB128 value.
    If LENGTH_RETURN is not NULL, return in it the number of bytes read.
@@ -457,20 +436,6 @@ read_leb128 (unsigned char *data,
     }                                                          \
   while (0)
 
-#define SAFE_BYTE_GET64(PTR, HIGH, LOW, END)           \
-  do                                                   \
-    {                                                  \
-      if ((PTR) <= (END) - 8)                          \
-       {                                               \
-         byte_get_64 ((PTR), (HIGH), (LOW));           \
-       }                                               \
-      else                                             \
-       {                                               \
-         * (LOW) = * (HIGH) = 0;                       \
-       }                                               \
-    }                                                  \
-  while (0)
-
 typedef struct State_Machine_Registers
 {
   dwarf_vma address;
@@ -1834,34 +1799,6 @@ find_cu_tu_set_v2 (dwarf_vma cu_offset, int do_types)
   return NULL;
 }
 
-/* Add INC to HIGH_BITS:LOW_BITS.  */
-static void
-add64 (dwarf_vma * high_bits, dwarf_vma * low_bits, dwarf_vma inc)
-{
-  dwarf_vma tmp = * low_bits;
-
-  tmp += inc;
-
-  /* FIXME: There is probably a better way of handling this:
-
-     We need to cope with dwarf_vma being a 32-bit or 64-bit
-     type.  Plus regardless of its size LOW_BITS is meant to
-     only hold 32-bits, so if there is overflow or wrap around
-     we must propagate into HIGH_BITS.  */
-  if (tmp < * low_bits)
-    {
-      ++ * high_bits;
-    }
-  else if (sizeof (tmp) > 8
-          && (tmp >> 31) > 1)
-    {
-      ++ * high_bits;
-      tmp &= 0xFFFFFFFF;
-    }
-
-  * low_bits = tmp;
-}
-
 static const char *
 fetch_alt_indirect_string (dwarf_vma offset)
 {
@@ -2079,20 +2016,8 @@ skip_attr_bytes (unsigned long          form,
       break;
 
     case DW_FORM_ref8:
-      {
-       dwarf_vma high_bits;
-
-       SAFE_BYTE_GET64 (data, &high_bits, &uvalue, end);
-       data += 8;
-       if (sizeof (uvalue) > 4)
-         uvalue += high_bits << 32;
-       else if (high_bits != 0)
-         {
-           /* FIXME: What to do ?  */
-           return NULL;
-         }
-       break;
-      }
+      SAFE_BYTE_GET_AND_INC (uvalue, data, 8, end);
+      break;
 
     case DW_FORM_data8:
     case DW_FORM_ref_sig8:
@@ -2476,9 +2401,10 @@ read_and_display_attr_value (unsigned long           attribute,
                             int                     level)
 {
   dwarf_signed_vma svalue;
-  dwarf_vma        uvalue = 0;
-  unsigned char *  block_start = NULL;
-  unsigned char *  orig_data = data;
+  dwarf_vma uvalue = 0;
+  dwarf_vma uvalue_hi = 0;
+  unsigned char *block_start = NULL;
+  unsigned char *orig_data = data;
 
   if (data > end || (data == end && form != DW_FORM_flag_present))
     {
@@ -2556,6 +2482,24 @@ read_and_display_attr_value (unsigned long           attribute,
       SAFE_BYTE_GET_AND_INC (uvalue, data, 4, end);
       break;
 
+    case DW_FORM_ref_sup8:
+    case DW_FORM_ref8:
+    case DW_FORM_data8:
+    case DW_FORM_ref_sig8:
+      SAFE_BYTE_GET_AND_INC (uvalue, data, 8, end);
+      break;
+
+    case DW_FORM_data16:
+      SAFE_BYTE_GET_AND_INC (uvalue, data, 8, end);
+      SAFE_BYTE_GET_AND_INC (uvalue_hi, data, 8, end);
+      if (byte_get != byte_get_little_endian)
+       {
+         dwarf_vma utmp = uvalue;
+         uvalue = uvalue_hi;
+         uvalue_hi = utmp;
+       }
+      break;
+
     case DW_FORM_sdata:
       READ_SLEB (svalue, data, end);
       uvalue = svalue;
@@ -2639,54 +2583,18 @@ read_and_display_attr_value (unsigned long           attribute,
     case DW_FORM_data8:
       if (!do_loc)
        {
-         dwarf_vma high_bits;
-         dwarf_vma utmp;
-         char buf[64];
-
-         SAFE_BYTE_GET64 (data, &high_bits, &uvalue, end);
-         utmp = uvalue;
+         dwarf_vma utmp = uvalue;
          if (form == DW_FORM_ref8)
-           add64 (& high_bits, & utmp, cu_offset);
-         printf ("%c0x%s", delimiter,
-                 dwarf_vmatoa64 (high_bits, utmp, buf, sizeof (buf)));
+           utmp += cu_offset;
+         printf ("%c0x%s", delimiter, dwarf_vmatoa ("x", utmp));
        }
-
-      if ((do_loc || do_debug_loc || do_debug_ranges)
-         && num_debug_info_entries == 0)
-       {
-         if (sizeof (uvalue) == 8)
-           SAFE_BYTE_GET (uvalue, data, 8, end);
-         else
-           error (_("DW_FORM_data8 is unsupported when sizeof (dwarf_vma) != 8\n"));
-       }
-
-      data += 8;
       break;
 
     case DW_FORM_data16:
       if (!do_loc)
-       {
-         dwarf_vma left_high_bits, left_low_bits;
-         dwarf_vma right_high_bits, right_low_bits;
-
-         SAFE_BYTE_GET64 (data, &left_high_bits, &left_low_bits, end);
-         SAFE_BYTE_GET64 (data + 8, &right_high_bits, &right_low_bits, end);
-         if (byte_get == byte_get_little_endian)
-           {
-             /* Swap them.  */
-             left_high_bits ^= right_high_bits;
-             right_high_bits ^= left_high_bits;
-             left_high_bits ^= right_high_bits;
-             left_low_bits ^= right_low_bits;
-             right_low_bits ^= left_low_bits;
-             left_low_bits ^= right_low_bits;
-           }
-         printf (" 0x%08" DWARF_VMA_FMT "x%08" DWARF_VMA_FMT "x"
-                 "%08" DWARF_VMA_FMT "x%08" DWARF_VMA_FMT "x",
-                 left_high_bits, left_low_bits, right_high_bits,
-                 right_low_bits);
-       }
-      data += 16;
+       printf (" 0x%s%s",
+               uvalue_hi == 0 ? "" : dwarf_vmatoa ("x", uvalue_hi),
+               dwarf_vmatoa_1 ("x", uvalue, uvalue_hi == 0 ? 0 : 8));
       break;
 
     case DW_FORM_string:
@@ -2801,20 +2709,8 @@ read_and_display_attr_value (unsigned long           attribute,
 
     case DW_FORM_ref_sig8:
       if (!do_loc)
-       {
-         dwarf_vma high_bits;
-         char buf[64];
-
-         SAFE_BYTE_GET64 (data, &high_bits, &uvalue, end);
-         if (do_wide)
-           /* We have already displayed the form name.  */
-           printf ("%c: 0x%s", delimiter,
-                   dwarf_vmatoa64 (high_bits, uvalue, buf, sizeof (buf)));
-         else
-           printf ("%csignature: 0x%s", delimiter,
-                   dwarf_vmatoa64 (high_bits, uvalue, buf, sizeof (buf)));
-       }
-      data += 8;
+       printf ("%c%s: 0x%s", delimiter, do_wide ? "" : "signature",
+               dwarf_vmatoa ("x", uvalue));
       break;
 
     case DW_FORM_GNU_addr_index:
@@ -3740,8 +3636,7 @@ process_debug_info (struct dwarf_section * section,
       unsigned long sec_off;
       unsigned int offset_size;
       unsigned int initial_length_size;
-      dwarf_vma signature_high = 0;
-      dwarf_vma signature_low = 0;
+      dwarf_vma signature = 0;
       dwarf_vma type_offset = 0;
       struct cu_tu_set *this_set;
       dwarf_vma abbrev_base;
@@ -3819,8 +3714,7 @@ process_debug_info (struct dwarf_section * section,
 
       if (do_types)
        {
-         SAFE_BYTE_GET64 (hdrptr, &signature_high, &signature_low, end);
-         hdrptr += 8;
+         SAFE_BYTE_GET_AND_INC (signature, hdrptr, 8, end);
          SAFE_BYTE_GET_AND_INC (type_offset, hdrptr, offset_size, end);
        }
 
@@ -3875,11 +3769,8 @@ process_debug_info (struct dwarf_section * section,
          printf (_("   Pointer Size:  %d\n"), compunit.cu_pointer_size);
          if (do_types)
            {
-             char buf[64];
-
              printf (_("   Signature:     0x%s\n"),
-                     dwarf_vmatoa64 (signature_high, signature_low,
-                                     buf, sizeof (buf)));
+                     dwarf_vmatoa ("x", signature));
              printf (_("   Type Offset:   0x%s\n"),
                      dwarf_vmatoa ("x", type_offset));
            }
@@ -10426,9 +10317,7 @@ process_cu_tu_index (struct dwarf_section *section, int do_display)
   unsigned int nslots;
   unsigned int i;
   unsigned int j;
-  dwarf_vma signature_high;
-  dwarf_vma signature_low;
-  char buf[64];
+  dwarf_vma signature;
 
   /* PR 17512: file: 002-168123-0.004.  */
   if (phdr == NULL)
@@ -10487,8 +10376,8 @@ process_cu_tu_index (struct dwarf_section *section, int do_display)
          unsigned char *shndx_list;
          unsigned int shndx;
 
-         SAFE_BYTE_GET64 (phash, &signature_high, &signature_low, limit);
-         if (signature_high != 0 || signature_low != 0)
+         SAFE_BYTE_GET (signature, phash, 8, limit);
+         if (signature != 0)
            {
              SAFE_BYTE_GET (j, pindex, 4, limit);
              shndx_list = ppool + j * 4;
@@ -10501,8 +10390,7 @@ process_cu_tu_index (struct dwarf_section *section, int do_display)
 
              if (do_display)
                printf (_("  [%3d] Signature:  0x%s  Sections: "),
-                       i, dwarf_vmatoa64 (signature_high, signature_low,
-                                          buf, sizeof (buf)));
+                       i, dwarf_vmatoa ("x", signature));
              for (;;)
                {
                  if (shndx_list >= limit)
@@ -10594,7 +10482,7 @@ process_cu_tu_index (struct dwarf_section *section, int do_display)
 
       for (i = 0; i < nslots; i++)
        {
-         SAFE_BYTE_GET64 (ph, &signature_high, &signature_low, limit);
+         SAFE_BYTE_GET (signature, ph, 8, limit);
 
          SAFE_BYTE_GET (row, pi, 4, limit);
          if (row != 0)
@@ -10632,8 +10520,7 @@ process_cu_tu_index (struct dwarf_section *section, int do_display)
 
              if (do_display)
                printf (_("  [%3d] 0x%s"),
-                       i, dwarf_vmatoa64 (signature_high, signature_low,
-                                          buf, sizeof (buf)));
+                       i, dwarf_vmatoa ("x", signature));
              for (j = 0; j < ncols; j++)
                {
                  SAFE_BYTE_GET (val, prow + j * 4, 4, limit);
@@ -10680,7 +10567,7 @@ process_cu_tu_index (struct dwarf_section *section, int do_display)
 
       for (i = 0; i < nslots; i++)
        {
-         SAFE_BYTE_GET64 (ph, &signature_high, &signature_low, limit);
+         SAFE_BYTE_GET (signature, ph, 8, limit);
 
          SAFE_BYTE_GET (row, pi, 4, limit);
          if (row != 0)
@@ -10689,8 +10576,7 @@ process_cu_tu_index (struct dwarf_section *section, int do_display)
 
              if (do_display)
                printf (_("  [%3d] 0x%s"),
-                       i, dwarf_vmatoa64 (signature_high, signature_low,
-                                          buf, sizeof (buf)));
+                       i, dwarf_vmatoa ("x", signature));
 
              for (j = 0; j < ncols; j++)
                {
index c5092c64377a979dd9fc5981054141f682961134..d4e446c4b052db9ff483e252b3a6475d38044e00 100644 (file)
@@ -63,12 +63,12 @@ warn (const char *message, ...)
   va_end (args);
 }
 
-void (*byte_put) (unsigned char *, elf_vma, int);
+void (*byte_put) (unsigned char *, elf_vma, unsigned int);
 
 void
-byte_put_little_endian (unsigned char * field, elf_vma value, int size)
+byte_put_little_endian (unsigned char * field, elf_vma value, unsigned int size)
 {
-  if (size <= 0 || size > 8)
+  if (size > sizeof (elf_vma))
     {
       error (_("Unhandled data length: %d\n"), size);
       abort ();
@@ -81,9 +81,9 @@ byte_put_little_endian (unsigned char * field, elf_vma value, int size)
 }
 
 void
-byte_put_big_endian (unsigned char * field, elf_vma value, int size)
+byte_put_big_endian (unsigned char * field, elf_vma value, unsigned int size)
 {
-  if (size <= 0 || size > 8)
+  if (size > sizeof (elf_vma))
     {
       error (_("Unhandled data length: %d\n"), size);
       abort ();
@@ -95,10 +95,10 @@ byte_put_big_endian (unsigned char * field, elf_vma value, int size)
     }
 }
 
-elf_vma (*byte_get) (const unsigned char *, int);
+elf_vma (*byte_get) (const unsigned char *, unsigned int);
 
 elf_vma
-byte_get_little_endian (const unsigned char *field, int size)
+byte_get_little_endian (const unsigned char *field, unsigned int size)
 {
   switch (size)
     {
@@ -121,42 +121,26 @@ byte_get_little_endian (const unsigned char *field, int size)
        |    (((unsigned long) (field[3])) << 24);
 
     case 5:
-      if (sizeof (elf_vma) == 8)
+      if (sizeof (elf_vma) >= 8)
        return  ((elf_vma) (field[0]))
          |    (((elf_vma) (field[1])) << 8)
          |    (((elf_vma) (field[2])) << 16)
          |    (((elf_vma) (field[3])) << 24)
          |    (((elf_vma) (field[4])) << 32);
-      else if (sizeof (elf_vma) == 4)
-       /* We want to extract data from an 8 byte wide field and
-          place it into a 4 byte wide field.  Since this is a little
-          endian source we can just use the 4 byte extraction code.  */
-       return  ((unsigned long) (field[0]))
-         |    (((unsigned long) (field[1])) << 8)
-         |    (((unsigned long) (field[2])) << 16)
-         |    (((unsigned long) (field[3])) << 24);
       /* Fall through.  */
 
     case 6:
-      if (sizeof (elf_vma) == 8)
+      if (sizeof (elf_vma) >= 8)
        return  ((elf_vma) (field[0]))
          |    (((elf_vma) (field[1])) << 8)
          |    (((elf_vma) (field[2])) << 16)
          |    (((elf_vma) (field[3])) << 24)
          |    (((elf_vma) (field[4])) << 32)
          |    (((elf_vma) (field[5])) << 40);
-      else if (sizeof (elf_vma) == 4)
-       /* We want to extract data from an 8 byte wide field and
-          place it into a 4 byte wide field.  Since this is a little
-          endian source we can just use the 4 byte extraction code.  */
-       return  ((unsigned long) (field[0]))
-         |    (((unsigned long) (field[1])) << 8)
-         |    (((unsigned long) (field[2])) << 16)
-         |    (((unsigned long) (field[3])) << 24);
       /* Fall through.  */
 
     case 7:
-      if (sizeof (elf_vma) == 8)
+      if (sizeof (elf_vma) >= 8)
        return  ((elf_vma) (field[0]))
          |    (((elf_vma) (field[1])) << 8)
          |    (((elf_vma) (field[2])) << 16)
@@ -164,18 +148,10 @@ byte_get_little_endian (const unsigned char *field, int size)
          |    (((elf_vma) (field[4])) << 32)
          |    (((elf_vma) (field[5])) << 40)
          |    (((elf_vma) (field[6])) << 48);
-      else if (sizeof (elf_vma) == 4)
-       /* We want to extract data from an 8 byte wide field and
-          place it into a 4 byte wide field.  Since this is a little
-          endian source we can just use the 4 byte extraction code.  */
-       return  ((unsigned long) (field[0]))
-         |    (((unsigned long) (field[1])) << 8)
-         |    (((unsigned long) (field[2])) << 16)
-         |    (((unsigned long) (field[3])) << 24);
       /* Fall through.  */
 
     case 8:
-      if (sizeof (elf_vma) == 8)
+      if (sizeof (elf_vma) >= 8)
        return  ((elf_vma) (field[0]))
          |    (((elf_vma) (field[1])) << 8)
          |    (((elf_vma) (field[2])) << 16)
@@ -184,14 +160,6 @@ byte_get_little_endian (const unsigned char *field, int size)
          |    (((elf_vma) (field[5])) << 40)
          |    (((elf_vma) (field[6])) << 48)
          |    (((elf_vma) (field[7])) << 56);
-      else if (sizeof (elf_vma) == 4)
-       /* We want to extract data from an 8 byte wide field and
-          place it into a 4 byte wide field.  Since this is a little
-          endian source we can just use the 4 byte extraction code.  */
-       return  ((unsigned long) (field[0]))
-         |    (((unsigned long) (field[1])) << 8)
-         |    (((unsigned long) (field[2])) << 16)
-         |    (((unsigned long) (field[3])) << 24);
       /* Fall through.  */
 
     default:
@@ -201,7 +169,7 @@ byte_get_little_endian (const unsigned char *field, int size)
 }
 
 elf_vma
-byte_get_big_endian (const unsigned char *field, int size)
+byte_get_big_endian (const unsigned char *field, unsigned int size)
 {
   switch (size)
     {
@@ -223,46 +191,26 @@ byte_get_big_endian (const unsigned char *field, int size)
        |   (((unsigned long) (field[0])) << 24);
 
     case 5:
-      if (sizeof (elf_vma) == 8)
+      if (sizeof (elf_vma) >= 8)
        return ((elf_vma) (field[4]))
          |   (((elf_vma) (field[3])) << 8)
          |   (((elf_vma) (field[2])) << 16)
          |   (((elf_vma) (field[1])) << 24)
          |   (((elf_vma) (field[0])) << 32);
-      else if (sizeof (elf_vma) == 4)
-       {
-         /* Although we are extracting data from an 8 byte wide field,
-            we are returning only 4 bytes of data.  */
-         field += 1;
-         return ((unsigned long) (field[3]))
-           |   (((unsigned long) (field[2])) << 8)
-           |   (((unsigned long) (field[1])) << 16)
-           |   (((unsigned long) (field[0])) << 24);
-       }
       /* Fall through.  */
 
     case 6:
-      if (sizeof (elf_vma) == 8)
+      if (sizeof (elf_vma) >= 8)
        return ((elf_vma) (field[5]))
          |   (((elf_vma) (field[4])) << 8)
          |   (((elf_vma) (field[3])) << 16)
          |   (((elf_vma) (field[2])) << 24)
          |   (((elf_vma) (field[1])) << 32)
          |   (((elf_vma) (field[0])) << 40);
-      else if (sizeof (elf_vma) == 4)
-       {
-         /* Although we are extracting data from an 8 byte wide field,
-            we are returning only 4 bytes of data.  */
-         field += 2;
-         return ((unsigned long) (field[3]))
-           |   (((unsigned long) (field[2])) << 8)
-           |   (((unsigned long) (field[1])) << 16)
-           |   (((unsigned long) (field[0])) << 24);
-       }
       /* Fall through.  */
 
     case 7:
-      if (sizeof (elf_vma) == 8)
+      if (sizeof (elf_vma) >= 8)
        return ((elf_vma) (field[6]))
          |   (((elf_vma) (field[5])) << 8)
          |   (((elf_vma) (field[4])) << 16)
@@ -270,20 +218,10 @@ byte_get_big_endian (const unsigned char *field, int size)
          |   (((elf_vma) (field[2])) << 32)
          |   (((elf_vma) (field[1])) << 40)
          |   (((elf_vma) (field[0])) << 48);
-      else if (sizeof (elf_vma) == 4)
-       {
-         /* Although we are extracting data from an 8 byte wide field,
-            we are returning only 4 bytes of data.  */
-         field += 3;
-         return ((unsigned long) (field[3]))
-           |   (((unsigned long) (field[2])) << 8)
-           |   (((unsigned long) (field[1])) << 16)
-           |   (((unsigned long) (field[0])) << 24);
-       }
       /* Fall through.  */
 
     case 8:
-      if (sizeof (elf_vma) == 8)
+      if (sizeof (elf_vma) >= 8)
        return ((elf_vma) (field[7]))
          |   (((elf_vma) (field[6])) << 8)
          |   (((elf_vma) (field[5])) << 16)
@@ -292,16 +230,6 @@ byte_get_big_endian (const unsigned char *field, int size)
          |   (((elf_vma) (field[2])) << 40)
          |   (((elf_vma) (field[1])) << 48)
          |   (((elf_vma) (field[0])) << 56);
-      else if (sizeof (elf_vma) == 4)
-       {
-         /* Although we are extracting data from an 8 byte wide field,
-            we are returning only 4 bytes of data.  */
-         field += 4;
-         return ((unsigned long) (field[3]))
-           |   (((unsigned long) (field[2])) << 8)
-           |   (((unsigned long) (field[1])) << 16)
-           |   (((unsigned long) (field[0])) << 24);
-       }
       /* Fall through.  */
 
     default:
@@ -311,7 +239,7 @@ byte_get_big_endian (const unsigned char *field, int size)
 }
 
 elf_vma
-byte_get_signed (const unsigned char *field, int size)
+byte_get_signed (const unsigned char *field, unsigned int size)
 {
   elf_vma x = byte_get (field, size);
 
@@ -339,25 +267,6 @@ byte_get_signed (const unsigned char *field, int size)
     }
 }
 
-/* Return the high-order 32-bits and the low-order 32-bits
-   of an 8-byte value separately.  */
-
-void
-byte_get_64 (const unsigned char *field, elf_vma *high, elf_vma *low)
-{
-  if (byte_get == byte_get_big_endian)
-    {
-      *high = byte_get_big_endian (field, 4);
-      *low = byte_get_big_endian (field + 4, 4);
-    }
-  else
-    {
-      *high = byte_get_little_endian (field + 4, 4);
-      *low = byte_get_little_endian (field, 4);
-    }
-  return;
-}
-
 /* Return the path name for a proxy entry in a thin archive, adjusted
    relative to the path name of the thin archive itself if necessary.
    Always returns a pointer to malloc'ed memory.  */
index 921d42ca42598368f638fa29e093dc20ac32cfb2..22abb147783e71515980320811466f65b4204736 100644 (file)
@@ -31,15 +31,14 @@ extern void warn (const char *, ...) ATTRIBUTE_PRINTF_1;
 
 typedef unsigned HOST_WIDEST_INT elf_vma;
 
-extern void (*byte_put) (unsigned char *, elf_vma, int);
-extern void byte_put_little_endian (unsigned char *, elf_vma, int);
-extern void byte_put_big_endian (unsigned char *, elf_vma, int);
-
-extern elf_vma (*byte_get) (const unsigned char *, int);
-extern elf_vma byte_get_signed (const unsigned char *, int);
-extern elf_vma byte_get_little_endian (const unsigned char *, int);
-extern elf_vma byte_get_big_endian (const unsigned char *, int);
-extern void byte_get_64 (const unsigned char *, elf_vma *, elf_vma *);
+extern void (*byte_put) (unsigned char *, elf_vma, unsigned int);
+extern void byte_put_little_endian (unsigned char *, elf_vma, unsigned int);
+extern void byte_put_big_endian (unsigned char *, elf_vma, unsigned int);
+
+extern elf_vma (*byte_get) (const unsigned char *, unsigned int);
+extern elf_vma byte_get_signed (const unsigned char *, unsigned int);
+extern elf_vma byte_get_little_endian (const unsigned char *, unsigned int);
+extern elf_vma byte_get_big_endian (const unsigned char *, unsigned int);
 
 #define BYTE_PUT(field, val)   byte_put (field, val, sizeof (field))
 #define BYTE_GET(field)                byte_get (field, sizeof (field))
index 459da066846fd674dd8819762ada8246940a7f58..329c28880b87fd7132241e7afacb72335187b1c4 100644 (file)
@@ -1,3 +1,8 @@
+2021-05-12  Alan Modra  <amodra@gmail.com>
+
+       * testsuite/gas/elf/dwarf-5-file0.d: Update.
+       * testsuite/gas/i386/dwarf5-line-1.d: Update.
+
 2021-05-11  Sergey Belyashov  <sergey.belyashov@gmail.com>
 
        PR 27823
index 6cc96e3284f518b9a38c014412c38bc32073f81a..973dc5b9ff371da3fb396cf9d6888d803c7f8f93 100644 (file)
@@ -11,8 +11,8 @@
 
  The File Name Table \(offset 0x.*, lines 3, columns 3\):
   Entry        Dir     MD5                             Name
-  0    0 0x00000000000000000000000000000000    \(indirect line string, offset: 0x.*\): master source file
-  1    1 0x00000000000000000000000000000000    \(indirect line string, offset: 0x.*\): secondary source file
+  0    0 0x0   \(indirect line string, offset: 0x.*\): master source file
+  1    1 0x0   \(indirect line string, offset: 0x.*\): secondary source file
   2    2 0x95828e8bc4f7404dbf7526fb7bd0f192    \(indirect line string, offset: 0x.*\): foo.c
 #pass
 
index 7d602d0594f122f2793906e7aa62409dcb7a222f..cc90b61fcfddf671898e39a62094aa157bac5d1e 100644 (file)
@@ -39,7 +39,7 @@ Raw dump of debug contents of section \.z?debug_line:
  The File Name Table \(offset 0x.*, lines 2, columns 3\):
   Entry        Dir     MD5                             Name
   0    0 0xbbd69fc03ce253b2dbaab2522dd519ae    \(indirect line string, offset: 0x.*\): core.c
-  1    0 0x00000000000000000000000000000000    \(indirect line string, offset: 0x.*\): types.h
+  1    0 0x0   \(indirect line string, offset: 0x.*\): types.h
 
  Line Number Statements:
   \[0x.*\]  Extended opcode 2: set Address to 0x0