mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2025-01-30 12:44:10 +08:00
* doublest.c (convert_floatformat_to_doublest): Use fmt->split_half
for IBM long double nan and inf. (floatformat_is_negative, floatformat_classify, floatformat_mantissa): Similarly. (floatformat_ieee_single, floatformat_ieee_double, floatformat_ieee_quad, floatformat_arm_ext, floatformat_ia64_spill): Delete unused vars. (_initialize_doublest): Delete unused function. * gdbtypes.c (floatformats_ibm_long_double): Use new big- and little-endian variants of floatformat_ibm_long_double.
This commit is contained in:
parent
21290977cb
commit
f5aee5eeb8
@ -1,5 +1,18 @@
|
||||
2013-08-20 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* doublest.c (convert_floatformat_to_doublest): Use fmt->split_half
|
||||
for IBM long double nan and inf.
|
||||
(floatformat_is_negative, floatformat_classify,
|
||||
floatformat_mantissa): Similarly.
|
||||
(floatformat_ieee_single, floatformat_ieee_double,
|
||||
floatformat_ieee_quad, floatformat_arm_ext,
|
||||
floatformat_ia64_spill): Delete unused vars.
|
||||
(_initialize_doublest): Delete unused function.
|
||||
* gdbtypes.c (floatformats_ibm_long_double): Use new big- and
|
||||
little-endian variants of floatformat_ibm_long_double.
|
||||
|
||||
2013-08-19 Luis Machado <lgustavo@codesourcery.com>
|
||||
|
||||
|
||||
* Makefile.in (SFILES): Remove common/target-common.c and
|
||||
add target/waitstatus.c.
|
||||
(HFILES_NO_SRCDIR): Remove common/target-common.h and add
|
||||
@ -2752,10 +2765,10 @@
|
||||
|
||||
2013-05-20 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
* python/py-event.h (evpy_emit_event): Use
|
||||
CPYCHECKER_STEALS_REFERENCE_TO_ARG.
|
||||
* python/python-internal.h (CPYCHECKER_STEALS_REFERENCE_TO_ARG):
|
||||
New macro.
|
||||
* python/py-event.h (evpy_emit_event): Use
|
||||
CPYCHECKER_STEALS_REFERENCE_TO_ARG.
|
||||
* python/python-internal.h (CPYCHECKER_STEALS_REFERENCE_TO_ARG):
|
||||
New macro.
|
||||
|
||||
2013-05-20 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
@ -3042,7 +3055,7 @@
|
||||
|
||||
2013-05-13 Tom Tromey <tromey@redhat.com>
|
||||
|
||||
PR gdb/15338:
|
||||
PR gdb/15338:
|
||||
* dwarf2read.c (dwarf2_record_block_ranges): Ensure that the
|
||||
ranges section has been read.
|
||||
|
||||
@ -4897,7 +4910,7 @@
|
||||
2013-04-01 Jiong Wang <jiwang@tilera.com>
|
||||
|
||||
* NEWS: Mention TILE-Gx in "New native configurations" and
|
||||
"New targets" sections.
|
||||
"New targets" sections.
|
||||
|
||||
2013-04-01 Doug Evans <dje@google.com>
|
||||
|
||||
@ -6769,7 +6782,7 @@
|
||||
* v850-tdep.c: (v850e2_register_name): Revise system register
|
||||
names to match current V850E2M architecture specifications.
|
||||
Update register number enum comments too.
|
||||
|
||||
|
||||
2013-03-01 Jiong Wang <jiwang@tilera.com>
|
||||
Pedro Alves <palves@redhat.com>
|
||||
|
||||
|
@ -190,7 +190,8 @@ convert_floatformat_to_doublest (const struct floatformat *fmt,
|
||||
{
|
||||
double dto;
|
||||
|
||||
floatformat_to_double (fmt, from, &dto);
|
||||
floatformat_to_double (fmt->split_half ? fmt->split_half : fmt,
|
||||
from, &dto);
|
||||
*to = (DOUBLEST) dto;
|
||||
return;
|
||||
}
|
||||
@ -514,6 +515,11 @@ floatformat_is_negative (const struct floatformat *fmt,
|
||||
gdb_assert (fmt->totalsize
|
||||
<= FLOATFORMAT_LARGEST_BYTES * FLOATFORMAT_CHAR_BIT);
|
||||
|
||||
/* An IBM long double (a two element array of double) always takes the
|
||||
sign of the first double. */
|
||||
if (fmt->split_half)
|
||||
fmt = fmt->split_half;
|
||||
|
||||
order = floatformat_normalize_byteorder (fmt, uval, newfrom);
|
||||
|
||||
if (order != fmt->byteorder)
|
||||
@ -540,6 +546,13 @@ floatformat_classify (const struct floatformat *fmt,
|
||||
gdb_assert (fmt->totalsize
|
||||
<= FLOATFORMAT_LARGEST_BYTES * FLOATFORMAT_CHAR_BIT);
|
||||
|
||||
/* An IBM long double (a two element array of double) can be classified
|
||||
by looking at the first double. inf and nan are specified as
|
||||
ignoring the second double. zero and subnormal will always have
|
||||
the second double 0.0 if the long double is correctly rounded. */
|
||||
if (fmt->split_half)
|
||||
fmt = fmt->split_half;
|
||||
|
||||
order = floatformat_normalize_byteorder (fmt, uval, newfrom);
|
||||
|
||||
if (order != fmt->byteorder)
|
||||
@ -622,6 +635,16 @@ floatformat_mantissa (const struct floatformat *fmt,
|
||||
gdb_assert (fmt->totalsize
|
||||
<= FLOATFORMAT_LARGEST_BYTES * FLOATFORMAT_CHAR_BIT);
|
||||
|
||||
/* For IBM long double (a two element array of double), return the
|
||||
mantissa of the first double. The problem with returning the
|
||||
actual mantissa from both doubles is that there can be an
|
||||
arbitrary number of implied 0's or 1's between the mantissas
|
||||
of the first and second double. In any case, this function
|
||||
is only used for dumping out nans, and a nan is specified to
|
||||
ignore the value in the second double. */
|
||||
if (fmt->split_half)
|
||||
fmt = fmt->split_half;
|
||||
|
||||
order = floatformat_normalize_byteorder (fmt, uval, newfrom);
|
||||
|
||||
if (order != fmt->byteorder)
|
||||
@ -879,27 +902,3 @@ convert_typed_floating (const void *from, const struct type *from_type,
|
||||
floatformat_from_doublest (to_fmt, &d, to);
|
||||
}
|
||||
}
|
||||
|
||||
const struct floatformat *floatformat_ieee_single[BFD_ENDIAN_UNKNOWN];
|
||||
const struct floatformat *floatformat_ieee_double[BFD_ENDIAN_UNKNOWN];
|
||||
const struct floatformat *floatformat_ieee_quad[BFD_ENDIAN_UNKNOWN];
|
||||
const struct floatformat *floatformat_arm_ext[BFD_ENDIAN_UNKNOWN];
|
||||
const struct floatformat *floatformat_ia64_spill[BFD_ENDIAN_UNKNOWN];
|
||||
|
||||
extern void _initialize_doublest (void);
|
||||
|
||||
extern void
|
||||
_initialize_doublest (void)
|
||||
{
|
||||
floatformat_ieee_single[BFD_ENDIAN_LITTLE] = &floatformat_ieee_single_little;
|
||||
floatformat_ieee_single[BFD_ENDIAN_BIG] = &floatformat_ieee_single_big;
|
||||
floatformat_ieee_double[BFD_ENDIAN_LITTLE] = &floatformat_ieee_double_little;
|
||||
floatformat_ieee_double[BFD_ENDIAN_BIG] = &floatformat_ieee_double_big;
|
||||
floatformat_arm_ext[BFD_ENDIAN_LITTLE]
|
||||
= &floatformat_arm_ext_littlebyte_bigword;
|
||||
floatformat_arm_ext[BFD_ENDIAN_BIG] = &floatformat_arm_ext_big;
|
||||
floatformat_ia64_spill[BFD_ENDIAN_LITTLE] = &floatformat_ia64_spill_little;
|
||||
floatformat_ia64_spill[BFD_ENDIAN_BIG] = &floatformat_ia64_spill_big;
|
||||
floatformat_ieee_quad[BFD_ENDIAN_LITTLE] = &floatformat_ia64_quad_little;
|
||||
floatformat_ieee_quad[BFD_ENDIAN_BIG] = &floatformat_ia64_quad_big;
|
||||
}
|
||||
|
@ -108,8 +108,8 @@ const struct floatformat *floatformats_vax_d[BFD_ENDIAN_UNKNOWN] = {
|
||||
&floatformat_vax_d
|
||||
};
|
||||
const struct floatformat *floatformats_ibm_long_double[BFD_ENDIAN_UNKNOWN] = {
|
||||
&floatformat_ibm_long_double,
|
||||
&floatformat_ibm_long_double
|
||||
&floatformat_ibm_long_double_big,
|
||||
&floatformat_ibm_long_double_little
|
||||
};
|
||||
|
||||
/* Should opaque types be resolved? */
|
||||
|
Loading…
Reference in New Issue
Block a user