diff options
author | Daniel Jacobowitz <drow@false.org> | 2005-08-01 04:06:27 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2005-08-01 04:06:27 +0000 |
commit | 77e0b926c11f74a3f7d4029dcdde8e5e722f0cae (patch) | |
tree | 2ac46260c5832bb5b252f1f236201271c2bde83f | |
parent | 3ffbc0a50081df3ef17811030bad04db8c9bac98 (diff) | |
download | gdb-77e0b926c11f74a3f7d4029dcdde8e5e722f0cae.zip gdb-77e0b926c11f74a3f7d4029dcdde8e5e722f0cae.tar.gz gdb-77e0b926c11f74a3f7d4029dcdde8e5e722f0cae.tar.bz2 |
* dwarf2-frame.c (read_signed_leb128): Handle values that do not
fit in 32 bits.
* dwarf2read.c (read_signed_leb128): Likewise.
-rw-r--r-- | gdb/ChangeLog | 6 | ||||
-rw-r--r-- | gdb/dwarf2-frame.c | 4 | ||||
-rw-r--r-- | gdb/dwarf2read.c | 9 |
3 files changed, 11 insertions, 8 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 18a2451..7f17909 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,9 @@ +2005-08-01 Daniel Jacobowitz <dan@codesourcery.com> + + * dwarf2-frame.c (read_signed_leb128): Handle values that do not + fit in 32 bits. + * dwarf2read.c (read_signed_leb128): Likewise. + 2005-07-31 Daniel Jacobowitz <dan@codesourcery.com> From Josef Ezra <jezra@emc.com>: diff --git a/gdb/dwarf2-frame.c b/gdb/dwarf2-frame.c index 945d216..ef0d626 100644 --- a/gdb/dwarf2-frame.c +++ b/gdb/dwarf2-frame.c @@ -1105,8 +1105,8 @@ read_signed_leb128 (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr) } while (byte & 0x80); - if ((shift < 32) && (byte & 0x40)) - result |= -(1 << shift); + if (shift < 8 * sizeof (result) && (byte & 0x40)) + result |= -(((LONGEST)1) << shift); *bytes_read_ptr = num_read; diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index eb6cec9..ae85ef3 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -6032,12 +6032,11 @@ static long read_signed_leb128 (bfd *abfd, char *buf, unsigned int *bytes_read_ptr) { long result; - int i, shift, size, num_read; + int i, shift, num_read; unsigned char byte; result = 0; shift = 0; - size = 32; num_read = 0; i = 0; while (1) @@ -6052,10 +6051,8 @@ read_signed_leb128 (bfd *abfd, char *buf, unsigned int *bytes_read_ptr) break; } } - if ((shift < size) && (byte & 0x40)) - { - result |= -(1 << shift); - } + if ((shift < 8 * sizeof (result)) && (byte & 0x40)) + result |= -(((long)1) << shift); *bytes_read_ptr = num_read; return result; } |