2004-04-30 Andrew Cagney <cagney@redhat.com>
* gdbarch.sh (BELIEVE_PCC_PROMOTION_TYPE): Delete. * gdbarch.h, gdbarch.c: Re-generate. * stabsread.c (define_symbol): Delete BELIEVE_PCC_PROMOTION_TYPE code.
This commit is contained in:
parent
d0d6a25bf3
commit
8ee56bcfa3
7 changed files with 21 additions and 95 deletions
|
@ -1,3 +1,10 @@
|
|||
2004-04-30 Andrew Cagney <cagney@redhat.com>
|
||||
|
||||
* gdbarch.sh (BELIEVE_PCC_PROMOTION_TYPE): Delete.
|
||||
* gdbarch.h, gdbarch.c: Re-generate.
|
||||
* stabsread.c (define_symbol): Delete BELIEVE_PCC_PROMOTION_TYPE
|
||||
code.
|
||||
|
||||
2004-04-30 Andrew Cagney <cagney@redhat.com>
|
||||
|
||||
* gdb-events.sh (selected_thread_changed)
|
||||
|
|
|
@ -1,3 +1,8 @@
|
|||
2004-04-30 Andrew Cagney <cagney@redhat.com>
|
||||
|
||||
* gdbint.texinfo (Target Architecture Definition): Delete
|
||||
documentation for BELIEVE_PCC_PROMOTION_TYPE, no longer defined.
|
||||
|
||||
2004-04-30 Orjan Friberg <orjanf@axis.com>
|
||||
|
||||
* observer.texi (GDB Observers): Correct spelling.
|
||||
|
|
|
@ -2926,12 +2926,6 @@ Define if the compiler promotes a @code{short} or @code{char}
|
|||
parameter to an @code{int}, but still reports the parameter as its
|
||||
original type, rather than the promoted type.
|
||||
|
||||
@item BELIEVE_PCC_PROMOTION_TYPE
|
||||
@findex BELIEVE_PCC_PROMOTION_TYPE
|
||||
Define this if @value{GDBN} should believe the type of a @code{short}
|
||||
argument when compiled by @code{pcc}, but look within a full int space to get
|
||||
its value. Only defined for Sun-3 at present.
|
||||
|
||||
@item BITS_BIG_ENDIAN
|
||||
@findex BITS_BIG_ENDIAN
|
||||
Define this if the numbering of bits in the targets does @strong{not} match the
|
||||
|
|
|
@ -182,7 +182,6 @@ struct gdbarch
|
|||
gdbarch_deprecated_pc_in_call_dummy_ftype *deprecated_pc_in_call_dummy;
|
||||
gdbarch_deprecated_init_frame_pc_ftype *deprecated_init_frame_pc;
|
||||
int believe_pcc_promotion;
|
||||
int believe_pcc_promotion_type;
|
||||
gdbarch_deprecated_get_saved_register_ftype *deprecated_get_saved_register;
|
||||
gdbarch_deprecated_register_convertible_ftype *deprecated_register_convertible;
|
||||
gdbarch_deprecated_register_convert_to_virtual_ftype *deprecated_register_convert_to_virtual;
|
||||
|
@ -347,7 +346,6 @@ struct gdbarch startup_gdbarch =
|
|||
deprecated_pc_in_call_dummy, /* deprecated_pc_in_call_dummy */
|
||||
0, /* deprecated_init_frame_pc */
|
||||
0, /* believe_pcc_promotion */
|
||||
0, /* believe_pcc_promotion_type */
|
||||
0, /* deprecated_get_saved_register */
|
||||
0, /* deprecated_register_convertible */
|
||||
0, /* deprecated_register_convert_to_virtual */
|
||||
|
@ -862,14 +860,6 @@ gdbarch_dump (struct gdbarch *current_gdbarch, struct ui_file *file)
|
|||
"gdbarch_dump: BELIEVE_PCC_PROMOTION = %d\n",
|
||||
BELIEVE_PCC_PROMOTION);
|
||||
#endif
|
||||
#ifdef BELIEVE_PCC_PROMOTION_TYPE
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: BELIEVE_PCC_PROMOTION_TYPE # %s\n",
|
||||
XSTRING (BELIEVE_PCC_PROMOTION_TYPE));
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: BELIEVE_PCC_PROMOTION_TYPE = %d\n",
|
||||
BELIEVE_PCC_PROMOTION_TYPE);
|
||||
#endif
|
||||
#ifdef BREAKPOINT_FROM_PC
|
||||
fprintf_unfiltered (file,
|
||||
"gdbarch_dump: %s # %s\n",
|
||||
|
@ -3789,22 +3779,6 @@ set_gdbarch_believe_pcc_promotion (struct gdbarch *gdbarch,
|
|||
gdbarch->believe_pcc_promotion = believe_pcc_promotion;
|
||||
}
|
||||
|
||||
int
|
||||
gdbarch_believe_pcc_promotion_type (struct gdbarch *gdbarch)
|
||||
{
|
||||
gdb_assert (gdbarch != NULL);
|
||||
if (gdbarch_debug >= 2)
|
||||
fprintf_unfiltered (gdb_stdlog, "gdbarch_believe_pcc_promotion_type called\n");
|
||||
return gdbarch->believe_pcc_promotion_type;
|
||||
}
|
||||
|
||||
void
|
||||
set_gdbarch_believe_pcc_promotion_type (struct gdbarch *gdbarch,
|
||||
int believe_pcc_promotion_type)
|
||||
{
|
||||
gdbarch->believe_pcc_promotion_type = believe_pcc_promotion_type;
|
||||
}
|
||||
|
||||
int
|
||||
gdbarch_deprecated_get_saved_register_p (struct gdbarch *gdbarch)
|
||||
{
|
||||
|
|
|
@ -1137,15 +1137,6 @@ extern void set_gdbarch_believe_pcc_promotion (struct gdbarch *gdbarch, int beli
|
|||
#define BELIEVE_PCC_PROMOTION (gdbarch_believe_pcc_promotion (current_gdbarch))
|
||||
#endif
|
||||
|
||||
extern int gdbarch_believe_pcc_promotion_type (struct gdbarch *gdbarch);
|
||||
extern void set_gdbarch_believe_pcc_promotion_type (struct gdbarch *gdbarch, int believe_pcc_promotion_type);
|
||||
#if (GDB_MULTI_ARCH > GDB_MULTI_ARCH_PARTIAL) && defined (BELIEVE_PCC_PROMOTION_TYPE)
|
||||
#error "Non multi-arch definition of BELIEVE_PCC_PROMOTION_TYPE"
|
||||
#endif
|
||||
#if !defined (BELIEVE_PCC_PROMOTION_TYPE)
|
||||
#define BELIEVE_PCC_PROMOTION_TYPE (gdbarch_believe_pcc_promotion_type (current_gdbarch))
|
||||
#endif
|
||||
|
||||
#if defined (DEPRECATED_GET_SAVED_REGISTER)
|
||||
/* Legacy for systems yet to multi-arch DEPRECATED_GET_SAVED_REGISTER */
|
||||
#if !defined (DEPRECATED_GET_SAVED_REGISTER_P)
|
||||
|
|
|
@ -564,7 +564,6 @@ F::DEPRECATED_PC_IN_CALL_DUMMY:int:deprecated_pc_in_call_dummy:CORE_ADDR pc, COR
|
|||
F:2:DEPRECATED_INIT_FRAME_PC:CORE_ADDR:deprecated_init_frame_pc:int fromleaf, struct frame_info *prev:fromleaf, prev
|
||||
#
|
||||
v:2:BELIEVE_PCC_PROMOTION:int:believe_pcc_promotion:::::::
|
||||
v::BELIEVE_PCC_PROMOTION_TYPE:int:believe_pcc_promotion_type:::::::
|
||||
F:2:DEPRECATED_GET_SAVED_REGISTER:void:deprecated_get_saved_register:char *raw_buffer, int *optimized, CORE_ADDR *addrp, struct frame_info *frame, int regnum, enum lval_type *lval:raw_buffer, optimized, addrp, frame, regnum, lval
|
||||
#
|
||||
# For register <-> value conversions, replaced by CONVERT_REGISTER_P et.al.
|
||||
|
|
|
@ -978,61 +978,17 @@ define_symbol (CORE_ADDR valu, char *string, int desc, int type,
|
|||
init_type (TYPE_CODE_INT, TARGET_INT_BIT / TARGET_CHAR_BIT,
|
||||
TYPE_FLAG_UNSIGNED, "unsigned int", NULL);
|
||||
|
||||
if (BELIEVE_PCC_PROMOTION_TYPE)
|
||||
/* If PCC says a parameter is a short or a char, it is
|
||||
really an int. */
|
||||
if (TYPE_LENGTH (SYMBOL_TYPE (sym)) < TYPE_LENGTH (pcc_promotion_type)
|
||||
&& TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_INT)
|
||||
{
|
||||
/* This is defined on machines (e.g. sparc) where we
|
||||
should believe the type of a PCC 'short' argument,
|
||||
but shouldn't believe the address (the address is the
|
||||
address of the corresponding int).
|
||||
|
||||
My guess is that this correction, as opposed to
|
||||
changing the parameter to an 'int' (as done below,
|
||||
for PCC on most machines), is the right thing to do
|
||||
on all machines, but I don't want to risk breaking
|
||||
something that already works. On most PCC machines,
|
||||
the sparc problem doesn't come up because the calling
|
||||
function has to zero the top bytes (not knowing
|
||||
whether the called function wants an int or a short),
|
||||
so there is little practical difference between an
|
||||
int and a short (except perhaps what happens when the
|
||||
GDB user types "print short_arg = 0x10000;").
|
||||
|
||||
Hacked for SunOS 4.1 by gnu@cygnus.com. In 4.1, the
|
||||
compiler actually produces the correct address (we
|
||||
don't need to fix it up). I made this code adapt so
|
||||
that it will offset the symbol if it was pointing at
|
||||
an int-aligned location and not otherwise. This way
|
||||
you can use the same gdb for 4.0.x and 4.1 systems.
|
||||
|
||||
If the parameter is shorter than an int, and is
|
||||
integral (e.g. char, short, or unsigned equivalent),
|
||||
and is claimed to be passed on an integer boundary,
|
||||
don't believe it! Offset the parameter's address to
|
||||
the tail-end of that integer. */
|
||||
|
||||
if (TYPE_LENGTH (SYMBOL_TYPE (sym)) < TYPE_LENGTH (pcc_promotion_type)
|
||||
&& TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_INT
|
||||
&& 0 == SYMBOL_VALUE (sym) % TYPE_LENGTH (pcc_promotion_type))
|
||||
{
|
||||
SYMBOL_VALUE (sym) += TYPE_LENGTH (pcc_promotion_type)
|
||||
- TYPE_LENGTH (SYMBOL_TYPE (sym));
|
||||
}
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* If PCC says a parameter is a short or a char,
|
||||
it is really an int. */
|
||||
if (TYPE_LENGTH (SYMBOL_TYPE (sym)) < TYPE_LENGTH (pcc_promotion_type)
|
||||
&& TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_INT)
|
||||
{
|
||||
SYMBOL_TYPE (sym) =
|
||||
TYPE_UNSIGNED (SYMBOL_TYPE (sym))
|
||||
? pcc_unsigned_promotion_type
|
||||
: pcc_promotion_type;
|
||||
}
|
||||
break;
|
||||
SYMBOL_TYPE (sym) =
|
||||
TYPE_UNSIGNED (SYMBOL_TYPE (sym))
|
||||
? pcc_unsigned_promotion_type
|
||||
: pcc_promotion_type;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
case 'P':
|
||||
|
|
Loading…
Reference in a new issue