re PR libffi/13221 (libffi's closure couldn't pass sequence of char and/or short...
authorHosaka Yuji <hos@tamanegi.org>
Tue, 2 Dec 2003 05:39:06 +0000 (05:39 +0000)
committerAndreas Tobler <andreast@gcc.gnu.org>
Tue, 2 Dec 2003 05:39:06 +0000 (06:39 +0100)
2003-12-02  Hosaka Yuji  <hos@tamanegi.org>

PR other/13221
* src/x86/ffi.c (ffi_prep_args, ffi_prep_incoming_args_SYSV):
Align arguments to 32 bits.

From-SVN: r74161

libffi/ChangeLog
libffi/src/x86/ffi.c

index 8d0fa81dc636c9434af924a4fd9c3722ce11ebee..557cf7fde363966cc93ba41f12e9f01e632d84f8 100644 (file)
@@ -1,3 +1,9 @@
+2003-12-02  Hosaka Yuji  <hos@tamanegi.org>
+
+       PR other/13221
+       * src/x86/ffi.c (ffi_prep_args, ffi_prep_incoming_args_SYSV):
+       Align arguments to 32 bits.
+
 2003-12-01  Andreas Tobler  <a.tobler@schweiz.ch>
 
        PR other/13221
index bd0874f771aa52cab496f55058ddb9d5efd04c6a..14b0295e1e1e7339d395f427027ab3d3542c73e3 100644 (file)
@@ -62,8 +62,8 @@ void ffi_prep_args(char *stack, extended_cif *ecif)
       size_t z;
 
       /* Align if necessary */
-      if (((*p_arg)->alignment - 1) & (unsigned) argp)
-       argp = (char *) ALIGN(argp, (*p_arg)->alignment);
+      if ((sizeof(int) - 1) & (unsigned) argp)
+       argp = (char *) ALIGN(argp, sizeof(int));
 
       z = (*p_arg)->size;
       if (z < sizeof(int))
@@ -301,8 +301,8 @@ ffi_prep_incoming_args_SYSV(char *stack, void **rvalue,
       size_t z;
 
       /* Align if necessary */
-      if (((*p_arg)->alignment - 1) & (unsigned) argp) {
-       argp = (char *) ALIGN(argp, (*p_arg)->alignment);
+      if ((sizeof(int) - 1) & (unsigned) argp) {
+       argp = (char *) ALIGN(argp, sizeof(int));
       }
 
       z = (*p_arg)->size;