Update README with a new port
[libffi.git] / ChangeLog.libffi-3.1
1 2014-03-16  Josh Triplett  <josh@joshtriplett.org>
2
3         * ChangeLog: Archive to ChangeLog.libffi-3.1 and delete.  Future
4         changelogs will come from git, with autogenerated snapshots shipped in
5         distributed tarballs.
6
7 2014-03-16  Josh Triplett  <josh@joshtriplett.org>
8
9         Add support for stdcall, thiscall, and fastcall on non-Windows
10         x86-32.
11
12         Linux supports the stdcall calling convention, either via
13         functions explicitly declared with the stdcall attribute, or via
14         code compiled with -mrtd which effectively makes stdcall the
15         default.
16
17         This introduces FFI_STDCALL, FFI_THISCALL, and FFI_FASTCALL on
18         non-Windows x86-32 platforms, as non-default calling conventions.
19
20         * Makefile.am: Compile in src/x86/win32.S on non-Windows x86-32.
21         * src/x86/ffitarget.h: Add FFI_STDCALL, FFI_THISCALL, and
22         FFI_FASTCALL on non-Windows x86-32.  Increase trampoline size to
23         accomodate these calling conventions, and unify some ifdeffery.
24         * src/x86/ffi.c: Add support for FFI_STDCALL, FFI_THISCALL, and
25         FFI_FASTCALL on non-Windows x86-32 platforms; update ifdeffery.
26         * src/x86/win32.S: Support compiling on non-Windows x86-32
27         platforms.  On those platforms, avoid redefining the SYSV symbols
28         already provided by src/x86/sysv.S.
29         * testsuite/libffi.call/closure_stdcall.c: Run on non-Windows.
30         #define __stdcall if needed.
31         * testsuite/libffi.call/closure_thiscall.c: Run on non-Windows.
32         #define __fastcall if needed.
33         * testsuite/libffi.call/fastthis1_win32.c: Run on non-Windows.
34         * testsuite/libffi.call/fastthis2_win32.c: Ditto.
35         * testsuite/libffi.call/fastthis3_win32.c: Ditto.
36         * testsuite/libffi.call/many2_win32.c: Ditto.
37         * testsuite/libffi.call/many_win32.c: Ditto.
38         * testsuite/libffi.call/strlen2_win32.c: Ditto.
39         * testsuite/libffi.call/strlen_win32.c: Ditto.
40         * testsuite/libffi.call/struct1_win32.c: Ditto.
41         * testsuite/libffi.call/struct2_win32.c: Ditto.
42
43 2014-03-16  Josh Triplett  <josh@joshtriplett.org>
44
45         * prep_cif.c: Remove unnecessary ifdef for X86_WIN32.
46         ffi_prep_cif_core had a special case for X86_WIN32, checking for
47         FFI_THISCALL in addition to the FFI_FIRST_ABI-to-FFI_LAST_ABI
48         range before returning FFI_BAD_ABI.  However, on X86_WIN32,
49         FFI_THISCALL already falls in that range, making the special case
50         unnecessary.  Remove it.
51
52 2014-03-16  Josh Triplett  <josh@joshtriplett.org>
53
54         * testsuite/libffi.call/closure_stdcall.c,
55         testsuite/libffi.call/closure_thiscall.c: Remove fragile stack
56         pointer checks.  These files included inline assembly to save the
57         stack pointer before and after the call, and compare the values.
58         However, compilers can and do leave the stack in different states
59         for these two pieces of inline assembly, such as by saving a
60         temporary value on the stack across the call; observed with gcc
61         -Os, and verified as spurious through careful inspection of
62         disassembly.
63
64 2014-03-16  Josh Triplett  <josh@joshtriplett.org>
65
66         * testsuite/libffi.call/many.c: Avoid spurious failure due to
67         excess floating-point precision.
68         * testsuite/libffi.call/many_win32.c: Ditto.
69
70 2014-03-16  Josh Triplett <josh@joshtriplett.org>
71
72         * libtool-ldflags: Re-add.
73
74 2014-03-16  Josh Triplett <josh@joshtriplett.org>
75
76         * Makefile.in, aclocal.m4, compile, config.guess, config.sub,
77         configure, depcomp, include/Makefile.in, install-sh,
78         libtool-ldflags, ltmain.sh, m4/libtool.m4, m4/ltoptions.m4,
79         m4/ltsugar.m4, m4/ltversion.m4, m4/lt~obsolete.m4,
80         man/Makefile.in, mdate-sh, missing, testsuite/Makefile.in: Delete
81         autogenerated files from version control.
82         * .gitignore: Add autogenerated files.
83         * autogen.sh: New script to generate the autogenerated files.
84         * README: Document requirement to run autogen.sh when building
85         directly from version control.
86         * .travis.yml: Run autogen.sh
87
88 2014-03-14  Anthony Green <green@moxielogic.com>
89
90         * configure, Makefile.in: Rebuilt.
91
92 2014-03-10  Mike Hommey <mh+mozilla@glandium.org>
93
94         * configure.ac: Allow building for mipsel with Android NDK r8.
95         * Makefile.am (AM_MAKEFLAGS): Replace double quotes with single
96         quotes.
97
98 2014-03-10  Landry Breuil <landry@openbsd.org>
99
100         * configure.ac: Ensure the linker supports @unwind sections in libffi.
101
102 2014-03-01  Anthony Green  <green@moxielogic.com>
103
104         * Makefile.am (EXTRA_DIST): Replace old scripts with
105         generate-darwin-source-and-headers.py.
106         * Makefile.in: Rebuilt.
107
108 2014-02-28  Anthony Green  <green@moxielogic.com>
109
110         * Makefile.am (AM_CFLAGS): Reintroduce missing -DFFI_DEBUG for
111         --enable-debug builds.
112         * Makefile.in: Rebuilt.
113
114 2014-02-28  Makoto Kato  <m_kato@ga2.so-net.ne.jp>
115
116         * src/closures.c: Fix build failure when using clang for Android.
117
118 2014-02-28  Marcin Wojdyr  <wojdyr@gmail.com>
119
120         * libffi.pc.in (toolexeclibdir): use -L${toolexeclibdir} instead
121         of -L${libdir}.
122
123 2014-02-28  Paulo Pizarro  <paulo.pizarro@gmail.com>
124
125         * src/bfin/sysv.S: Calling functions in shared libraries requires
126         considering the GOT.
127
128 2014-02-28  Josh Triplett  <josh@joshtriplett.org>
129
130         * src/x86/ffi64.c (classify_argument): Handle case where
131         FFI_TYPE_LONGDOUBLE == FFI_TYPE_DOUBLE.
132
133 2014-02-28  Anthony Green  <green@moxielogic.com>
134
135         * ltmain.sh: Generate with libtool-2.4.2.418.
136         * m4/libtool.m4, m4/ltoptions.m4, m4/ltversion.m4: Ditto.
137         * configure: Rebuilt.
138
139 2014-02-28  Dominik Vogt  <vogt@linux.vnet.ibm.com>
140
141         * configure.ac (AC_ARG_ENABLE struct): Fix typo in help
142         message.
143         (AC_ARG_ENABLE raw_api): Ditto.
144         * configure, fficonfig.h.in: Rebuilt.
145
146 2014-02-28  Will Newton  <will.newton@linaro.org>
147
148         * src/arm/sysv.S: Initialize IP register with FP.
149
150 2014-02-28  Yufeng Zhang  <yufeng.zhang@arm.com>
151
152         * src/aarch64/sysv.S (ffi_closure_SYSV): Use x29 as the
153         main CFA reg; update cfi_rel_offset.
154
155 2014-02-15  Marcus Comstedt  <marcus@mc.pp.se>
156
157         * src/powerpc/ffi_linux64.c, src/powerpc/linux64_closure.S: Remove
158         assumption on contents of r11 in closure.
159
160 2014-02-09  Heiher  <r@hev.cc>
161
162         * src/mips/n32.S: Fix call floating point va function.
163
164 2014-01-21  Zachary Waldowski  <zach@waldowski.me>
165
166         * src/aarch64/ffi.c: Fix missing semicolons on assertions under
167         debug mode.
168
169 2013-12-30  Zachary Waldowski  <zach@waldowski.me>
170
171         * .gitignore: Exclude darwin_* generated source and build_* trees.
172         * src/aarch64/ffi.c, src/arm/ffi.c, src/x86/ffi.c: Inhibit Clang
173         previous prototype warnings.
174         * src/arm/ffi.c: Prevent NULL dereference, fix short type warning
175         * src/dlmalloc.c: Fix warnings from set_segment_flags return type,
176         and the native use of size_t for malloc on platforms
177         * src/arm/sysv.S: Use unified syntax. Clang clean-ups for
178         ARM_FUNC_START.
179         * generate-osx-source-and-headers.py: Remove.
180         * build-ios.sh: Remove.
181         * libffi.xcodeproj/project.pbxproj: Rebuild targets. Include
182         x86_64+aarch64 pieces in library.  Export headers properly.
183         * src/x86/ffi64.c: More Clang warning clean-ups.
184         * src/closures.c (open_temp_exec_file_dir): Use size_t.
185         * src/prep_cif.c (ffi_prep_cif_core): Cast ALIGN result.
186         * src/aarch64/sysv.S: Use CNAME for global symbols.  Only use
187         .size for ELF targets.
188         * src/aarch64/ffi.c: Clean up for double == long double.  Clean up
189         from Clang warnings.  Use Clang cache invalidation builtin.  Use
190         size_t in place of unsigned in many places.  Accommodate for
191         differences in Apple AArch64 ABI.
192
193 2013-12-02  Daniel Rodríguez Troitiño  <drodrigueztroitino@yahoo.es>
194
195         * generate-darwin-source-and-headers.py: Clean up, modernize,
196         merged version of previous scripts.
197
198 2013-11-21  Anthony Green  <green@moxielogic.com>
199
200         * configure, Makefile.in, include/Makefile.in, include/ffi.h.in,
201         man/Makefile.in, testsuite/Makefile.in, fficonfig.h.in: Rebuilt.
202
203 2013-11-21  Alan Modra  <amodra@gmail.com>
204
205         * Makefile.am (EXTRA_DIST): Add new src/powerpc files.
206         (nodist_libffi_la_SOURCES <POWERPC, POWERPC_FREEBSD>): Likewise.
207         * configure.ac (HAVE_LONG_DOUBLE_VARIANT): Define for powerpc.
208         * include/ffi.h.in (ffi_prep_types): Declare.
209         * src/prep_cif.c (ffi_prep_cif_core): Call ffi_prep_types.
210         * src/types.c (FFI_NONCONST_TYPEDEF): Define and use for
211         HAVE_LONG_DOUBLE_VARIANT.
212         * src/powerpc/ffi_powerpc.h: New file.
213         * src/powerpc/ffi.c: Split into..
214         * src/powerpc/ffi_sysv.c: ..new file, and..
215         * src/powerpc/ffi_linux64.c: ..new file, rewriting parts.
216         * src/powerpc/ffitarget.h (enum ffi_abi): Rewrite powerpc ABI
217         selection as bits controlling features.
218         * src/powerpc/linux64.S: For consistency, use POWERPC64 rather
219         than __powerpc64__.
220         * src/powerpc/linux64_closure.S: Likewise.
221         * src/powerpc/ppc_closure.S: Likewise.  Move .note.FNU-stack
222         inside guard.
223         * src/powerpc/sysv.S: Likewise.
224         * configure: Regenerate.
225         * fficonfig.h.in: Regenerate.
226         * Makefile.in: Regenerate.
227
228 2013-11-20  Alan Modra  <amodra@gmail.com>
229
230         * src/powerpc/ffi.c (ffi_prep_cif_machdep_core): Use
231         NUM_FPR_ARG_REGISTERS64 and NUM_GPR_ARG_REGISTERS64 not their
232         32-bit versions for 64-bit code.
233         * src/powerpc/linux64_closure.S: Don't use the return value area
234         as a parameter save area on ELFv2.
235
236 2013-11-18  Iain Sandoe  <iain@codesourcery.com>
237
238         * src/powerpc/darwin.S (EH): Correct use of pcrel FDE encoding.
239         * src/powerpc/darwin_closure.S (EH): Likewise. Modernise picbase
240         labels.
241
242 2013-11-18  Anthony Green  <green@moxielogic.com>
243
244         * src/arm/ffi.c (ffi_call): Hoist declaration of temp to top of
245         function.
246         * src/arm/ffi.c (ffi_closure_inner): Moderize function declaration
247         to appease compiler.
248         Thanks for Gregory P. Smith <greg@krypto.org>.
249
250 2013-11-18  Anthony Green  <green@moxielogic.com>
251
252         * README (tested): Mention PowerPC ELFv2.
253
254 2013-11-16  Alan Modra  <amodra@gmail.com>
255
256         * src/powerpc/ppc_closure.S: Move errant #endif to where it belongs.
257         Don't bl .Luint128.
258
259 2013-11-16  Alan Modra  <amodra@gmail.com>
260
261         * src/powerpc/ffi.c (ffi_prep_cif_machdep_core): Use #if _CALL_ELF
262         test to select parameter save sizing for ELFv2 vs. ELFv1.
263         * src/powerpc/ffitarget.h (FFI_V2_TYPE_FLOAT_HOMOG,
264         FFI_V2_TYPE_DOUBLE_HOMOG, FFI_V2_TYPE_SMALL_STRUCT): Define.
265         (FFI_TRAMPOLINE_SIZE): Define variant for ELFv2.
266         * src/powerpc/ffi.c (FLAG_ARG_NEEDS_PSAVE): Define.
267         (discover_homogeneous_aggregate): New function.
268         (ffi_prep_args64): Adjust start of param save area for ELFv2.
269         Handle homogenous floating point struct parms.
270         (ffi_prep_cif_machdep_core): Adjust space calculation for ELFv2.
271         Handle ELFv2 return values.  Set FLAG_ARG_NEEDS_PSAVE.  Handle
272         homogenous floating point structs.
273         (ffi_call): Increase size of smst_buffer for ELFv2.  Handle ELFv2.
274         (flush_icache): Compile for ELFv2.
275         (ffi_prep_closure_loc): Set up ELFv2 trampoline.
276         (ffi_closure_helper_LINUX64): Don't return all structs directly
277         to caller.  Handle homogenous floating point structs.  Handle
278         ELFv2 struct return values.
279         * src/powerpc/linux64.S (ffi_call_LINUX64): Set up r2 for
280         ELFv2.  Adjust toc save location.  Call function pointer using
281         r12.  Handle FLAG_RETURNS_SMST.  Don't predict branches.
282         * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Set up r2
283         for ELFv2.  Define ELFv2 versions of STACKFRAME, PARMSAVE, and
284         RETVAL.  Handle possibly missing parameter save area.  Handle
285         ELFv2 return values.
286         (.note.GNU-stack): Move inside outer #ifdef.
287
288 2013-11-16  Alan Modra  <amodra@gmail.com>
289
290         * src/powerpc/ffi.c (ffi_prep_cif_machdep): Revert 2013-02-08
291         change.  Do not consume an int arg when returning a small struct
292         for FFI_SYSV ABI.
293         (ffi_call): Only use bounce buffer when FLAG_RETURNS_SMST.
294         Properly copy bounce buffer to destination.
295         * src/powerpc/sysv.S: Revert 2013-02-08 change.
296         * src/powerpc/ppc_closure.S: Remove stray '+'.
297
298 2013-11-16  Alan Modra  <amodra@gmail.com>
299
300         * src/powerpc/ffi.c (ffi_prep_args64): Align struct parameters
301         according to __STRUCT_PARM_ALIGN__.
302         (ffi_prep_cif_machdep_core): Likewise.
303         (ffi_closure_helper_LINUX64): Likewise.
304
305 2013-11-16  Alan Modra  <amodra@gmail.com>
306
307         * src/powerpc/linux64.S (ffi_call_LINUX64): Tweak restore of r28.
308         (.note.GNU-stack): Move inside outer #ifdef.
309         * src/powerpc/linux64_closure.S (STACKFRAME, PARMSAVE,
310         RETVAL): Define and use throughout.
311         (ffi_closure_LINUX64): Save fprs before buying stack.
312         (.note.GNU-stack): Move inside outer #ifdef.
313
314 2013-11-16  Alan Modra  <amodra@gmail.com>
315
316         * src/powerpc/ffitarget.h (FFI_TARGET_SPECIFIC_VARIADIC): Define.
317         (FFI_EXTRA_CIF_FIELDS): Define.
318         * src/powerpc/ffi.c (ffi_prep_args64): Save fprs as per the
319         ABI, not to both fpr and param save area.
320         (ffi_prep_cif_machdep_core): Renamed from ffi_prep_cif_machdep.
321         Keep initial flags.  Formatting.  Remove dead FFI_LINUX_SOFT_FLOAT
322         code.
323         (ffi_prep_cif_machdep, ffi_prep_cif_machdep_var): New functions.
324         (ffi_closure_helper_LINUX64): Pass floating point as per ABI,
325         not to both fpr and parameter save areas.
326
327         * libffi/testsuite/libffi.call/cls_double_va.c (main): Correct
328         function cast and don't call ffi_prep_cif.
329         * libffi/testsuite/libffi.call/cls_longdouble_va.c (main): Likewise.
330
331 2013-11-15  Andrew Haley  <aph@redhat.com>
332
333         * doc/libffi.texi (Closure Example): Fix the sample code.
334         * doc/libffi.info, doc/stamp-vti, doc/version.texi: Rebuilt.
335
336 2013-11-15  Andrew Haley  <aph@redhat.com>
337
338         * testsuite/libffi.call/va_struct1.c (main): Fix broken test.
339         * testsuite/libffi.call/cls_uint_va.c (cls_ret_T_fn): Likewise
340         * testsuite/libffi.call/cls_struct_va1.c (test_fn): Likewise.
341         * testsuite/libffi.call/va_1.c (main): Likewise.
342
343 2013-11-14  David Schneider  <david.schneider@bivab.de>
344
345         * src/arm/ffi.c: Fix register allocation for mixed float and
346         doubles.
347         * testsuite/libffi.call/cls_many_mixed_float_double.c: Testcase
348         for many mixed float and double arguments.
349
350 2013-11-13  Alan Modra  <amodra@gmail.com>
351
352         * doc/libffi.texi (Simple Example): Correct example code.
353         * doc/libffi.info, doc/stamp-vti, doc/version.texi: Rebuilt.
354
355 2013-11-13  Anthony Green  <green@moxielogic.com>
356
357         * include/ffi_common.h: Respect HAVE_ALLOCA_H for GNU compiler
358         based build. (Thanks to tmr111116 on github)
359
360 2013-11-09  Anthony Green  <green@moxielogic.com>
361
362         * m4/libtool.m4: Refresh.
363         * configure, Makefile.in: Rebuilt.
364         * README: Add more notes about next release.
365
366 2013-11-09  Shigeharu TAKENO  <shige@iee.niit.ac.jp>
367
368         * m4/ax_gcc_archflag.m4 (ax_gcc_arch): Don't recognize
369         UltraSPARC-IIi as ultrasparc3.
370
371 2013-11-06  Mark Kettenis  <kettenis@gnu.org>
372
373         * src/x86/freebsd.S (ffi_call_SYSV): Align the stack pointer to
374         16-bytes.
375
376 2013-11-06  Konstantin Belousov <kib@freebsd.org>
377
378         * src/x86/freebsd.S (ffi_closure_raw_SYSV): Mark the assembler
379         source as not requiring executable stack.
380
381 2013-11-02  Anthony Green  <green@moxielogic.com>
382
383         * doc/libffi.texi (The Basics): Clarify return value buffer size
384         requirements.  Also, NULL result buffer pointers are no longer
385         supported.
386         * doc/libffi.info: Rebuilt.
387
388 2013-11-02  Mischa Jonker  <mjonker@synopsys.com>
389
390         * Makefile.am (nodist_libffi_la_SOURCES): Fix build error.
391         * Makefile.in: Rebuilt.
392
393 2013-11-02  David Schneider  <david.schneider@bivab.de>
394
395         * src/arm/ffi.c: more robust argument handling for closures on arm hardfloat
396         * testsuite/libffi.call/many_mixed.c: New file.
397         * testsuite/libffi.call/cls_many_mixed_args.c: More tests.
398
399 2013-11-02  Vitaly Budovski
400
401         * src/x86/ffi.c (ffi_prep_cif_machdep): Don't align stack for win32.
402
403 2013-10-23  Mark H Weaver  <mhw@netris.org>
404
405         * src/mips/ffi.c: Fix handling of uint32_t arguments on the
406         MIPS N32 ABI.
407
408 2013-10-13  Sandra Loosemore  <sandra@codesourcery.com>
409
410         * README: Add Nios II to table of supported platforms.
411         * Makefile.am (EXTRA_DIST): Add nios2 files.
412         (nodist_libffi_la_SOURCES): Likewise.
413         * Makefile.in: Regenerated.
414         * configure.ac (nios2*-linux*): New host.
415         (NIOS2): Add AM_CONDITIONAL.
416         * configure: Regenerated.
417         * src/nios2/ffi.c: New.
418         * src/nios2/ffitarget.h: New.
419         * src/nios2/sysv.S: New.
420         * src/prep_cif.c (initialize_aggregate): Handle extra structure
421         alignment via FFI_AGGREGATE_ALIGNMENT.
422         (ffi_prep_cif_core): Conditionalize structure return for NIOS2.
423
424 2013-10-10  Sandra Loosemore  <sandra@codesourcery.com>
425
426         * testsuite/libffi.call/cls_many_mixed_args.c (cls_ret_double_fn):
427         Fix uninitialized variable.
428
429 2013-10-11  Marcus Shawcroft  <marcus.shawcroft@arm.com>
430
431         * testsuite/libffi.call/many.c (many): Replace * with +.
432
433 2013-10-08  Ondřej Bílka  <neleai@seznam.cz>
434
435         * src/aarch64/ffi.c, src/aarch64/sysv.S, src/arm/ffi.c,
436         src/arm/gentramp.sh, src/bfin/sysv.S, src/closures.c,
437         src/dlmalloc.c, src/ia64/ffi.c, src/microblaze/ffi.c,
438         src/microblaze/sysv.S, src/powerpc/darwin_closure.S,
439         src/powerpc/ffi.c, src/powerpc/ffi_darwin.c, src/sh/ffi.c,
440         src/tile/tile.S, testsuite/libffi.call/nested_struct11.c: Fix
441         spelling errors.
442
443 2013-10-08  Anthony Green  <green@moxielogic.com>
444
445         * aclocal.m4, compile, config.guess, config.sub, depcomp,
446         install-sh, mdate-sh, missing, texinfo.tex: Update from upstream.
447         * configure.ac: Update version to 3.0.14-rc0.
448         * Makefile.in, configure, Makefile.in, include/Makefile.in,
449         man/Makefile.in, testsuite/Makefile.in: Rebuilt.
450         * README: Mention M88K and VAX.
451
452 2013-07-15  Miod Vallat  <miod@openbsd.org>
453
454         * Makefile.am,
455         configure.ac,
456         src/m88k/ffi.c,
457         src/m88k/ffitarget.h,
458         src/m88k/obsd.S,
459         src/vax/elfbsd.S,
460         src/vax/ffi.c,
461         src/vax/ffitarget.h: Add m88k and vax support.
462
463 2013-06-24 Alan Modra  <amodra@gmail.com>
464
465         * src/powerpc/ffi.c (ffi_prep_args_SYSV): Move var declaration
466         before statements.
467         (ffi_prep_args64): Support little-endian.
468         (ffi_closure_helper_SYSV, ffi_closure_helper_LINUX64): Likewise.
469         * src/powerpc/linux64_closure.S (ffi_closure_LINUX64): Likewise.
470         * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Likewise.
471
472 2013-06-12  Mischa Jonker  <mjonker@synopsys.com>
473
474          * configure.ac: Add support for ARC.
475          * Makefile.am: Likewise.
476          * README: Add ARC details.
477          * src/arc/arcompact.S: New.
478          * src/arc/ffi.c: Likewise.
479          * src/arc/ffitarget.h: Likewise.
480
481 2013-03-28  David Schneider  <david.schneider@bivab.de>
482
483          * src/arm/ffi.c: Fix support for ARM hard-float calling convention.
484          * src/arm/sysv.S: call different methods for SYSV and VFP ABIs.
485          * testsuite/libffi.call/cls_many_mixed_args.c: testcase for a closure with
486          mixed arguments, many doubles.
487          * testsuite/libffi.call/many_double.c: testcase for calling a function using
488          more than 8 doubles.
489          * testcase/libffi.call/many.c: use absolute value to check result against an
490          epsilon
491
492 2013-03-17  Anthony Green  <green@moxielogic.com>
493
494         * README: Update for 3.0.13.
495         * configure.ac: Ditto.
496         * configure: Rebuilt.
497         * doc/*: Update version.
498
499 2013-03-17  Dave Korn  <dave.korn.cygwin@gmail.com>
500
501         * src/closures.c (is_emutramp_enabled
502         [!FFI_MMAP_EXEC_EMUTRAMP_PAX]): Move default definition outside
503         enclosing #if scope.
504
505 2013-03-17  Anthony Green  <green@moxielogic.com>
506
507         * configure.ac: Only modify toolexecdir in certain cases.
508         * configure: Rebuilt.
509
510 2013-03-16  Gilles Talis  <gilles.talis@gmail.com>
511
512         * src/powerpc/ffi.c (ffi_prep_args_SYSV): Don't use
513         fparg_count,etc on __NO_FPRS__ targets.
514
515 2013-03-16  Alan Hourihane  <alanh@fairlite.co.uk>
516
517         * src/m68k/sysv.S (epilogue): Don't use extb instruction on
518         m680000 machines.
519
520 2013-03-16  Alex Gaynor <alex.gaynor@gmail.com>
521
522         * src/x86/ffi.c (ffi_prep_cif_machdep): Always align stack.
523
524 2013-03-13  Markos Chandras <markos.chandras@imgtec.com>
525
526         * configure.ac: Add support for Imagination Technologies Meta.
527         * Makefile.am: Likewise.
528         * README: Add Imagination Technologies Meta details.
529         * src/metag/ffi.c: New.
530         * src/metag/ffitarget.h: Likewise.
531         * src/metag/sysv.S: Likewise.
532
533 2013-02-24  Andreas Schwab  <schwab@linux-m68k.org>
534
535         * doc/libffi.texi (Structures): Fix missing category argument of
536         @deftp.
537
538 2013-02-11  Anthony Green <green@moxielogic.com>
539
540         * configure.ac: Update release number to 3.0.12.
541         * configure: Rebuilt.
542         * README: Update release info.
543
544 2013-02-10  Anthony Green <green@moxielogic.com>
545
546         * README: Add Moxie.
547         * src/moxie/ffi.c: Created.
548         * src/moxie/eabi.S: Created.
549         * src/moxie/ffitarget.h: Created.
550         * Makefile.am (nodist_libffi_la_SOURCES): Add Moxie.
551         * Makefile.in: Rebuilt.
552         * configure.ac: Add Moxie.
553         * configure: Rebuilt.
554         * testsuite/libffi.call/huge_struct.c: Disable format string
555         warnings for moxie*-*-elf tests.
556
557 2013-02-10  Anthony Green <green@moxielogic.com>
558
559         * Makefile.am (LTLDFLAGS): Fix reference.
560         * Makefile.in: Rebuilt.
561
562 2013-02-10  Anthony Green <green@moxielogic.com>
563
564         * README: Update supported platforms.  Update test results link.
565
566 2013-02-09  Anthony Green <green@moxielogic.com>
567
568         * testsuite/libffi.call/negint.c: Remove forced -O2.
569         * testsuite/libffi.call/many2.c (foo): Remove GCCism.
570         * testsuite/libffi.call/ffitest.h: Add default PRIuPTR definition.
571
572         * src/sparc/v8.S (ffi_closure_v8): Import ancient ulonglong
573         closure return type fix developed by Martin v. Löwis for cpython
574         fork.
575
576 2013-02-08  Andreas Tobler  <andreast@fgznet.ch>
577
578         * src/powerpc/ffi.c (ffi_prep_cif_machdep): Fix small struct
579         support.
580         * src/powerpc/sysv.S: Ditto.
581
582 2013-02-08  Anthony Green <green@moxielogic.com>
583
584         * testsuite/libffi.call/cls_longdouble.c: Remove xfail for
585         arm*-*-*.
586
587 2013-02-08  Anthony Green <green@moxielogic.com>
588
589         * src/sparc/ffi.c (ffi_prep_closure_loc): Fix cache flushing for GCC.
590
591 2013-02-08  Matthias Klose  <doko@ubuntu.com>
592
593         * man/ffi_prep_cif.3: Clean up for debian linter.
594
595 2013-02-08  Peter Bergner  <bergner@vnet.ibm.com>
596
597         * src/powerpc/ffi.c (ffi_prep_args_SYSV): Account for FP args pushed
598         on the stack.
599
600 2013-02-08  Anthony Green <green@moxielogic.com>
601
602         * Makefile.am (EXTRA_DIST): Add missing files.
603         * testsuite/Makefile.am (EXTRA_DIST): Ditto.
604         * Makefile.in: Rebuilt.
605
606 2013-02-08  Anthony Green <green@moxielogic.com>
607
608         * configure.ac: Move sparc asm config checks to within functions
609         for compatibility with sun tools.
610         * configure: Rebuilt.
611         * src/sparc/ffi.c (ffi_prep_closure_loc): Flush cache on v9
612         systems.
613         * src/sparc/v8.S (ffi_flush_icache): Implement a sparc v9 cache
614         flusher.
615
616 2013-02-08  Nathan Rossi <nathan.rossi@xilinx.com>
617
618         * src/microblaze/ffi.c (ffi_closure_call_SYSV): Fix handling of
619         small big-endian structures.
620         (ffi_prep_args): Ditto.
621
622 2013-02-07  Anthony Green <green@moxielogic.com>
623
624         * src/sparc/v8.S (ffi_call_v8): Fix typo from last patch
625         (effectively hiding ffi_call_v8).
626
627 2013-02-07  Anthony Green <green@moxielogic.com>
628
629         * configure.ac: Update bug reporting address.
630         * configure.in: Rebuild.
631
632         * src/sparc/v8.S (ffi_flush_icache): Out-of-line cache flusher for
633         Sun compiler.
634         * src/sparc/ffi.c (ffi_call): Remove warning.
635         Call ffi_flush_icache for non-GCC builds.
636         (ffi_prep_closure_loc): Use ffi_flush_icache.
637
638         * Makefile.am (EXTRA_DIST): Add libtool-ldflags.
639         * Makefile.in: Rebuilt.
640         * libtool-ldflags: New file.
641
642 2013-02-07  Daniel Schepler <dschepler@gmail.com>
643
644         * configure.ac: Correctly identify x32 systems as 64-bit.
645         * m4/libtool.m4: Remove libtool expr error.
646         * aclocal.m4, configure: Rebuilt.
647
648 2013-02-07  Anthony Green <green@moxielogic.com>
649
650         * configure.ac: Fix GCC usage test.
651         * configure: Rebuilt.
652         * README: Mention LLVM/GCC x86_64 issue.
653         * testsuite/Makefile.in: Rebuilt.
654
655 2013-02-07  Anthony Green <green@moxielogic.com>
656
657         * testsuite/libffi.call/cls_double_va.c (main): Replace // style
658         comments with /* */ for xlc compiler.
659         * testsuite/libffi.call/stret_large.c (main): Ditto.
660         * testsuite/libffi.call/stret_large2.c (main): Ditto.
661         * testsuite/libffi.call/nested_struct1.c (main): Ditto.
662         * testsuite/libffi.call/huge_struct.c (main): Ditto.
663         * testsuite/libffi.call/float_va.c (main): Ditto.
664         * testsuite/libffi.call/cls_struct_va1.c (main): Ditto.
665         * testsuite/libffi.call/cls_pointer_stack.c (main): Ditto.
666         * testsuite/libffi.call/cls_pointer.c (main): Ditto.
667         * testsuite/libffi.call/cls_longdouble_va.c (main): Ditto.
668
669 2013-02-06  Anthony Green <green@moxielogic.com>
670
671         * man/ffi_prep_cif.3: Clean up for debian lintian checker.
672
673 2013-02-06  Anthony Green <green@moxielogic.com>
674
675         * Makefile.am (pkgconfigdir): Add missing pkgconfig install bits.
676         * Makefile.in: Rebuild.
677
678 2013-02-02  Mark H Weaver <mhw@netris.org>
679
680         * src/x86/ffi64.c (ffi_call): Sign-extend integer arguments passed
681         via general purpose registers.
682
683 2013-01-21  Nathan Rossi <nathan.rossi@xilinx.com>
684
685         * README: Add MicroBlaze details.
686         * Makefile.am: Add MicroBlaze support.
687         * configure.ac: Likewise.
688         * src/microblaze/ffi.c: New.
689         * src/microblaze/ffitarget.h: Likewise.
690         * src/microblaze/sysv.S: Likewise.
691
692 2013-01-21  Nathan Rossi <nathan.rossi@xilinx.com>
693         * testsuite/libffi.call/return_uc.c: Fixed issue.
694
695 2013-01-21  Chris Zankel   <chris@zankel.net>
696
697         * README: Add Xtensa support.
698         * Makefile.am: Likewise.
699         * configure.ac: Likewise.
700         * Makefile.in Regenerate.
701         * configure: Likewise.
702         * src/prep_cif.c: Handle Xtensa.
703         * src/xtensa: New directory.
704         * src/xtensa/ffi.c: New file.
705         * src/xtensa/ffitarget.h: Ditto.
706         * src/xtensa/sysv.S: Ditto.
707
708 2013-01-11  Anthony Green  <green@moxielogic.com>
709
710         * src/powerpc/ffi_darwin.c (ffi_prep_args): Replace // style
711         comments with /* */ for xlc compiler.
712         * src/powerpc/aix.S (ffi_call_AIX): Ditto.
713         * testsuite/libffi.call/ffitest.h (allocate_mmap): Delete
714         deprecated inline function.
715         * testsuite/libffi.special/ffitestcxx.h: Ditto.
716         * README: Add update for AIX support.
717
718 2013-01-11  Anthony Green  <green@moxielogic.com>
719
720         * configure.ac: Robustify pc relative reloc check.
721         * m4/ax_cc_maxopt.m4: Don't -malign-double.  This is an ABI
722         changing option for 32-bit x86.
723         * aclocal.m4, configure: Rebuilt.
724         * README: Update supported target list.
725
726 2013-01-10  Anthony Green  <green@moxielogic.com>
727
728         * README (tested): Add Compiler column to table.
729
730 2013-01-10  Anthony Green  <green@moxielogic.com>
731
732         * src/x86/ffi64.c (struct register_args): Make sse array and array
733         of unions for sunpro compiler compatibility.
734
735 2013-01-10  Anthony Green  <green@moxielogic.com>
736
737         * configure.ac: Test target platform size_t size.  Handle both 32
738         and 64-bit builds for x86_64-* and i?86-* targets (allowing for
739         CFLAG option to change default settings).
740         * configure, aclocal.m4: Rebuilt.
741
742 2013-01-10  Anthony Green  <green@moxielogic.com>
743
744         * testsuite/libffi.special/special.exp: Only run exception
745         handling tests when using GNU compiler.
746
747         * m4/ax_compiler_vendor.m4: New file.
748         * configure.ac: Test for compiler vendor and don't use
749         AX_CFLAGS_WARN_ALL with the sun compiler.
750         * aclocal.m4, configure: Rebuilt.
751
752 2013-01-10  Anthony Green  <green@moxielogic.com>
753
754         * include/ffi_common.h: Don't use GCCisms to define types when
755         building with the SUNPRO compiler.
756
757 2013-01-10  Anthony Green  <green@moxielogic.com>
758
759         * configure.ac: Put local.exp in the right place.
760         * configure: Rebuilt.
761
762         * src/x86/ffi.c: Update comment about regparm function attributes.
763         * src/x86/sysv.S (ffi_closure_SYSV): The SUNPRO compiler requires
764         that all function arguments be passed on the stack (no regparm
765         support).
766
767 2013-01-08  Anthony Green  <green@moxielogic.com>
768
769         * configure.ac: Generate local.exp.  This sets CC_FOR_TARGET
770         when we are using the vendor compiler.
771         * testsuite/Makefile.am (EXTRA_DEJAGNU_SITE_CONFIG): Point to
772         ../local.exp.
773         * configure, testsuite/Makefile.in: Rebuilt.
774
775         * testsuite/libffi.call/call.exp: Run tests with different
776         options, depending on whether or not we are using gcc or the
777         vendor compiler.
778         * testsuite/lib/libffi.exp (libffi-init): Set using_gcc based on
779         whether or not we are building/testing with gcc.
780
781 2013-01-08  Anthony Green  <green@moxielogic.com>
782
783         * configure.ac: Switch x86 solaris target to X86 by default.
784         * configure: Rebuilt.
785
786 2013-01-08  Anthony Green  <green@moxielogic.com>
787
788         * configure.ac: Fix test for read-only eh_frame.
789         * configure: Rebuilt.
790
791 2013-01-08  Anthony Green  <green@moxielogic.com>
792
793         * src/x86/sysv.S, src/x86/unix64.S: Only emit DWARF unwind info
794         when building with the GNU toolchain.
795         * testsuite/libffi.call/ffitest.h (CHECK): Fix for Solaris vendor
796         compiler.
797
798 2013-01-07  Thorsten Glaser <tg@mirbsd.org>
799
800         * testsuite/libffi.call/cls_uchar_va.c,
801         testsuite/libffi.call/cls_ushort_va.c,
802         testsuite/libffi.call/va_1.c: Testsuite fixes.
803
804 2013-01-07  Thorsten Glaser <tg@mirbsd.org>
805
806         * src/m68k/ffi.c (CIF_FLAGS_SINT8, CIF_FLAGS_SINT16): Define.
807         (ffi_prep_cif_machdep): Fix 8-bit and 16-bit signed calls.
808         * src/m68k/sysv.S (ffi_call_SYSV, ffi_closure_SYSV): Ditto.
809
810 2013-01-04  Anthony Green  <green@moxielogic.com>
811
812         * Makefile.am (AM_CFLAGS): Don't automatically add -fexceptions
813         and -Wall.  This is set in the configure script after testing for
814         GCC.
815         * Makefile.in: Rebuilt.
816
817 2013-01-02  rofl0r <https://github.com/rofl0r>
818
819         * src/powerpc/ffi.c (ffi_prep_cif_machdep): Fix build error on ppc
820         when long double == double.
821
822 2013-01-02  Reini Urban  <rurban@x-ray.at>
823
824         * Makefile.am (libffi_la_LDFLAGS): Add -no-undefined to LDFLAGS
825         (required for shared libs on cygwin/mingw).
826         * Makefile.in: Rebuilt.
827
828 2012-10-31  Alan Modra  <amodra@gmail.co>
829
830         * src/powerpc/linux64_closure.S: Add new ABI support.
831         * src/powerpc/linux64.S: Likewise.
832
833 2012-10-30  Magnus Granberg  <zorry@gentoo.org>
834             Pavel Labushev  <pavel.labushev@runbox.ru>
835
836         * configure.ac: New options pax_emutramp
837         * configure, fficonfig.h.in: Regenerated
838         * src/closures.c: New function emutramp_enabled_check() and
839         checks.
840
841 2012-10-30  Frederick Cheung  <frederick.cheung@gmail.com>
842
843         * configure.ac: Enable FFI_MAP_EXEC_WRIT for Darwin 12 (mountain
844         lion) and future version.
845         * configure: Rebuild.
846
847 2012-10-30  James Greenhalgh  <james.greenhalgh at arm.com>
848             Marcus Shawcroft  <marcus.shawcroft at arm.com>
849
850         * README: Add details of aarch64 port.
851         * src/aarch64/ffi.c: New.
852         * src/aarch64/ffitarget.h: Likewise.
853         * src/aarch64/sysv.S: Likewise.
854         * Makefile.am: Support aarch64.
855         * configure.ac: Support aarch64.
856         * Makefile.in, configure: Rebuilt.
857
858 2012-10-30  James Greenhalgh  <james.greenhalgh at arm.com>
859             Marcus Shawcroft  <marcus.shawcroft at arm.com>
860
861         * testsuite/lib/libffi.exp: Add support for aarch64.
862         * testsuite/libffi.call/cls_struct_va1.c: New.
863         * testsuite/libffi.call/cls_uchar_va.c: Likewise.
864         * testsuite/libffi.call/cls_uint_va.c: Likewise.
865         * testsuite/libffi.call/cls_ulong_va.c: Likewise.
866         * testsuite/libffi.call/cls_ushort_va.c: Likewise.
867         * testsuite/libffi.call/nested_struct11.c: Likewise.
868         * testsuite/libffi.call/uninitialized.c: Likewise.
869         * testsuite/libffi.call/va_1.c: Likewise.
870         * testsuite/libffi.call/va_struct1.c: Likewise.
871         * testsuite/libffi.call/va_struct2.c: Likewise.
872         * testsuite/libffi.call/va_struct3.c: Likewise.
873
874 2012-10-12  Walter Lee  <walt@tilera.com>
875
876         * Makefile.am: Add TILE-Gx/TILEPro support.
877         * configure.ac: Likewise.
878         * Makefile.in: Regenerate.
879         * configure: Likewise.
880         * src/prep_cif.c (ffi_prep_cif_core): Handle TILE-Gx/TILEPro.
881         * src/tile: New directory.
882         * src/tile/ffi.c: New file.
883         * src/tile/ffitarget.h: Ditto.
884         * src/tile/tile.S: Ditto.
885
886 2012-10-12  Matthias Klose  <doko@ubuntu.com>
887
888         * generate-osx-source-and-headers.py: Normalize whitespace.
889
890 2012-09-14  David Edelsohn  <dje.gcc@gmail.com>
891
892         * configure: Regenerated.
893
894 2012-08-26  Andrew Pinski  <apinski@cavium.com>
895
896         PR libffi/53014
897         * src/mips/ffi.c (ffi_prep_closure_loc): Allow n32 with soft-float and n64 with
898         soft-float.
899
900 2012-08-08  Uros Bizjak  <ubizjak@gmail.com>
901
902         * src/s390/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test,
903         just return FFI_BAD_ABI when things are wrong.
904
905 2012-07-18  H.J. Lu  <hongjiu.lu@intel.com>
906
907         PR libffi/53982
908         PR libffi/53973
909         * src/x86/ffitarget.h: Check __ILP32__ instead of __LP64__ for x32.
910         (FFI_SIZEOF_JAVA_RAW): Defined to 4 for x32.
911
912 2012-05-16  H.J. Lu  <hongjiu.lu@intel.com>
913
914         * configure: Regenerated.
915
916 2012-05-05  Nicolas Lelong
917
918         * libffi.xcodeproj/project.pbxproj: Fixes.
919         * README: Update for iOS builds.
920
921 2012-04-23  Alexandre Keunecke I. de Mendonca <alexandre.keunecke@gmail.com>
922
923         * configure.ac: Add Blackfin/sysv support
924         * Makefile.am: Add Blackfin/sysv support
925         * src/bfin/ffi.c:  Add Blackfin/sysv support
926         * src/bfin/ffitarget.h: Add Blackfin/sysv support
927
928 2012-04-11  Anthony Green  <green@moxielogic.com>
929
930         * Makefile.am (EXTRA_DIST): Add new script.
931         * Makefile.in: Rebuilt.
932
933 2012-04-11  Zachary Waldowski  <zwaldowski@gmail.com>
934
935         * generate-ios-source-and-headers.py,
936         libffi.xcodeproj/project.pbxproj: Support a Mac static library via
937         Xcode. Set iOS compatibility to 4.0.  Move iOS trampoline
938         generation into an Xcode "run script" phase.  Include both as
939         Xcode build scripts. Don't always regenerate config files.
940
941 2012-04-10  Anthony Green  <green@moxielogic.com>
942
943         * src/powerpc/ffi_darwin.c (ffi_prep_args): Add missing semicolon.
944
945 2012-04-06  Anthony Green  <green@moxielogic.com>
946
947         * Makefile.am (EXTRA_DIST): Add new iOS/xcode files.
948         * Makefile.in: Rebuilt.
949
950 2012-04-06  Mike Lewis  <mikelikespie@gmail.com>
951
952         * generate-ios-source-and-headers.py: New file.
953         * libffi.xcodeproj/project.pbxproj: New file.
954         * README: Update instructions on building iOS binary.
955         * build-ios.sh: Delete.
956
957 2012-04-06  Anthony Green  <green@moxielogic.com>
958
959         * src/x86/ffi64.c (UINT128): Define differently for Intel and GNU
960         compilers, then use it.
961
962 2012-04-06  H.J. Lu  <hongjiu.lu@intel.com>
963
964         * m4/libtool.m4 (_LT_ENABLE_LOCK): Support x32.
965
966 2012-04-06  Anthony Green  <green@moxielogic.com>
967
968         * testsuite/Makefile.am (EXTRA_DIST): Add missing test cases.
969         * testsuite/Makefile.in: Rebuilt.
970
971 2012-04-05  Zachary Waldowski  <zwaldowski@gmail.com>
972
973         * include/ffi.h.in: Add missing trampoline table fields.
974         * src/arm/sysv.S: Fix ENTRY definition, and wrap symbol references
975         in CNAME.
976         * src/x86/ffi.c: Wrap Windows specific code in ifdefs.
977
978 2012-04-02  Peter Bergner  <bergner@vnet.ibm.com>
979
980         * src/powerpc/ffi.c (ffi_prep_args_SYSV): Declare double_tmp.
981         Silence casting pointer to integer of different size warning.
982         Delete goto to previously deleted label.
983         (ffi_call): Silence possibly undefined warning.
984         (ffi_closure_helper_SYSV): Declare variable type.
985
986 2012-04-02  Peter Rosin  <peda@lysator.liu.se>
987
988         * src/x86/win32.S (ffi_call_win32): Sign/zero extend the return
989         value in the Intel version as is already done for the AT&T version.
990         (ffi_closure_SYSV): Likewise.
991         (ffi_closure_raw_SYSV): Likewise.
992         (ffi_closure_STDCALL): Likewise.
993
994 2012-03-29  Peter Rosin  <peda@lysator.liu.se>
995
996         * src/x86/win32.S (ffi_closure_raw_THISCALL): Unify the frame
997         generation, fix the ENDP label and remove the surplus third arg
998         from the 'lea' insn.
999
1000 2012-03-29  Peter Rosin  <peda@lysator.liu.se>
1001
1002         * src/x86/win32.S (ffi_closure_raw_SYSV): Make the 'stubraw' label
1003         visible outside the PROC, so that ffi_closure_raw_THISCALL can see
1004         it.  Also instruct the assembler to add a frame to the function.
1005
1006 2012-03-23  Peter Rosin  <peda@lysator.liu.se>
1007
1008         * Makefile.am (AM_CPPFLAGS): Add -DFFI_BUILDING.
1009         * Makefile.in: Rebuilt.
1010         * include/ffi.h.in [MSVC]: Add __declspec(dllimport) decorations
1011         to all data exports, when compiling libffi clients using MSVC.
1012
1013 2012-03-29  Peter Rosin  <peda@lysator.liu.se>
1014
1015         * src/x86/ffitarget.h (ffi_abi): Add new ABI FFI_MS_CDECL and
1016         make it the default for MSVC.
1017         (FFI_TYPE_MS_STRUCT): New structure return convention.
1018         * src/x86/ffi.c (ffi_prep_cif_machdep): Tweak the structure
1019         return convention for FFI_MS_CDECL to be FFI_TYPE_MS_STRUCT
1020         instead of an ordinary FFI_TYPE_STRUCT.
1021         (ffi_prep_args): Treat FFI_TYPE_MS_STRUCT as FFI_TYPE_STRUCT.
1022         (ffi_call): Likewise.
1023         (ffi_prep_incoming_args_SYSV): Likewise.
1024         (ffi_raw_call): Likewise.
1025         (ffi_prep_closure_loc): Treat FFI_MS_CDECL as FFI_SYSV.
1026         * src/x86/win32.S (ffi_closure_SYSV): For FFI_TYPE_MS_STRUCT,
1027         return a pointer to the result structure in eax and don't pop
1028         that pointer from the stack, the caller takes care of it.
1029         (ffi_call_win32): Treat FFI_TYPE_MS_STRUCT as FFI_TYPE_STRUCT.
1030         (ffi_closure_raw_SYSV): Likewise.
1031
1032 2012-03-22  Peter Rosin  <peda@lysator.liu.se>
1033
1034         * testsuite/libffi.call/closure_stdcall.c [MSVC]: Add inline
1035         assembly version with Intel syntax.
1036         * testsuite/libffi.call/closure_thiscall.c [MSVC]: Likewise.
1037
1038 2012-03-23  Peter Rosin  <peda@lysator.liu.se>
1039
1040         * testsuite/libffi.call/ffitest.h: Provide abstration of
1041         __attribute__((fastcall)) in the form of a __FASTCALL__
1042         define.  Define it to __fastcall for MSVC.
1043         * testsuite/libffi.call/fastthis1_win32.c: Use the above.
1044         * testsuite/libffi.call/fastthis2_win32.c: Likewise.
1045         * testsuite/libffi.call/fastthis3_win32.c: Likewise.
1046         * testsuite/libffi.call/strlen2_win32.c: Likewise.
1047         * testsuite/libffi.call/struct1_win32.c: Likewise.
1048         * testsuite/libffi.call/struct2_win32.c: Likewise.
1049
1050 2012-03-22  Peter Rosin  <peda@lysator.liu.se>
1051
1052         * src/x86/win32.S [MSVC] (ffi_closure_THISCALL): Remove the manual
1053         frame on function entry, MASM adds one automatically.
1054
1055 2012-03-22  Peter Rosin  <peda@lysator.liu.se>
1056
1057         * testsuite/libffi.call/ffitest.h [MSVC]: Add kludge for missing
1058         bits in the MSVC headers.
1059
1060 2012-03-22  Peter Rosin  <peda@lysator.liu.se>
1061
1062         * testsuite/libffi.call/cls_12byte.c: Adjust to the C89 style
1063         with no declarations after statements.
1064         * testsuite/libffi.call/cls_16byte.c: Likewise.
1065         * testsuite/libffi.call/cls_18byte.c: Likewise.
1066         * testsuite/libffi.call/cls_19byte.c: Likewise.
1067         * testsuite/libffi.call/cls_1_1byte.c: Likewise.
1068         * testsuite/libffi.call/cls_20byte.c: Likewise.
1069         * testsuite/libffi.call/cls_20byte1.c: Likewise.
1070         * testsuite/libffi.call/cls_24byte.c: Likewise.
1071         * testsuite/libffi.call/cls_2byte.c: Likewise.
1072         * testsuite/libffi.call/cls_3_1byte.c: Likewise.
1073         * testsuite/libffi.call/cls_3byte1.c: Likewise.
1074         * testsuite/libffi.call/cls_3byte2.c: Likewise.
1075         * testsuite/libffi.call/cls_4_1byte.c: Likewise.
1076         * testsuite/libffi.call/cls_4byte.c: Likewise.
1077         * testsuite/libffi.call/cls_5_1_byte.c: Likewise.
1078         * testsuite/libffi.call/cls_5byte.c: Likewise.
1079         * testsuite/libffi.call/cls_64byte.c: Likewise.
1080         * testsuite/libffi.call/cls_6_1_byte.c: Likewise.
1081         * testsuite/libffi.call/cls_6byte.c: Likewise.
1082         * testsuite/libffi.call/cls_7_1_byte.c: Likewise.
1083         * testsuite/libffi.call/cls_7byte.c: Likewise.
1084         * testsuite/libffi.call/cls_8byte.c: Likewise.
1085         * testsuite/libffi.call/cls_9byte1.c: Likewise.
1086         * testsuite/libffi.call/cls_9byte2.c: Likewise.
1087         * testsuite/libffi.call/cls_align_double.c: Likewise.
1088         * testsuite/libffi.call/cls_align_float.c: Likewise.
1089         * testsuite/libffi.call/cls_align_longdouble.c: Likewise.
1090         * testsuite/libffi.call/cls_align_longdouble_split.c: Likewise.
1091         * testsuite/libffi.call/cls_align_longdouble_split2.c: Likewise.
1092         * testsuite/libffi.call/cls_align_pointer.c: Likewise.
1093         * testsuite/libffi.call/cls_align_sint16.c: Likewise.
1094         * testsuite/libffi.call/cls_align_sint32.c: Likewise.
1095         * testsuite/libffi.call/cls_align_sint64.c: Likewise.
1096         * testsuite/libffi.call/cls_align_uint16.c: Likewise.
1097         * testsuite/libffi.call/cls_align_uint32.c: Likewise.
1098         * testsuite/libffi.call/cls_align_uint64.c: Likewise.
1099         * testsuite/libffi.call/cls_dbls_struct.c: Likewise.
1100         * testsuite/libffi.call/cls_pointer_stack.c: Likewise.
1101         * testsuite/libffi.call/err_bad_typedef.c: Likewise.
1102         * testsuite/libffi.call/huge_struct.c: Likewise.
1103         * testsuite/libffi.call/nested_struct.c: Likewise.
1104         * testsuite/libffi.call/nested_struct1.c: Likewise.
1105         * testsuite/libffi.call/nested_struct10.c: Likewise.
1106         * testsuite/libffi.call/nested_struct2.c: Likewise.
1107         * testsuite/libffi.call/nested_struct3.c: Likewise.
1108         * testsuite/libffi.call/nested_struct4.c: Likewise.
1109         * testsuite/libffi.call/nested_struct5.c: Likewise.
1110         * testsuite/libffi.call/nested_struct6.c: Likewise.
1111         * testsuite/libffi.call/nested_struct7.c: Likewise.
1112         * testsuite/libffi.call/nested_struct8.c: Likewise.
1113         * testsuite/libffi.call/nested_struct9.c: Likewise.
1114         * testsuite/libffi.call/stret_large.c: Likewise.
1115         * testsuite/libffi.call/stret_large2.c: Likewise.
1116         * testsuite/libffi.call/stret_medium.c: Likewise.
1117         * testsuite/libffi.call/stret_medium2.c: Likewise.
1118         * testsuite/libffi.call/struct1.c: Likewise.
1119         * testsuite/libffi.call/struct1_win32.c: Likewise.
1120         * testsuite/libffi.call/struct2.c: Likewise.
1121         * testsuite/libffi.call/struct2_win32.c: Likewise.
1122         * testsuite/libffi.call/struct3.c: Likewise.
1123         * testsuite/libffi.call/struct4.c: Likewise.
1124         * testsuite/libffi.call/struct5.c: Likewise.
1125         * testsuite/libffi.call/struct6.c: Likewise.
1126         * testsuite/libffi.call/struct7.c: Likewise.
1127         * testsuite/libffi.call/struct8.c: Likewise.
1128         * testsuite/libffi.call/struct9.c: Likewise.
1129         * testsuite/libffi.call/testclosure.c: Likewise.
1130
1131 2012-03-21  Peter Rosin  <peda@lysator.liu.se>
1132
1133         * testsuite/libffi.call/float_va.c (float_va_fn): Use %f when
1134         printing doubles (%lf is for long doubles).
1135         (main): Likewise.
1136
1137 2012-03-21  Peter Rosin  <peda@lysator.liu.se>
1138
1139         * testsuite/lib/target-libpath.exp [*-*-cygwin*, *-*-mingw*]
1140         (set_ld_library_path_env_vars): Add the library search dir to PATH
1141         (and save PATH for later).
1142         (restore_ld_library_path_env_vars): Restore PATH.
1143
1144 2012-03-21  Peter Rosin  <peda@lysator.liu.se>
1145
1146         * testsuite/lib/target-libpath.exp [*-*-cygwin*, *-*-mingw*]
1147         (set_ld_library_path_env_vars): Add the library search dir to PATH
1148         (and save PATH for later).
1149         (restore_ld_library_path_env_vars): Restore PATH.
1150
1151 2012-03-20  Peter Rosin  <peda@lysator.liu.se>
1152
1153         * testsuite/libffi.call/strlen2_win32.c (main): Remove bug.
1154         * src/x86/win32.S [MSVC] (ffi_closure_SYSV): Make the 'stub' label
1155         visible outside the PROC, so that ffi_closure_THISCALL can see it.
1156
1157 2012-03-20  Peter Rosin  <peda@lysator.liu.se>
1158
1159         * testsuite/libffi.call/strlen2_win32.c (main): Remove bug.
1160         * src/x86/win32.S [MSVC] (ffi_closure_SYSV): Make the 'stub' label
1161         visible outside the PROC, so that ffi_closure_THISCALL can see it.
1162
1163 2012-03-19  Alan Hourihane  <alanh@fairlite.co.uk>
1164
1165         * src/m68k/ffi.c: Add MINT support.
1166         * src/m68k/sysv.S: Ditto.
1167
1168 2012-03-06  Chung-Lin Tang  <cltang@codesourcery.com>
1169
1170         * src/arm/ffi.c (ffi_call): Add __ARM_EABI__ guard around call to
1171         ffi_call_VFP().
1172         (ffi_prep_closure_loc): Add __ARM_EABI__ guard around use of
1173         ffi_closure_VFP.
1174         * src/arm/sysv.S: Add __ARM_EABI__ guard around VFP code.
1175
1176 2012-03-19  chennam  <csit@axway.com>
1177
1178         * src/powerpc/ffi_darwin.c (ffi_prep_closure_loc): Fix AIX closure
1179         support.
1180
1181 2012-03-13  Kaz Kojima  <kkojima@gcc.gnu.org>
1182
1183         * src/sh/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test,
1184         just return FFI_BAD_ABI when things are wrong.
1185         * src/sh64/ffi.c (ffi_prep_closure_loc): Ditto.
1186
1187 2012-03-09  David Edelsohn  <dje.gcc@gmail.com>
1188
1189         * src/powerpc/aix_closure.S (ffi_closure_ASM): Adjust for Darwin64
1190         change to return value of ffi_closure_helper_DARWIN and load type
1191         from return type.
1192
1193 2012-03-03  H.J. Lu  <hongjiu.lu@intel.com>
1194
1195         * src/x86/ffi64.c (ffi_call): Cast the return value to unsigned
1196         long.
1197         (ffi_prep_closure_loc): Cast to 64bit address in trampoline.
1198         (ffi_closure_unix64_inner): Cast return pointer to unsigned long
1199         first.
1200
1201         * src/x86/ffitarget.h (FFI_SIZEOF_ARG): Defined to 8 for x32.
1202         (ffi_arg): Set to unsigned long long for x32.
1203         (ffi_sarg): Set to long long for x32.
1204
1205 2012-03-03  H.J. Lu  <hongjiu.lu@intel.com>
1206
1207         * src/prep_cif.c (ffi_prep_cif_core): Properly check bad ABI.
1208
1209 2012-03-03  Andoni Morales Alastruey  <ylatuya@gmail.com>
1210
1211         * configure.ac: Add -no-undefined for both 32- and 64-bit x86
1212         windows-like hosts.
1213         * configure: Rebuilt.
1214
1215 2012-02-27  Mikael Pettersson  <mikpe@it.uu.se>
1216
1217         PR libffi/52223
1218         * Makefile.am (FLAGS_TO_PASS): Define.
1219         * Makefile.in: Regenerate.
1220
1221 2012-02-23  Anthony Green  <green@moxielogic.com>
1222
1223         * src/*/ffitarget.h: Ensure that users never include ffitarget.h
1224         directly.
1225
1226 2012-02-23  Kai Tietz  <ktietz@redhat.com>
1227
1228         PR libffi/52221
1229         * src/x86/ffi.c (ffi_closure_raw_THISCALL): New
1230         prototype.
1231         (ffi_prep_raw_closure_loc): Use ffi_closure_raw_THISCALL for
1232         thiscall-convention.
1233         (ffi_raw_call): Use ffi_prep_args_raw.
1234         * src/x86/win32.S (ffi_closure_raw_THISCALL): Add
1235         implementation for stub.
1236
1237 2012-02-10  Kai Tietz  <ktietz@redhat.com>
1238
1239         * configure.ac (AM_LTLDFLAGS): Add -no-undefine for x64
1240         windows target.
1241         * configure: Regenerated.
1242
1243 2012-02-08  Kai Tietz  <ktietz@redhat.com>
1244
1245         * src/prep_cif.c (ffi_prep_cif): Allow for X86_WIN32
1246         also FFI_THISCALL.
1247         * src/x86/ffi.c (ffi_closure_THISCALL): Add prototype.
1248         (FFI_INIT_TRAMPOLINE_THISCALL): New trampoline code.
1249         (ffi_prep_closure_loc): Add FFI_THISCALL support.
1250         * src/x86/ffitarget.h (FFI_TRAMPOLINE_SIZE): Adjust size.
1251         * src/x86/win32.S (ffi_closure_THISCALL): New closure code
1252         for thiscall-calling convention.
1253         * testsuite/libffi.call/closure_thiscall.c: New test.
1254
1255 2012-01-28  Kai Tietz  <ktietz@redhat.com>
1256
1257         * src/libffi/src/x86/ffi.c (ffi_call_win32): Add new
1258         argument to prototype for specify calling-convention.
1259         (ffi_call): Add support for stdcall/thiscall convention.
1260         (ffi_prep_args): Likewise.
1261         (ffi_raw_call): Likewise.
1262         * src/x86/ffitarget.h (ffi_abi): Add FFI_THISCALL and
1263         FFI_FASTCALL.
1264         * src/x86/win32.S (_ffi_call_win32): Add support for
1265         fastcall/thiscall calling-convention calls.
1266         * testsuite/libffi.call/fastthis1_win32.c: New test.
1267         * testsuite/libffi.call/fastthis2_win32.c: New test.
1268         * testsuite/libffi.call/fastthis3_win32.c: New test.
1269         * testsuite/libffi.call/strlen2_win32.c: New test.
1270         * testsuite/libffi.call/many2_win32.c: New test.
1271         * testsuite/libffi.call/struct1_win32.c: New test.
1272         * testsuite/libffi.call/struct2_win32.c: New test.
1273
1274 2012-01-23  Uros Bizjak  <ubizjak@gmail.com>
1275
1276         * src/alpha/ffi.c (ffi_prep_closure_loc): Check for bad ABI.
1277
1278 2012-01-23  Anthony Green  <green@moxielogic.com>
1279             Chris Young  <cdyoung@ntlworld.com>
1280
1281         * configure.ac: Add Amiga support.
1282         * configure: Rebuilt.
1283
1284 2012-01-23  Dmitry Nadezhin  <dmitry.nadezhin@gmail.com>
1285
1286         * include/ffi_common.h (LIKELY, UNLIKELY): Fix definitions.
1287
1288 2012-01-23  Andreas Schwab  <schwab@linux-m68k.org>
1289
1290         * src/m68k/sysv.S (ffi_call_SYSV): Properly test for plain
1291         mc68000.  Test for __HAVE_68881__ in addition to __MC68881__.
1292
1293 2012-01-19  Jakub Jelinek  <jakub@redhat.com>
1294
1295         PR rtl-optimization/48496
1296         * src/ia64/ffi.c (ffi_call): Fix up aliasing violations.
1297
1298 2012-01-09  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1299
1300         * configure.ac (i?86-*-*): Set TARGET to X86_64.
1301         * configure: Regenerate.
1302
1303 2011-12-07  Andrew Pinski  <apinski@cavium.com>
1304
1305         PR libffi/50051
1306         * src/mips/n32.S: Add ".set mips4".
1307
1308 2011-11-21  Andreas Tobler  <andreast@fgznet.ch>
1309
1310         * configure: Regenerate.
1311
1312 2011-11-12  David Gilbert <david.gilbert@linaro.org>
1313
1314         * doc/libffi.texi, include/ffi.h.in, include/ffi_common.h,
1315         man/Makefile.am, man/ffi.3, man/ffi_prep_cif.3,
1316         man/ffi_prep_cif_var.3, src/arm/ffi.c, src/arm/ffitarget.h,
1317         src/cris/ffi.c, src/prep_cif.c,
1318         testsuite/libffi.call/cls_double_va.c,
1319         testsuite/libffi.call/cls_longdouble_va.c,
1320         testsuite/libffi.call/float_va.c: Many changes to support variadic
1321         function calls.
1322
1323 2011-11-12  Kyle Moffett <Kyle.D.Moffett@boeing.com>
1324
1325         * src/powerpc/ffi.c, src/powerpc/ffitarget.h,
1326         src/powerpc/ppc_closure.S, src/powerpc/sysv.S: Many changes for
1327         softfloat powerpc variants.
1328
1329 2011-11-12  Petr Salinger <Petr.Salinger@seznam.cz>
1330
1331         * configure.ac (FFI_EXEC_TRAMPOLINE_TABLE): Fix kfreebsd support.
1332         * configure: Rebuilt.
1333
1334 2011-11-12  Timothy Wall  <twall@users.sf.net>
1335
1336         * src/arm/ffi.c (ffi_prep_args, ffi_prep_incoming_args_SYSV): Max
1337         alignment of 4 for wince on ARM.
1338
1339 2011-11-12  Kyle Moffett <Kyle.D.Moffett@boeing.com>
1340             Anthony Green <green@moxielogic.com>
1341
1342         * src/ppc/sysv.S, src/ppc/ffi.c: Remove use of ppc string
1343         instructions (not available on some cores, like the PPC440).
1344
1345 2011-11-12  Kimura Wataru  <kimuraw@i.nifty.jp>
1346
1347         * m4/ax_enable_builddir: Change from string comparison to numeric
1348         comparison for wc output.
1349         * configure.ac: Enable FFI_MMAP_EXEC_WRIT for darwin11 aka Mac OS
1350         X 10.7.
1351         * configure: Rebuilt.
1352
1353 2011-11-12  Anthony Green  <green@moxielogic.com>
1354
1355         * Makefile.am (AM_CCASFLAGS): Add -g option to build assembly
1356         files with debug info.
1357         * Makefile.in: Rebuilt.
1358
1359 2011-11-12  Jasper Lievisse Adriaanse <jasper@openbsd.org>
1360
1361         * README: Update list of supported OpenBSD systems.
1362
1363 2011-11-12  Anthony Green  <green@moxielogic.com>
1364
1365         * libtool-version: Update.
1366         * Makefile.am (nodist_libffi_la_SOURCES): Add src/debug.c if
1367         FFI_DEBUG.
1368         (libffi_la_SOURCES): Remove src/debug.c
1369         (EXTRA_DIST): Add src/debug.c
1370         * Makefile.in: Rebuilt.
1371         * README: Update for 3.0.11.
1372
1373 2011-11-10  Richard Henderson  <rth@redhat.com>
1374
1375         * configure.ac (GCC_AS_CFI_PSEUDO_OP): Use it instead of inline check.
1376         * configure, aclocal.m4: Rebuild.
1377
1378 2011-09-04  Iain Sandoe  <iains@gcc.gnu.org>
1379
1380         PR libffi/49594
1381         * src/powerpc/darwin_closure.S (stubs): Make the stub binding
1382         helper reference track the architecture pointer size.
1383
1384 2011-08-25  Andrew Haley  <aph@redhat.com>
1385
1386         * src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Remove hard-coded assembly
1387         instructions.
1388         * src/arm/sysv.S (ffi_arm_trampoline): Put them here instead.
1389
1390 2011-07-11  Andrew Haley  <aph@redhat.com>
1391
1392         * src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Clear icache.
1393
1394 2011-06-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1395
1396         * testsuite/libffi.call/cls_double_va.c: Move PR number to comment.
1397         * testsuite/libffi.call/cls_longdouble_va.c: Likewise.
1398
1399 2011-06-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1400
1401         PR libffi/46660
1402         * testsuite/libffi.call/cls_double_va.c: xfail dg-output on
1403         mips-sgi-irix6*.
1404         * testsuite/libffi.call/cls_longdouble_va.c: Likewise.
1405
1406 2011-06-14  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1407
1408         * testsuite/libffi.call/huge_struct.c (test_large_fn): Use PRIu8,
1409         PRId8 instead of %hhu, %hhd.
1410         * testsuite/libffi.call/ffitest.h [__alpha__ && __osf__] (PRId8,
1411         PRIu8): Define.
1412         [__sgi__] (PRId8, PRIu8): Define.
1413
1414 2011-04-29  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1415
1416         * src/alpha/osf.S (UA_SI, FDE_ENCODING, FDE_ENCODE, FDE_ARANGE):
1417         Define.
1418         Use them to handle ELF vs. ECOFF differences.
1419         [__osf__] (_GLOBAL__F_ffi_call_osf): Define.
1420
1421 2011-03-30  Timothy Wall  <twall@users.sf.net>
1422
1423         * src/powerpc/darwin.S: Fix unknown FDE encoding.
1424         * src/powerpc/darwin_closure.S: ditto.
1425
1426 2011-02-25  Anthony Green  <green@moxielogic.com>
1427
1428         * src/powerpc/ffi.c (ffi_prep_closure_loc): Allow for more
1429         32-bit ABIs.
1430
1431 2011-02-15  Anthony Green  <green@moxielogic.com>
1432
1433         * m4/ax_cc_maxopt.m4: Don't -malign-double or use -ffast-math.
1434         * configure: Rebuilt.
1435
1436 2011-02-13  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1437
1438         * configure: Regenerate.
1439
1440 2011-02-13  Anthony Green  <green@moxielogic.com>
1441
1442         * include/ffi_common.h (UNLIKELY, LIKELY): Define.
1443         * src/x86/ffi64.c (UNLIKELY, LIKELY): Remove definition.
1444         * src/prep_cif.c (UNLIKELY, LIKELY): Remove definition.
1445
1446         * src/prep_cif.c (initialize_aggregate): Convert assertion into
1447         FFI_BAD_TYPEDEF return.  Initialize arg size and alignment to 0.
1448
1449         * src/pa/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test,
1450         just return FFI_BAD_ABI when things are wrong.
1451         * src/arm/ffi.c (ffi_prep_closure_loc): Ditto.
1452         * src/powerpc/ffi.c (ffi_prep_closure_loc): Ditto.
1453         * src/mips/ffi.c (ffi_prep_closure_loc): Ditto.
1454         * src/ia64/ffi.c (ffi_prep_closure_loc): Ditto.
1455         * src/avr32/ffi.c (ffi_prep_closure_loc): Ditto.
1456
1457 2011-02-11  Anthony Green  <green@moxielogic.com>
1458
1459         * src/sparc/ffi.c (ffi_prep_closure_loc): Don't ASSERT ABI test,
1460         just return FFI_BAD_ABI when things are wrong.
1461
1462 2012-02-11  Eric Botcazou  <ebotcazou@adacore.com>
1463
1464         * src/sparc/v9.S (STACKFRAME): Bump to 176.
1465
1466 2011-02-09  Stuart Shelton  <srcshelton@gmail.com>
1467
1468         http://bugs.gentoo.org/show_bug.cgi?id=286911
1469         * src/mips/ffitarget.h: Clean up error messages.
1470         * src/java_raw_api.c (ffi_java_translate_args): Cast raw arg to
1471         ffi_raw*.
1472         * include/ffi.h.in: Add pragma for SGI compiler.
1473
1474 2011-02-09  Anthony Green  <green@moxielogic.com>
1475
1476         * configure.ac: Add powerpc64-*-darwin* support.
1477
1478 2011-02-09  Anthony Green <green@moxielogic.com>
1479
1480         * README: Mention Interix.
1481
1482 2011-02-09  Jonathan Callen  <abcd@gentoo.org>
1483
1484         * configure.ac: Add Interix to win32/cygwin/mingw case.
1485         * configure: Ditto.
1486         * src/closures.c: Treat Interix like Cygwin, instead of as a
1487         generic win32.
1488
1489 2011-02-09  Anthony Green <green@moxielogic.com>
1490
1491         * testsuite/libffi.call/err_bad_typedef.c: Remove xfail.
1492         * testsuite/libffi.call/err_bad_abi.c: Remove xfail.
1493         * src/x86/ffi64.c (UNLIKELY, LIKELY): Define.
1494         (ffi_prep_closure_loc): Check for bad ABI.
1495         * src/prep_cif.c (UNLIKELY, LIKELY): Define.
1496         (initialize_aggregate): Check for bad types.
1497
1498 2011-02-09  Landon Fuller <landonf@plausible.coop>
1499
1500         * Makefile.am (EXTRA_DIST): Add build-ios.sh, src/arm/gentramp.sh,
1501         src/arm/trampoline.S.
1502         (nodist_libffi_la_SOURCES): Add src/arc/trampoline.S.
1503         * configure.ac (FFI_EXEC_TRAMPOLINE_TABLE): Define.
1504         * src/arm/ffi.c (ffi_trampoline_table)
1505         (ffi_closure_trampoline_table_page, ffi_trampoline_table_entry)
1506         (FFI_TRAMPOLINE_CODELOC_CONFIG, FFI_TRAMPOLINE_CONFIG_PAGE_OFFSET)
1507         (FFI_TRAMPOLINE_COUNT, ffi_trampoline_lock, ffi_trampoline_tables)
1508         (ffi_trampoline_table_alloc, ffi_closure_alloc, ffi_closure_free):
1509         Define for FFI_EXEC_TRAMPOLINE_TABLE case (iOS).
1510         (ffi_prep_closure_loc): Handl FFI_EXEC_TRAMPOLINE_TABLE case
1511         separately.
1512         * src/arm/sysv.S: Handle Apple iOS host.
1513         * src/closures.c: Handle FFI_EXEC_TRAMPOLINE_TABLE case.
1514         * build-ios.sh: New file.
1515         * fficonfig.h.in, configure, Makefile.in: Rebuilt.
1516         * README: Mention ARM iOS.
1517
1518 2011-02-08  Oren Held  <orenhe@il.ibm.com>
1519
1520         * src/dlmalloc.c (_STRUCT_MALLINFO): Define in order to avoid
1521         redefinition of mallinfo on HP-UX.
1522
1523 2011-02-08  Ginn Chen  <ginn.chen@oracle.com>
1524
1525         * src/sparc/ffi.c (ffi_call): Make compatible with Solaris Studio
1526         aggregate return ABI.  Flush cache.
1527         (ffi_prep_closure_loc): Flush cache.
1528
1529 2011-02-11  Anthony Green  <green@moxielogic.com>
1530
1531         From Tom Honermann <tom.honermann@oracle.com>:
1532         * src/powerpc/aix.S (ffi_call_AIX): Support for xlc toolchain on
1533         AIX.  Declare .ffi_prep_args.  Insert nops after branch
1534         instructions so that the AIX linker can insert TOC reload
1535         instructions.
1536         * src/powerpc/aix_closure.S: Declare .ffi_closure_helper_DARWIN.
1537
1538 2011-02-08  Ed  <ed@kdtc.net>
1539
1540         * src/powerpc/asm.h: Fix grammar nit in comment.
1541
1542 2011-02-08  Uli Link  <ul.mcamafia@linkitup.de>
1543
1544         * include/ffi.h.in (FFI_64_BIT_MAX): Define and use.
1545
1546 2011-02-09  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1547
1548         PR libffi/46661
1549         * testsuite/libffi.call/cls_pointer.c (main): Cast void * to
1550         uintptr_t first.
1551         * testsuite/libffi.call/cls_pointer_stack.c (main): Likewise.
1552
1553 2011-02-08  Rafael Avila de Espindola  <respindola@mozilla.com>
1554
1555         * configure.ac: Fix x86 test for pc related relocs.
1556         * configure: Rebuilt.
1557
1558 2011-02-07  Joel Sherrill <joel.sherrill@oarcorp.com>
1559
1560         * libffi/src/m68k/ffi.c: Add RTEMS support for cache flushing.
1561         Handle case when CPU variant does not have long double support.
1562         * libffi/src/m68k/sysv.S: Add support for mc68000, Coldfire,
1563         and cores with soft floating point.
1564
1565 2011-02-07  Joel Sherrill <joel.sherrill@oarcorp.com>
1566
1567         * configure.ac: Add mips*-*-rtems* support.
1568         * configure: Regenerate.
1569         * src/mips/ffitarget.h: Ensure needed constants are available
1570         for targets which do not have sgidefs.h.
1571
1572 2011-01-26  Dave Korn  <dave.korn.cygwin@gmail.com>
1573
1574         PR target/40125
1575         * configure.ac (AM_LTLDFLAGS): Add -bindir option for windows DLLs.
1576         * configure: Regenerate.
1577
1578 2010-12-18  Iain Sandoe  <iains@gcc.gnu.org>
1579
1580         PR libffi/29152
1581         PR libffi/42378
1582         * src/powerpc/darwin_closure.S: Provide Darwin64 implementation,
1583         update comments.
1584         * src/powerpc/ffitarget.h (POWERPC_DARWIN64): New,
1585         (FFI_TRAMPOLINE_SIZE): Update for Darwin64.
1586         * src/powerpc/darwin.S: Provide Darwin64 implementation,
1587         update comments.
1588         * src/powerpc/ffi_darwin.c: Likewise.
1589
1590 2010-12-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1591
1592         * configure.ac (libffi_cv_as_ascii_pseudo_op): Use double
1593         backslashes.
1594         (libffi_cv_as_string_pseudo_op): Likewise.
1595         * configure: Regenerate.
1596
1597 2010-12-03  Chung-Lin Tang  <cltang@codesourcery.com>
1598
1599         * src/arm/sysv.S (ffi_closure_SYSV): Add UNWIND to .pad directive.
1600         (ffi_closure_VFP): Same.
1601         (ffi_call_VFP): Move down to before ffi_closure_VFP. Add '.fpu vfp'
1602         directive.
1603
1604 2010-12-01  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1605
1606         * testsuite/libffi.call/ffitest.h [__sgi] (PRId64, PRIu64): Define.
1607         (PRIuPTR): Define.
1608
1609 2010-11-29  Richard Henderson  <rth@redhat.com>
1610             Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1611
1612         * src/x86/sysv.S (FDE_ENCODING, FDE_ENCODE): Define.
1613         (.eh_frame): Use FDE_ENCODING.
1614         (.LASFDE1, .LASFDE2, LASFDE3): Simplify with FDE_ENCODE.
1615
1616 2010-11-22  Jacek Caban <jacek@codeweavers.com>
1617
1618         * configure.ac: Check for symbol underscores on mingw-w64.
1619         * configure: Rebuilt.
1620         * src/x86/win64.S: Correctly access extern symbols in respect to
1621         underscores.
1622
1623 2010-11-15  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1624
1625         * testsuite/lib/libffi-dg.exp: Rename ...
1626         * testsuite/lib/libffi.exp: ... to this.
1627         * libffi/testsuite/libffi.call/call.exp: Don't load libffi-dg.exp.
1628         * libffi/testsuite/libffi.special/special.exp: Likewise.
1629
1630 2010-10-28  Chung-Lin Tang  <cltang@codesourcery.com>
1631
1632         * src/arm/ffi.c (ffi_prep_args): Add VFP register argument handling
1633         code, new parameter, and return value. Update comments.
1634         (ffi_prep_cif_machdep): Add case for VFP struct return values. Add
1635         call to layout_vfp_args().
1636         (ffi_call_SYSV): Update declaration.
1637         (ffi_call_VFP): New declaration.
1638         (ffi_call): Add VFP struct return conditions. Call ffi_call_VFP()
1639         when ABI is FFI_VFP.
1640         (ffi_closure_VFP): New declaration.
1641         (ffi_closure_SYSV_inner): Add new vfp_args parameter, update call to
1642         ffi_prep_incoming_args_SYSV().
1643         (ffi_prep_incoming_args_SYSV): Update parameters. Add VFP argument
1644         case handling.
1645         (ffi_prep_closure_loc): Pass ffi_closure_VFP to trampoline
1646         construction under VFP hard-float.
1647         (rec_vfp_type_p): New function.
1648         (vfp_type_p): Same.
1649         (place_vfp_arg): Same.
1650         (layout_vfp_args): Same.
1651         * src/arm/ffitarget.h (ffi_abi): Add FFI_VFP. Define FFI_DEFAULT_ABI
1652         based on __ARM_PCS_VFP.
1653         (FFI_EXTRA_CIF_FIELDS): Define for adding VFP hard-float specific
1654         fields.
1655         (FFI_TYPE_STRUCT_VFP_FLOAT): Define internally used type code.
1656         (FFI_TYPE_STRUCT_VFP_DOUBLE): Same.
1657         * src/arm/sysv.S (ffi_call_SYSV): Change call of ffi_prep_args() to
1658         direct call. Move function pointer load upwards.
1659         (ffi_call_VFP): New function.
1660         (ffi_closure_VFP): Same.
1661
1662         * testsuite/lib/libffi-dg.exp (check-flags): New function.
1663         (dg-skip-if): New function.
1664         * testsuite/libffi.call/cls_double_va.c: Skip if target is arm*-*-*
1665         and compiler options include -mfloat-abi=hard.
1666         * testsuite/libffi.call/cls_longdouble_va.c: Same.
1667
1668 2010-10-01  Jakub Jelinek  <jakub@redhat.com>
1669
1670         PR libffi/45677
1671         * src/x86/ffi64.c (ffi_prep_cif_machdep): Ensure cif->bytes is
1672         a multiple of 8.
1673         * testsuite/libffi.call/many2.c: New test.
1674
1675 2010-08-20  Mark Wielaard  <mjw@redhat.com>
1676
1677         * src/closures.c (open_temp_exec_file_mnt): Check if getmntent_r
1678         returns NULL.
1679
1680 2010-08-09  Andreas Tobler  <andreast@fgznet.ch>
1681
1682         * configure.ac: Add target powerpc64-*-freebsd*.
1683         * configure: Regenerate.
1684         * testsuite/libffi.call/cls_align_longdouble_split.c: Pass
1685         -mlong-double-128 only to linux targets.
1686         * testsuite/libffi.call/cls_align_longdouble_split2.c: Likewise.
1687         * testsuite/libffi.call/cls_longdouble.c: Likewise.
1688         * testsuite/libffi.call/huge_struct.c: Likewise.
1689
1690 2010-08-05  Dan Witte  <dwitte@mozilla.com>
1691
1692         * Makefile.am: Pass FFI_DEBUG define to msvcc.sh for linking to the
1693         debug CRT when --enable-debug is given.
1694         * configure.ac: Define it.
1695         * msvcc.sh: Translate -g and -DFFI_DEBUG appropriately.
1696
1697 2010-08-04  Dan Witte  <dwitte@mozilla.com>
1698
1699         * src/x86/ffitarget.h: Add X86_ANY define for all x86/x86_64
1700         platforms.
1701         * src/x86/ffi.c: Remove redundant ifdef checks.
1702         * src/prep_cif.c: Push stack space computation into src/x86/ffi.c
1703         for X86_ANY so return value space doesn't get added twice.
1704
1705 2010-08-03  Neil Rashbrooke <neil@parkwaycc.co.uk>
1706
1707         * msvcc.sh: Don't pass -safeseh to ml64 because behavior is buggy.
1708
1709 2010-07-22  Dan Witte  <dwitte@mozilla.com>
1710
1711         * src/*/ffitarget.h: Make FFI_LAST_ABI one past the last valid ABI.
1712         * src/prep_cif.c: Fix ABI assertion.
1713         * src/cris/ffi.c: Ditto.
1714
1715 2010-07-10  Evan Phoenix  <evan@fallingsnow.net>
1716
1717         * src/closures.c (selinux_enabled_check): Fix strncmp usage bug.
1718
1719 2010-07-07  Dan Horák <dan@danny.cz>
1720
1721         * include/ffi.h.in: Protect #define with #ifndef.
1722         * src/powerpc/ffitarget.h: Ditto.
1723         * src/s390/ffitarget.h: Ditto.
1724         * src/sparc/ffitarget.h: Ditto.
1725
1726 2010-07-07   Neil Roberts <neil@linux.intel.com>
1727
1728         * src/x86/sysv.S (ffi_call_SYSV): Align the stack pointer to
1729         16-bytes.
1730
1731 2010-07-02  Jakub Jelinek  <jakub@redhat.com>
1732
1733         * Makefile.am (AM_MAKEFLAGS): Pass also mandir to submakes.
1734         * Makefile.in: Regenerated.
1735
1736 2010-05-19  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1737
1738         * configure.ac (libffi_cv_as_x86_pcrel): Check for illegal in as
1739         output, too.
1740         (libffi_cv_as_ascii_pseudo_op): Check for .ascii.
1741         (libffi_cv_as_string_pseudo_op): Check for .string.
1742         * configure: Regenerate.
1743         * fficonfig.h.in: Regenerate.
1744         * src/x86/sysv.S (.eh_frame): Use .ascii, .string or error.
1745
1746 2010-05-11  Dan Witte  <dwitte@mozilla.com>
1747
1748         * doc/libffi.tex: Document previous change.
1749
1750 2010-05-11  Makoto Kato <m_kato@ga2.so-net.ne.jp>
1751
1752         * src/x86/ffi.c (ffi_call): Don't copy structs passed by value.
1753
1754 2010-05-05  Michael Kohler <michaelkohler@live.com>
1755
1756         * src/dlmalloc.c (dlfree): Fix spelling.
1757         * src/ia64/ffi.c (ffi_prep_cif_machdep): Ditto.
1758         * configure.ac: Ditto.
1759         * configure: Rebuilt.
1760
1761 2010-04-13  Dan Witte  <dwitte@mozilla.com>
1762
1763         * msvcc.sh: Build with -W3 instead of -Wall.
1764         * src/powerpc/ffi_darwin.c: Remove build warnings.
1765         * src/x86/ffi.c: Ditto.
1766         * src/x86/ffitarget.h: Ditto.
1767
1768 2010-04-12  Dan Witte  <dwitte@mozilla.com>
1769             Walter Meinl <wuno@lsvw.de>
1770
1771         * configure.ac: Add OS/2 support.
1772         * configure: Rebuilt.
1773         * src/closures.c: Ditto.
1774         * src/dlmalloc.c: Ditto.
1775         * src/x86/win32.S: Ditto.
1776
1777 2010-04-07  Jakub Jelinek  <jakub@redhat.com>
1778
1779         * testsuite/libffi.call/err_bad_abi.c: Remove unused args variable.
1780
1781 2010-04-02  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
1782
1783         * Makefile.in: Regenerate.
1784         * aclocal.m4: Regenerate.
1785         * include/Makefile.in: Regenerate.
1786         * man/Makefile.in: Regenerate.
1787         * testsuite/Makefile.in: Regenerate.
1788
1789 2010-03-30  Dan Witte  <dwitte@mozilla.com>
1790
1791         * msvcc.sh: Disable build warnings.
1792         * README (tested): Clarify windows build procedure.
1793
1794 2010-03-15  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1795
1796         * configure.ac (libffi_cv_as_x86_64_unwind_section_type): New test.
1797         * configure: Regenerate.
1798         * fficonfig.h.in: Regenerate.
1799         * libffi/src/x86/unix64.S (.eh_frame)
1800         [HAVE_AS_X86_64_UNWIND_SECTION_TYPE]: Use @unwind section type.
1801
1802 2010-03-14  Matthias Klose  <doko@ubuntu.com>
1803
1804         * src/x86/ffi64.c: Fix typo in comment.
1805         * src/x86/ffi.c: Use /* ... */ comment style.
1806
1807 2010-02-24  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1808
1809         * doc/libffi.texi (The Closure API): Fix typo.
1810         * doc/libffi.info: Remove.
1811
1812 2010-02-15  Matthias Klose  <doko@ubuntu.com>
1813
1814         * src/arm/sysv.S (__ARM_ARCH__): Define for processor
1815         __ARM_ARCH_7EM__.
1816
1817 2010-01-15  Anthony Green  <green@redhat.com>
1818
1819         * README: Add notes on building with Microsoft Visual C++.
1820
1821 2010-01-15  Daniel Witte  <dwitte@mozilla.com>
1822
1823         * msvcc.sh: New file.
1824
1825         * src/x86/win32.S: Port assembly routines to MSVC and #ifdef.
1826         * src/x86/ffi.c: Tweak function declaration and remove excess
1827         parens.
1828         * include/ffi.h.in: Add __declspec(align(8)) to typedef struct
1829         ffi_closure.
1830
1831         * src/x86/ffi.c: Merge ffi_call_SYSV and ffi_call_STDCALL into new
1832         function ffi_call_win32 on X86_WIN32.
1833         * src/x86/win32.S (ffi_call_SYSV): Rename to ffi_call_win32.
1834         (ffi_call_STDCALL): Remove.
1835
1836         * src/prep_cif.c (ffi_prep_cif): Move stack space allocation code
1837         to ffi_prep_cif_machdep for x86.
1838         * src/x86/ffi.c (ffi_prep_cif_machdep): To here.
1839
1840 2010-01-15  Oliver Kiddle  <okiddle@yahoo.co.uk>
1841
1842         * src/x86/ffitarget.h (ffi_abi): Check for __i386 and __amd64 for
1843         Sun Studio compiler compatibility.
1844
1845 2010-01-12  Conrad Irwin <conrad.irwin@gmail.com>
1846
1847         * doc/libffi.texi: Add closure example.
1848
1849 2010-01-07  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1850
1851         PR libffi/40701
1852         * testsuite/libffi.call/ffitest.h [__alpha__ && __osf__] (PRIdLL,
1853         PRIuLL, PRId64, PRIu64, PRIuPTR): Define.
1854         * testsuite/libffi.call/cls_align_sint64.c: Add -Wno-format on
1855         alpha*-dec-osf*.
1856         * testsuite/libffi.call/cls_align_uint64.c: Likewise.
1857         * testsuite/libffi.call/cls_ulonglong.c: Likewise.
1858         * testsuite/libffi.call/return_ll1.c: Likewise.
1859         * testsuite/libffi.call/stret_medium2.c: Likewise.
1860         * testsuite/libffi.special/ffitestcxx.h (allocate_mmap): Cast
1861         MAP_FAILED to char *.
1862
1863 2010-01-06  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
1864
1865         * src/mips/n32.S: Use .abicalls and .eh_frame with __GNUC__.
1866
1867 2009-12-31  Anthony Green  <green@redhat.com>
1868
1869         * README: Update for libffi 3.0.9.
1870
1871 2009-12-27  Matthias Klose  <doko@ubuntu.com>
1872
1873         * configure.ac (HAVE_LONG_DOUBLE): Define for mips when
1874         appropriate.
1875         * configure: Rebuilt.
1876
1877 2009-12-26  Anthony Green  <green@redhat.com>
1878
1879         * testsuite/libffi.call/cls_longdouble_va.c: Mark as xfail for
1880         avr32*-*-*.
1881         * testsuite/libffi.call/cls_double_va.c: Ditto.
1882
1883 2009-12-26  Andreas Tobler  <a.tobler@schweiz.org>
1884
1885         * testsuite/libffi.call/ffitest.h: Conditionally include stdint.h
1886         and inttypes.h.
1887         * testsuite/libffi.special/unwindtest.cc: Ditto.
1888
1889 2009-12-26  Andreas Tobler  <a.tobler@schweiz.org>
1890
1891         * configure.ac: Add amd64-*-openbsd*.
1892         * configure: Rebuilt.
1893         * testsuite/lib/libffi-dg.exp (libffi_target_compile): Link
1894         openbsd programs with -lpthread.
1895
1896 2009-12-26  Anthony Green  <green@redhat.com>
1897
1898         * testsuite/libffi.call/cls_double_va.c,
1899         testsuite/libffi.call/cls_longdouble.c,
1900         testsuite/libffi.call/cls_longdouble_va.c,
1901         testsuite/libffi.call/cls_pointer.c,
1902         testsuite/libffi.call/cls_pointer_stack.c: Remove xfail for
1903         mips*-*-* and arm*-*-*.
1904         * testsuite/libffi.call/cls_align_longdouble_split.c,
1905         testsuite/libffi.call/cls_align_longdouble_split2.c,
1906         testsuite/libffi.call/stret_medium2.c,
1907         testsuite/libffi.call/stret_medium.c,
1908         testsuite/libffi.call/stret_large.c,
1909         testsuite/libffi.call/stret_large2.c: Remove xfail for arm*-*-*.
1910
1911 2009-12-31  Kay Tietz  <ktietz70@googlemail.com>
1912
1913         * testsuite/libffi.call/ffitest.h,
1914         testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRuLL): Fix
1915         definitions.
1916
1917 2009-12-31  Carlo Bramini  <carlo.bramix@libero.it>
1918
1919         * configure.ac (AM_LTLDFLAGS): Define for windows hosts.
1920         * Makefile.am (libffi_la_LDFLAGS): Add AM_LTLDFLAGS.
1921         * configure: Rebuilt.
1922         * Makefile.in: Rebuilt.
1923
1924 2009-12-31  Anthony Green  <green@redhat.com>
1925             Blake Chaffin.
1926
1927         * testsuite/libffi.call/huge_struct.c: New test case from Blake
1928         Chaffin @ Apple.
1929
1930 2009-12-28  David Edelsohn  <edelsohn@gnu.org>
1931
1932         * src/powerpc/ffi_darwin.c (ffi_prep_args): Copy abi and nargs to
1933         local variables.
1934         (aix_adjust_aggregate_sizes): New function.
1935         (ffi_prep_cif_machdep): Call it.
1936
1937 2009-12-26  Andreas Tobler  <a.tobler@schweiz.org>
1938
1939         * configure.ac: Define FFI_MMAP_EXEC_WRIT for the given targets.
1940         * configure: Regenerate.
1941         * fficonfig.h.in: Likewise.
1942         * src/closures.c: Remove the FFI_MMAP_EXEC_WRIT definition for
1943         Solaris/x86.
1944
1945 2009-12-26  Andreas Schwab  <schwab@linux-m68k.org>
1946
1947         * src/powerpc/ffi.c (ffi_prep_args_SYSV): Advance intarg_count
1948         when a float arguments is passed in memory.
1949         (ffi_closure_helper_SYSV): Mark general registers as used up when
1950         a 64bit or soft-float long double argument is passed in memory.
1951
1952 2009-12-25  Matthias Klose  <doko@ubuntu.com>
1953
1954         * man/ffi_call.3: Fix #include in examples.
1955         * doc/libffi.texi: Add dircategory.
1956
1957 2009-12-25  Frank Everdij <f.p.x.everdij@tudelft.nl>
1958
1959         * include/ffi.h.in: Placed '__GNUC__' ifdef around
1960         '__attribute__((aligned(8)))' in ffi_closure, fixes compile for
1961         IRIX MIPSPro c99.
1962         * include/ffi_common.h: Added '__sgi' define to non
1963         '__attribute__((__mode__()))' integer typedefs.
1964         * src/mips/ffi.c (ffi_call, ffi_closure_mips_inner_O32,
1965         ffi_closure_mips_inner_N32): Added 'defined(_MIPSEB)' to BE check.
1966         (ffi_closure_mips_inner_O32, ffi_closure_mips_inner_N32): Added
1967         FFI_LONGDOUBLE support and alignment(N32 only).
1968         * src/mips/ffitarget.h: Corrected '#include <sgidefs.h>' for IRIX and
1969         fixed non '__attribute__((__mode__()))' integer typedefs.
1970         * src/mips/n32.S: Put '#ifdef linux' around '.abicalls' and '.eh_frame'
1971         since they are Linux/GNU Assembler specific.
1972
1973 2009-12-25  Bradley Smith  <brad@brad-smith.co.uk>
1974
1975         * configure.ac, Makefile.am, src/avr32/ffi.c,
1976         src/avr32/ffitarget.h,
1977         src/avr32/sysv.S: Add AVR32 port.
1978         * configure, Makefile.in: Rebuilt.
1979
1980 2009-12-21  Andreas Tobler  <a.tobler@schweiz.org>
1981
1982         * configure.ac: Make i?86 build on FreeBSD and OpenBSD.
1983         * configure: Regenerate.
1984
1985 2009-12-15  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1986
1987         * testsuite/libffi.call/ffitest.h: Define PRIuPTR on PA HP-UX.
1988
1989 2009-12-13  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
1990
1991         * src/pa/ffi.c (ffi_closure_inner_pa32): Handle FFI_TYPE_LONGDOUBLE
1992         type on HP-UX.
1993
1994 2012-02-13  Kai Tietz  <ktietz@redhat.com>
1995
1996         PR libffi/52221
1997         * src/x86/ffi.c (ffi_prep_raw_closure_loc): Add thiscall
1998         support for X86_WIN32.
1999         (FFI_INIT_TRAMPOLINE_THISCALL): Fix displacement.
2000
2001 2009-12-11  Eric Botcazou  <ebotcazou@adacore.com>
2002
2003         * src/sparc/ffi.c (ffi_closure_sparc_inner_v9): Properly align 'long
2004         double' arguments.
2005
2006 2009-12-11  Eric Botcazou  <ebotcazou@adacore.com>
2007
2008         * testsuite/libffi.call/ffitest.h: Define PRIuPTR on Solaris < 10.
2009
2010 2009-12-10  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
2011
2012         PR libffi/40700
2013         * src/closures.c [X86_64 && __sun__ && __svr4__]
2014         (FFI_MMAP_EXEC_WRIT): Define.
2015
2016 2009-12-08  David Daney  <ddaney@caviumnetworks.com>
2017
2018         * testsuite/libffi.call/stret_medium.c: Remove xfail for mips*-*-*
2019         * testsuite/libffi.call/cls_align_longdouble_split2.c: Same.
2020         * testsuite/libffi.call/stret_large.c: Same.
2021         * testsuite/libffi.call/cls_align_longdouble_split.c: Same.
2022         * testsuite/libffi.call/stret_large2.c: Same.
2023         * testsuite/libffi.call/stret_medium2.c: Same.
2024
2025 2009-12-07  David Edelsohn  <edelsohn@gnu.org>
2026
2027         * src/powerpc/aix_closure.S (libffi_closure_ASM): Fix tablejump
2028         typo.
2029
2030 2009-12-05  David Edelsohn  <edelsohn@gnu.org>
2031
2032         * src/powerpc/aix.S: Update AIX32 code to be consistent with AIX64
2033         code.
2034         * src/powerpc/aix_closure.S: Same.
2035
2036 2009-12-05  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2037
2038         * Makefile.in: Regenerate.
2039         * configure: Regenerate.
2040         * include/Makefile.in: Regenerate.
2041         * man/Makefile.in: Regenerate.
2042         * testsuite/Makefile.in: Regenerate.
2043
2044 2009-12-04  David Edelsohn  <edelsohn@gnu.org>
2045
2046         * src/powerpc/aix_closure.S: Reorganize 64-bit code to match
2047         linux64_closure.S.
2048
2049 2009-12-04  Uros Bizjak  <ubizjak@gmail.com>
2050
2051         PR libffi/41908
2052         * src/x86/ffi64.c (classify_argument): Update from
2053         gcc/config/i386/i386.c.
2054         (ffi_closure_unix64_inner): Do not use the address of two consecutive
2055         SSE registers directly.
2056         * testsuite/libffi.call/cls_dbls_struct.c (main): Remove xfail
2057         for x86_64 linux targets.
2058
2059 2009-12-04  David Edelsohn  <edelsohn@gnu.org>
2060
2061         * src/powerpc/ffi_darwin.c (ffi_closure_helper_DARWIN): Increment
2062         pfr for long double split between fpr13 and stack.
2063
2064 2009-12-03  David Edelsohn  <edelsohn@gnu.org>
2065
2066         * src/powerpc/ffi_darwin.c (ffi_prep_args): Increment next_arg and
2067         fparg_count twice for long double.
2068
2069 2009-12-03  David Edelsohn  <edelsohn@gnu.org>
2070
2071         PR libffi/42243
2072         * src/powerpc/ffi_darwin.c (ffi_prep_args): Remove extra parentheses.
2073
2074 2009-12-03  Uros Bizjak  <ubizjak@gmail.com>
2075
2076         * testsuite/libffi.call/cls_longdouble_va.c (main): Fix format string.
2077         Remove xfails for x86 linux targets.
2078
2079 2009-12-02  David Edelsohn  <edelsohn@gnu.org>
2080
2081         * src/powerpc/ffi_darwin.c (ffi_prep_args): Fix typo in INT64
2082         case.
2083
2084 2009-12-01  David Edelsohn  <edelsohn@gnu.org>
2085
2086         * src/powerpc/aix.S (ffi_call_AIX): Convert to more standard
2087         register usage.  Call ffi_prep_args directly.  Add long double
2088         return value support.
2089         * src/powerpc/ffi_darwin.c (ffi_prep_args): Double arg increment
2090         applies to FFI_TYPE_DOUBLE.  Correct fpr_base increment typo.
2091         Separate FFI_TYPE_SINT32 and FFI_TYPE_UINT32 cases.
2092         (ffi_prep_cif_machdep): Only 16 byte stack alignment in 64 bit
2093         mode.
2094         (ffi_closure_helper_DARWIN): Remove nf and ng counters.  Move temp
2095         into case.
2096         * src/powerpc/aix_closure.S: Maintain 16 byte stack alignment.
2097         Allocate result area between params and FPRs.
2098
2099 2009-11-30  David Edelsohn  <edelsohn@gnu.org>
2100
2101         PR target/35484
2102         * src/powerpc/ffitarget.h (POWERPC64): Define for PPC64 Linux and
2103         AIX64.
2104         * src/powerpc/aix.S: Implement AIX64 version.
2105         * src/powerpc/aix_closure.S: Implement AIX64 version.
2106         (ffi_closure_ASM): Use extsb, lha and displament addresses.
2107         * src/powerpc/ffi_darwin.c (ffi_prep_args): Implement AIX64
2108         support.
2109         (ffi_prep_cif_machdep): Same.
2110         (ffi_call): Same.
2111         (ffi_closure_helper_DARWIN): Same.
2112
2113 2009-11-02  Andreas Tobler  <a.tobler@schweiz.org>
2114
2115         PR libffi/41908
2116         * testsuite/libffi.call/testclosure.c: New test.
2117
2118 2009-09-28  Kai Tietz  <kai.tietz@onevision.com>
2119
2120         * src/x86/win64.S (_ffi_call_win64 stack): Remove for gnu
2121         assembly version use of ___chkstk.
2122
2123 2009-09-23  Matthias Klose  <doko@ubuntu.com>
2124
2125         PR libffi/40242, PR libffi/41443
2126         * src/arm/sysv.S (__ARM_ARCH__): Define for processors
2127         __ARM_ARCH_6T2__, __ARM_ARCH_6M__, __ARM_ARCH_7__,
2128         __ARM_ARCH_7A__, __ARM_ARCH_7R__, __ARM_ARCH_7M__.
2129         Change the conditionals to __SOFTFP__ || __ARM_EABI__
2130         for -mfloat-abi=softfp to work.
2131
2132 2009-09-17  Loren J. Rittle  <ljrittle@acm.org>
2133
2134         PR testsuite/32843 (strikes again)
2135         * src/x86/ffi.c (ffi_prep_cif_machdep): Add X86_FREEBSD to
2136         enable proper extension on char and short.
2137
2138 2009-09-15  David Daney  <ddaney@caviumnetworks.com>
2139
2140         * src/java_raw_api.c (ffi_java_raw_to_rvalue): Remove special
2141         handling for FFI_TYPE_POINTER.
2142         * src/mips/ffitarget.h (FFI_TYPE_STRUCT_D_SOFT,
2143         FFI_TYPE_STRUCT_F_SOFT, FFI_TYPE_STRUCT_DD_SOFT,
2144         FFI_TYPE_STRUCT_FF_SOFT, FFI_TYPE_STRUCT_FD_SOFT,
2145         FFI_TYPE_STRUCT_DF_SOFT, FFI_TYPE_STRUCT_SOFT): New defines.
2146         (FFI_N32_SOFT_FLOAT, FFI_N64_SOFT_FLOAT): New ffi_abi enumerations.
2147         (enum ffi_abi): Set FFI_DEFAULT_ABI for soft-float.
2148         * src/mips/n32.S (ffi_call_N32): Add handling for soft-float
2149         structure and pointer returns.
2150         (ffi_closure_N32): Add handling for pointer returns.
2151         * src/mips/ffi.c (ffi_prep_args, calc_n32_struct_flags,
2152         calc_n32_return_struct_flags): Handle soft-float.
2153         (ffi_prep_cif_machdep):  Handle soft-float, fix pointer handling.
2154         (ffi_call_N32): Declare proper argument types.
2155         (ffi_call, copy_struct_N32, ffi_closure_mips_inner_N32): Handle
2156         soft-float.
2157
2158 2009-08-24  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2159
2160         * configure.ac (AC_PREREQ): Bump to 2.64.
2161
2162 2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2163
2164         * Makefile.am (install-html, install-pdf): Remove.
2165         * Makefile.in: Regenerate.
2166
2167         * Makefile.in: Regenerate.
2168         * aclocal.m4: Regenerate.
2169         * configure: Regenerate.
2170         * fficonfig.h.in: Regenerate.
2171         * include/Makefile.in: Regenerate.
2172         * man/Makefile.in: Regenerate.
2173         * testsuite/Makefile.in: Regenerate.
2174
2175 2011-08-22  Jasper Lievisse Adriaanse <jasper@openbsd.org>
2176
2177         * configure.ac: Add OpenBSD/hppa and OpenBSD/powerpc support.
2178         * configure: Rebuilt.
2179
2180 2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2181
2182         * configure.ac (_AC_ARG_VAR_PRECIOUS): Use m4_rename_force.
2183
2184 2009-07-24  Dave Korn  <dave.korn.cygwin@gmail.com>
2185
2186         PR libffi/40807
2187         * src/x86/ffi.c (ffi_prep_cif_machdep): Also use sign/zero-extending
2188         return types for X86_WIN32.
2189         * src/x86/win32.S (_ffi_call_SYSV): Handle omitted return types.
2190         (_ffi_call_STDCALL, _ffi_closure_SYSV, _ffi_closure_raw_SYSV,
2191         _ffi_closure_STDCALL): Likewise.
2192
2193         * src/closures.c (is_selinux_enabled): Define to const 0 for Cygwin.
2194         (dlmmap, dlmunmap): Also use these functions on Cygwin.
2195
2196 2009-07-11  Richard Sandiford  <rdsandiford@googlemail.com>
2197
2198         PR testsuite/40699
2199         PR testsuite/40707
2200         PR testsuite/40709
2201         * testsuite/lib/libffi-dg.exp: Revert 2009-07-02, 2009-07-01 and
2202         2009-06-30 commits.
2203
2204 2009-07-01  Richard Sandiford  <r.sandiford@uk.ibm.com>
2205
2206         * testsuite/lib/libffi-dg.exp (libffi-init): Set ld_library_path
2207         to "" before adding paths.  (This reinstates an assignment that
2208         was removed by my 2009-06-30 commit, but changes the initial
2209         value from "." to "".)
2210
2211 2009-07-01  H.J. Lu  <hongjiu.lu@intel.com>
2212
2213         PR testsuite/40601
2214         * testsuite/lib/libffi-dg.exp (libffi-init): Properly set
2215         gccdir.  Adjust ld_library_path for gcc only if gccdir isn't
2216         empty.
2217
2218 2009-06-30  Richard Sandiford  <r.sandiford@uk.ibm.com>
2219
2220         * testsuite/lib/libffi-dg.exp (libffi-init): Don't add "."
2221         to ld_library_path.  Use add_path.  Add just find_libgcc_s
2222         to ld_library_path, not every libgcc multilib directory.
2223
2224 2009-06-16  Wim Lewis  <wiml@hhhh.org>
2225
2226         * src/powerpc/ffi.c: Avoid clobbering cr3 and cr4, which are
2227         supposed to be callee-saved.
2228         * src/powerpc/sysv.S (small_struct_return_value): Fix overrun of
2229         return buffer for odd-size structs.
2230
2231 2009-06-16  Andreas Tobler  <a.tobler@schweiz.org>
2232
2233         PR libffi/40444
2234         * testsuite/lib/libffi-dg.exp (libffi_target_compile): Add
2235         allow_stack_execute for Darwin.
2236
2237 2009-06-16  Andrew Haley  <aph@redhat.com>
2238
2239         * configure.ac (TARGETDIR): Add missing blank lines.
2240         * configure: Regenerate.
2241
2242 2009-06-16  Andrew Haley  <aph@redhat.com>
2243
2244         * testsuite/libffi.call/cls_align_sint64.c,
2245         testsuite/libffi.call/cls_align_uint64.c,
2246         testsuite/libffi.call/cls_longdouble_va.c,
2247         testsuite/libffi.call/cls_ulonglong.c,
2248         testsuite/libffi.call/return_ll1.c,
2249         testsuite/libffi.call/stret_medium2.c: Fix printf format
2250         specifiers.
2251         * testsuite/libffi.call/ffitest.h,
2252         testsuite/libffi.special/ffitestcxx.h (PRIdLL, PRIuLL): Define.
2253
2254 2009-06-15  Andrew Haley  <aph@redhat.com>
2255
2256         * testsuite/libffi.call/err_bad_typedef.c: xfail everywhere.
2257         * testsuite/libffi.call/err_bad_abi.c: Likewise.
2258
2259 2009-06-12  Andrew Haley  <aph@redhat.com>
2260
2261         * Makefile.am: Remove info_TEXINFOS.
2262
2263 2009-06-12  Andrew Haley  <aph@redhat.com>
2264
2265         * ChangeLog.libffi: testsuite/libffi.call/cls_align_sint64.c,
2266         testsuite/libffi.call/cls_align_uint64.c,
2267         testsuite/libffi.call/cls_ulonglong.c,
2268         testsuite/libffi.call/return_ll1.c,
2269         testsuite/libffi.call/stret_medium2.c: Fix printf format
2270         specifiers.
2271         testsuite/libffi.special/unwindtest.cc: include stdint.h.
2272
2273 2009-06-11  Timothy Wall  <twall@users.sf.net>
2274
2275         * Makefile.am,
2276         configure.ac,
2277         include/ffi.h.in,
2278         include/ffi_common.h,
2279         src/closures.c,
2280         src/dlmalloc.c,
2281         src/x86/ffi.c,
2282         src/x86/ffitarget.h,
2283         src/x86/win64.S (new),
2284         README: Added win64 support (mingw or MSVC)
2285         * Makefile.in,
2286         include/Makefile.in,
2287         man/Makefile.in,
2288         testsuite/Makefile.in,
2289         configure,
2290         aclocal.m4: Regenerated
2291         * ltcf-c.sh: properly escape cygwin/w32 path
2292         * man/ffi_call.3: Clarify size requirements for return value.
2293         * src/x86/ffi64.c: Fix filename in comment.
2294         * src/x86/win32.S: Remove unused extern.
2295
2296         * testsuite/libffi.call/closure_fn0.c,
2297         testsuite/libffi.call/closure_fn1.c,
2298         testsuite/libffi.call/closure_fn2.c,
2299         testsuite/libffi.call/closure_fn3.c,
2300         testsuite/libffi.call/closure_fn4.c,
2301         testsuite/libffi.call/closure_fn5.c,
2302         testsuite/libffi.call/closure_fn6.c,
2303         testsuite/libffi.call/closure_stdcall.c,
2304         testsuite/libffi.call/cls_12byte.c,
2305         testsuite/libffi.call/cls_16byte.c,
2306         testsuite/libffi.call/cls_18byte.c,
2307         testsuite/libffi.call/cls_19byte.c,
2308         testsuite/libffi.call/cls_1_1byte.c,
2309         testsuite/libffi.call/cls_20byte.c,
2310         testsuite/libffi.call/cls_20byte1.c,
2311         testsuite/libffi.call/cls_24byte.c,
2312         testsuite/libffi.call/cls_2byte.c,
2313         testsuite/libffi.call/cls_3_1byte.c,
2314         testsuite/libffi.call/cls_3byte1.c,
2315         testsuite/libffi.call/cls_3byte2.c,
2316         testsuite/libffi.call/cls_4_1byte.c,
2317         testsuite/libffi.call/cls_4byte.c,
2318         testsuite/libffi.call/cls_5_1_byte.c,
2319         testsuite/libffi.call/cls_5byte.c,
2320         testsuite/libffi.call/cls_64byte.c,
2321         testsuite/libffi.call/cls_6_1_byte.c,
2322         testsuite/libffi.call/cls_6byte.c,
2323         testsuite/libffi.call/cls_7_1_byte.c,
2324         testsuite/libffi.call/cls_7byte.c,
2325         testsuite/libffi.call/cls_8byte.c,
2326         testsuite/libffi.call/cls_9byte1.c,
2327         testsuite/libffi.call/cls_9byte2.c,
2328         testsuite/libffi.call/cls_align_double.c,
2329         testsuite/libffi.call/cls_align_float.c,
2330         testsuite/libffi.call/cls_align_longdouble.c,
2331         testsuite/libffi.call/cls_align_longdouble_split.c,
2332         testsuite/libffi.call/cls_align_longdouble_split2.c,
2333         testsuite/libffi.call/cls_align_pointer.c,
2334         testsuite/libffi.call/cls_align_sint16.c,
2335         testsuite/libffi.call/cls_align_sint32.c,
2336         testsuite/libffi.call/cls_align_sint64.c,
2337         testsuite/libffi.call/cls_align_uint16.c,
2338         testsuite/libffi.call/cls_align_uint32.c,
2339         testsuite/libffi.call/cls_align_uint64.c,
2340         testsuite/libffi.call/cls_dbls_struct.c,
2341         testsuite/libffi.call/cls_double.c,
2342         testsuite/libffi.call/cls_double_va.c,
2343         testsuite/libffi.call/cls_float.c,
2344         testsuite/libffi.call/cls_longdouble.c,
2345         testsuite/libffi.call/cls_longdouble_va.c,
2346         testsuite/libffi.call/cls_multi_schar.c,
2347         testsuite/libffi.call/cls_multi_sshort.c,
2348         testsuite/libffi.call/cls_multi_sshortchar.c,
2349         testsuite/libffi.call/cls_multi_uchar.c,
2350         testsuite/libffi.call/cls_multi_ushort.c,
2351         testsuite/libffi.call/cls_multi_ushortchar.c,
2352         testsuite/libffi.call/cls_pointer.c,
2353         testsuite/libffi.call/cls_pointer_stack.c,
2354         testsuite/libffi.call/cls_schar.c,
2355         testsuite/libffi.call/cls_sint.c,
2356         testsuite/libffi.call/cls_sshort.c,
2357         testsuite/libffi.call/cls_uchar.c,
2358         testsuite/libffi.call/cls_uint.c,
2359         testsuite/libffi.call/cls_ulonglong.c,
2360         testsuite/libffi.call/cls_ushort.c,
2361         testsuite/libffi.call/err_bad_abi.c,
2362         testsuite/libffi.call/err_bad_typedef.c,
2363         testsuite/libffi.call/float2.c,
2364         testsuite/libffi.call/huge_struct.c,
2365         testsuite/libffi.call/nested_struct.c,
2366         testsuite/libffi.call/nested_struct1.c,
2367         testsuite/libffi.call/nested_struct10.c,
2368         testsuite/libffi.call/nested_struct2.c,
2369         testsuite/libffi.call/nested_struct3.c,
2370         testsuite/libffi.call/nested_struct4.c,
2371         testsuite/libffi.call/nested_struct5.c,
2372         testsuite/libffi.call/nested_struct6.c,
2373         testsuite/libffi.call/nested_struct7.c,
2374         testsuite/libffi.call/nested_struct8.c,
2375         testsuite/libffi.call/nested_struct9.c,
2376         testsuite/libffi.call/problem1.c,
2377         testsuite/libffi.call/return_ldl.c,
2378         testsuite/libffi.call/return_ll1.c,
2379         testsuite/libffi.call/stret_large.c,
2380         testsuite/libffi.call/stret_large2.c,
2381         testsuite/libffi.call/stret_medium.c,
2382         testsuite/libffi.call/stret_medium2.c,
2383         testsuite/libffi.special/unwindtest.cc: use ffi_closure_alloc instead
2384         of checking for MMAP.  Use intptr_t instead of long casts.
2385
2386 2009-06-11  Kaz Kojima  <kkojima@gcc.gnu.org>
2387
2388         * testsuite/libffi.call/cls_longdouble_va.c: Add xfail sh*-*-linux-*.
2389         * testsuite/libffi.call/err_bad_abi.c: Add xfail sh*-*-*.
2390         * testsuite/libffi.call/err_bad_typedef.c: Likewise.
2391
2392 2009-06-09  Andrew Haley  <aph@redhat.com>
2393
2394         * src/x86/freebsd.S: Add missing file.
2395
2396 2009-06-08  Andrew Haley  <aph@redhat.com>
2397
2398         Import from libffi 3.0.8:
2399
2400         * doc/libffi.texi: New file.
2401         * doc/libffi.info: Likewise.
2402         * doc/stamp-vti: Likewise.
2403         * man/Makefile.am: New file.
2404         * man/ffi_call.3: New file.
2405
2406         * Makefile.am (EXTRA_DIST): Add src/x86/darwin64.S,
2407         src/dlmalloc.c.
2408         (nodist_libffi_la_SOURCES): Add X86_FREEBSD.
2409
2410         * configure.ac: Bump version to 3.0.8.
2411         parisc*-*-linux*: Add.
2412         i386-*-freebsd* | i386-*-openbsd*: Add.
2413         powerpc-*-beos*: Add.
2414         AM_CONDITIONAL X86_FREEBSD: Add.
2415         AC_CONFIG_FILES: Add man/Makefile.
2416
2417         * include/ffi.h.in (FFI_FN): Change void (*)() to void (*)(void).
2418
2419 2009-06-08  Andrew Haley  <aph@redhat.com>
2420
2421         * README: Import from libffi 3.0.8.
2422
2423 2009-06-08  Andrew Haley  <aph@redhat.com>
2424
2425         * testsuite/libffi.call/err_bad_abi.c: Add xfails.
2426         * testsuite/libffi.call/cls_longdouble_va.c: Add xfails.
2427         * testsuite/libffi.call/cls_dbls_struct.c: Add xfail x86_64-*-linux-*.
2428         * testsuite/libffi.call/err_bad_typedef.c: Add xfails.
2429
2430         * testsuite/libffi.call/stret_medium2.c: Add __UNUSED__ to args.
2431         * testsuite/libffi.call/stret_medium.c: Likewise.
2432         * testsuite/libffi.call/stret_large2.c: Likewise.
2433         * testsuite/libffi.call/stret_large.c:  Likewise.
2434
2435 2008-12-26  Timothy Wall  <twall@users.sf.net>
2436
2437         * testsuite/libffi.call/cls_longdouble.c,
2438         testsuite/libffi.call/cls_longdouble_va.c,
2439         testsuite/libffi.call/cls_align_longdouble.c,
2440         testsuite/libffi.call/cls_align_longdouble_split.c,
2441         testsuite/libffi.call/cls_align_longdouble_split2.c: mark expected
2442         failures on x86_64 cygwin/mingw.
2443
2444 2008-12-22  Timothy Wall  <twall@users.sf.net>
2445
2446         * testsuite/libffi.call/closure_fn0.c,
2447         testsuite/libffi.call/closure_fn1.c,
2448         testsuite/libffi.call/closure_fn2.c,
2449         testsuite/libffi.call/closure_fn3.c,
2450         testsuite/libffi.call/closure_fn4.c,
2451         testsuite/libffi.call/closure_fn5.c,
2452         testsuite/libffi.call/closure_fn6.c,
2453         testsuite/libffi.call/closure_loc_fn0.c,
2454         testsuite/libffi.call/closure_stdcall.c,
2455         testsuite/libffi.call/cls_align_pointer.c,
2456         testsuite/libffi.call/cls_pointer.c,
2457         testsuite/libffi.call/cls_pointer_stack.c: use portable cast from
2458         pointer to integer (intptr_t).
2459         * testsuite/libffi.call/cls_longdouble.c: disable for win64.
2460
2461 2008-07-24  Anthony Green  <green@redhat.com>
2462
2463         * testsuite/libffi.call/cls_dbls_struct.c,
2464         testsuite/libffi.call/cls_double_va.c,
2465         testsuite/libffi.call/cls_longdouble.c,
2466         testsuite/libffi.call/cls_longdouble_va.c,
2467         testsuite/libffi.call/cls_pointer.c,
2468         testsuite/libffi.call/cls_pointer_stack.c,
2469         testsuite/libffi.call/err_bad_abi.c: Clean up failures from
2470         compiler warnings.
2471
2472 2008-03-04  Anthony Green  <green@redhat.com>
2473             Blake Chaffin
2474             hos@tamanegi.org
2475
2476         * testsuite/libffi.call/cls_align_longdouble_split2.c
2477           testsuite/libffi.call/cls_align_longdouble_split.c
2478           testsuite/libffi.call/cls_dbls_struct.c
2479           testsuite/libffi.call/cls_double_va.c
2480           testsuite/libffi.call/cls_longdouble.c
2481           testsuite/libffi.call/cls_longdouble_va.c
2482           testsuite/libffi.call/cls_pointer.c
2483           testsuite/libffi.call/cls_pointer_stack.c
2484           testsuite/libffi.call/err_bad_abi.c
2485           testsuite/libffi.call/err_bad_typedef.c
2486           testsuite/libffi.call/stret_large2.c
2487           testsuite/libffi.call/stret_large.c
2488           testsuite/libffi.call/stret_medium2.c
2489           testsuite/libffi.call/stret_medium.c: New tests from Apple.
2490
2491 2009-06-05  Andrew Haley  <aph@redhat.com>
2492
2493         * src/x86/ffitarget.h, src/x86/ffi.c: Merge stdcall changes from
2494         libffi.
2495
2496 2009-06-04  Andrew Haley  <aph@redhat.com>
2497
2498         * src/x86/ffitarget.h, src/x86/win32.S, src/x86/ffi.c: Back out
2499         stdcall changes.
2500
2501 2008-02-26  Anthony Green  <green@redhat.com>
2502             Thomas Heller  <theller@ctypes.org>
2503
2504         * src/x86/ffi.c (ffi_closure_SYSV_inner): Change C++ comment to C
2505         comment.
2506
2507 2008-02-03  Timothy Wall  <twall@users.sf.net>
2508
2509         * src/x86/ffi.c (FFI_INIT_TRAMPOLINE_STDCALL): Calculate jump return
2510           offset based on code pointer, not data pointer.
2511
2512 2008-01-31  Timothy Wall <twall@users.sf.net>
2513
2514         * testsuite/libffi.call/closure_stdcall.c: Add test for stdcall
2515         closures.
2516         * src/x86/ffitarget.h: Increase size of trampoline for stdcall
2517         closures.
2518         * src/x86/win32.S: Add assembly for stdcall closure.
2519         * src/x86/ffi.c: Initialize stdcall closure trampoline.
2520
2521 2009-06-04  Andrew Haley  <aph@redhat.com>
2522
2523         * include/ffi.h.in: Change void (*)() to void (*)(void).
2524         * src/x86/ffi.c: Likewise.
2525
2526 2009-06-04  Andrew Haley  <aph@redhat.com>
2527
2528         * src/powerpc/ppc_closure.S: Insert licence header.
2529         * src/powerpc/linux64_closure.S: Likewise.
2530         * src/m68k/sysv.S: Likewise.
2531
2532         * src/sh64/ffi.c: Change void (*)() to void (*)(void).
2533         * src/powerpc/ffi.c: Likewise.
2534         * src/powerpc/ffi_darwin.c: Likewise.
2535         * src/m32r/ffi.c: Likewise.
2536         * src/sh64/ffi.c: Likewise.
2537         * src/x86/ffi64.c: Likewise.
2538         * src/alpha/ffi.c: Likewise.
2539         * src/alpha/osf.S: Likewise.
2540         * src/frv/ffi.c: Likewise.
2541         * src/s390/ffi.c: Likewise.
2542         * src/pa/ffi.c: Likewise.
2543         * src/pa/hpux32.S: Likewise.
2544         * src/ia64/unix.S: Likewise.
2545         * src/ia64/ffi.c: Likewise.
2546         * src/sparc/ffi.c: Likewise.
2547         * src/mips/ffi.c: Likewise.
2548         * src/sh/ffi.c: Likewise.
2549
2550 2008-02-15  David Daney  <ddaney@avtrex.com>
2551
2552         * src/mips/ffi.c (USE__BUILTIN___CLEAR_CACHE):
2553         Define (conditionally), and use it to include cachectl.h.
2554         (ffi_prep_closure_loc): Fix cache flushing.
2555         * src/mips/ffitarget.h (_ABIN32, _ABI64, _ABIO32): Define.
2556
2557 2009-06-04  Andrew Haley  <aph@redhat.com>
2558
2559         include/ffi.h.in,
2560         src/arm/ffitarget.h,
2561         src/arm/ffi.c,
2562         src/arm/sysv.S,
2563         src/powerpc/ffitarget.h,
2564         src/closures.c,
2565         src/sh64/ffitarget.h,
2566         src/sh64/ffi.c,
2567         src/sh64/sysv.S,
2568         src/types.c,
2569         src/x86/ffi64.c,
2570         src/x86/ffitarget.h,
2571         src/x86/win32.S,
2572         src/x86/darwin.S,
2573         src/x86/ffi.c,
2574         src/x86/sysv.S,
2575         src/x86/unix64.S,
2576         src/alpha/ffitarget.h,
2577         src/alpha/ffi.c,
2578         src/alpha/osf.S,
2579         src/m68k/ffitarget.h,
2580         src/frv/ffitarget.h,
2581         src/frv/ffi.c,
2582         src/s390/ffitarget.h,
2583         src/s390/sysv.S,
2584         src/cris/ffitarget.h,
2585         src/pa/linux.S,
2586         src/pa/ffitarget.h,
2587         src/pa/ffi.c,
2588         src/raw_api.c,
2589         src/ia64/ffitarget.h,
2590         src/ia64/unix.S,
2591         src/ia64/ffi.c,
2592         src/ia64/ia64_flags.h,
2593         src/java_raw_api.c,
2594         src/debug.c,
2595         src/sparc/v9.S,
2596         src/sparc/ffitarget.h,
2597         src/sparc/ffi.c,
2598         src/sparc/v8.S,
2599         src/mips/ffitarget.h,
2600         src/mips/n32.S,
2601         src/mips/o32.S,
2602         src/mips/ffi.c,
2603         src/prep_cif.c,
2604         src/sh/ffitarget.h,
2605         src/sh/ffi.c,
2606         src/sh/sysv.S: Update license text.
2607
2608 2009-05-22  Dave Korn  <dave.korn.cygwin@gmail.com>
2609
2610         * src/x86/win32.S (_ffi_closure_STDCALL):  New function.
2611         (.eh_frame):  Add FDE for it.
2612
2613 2009-05-22  Dave Korn  <dave.korn.cygwin@gmail.com>
2614
2615         * configure.ac:  Also check if assembler supports pc-relative
2616         relocs on X86_WIN32 targets.
2617         * configure:  Regenerate.
2618         * src/x86/win32.S (ffi_prep_args):  Declare extern, not global.
2619         (_ffi_call_SYSV):  Add missing function type symbol .def and
2620         add EH markup labels.
2621         (_ffi_call_STDCALL):  Likewise.
2622         (_ffi_closure_SYSV):  Likewise.
2623         (_ffi_closure_raw_SYSV):  Likewise.
2624         (.eh_frame):  Add hand-crafted EH data.
2625
2626 2009-04-09  Jakub Jelinek  <jakub@redhat.com>
2627
2628         * testsuite/lib/libffi-dg.exp: Change copyright header to refer to
2629         version 3 of the GNU General Public License and to point readers
2630         at the COPYING3 file and the FSF's license web page.
2631         * testsuite/libffi.call/call.exp: Likewise.
2632         * testsuite/libffi.special/special.exp: Likewise.
2633
2634 2009-03-01  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2635
2636         * configure: Regenerate.
2637
2638 2008-12-18  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
2639
2640         PR libffi/26048
2641         * configure.ac (HAVE_AS_X86_PCREL): New test.
2642         * configure: Regenerate.
2643         * fficonfig.h.in: Regenerate.
2644         * src/x86/sysv.S [!FFI_NO_RAW_API]: Precalculate
2645         RAW_CLOSURE_CIF_OFFSET, RAW_CLOSURE_FUN_OFFSET,
2646         RAW_CLOSURE_USER_DATA_OFFSET for the Solaris 10/x86 assembler.
2647         (.eh_frame): Only use SYMBOL-. iff HAVE_AS_X86_PCREL.
2648         * src/x86/unix64.S (.Lstore_table): Move to .text section.
2649         (.Lload_table): Likewise.
2650         (.eh_frame): Only use SYMBOL-. iff HAVE_AS_X86_PCREL.
2651
2652 2008-12-18  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2653
2654         * configure: Regenerate.
2655
2656 2008-11-21  Eric Botcazou  <ebotcazou@adacore.com>
2657
2658         * src/sparc/ffi.c (ffi_prep_cif_machdep): Add support for
2659         signed/unsigned int8/16 return values.
2660         * src/sparc/v8.S (ffi_call_v8): Likewise.
2661         (ffi_closure_v8): Likewise.
2662
2663 2008-09-26  Peter O'Gorman  <pogma@thewrittenword.com>
2664             Steve Ellcey  <sje@cup.hp.com>
2665
2666         * configure: Regenerate for new libtool.
2667         * Makefile.in: Ditto.
2668         * include/Makefile.in: Ditto.
2669         * aclocal.m4: Ditto.
2670
2671 2008-08-25  Andreas Tobler  <a.tobler@schweiz.org>
2672
2673         * src/powerpc/ffitarget.h (ffi_abi): Add FFI_LINUX and
2674         FFI_LINUX_SOFT_FLOAT to the POWERPC_FREEBSD enum.
2675         Add note about flag bits used for FFI_SYSV_TYPE_SMALL_STRUCT.
2676         Adjust copyright notice.
2677         * src/powerpc/ffi.c: Add two new flags to indicate if we have one
2678         register or two register to use for FFI_SYSV structs.
2679         (ffi_prep_cif_machdep): Pass the right register flag introduced above.
2680         (ffi_closure_helper_SYSV): Fix the return type for
2681         FFI_SYSV_TYPE_SMALL_STRUCT. Comment.
2682         Adjust copyright notice.
2683
2684 2008-07-16  Kaz Kojima  <kkojima@gcc.gnu.org>
2685
2686         * src/sh/ffi.c (ffi_prep_closure_loc): Turn INSN into an unsigned
2687         int.
2688
2689 2008-06-17  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2690
2691         * configure: Regenerate.
2692         * include/Makefile.in: Regenerate.
2693         * testsuite/Makefile.in: Regenerate.
2694
2695 2008-06-07  Joseph Myers  <joseph@codesourcery.com>
2696
2697         * configure.ac (parisc*-*-linux*, powerpc-*-sysv*,
2698         powerpc-*-beos*): Remove.
2699         * configure: Regenerate.
2700
2701 2008-05-09  Julian Brown  <julian@codesourcery.com>
2702
2703         * Makefile.am (LTLDFLAGS): New.
2704         (libffi_la_LDFLAGS): Use above.
2705         * Makefile.in: Regenerate.
2706
2707 2008-04-18  Paolo Bonzini  <bonzini@gnu.org>
2708
2709         PR bootstrap/35457
2710         * aclocal.m4: Regenerate.
2711         * configure: Regenerate.
2712
2713 2008-03-26  Kaz Kojima  <kkojima@gcc.gnu.org>
2714
2715         * src/sh/sysv.S: Add .note.GNU-stack on Linux.
2716         * src/sh64/sysv.S: Likewise.
2717
2718 2008-03-26  Daniel Jacobowitz  <dan@debian.org>
2719
2720         * src/arm/sysv.S: Fix ARM comment marker.
2721
2722 2008-03-26  Jakub Jelinek  <jakub@redhat.com>
2723
2724         * src/alpha/osf.S: Add .note.GNU-stack on Linux.
2725         * src/s390/sysv.S: Likewise.
2726         * src/powerpc/ppc_closure.S: Likewise.
2727         * src/powerpc/sysv.S: Likewise.
2728         * src/x86/unix64.S: Likewise.
2729         * src/x86/sysv.S: Likewise.
2730         * src/sparc/v8.S: Likewise.
2731         * src/sparc/v9.S: Likewise.
2732         * src/m68k/sysv.S: Likewise.
2733         * src/arm/sysv.S: Likewise.
2734
2735 2008-03-16  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>
2736
2737         * aclocal.m4: Regenerate.
2738         * configure: Likewise.
2739         * Makefile.in: Likewise.
2740         * include/Makefile.in: Likewise.
2741         * testsuite/Makefile.in: Likewise.
2742
2743 2008-02-12  Bjoern Koenig  <bkoenig@alpha-tierchen.de>
2744             Andreas Tobler  <a.tobler@schweiz.org>
2745
2746         * configure.ac: Add amd64-*-freebsd* target.
2747         * configure: Regenerate.
2748
2749 2008-01-30  H.J. Lu  <hongjiu.lu@intel.com>
2750
2751         PR libffi/34612
2752         * src/x86/sysv.S (ffi_closure_SYSV): Pop 4 byte from stack when
2753         returning struct.
2754
2755         * testsuite/libffi.call/call.exp: Add "-O2 -fomit-frame-pointer"
2756         tests.
2757
2758 2008-01-24  David Edelsohn  <edelsohn@gnu.org>
2759
2760         * configure: Regenerate.
2761
2762 2008-01-06  Andreas Tobler  <a.tobler@schweiz.org>
2763
2764         * src/x86/ffi.c (ffi_prep_cif_machdep): Fix thinko.
2765
2766 2008-01-05  Andreas Tobler  <a.tobler@schweiz.org>
2767
2768         PR testsuite/32843
2769         * src/x86/ffi.c (ffi_prep_cif_machdep): Add code for
2770         signed/unsigned int8/16 for X86_DARWIN.
2771         Updated copyright info.
2772         Handle one and two byte structs with special cif->flags.
2773         * src/x86/ffitarget.h: Add special types for one and two byte structs.
2774         Updated copyright info.
2775         * src/x86/darwin.S (ffi_call_SYSV): Rewrite to use a jump table like
2776         sysv.S
2777         Remove code to pop args from the stack after call.
2778         Special-case signed/unsigned for int8/16, one and two byte structs.
2779         (ffi_closure_raw_SYSV): Handle FFI_TYPE_UINT8,
2780         FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32,
2781         FFI_TYPE_SINT32.
2782         Updated copyright info.
2783
2784 2007-12-08  David Daney  <ddaney@avtrex.com>
2785
2786         * src/mips/n32.S (ffi_call_N32):  Replace dadd with ADDU, dsub with
2787         SUBU, add with ADDU and use smaller code sequences.
2788
2789 2007-12-07  David Daney  <ddaney@avtrex.com>
2790
2791         * src/mips/ffi.c (ffi_prep_cif_machdep): Handle long double return
2792         type.
2793
2794 2007-12-06  David Daney  <ddaney@avtrex.com>
2795
2796         * include/ffi.h.in (FFI_SIZEOF_JAVA_RAW): Define if not already
2797         defined.
2798         (ffi_java_raw): New typedef.
2799         (ffi_java_raw_call, ffi_java_ptrarray_to_raw,
2800         ffi_java_raw_to_ptrarray): Change parameter types from ffi_raw to
2801         ffi_java_raw.
2802         (ffi_java_raw_closure) : Same.
2803         (ffi_prep_java_raw_closure, ffi_prep_java_raw_closure_loc): Change
2804         parameter types.
2805         * src/java_raw_api.c (ffi_java_raw_size):  Replace FFI_SIZEOF_ARG with
2806         FFI_SIZEOF_JAVA_RAW.
2807         (ffi_java_raw_to_ptrarray): Change type of raw to ffi_java_raw.
2808         Replace FFI_SIZEOF_ARG with FFI_SIZEOF_JAVA_RAW. Use
2809         sizeof(ffi_java_raw) for alignment calculations.
2810         (ffi_java_ptrarray_to_raw): Same.
2811         (ffi_java_rvalue_to_raw): Add special handling for FFI_TYPE_POINTER
2812         if FFI_SIZEOF_JAVA_RAW == 4.
2813         (ffi_java_raw_to_rvalue): Same.
2814         (ffi_java_raw_call): Change type of raw to ffi_java_raw.
2815         (ffi_java_translate_args): Same.
2816         (ffi_prep_java_raw_closure_loc, ffi_prep_java_raw_closure): Change
2817         parameter types.
2818         * src/mips/ffitarget.h (FFI_SIZEOF_JAVA_RAW): Define for N32 ABI.
2819
2820 2007-12-06  David Daney  <ddaney@avtrex.com>
2821
2822         * src/mips/n32.S (ffi_closure_N32): Use 64-bit add instruction on
2823         pointer values.
2824
2825 2007-12-01  Andreas Tobler  <a.tobler@schweiz.org>
2826
2827         PR libffi/31937
2828         * src/powerpc/ffitarget.h: Introduce new ABI FFI_LINUX_SOFT_FLOAT.
2829         Add local FFI_TYPE_UINT128 to handle soft-float long-double-128.
2830         * src/powerpc/ffi.c: Distinguish between __NO_FPRS__ and not and
2831         set the NUM_FPR_ARG_REGISTERS according to.
2832         Add support for potential soft-float support under hard-float
2833         architecture.
2834         (ffi_prep_args_SYSV): Set NUM_FPR_ARG_REGISTERS to 0 in case of
2835         FFI_LINUX_SOFT_FLOAT, handle float, doubles and long-doubles according
2836         to the FFI_LINUX_SOFT_FLOAT ABI.
2837         (ffi_prep_cif_machdep): Likewise.
2838         (ffi_closure_helper_SYSV): Likewise.
2839         * src/powerpc/ppc_closure.S: Make sure not to store float/double
2840         on archs where __NO_FPRS__ is true.
2841         Add FFI_TYPE_UINT128 support.
2842         * src/powerpc/sysv.S: Add support for soft-float long-double-128.
2843         Adjust copyright notice.
2844
2845 2007-11-25  Andreas Tobler  <a.tobler@schweiz.org>
2846
2847         * src/closures.c: Move defintion of MAYBE_UNUSED from here to ...
2848         * include/ffi_common.h: ... here.
2849         Update copyright.
2850
2851 2007-11-17  Andreas Tobler  <a.tobler@schweiz.org>
2852
2853         * src/powerpc/sysv.S: Load correct cr to compare if we have long double.
2854         * src/powerpc/linux64.S: Likewise.
2855         * src/powerpc/ffi.c: Add a comment to show which part goes into cr6.
2856         * testsuite/libffi.call/return_ldl.c: New test.
2857
2858 2007-09-04    <aph@redhat.com>
2859
2860         * src/arm/sysv.S (UNWIND): New.
2861         (Whole file): Conditionally compile unwinder directives.
2862         * src/arm/sysv.S: Add unwinder directives.
2863
2864         * src/arm/ffi.c (ffi_prep_args): Align structs by at least 4 bytes.
2865         Only treat r0 as a struct address if we're actually returning a
2866         struct by address.
2867         Only copy the bytes that are actually within a struct.
2868         (ffi_prep_cif_machdep): A Composite Type not larger than 4 bytes
2869         is returned in r0, not passed by address.
2870         (ffi_call): Allocate a word-sized temporary for the case where
2871         a composite is returned in r0.
2872         (ffi_prep_incoming_args_SYSV): Align as necessary.
2873
2874 2007-08-05  Steven Newbury  <s_j_newbury@yahoo.co.uk>
2875
2876         * src/arm/ffi.c (FFI_INIT_TRAMPOLINE): Use __clear_cache instead of
2877         directly using the sys_cacheflush syscall.
2878
2879 2007-07-27  Andrew Haley  <aph@redhat.com>
2880
2881         * src/arm/sysv.S (ffi_closure_SYSV): Add soft-float.
2882
2883 2007-09-03  Maciej W. Rozycki  <macro@linux-mips.org>
2884
2885         * Makefile.am: Unify MIPS_IRIX and MIPS_LINUX into MIPS.
2886         * configure.ac: Likewise.
2887         * Makefile.in: Regenerate.
2888         * include/Makefile.in: Likewise.
2889         * testsuite/Makefile.in: Likewise.
2890         * configure: Likewise.
2891
2892 2007-08-24  David Daney  <ddaney@avtrex.com>
2893
2894         * testsuite/libffi.call/return_sl.c: New test.
2895
2896 2007-08-10  David Daney  <ddaney@avtrex.com>
2897
2898         * testsuite/libffi.call/cls_multi_ushort.c,
2899         testsuite/libffi.call/cls_align_uint16.c,
2900         testsuite/libffi.call/nested_struct1.c,
2901         testsuite/libffi.call/nested_struct3.c,
2902         testsuite/libffi.call/cls_7_1_byte.c,
2903         testsuite/libffi.call/nested_struct5.c,
2904         testsuite/libffi.call/cls_double.c,
2905         testsuite/libffi.call/nested_struct7.c,
2906         testsuite/libffi.call/cls_sint.c,
2907         testsuite/libffi.call/nested_struct9.c,
2908         testsuite/libffi.call/cls_20byte1.c,
2909         testsuite/libffi.call/cls_multi_sshortchar.c,
2910         testsuite/libffi.call/cls_align_sint64.c,
2911         testsuite/libffi.call/cls_3byte2.c,
2912         testsuite/libffi.call/cls_multi_schar.c,
2913         testsuite/libffi.call/cls_multi_uchar.c,
2914         testsuite/libffi.call/cls_19byte.c,
2915         testsuite/libffi.call/cls_9byte1.c,
2916         testsuite/libffi.call/cls_align_float.c,
2917         testsuite/libffi.call/closure_fn1.c,
2918         testsuite/libffi.call/problem1.c,
2919         testsuite/libffi.call/closure_fn3.c,
2920         testsuite/libffi.call/cls_sshort.c,
2921         testsuite/libffi.call/closure_fn5.c,
2922         testsuite/libffi.call/cls_align_double.c,
2923         testsuite/libffi.call/nested_struct.c,
2924         testsuite/libffi.call/cls_2byte.c,
2925         testsuite/libffi.call/nested_struct10.c,
2926         testsuite/libffi.call/cls_4byte.c,
2927         testsuite/libffi.call/cls_6byte.c,
2928         testsuite/libffi.call/cls_8byte.c,
2929         testsuite/libffi.call/cls_multi_sshort.c,
2930         testsuite/libffi.call/cls_align_sint16.c,
2931         testsuite/libffi.call/cls_align_uint32.c,
2932         testsuite/libffi.call/cls_20byte.c,
2933         testsuite/libffi.call/cls_float.c,
2934         testsuite/libffi.call/nested_struct2.c,
2935         testsuite/libffi.call/cls_5_1_byte.c,
2936         testsuite/libffi.call/nested_struct4.c,
2937         testsuite/libffi.call/cls_24byte.c,
2938         testsuite/libffi.call/nested_struct6.c,
2939         testsuite/libffi.call/cls_64byte.c,
2940         testsuite/libffi.call/nested_struct8.c,
2941         testsuite/libffi.call/cls_uint.c,
2942         testsuite/libffi.call/cls_multi_ushortchar.c,
2943         testsuite/libffi.call/cls_schar.c,
2944         testsuite/libffi.call/cls_uchar.c,
2945         testsuite/libffi.call/cls_align_uint64.c,
2946         testsuite/libffi.call/cls_ulonglong.c,
2947         testsuite/libffi.call/cls_align_longdouble.c,
2948         testsuite/libffi.call/cls_1_1byte.c,
2949         testsuite/libffi.call/cls_12byte.c,
2950         testsuite/libffi.call/cls_3_1byte.c,
2951         testsuite/libffi.call/cls_3byte1.c,
2952         testsuite/libffi.call/cls_4_1byte.c,
2953         testsuite/libffi.call/cls_6_1_byte.c,
2954         testsuite/libffi.call/cls_16byte.c,
2955         testsuite/libffi.call/cls_18byte.c,
2956         testsuite/libffi.call/closure_fn0.c,
2957         testsuite/libffi.call/cls_9byte2.c,
2958         testsuite/libffi.call/closure_fn2.c,
2959         testsuite/libffi.call/closure_fn4.c,
2960         testsuite/libffi.call/cls_ushort.c,
2961         testsuite/libffi.call/closure_fn6.c,
2962         testsuite/libffi.call/cls_5byte.c,
2963         testsuite/libffi.call/cls_align_pointer.c,
2964         testsuite/libffi.call/cls_7byte.c,
2965         testsuite/libffi.call/cls_align_sint32.c,
2966         testsuite/libffi.special/unwindtest_ffi_call.cc,
2967         testsuite/libffi.special/unwindtest.cc: Remove xfail for mips64*-*-*.
2968
2969 2007-08-10  David Daney  <ddaney@avtrex.com>
2970
2971         PR libffi/28313
2972         * configure.ac: Don't treat mips64 as a special case.
2973         * Makefile.am (nodist_libffi_la_SOURCES): Add n32.S.
2974         * configure: Regenerate
2975         * Makefile.in: Ditto.
2976         * fficonfig.h.in: Ditto.
2977         * src/mips/ffitarget.h (REG_L, REG_S, SUBU, ADDU, SRL, LI): Indent.
2978         (LA, EH_FRAME_ALIGN, FDE_ADDR_BYTES): New preprocessor macros.
2979         (FFI_DEFAULT_ABI): Set for n64 case.
2980         (FFI_CLOSURES, FFI_TRAMPOLINE_SIZE): Define for n32 and n64 cases.
2981         * src/mips/n32.S (ffi_call_N32): Add debug macros and labels for FDE.
2982         (ffi_closure_N32): New function.
2983         (.eh_frame): New section
2984         * src/mips/o32.S: Clean up comments.
2985         (ffi_closure_O32): Pass ffi_closure parameter in $12.
2986         * src/mips/ffi.c: Use FFI_MIPS_N32 instead of
2987         _MIPS_SIM == _ABIN32 throughout.
2988         (FFI_MIPS_STOP_HERE): New, use in place of
2989         ffi_stop_here.
2990         (ffi_prep_args): Use unsigned long to hold pointer values.  Rewrite
2991         to support n32/n64 ABIs.
2992         (calc_n32_struct_flags): Rewrite.
2993         (calc_n32_return_struct_flags): Remove unused variable.  Reverse
2994         position of flag bits.
2995         (ffi_prep_cif_machdep): Rewrite n32 portion.
2996         (ffi_call): Enable for n64.  Add special handling for small structure
2997         return values.
2998         (ffi_prep_closure_loc): Add n32 and n64 support.
2999         (ffi_closure_mips_inner_O32): Add cast to silence warning.
3000         (copy_struct_N32, ffi_closure_mips_inner_N32): New functions.
3001
3002 2007-08-08  David Daney  <ddaney@avtrex.com>
3003
3004         * testsuite/libffi.call/ffitest.h (ffi_type_mylong): Remove definition.
3005         * testsuite/libffi.call/cls_align_uint16.c (main): Use correct type
3006         specifiers.
3007         * testsuite/libffi.call/nested_struct1.c (main): Ditto.
3008         * testsuite/libffi.call/cls_sint.c (main): Ditto.
3009         * testsuite/libffi.call/nested_struct9.c (main): Ditto.
3010         * testsuite/libffi.call/cls_20byte1.c (main): Ditto.
3011         * testsuite/libffi.call/cls_9byte1.c (main): Ditto.
3012         * testsuite/libffi.call/closure_fn1.c (main): Ditto.
3013         * testsuite/libffi.call/closure_fn3.c (main): Ditto.
3014         * testsuite/libffi.call/return_dbl2.c (main): Ditto.
3015         * testsuite/libffi.call/cls_sshort.c (main): Ditto.
3016         * testsuite/libffi.call/return_fl3.c (main): Ditto.
3017         * testsuite/libffi.call/closure_fn5.c (main): Ditto.
3018         * testsuite/libffi.call/nested_struct.c (main): Ditto.
3019         * testsuite/libffi.call/nested_struct10.c (main): Ditto.
3020         * testsuite/libffi.call/return_ll1.c (main): Ditto.
3021         * testsuite/libffi.call/cls_8byte.c (main): Ditto.
3022         * testsuite/libffi.call/cls_align_uint32.c (main): Ditto.
3023         * testsuite/libffi.call/cls_align_sint16.c (main): Ditto.
3024         * testsuite/libffi.call/cls_20byte.c (main): Ditto.
3025         * testsuite/libffi.call/nested_struct2.c (main): Ditto.
3026         * testsuite/libffi.call/cls_24byte.c (main): Ditto.
3027         * testsuite/libffi.call/nested_struct6.c (main): Ditto.
3028         * testsuite/libffi.call/cls_uint.c (main): Ditto.
3029         * testsuite/libffi.call/cls_12byte.c (main): Ditto.
3030         * testsuite/libffi.call/cls_16byte.c (main): Ditto.
3031         * testsuite/libffi.call/closure_fn0.c (main): Ditto.
3032         * testsuite/libffi.call/cls_9byte2.c (main): Ditto.
3033         * testsuite/libffi.call/closure_fn2.c (main): Ditto.
3034         * testsuite/libffi.call/return_dbl1.c (main): Ditto.
3035         * testsuite/libffi.call/closure_fn4.c (main): Ditto.
3036         * testsuite/libffi.call/closure_fn6.c (main): Ditto.
3037         * testsuite/libffi.call/cls_align_sint32.c (main): Ditto.
3038
3039 2007-08-07  Andrew Haley  <aph@redhat.com>
3040
3041         * src/x86/sysv.S (ffi_closure_raw_SYSV): Fix typo in previous
3042         checkin.
3043
3044 2007-08-06  Andrew Haley  <aph@redhat.com>
3045
3046         PR testsuite/32843
3047         * src/x86/sysv.S (ffi_closure_raw_SYSV): Handle FFI_TYPE_UINT8,
3048         FFI_TYPE_SINT8, FFI_TYPE_UINT16, FFI_TYPE_SINT16, FFI_TYPE_UINT32,
3049         FFI_TYPE_SINT32.
3050
3051 2007-08-02  David Daney  <ddaney@avtrex.com>
3052
3053         * testsuite/libffi.call/return_ul.c (main): Define return type as
3054         ffi_arg.  Use proper printf conversion specifier.
3055
3056 2007-07-30  Andrew Haley  <aph@redhat.com>
3057
3058         PR testsuite/32843
3059         * src/x86/ffi.c (ffi_prep_cif_machdep): in x86 case, add code for
3060         signed/unsigned int8/16.
3061         * src/x86/sysv.S (ffi_call_SYSV): Rewrite to:
3062         Use a jump table.
3063         Remove code to pop args from the stack after call.
3064         Special-case signed/unsigned int8/16.
3065         * testsuite/libffi.call/return_sc.c (main): Revert.
3066
3067 2007-07-26  Richard Guenther  <rguenther@suse.de>
3068
3069         PR testsuite/32843
3070         * testsuite/libffi.call/return_sc.c (main): Verify call
3071         result as signed char, not ffi_arg.
3072
3073 2007-07-16  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3074
3075         * configure.ac (i?86-*-solaris2.1[0-9]): Set TARGET to X86_64.
3076         * configure: Regenerate.
3077
3078 2007-07-11  David Daney  <ddaney@avtrex.com>
3079
3080         * src/mips/ffi.c: Don't include sys/cachectl.h.
3081         (ffi_prep_closure_loc): Use __builtin___clear_cache() instead of
3082         cacheflush().
3083
3084 2007-05-18  Aurelien Jarno  <aurelien@aurel32.net>
3085
3086         * src/arm/ffi.c (ffi_prep_closure_loc): Renamed and ajusted
3087         from (ffi_prep_closure): ... this.
3088         (FFI_INIT_TRAMPOLINE): Adjust.
3089
3090 2005-12-31  Phil Blundell  <pb@reciva.com>
3091
3092         * src/arm/ffi.c (ffi_prep_incoming_args_SYSV,
3093         ffi_closure_SYSV_inner, ffi_prep_closure): New, add closure support.
3094         * src/arm/sysv.S(ffi_closure_SYSV): Likewise.
3095         * src/arm/ffitarget.h (FFI_TRAMPOLINE_SIZE): Likewise.
3096         (FFI_CLOSURES): Enable closure support.
3097
3098 2007-07-03  Andrew Haley  <aph@hedges.billgatliff.com>
3099
3100         * testsuite/libffi.call/cls_multi_ushort.c,
3101         testsuite/libffi.call/cls_align_uint16.c,
3102         testsuite/libffi.call/nested_struct1.c,
3103         testsuite/libffi.call/nested_struct3.c,
3104         testsuite/libffi.call/cls_7_1_byte.c,
3105         testsuite/libffi.call/cls_double.c,
3106         testsuite/libffi.call/nested_struct5.c,
3107         testsuite/libffi.call/nested_struct7.c,
3108         testsuite/libffi.call/cls_sint.c,
3109         testsuite/libffi.call/nested_struct9.c,
3110         testsuite/libffi.call/cls_20byte1.c,
3111         testsuite/libffi.call/cls_multi_sshortchar.c,
3112         testsuite/libffi.call/cls_align_sint64.c,
3113         testsuite/libffi.call/cls_3byte2.c,
3114         testsuite/libffi.call/cls_multi_schar.c,
3115         testsuite/libffi.call/cls_multi_uchar.c,
3116         testsuite/libffi.call/cls_19byte.c,
3117         testsuite/libffi.call/cls_9byte1.c,
3118         testsuite/libffi.call/cls_align_float.c,
3119         testsuite/libffi.call/closure_fn1.c,
3120         testsuite/libffi.call/problem1.c,
3121         testsuite/libffi.call/closure_fn3.c,
3122         testsuite/libffi.call/cls_sshort.c,
3123         testsuite/libffi.call/closure_fn5.c,
3124         testsuite/libffi.call/cls_align_double.c,
3125         testsuite/libffi.call/cls_2byte.c,
3126         testsuite/libffi.call/nested_struct.c,
3127         testsuite/libffi.call/nested_struct10.c,
3128         testsuite/libffi.call/cls_4byte.c,
3129         testsuite/libffi.call/cls_6byte.c,
3130         testsuite/libffi.call/cls_8byte.c,
3131         testsuite/libffi.call/cls_multi_sshort.c,
3132         testsuite/libffi.call/cls_align_uint32.c,
3133         testsuite/libffi.call/cls_align_sint16.c,
3134         testsuite/libffi.call/cls_float.c,
3135         testsuite/libffi.call/cls_20byte.c,
3136         testsuite/libffi.call/cls_5_1_byte.c,
3137         testsuite/libffi.call/nested_struct2.c,
3138         testsuite/libffi.call/cls_24byte.c,
3139         testsuite/libffi.call/nested_struct4.c,
3140         testsuite/libffi.call/nested_struct6.c,
3141         testsuite/libffi.call/cls_64byte.c,
3142         testsuite/libffi.call/nested_struct8.c,
3143         testsuite/libffi.call/cls_uint.c,
3144         testsuite/libffi.call/cls_multi_ushortchar.c,
3145         testsuite/libffi.call/cls_schar.c,
3146         testsuite/libffi.call/cls_uchar.c,
3147         testsuite/libffi.call/cls_align_uint64.c,
3148         testsuite/libffi.call/cls_ulonglong.c,
3149         testsuite/libffi.call/cls_align_longdouble.c,
3150         testsuite/libffi.call/cls_1_1byte.c,
3151         testsuite/libffi.call/cls_12byte.c,
3152         testsuite/libffi.call/cls_3_1byte.c,
3153         testsuite/libffi.call/cls_3byte1.c,
3154         testsuite/libffi.call/cls_4_1byte.c,
3155         testsuite/libffi.call/cls_6_1_byte.c,
3156         testsuite/libffi.call/cls_16byte.c,
3157         testsuite/libffi.call/cls_18byte.c,
3158         testsuite/libffi.call/closure_fn0.c,
3159         testsuite/libffi.call/cls_9byte2.c,
3160         testsuite/libffi.call/closure_fn2.c,
3161         testsuite/libffi.call/closure_fn4.c,
3162         testsuite/libffi.call/cls_ushort.c,
3163         testsuite/libffi.call/closure_fn6.c,
3164         testsuite/libffi.call/cls_5byte.c,
3165         testsuite/libffi.call/cls_align_pointer.c,
3166         testsuite/libffi.call/cls_7byte.c,
3167         testsuite/libffi.call/cls_align_sint32.c,
3168         testsuite/libffi.special/unwindtest_ffi_call.cc,
3169         testsuite/libffi.special/unwindtest.cc: Enable for ARM.
3170
3171 2007-07-05  H.J. Lu  <hongjiu.lu@intel.com>
3172
3173         * aclocal.m4: Regenerated.
3174
3175 2007-06-02  Paolo Bonzini  <bonzini@gnu.org>
3176
3177         * configure: Regenerate.
3178
3179 2007-05-23  Steve Ellcey  <sje@cup.hp.com>
3180
3181         * Makefile.in: Regenerate.
3182         * configure: Regenerate.
3183         * aclocal.m4: Regenerate.
3184         * include/Makefile.in: Regenerate.
3185         * testsuite/Makefile.in: Regenerate.
3186
3187 2007-05-10  Roman Zippel <zippel@linux-m68k.org>
3188
3189         * src/m68k/ffi.c (ffi_prep_incoming_args_SYSV,
3190         ffi_closure_SYSV_inner,ffi_prep_closure): New, add closure support.
3191         * src/m68k/sysv.S(ffi_closure_SYSV,ffi_closure_struct_SYSV): Likewise.
3192         * src/m68k/ffitarget.h (FFI_TRAMPOLINE_SIZE): Likewise.
3193         (FFI_CLOSURES): Enable closure support.
3194
3195 2007-05-10  Roman Zippel <zippel@linux-m68k.org>
3196
3197         * configure.ac (HAVE_AS_CFI_PSEUDO_OP): New test.
3198         * configure: Regenerate.
3199         * fficonfig.h.in: Regenerate.
3200         * src/m68k/sysv.S (CFI_STARTPROC,CFI_ENDPROC,
3201         CFI_OFFSET,CFI_DEF_CFA): New macros.
3202         (ffi_call_SYSV): Add callframe annotation.
3203
3204 2007-05-10  Roman Zippel <zippel@linux-m68k.org>
3205
3206         * src/m68k/ffi.c (ffi_prep_args,ffi_prep_cif_machdep): Fix
3207         numerous test suite failures.
3208         * src/m68k/sysv.S (ffi_call_SYSV): Likewise.
3209
3210 2007-04-11  Paolo Bonzini  <bonzini@gnu.org>
3211
3212         * Makefile.am (EXTRA_DIST): Bring up to date.
3213         * Makefile.in: Regenerate.
3214         * src/frv/eabi.S: Remove RCS keyword.
3215
3216 2007-04-06  Richard Henderson  <rth@redhat.com>
3217
3218         * configure.ac: Tidy target case.
3219         (HAVE_LONG_DOUBLE): Allow the target to override.
3220         * configure: Regenerate.
3221         * include/ffi.h.in: Don't define ffi_type_foo if
3222         LIBFFI_HIDE_BASIC_TYPES is defined.
3223         (ffi_type_longdouble): If not HAVE_LONG_DOUBLE, define
3224         to ffi_type_double.
3225         * types.c (LIBFFI_HIDE_BASIC_TYPES): Define.
3226         (FFI_TYPEDEF, ffi_type_void): Mark the data const.
3227         (ffi_type_longdouble): Special case for Alpha.  Don't define
3228         if long double == double.
3229
3230         * src/alpha/ffi.c (FFI_TYPE_LONGDOUBLE): Assert unique value.
3231         (ffi_prep_cif_machdep): Handle it as the 128-bit type.
3232         (ffi_call, ffi_closure_osf_inner): Likewise.
3233         (ffi_closure_osf_inner): Likewise.  Mark hidden.
3234         (ffi_call_osf, ffi_closure_osf): Mark hidden.
3235         * src/alpha/ffitarget.h (FFI_LAST_ABI): Tidy definition.
3236         * src/alpha/osf.S (ffi_call_osf, ffi_closure_osf): Mark hidden.
3237         (load_table): Handle 128-bit long double.
3238
3239         * testsuite/libffi.call/float4.c: Add -mieee for alpha.
3240
3241 2007-04-06  Tom Tromey  <tromey@redhat.com>
3242
3243         PR libffi/31491:
3244         * README: Fixed bug in example.
3245
3246 2007-04-03  Jakub Jelinek  <jakub@redhat.com>
3247
3248         * src/closures.c: Include sys/statfs.h.
3249         (_GNU_SOURCE): Define on Linux.
3250         (FFI_MMAP_EXEC_SELINUX): Define.
3251         (selinux_enabled): New variable.
3252         (selinux_enabled_check): New function.
3253         (is_selinux_enabled): Define.
3254         (dlmmap): Use it.
3255
3256 2007-03-24  Uros Bizjak  <ubizjak@gmail.com>
3257
3258         * testsuite/libffi.call/return_fl2.c (return_fl): Mark as static.
3259         Use 'volatile float sum' to create sum of floats to avoid false
3260         negative due to excess precision on ix86 targets.
3261         (main): Ditto.
3262
3263 2007-03-08  Alexandre Oliva  <aoliva@redhat.com>
3264
3265         * src/powerpc/ffi.c (flush_icache): Fix left-over from previous
3266         patch.
3267         (ffi_prep_closure_loc): Remove unneeded casts.  Add needed ones.
3268
3269 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
3270
3271         * include/ffi.h.in (ffi_closure_alloc, ffi_closure_free): New.
3272         (ffi_prep_closure_loc): New.
3273         (ffi_prep_raw_closure_loc): New.
3274         (ffi_prep_java_raw_closure_loc): New.
3275         * src/closures.c: New file.
3276         * src/dlmalloc.c [FFI_MMAP_EXEC_WRIT] (struct malloc_segment):
3277         Replace sflags with exec_offset.
3278         [FFI_MMAP_EXEC_WRIT] (mmap_exec_offset, add_segment_exec_offset,
3279         sub_segment_exec_offset): New macros.
3280         (get_segment_flags, set_segment_flags, check_segment_merge): New
3281         macros.
3282         (is_mmapped_segment, is_extern_segment): Use get_segment_flags.
3283         (add_segment, sys_alloc, create_mspace, create_mspace_with_base,
3284         destroy_mspace): Use new macros.
3285         (sys_alloc): Silence warning.
3286         * Makefile.am (libffi_la_SOURCES): Add src/closures.c.
3287         * Makefile.in: Rebuilt.
3288         * src/prep_cif [FFI_CLOSURES] (ffi_prep_closure): Implement in
3289         terms of ffi_prep_closure_loc.
3290         * src/raw_api.c (ffi_prep_raw_closure_loc): Renamed and adjusted
3291         from...
3292         (ffi_prep_raw_closure): ... this.  Re-implement in terms of the
3293         renamed version.
3294         * src/java_raw_api (ffi_prep_java_raw_closure_loc): Renamed and
3295         adjusted from...
3296         (ffi_prep_java_raw_closure): ... this.  Re-implement in terms of
3297         the renamed version.
3298         * src/alpha/ffi.c (ffi_prep_closure_loc): Renamed from
3299         (ffi_prep_closure): ... this.
3300         * src/pa/ffi.c: Likewise.
3301         * src/cris/ffi.c: Likewise.  Adjust.
3302         * src/frv/ffi.c: Likewise.
3303         * src/ia64/ffi.c: Likewise.
3304         * src/mips/ffi.c: Likewise.
3305         * src/powerpc/ffi_darwin.c: Likewise.
3306         * src/s390/ffi.c: Likewise.
3307         * src/sh/ffi.c: Likewise.
3308         * src/sh64/ffi.c: Likewise.
3309         * src/sparc/ffi.c: Likewise.
3310         * src/x86/ffi64.c: Likewise.
3311         * src/x86/ffi.c: Likewise.
3312         (FFI_INIT_TRAMPOLINE): Adjust.
3313         (ffi_prep_raw_closure_loc): Renamed and adjusted from...
3314         (ffi_prep_raw_closure): ... this.
3315         * src/powerpc/ffi.c (ffi_prep_closure_loc): Renamed from
3316         (ffi_prep_closure): ... this.
3317         (flush_icache): Adjust.
3318
3319 2007-03-07  Alexandre Oliva  <aoliva@redhat.com>
3320
3321         * src/dlmalloc.c: New file, imported version 2.8.3 of Doug
3322         Lea's malloc.
3323
3324 2007-03-01  Brooks Moses  <brooks.moses@codesourcery.com>
3325
3326         * Makefile.am: Add dummy install-pdf target.
3327         * Makefile.in: Regenerate
3328
3329 2007-02-13  Andreas Krebbel  <krebbel1@de.ibm.com>
3330
3331         * src/s390/ffi.c (ffi_prep_args, ffi_prep_cif_machdep,
3332         ffi_closure_helper_SYSV): Add long double handling.
3333
3334 2007-02-02  Jakub Jelinek  <jakub@redhat.com>
3335
3336         * src/powerpc/linux64.S (ffi_call_LINUX64): Move restore of r2
3337         immediately after bctrl instruction.
3338
3339 2007-01-18  Alexandre Oliva  <aoliva@redhat.com>
3340
3341         * Makefile.am (all-recursive, install-recursive,
3342         mostlyclean-recursive, clean-recursive, distclean-recursive,
3343         maintainer-clean-recursive): Add missing targets.
3344         * Makefile.in: Rebuilt.
3345
3346 2006-12-14  Andreas Tobler  <a.tobler@schweiz.org>
3347
3348         * configure.ac: Add TARGET for x86_64-*-darwin*.
3349         * Makefile.am (nodist_libffi_la_SOURCES): Add rules for 64-bit sources
3350         for X86_DARWIN.
3351         * src/x86/ffitarget.h: Set trampoline size for x86_64-*-darwin*.
3352         * src/x86/darwin64.S: New file for x86_64-*-darwin* support.
3353         * configure: Regenerate.
3354         * Makefile.in: Regenerate.
3355         * include/Makefile.in: Regenerate.
3356         * testsuite/Makefile.in: Regenerate.
3357         * testsuite/libffi.special/unwindtest_ffi_call.cc: New test case for
3358         ffi_call only.
3359
3360 2006-12-13  Andreas Tobler <a.tobler@schweiz.org>
3361
3362         * aclocal.m4: Regenerate with aclocal -I .. as written in the
3363         Makefile.am.
3364
3365 2006-10-31  Geoffrey Keating  <geoffk@apple.com>
3366
3367         * src/powerpc/ffi_darwin.c (darwin_adjust_aggregate_sizes): New.
3368         (ffi_prep_cif_machdep): Call darwin_adjust_aggregate_sizes for
3369         Darwin.
3370         * testsuite/libffi.call/nested_struct4.c: Remove Darwin XFAIL.
3371         * testsuite/libffi.call/nested_struct6.c: Remove Darwin XFAIL.
3372
3373 2006-10-10  Paolo Bonzini  <bonzini@gnu.org>
3374             Sandro Tolaini  <tolaini@libero.it>
3375
3376         * configure.ac [i*86-*-darwin*]: Set X86_DARWIN symbol and
3377         conditional.
3378         * configure: Regenerated.
3379         * Makefile.am (nodist_libffi_la_SOURCES) [X86_DARWIN]: New case.
3380         (EXTRA_DIST): Add src/x86/darwin.S.
3381         * Makefile.in: Regenerated.
3382         * include/Makefile.in: Regenerated.
3383         * testsuite/Makefile.in: Regenerated.
3384
3385         * src/x86/ffi.c (ffi_prep_cif_machdep) [X86_DARWIN]: Treat like
3386         X86_WIN32, and additionally align stack to 16 bytes.
3387         * src/x86/darwin.S: New, based on sysv.S.
3388         * src/prep_cif.c (ffi_prep_cif) [X86_DARWIN]: Align > 8-byte structs.
3389
3390 2006-09-12  David Daney  <ddaney@avtrex.com>
3391
3392         PR libffi/23935
3393         * include/Makefile.am: Install both ffi.h and ffitarget.h in
3394         $(libdir)/gcc/$(target_alias)/$(gcc_version)/include.
3395         * aclocal.m4: Regenerated for automake 1.9.6.
3396         * Makefile.in: Regenerated.
3397         * include/Makefile.in: Regenerated.
3398         * testsuite/Makefile.in: Regenerated.
3399
3400 2006-08-17  Andreas Tobler  <a.tobler@schweiz.ch>
3401
3402         * include/ffi_common.h (struct): Revert accidental commit.
3403
3404 2006-08-15  Andreas Tobler  <a.tobler@schweiz.ch>
3405
3406         * include/ffi_common.h: Remove lint directives.
3407         * include/ffi.h.in: Likewise.
3408
3409 2006-07-25  Torsten Schoenfeld  <kaffeetisch@gmx.de>
3410
3411         * include/ffi.h.in (ffi_type_ulong, ffi_type_slong): Define correctly
3412         for 32-bit architectures.
3413         * testsuite/libffi.call/return_ul.c: New test case.
3414
3415 2006-07-19  David Daney  <ddaney@avtrex.com>
3416
3417         * testsuite/libffi.call/closure_fn6.c: Remove xfail for mips,
3418         xfail remains for mips64.
3419
3420 2006-05-23  Carlos O'Donell  <carlos@codesourcery.com>
3421
3422         * Makefile.am: Add install-html target. Add install-html to .PHONY
3423         * Makefile.in: Regenerate.
3424         * aclocal.m4: Regenerate.
3425         * include/Makefile.in: Regenerate.
3426         * testsuite/Makefile.in: Regenerate.
3427
3428 2006-05-18  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3429
3430         * pa/ffi.c (ffi_prep_args_pa32): Load floating point arguments from
3431         stack slot.
3432
3433 2006-04-22  Andreas Tobler  <a.tobler@schweiz.ch>
3434
3435         * README: Remove notice about 'Crazy Comments'.
3436         * src/debug.c: Remove lint directives. Cleanup white spaces.
3437         * src/java_raw_api.c: Likewise.
3438         * src/prep_cif.c: Likewise.
3439         * src/raw_api.c: Likewise.
3440         * src/ffitest.c: Delete. No longer needed, all test cases migrated
3441         to the testsuite.
3442         * src/arm/ffi.c: Remove lint directives.
3443         * src/m32r/ffi.c: Likewise.
3444         * src/pa/ffi.c: Likewise.
3445         * src/powerpc/ffi.c: Likewise.
3446         * src/powerpc/ffi_darwin.c: Likewise.
3447         * src/sh/ffi.c: Likewise.
3448         * src/sh64/ffi.c: Likewise.
3449         * src/x86/ffi.c: Likewise.
3450         * testsuite/libffi.call/float2.c: Likewise.
3451         * testsuite/libffi.call/promotion.c: Likewise.
3452         * testsuite/libffi.call/struct1.c: Likewise.
3453
3454 2006-04-13  Andreas Tobler  <a.tobler@schweiz.ch>
3455
3456         * src/pa/hpux32.S: Correct unwind offset calculation for
3457         ffi_closure_pa32.
3458         * src/pa/linux.S: Likewise.
3459
3460 2006-04-12  James E Wilson  <wilson@specifix.com>
3461
3462         PR libgcj/26483
3463         * src/ia64/ffi.c (stf_spill, ldf_fill): Rewrite as macros.
3464         (hfa_type_load): Call stf_spill.
3465         (hfa_type_store): Call ldf_fill.
3466         (ffi_call): Adjust calls to above routines.  Add local temps for
3467         macro result.
3468
3469 2006-04-10  Matthias Klose  <doko@debian.org>
3470
3471         * testsuite/lib/libffi-dg.exp (libffi-init): Recognize multilib
3472         directory names containing underscores.
3473
3474 2006-04-07  James E Wilson  <wilson@specifix.com>
3475
3476         * testsuite/libffi.call/float4.c: New testcase.
3477
3478 2006-04-05  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
3479             Andreas Tobler  <a.tobler@schweiz.ch>
3480
3481         * Makefile.am: Add PA_HPUX port.
3482         * Makefile.in: Regenerate.
3483         * include/Makefile.in: Likewise.
3484         * testsuite/Makefile.in: Likewise.
3485         * configure.ac: Add PA_HPUX rules.
3486         * configure: Regenerate.
3487         * src/pa/ffitarget.h: Rename linux target to PA_LINUX.
3488         Add PA_HPUX and PA64_HPUX.
3489         Rename FFI_LINUX ABI to FFI_PA32 ABI.
3490         (FFI_TRAMPOLINE_SIZE): Define for 32-bit HP-UX targets.
3491         (FFI_TYPE_SMALL_STRUCT2): Define.
3492         (FFI_TYPE_SMALL_STRUCT4): Likewise.
3493         (FFI_TYPE_SMALL_STRUCT8): Likewise.
3494         (FFI_TYPE_SMALL_STRUCT3): Redefine.
3495         (FFI_TYPE_SMALL_STRUCT5): Likewise.
3496         (FFI_TYPE_SMALL_STRUCT6): Likewise.
3497         (FFI_TYPE_SMALL_STRUCT7): Likewise.
3498         * src/pa/ffi.c (ROUND_DOWN): Delete.
3499         (fldw, fstw, fldd, fstd): Use '__asm__'.
3500         (ffi_struct_type): Add support for FFI_TYPE_SMALL_STRUCT2,
3501         FFI_TYPE_SMALL_STRUCT4 and FFI_TYPE_SMALL_STRUCT8.
3502         (ffi_prep_args_LINUX): Rename to ffi_prep_args_pa32. Update comment.
3503         Simplify incrementing of stack slot variable. Change type of local
3504         'n' to unsigned int.
3505         (ffi_size_stack_LINUX): Rename to ffi_size_stack_pa32. Handle long
3506         double on PA_HPUX.
3507         (ffi_prep_cif_machdep): Likewise.
3508         (ffi_call): Likewise.
3509         (ffi_closure_inner_LINUX): Rename to ffi_closure_inner_pa32. Change
3510         return type to ffi_status. Simplify incrementing of stack slot
3511         variable. Only copy floating point argument registers when PA_LINUX
3512         is true. Reformat debug statement.
3513         Add support for FFI_TYPE_SMALL_STRUCT2, FFI_TYPE_SMALL_STRUCT4 and
3514         FFI_TYPE_SMALL_STRUCT8.
3515         (ffi_closure_LINUX): Rename to ffi_closure_pa32. Add 'extern' to
3516         declaration.
3517         (ffi_prep_closure): Make linux trampoline conditional on PA_LINUX.
3518         Add nops to cache flush.  Add trampoline for PA_HPUX.
3519         * src/pa/hpux32.S: New file.
3520         * src/pa/linux.S (ffi_call_LINUX): Rename to ffi_call_pa32. Rename
3521         ffi_prep_args_LINUX to ffi_prep_args_pa32.
3522         Localize labels. Add support for 2, 4 and 8-byte small structs. Handle
3523         unaligned destinations in 3, 5, 6 and 7-byte small structs. Order
3524         argument type checks so that common argument types appear first.
3525         (ffi_closure_LINUX): Rename to ffi_closure_pa32. Rename
3526         ffi_closure_inner_LINUX to ffi_closure_inner_pa32.
3527
3528 2006-03-24  Alan Modra  <amodra@bigpond.net.au>
3529
3530         * src/powerpc/ffitarget.h (enum ffi_abi): Add FFI_LINUX.  Default
3531         for 32-bit using IBM extended double format.  Fix FFI_LAST_ABI.
3532         * src/powerpc/ffi.c (ffi_prep_args_SYSV): Handle linux variant of
3533         FFI_TYPE_LONGDOUBLE.
3534         (ffi_prep_args64): Assert using IBM extended double.
3535         (ffi_prep_cif_machdep): Don't munge FFI_TYPE_LONGDOUBLE type.
3536         Handle FFI_LINUX FFI_TYPE_LONGDOUBLE return and args.
3537         (ffi_call): Handle FFI_LINUX.
3538         (ffi_closure_helper_SYSV): Non FFI_LINUX long double return needs
3539         gpr3 return pointer as for struct return.  Handle FFI_LINUX
3540         FFI_TYPE_LONGDOUBLE return and args.  Don't increment "nf"
3541         unnecessarily.
3542         * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Load both f1 and f2
3543         for FFI_TYPE_LONGDOUBLE.  Move epilogue insns into case table.
3544         Don't use r6 as pointer to results, instead use sp offset.  Don't
3545         make a special call to load lr with case table address, instead
3546         use offset from previous call.
3547         * src/powerpc/sysv.S (ffi_call_SYSV): Save long double return.
3548         * src/powerpc/linux64.S (ffi_call_LINUX64): Simplify long double
3549         return.
3550
3551 2006-03-15  Kaz Kojima  <kkojima@gcc.gnu.org>
3552
3553         * src/sh64/ffi.c (ffi_prep_cif_machdep): Handle float arguments
3554         passed with FP registers correctly.
3555         (ffi_closure_helper_SYSV): Likewise.
3556         * src/sh64/sysv.S: Likewise.
3557
3558 2006-03-01  Andreas Tobler  <a.tobler@schweiz.ch>
3559
3560         * testsuite/libffi.special/unwindtest.cc (closure_test_fn): Mark cif,
3561         args and userdata unused.
3562         (closure_test_fn1): Mark cif and userdata unused.
3563         (main): Remove unused res.
3564
3565 2006-02-28  Andreas Tobler  <a.tobler@schweiz.ch>
3566
3567         * testsuite/libffi.call/call.exp: Adjust FSF address. Add test runs for
3568         -O2, -O3, -Os and the warning flags -W -Wall.
3569         * testsuite/libffi.special/special.exp: Likewise.
3570         * testsuite/libffi.call/ffitest.h: Add an __UNUSED__ macro to mark
3571         unused parameter unused for gcc or else do nothing.
3572         * testsuite/libffi.special/ffitestcxx.h: Likewise.
3573         * testsuite/libffi.call/cls_12byte.c (cls_struct_12byte_gn): Mark cif
3574         and userdata unused.
3575         * testsuite/libffi.call/cls_16byte.c (cls_struct_16byte_gn): Likewise.
3576         * testsuite/libffi.call/cls_18byte.c (cls_struct_18byte_gn): Likewise.
3577         * testsuite/libffi.call/cls_19byte.c (cls_struct_19byte_gn): Likewise.
3578         * testsuite/libffi.call/cls_1_1byte.c (cls_struct_1_1byte_gn): Likewise.
3579         * testsuite/libffi.call/cls_20byte.c (cls_struct_20byte_gn): Likewise.
3580         * testsuite/libffi.call/cls_20byte1.c (cls_struct_20byte_gn): Likewise.
3581         * testsuite/libffi.call/cls_24byte.c (cls_struct_24byte_gn): Likewise.
3582         * testsuite/libffi.call/cls_2byte.c (cls_struct_2byte_gn): Likewise.
3583         * testsuite/libffi.call/cls_3_1byte.c (cls_struct_3_1byte_gn): Likewise.
3584         * testsuite/libffi.call/cls_3byte1.c (cls_struct_3byte_gn): Likewise.
3585         * testsuite/libffi.call/cls_3byte2.c (cls_struct_3byte_gn1): Likewise.
3586         * testsuite/libffi.call/cls_4_1byte.c (cls_struct_4_1byte_gn): Likewise.
3587         * testsuite/libffi.call/cls_4byte.c (cls_struct_4byte_gn): Likewise.
3588         * testsuite/libffi.call/cls_5_1_byte.c (cls_struct_5byte_gn): Likewise.
3589         * testsuite/libffi.call/cls_5byte.c (cls_struct_5byte_gn): Likewise.
3590         * testsuite/libffi.call/cls_64byte.c (cls_struct_64byte_gn): Likewise.
3591         * testsuite/libffi.call/cls_6_1_byte.c (cls_struct_6byte_gn): Likewise.
3592         * testsuite/libffi.call/cls_6byte.c (cls_struct_6byte_gn): Likewise.
3593         * testsuite/libffi.call/cls_7_1_byte.c (cls_struct_7byte_gn): Likewise.
3594         * testsuite/libffi.call/cls_7byte.c (cls_struct_7byte_gn): Likewise.
3595         * testsuite/libffi.call/cls_8byte.c (cls_struct_8byte_gn): Likewise.
3596         * testsuite/libffi.call/cls_9byte1.c (cls_struct_9byte_gn): Likewise.
3597         * testsuite/libffi.call/cls_9byte2.c (cls_struct_9byte_gn): Likewise.
3598         * testsuite/libffi.call/cls_align_double.c (cls_struct_align_gn):
3599         Likewise.
3600         * testsuite/libffi.call/cls_align_float.c (cls_struct_align_gn):
3601         Likewise.
3602         * testsuite/libffi.call/cls_align_longdouble.c (cls_struct_align_gn):
3603         Likewise.
3604         * testsuite/libffi.call/cls_align_pointer.c (cls_struct_align_fn): Cast
3605         void* to avoid compiler warning.
3606         (main): Likewise.
3607         (cls_struct_align_gn): Mark cif and userdata unused.
3608         * testsuite/libffi.call/cls_align_sint16.c (cls_struct_align_gn):
3609         Likewise.
3610         * testsuite/libffi.call/cls_align_sint32.c (cls_struct_align_gn):
3611         Likewise.
3612         * testsuite/libffi.call/cls_align_sint64.c (cls_struct_align_gn):
3613         Likewise.
3614         * testsuite/libffi.call/cls_align_uint16.c (cls_struct_align_gn):
3615         Likewise.
3616         * testsuite/libffi.call/cls_align_uint32.c (cls_struct_align_gn):
3617         Likewise.
3618         * testsuite/libffi.call/cls_double.c (cls_ret_double_fn): Likewise.
3619         * testsuite/libffi.call/cls_float.c (cls_ret_float_fn): Likewise.
3620         * testsuite/libffi.call/cls_multi_schar.c (test_func_gn): Mark cif and
3621         data unused.
3622         (main): Cast res_call to silence gcc.
3623         * testsuite/libffi.call/cls_multi_sshort.c (test_func_gn): Mark cif and
3624         data unused.
3625         (main): Cast res_call to silence gcc.
3626         * testsuite/libffi.call/cls_multi_sshortchar.c (test_func_gn): Mark cif
3627         and data unused.
3628         (main): Cast res_call to silence gcc.
3629         * testsuite/libffi.call/cls_multi_uchar.c (test_func_gn): Mark cif and
3630         data unused.
3631         (main): Cast res_call to silence gcc.
3632         * testsuite/libffi.call/cls_multi_ushort.c (test_func_gn): Mark cif and
3633         data unused.
3634         (main): Cast res_call to silence gcc.
3635         * testsuite/libffi.call/cls_multi_ushortchar.c (test_func_gn): Mark cif
3636         and data unused.
3637         (main): Cast res_call to silence gcc.
3638         * testsuite/libffi.call/cls_schar.c (cls_ret_schar_fn): Mark cif and
3639         userdata unused.
3640         (cls_ret_schar_fn): Cast printf parameter to silence gcc.
3641         * testsuite/libffi.call/cls_sint.c (cls_ret_sint_fn): Mark cif and
3642         userdata unused.
3643         (cls_ret_sint_fn): Cast printf parameter to silence gcc.
3644         * testsuite/libffi.call/cls_sshort.c (cls_ret_sshort_fn): Mark cif and
3645         userdata unused.
3646         (cls_ret_sshort_fn): Cast printf parameter to silence gcc.
3647         * testsuite/libffi.call/cls_uchar.c (cls_ret_uchar_fn):  Mark cif and
3648         userdata unused.
3649         (cls_ret_uchar_fn): Cast printf parameter to silence gcc.
3650         * testsuite/libffi.call/cls_uint.c (cls_ret_uint_fn): Mark cif and
3651         userdata unused.
3652         (cls_ret_uint_fn): Cast printf parameter to silence gcc.
3653         * testsuite/libffi.call/cls_ulonglong.c (cls_ret_ulonglong_fn): Mark cif
3654         and userdata unused.
3655         * testsuite/libffi.call/cls_ushort.c (cls_ret_ushort_fn): Mark cif and
3656         userdata unused.
3657         (cls_ret_ushort_fn): Cast printf parameter to silence gcc.
3658         * testsuite/libffi.call/float.c (floating): Remove unused parameter e.
3659         * testsuite/libffi.call/float1.c (main): Remove unused variable i.
3660         Cleanup white spaces.
3661         * testsuite/libffi.call/negint.c (checking): Remove unused variable i.
3662         * testsuite/libffi.call/nested_struct.c (cls_struct_combined_gn): Mark
3663         cif and userdata unused.
3664         * testsuite/libffi.call/nested_struct1.c (cls_struct_combined_gn):
3665         Likewise.
3666         * testsuite/libffi.call/nested_struct10.c (B_gn): Likewise.
3667         * testsuite/libffi.call/nested_struct2.c (B_fn): Adjust printf
3668         formatters to silence gcc.
3669         (B_gn): Mark cif and userdata unused.
3670         * testsuite/libffi.call/nested_struct3.c (B_gn): Mark cif and userdata
3671         unused.
3672         * testsuite/libffi.call/nested_struct4.c: Mention related PR.
3673         (B_gn): Mark cif and userdata unused.
3674         * testsuite/libffi.call/nested_struct5.c (B_gn): Mark cif and userdata
3675         unused.
3676         * testsuite/libffi.call/nested_struct6.c: Mention related PR.
3677         (B_gn): Mark cif and userdata unused.
3678         * testsuite/libffi.call/nested_struct7.c (B_gn): Mark cif and userdata
3679         unused.
3680         * testsuite/libffi.call/nested_struct8.c (B_gn): Likewise.
3681         * testsuite/libffi.call/nested_struct9.c (B_gn): Likewise.
3682         * testsuite/libffi.call/problem1.c (stub): Likewise.
3683         * testsuite/libffi.call/pyobjc-tc.c (main): Cast the result to silence
3684         gcc.
3685         * testsuite/libffi.call/return_fl2.c (return_fl): Add the note mentioned
3686         in the last commit for this test case in the test case itself.
3687         * testsuite/libffi.call/closure_fn0.c (closure_test_fn0): Mark cif as
3688         unused.
3689         * testsuite/libffi.call/closure_fn1.c (closure_test_fn1): Likewise.
3690         * testsuite/libffi.call/closure_fn2.c (closure_test_fn2): Likewise.
3691         * testsuite/libffi.call/closure_fn3.c (closure_test_fn3): Likewise.
3692         * testsuite/libffi.call/closure_fn4.c (closure_test_fn0): Likewise.
3693         * testsuite/libffi.call/closure_fn5.c (closure_test_fn5): Likewise.
3694         * testsuite/libffi.call/closure_fn6.c (closure_test_fn0): Likewise.
3695
3696 2006-02-22  Kaz Kojima  <kkojima@gcc.gnu.org>
3697
3698         * src/sh/sysv.S: Fix register numbers in the FDE for
3699         ffi_closure_SYSV.
3700
3701 2006-02-20  Andreas Tobler  <a.tobler@schweiz.ch>
3702
3703         * testsuite/libffi.call/return_fl2.c (return_fl): Remove static
3704         declaration to avoid a false negative on ix86. See PR323.
3705
3706 2006-02-18  Kaz Kojima  <kkojima@gcc.gnu.org>
3707
3708         * src/sh/ffi.c (ffi_closure_helper_SYSV): Remove unused variable
3709         and cast integer to void * if needed.  Update the pointer to
3710         the FP register saved area correctly.
3711
3712 2006-02-17  Andreas Tobler  <a.tobler@schweiz.ch>
3713
3714         * testsuite/libffi.call/nested_struct6.c: XFAIL this test until PR25630
3715         is fixed.
3716         * testsuite/libffi.call/nested_struct4.c: Likewise.
3717
3718 2006-02-16  Andreas Tobler  <a.tobler@schweiz.ch>
3719
3720         * testsuite/libffi.call/return_dbl.c: New test case.
3721         * testsuite/libffi.call/return_dbl1.c: Likewise.
3722         * testsuite/libffi.call/return_dbl2.c: Likewise.
3723         * testsuite/libffi.call/return_fl.c: Likewise.
3724         * testsuite/libffi.call/return_fl1.c: Likewise.
3725         * testsuite/libffi.call/return_fl2.c: Likewise.
3726         * testsuite/libffi.call/return_fl3.c: Likewise.
3727         * testsuite/libffi.call/closure_fn6.c: Likewise.
3728
3729         * testsuite/libffi.call/nested_struct2.c: Remove ffi_type_mylong
3730         definition.
3731         * testsuite/libffi.call/ffitest.h: Add ffi_type_mylong definition
3732         here to be used by other test cases too.
3733
3734         * testsuite/libffi.call/nested_struct10.c: New test case.
3735         * testsuite/libffi.call/nested_struct9.c: Likewise.
3736         * testsuite/libffi.call/nested_struct8.c: Likewise.
3737         * testsuite/libffi.call/nested_struct7.c: Likewise.
3738         * testsuite/libffi.call/nested_struct6.c: Likewise.
3739         * testsuite/libffi.call/nested_struct5.c: Likewise.
3740         * testsuite/libffi.call/nested_struct4.c: Likewise.
3741
3742 2006-01-21  Andreas Tobler  <a.tobler@schweiz.ch>
3743
3744         * configure.ac: Enable libffi for sparc64-*-freebsd*.
3745         * configure: Rebuilt.
3746
3747 2006-01-18  Jakub Jelinek  <jakub@redhat.com>
3748
3749         * src/powerpc/sysv.S (smst_two_register): Don't call __ashldi3,
3750         instead do the shifting inline.
3751         * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Don't compute %r5
3752         shift count unconditionally.  Simplify load sequences for 1, 2, 3, 4
3753         and 8 byte structs, for the remaining struct sizes don't call
3754         __lshrdi3, instead do the shifting inline.
3755
3756 2005-12-07  Thiemo Seufer  <ths@networkno.de>
3757
3758         * src/mips/ffitarget.h: Remove obsolete sgidefs.h include. Add
3759         missing parentheses.
3760         * src/mips/o32.S (ffi_call_O32): Code formatting. Define
3761         and use A3_OFF, FP_OFF, RA_OFF. Micro-optimizations.
3762         (ffi_closure_O32): Likewise, but with newly defined A3_OFF2,
3763         A2_OFF2, A1_OFF2, A0_OFF2, RA_OFF2, FP_OFF2, S0_OFF2, GP_OFF2,
3764         V1_OFF2, V0_OFF2, FA_1_1_OFF2, FA_1_0_OFF2, FA_0_1_OFF2,
3765         FA_0_0_OFF2.
3766         * src/mips/ffi.c (ffi_prep_args): Code formatting. Fix
3767         endianness bugs.
3768         (ffi_prep_closure): Improve trampoline instruction scheduling.
3769         (ffi_closure_mips_inner_O32): Fix endianness bugs.
3770
3771 2005-12-03  Alan Modra  <amodra@bigpond.net.au>
3772
3773         * src/powerpc/ffi.c: Formatting.
3774         (ffi_prep_args_SYSV): Avoid possible aliasing problems by using unions.
3775         (ffi_prep_args64): Likewise.
3776
3777 2005-09-30  Geoffrey Keating  <geoffk@apple.com>
3778
3779         * testsuite/lib/libffi-dg.exp (libffi_target_compile): For
3780         darwin, use -shared-libgcc not -lgcc_s, and explain why.
3781
3782 2005-09-26  Tom Tromey  <tromey@redhat.com>
3783
3784         * testsuite/libffi.call/float1.c (value_type): New typedef.
3785         (CANARY): New define.
3786         (main): Check for result buffer overflow.
3787         * src/powerpc/linux64.S: Handle linux64 long double returns.
3788         * src/powerpc/ffi.c (FLAG_RETURNS_128BITS): New constant.
3789         (ffi_prep_cif_machdep): Handle linux64 long double returns.
3790
3791 2005-08-25  Alan Modra  <amodra@bigpond.net.au>
3792
3793         PR target/23404
3794         * src/powerpc/ffi.c (ffi_prep_args_SYSV): Correct placement of stack
3795         homed fp args.
3796         (ffi_status ffi_prep_cif_machdep): Correct stack sizing for same.
3797
3798 2005-08-11  Jakub Jelinek  <jakub@redhat.com>
3799
3800         * configure.ac (HAVE_HIDDEN_VISIBILITY_ATTRIBUTE): New test.
3801         (AH_BOTTOM): Add FFI_HIDDEN definition.
3802         * configure: Rebuilt.
3803         * fficonfig.h.in: Rebuilt.
3804         * src/powerpc/ffi.c (hidden): Remove.
3805         (ffi_closure_LINUX64, ffi_prep_args64, ffi_call_LINUX64,
3806         ffi_closure_helper_LINUX64): Use FFI_HIDDEN instead of hidden.
3807         * src/powerpc/linux64_closure.S (ffi_closure_LINUX64,
3808         .ffi_closure_LINUX64): Use FFI_HIDDEN instead of .hidden.
3809         * src/x86/ffi.c (ffi_closure_SYSV, ffi_closure_raw_SYSV): Remove,
3810         add FFI_HIDDEN to its prototype.
3811         (ffi_closure_SYSV_inner): New.
3812         * src/x86/sysv.S (ffi_closure_SYSV, ffi_closure_raw_SYSV): New.
3813         * src/x86/win32.S (ffi_closure_SYSV, ffi_closure_raw_SYSV): New.
3814
3815 2005-08-10  Alfred M. Szmidt  <ams@gnu.org>
3816
3817         PR libffi/21819:
3818         * configure: Rebuilt.
3819         * configure.ac: Handle i*86-*-gnu*.
3820
3821 2005-08-09  Jakub Jelinek  <jakub@redhat.com>
3822
3823         * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Use
3824         DW_CFA_offset_extended_sf rather than
3825         DW_CFA_GNU_negative_offset_extended.
3826         * src/powerpc/sysv.S (ffi_call_SYSV): Likewise.
3827
3828 2005-07-22  SUGIOKA Toshinobu  <sugioka@itonet.co.jp>
3829
3830         * src/sh/sysv.S (ffi_call_SYSV): Stop argument popping correctly
3831         on sh3.
3832         (ffi_closure_SYSV): Change the stack layout for sh3 struct argument.
3833         * src/sh/ffi.c (ffi_prep_args): Fix sh3 argument copy, when it is
3834         partially on register.
3835         (ffi_closure_helper_SYSV): Likewise.
3836         (ffi_prep_cif_machdep): Don't set too many cif->flags.
3837
3838 2005-07-20  Kaz Kojima  <kkojima@gcc.gnu.org>
3839
3840         * src/sh/ffi.c (ffi_call): Handle small structures correctly.
3841         Remove empty line.
3842         * src/sh64/ffi.c (simple_type): Remove.
3843         (return_type): Handle small structures correctly.
3844         (ffi_prep_args): Likewise.
3845         (ffi_call): Likewise.
3846         (ffi_closure_helper_SYSV): Likewise.
3847         * src/sh64/sysv.S (ffi_call_SYSV): Handle 1, 2 and 4-byte return.
3848         Emit position independent code if PIC and remove wrong datalabel
3849         prefixes from EH data.
3850
3851 2005-07-19  Andreas Tobler  <a.tobler@schweiz.ch>
3852
3853         * Makefile.am (nodist_libffi_la_SOURCES): Add POWERPC_FREEBSD.
3854         * Makefile.in: Regenerate.
3855         * include/Makefile.in: Likewise.
3856         * testsuite/Makefile.in: Likewise.
3857         * configure.ac: Add POWERPC_FREEBSD rules.
3858         * configure: Regenerate.
3859         * src/powerpc/ffitarget.h: Add POWERPC_FREEBSD rules.
3860         (FFI_SYSV_TYPE_SMALL_STRUCT): Define.
3861         * src/powerpc/ffi.c: Add flags to handle small structure returns
3862         in ffi_call_SYSV.
3863         (ffi_prep_cif_machdep): Handle small structures for SYSV 4 ABI.
3864         Aka FFI_SYSV.
3865         (ffi_closure_helper_SYSV): Likewise.
3866         * src/powerpc/ppc_closure.S: Add return types for small structures.
3867         * src/powerpc/sysv.S: Add bits to handle small structures for
3868         final SYSV 4 ABI.
3869
3870 2005-07-10  Andreas Tobler  <a.tobler@schweiz.ch>
3871
3872         * testsuite/libffi.call/cls_5_1_byte.c: New test file.
3873         * testsuite/libffi.call/cls_6_1_byte.c: Likewise.
3874         * testsuite/libffi.call/cls_7_1_byte.c: Likewise.
3875
3876 2005-07-05  Randolph Chung  <tausq@debian.org>
3877
3878         * src/pa/ffi.c (ffi_struct_type): Rename FFI_TYPE_SMALL_STRUCT1
3879         as FFI_TYPE_SMALL_STRUCT3.  Break out handling for 5-7 byte
3880         structures.  Kill compilation warnings.
3881         (ffi_closure_inner_LINUX): Print return values as hex in debug
3882         message.  Rename FFI_TYPE_SMALL_STRUCT1 as FFI_TYPE_SMALL_STRUCT3.
3883         Properly handle 5-7 byte structure returns.
3884         * src/pa/ffitarget.h (FFI_TYPE_SMALL_STRUCT1)
3885         (FFI_TYPE_SMALL_STRUCT2): Remove.
3886         (FFI_TYPE_SMALL_STRUCT3, FFI_TYPE_SMALL_STRUCT5)
3887         (FFI_TYPE_SMALL_STRUCT6, FFI_TYPE_SMALL_STRUCT7): Define.
3888         * src/pa/linux.S: Mark source file as using PA1.1 assembly.
3889         (checksmst1, checksmst2): Remove.
3890         (checksmst3): Optimize handling of 3-byte struct returns.
3891         (checksmst567): Properly handle 5-7 byte struct returns.
3892
3893 2005-06-15  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3894
3895         PR libgcj/21943
3896         * src/mips/n32.S: Enforce PIC code.
3897         * src/mips/o32.S: Likewise.
3898
3899 2005-06-15  Rainer Orth  <ro@TechFak.Uni-Bielefeld.DE>
3900
3901         * configure.ac: Treat i*86-*-solaris2.10 and up as X86_64.
3902         * configure: Regenerate.
3903
3904 2005-06-01  Alan Modra  <amodra@bigpond.net.au>
3905
3906         * src/powerpc/ppc_closure.S (ffi_closure_SYSV): Don't use JUMPTARGET
3907         to call ffi_closure_helper_SYSV.  Append @local instead.
3908         * src/powerpc/sysv.S (ffi_call_SYSV): Likewise for ffi_prep_args_SYSV.
3909
3910 2005-05-17  Kelley Cook  <kcook@gcc.gnu.org>
3911
3912         * configure.ac: Use AC_C_BIGENDIAN instead of AC_C_BIGENDIAN_CROSS.
3913         Use AC_CHECK_SIZEOF instead of AC_COMPILE_CHECK_SIZEOF.
3914         * Makefile.am (ACLOCAL_AMFLAGS): Remove -I ../config.
3915         * aclocal.m4, configure, fficonfig.h.in, Makefile.in,
3916         include/Makefile.in, testsuite/Makefile.in: Regenerate.
3917
3918 2005-05-09  Mike Stump  <mrs@apple.com>
3919
3920         * configure: Regenerate.
3921
3922 2005-05-08  Richard Henderson  <rth@redhat.com>
3923
3924         PR libffi/21285
3925         * src/alpha/osf.S: Update unwind into to match code.
3926
3927 2005-05-04  Andreas Degert <ad@papyrus-gmbh.de>
3928             Richard Henderson  <rth@redhat.com>
3929
3930         * src/x86/ffi64.c (ffi_prep_cif_machdep): Save sse-used flag in
3931         bit 11 of flags.
3932         (ffi_call): Mask return type field.  Pass ssecount to ffi_call_unix64.
3933         (ffi_prep_closure): Set carry bit if sse-used flag set.
3934         * src/x86/unix64.S (ffi_call_unix64): Add ssecount argument.
3935         Only load sse registers if ssecount non-zero.
3936         (ffi_closure_unix64): Only save sse registers if carry set on entry.
3937
3938 2005-04-29  Ralf Corsepius  <ralf.corsepius@rtems.org>
3939
3940         * configure.ac: Add i*86-*-rtems*, sparc*-*-rtems*,
3941         powerpc-*rtems*, arm*-*-rtems*, sh-*-rtems*.
3942         * configure: Regenerate.
3943
3944 2005-04-20  Hans-Peter Nilsson  <hp@axis.com>
3945
3946         * testsuite/lib/libffi-dg.exp (libffi-dg-test-1): In regsub use,
3947         have Tcl8.3-compatible intermediate variable.
3948
3949 2005-04-18  Simon Posnjak <simon.posnjak@siol.net>
3950             Hans-Peter Nilsson  <hp@axis.com>
3951
3952         * Makefile.am: Add CRIS support.
3953         * configure.ac: Likewise.
3954         * Makefile.in, configure, testsuite/Makefile.in,
3955         include/Makefile.in: Regenerate.
3956         * src/cris: New directory.
3957         * src/cris/ffi.c, src/cris/sysv.S, src/cris/ffitarget.h: New files.
3958         * src/prep_cif.c (ffi_prep_cif): Wrap in #ifndef __CRIS__.
3959
3960         * testsuite/lib/libffi-dg.exp (libffi-dg-test-1): Replace \n with
3961         \r?\n in output tests.
3962
3963 2005-04-12  Mike Stump  <mrs@apple.com>
3964
3965         * configure: Regenerate.
3966
3967 2005-03-30  Hans Boehm  <Hans.Boehm@hp.com>
3968
3969         * src/ia64/ffitarget.h (ffi_arg): Use long long instead of DI.
3970
3971 2005-03-30  Steve Ellcey  <sje@cup.hp.com>
3972
3973         * src/ia64/ffitarget.h (ffi_arg) ADD DI attribute.
3974         (ffi_sarg) Ditto.
3975         * src/ia64/unix.S (ffi_closure_unix): Extend gp
3976         to 64 bits in ILP32 mode.
3977         Load 64 bits even for short data.
3978
3979 2005-03-23  Mike Stump  <mrs@apple.com>
3980
3981         * src/powerpc/darwin.S: Update for -m64 multilib.
3982         * src/powerpc/darwin_closure.S: Likewise.
3983
3984 2005-03-21  Zack Weinberg  <zack@codesourcery.com>
3985
3986         * configure.ac: Do not invoke TL_AC_GCC_VERSION.
3987         Do not set tool_include_dir.
3988         * aclocal.m4, configure, Makefile.in, testsuite/Makefile.in:
3989         Regenerate.
3990         * include/Makefile.am: Set gcc_version and toollibffidir.
3991         * include/Makefile.in: Regenerate.
3992
3993 2005-02-22  Andrew Haley  <aph@redhat.com>
3994
3995         * src/powerpc/ffi.c (ffi_prep_cif_machdep): Bump alignment to
3996         odd-numbered register pairs for 64-bit integer types.
3997
3998 2005-02-23  Andreas Tobler  <a.tobler@schweiz.ch>
3999
4000         PR libffi/20104
4001         * testsuite/libffi.call/return_ll1.c: New test case.
4002
4003 2005-02-11  Janis Johnson  <janis187@us.ibm.com>
4004
4005         * testsuite/libffi.call/cls_align_longdouble.c: Remove dg-options.
4006         * testsuite/libffi.call/float.c: Ditto.
4007         * testsuite/libffi.call/float2.c: Ditto.
4008         * testsuite/libffi.call/float3.c: Ditto.
4009
4010 2005-02-08  Andreas Tobler  <a.tobler@schweiz.ch>
4011
4012         * src/frv/ffitarget.h: Remove PPC stuff which does not belong to frv.
4013
4014 2005-01-12  Eric Botcazou  <ebotcazou@libertysurf.fr>
4015
4016         * testsuite/libffi.special/special.exp (cxx_options): Add
4017         -shared-libgcc.
4018
4019 2004-12-31  Richard Henderson  <rth@redhat.com>
4020
4021         * src/types.c (FFI_AGGREGATE_TYPEDEF): Remove.
4022         (FFI_TYPEDEF): Rename from FFI_INTEGRAL_TYPEDEF.  Replace size and
4023         offset parameters with a type parameter; deduce size and structure
4024         alignment.  Update all users.
4025
4026 2004-12-31  Richard Henderson  <rth@redhat.com>
4027
4028         * src/types.c (FFI_TYPE_POINTER): Define with sizeof.
4029         (FFI_TYPE_LONGDOUBLE): Fix for ia64.
4030         * src/ia64/ffitarget.h (struct ffi_ia64_trampoline_struct): Move
4031         into ffi_prep_closure.
4032         * src/ia64/ia64_flags.h, src/ia64/ffi.c, src/ia64/unix.S: Rewrite
4033         from scratch.
4034
4035 2004-12-27  Richard Henderson  <rth@redhat.com>
4036
4037         * src/x86/unix64.S: Fix typo in unwind info.
4038
4039 2004-12-25  Richard Henderson  <rth@redhat.com>
4040
4041         * src/x86/ffi64.c (struct register_args): Rename from stackLayout.
4042         (enum x86_64_reg_class): Add X86_64_COMPLEX_X87_CLASS.
4043         (merge_classes): Check for it.
4044         (SSE_CLASS_P): New.
4045         (classify_argument): Pass byte_offset by value; perform all updates
4046         inside struct case.
4047         (examine_argument): Add classes argument; handle
4048         X86_64_COMPLEX_X87_CLASS.
4049         (ffi_prep_args): Merge into ...
4050         (ffi_call): ... here.  Share stack frame with ffi_call_unix64.
4051         (ffi_prep_cif_machdep): Setup cif->flags for proper structure return.
4052         (ffi_fill_return_value): Remove.
4053         (ffi_prep_closure): Remove dead assert.
4054         (ffi_closure_unix64_inner): Rename from ffi_closure_UNIX64_inner.
4055         Rewrite to use struct register_args instead of va_list.  Create
4056         flags for handling structure returns.
4057         * src/x86/unix64.S: Remove dead strings.
4058         (ffi_call_unix64): Rename from ffi_call_UNIX64.  Rewrite to share
4059         stack frame with ffi_call.  Handle structure returns properly.
4060         (float2sse, floatfloat2sse, double2sse): Remove.
4061         (sse2float, sse2double, sse2floatfloat): Remove.
4062         (ffi_closure_unix64): Rename from ffi_closure_UNIX64.  Rewrite
4063         to handle structure returns properly.
4064
4065 2004-12-08  David Edelsohn  <edelsohn@gnu.org>
4066
4067         * Makefile.am (AM_MAKEFLAGS): Remove duplicate LIBCFLAGS and
4068         PICFLAG.
4069         * Makefile.in: Regenerated.
4070
4071 2004-12-02  Richard Sandiford  <rsandifo@redhat.com>
4072
4073         * configure.ac: Use TL_AC_GCC_VERSION to set gcc_version.
4074         * configure, aclocal.m4, Makefile.in: Regenerate.
4075         * include/Makefile.in, testsuite/Makefile.in: Regenerate.
4076
4077 2004-11-29  Kelley Cook  <kcook@gcc.gnu.org>
4078
4079         * configure: Regenerate for libtool change.
4080
4081 2004-11-25  Kelley Cook  <kcook@gcc.gnu.org>
4082
4083         * configure: Regenerate for libtool reversion.
4084
4085 2004-11-24  Kelley Cook  <kcook@gcc.gnu.org>
4086
4087         * configure: Regenerate for libtool change.
4088
4089 2004-11-23  John David Anglin  <dave.anglin@nrc-cnrc.gc.ca>
4090
4091         * testsuite/lib/libffi-dg.exp: Use new procs in target-libpath.exp.
4092
4093 2004-11-23  Richard Sandiford  <rsandifo@redhat.com>
4094
4095         * src/mips/o32.S (ffi_call_O32, ffi_closure_O32): Use jalr instead
4096         of jal.  Use an absolute encoding for the frame information.
4097
4098 2004-11-23  Kelley Cook  <kcook@gcc.gnu.org>
4099
4100         * Makefile.am: Remove no-dependencies.  Add ACLOCAL_AMFLAGS.
4101         * acinclude.m4: Delete logic for sincludes.
4102         * aclocal.m4, Makefile.in, configure: Regenerate.
4103         * include/Makefile: Likewise.
4104         * testsuite/Makefile: Likewise.
4105
4106 2004-11-22  Eric Botcazou  <ebotcazou@libertysurf.fr>
4107
4108         * src/sparc/ffi.c (ffi_prep_closure): Align doubles and 64-bit integers
4109         on a 8-byte boundary.
4110         * src/sparc/v8.S (ffi_closure_v8): Reserve frame space for arguments.
4111
4112 2004-10-27  Richard Earnshaw  <rearnsha@arm.com>
4113
4114         * src/arm/ffi.c (ffi_prep_cif_machdep): Handle functions that return
4115         long long values.  Round stack allocation to a multiple of 8 bytes
4116         for ATPCS compatibility.
4117         * src/arm/sysv.S (ffi_call_SYSV): Rework to avoid use of APCS register
4118         names.  Handle returning long long types.  Add Thumb and interworking
4119         support.  Improve soft-float code.
4120
4121 2004-10-27  Richard Earnshaw  <rearnsha@arm.com>
4122
4123         * testsuite/lib/libffi-db.exp (load_gcc_lib): New function.
4124         (libffi_exit): New function.
4125         (libffi_init): Build the testglue wrapper if needed.
4126
4127 2004-10-25  Eric Botcazou  <ebotcazou@libertysurf.fr>
4128
4129         PR other/18138
4130         * testsuite/lib/libffi-dg.exp: Accept more than one multilib libgcc.
4131
4132 2004-10-25  Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
4133
4134         * src/m32r/libffitarget.h (FFI_CLOSURES): Set to 0.
4135
4136 2004-10-20  Kaz Kojima  <kkojima@gcc.gnu.org>
4137
4138         * src/sh/sysv.S (ffi_call_SYSV): Don't align for double data.
4139         * testsuite/libffi.call/float3.c: New test case.
4140
4141 2004-10-18  Kaz Kojima  <kkojima@gcc.gnu.org>
4142
4143         * src/sh/ffi.c (ffi_prep_closure): Set T bit in trampoline for
4144         the function returning a structure pointed with R2.
4145         * src/sh/sysv.S (ffi_closure_SYSV): Use R2 as the pointer to
4146         the structure return value if T bit set.  Emit position
4147         independent code and EH data if PIC.
4148
4149 2004-10-13  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>
4150
4151         * Makefile.am: Add m32r support.
4152         * configure.ac: Likewise.
4153         * Makefile.in: Regenerate.
4154         * confiugre: Regenerate.
4155         * src/types.c: Add m32r port to FFI_INTERNAL_TYPEDEF
4156         (uint64, sint64, double, longdouble)
4157         * src/m32r: New directory.
4158         * src/m32r/ffi.c: New file.
4159         * src/m32r/sysv.S: Likewise.
4160         * src/m32r/ffitarget.h: Likewise.
4161
4162 2004-10-02  Kaz Kojima  <kkojima@gcc.gnu.org>
4163
4164         * testsuite/libffi.call/negint.c: New test case.
4165
4166 2004-09-14  H.J. Lu  <hongjiu.lu@intel.com>
4167
4168         PR libgcj/17465
4169         * testsuite/lib/libffi-dg.exp: Don't use global ld_library_path.
4170         Set up LD_LIBRARY_PATH, SHLIB_PATH, LD_LIBRARYN32_PATH,