mirror of
https://github.com/partic2/libffi
synced 2026-11-10 10:07:19 +00:00
Fix xfails
This commit is contained in:
@@ -0,0 +1,130 @@
|
||||
Index: libffi/ChangeLog
|
||||
===================================================================
|
||||
--- libffi.orig/ChangeLog
|
||||
+++ libffi/ChangeLog
|
||||
@@ -1,6 +1,11 @@
|
||||
2011-02-09 Anthony Green <green@moxielogic.com>
|
||||
|
||||
- * README: Mention ARM iOS.
|
||||
+ * testsuite/libffi.call/err_bad_typedef.c: Remove xfail.
|
||||
+ * testsuite/libffi.call/err_bad_abi.c: Remove xfail.
|
||||
+ * src/x86/ffi64.c (UNLIKELY, LIKELY): Define.
|
||||
+ (ffi_prep_closure_loc): Check for bad ABI.
|
||||
+ * src/prep_cif.c (UNLIKELY, LIKELY): Define.
|
||||
+ (initialize_aggregate): Check for bad types.
|
||||
|
||||
2011-02-09 Landon Fuller <landonf@macports.org>
|
||||
|
||||
@@ -20,6 +25,7 @@
|
||||
* src/closures.c: Handle FFI_EXEC_TRAMPOLINE_TABLE case.
|
||||
* build-ios.sh: New file.
|
||||
* fficonfig.h.in, configure, Makefile.in: Rebuilt.
|
||||
+ * README: Mention ARM iOS.
|
||||
|
||||
2011-02-08 Oren Held <orenhe@il.ibm.com>
|
||||
|
||||
Index: libffi/src/prep_cif.c
|
||||
===================================================================
|
||||
--- libffi.orig/src/prep_cif.c
|
||||
+++ libffi/src/prep_cif.c
|
||||
@@ -1,5 +1,6 @@
|
||||
/* -----------------------------------------------------------------------
|
||||
- prep_cif.c - Copyright (c) 1996, 1998, 2007 Red Hat, Inc.
|
||||
+ prep_cif.c - Copyright (c) 2011 Anthony Green
|
||||
+ Copyright (c) 1996, 1998, 2007 Red Hat, Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
@@ -26,6 +27,12 @@
|
||||
#include <ffi_common.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
+#ifndef __GNUC__
|
||||
+#define __builtin_expect(x, expected_value) (x)
|
||||
+#endif
|
||||
+#define LIKELY(x) __builtin_expect((x),1)
|
||||
+#define UNLIKELY(x) __builtin_expect((x),1)
|
||||
+
|
||||
/* Round up to FFI_SIZEOF_ARG. */
|
||||
|
||||
#define STACK_ARG_SIZE(x) ALIGN(x, FFI_SIZEOF_ARG)
|
||||
@@ -45,9 +52,13 @@ static ffi_status initialize_aggregate(f
|
||||
|
||||
ptr = &(arg->elements[0]);
|
||||
|
||||
+ if (UNLIKELY(ptr == 0))
|
||||
+ return FFI_BAD_TYPEDEF;
|
||||
+
|
||||
while ((*ptr) != NULL)
|
||||
{
|
||||
- if (((*ptr)->size == 0) && (initialize_aggregate((*ptr)) != FFI_OK))
|
||||
+ if (UNLIKELY(((*ptr)->size == 0)
|
||||
+ && (initialize_aggregate((*ptr)) != FFI_OK)))
|
||||
return FFI_BAD_TYPEDEF;
|
||||
|
||||
/* Perform a sanity check on the argument type */
|
||||
@@ -93,7 +104,8 @@ ffi_status ffi_prep_cif(ffi_cif *cif, ff
|
||||
ffi_type **ptr;
|
||||
|
||||
FFI_ASSERT(cif != NULL);
|
||||
- FFI_ASSERT(abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI);
|
||||
+ if (! (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI))
|
||||
+ return FFI_BAD_ABI;
|
||||
|
||||
cif->abi = abi;
|
||||
cif->arg_types = atypes;
|
||||
Index: libffi/src/x86/ffi64.c
|
||||
===================================================================
|
||||
--- libffi.orig/src/x86/ffi64.c
|
||||
+++ libffi/src/x86/ffi64.c
|
||||
@@ -28,6 +28,12 @@
|
||||
#include <ffi.h>
|
||||
#include <ffi_common.h>
|
||||
|
||||
+#ifndef __GNUC__
|
||||
+#define __builtin_expect(x, expected_value) (x)
|
||||
+#endif
|
||||
+#define LIKELY(x) __builtin_expect((x),1)
|
||||
+#define UNLIKELY(x) __builtin_expect((x),1)
|
||||
+
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
|
||||
@@ -498,6 +504,13 @@ ffi_prep_closure_loc (ffi_closure* closu
|
||||
{
|
||||
volatile unsigned short *tramp;
|
||||
|
||||
+ /* Sanity check on the cif ABI. */
|
||||
+ {
|
||||
+ int abi = cif->abi;
|
||||
+ if (UNLIKELY (! (abi > FFI_FIRST_ABI && abi < FFI_LAST_ABI)))
|
||||
+ return FFI_BAD_ABI;
|
||||
+ }
|
||||
+
|
||||
tramp = (volatile unsigned short *) &closure->tramp[0];
|
||||
|
||||
tramp[0] = 0xbb49; /* mov <code>, %r11 */
|
||||
Index: libffi/testsuite/libffi.call/err_bad_abi.c
|
||||
===================================================================
|
||||
--- libffi.orig/testsuite/libffi.call/err_bad_abi.c
|
||||
+++ libffi/testsuite/libffi.call/err_bad_abi.c
|
||||
@@ -4,7 +4,6 @@
|
||||
PR: none.
|
||||
Originator: Blake Chaffin 6/6/2007 */
|
||||
|
||||
-/* { dg-do run { xfail *-*-* } } */
|
||||
#include "ffitest.h"
|
||||
|
||||
static void
|
||||
Index: libffi/testsuite/libffi.call/err_bad_typedef.c
|
||||
===================================================================
|
||||
--- libffi.orig/testsuite/libffi.call/err_bad_typedef.c
|
||||
+++ libffi/testsuite/libffi.call/err_bad_typedef.c
|
||||
@@ -4,7 +4,6 @@
|
||||
PR: none.
|
||||
Originator: Blake Chaffin 6/6/2007 */
|
||||
|
||||
-/* { dg-do run { xfail *-*-* } } */
|
||||
#include "ffitest.h"
|
||||
|
||||
int main (void)
|
||||
@@ -13,3 +13,4 @@ sparc-v8-aggregate-returns
|
||||
hpux-mallinfo
|
||||
copyright-updates
|
||||
ios
|
||||
fix-xfails
|
||||
|
||||
Reference in New Issue
Block a user