+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
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>
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.
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>
* 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>
{
double dto;
- floatformat_to_double (fmt, from, &dto);
+ floatformat_to_double (fmt->split_half ? fmt->split_half : fmt,
+ from, &dto);
*to = (DOUBLEST) dto;
return;
}
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)
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)
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)
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;
-}