This is the mail archive of the
gdb-prs@sources.redhat.com
mailing list for the GDB project.
gdb/290: doublest.c:store_typed_floating should not return a value
- From: lucier at math dot purdue dot edu
- To: gdb-gnats at sources dot redhat dot com
- Date: 24 Jan 2002 01:39:30 -0000
- Subject: gdb/290: doublest.c:store_typed_floating should not return a value
- Reply-to: lucier at math dot purdue dot edu
>Number: 290
>Category: gdb
>Synopsis: doublest.c:store_typed_floating should not return a value
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: unassigned
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Wed Jan 23 17:48:01 PST 2002
>Closed-Date:
>Last-Modified:
>Originator: B. Lucier
>Release: GNU gdb 2002-01-23-cvs
>Organization:
>Environment:
sparcv9-sun-solaris2.8
>Description:
after configuring the gdb/dejagnu distribution with
env CC='cc -xildoff -xarch=v9' ./configure
make bombs with the message
"doublest.c", line 735: void function cannot return value
>How-To-Repeat:
>Fix:
Change doublest.c:store_typed_floating to
void
store_typed_floating (void *addr, const struct type *type, DOUBLEST val)
{
gdb_assert (TYPE_CODE (type) == TYPE_CODE_FLT);
/* FIXME: kettenis/2001-10-28: It is debatable whether we should
zero out any remaining bytes in the target buffer when TYPE is
longer than the actual underlying floating-point format. Perhaps
we should store a fixed bitpattern in those remaining bytes,
instead of zero, or perhaps we shouldn't touch those remaining
bytes at all.
NOTE: cagney/2001-10-28: With the way things currently work, it
isn't a good idea to leave the end bits undefined. This is
because GDB writes out the entire sizeof(<floating>) bits of the
floating-point type even though the value might only be stored
in, and the target processor may only refer to, the first N <
TYPE_LENGTH (type) bits. If the end of the buffer wasn't
initialized, GDB would write undefined data to the target. An
errant program, refering to that undefined data, would then
become non-deterministic.
See also the function convert_typed_floating below. */
memset (addr, 0, TYPE_LENGTH (type));
if (TYPE_FLOATFORMAT (type) == NULL)
store_floating (addr, TYPE_LENGTH (type), val);
else
floatformat_from_doublest (TYPE_FLOATFORMAT (type), &val, addr);
}
>Release-Note:
>Audit-Trail:
>Unformatted: