Mirror of the gdb mailing list
 help / color / mirror / Atom feed
From: Daniel Jacobowitz <drow@false.org>
To: Mark Kettenis <mark.kettenis@xs4all.nl>
Cc: gdb@sourceware.org, cagney@gnu.org, eliz@gnu.org
Subject: Re: A case for `void *' for pointers to arbitrary (byte) buffers
Date: Tue, 03 May 2005 20:23:00 -0000	[thread overview]
Message-ID: <20050503202352.GA6424@nevyn.them.org> (raw)
In-Reply-To: <200505032013.j43KD1dD005239@elgar.sibelius.xs4all.nl>

On Tue, May 03, 2005 at 10:13:01PM +0200, Mark Kettenis wrote:
> Do we need a `bfd_byte *' or `gdb_byte *'?
> ------------------------------------------
> 
> We might.  Many implementations will need to cast to some sort of byte
> type to do arithmetic or look at individual bytes.  As we have seen,
> using can be `char *' is problematic.  In most (problematic) cases we
> really mean `unsigned char', only a few will warrant `signed char'.
> And `bfd_byte *' is a nice abbreviation.  Personally I'm perfectly
> happy with writing `unsigned char'.  IMHO it has the benefit that it
> is perfectly clear that this type is unsigned, even to someone who has
> never been exposed to the GDB codebase.

I think that using gdb_byte has a consistency advantage over typing
"unsigned char" everywhere.  We will know that we are dealing with
opaque blobs of (usually) target memory, but retain the ability
to do arithmetic on them.

> Why not use `xxx_byte *' instead of `void *'?
> ---------------------------------------------
> 
> * It's nonstandard.  Why do we need a nonstandard type if a perfectly
>   god standard type is available?
> 
> * It doesn't really solve the issue.  It only propagates the problem
>   one level up or down.  Since `xxx_byte *' is nothing but a typedef
>   for `unsigned char *', someone calling a functions with `xxx_byte *'
>   as one of its arguments with a `char *' argument will suffer from
>   the warning that raised this entire issue; `void *' breaks the chain
>   immediately.

I think that's a bad thing!  For the same reason that we use -Werror:
where possible, we can let GCC enforce consistency within our source
base.  Use of gdb_byte (as unsigned char) buys you the advantage that
any other pointer type won't silently convert to it.

If you want to use a standard type, play the necessary autoconf games
to acquire stdint.h.  Use uint8_t *.

-- 
Daniel Jacobowitz
CodeSourcery, LLC


  reply	other threads:[~2005-05-03 20:23 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <42710E90.3030300@gnu.org>
     [not found] ` <200504281919.j3SJJKF1011501@elgar.sibelius.xs4all.nl>
     [not found]   ` <42715EE8.5070704@gnu.org>
     [not found]     ` <01c54c8a$Blat.v2.4$ffbe8140@zahav.net.il>
     [not found]       ` <42753958.70109@gnu.org>
     [not found]         ` <01c54e92$Blat.v2.4$5cf24460@zahav.net.il>
     [not found]           ` <42755FD4.8000009@gnu.org>
     [not found]             ` <01c54f4a$Blat.v2.4$a9fc8500@zahav.net.il>
     [not found]               ` <42778DE6.1080106@gnu.org>
2005-05-03 20:17                 ` Mark Kettenis
2005-05-03 20:23                   ` Daniel Jacobowitz [this message]
2005-05-03 21:14                     ` Mark Kettenis
2005-05-03 21:16                       ` Daniel Jacobowitz
2005-05-03 22:10                         ` Mark Kettenis
2005-05-03 22:28                           ` Daniel Jacobowitz
2005-05-03 22:31                             ` Joel Brobecker
2005-05-04 14:45                             ` Mark Kettenis
2005-05-04 20:36                               ` Eli Zaretskii
2005-05-04 15:40                       ` Andrew Cagney
2005-05-04 17:57                         ` Eli Zaretskii
2005-05-03 22:01                   ` Stan Shebs

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20050503202352.GA6424@nevyn.them.org \
    --to=drow@false.org \
    --cc=cagney@gnu.org \
    --cc=eliz@gnu.org \
    --cc=gdb@sourceware.org \
    --cc=mark.kettenis@xs4all.nl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox