From: Alan Modra Date: Wed, 29 Apr 2009 14:21:50 +0000 (+0000) Subject: * readelf.c (slurp_ia64_unwind_table): Correct 64-bit unwind table X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=c6a0c689463b80b39682bd4d0ffa19452eebb1fd;p=binutils-gdb.git * readelf.c (slurp_ia64_unwind_table): Correct 64-bit unwind table read, and merge with 32-bit case. --- diff --git a/binutils/ChangeLog b/binutils/ChangeLog index 2988c451381..60c7f8ac7fd 100644 --- a/binutils/ChangeLog +++ b/binutils/ChangeLog @@ -1,3 +1,9 @@ +2009-04-29 Alan Modra + Denis Scherbakov + + * readelf.c (slurp_ia64_unwind_table): Correct 64-bit unwind table + read, and merge with 32-bit case. + 2009-04-27 Anthony Green * NEWS: Mention verilog support added to bfd. diff --git a/binutils/readelf.c b/binutils/readelf.c index d1dea7b339e..a7e7b05a50f 100644 --- a/binutils/readelf.c +++ b/binutils/readelf.c @@ -4975,23 +4975,14 @@ slurp_ia64_unwind_table (FILE * file, aux->table = xcmalloc (size / (3 * eh_addr_size), sizeof (aux->table[0])); tep = aux->table; - for (tp = table; tp < table + size; tp += 3 * eh_addr_size, ++tep) + for (tp = table; tp < table + size; ++tep) { tep->start.section = SHN_UNDEF; tep->end.section = SHN_UNDEF; tep->info.section = SHN_UNDEF; - if (is_32bit_elf) - { - tep->start.offset = byte_get ((unsigned char *) tp + 0, 4); - tep->end.offset = byte_get ((unsigned char *) tp + 4, 4); - tep->info.offset = byte_get ((unsigned char *) tp + 8, 4); - } - else - { - tep->start.offset = BYTE_GET ((unsigned char *) tp + 0); - tep->end.offset = BYTE_GET ((unsigned char *) tp + 8); - tep->info.offset = BYTE_GET ((unsigned char *) tp + 16); - } + tep->start.offset = byte_get (tp, eh_addr_size); tp += eh_addr_size; + tep->end.offset = byte_get (tp, eh_addr_size); tp += eh_addr_size; + tep->info.offset = byte_get (tp, eh_addr_size); tp += eh_addr_size; tep->start.offset += aux->seg_base; tep->end.offset += aux->seg_base; tep->info.offset += aux->seg_base;