diff options
author | Roland McGrath <roland@redhat.com> | 2007-12-15 23:39:34 +0000 |
---|---|---|
committer | Roland McGrath <roland@redhat.com> | 2007-12-15 23:39:34 +0000 |
commit | 1a2e8f4f5bd2ca2aaed78d1cea3842eff2fa5295 (patch) | |
tree | e40bba1bc6f5279da0642656b88a0eb029863cb5 | |
parent | e7717c4101dc82f0f1a30b0abf997f0068fb4b64 (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/ChangeLog | 4 | ||||
-rw-r--r-- | backends/ppc_regs.c | 9 | ||||
-rw-r--r-- | libelf/ChangeLog | 5 | ||||
-rw-r--r-- | libelf/libelf.h | 12 | ||||
-rw-r--r-- | src/ChangeLog | 9 | ||||
-rw-r--r-- | src/readelf.c | 21 | ||||
-rw-r--r-- | tests/ChangeLog | 4 | ||||
-rwxr-xr-x | tests/run-allregs.sh | 4 |
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 |