* [patch] clarify ``struct type . length''
@ 2001-08-21 6:41 Andrew Cagney
2001-09-05 10:59 ` Jim Blandy
0 siblings, 1 reply; 3+ messages in thread
From: Andrew Cagney @ 2001-08-21 6:41 UTC (permalink / raw)
To: gdb-patches
Hello,
I've checked the attatched in as an obvious fix. It clarifies the
length field of the ``struct type''.
Andrew
From fnasser@cygnus.com Tue Aug 21 06:41:00 2001
From: Fernando Nasser <fnasser@cygnus.com>
To: "Frank Ch. Eigler" <fche@redhat.com>
Cc: gdb-patches@sources.redhat.com
Subject: Re: ReRFA: gdb/testsuite/config/sid.exp patch
Date: Tue, 21 Aug 2001 06:41:00 -0000
Message-id: <3B81CDFA.95FA0286@cygnus.com>
References: <20010815165923.G14917@redhat.com>
X-SW-Source: 2001-08/msg00237.html
Content-length: 1532
"Frank Ch. Eigler" wrote:
>
> Hi -
>
> This patch was previously submitted to gdb-patches, but perhaps
> lost amongst a crowd of other non-gdb-related hunks. Ya know,
> if us sid folks were to be generously granted Official Check-In
> Privileges over this little file, you wouldn't have to waste
> your time looking at such trivia. :-)
>
Your patch is approved.
Are you volunteering as co-maintainer for this file?
Regards and sorry for the delay.
Fernando
> 2001-07-31 Frank Ch. Eigler <fche@redhat.com>
>
> * config/sid.exp (sid_start): Don't warn if we cannot figure out
> what to force sid endianness to.
>
> Index: config/sid.exp
> ===================================================================
> RCS file: /cvs/cvsfiles/devo/gdb/testsuite/config/sid.exp,v
> retrieving revision 1.16
> diff -u -p -r1.16 sid.exp
> --- sid.exp 2001/05/09 00:19:29 1.16
> +++ sid.exp 2001/07/31 19:33:40
> @@ -30,8 +30,8 @@ proc sid_start {} {
> if {[target_info exists sim,defaultendian]} then {
> set sidendian [target_info sim,defaultendian]
> } else {
> - warning "Unknown target endianness - assuming -EB"
> - set sidendian "-EB"
> + # rely on endianness settings in sid configuration defaults
> + set sidendian ""
> }
> }
> }
--
Fernando Nasser
Red Hat - Toronto E-Mail: fnasser@redhat.com
2323 Yonge Street, Suite #300
Toronto, Ontario M4P 2C9
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [patch] clarify ``struct type . length''
2001-08-21 6:41 [patch] clarify ``struct type . length'' Andrew Cagney
@ 2001-09-05 10:59 ` Jim Blandy
2001-09-05 15:44 ` Jim Blandy
0 siblings, 1 reply; 3+ messages in thread
From: Jim Blandy @ 2001-09-05 10:59 UTC (permalink / raw)
To: Andrew Cagney; +Cc: gdb-patches
Andrew Cagney <ac131313@cygnus.com> writes:
> I've checked the attatched in as an obvious fix. It clarifies the
> length field of the ``struct type''.
> ! /* Length of storage for a value of this type. This is of length
> ! of the type as defined by the debug info and not the length of
> ! the value that resides within the type. For instance, an
> ! i386-ext floating-point value only occupies 80 bits of what is
> ! typically a 12 byte `long double'. Various places pass this to
I'm not sure I agree it's a clarification. :)
type->length is simply what "sizeof()" would return. Making a
distinction between the size "as defined by the debug info" vs. "the
value that resides within a type" is a bit murky.
(To begin with, values don't "reside in" types; they "have" types.
They reside in blocks of memory, or registers.)
I suggest:
Length of storage for a value of this type. This is what sizeof
(type) would return; you use it for address arithmetic, memory reads
and writes, allocating buffers to hold the value in GDB, etc. This
size may include padding: for example, an i386-ext floating-point
value is only ten bytes long, but most compilers assign it a size of
twelve bytes, so that arrays of floats are aligned better.
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [patch] clarify ``struct type . length''
2001-09-05 10:59 ` Jim Blandy
@ 2001-09-05 15:44 ` Jim Blandy
0 siblings, 0 replies; 3+ messages in thread
From: Jim Blandy @ 2001-09-05 15:44 UTC (permalink / raw)
To: Andrew Cagney; +Cc: gdb-patches
I've committed this change. I hope it still addresses the issues you
had in mind with your original change.
2001-09-05 Jim Blandy <jimb@redhat.com>
* gdbtypes.h (struct type): Doc fix.
Index: gdbtypes.h
===================================================================
RCS file: /cvs/src/src/gdb/gdbtypes.h,v
retrieving revision 1.14
diff -c -c -b -F'^(' -r1.14 gdbtypes.h
*** gdbtypes.h 2001/08/24 04:46:43 1.14
--- gdbtypes.h 2001/09/05 22:42:33
***************
*** 231,251 ****
char *tag_name;
! /* Length of storage for a value of this type. This is of length
! of the type as defined by the debug info and not the length of
! the value that resides within the type. For instance, an
! i386-ext floating-point value only occupies 80 bits of what is
! typically a 12 byte `long double'. Various places pass this to
! memcpy and such, meaning it must be in units of HOST_CHAR_BIT.
! Various other places expect they can calculate addresses by
! adding it and such, meaning it must be in units of
! TARGET_CHAR_BIT. For some DSP targets, in which HOST_CHAR_BIT
! will (presumably) be 8 and TARGET_CHAR_BIT will be (say) 32,
! this is a problem. One fix would be to make this field in bits
! (requiring that it always be a multiple of HOST_CHAR_BIT and
! TARGET_CHAR_BIT)--the other choice would be to make it
! consistently in units of HOST_CHAR_BIT. */
unsigned length;
/* FIXME, these should probably be restricted to a Fortran-specific
--- 231,259 ----
char *tag_name;
! /* Length of storage for a value of this type. This is what
! sizeof(type) would return; use it for address arithmetic,
! memory reads and writes, etc. This size includes padding. For
! example, an i386 extended-precision floating point value really
! only occupies ten bytes, but most ABI's declare its size to be
! 12 bytes, to preserve alignment. A `struct type' representing
! such a floating-point type would have a `length' value of 12,
! even though the last two bytes are unused.
+ There's a bit of a host/target mess here, if you're concerned
+ about machines whose bytes aren't eight bits long, or who don't
+ have byte-addressed memory. Various places pass this to memcpy
+ and such, meaning it must be in units of host bytes. Various
+ other places expect they can calculate addresses by adding it
+ and such, meaning it must be in units of target bytes. For
+ some DSP targets, in which HOST_CHAR_BIT will (presumably) be 8
+ and TARGET_CHAR_BIT will be (say) 32, this is a problem.
+
+ One fix would be to make this field in bits (requiring that it
+ always be a multiple of HOST_CHAR_BIT and TARGET_CHAR_BIT) ---
+ the other choice would be to make it consistently in units of
+ HOST_CHAR_BIT. However, this would still fail to address
+ machines based on a ternary or decimal representation. */
unsigned length;
/* FIXME, these should probably be restricted to a Fortran-specific
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2001-09-05 15:44 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2001-08-21 6:41 [patch] clarify ``struct type . length'' Andrew Cagney
2001-09-05 10:59 ` Jim Blandy
2001-09-05 15:44 ` Jim Blandy
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox