public inbox for gcc-prs@sourceware.org help / color / mirror / Atom feed
From: Matthias Klose <doko@cs.tu-berlin.de> To: jsturm@gcc.gnu.org Cc: gcc-prs@gcc.gnu.org, Subject: Re: libgcj/9078: libffi: problems with uint8 on powerpc Date: Sun, 16 Mar 2003 17:16:00 -0000 [thread overview] Message-ID: <20030316171601.22995.qmail@sources.redhat.com> (raw) The following reply was made to PR libgcj/9078; it has been noted by GNATS. From: Matthias Klose <doko@cs.tu-berlin.de> To: Jeff Sturm <jsturm@one-point.com> Cc: 173074-done@bugs.debian.org, gcc-gnats@gcc.gnu.org, <gcc-prs@gcc.gnu.org>, <gcc-bugs@gcc.gnu.org>, <java-prs@gcc.gnu.org>, David Paul BELANGER <dbelan2@CS.McGill.CA>, "Prof. Etienne M. Gagnon" <etienne.gagnon@uqam.ca> Subject: Re: libgcj/9078: libffi: problems with uint8 on powerpc Date: Sun, 16 Mar 2003 18:02:34 +0100 Ok, closing the Debian report. Leave the gnats entry to Jeff. Prof. Etienne M. Gagnon writes: > On Sun, Mar 16, 2003 at 05:15:47PM +0100, Matthias Klose wrote: > > hmm, you didn't open this report. Sure I can close it? > > Yes, I am sure. The bug was opened by of the developers of the > SableVM project, and he forwarded to me the information in the Debian > BTS and in the upstream BTS. Based on that information, I went back > into the SableVM source code and fixed the bug. It was definitely not > a libffi bug (yet one has to very carfully read the libffi > documentation to notice the inconsistency in the treatment of function > arguments and return values). Jeff Sturm writes: > On Sat, 28 Dec 2002, Matthias Klose wrote: > > ffi_type_uint8 and other arguments shorter than one word are > > not passed in correctly to the function called by ffi_call. > > For an ffi_type_uint8, ffi_call expects the corresponding value > pointer to be a (unsigned char *). So this is correct usage: > > int b = 24; > args[0] = &ffi_type_uint; > values[0] = &b; > > Also correct would be: > > unsigned char b = 24; > args[0] = &ffi_type_uint8; > values[0] = &b; > > > Also, returns values are not passed correctly. For example, instead of > > finding the returned byte value where the pointer points to, it is found > > at an offset of 3 from the pointer. > > Return values are handled a little differently than arguments. > libffi/README says: > > RVALUE is a pointer to a chunk of memory that is to hold the > result of the function call. Currently, it must be > at least one word in size (except for the n32 version > under Irix 6.x, which must be a pointer to an 8 byte > aligned value (a long long). It must also be at least > word aligned (depending on the return type, and the > system's alignment requirements). If RTYPE is > &ffi_type_void, this is ignored. If RVALUE is NULL, > the return value is discarded. > > So this cannot work: > > unsigned char result; > if (ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, > &ffi_type_uint8, args) != FFI_OK) { > > You could use "unsigned int result" on a 32-bit target, or use ffi_arg > which is typedef'ed to work correctly on 32 or 64-bit targets: > > ffi_arg result; > if (ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, > &ffi_type_uint8, args) != FFI_OK) { > > With those changes your example should be portable to any target supported > by libffi. > > Jeff > > > -- > To UNSUBSCRIBE, email to debian-gcc-request@lists.debian.org > with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org
next reply other threads:[~2003-03-16 17:16 UTC|newest] Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top 2003-03-16 17:16 Matthias Klose [this message] -- strict thread matches above, loose matches on Subject: below -- 2003-03-17 3:19 jsturm 2002-12-29 8:13 jsturm 2002-12-29 8:06 Jeff Sturm 2002-12-28 3:16 Matthias Klose
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=20030316171601.22995.qmail@sources.redhat.com \ --to=doko@cs.tu-berlin.de \ --cc=gcc-prs@gcc.gnu.org \ --cc=jsturm@gcc.gnu.org \ /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: linkBe 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; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).