Fix 64-bit constants on 32-bit hosts.
	* dwarf2read.c (read_unsigned_leb128): Change declaration return type
	from unsigned long to ULONGEST.
	(read_signed_leb128): Change declaration return type from long to
	LONGEST.
	(dwarf2_const_value_attr): Change declaration parameter value from long
	to LONGEST.
	(dwarf2_compute_name): Change variable value from long to LONGEST.
	(read_unsigned_leb128): Change return type, variable result and some
	casts from unsigned long to ULONGEST.
	(read_signed_leb128): Change return type, variable result and some
	casts from long to LONGEST.
	(dwarf2_const_value_data, dwarf2_const_value_attr): Change parameter
	value from long to LONGEST.
	(dwarf2_const_value): Change variable value from long to LONGEST.
	* symmisc.c (print_symbol): Change SYMBOL_VALUE format strings to use
	plongest and hex_string.
	* symtab.h (struct general_symbol_info): Change ivalue from long to
	LONGEST, remove the comment.
	* tracepoint.c (validate_actionline, collect_symbol, scope_info):
	Change SYMBOL_VALUE format strings to use plongest and hex_string.
This commit is contained in:
Jan Kratochvil
2012-04-18 06:52:33 +00:00
parent efd4ebc341
commit 12df843f84
5 changed files with 67 additions and 42 deletions

View File

@ -1,3 +1,27 @@
2012-04-18 Jan Kratochvil <jan.kratochvil@redhat.com>
Fix 64-bit constants on 32-bit hosts.
* dwarf2read.c (read_unsigned_leb128): Change declaration return type
from unsigned long to ULONGEST.
(read_signed_leb128): Change declaration return type from long to
LONGEST.
(dwarf2_const_value_attr): Change declaration parameter value from long
to LONGEST.
(dwarf2_compute_name): Change variable value from long to LONGEST.
(read_unsigned_leb128): Change return type, variable result and some
casts from unsigned long to ULONGEST.
(read_signed_leb128): Change return type, variable result and some
casts from long to LONGEST.
(dwarf2_const_value_data, dwarf2_const_value_attr): Change parameter
value from long to LONGEST.
(dwarf2_const_value): Change variable value from long to LONGEST.
* symmisc.c (print_symbol): Change SYMBOL_VALUE format strings to use
plongest and hex_string.
* symtab.h (struct general_symbol_info): Change ivalue from long to
LONGEST, remove the comment.
* tracepoint.c (validate_actionline, collect_symbol, scope_info):
Change SYMBOL_VALUE format strings to use plongest and hex_string.
2012-04-18 Siddhesh Poyarekar <siddhesh@redhat.com> 2012-04-18 Siddhesh Poyarekar <siddhesh@redhat.com>
PR symtab/7259: PR symtab/7259:

View File

@ -957,9 +957,9 @@ static char *read_indirect_string (bfd *, gdb_byte *,
const struct comp_unit_head *, const struct comp_unit_head *,
unsigned int *); unsigned int *);
static unsigned long read_unsigned_leb128 (bfd *, gdb_byte *, unsigned int *); static ULONGEST read_unsigned_leb128 (bfd *, gdb_byte *, unsigned int *);
static long read_signed_leb128 (bfd *, gdb_byte *, unsigned int *); static LONGEST read_signed_leb128 (bfd *, gdb_byte *, unsigned int *);
static gdb_byte *skip_leb128 (bfd *, gdb_byte *); static gdb_byte *skip_leb128 (bfd *, gdb_byte *);
@ -1008,7 +1008,7 @@ static void dwarf2_const_value_attr (struct attribute *attr,
struct type *type, struct type *type,
const char *name, const char *name,
struct obstack *obstack, struct obstack *obstack,
struct dwarf2_cu *cu, long *value, struct dwarf2_cu *cu, LONGEST *value,
gdb_byte **bytes, gdb_byte **bytes,
struct dwarf2_locexpr_baton **baton); struct dwarf2_locexpr_baton **baton);
@ -5146,7 +5146,7 @@ dwarf2_compute_name (char *name, struct die_info *die, struct dwarf2_cu *cu,
for (child = die->child; child != NULL; child = child->sibling) for (child = die->child; child != NULL; child = child->sibling)
{ {
struct type *type; struct type *type;
long value; LONGEST value;
gdb_byte *bytes; gdb_byte *bytes;
struct dwarf2_locexpr_baton *baton; struct dwarf2_locexpr_baton *baton;
struct value *v; struct value *v;
@ -10664,10 +10664,10 @@ read_indirect_string (bfd *abfd, gdb_byte *buf,
return read_indirect_string_at_offset (abfd, str_offset); return read_indirect_string_at_offset (abfd, str_offset);
} }
static unsigned long static ULONGEST
read_unsigned_leb128 (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr) read_unsigned_leb128 (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr)
{ {
unsigned long result; ULONGEST result;
unsigned int num_read; unsigned int num_read;
int i, shift; int i, shift;
unsigned char byte; unsigned char byte;
@ -10681,7 +10681,7 @@ read_unsigned_leb128 (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr)
byte = bfd_get_8 (abfd, buf); byte = bfd_get_8 (abfd, buf);
buf++; buf++;
num_read++; num_read++;
result |= ((unsigned long)(byte & 127) << shift); result |= ((ULONGEST) (byte & 127) << shift);
if ((byte & 128) == 0) if ((byte & 128) == 0)
{ {
break; break;
@ -10692,10 +10692,10 @@ read_unsigned_leb128 (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr)
return result; return result;
} }
static long static LONGEST
read_signed_leb128 (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr) read_signed_leb128 (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr)
{ {
long result; LONGEST result;
int i, shift, num_read; int i, shift, num_read;
unsigned char byte; unsigned char byte;
@ -10708,7 +10708,7 @@ read_signed_leb128 (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr)
byte = bfd_get_8 (abfd, buf); byte = bfd_get_8 (abfd, buf);
buf++; buf++;
num_read++; num_read++;
result |= ((long)(byte & 127) << shift); result |= ((LONGEST) (byte & 127) << shift);
shift += 7; shift += 7;
if ((byte & 128) == 0) if ((byte & 128) == 0)
{ {
@ -10716,7 +10716,7 @@ read_signed_leb128 (bfd *abfd, gdb_byte *buf, unsigned int *bytes_read_ptr)
} }
} }
if ((shift < 8 * sizeof (result)) && (byte & 0x40)) if ((shift < 8 * sizeof (result)) && (byte & 0x40))
result |= -(((long)1) << shift); result |= -(((LONGEST) 1) << shift);
*bytes_read_ptr = num_read; *bytes_read_ptr = num_read;
return result; return result;
} }
@ -12041,7 +12041,7 @@ new_symbol (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
static gdb_byte * static gdb_byte *
dwarf2_const_value_data (struct attribute *attr, struct type *type, dwarf2_const_value_data (struct attribute *attr, struct type *type,
const char *name, struct obstack *obstack, const char *name, struct obstack *obstack,
struct dwarf2_cu *cu, long *value, int bits) struct dwarf2_cu *cu, LONGEST *value, int bits)
{ {
struct objfile *objfile = cu->objfile; struct objfile *objfile = cu->objfile;
enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ? enum bfd_endian byte_order = bfd_big_endian (objfile->obfd) ?
@ -12075,7 +12075,7 @@ static void
dwarf2_const_value_attr (struct attribute *attr, struct type *type, dwarf2_const_value_attr (struct attribute *attr, struct type *type,
const char *name, struct obstack *obstack, const char *name, struct obstack *obstack,
struct dwarf2_cu *cu, struct dwarf2_cu *cu,
long *value, gdb_byte **bytes, LONGEST *value, gdb_byte **bytes,
struct dwarf2_locexpr_baton **baton) struct dwarf2_locexpr_baton **baton)
{ {
struct objfile *objfile = cu->objfile; struct objfile *objfile = cu->objfile;
@ -12182,7 +12182,7 @@ dwarf2_const_value (struct attribute *attr, struct symbol *sym,
{ {
struct objfile *objfile = cu->objfile; struct objfile *objfile = cu->objfile;
struct comp_unit_head *cu_header = &cu->header; struct comp_unit_head *cu_header = &cu->header;
long value; LONGEST value;
gdb_byte *bytes; gdb_byte *bytes;
struct dwarf2_locexpr_baton *baton; struct dwarf2_locexpr_baton *baton;

View File

@ -509,9 +509,9 @@ print_symbol (void *args)
switch (SYMBOL_CLASS (symbol)) switch (SYMBOL_CLASS (symbol))
{ {
case LOC_CONST: case LOC_CONST:
fprintf_filtered (outfile, "const %ld (0x%lx)", fprintf_filtered (outfile, "const %s (%s)",
SYMBOL_VALUE (symbol), plongest (SYMBOL_VALUE (symbol)),
SYMBOL_VALUE (symbol)); hex_string (SYMBOL_VALUE (symbol)));
break; break;
case LOC_CONST_BYTES: case LOC_CONST_BYTES:
@ -539,28 +539,31 @@ print_symbol (void *args)
case LOC_REGISTER: case LOC_REGISTER:
if (SYMBOL_IS_ARGUMENT (symbol)) if (SYMBOL_IS_ARGUMENT (symbol))
fprintf_filtered (outfile, "parameter register %ld", fprintf_filtered (outfile, "parameter register %s",
SYMBOL_VALUE (symbol)); plongest (SYMBOL_VALUE (symbol)));
else else
fprintf_filtered (outfile, "register %ld", SYMBOL_VALUE (symbol)); fprintf_filtered (outfile, "register %s",
plongest (SYMBOL_VALUE (symbol)));
break; break;
case LOC_ARG: case LOC_ARG:
fprintf_filtered (outfile, "arg at offset 0x%lx", fprintf_filtered (outfile, "arg at offset %s",
SYMBOL_VALUE (symbol)); hex_string (SYMBOL_VALUE (symbol)));
break; break;
case LOC_REF_ARG: case LOC_REF_ARG:
fprintf_filtered (outfile, "reference arg at 0x%lx", SYMBOL_VALUE (symbol)); fprintf_filtered (outfile, "reference arg at %s",
hex_string (SYMBOL_VALUE (symbol)));
break; break;
case LOC_REGPARM_ADDR: case LOC_REGPARM_ADDR:
fprintf_filtered (outfile, "address parameter register %ld", SYMBOL_VALUE (symbol)); fprintf_filtered (outfile, "address parameter register %s",
plongest (SYMBOL_VALUE (symbol)));
break; break;
case LOC_LOCAL: case LOC_LOCAL:
fprintf_filtered (outfile, "local at offset 0x%lx", fprintf_filtered (outfile, "local at offset %s",
SYMBOL_VALUE (symbol)); hex_string (SYMBOL_VALUE (symbol)));
break; break;
case LOC_TYPEDEF: case LOC_TYPEDEF:

View File

@ -109,10 +109,7 @@ struct general_symbol_info
union union
{ {
/* The fact that this is a long not a LONGEST mainly limits the LONGEST ivalue;
range of a LOC_CONST. Since LOC_CONST_BYTES exists, I'm not
sure that is a big deal. */
long ivalue;
struct block *block; struct block *block;

View File

@ -740,10 +740,10 @@ validate_actionline (char **line, struct breakpoint *b)
{ {
if (SYMBOL_CLASS (exp->elts[2].symbol) == LOC_CONST) if (SYMBOL_CLASS (exp->elts[2].symbol) == LOC_CONST)
{ {
error (_("constant `%s' (value %ld) " error (_("constant `%s' (value %s) "
"will not be collected."), "will not be collected."),
SYMBOL_PRINT_NAME (exp->elts[2].symbol), SYMBOL_PRINT_NAME (exp->elts[2].symbol),
SYMBOL_VALUE (exp->elts[2].symbol)); plongest (SYMBOL_VALUE (exp->elts[2].symbol)));
} }
else if (SYMBOL_CLASS (exp->elts[2].symbol) else if (SYMBOL_CLASS (exp->elts[2].symbol)
== LOC_OPTIMIZED_OUT) == LOC_OPTIMIZED_OUT)
@ -980,8 +980,8 @@ collect_symbol (struct collection_list *collect,
SYMBOL_CLASS (sym)); SYMBOL_CLASS (sym));
break; break;
case LOC_CONST: case LOC_CONST:
printf_filtered ("constant %s (value %ld) will not be collected.\n", printf_filtered ("constant %s (value %s) will not be collected.\n",
SYMBOL_PRINT_NAME (sym), SYMBOL_VALUE (sym)); SYMBOL_PRINT_NAME (sym), plongest (SYMBOL_VALUE (sym)));
break; break;
case LOC_STATIC: case LOC_STATIC:
offset = SYMBOL_VALUE_ADDRESS (sym); offset = SYMBOL_VALUE_ADDRESS (sym);
@ -2623,8 +2623,9 @@ scope_info (char *args, int from_tty)
count--; /* Don't count this one. */ count--; /* Don't count this one. */
continue; continue;
case LOC_CONST: case LOC_CONST:
printf_filtered ("a constant with value %ld (0x%lx)", printf_filtered ("a constant with value %s (%s)",
SYMBOL_VALUE (sym), SYMBOL_VALUE (sym)); plongest (SYMBOL_VALUE (sym)),
hex_string (SYMBOL_VALUE (sym)));
break; break;
case LOC_CONST_BYTES: case LOC_CONST_BYTES:
printf_filtered ("constant bytes: "); printf_filtered ("constant bytes: ");
@ -2657,16 +2658,16 @@ scope_info (char *args, int from_tty)
gdbarch_register_name (gdbarch, regno)); gdbarch_register_name (gdbarch, regno));
break; break;
case LOC_ARG: case LOC_ARG:
printf_filtered ("an argument at stack/frame offset %ld", printf_filtered ("an argument at stack/frame offset %s",
SYMBOL_VALUE (sym)); plongest (SYMBOL_VALUE (sym)));
break; break;
case LOC_LOCAL: case LOC_LOCAL:
printf_filtered ("a local variable at frame offset %ld", printf_filtered ("a local variable at frame offset %s",
SYMBOL_VALUE (sym)); plongest (SYMBOL_VALUE (sym)));
break; break;
case LOC_REF_ARG: case LOC_REF_ARG:
printf_filtered ("a reference argument at offset %ld", printf_filtered ("a reference argument at offset %s",
SYMBOL_VALUE (sym)); plongest (SYMBOL_VALUE (sym)));
break; break;
case LOC_REGPARM_ADDR: case LOC_REGPARM_ADDR:
/* Note comment at LOC_REGISTER. */ /* Note comment at LOC_REGISTER. */