* doublest.h (DOUBLEST): Use long double only if we can scan
it in. Undefine HAVE_LONG_DOUBLE otherwise. (DOUBLEST_FORMAT): New. * c-exp.y (parse_number): Use it. * jv-exp.y (parse_number): Likewise. * objc-exp.y (parse_number): Likewise. * p-exp.y (parse_number): Likewise. * varobj.c (free_variable): Silence type-punning warnings. * tui/tui-data.h (struct tui_list): Change type of list member. * tui/tui-data.c: Remove no-longer-needed type casts. (source_windows): Silence type-punning warnings. * tui/tui-stack.c, tui/tui-win.c, tui/tui-winsource.c: Likewise.
This commit is contained in:
parent
92dd43fa3b
commit
96c1eda247
@ -1,3 +1,18 @@
|
||||
2006-02-14 Alexandre Oliva <aoliva@redhat.com>
|
||||
|
||||
* doublest.h (DOUBLEST): Use long double only if we can scan
|
||||
it in. Undefine HAVE_LONG_DOUBLE otherwise.
|
||||
(DOUBLEST_FORMAT): New.
|
||||
* c-exp.y (parse_number): Use it.
|
||||
* jv-exp.y (parse_number): Likewise.
|
||||
* objc-exp.y (parse_number): Likewise.
|
||||
* p-exp.y (parse_number): Likewise.
|
||||
* varobj.c (free_variable): Silence type-punning warnings.
|
||||
* tui/tui-data.h (struct tui_list): Change type of list member.
|
||||
* tui/tui-data.c: Remove no-longer-needed type casts.
|
||||
(source_windows): Silence type-punning warnings.
|
||||
* tui/tui-stack.c, tui/tui-win.c, tui/tui-winsource.c: Likewise.
|
||||
|
||||
2006-02-13 Mark Kettenis <kettenis@gnu.org>
|
||||
|
||||
Fix PR breakpoints/2080.
|
||||
|
20
gdb/c-exp.y
20
gdb/c-exp.y
@ -1080,24 +1080,8 @@ parse_number (p, len, parsed_float, putithere)
|
||||
char saved_char = p[len];
|
||||
|
||||
p[len] = 0; /* null-terminate the token */
|
||||
|
||||
if (sizeof (putithere->typed_val_float.dval) <= sizeof (float))
|
||||
num = sscanf (p, "%g%s", (float *) &putithere->typed_val_float.dval,s);
|
||||
else if (sizeof (putithere->typed_val_float.dval) <= sizeof (double))
|
||||
num = sscanf (p, "%lg%s", (double *) &putithere->typed_val_float.dval,s);
|
||||
else
|
||||
{
|
||||
#ifdef SCANF_HAS_LONG_DOUBLE
|
||||
num = sscanf (p, "%Lg%s", &putithere->typed_val_float.dval,s);
|
||||
#else
|
||||
/* Scan it into a double, then assign it to the long double.
|
||||
This at least wins with values representable in the range
|
||||
of doubles. */
|
||||
double temp;
|
||||
num = sscanf (p, "%lg%s", &temp,s);
|
||||
putithere->typed_val_float.dval = temp;
|
||||
#endif
|
||||
}
|
||||
num = sscanf (p, DOUBLEST_FORMAT "%s",
|
||||
&putithere->typed_val_float.dval, s);
|
||||
p[len] = saved_char; /* restore the input stream */
|
||||
|
||||
if (num == 1)
|
||||
|
@ -48,10 +48,15 @@ struct floatformat;
|
||||
host's `long double'. In general, we'll probably reduce the precision of
|
||||
any such values and print a warning. */
|
||||
|
||||
#ifdef HAVE_LONG_DOUBLE
|
||||
#if defined HAVE_LONG_DOUBLE && defined SCANF_HAS_LONG_DOUBLE
|
||||
typedef long double DOUBLEST;
|
||||
# define DOUBLEST_FORMAT "%Lg"
|
||||
#else
|
||||
typedef double DOUBLEST;
|
||||
# define DOUBLEST_FORMAT "%g"
|
||||
/* If we can't scan or print long double, we don't want to use it
|
||||
anywhere. */
|
||||
# undef HAVE_LONG_DOUBLE
|
||||
#endif
|
||||
|
||||
extern void floatformat_to_doublest (const struct floatformat *,
|
||||
|
19
gdb/jv-exp.y
19
gdb/jv-exp.y
@ -713,23 +713,8 @@ parse_number (p, len, parsed_float, putithere)
|
||||
char saved_char = p[len];
|
||||
|
||||
p[len] = 0; /* null-terminate the token */
|
||||
if (sizeof (putithere->typed_val_float.dval) <= sizeof (float))
|
||||
num = sscanf (p, "%g%c", (float *) &putithere->typed_val_float.dval, &c);
|
||||
else if (sizeof (putithere->typed_val_float.dval) <= sizeof (double))
|
||||
num = sscanf (p, "%lg%c", (double *) &putithere->typed_val_float.dval, &c);
|
||||
else
|
||||
{
|
||||
#ifdef SCANF_HAS_LONG_DOUBLE
|
||||
num = sscanf (p, "%Lg%c", &putithere->typed_val_float.dval, &c);
|
||||
#else
|
||||
/* Scan it into a double, then assign it to the long double.
|
||||
This at least wins with values representable in the range
|
||||
of doubles. */
|
||||
double temp;
|
||||
num = sscanf (p, "%lg%c", &temp, &c);
|
||||
putithere->typed_val_float.dval = temp;
|
||||
#endif
|
||||
}
|
||||
num = sscanf (p, DOUBLEST_FORMAT "%c",
|
||||
&putithere->typed_val_float.dval, &c);
|
||||
p[len] = saved_char; /* restore the input stream */
|
||||
if (num != 1) /* check scanf found ONLY a float ... */
|
||||
return ERROR;
|
||||
|
@ -1025,23 +1025,8 @@ parse_number (p, len, parsed_float, putithere)
|
||||
|
||||
/* It's a float since it contains a point or an exponent. */
|
||||
|
||||
if (sizeof (putithere->typed_val_float.dval) <= sizeof (float))
|
||||
sscanf (p, "%g", (float *)&putithere->typed_val_float.dval);
|
||||
else if (sizeof (putithere->typed_val_float.dval) <= sizeof (double))
|
||||
sscanf (p, "%lg", (double *)&putithere->typed_val_float.dval);
|
||||
else
|
||||
{
|
||||
#ifdef PRINTF_HAS_LONG_DOUBLE
|
||||
sscanf (p, "%Lg", &putithere->typed_val_float.dval);
|
||||
#else
|
||||
/* Scan it into a double, then assign it to the long double.
|
||||
This at least wins with values representable in the range
|
||||
of doubles. */
|
||||
double temp;
|
||||
sscanf (p, "%lg", &temp);
|
||||
putithere->typed_val_float.dval = temp;
|
||||
#endif
|
||||
}
|
||||
sscanf (p, DOUBLEST_FORMAT "%c",
|
||||
&putithere->typed_val_float.dval, &c);
|
||||
|
||||
/* See if it has `f' or `l' suffix (float or long double). */
|
||||
|
||||
|
19
gdb/p-exp.y
19
gdb/p-exp.y
@ -799,23 +799,8 @@ parse_number (p, len, parsed_float, putithere)
|
||||
char saved_char = p[len];
|
||||
|
||||
p[len] = 0; /* null-terminate the token */
|
||||
if (sizeof (putithere->typed_val_float.dval) <= sizeof (float))
|
||||
num = sscanf (p, "%g%c", (float *) &putithere->typed_val_float.dval,&c);
|
||||
else if (sizeof (putithere->typed_val_float.dval) <= sizeof (double))
|
||||
num = sscanf (p, "%lg%c", (double *) &putithere->typed_val_float.dval,&c);
|
||||
else
|
||||
{
|
||||
#ifdef SCANF_HAS_LONG_DOUBLE
|
||||
num = sscanf (p, "%Lg%c", &putithere->typed_val_float.dval,&c);
|
||||
#else
|
||||
/* Scan it into a double, then assign it to the long double.
|
||||
This at least wins with values representable in the range
|
||||
of doubles. */
|
||||
double temp;
|
||||
num = sscanf (p, "%lg%c", &temp,&c);
|
||||
putithere->typed_val_float.dval = temp;
|
||||
#endif
|
||||
}
|
||||
num = sscanf (p, DOUBLEST_FORMAT "%c",
|
||||
&putithere->typed_val_float.dval, &c);
|
||||
p[len] = saved_char; /* restore the input stream */
|
||||
if (num != 1) /* check scanf found ONLY a float ... */
|
||||
return ERROR;
|
||||
|
@ -44,7 +44,7 @@ static int term_height, term_width;
|
||||
static struct tui_gen_win_info _locator;
|
||||
static struct tui_gen_win_info exec_info[2];
|
||||
static struct tui_win_info * src_win_list[2];
|
||||
static struct tui_list source_windows = {(void **) src_win_list, 0};
|
||||
static struct tui_list source_windows = {src_win_list, 0};
|
||||
static int default_tab_len = DEFAULT_TAB_LEN;
|
||||
static struct tui_win_info * win_with_focus = (struct tui_win_info *) NULL;
|
||||
static struct tui_layout_def layout_def =
|
||||
@ -182,7 +182,7 @@ tui_clear_source_windows_detail (void)
|
||||
int i;
|
||||
|
||||
for (i = 0; i < (tui_source_windows ())->count; i++)
|
||||
tui_clear_win_detail ((struct tui_win_info *) (tui_source_windows ())->list[i]);
|
||||
tui_clear_win_detail ((tui_source_windows ())->list[i]);
|
||||
}
|
||||
|
||||
|
||||
@ -782,7 +782,7 @@ tui_free_all_source_wins_content (void)
|
||||
|
||||
for (i = 0; i < (tui_source_windows ())->count; i++)
|
||||
{
|
||||
struct tui_win_info * win_info = (struct tui_win_info *) (tui_source_windows ())->list[i];
|
||||
struct tui_win_info * win_info = (tui_source_windows ())->list[i];
|
||||
|
||||
if (win_info != NULL)
|
||||
{
|
||||
|
@ -110,7 +110,7 @@ enum tui_scroll_direction
|
||||
/* General list struct. */
|
||||
struct tui_list
|
||||
{
|
||||
void **list;
|
||||
struct tui_win_info **list;
|
||||
int count;
|
||||
};
|
||||
|
||||
|
@ -343,7 +343,7 @@ tui_show_frame_info (struct frame_info *fi)
|
||||
for (i = 0; i < (tui_source_windows ())->count; i++)
|
||||
{
|
||||
union tui_which_element *item;
|
||||
win_info = (struct tui_win_info *) (tui_source_windows ())->list[i];
|
||||
win_info = (tui_source_windows ())->list[i];
|
||||
|
||||
item = &((struct tui_win_element *) locator->content[0])->which_element;
|
||||
if (win_info == TUI_SRC_WIN)
|
||||
@ -401,7 +401,7 @@ tui_show_frame_info (struct frame_info *fi)
|
||||
tui_show_locator_content ();
|
||||
for (i = 0; i < (tui_source_windows ())->count; i++)
|
||||
{
|
||||
win_info = (struct tui_win_info *) (tui_source_windows ())->list[i];
|
||||
win_info = (tui_source_windows ())->list[i];
|
||||
tui_clear_source_content (win_info, EMPTY_SOURCE_PROMPT);
|
||||
tui_update_exec_info (win_info);
|
||||
}
|
||||
|
@ -1119,7 +1119,7 @@ tui_adjust_win_heights (struct tui_win_info * primary_win_info, int new_height)
|
||||
make_invisible_and_set_new_height (primary_win_info, new_height);
|
||||
if (primary_win_info->generic.type == CMD_WIN)
|
||||
{
|
||||
win_info = (struct tui_win_info *) (tui_source_windows ())->list[0];
|
||||
win_info = (tui_source_windows ())->list[0];
|
||||
src_win_info = win_info;
|
||||
}
|
||||
else
|
||||
@ -1148,7 +1148,7 @@ tui_adjust_win_heights (struct tui_win_info * primary_win_info, int new_height)
|
||||
else
|
||||
{
|
||||
first_win = TUI_DATA_WIN;
|
||||
second_win = (struct tui_win_info *) (tui_source_windows ())->list[0];
|
||||
second_win = (tui_source_windows ())->list[0];
|
||||
}
|
||||
if (primary_win_info == TUI_CMD_WIN)
|
||||
{ /*
|
||||
@ -1393,7 +1393,7 @@ new_height_ok (struct tui_win_info * primary_win_info, int new_height)
|
||||
struct tui_win_info * win_info;
|
||||
|
||||
if (primary_win_info == TUI_CMD_WIN)
|
||||
win_info = (struct tui_win_info *) (tui_source_windows ())->list[0];
|
||||
win_info = (tui_source_windows ())->list[0];
|
||||
else
|
||||
win_info = TUI_CMD_WIN;
|
||||
ok = ((new_height +
|
||||
@ -1414,7 +1414,7 @@ new_height_ok (struct tui_win_info * primary_win_info, int new_height)
|
||||
else
|
||||
{
|
||||
first_win = TUI_DATA_WIN;
|
||||
second_win = (struct tui_win_info *) (tui_source_windows ())->list[0];
|
||||
second_win = (tui_source_windows ())->list[0];
|
||||
}
|
||||
/*
|
||||
** We could simply add all the heights to obtain the same result
|
||||
@ -1543,7 +1543,7 @@ parse_scrolling_args (char *arg, struct tui_win_info * * win_to_scroll,
|
||||
error (_("Invalid window specified. \n\
|
||||
The window name specified must be valid and visible.\n"));
|
||||
else if (*win_to_scroll == TUI_CMD_WIN)
|
||||
*win_to_scroll = (struct tui_win_info *) (tui_source_windows ())->list[0];
|
||||
*win_to_scroll = (tui_source_windows ())->list[0];
|
||||
}
|
||||
xfree (buf);
|
||||
}
|
||||
|
@ -160,7 +160,7 @@ tui_update_source_windows_with_addr (CORE_ADDR addr)
|
||||
|
||||
for (i = 0; i < (tui_source_windows ())->count; i++)
|
||||
{
|
||||
struct tui_win_info * win_info = (struct tui_win_info *) (tui_source_windows ())->list[i];
|
||||
struct tui_win_info * win_info = (tui_source_windows ())->list[i];
|
||||
|
||||
tui_clear_source_content (win_info, EMPTY_SOURCE_PROMPT);
|
||||
tui_clear_exec_info_content (win_info);
|
||||
@ -384,7 +384,7 @@ tui_update_all_breakpoint_info (void)
|
||||
|
||||
for (i = 0; i < list->count; i++)
|
||||
{
|
||||
struct tui_win_info * win = (struct tui_win_info *) list->list[i];
|
||||
struct tui_win_info * win = list->list[i];
|
||||
|
||||
if (tui_update_breakpoint_info (win, FALSE))
|
||||
{
|
||||
|
@ -1374,7 +1374,7 @@ free_variable (struct varobj *var)
|
||||
/* Free the expression if this is a root variable. */
|
||||
if (var->root->rootvar == var)
|
||||
{
|
||||
free_current_contents ((char **) &var->root->exp);
|
||||
free_current_contents (&var->root->exp);
|
||||
xfree (var->root);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user