* 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:
Daniel Jacobowitz
2005-08-01 04:06:27 +00:00
parent 3ffbc0a500
commit 77e0b926c1
3 changed files with 11 additions and 8 deletions

View File

@@ -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>:

View File

@@ -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;

View File

@@ -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;
}