mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-08-02 19:46:09 +08:00
* valops.c (value_cast): Handle casts to and from TYPE_CODE_CHAR.
* ch-exp.c (match_integer_literal): Fix long long support. * gdbtypes.c (get_discrete_bounds): Make TYPE_LENGTH (type) == sizeof (LONGEST) case work OK.
This commit is contained in:
@ -369,7 +369,7 @@ get_discrete_bounds (type, lowp, highp)
|
||||
*highp = 1;
|
||||
return 0;
|
||||
case TYPE_CODE_INT:
|
||||
if (TYPE_LENGTH (type) >= sizeof (LONGEST)) /* Too big */
|
||||
if (TYPE_LENGTH (type) > sizeof (LONGEST)) /* Too big */
|
||||
return -1;
|
||||
if (!TYPE_UNSIGNED (type))
|
||||
{
|
||||
@ -380,7 +380,11 @@ get_discrete_bounds (type, lowp, highp)
|
||||
/* ... fall through for unsigned ints ... */
|
||||
case TYPE_CODE_CHAR:
|
||||
*lowp = 0;
|
||||
*highp = (1 << (TYPE_LENGTH (type) * TARGET_CHAR_BIT)) - 1;
|
||||
/* This round-about calculation is to avoid shifting by
|
||||
TYPE_LENGTH (type) * TARGET_CHAR_BIT, which will not work
|
||||
if TYPE_LENGTH (type) == sizeof (LONGEST). */
|
||||
*highp = 1 << (TYPE_LENGTH (type) * TARGET_CHAR_BIT - 1);
|
||||
*highp = (*highp - 1) | *highp;
|
||||
return 0;
|
||||
default:
|
||||
return -1;
|
||||
|
Reference in New Issue
Block a user