]> git.ipfire.org Git - thirdparty/elfutils.git/commitdiff
backends/
authorRoland McGrath <roland@redhat.com>
Sat, 15 Dec 2007 23:39:34 +0000 (23:39 +0000)
committerRoland McGrath <roland@redhat.com>
Sat, 15 Dec 2007 23:39:34 +0000 (23:39 +0000)
2007-12-15  Roland McGrath  <roland@redhat.com>

* ppc_regs.c (ppc_register_info): Return "spefscr", not "spr512".

tests/
2007-12-15  Roland McGrath  <roland@redhat.com>

* run-allregs.sh: Change expected output for powerpc spefscr.

backends/ChangeLog
backends/ppc_regs.c
libelf/ChangeLog
libelf/libelf.h
src/ChangeLog
src/readelf.c
tests/ChangeLog
tests/run-allregs.sh

index 2bb61f2b41f79b2fd56bf8830a048369daa5af8a..97cddd237aa8c6aeacb58533836f278c7153f49e 100644 (file)
@@ -1,3 +1,7 @@
+2007-12-15  Roland McGrath  <roland@redhat.com>
+
+       * ppc_regs.c (ppc_register_info): Return "spefscr", not "spr512".
+
 2007-10-18  Roland McGrath  <roland@redhat.com>
 
        * ppc_regs.c (ppc_register_info): Assign 67 to "vscr".
index cc7d84fa74003c4d6cd6cf54c9e5a6a2decc222e..637c25d1ff637eff741b10be70ed35462dfe5af5 100644 (file)
@@ -42,7 +42,7 @@ ppc_register_info (Ebl *ebl __attribute__ ((unused)),
   if (name == NULL)
     return 1156;
 
-  if (regno < 0 || regno > 1155 || namelen < 7)
+  if (regno < 0 || regno > 1155 || namelen < 8)
     return -1;
 
   *prefix = NULL;
@@ -58,7 +58,7 @@ ppc_register_info (Ebl *ebl __attribute__ ((unused)),
       if (ebl->machine != EM_PPC64 && regno < 64)
        *bits = 64;
     }
-  else if (regno == 67 || regno == 356 || regno >= 1124)
+  else if (regno == 67 || regno == 356 || regno == 612 || regno >= 1124)
     {
       *setname = "vector";
       *bits = regno >= 1124 ? 128 : 32;
@@ -132,6 +132,8 @@ ppc_register_info (Ebl *ebl __attribute__ ((unused)),
       return stpcpy (name, "dec") + 1 - name;
     case 356:
       return stpcpy (name, "vrsave") + 1 - name;
+    case 612:
+      return stpcpy (name, "spefscr") + 1 - name;
     case 100:
       if (*bits == 32)
        return stpcpy (name, "mq") + 1 - name;
@@ -156,7 +158,8 @@ ppc_register_info (Ebl *ebl __attribute__ ((unused)),
       break;
 
     case 200 ... 355:
-    case 357 ... 999:
+    case 357 ... 611:
+    case 613 ... 999:
       name[0] = 's';
       name[1] = 'p';
       name[2] = 'r';
index 6860fa71eef52c17756a2fdcfa069dfd351014de..57a40d90513a29a93efdc3c98f34dff19cc0ae1c 100644 (file)
@@ -1,3 +1,8 @@
+2007-11-12  Roland McGrath  <roland@redhat.com>
+
+       * libelf.h: Replace off64_t with loff_t throughout.
+       Only that type name is unconditionally defined by <sys/types.h>
+
 2007-11-03  Roland McGrath  <roland@redhat.com>
 
        * libelf.h (Elf_Data): Comment fix.
index 8f2f53b3a61e97272d75e27c1f020b3400037293..90a588ee971dbbaef7fb2ef02b9c70a14108747a 100644 (file)
@@ -95,7 +95,7 @@ typedef struct
   Elf_Type d_type;             /* Type of this piece of data.  */
   unsigned int d_version;      /* ELF version.  */
   size_t d_size;               /* Size in bytes.  */
-  off64_t d_off;               /* Offset into section.  */
+  loff_t d_off;                /* Offset into section.  */
   size_t d_align;              /* Alignment in section.  */
 } Elf_Data;
 
@@ -157,7 +157,7 @@ typedef struct
   uid_t ar_uid;                        /* User ID.  */
   gid_t ar_gid;                        /* Group ID.  */
   mode_t ar_mode;              /* File mode.  */
-  off64_t ar_size;             /* File size.  */
+  loff_t ar_size;              /* File size.  */
   char *ar_rawname;            /* Original name of archive member.  */
 } Elf_Arhdr;
 
@@ -198,13 +198,13 @@ extern Elf_Cmd elf_next (Elf *__elf);
 extern int elf_end (Elf *__elf);
 
 /* Update ELF descriptor and write file to disk.  */
-extern off64_t elf_update (Elf *__elf, Elf_Cmd __cmd);
+extern loff_t elf_update (Elf *__elf, Elf_Cmd __cmd);
 
 /* Determine what kind of file is associated with ELF.  */
 extern Elf_Kind elf_kind (Elf *__elf) __attribute__ ((__pure__));
 
 /* Get the base offset for an object file.  */
-extern off64_t elf_getbase (Elf *__elf);
+extern loff_t elf_getbase (Elf *__elf);
 
 
 /* Retrieve file identification data.  */
@@ -302,7 +302,7 @@ extern Elf_Data *elf_newdata (Elf_Scn *__scn);
    would be for TYPE.  The resulting Elf_Data pointer is valid until
    elf_end (ELF) is called.  */
 extern Elf_Data *elf_getdata_rawchunk (Elf *__elf,
-                                      off64_t __offset, size_t __size,
+                                      loff_t __offset, size_t __size,
                                       Elf_Type __type);
 
 
@@ -314,7 +314,7 @@ extern char *elf_strptr (Elf *__elf, size_t __index, size_t __offset);
 extern Elf_Arhdr *elf_getarhdr (Elf *__elf);
 
 /* Return offset in archive for current file ELF.  */
-extern off64_t elf_getaroff (Elf *__elf);
+extern loff_t elf_getaroff (Elf *__elf);
 
 /* Select archive element at OFFSET.  */
 extern size_t elf_rand (Elf *__elf, size_t __offset);
index 20436a1a3dd848e7f7480eb84b49fa7eb1df7052..8bd6cb58e3deeacd6401c1f0cb83151eb44764ec 100644 (file)
@@ -1,6 +1,15 @@
+2007-11-19  Roland McGrath  <roland@redhat.com>
+
+       * readelf.c (print_ops): Handle all bad op codes gracefully.
+       Print their numbers instead of just ???.
+
 2007-11-09  Roland McGrath  <roland@redhat.com>
 
        * readelf.c (attr_callback): Handle DW_AT_data_location.
+       Handle block forms to mean a DWARF expression for DW_AT_allocated,
+       DW_AT_associated, DW_AT_bit_size, DW_AT_bit_offset, DW_AT_bit_stride,
+       DW_AT_byte_size, DW_AT_byte_stride, DW_AT_count, DW_AT_lower_bound,
+       DW_AT_upper_bound.
 
 2007-10-20  Roland McGrath  <roland@redhat.com>
 
index 83949b7c494a070313a3ea436fccecfd0d1dfdb7..42c444fa5dae12155ed7b9d6ca7ea3251b1c4413 100644 (file)
@@ -3615,7 +3615,7 @@ print_ops (Dwfl_Module *dwflmod, Dwarf *dbg, int indent, int indentrest,
   Dwarf_Word offset = 0;
   while (len-- > 0)
     {
-      size_t op = *data++;
+      uint_fast8_t op = *data++;
 
       switch (op)
        {
@@ -3788,9 +3788,12 @@ print_ops (Dwfl_Module *dwflmod, Dwarf *dbg, int indent, int indentrest,
 
        default:
          /* No Operand.  */
-         printf ("%*s[%4" PRIuMAX "] %s\n",
-                 indent, "", (uintmax_t) offset,
-                 known[op] ?: "???");
+         if (op < sizeof known / sizeof known[0] && known[op] != NULL)
+           printf ("%*s[%4" PRIuMAX "] %s\n",
+                   indent, "", (uintmax_t) offset, known[op]);
+         else
+           printf ("%*s[%4" PRIuMAX "] %#x\n",
+                   indent, "", (uintmax_t) offset, op);
          ++offset;
          break;
        }
@@ -4201,6 +4204,16 @@ attr_callback (Dwarf_Attribute *attrp, void *arg)
        case DW_AT_frame_base:
        case DW_AT_return_addr:
        case DW_AT_static_link:
+       case DW_AT_allocated:
+       case DW_AT_associated:
+       case DW_AT_bit_size:
+       case DW_AT_bit_offset:
+       case DW_AT_bit_stride:
+       case DW_AT_byte_size:
+       case DW_AT_byte_stride:
+       case DW_AT_count:
+       case DW_AT_lower_bound:
+       case DW_AT_upper_bound:
          print_ops (cbargs->dwflmod, cbargs->dbg,
                     12 + level * 2, 12 + level * 2,
                     cbargs->addrsize, block.length, block.data);
index f029f15666ddcf481cec25465dc8a497c1a803e9..888f1565987885303e85aca55f1b69f1d215b6c0 100644 (file)
@@ -1,3 +1,7 @@
+2007-12-15  Roland McGrath  <roland@redhat.com>
+
+       * run-allregs.sh: Change expected output for powerpc spefscr.
+
 2007-10-20  Roland McGrath  <roland@redhat.com>
 
        * run-dwfl-addr-sect.sh: Change expected output, no errors.
index 82d5740970b1b84ab869f256d3b2a1e9591fe671..7ebaa719ae7a8111f9272ef22e4750fb8c3178dc 100755 (executable)
@@ -757,7 +757,6 @@ privileged registers:
        609: spr509 (spr509), unsigned 32 bits
        610: spr510 (spr510), unsigned 32 bits
        611: spr511 (spr511), unsigned 32 bits
-       612: spr512 (spr512), unsigned 32 bits
        613: spr513 (spr513), unsigned 32 bits
        614: spr514 (spr514), unsigned 32 bits
        615: spr515 (spr515), unsigned 32 bits
@@ -1148,6 +1147,7 @@ privileged registers:
 vector registers:
         67: vscr (vscr), unsigned 32 bits
        356: vrsave (vrsave), unsigned 32 bits
+       612: spefscr (spefscr), unsigned 32 bits
        1124: vr0 (vr0), unsigned 128 bits
        1125: vr1 (vr1), unsigned 128 bits
        1126: vr2 (vr2), unsigned 128 bits
@@ -1780,7 +1780,6 @@ privileged registers:
        609: spr509 (spr509), unsigned 64 bits
        610: spr510 (spr510), unsigned 64 bits
        611: spr511 (spr511), unsigned 64 bits
-       612: spr512 (spr512), unsigned 64 bits
        613: spr513 (spr513), unsigned 64 bits
        614: spr514 (spr514), unsigned 64 bits
        615: spr515 (spr515), unsigned 64 bits
@@ -2171,6 +2170,7 @@ privileged registers:
 vector registers:
         67: vscr (vscr), unsigned 32 bits
        356: vrsave (vrsave), unsigned 32 bits
+       612: spefscr (spefscr), unsigned 32 bits
        1124: vr0 (vr0), unsigned 128 bits
        1125: vr1 (vr1), unsigned 128 bits
        1126: vr2 (vr2), unsigned 128 bits