forked from Imagelibrary/binutils-gdb
* dwarf2-frame.c (read_signed_leb128): Handle values that do not
fit in 32 bits. * dwarf2read.c (read_signed_leb128): Likewise.
This commit is contained in:
@@ -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>:
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user