Fri Aug 25 12:11:21 2000 David Taylor <taylor@texas.cygnus.com>

* symtab.c (search_symbols): Fix off by one error in index for
 	initializing variables ourtype, ourtype2, ourtype3, and ourtype4.
	(symtab_symbol_info): fix similar off by one error.

Fri Aug 25 12:03:15 2000  David Taylor  <taylor@texas.cygnus.com>

	* gdbarch.sh (TARGET_ADDR_BIT): New macro for the number
	of bits in gdb's representation of a target address.
	* gdbarch.c, gdbarch.h: Regenerated.
	* gdbtypes.c (build_gdbtypes): Use TARGET_ADDR_BIT instead of
 	TARGET_PTR_BIT when initializing builtin_type_CORE_ADDR.
	* printcmd.c (print_address_numeric): Use TARGET_ADDR_BIT instead
 	of TARGET_PTR_BIT, because we're printing an address, not a pointer.
This commit is contained in:
David Taylor 2000-08-25 20:51:19 +00:00
parent c13b1b775b
commit 52204a0b3a
7 changed files with 97 additions and 17 deletions

View File

@ -1,3 +1,19 @@
Fri Aug 25 12:11:21 2000 David Taylor <taylor@texas.cygnus.com>
* symtab.c (search_symbols): Fix off by one error in index for
initializing variables ourtype, ourtype2, ourtype3, and ourtype4.
(symtab_symbol_info): fix similar off by one error.
Fri Aug 25 12:03:15 2000 David Taylor <taylor@texas.cygnus.com>
* gdbarch.sh (TARGET_ADDR_BIT): New macro for the number
of bits in gdb's representation of a target address.
* gdbarch.c, gdbarch.h: Regenerated.
* gdbtypes.c (build_gdbtypes): Use TARGET_ADDR_BIT instead of
TARGET_PTR_BIT when initializing builtin_type_CORE_ADDR.
* printcmd.c (print_address_numeric): Use TARGET_ADDR_BIT instead
of TARGET_PTR_BIT, because we're printing an address, not a pointer.
2000-08-25 Pierre Muller <muller@ics.u-strasbg.fr>
* Makefile.in: add rules to compile and link pascal specific files.

View File

@ -22,13 +22,13 @@
/* This file was created with the aid of ``gdbarch.sh''.
The bourn shell script ``gdbarch.sh'' creates the files
The Bourne shell script ``gdbarch.sh'' creates the files
``new-gdbarch.c'' and ``new-gdbarch.h and then compares them
against the existing ``gdbarch.[hc]''. Any differences found
being reported.
If editing this file, please also run gdbarch.sh and merge any
changes into that script. Conversely, when makeing sweeping changes
changes into that script. Conversely, when making sweeping changes
to this file, modifying gdbarch.sh and using its output may prove
easier. */
@ -136,6 +136,7 @@ struct gdbarch
int double_bit;
int long_double_bit;
int ptr_bit;
int addr_bit;
int bfd_vma_bit;
int ieee_float;
gdbarch_read_pc_ftype *read_pc;
@ -258,6 +259,7 @@ struct gdbarch startup_gdbarch =
8 * sizeof (long double),
8 * sizeof (void*),
8 * sizeof (void*),
8 * sizeof (void*),
0,
0,
0,
@ -469,6 +471,8 @@ verify_gdbarch (struct gdbarch *gdbarch)
/* Skip verify of double_bit, invalid_p == 0 */
/* Skip verify of long_double_bit, invalid_p == 0 */
/* Skip verify of ptr_bit, invalid_p == 0 */
if (gdbarch->addr_bit == 0)
gdbarch->addr_bit = TARGET_PTR_BIT;
/* Skip verify of bfd_vma_bit, invalid_p == 0 */
/* Skip verify of ieee_float, invalid_p == 0 */
/* Skip verify of read_pc, invalid_p == 0 */
@ -728,6 +732,11 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file)
"gdbarch_dump: TARGET_PTR_BIT # %s\n",
XSTRING (TARGET_PTR_BIT));
#endif
#ifdef TARGET_ADDR_BIT
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_ADDR_BIT # %s\n",
XSTRING (TARGET_ADDR_BIT));
#endif
#ifdef TARGET_BFD_VMA_BIT
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_BFD_VMA_BIT # %s\n",
@ -1335,6 +1344,11 @@ gdbarch_dump (struct gdbarch *gdbarch, struct ui_file *file)
"gdbarch_dump: TARGET_PTR_BIT = %ld\n",
(long) TARGET_PTR_BIT);
#endif
#ifdef TARGET_ADDR_BIT
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_ADDR_BIT = %ld\n",
(long) TARGET_ADDR_BIT);
#endif
#ifdef TARGET_BFD_VMA_BIT
fprintf_unfiltered (file,
"gdbarch_dump: TARGET_BFD_VMA_BIT = %ld\n",
@ -2092,6 +2106,23 @@ set_gdbarch_ptr_bit (struct gdbarch *gdbarch,
gdbarch->ptr_bit = ptr_bit;
}
int
gdbarch_addr_bit (struct gdbarch *gdbarch)
{
if (gdbarch->addr_bit == 0)
internal_error ("gdbarch: gdbarch_addr_bit invalid");
if (gdbarch_debug >= 2)
fprintf_unfiltered (gdb_stdlog, "gdbarch_addr_bit called\n");
return gdbarch->addr_bit;
}
void
set_gdbarch_addr_bit (struct gdbarch *gdbarch,
int addr_bit)
{
gdbarch->addr_bit = addr_bit;
}
int
gdbarch_bfd_vma_bit (struct gdbarch *gdbarch)
{

View File

@ -22,13 +22,13 @@
/* This file was created with the aid of ``gdbarch.sh''.
The bourn shell script ``gdbarch.sh'' creates the files
The Bourne shell script ``gdbarch.sh'' creates the files
``new-gdbarch.c'' and ``new-gdbarch.h and then compares them
against the existing ``gdbarch.[hc]''. Any differences found
being reported.
If editing this file, please also run gdbarch.sh and merge any
changes into that script. Conversely, when makeing sweeping changes
changes into that script. Conversely, when making sweeping changes
to this file, modifying gdbarch.sh and using its output may prove
easier. */
@ -189,7 +189,15 @@ extern void set_gdbarch_long_double_bit (struct gdbarch *gdbarch, int long_doubl
#endif
#endif
/* Number of bits in a pointer for the target machine */
/* For most targets, a pointer on the target and its representation as an
address in GDB have the same size and "look the same". For such a
target, you need only set TARGET_PTR_BIT / ptr_bit and TARGET_ADDR_BIT
/ addr_bit will be set from it.
If TARGET_PTR_BIT and TARGET_ADDR_BIT are different, you'll probably
also need to set POINTER_TO_ADDRESS and ADDRESS_TO_POINTER as well.
ptr_bit is the size of a pointer on the target */
/* Default (value) for non- multi-arch platforms. */
#if (!GDB_MULTI_ARCH) && !defined (TARGET_PTR_BIT)
@ -204,6 +212,21 @@ extern void set_gdbarch_ptr_bit (struct gdbarch *gdbarch, int ptr_bit);
#endif
#endif
/* addr_bit is the size of a target address as represented in gdb */
/* Default (value) for non- multi-arch platforms. */
#if (!GDB_MULTI_ARCH) && !defined (TARGET_ADDR_BIT)
#define TARGET_ADDR_BIT (TARGET_PTR_BIT)
#endif
extern int gdbarch_addr_bit (struct gdbarch *gdbarch);
extern void set_gdbarch_addr_bit (struct gdbarch *gdbarch, int addr_bit);
#if GDB_MULTI_ARCH
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) || !defined (TARGET_ADDR_BIT)
#define TARGET_ADDR_BIT (gdbarch_addr_bit (current_gdbarch))
#endif
#endif
/* Number of bits in a BFD_VMA for the target object file format. */
/* Default (value) for non- multi-arch platforms. */

View File

@ -319,8 +319,18 @@ v::TARGET_FLOAT_BIT:int:float_bit::::8 * sizeof (float):4*TARGET_CHAR_BIT::0
v::TARGET_DOUBLE_BIT:int:double_bit::::8 * sizeof (double):8*TARGET_CHAR_BIT::0
# Number of bits in a long double for the target machine.
v::TARGET_LONG_DOUBLE_BIT:int:long_double_bit::::8 * sizeof (long double):2*TARGET_DOUBLE_BIT::0
# Number of bits in a pointer for the target machine
# For most targets, a pointer on the target and its representation as an
# address in GDB have the same size and "look the same". For such a
# target, you need only set TARGET_PTR_BIT / ptr_bit and TARGET_ADDR_BIT
# / addr_bit will be set from it.
#
# If TARGET_PTR_BIT and TARGET_ADDR_BIT are different, you'll probably
# also need to set POINTER_TO_ADDRESS and ADDRESS_TO_POINTER as well.
#
# ptr_bit is the size of a pointer on the target
v::TARGET_PTR_BIT:int:ptr_bit::::8 * sizeof (void*):TARGET_INT_BIT::0
# addr_bit is the size of a target address as represented in gdb
v::TARGET_ADDR_BIT:int:addr_bit::::8 * sizeof (void*):0:TARGET_PTR_BIT:
# Number of bits in a BFD_VMA for the target object file format.
v::TARGET_BFD_VMA_BIT:int:bfd_vma_bit::::8 * sizeof (void*):TARGET_ARCHITECTURE->bits_per_address::0
#
@ -515,13 +525,13 @@ cat <<EOF
/* This file was created with the aid of \`\`gdbarch.sh''.
The bourn shell script \`\`gdbarch.sh'' creates the files
The Bourne shell script \`\`gdbarch.sh'' creates the files
\`\`new-gdbarch.c'' and \`\`new-gdbarch.h and then compares them
against the existing \`\`gdbarch.[hc]''. Any differences found
being reported.
If editing this file, please also run gdbarch.sh and merge any
changes into that script. Conversely, when makeing sweeping changes
changes into that script. Conversely, when making sweeping changes
to this file, modifying gdbarch.sh and using its output may prove
easier. */

View File

@ -2929,7 +2929,7 @@ build_gdbtypes (void)
though the two can be different (cf d10v) */
builtin_type_ptr = make_pointer_type (builtin_type_void, NULL);
builtin_type_CORE_ADDR =
init_type (TYPE_CODE_INT, TARGET_PTR_BIT / 8,
init_type (TYPE_CODE_INT, TARGET_ADDR_BIT / 8,
TYPE_FLAG_UNSIGNED,
"__CORE_ADDR", (struct objfile *) NULL);
builtin_type_bfd_vma =

View File

@ -726,9 +726,9 @@ print_address_numeric (CORE_ADDR addr, int use_local, struct ui_file *stream)
kept in the least significant bits of ADDR - the upper bits were
either zero or sign extended. Should ADDRESS_TO_POINTER() or
some ADDRESS_TO_PRINTABLE() be used to do the conversion? */
int ptr_bit = TARGET_PTR_BIT;
if (ptr_bit < (sizeof (CORE_ADDR) * HOST_CHAR_BIT))
addr &= ((CORE_ADDR) 1 << ptr_bit) - 1;
int addr_bit = TARGET_ADDR_BIT;
if (addr_bit < (sizeof (CORE_ADDR) * HOST_CHAR_BIT))
addr &= ((CORE_ADDR) 1 << addr_bit) - 1;
print_longest (stream, 'x', use_local, (ULONGEST) addr);
}

View File

@ -3573,10 +3573,10 @@ search_symbols (regexp, kind, nfiles, files, matches)
if (kind < LABEL_NAMESPACE)
error ("must search on specific namespace");
ourtype = types[(int) (kind - LABEL_NAMESPACE)];
ourtype2 = types2[(int) (kind - LABEL_NAMESPACE)];
ourtype3 = types3[(int) (kind - LABEL_NAMESPACE)];
ourtype4 = types4[(int) (kind - LABEL_NAMESPACE)];
ourtype = types[(int) (kind - VARIABLES_NAMESPACE)];
ourtype2 = types2[(int) (kind - VARIABLES_NAMESPACE)];
ourtype3 = types3[(int) (kind - VARIABLES_NAMESPACE)];
ourtype4 = types4[(int) (kind - VARIABLES_NAMESPACE)];
sr = *matches = NULL;
tail = NULL;
@ -3903,7 +3903,7 @@ symtab_symbol_info (char *regexp, namespace_enum kind, int from_tty)
printf_filtered (regexp
? "All %ss matching regular expression \"%s\":\n"
: "All defined %ss:\n",
classnames[(int) (kind - LABEL_NAMESPACE - 1)], regexp);
classnames[(int) (kind - VARIABLES_NAMESPACE)], regexp);
for (p = symbols; p != NULL; p = p->next)
{