Hmm, we're looking at this.  However, I don't really know what
C is or is not supposed to do here.  Given

char fooble ( ... )
{
   return 'z';
}

on an x86, 'z' will be returned at the lowest 8 bits in %eax.
What I don't know is, is the C compiler obliged to clear the
upper 24 bits of %eax, or does that onus fall on the callee?
Also, I don't even know where to look for the specification of
details of the C calling conventions.  Anyone got a clue?

J

| -----Original Message-----
| From: Ashley Yakeley [mailto:[EMAIL PROTECTED]] 
| Sent: Monday, August 06, 2001 1:34 AM
| To: GHC List
| Subject: GHC FFI Return Type Bug
| 
| 
| Has anyone else come across this? I've only tried this with 
| Word8 but I 
| suspect this is a problem with all return types smaller than 
| four bytes.
| 
| I've entered this as GHC bug #448104. 
| <http://sourceforge.net/tracker/index.php?func=detail&aid=4481
| 04&group_id=8
| 032&atid=108032>
| 
| Here's the C code:
| 
| extern "C"
|       {
|       unsigned char foo();
|       }
| 
| inline void use(const char* s)
|       {
|       }
| 
| unsigned char foo()
|       {
|       const char* s = "";
|       use(s);
|       return 0;
|       }
| 
| ...and the Haskell looks something like this:
| 
|  foreign import foo :: IO Word8
| 
| do {
|  w8 <- foo;
|  putStrLn (show (w8 :: Word8));
| }
| 
| ...and the result is this:
| 1074803712
| 
| Kind of an unusual Word8 value! But note that the low byte of 
| this value 
| is zero.
| 
| My setup:
| 
| $ ghc -v
| Glasgow Haskell Compiler, Version 5.00, for Haskell 98, 
| compiled by GHC 
| version 5.00
| Using package config file: /usr/lib/ghc-5.00/package.conf
| Hsc static flags: -static -fignore-interface-pragmas 
| -fomit-interface-pragmas -fdo-lambda-eta-expansion -flet-no-escape
| 
| $ uname -a
| Linux server 2.2.19pre17 #1 Tue Mar 13 22:37:59 EST 2001 i686 unknown
| 
| 
| -- 
| Ashley Yakeley, Seattle WA
| 
| 
| _______________________________________________
| Glasgow-haskell-users mailing list 
| [EMAIL PROTECTED] 
| http://www.haskell.org/mailman/listinfo/glasgo| w-haskell-users
| 

_______________________________________________
Glasgow-haskell-users mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to