summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoland McGrath <roland@redhat.com>2007-12-15 23:39:34 +0000
committerRoland McGrath <roland@redhat.com>2007-12-15 23:39:34 +0000
commit1a2e8f4f5bd2ca2aaed78d1cea3842eff2fa5295 (patch)
treee40bba1bc6f5279da0642656b88a0eb029863cb5
parente7717c4101dc82f0f1a30b0abf997f0068fb4b64 (diff)
backends/
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.
-rw-r--r--backends/ChangeLog4
-rw-r--r--backends/ppc_regs.c9
-rw-r--r--libelf/ChangeLog5
-rw-r--r--libelf/libelf.h12
-rw-r--r--src/ChangeLog9
-rw-r--r--src/readelf.c21
-rw-r--r--tests/ChangeLog4
-rwxr-xr-xtests/run-allregs.sh4
8 files changed, 53 insertions, 15 deletions
diff --git a/backends/ChangeLog b/backends/ChangeLog
index 2bb61f2b..97cddd23 100644
--- a/backends/ChangeLog
+++ b/backends/ChangeLog
@@ -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".
diff --git a/backends/ppc_regs.c b/backends/ppc_regs.c
index cc7d84fa..637c25d1 100644
--- a/backends/ppc_regs.c
+++ b/backends/ppc_regs.c
@@ -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';
diff --git a/libelf/ChangeLog b/libelf/ChangeLog
index 6860fa71..57a40d90 100644
--- a/libelf/ChangeLog
+++ b/libelf/ChangeLog
@@ -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.
diff --git a/libelf/libelf.h b/libelf/libelf.h
index 8f2f53b3..90a588ee 100644
--- a/libelf/libelf.h
+++ b/libelf/libelf.h
@@ -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);
diff --git a/src/ChangeLog b/src/ChangeLog
index 20436a1a..8bd6cb58 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -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>
diff --git a/src/readelf.c b/src/readelf.c
index 83949b7c..42c444fa 100644
--- a/src/readelf.c
+++ b/src/readelf.c
@@ -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);
diff --git a/tests/ChangeLog b/tests/ChangeLog
index f029f156..888f1565 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -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.
diff --git a/tests/run-allregs.sh b/tests/run-allregs.sh
index 82d57409..7ebaa719 100755
--- a/tests/run-allregs.sh
+++ b/tests/run-allregs.sh
@@ -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