Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [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