2018-02-17  Bruno Haible  <bruno@clisp.org>

	Bump shared library version numbers.
	* Makefile.in (LIBFFCALL_VERSION_INFO): Bump to 0:1:0.
	* avcall/Makefile.in (LIBAVCALL_VERSION_INFO): Bump to 1:1:0.
	* trampoline/Makefile.in (LIBTRAMPOLINE_VERSION_INFO): Likewise.
	* callback/Makefile.in (LIBCALLBACK_VERSION_INFO): Likewise.

2018-02-17  Bruno Haible  <bruno@clisp.org>

	Add support for HardenedBSD.
	The fix was done in gnulib today.
	* NEWS: Mention this.

2018-02-17  Bruno Haible  <bruno@clisp.org>

	Add support for Linux/arm with PIE-enabled gcc.
	Reported by Nelson Beebe.
	* vacall/Makefile.devel (vacall-arm-linux.s, vacall-arm-linux-pic.s,
	vacall-armhf-linux.s, vacall-armhf-linux-pic.s): New targets.
	(vacall-arm-macro.S, vacall-armhf-macro.S): Include code for the PIC and
	the non-PIC case.
	* vacall/Makefile.in (SOURCE_FILES): Add vacall-arm*-linux*.s.

2018-02-17  Bruno Haible  <bruno@clisp.org>

	Add support for OpenBSD 6.1 and newer.
	Reported by Nelson Beebe.
	* m4/codeexec.m4 (FFCALL_CODEEXEC_PAX): Also test whether mprotect
	returns with errno=ENOTSUP.
	* NEWS: Mention this.

2018-01-30  Bruno Haible  <bruno@clisp.org>

	Verify support for Minix/i386.
	* PLATFORMS, */PLATFORMS: List this platform.

2018-01-27  Bruno Haible  <bruno@clisp.org>

	Rename some files.
	* INSTALL.windows: Renamed from README.windows.
	* INSTALL.os2: Renamed from README.os2.
	* Makefile.in (SOURCE_FILES): Update.

2018-01-09  Bruno Haible  <bruno@clisp.org>

	Make processing of assembly-language files work with GNU clisp.
	* common/asm-arm.sh: Don't introduce C() macro in .req lines.
	* common/asm-hppa.h (DEF): Don't use token-pasting operator here, since
	the result would not be a valid token.
	* common/asm-hppa64.h (DEF): Likewise.
	* common/asm-i386.h (INSN2SHCL): Omit the cl register only on Solaris.
	All other assemblers support it.
	(P2ALIGN): Use __SVR4, not __sun, to detect Solaris.
	* common/asm-i386.sh: Allow spaces instead of tabs after .type and
	.size. Recognize INSN2SHCL without assuming an 'shcl' macro.

2017-11-28  Bruno Haible  <bruno@clisp.org>

	mips, mipsn32, mips64: Improvement for ELF format.
	* common/asm-mips.h (DECLARE_FUNCTION): Test __ELF__, not __GNU__.

2017-11-25  Bruno Haible  <bruno@clisp.org>

	mips64: Fix crash on some real hardware mips64el (Octeon).
	Reported by Sébastien Villemot <sebastien@debian.org>.
	Reminder: Some real MIPS hardware executes the "branch delay slot"
	after a branch or jump instruction. See
	<https://stackoverflow.com/questions/3807480>
	<https://stackoverflow.com/questions/4115847>
	* trampoline/trampoline.c (alloc_trampoline) [__mips64__]: Store the
	instructions as 32-bit words, so that the instructions come out as
	expected, regardless of the endianness.
	* trampoline/tramp-mips*.s: Update comments.
	* callback/trampoline_r/tramp-mips*.s: Likewise.

2017-10-29  Bruno Haible  <bruno@clisp.org>

	Verify support for Haiku/i386.
	* PLATFORMS, */PLATFORMS: List this platform.

2017-10-22  Bruno Haible  <bruno@clisp.org>

	x86_64-x32: Fix passing of pointers.
	* avcall/avcall-internal.h (__av_start_struct4, __av_ptr): For pointer
	values, use zero-extend instead of cast from 'void*' to '__avword'.
	* vacall/vacall-x86_64.c (vacall_receiver): For pointer values, use
	zero-extend instead of cast from 'void*' to '__vaword'.

2017-10-21  Bruno Haible  <bruno@clisp.org>

	Include libtool fix for Solaris 11.3.
	Reported at <https://savannah.gnu.org/patch/?9467>.
	* Makefile.maint (libtool-imported-files): Download and apply said fix.

2017-10-09  Bruno Haible  <bruno@clisp.org>

	Avoid build failures caused by parallel make.
	Reported by Riccardo G Corsi <riccardogcorsi@gmail.com>.
	* Makefile.in (GNUMAKEFLAGS): New variable.

2017-09-24  Bruno Haible  <bruno@clisp.org>

	Update NEWS.
	* NEWS: Mention the <callback.h> API changes in 2.0.

2017-09-15  Bruno Haible  <bruno@clisp.org>

	tests: Consistency.
	* avcall/tests.c (pointer_tests): Move before the mixed_number_tests.
	(gpargs_boundary_tests): Fix weakness in the f_f17l3L test.

2017-09-12  Bruno Haible  <bruno@clisp.org>

	sparc: Verify support for NetBSD.
	* PLATFORMS, */PLATFORMS: List this platform.

2017-09-11  Bruno Haible  <bruno@clisp.org>

	Bump version number.
	* VERSION: Set to 2.1.
	* NEWS: Open new section for 2.1.

2017-09-10  Bruno Haible  <bruno@clisp.org>

	Install the libraries as shared libraries by default.
	* configure.ac (LT_INIT): Remove option 'disable-shared'.
	* README: Remove outdated text.
	* NEWS: Mention the change.

2017-09-10  Bruno Haible  <bruno@clisp.org>

	Install a library named libffcall.
	* ffcall-version.c: New file.
	* ffcall-version.in.h: Rename double-inclusion guard.
	(ffcall_get_version): New declaration.
	* Makefile.in: Add variables for using libtool.
	(LIBFFCALL_EXPORTED_SYMBOLS_REGEX, LIBFFCALL_VERSION_INFO): New
	variables.
	(all-subdirs, ffcall-version.lo, libffcall.la): New targets.
	(all): Depend on them.
	(install): Install also libffcall.la.
	(installdirs): Create also $(libdir).
	(uninstall): Uninstall also libffcall.la.
	(MOSTLYCLEANDIRS, MOSTLYCLEANFILES): New variables.
	(mostlyclean, clean, distclean, maintainer-clean): Delete these.
	(SOURCE_FILES): Add ffcall-version.c.
	* README: Mention libffcall.{a,so}. Mark libavcall and libcallback as
	deprecated.
	* NEWS: Mention the change.

2017-09-10  Bruno Haible  <bruno@clisp.org>

	Move the backward compatibility code to separate object files.
	* avcall/avcall-compat.c: New file, extracted from
	avcall/avcall-libapi.c.
	* avcall/Makefile.in (SOURCE_FILES): Add it.
	(avcall-compat.lo): New target.
	(OBJECTS): Add it.
	* avcall/avcall-libapi.c (__builtin_avcall): Remove function.
	* callback/callback-compat.c: New file, extracted from
	callback/callback-libapi.c.
	* callback/Makefile.in (SOURCE_FILES): Add it.
	(callback-compat.lo): New target.
	(libcallback.la): Include it.
	* callback/callback-libapi.c (trampoline_r_data0): Remove function.

2017-09-10  Bruno Haible  <bruno@clisp.org>

	vacall: Fix build failure with gcc configured with --enable-default-pie.
	Works around a GCC bug, reported at
	<https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81653>.
	* configure.ac (WORKAROUND_BUG_81653): New variable.
	* vacall/Makefile.in (vacall-sparc.@OBJEXT@, vacall-sparc.s): Use it.

2017-09-10  Bruno Haible  <bruno@clisp.org>

	Fix build failure "error: narrowing conversion" with g++ on arm.
	* testcases.c (C5): Cast -1 to 'char' explicitly.

2017-09-10  Bruno Haible  <bruno@clisp.org>

	Fix build failure with --enable-shared on Solaris/x86 with cc.
	* common/asm-i386.h: Test __SVR4, not __svr4__.

2017-09-10  Bruno Haible  <bruno@clisp.org>

	Support building shared libraries on native Windows.
	* configure.ac (LT_INIT): Add option 'win32-dll'.
	* avcall/Makefile.in (avcall-x86_64.lo): Copy object file into .libs/
	directory.
	* callback/vacall_r/Makefile.in (vacall-x86_64.lo): Likewise.

2017-09-09  Bruno Haible  <bruno@clisp.org>

	i386: Verify support for Hurd.
	* NEWS: List this platform.

2017-09-09  Bruno Haible  <bruno@clisp.org>

	x86_64: Verify support for FreeBSD, NetBSD, OpenBSD.
	* PLATFORMS, */PLATFORMS: List these platforms.
	* NEWS: Likewise.

2017-09-09  Bruno Haible  <bruno@clisp.org>

	i386: Restore support for FreeBSD, NetBSD, OpenBSD, DragonFly BSD.
	* avcall/avcall.h (__AV_STRUCT_RETURN): Enable __AV_SMALL_STRUCT_RETURN
	on FreeBSD/i386, OpenBSD/i386, DragonFly/i386.
	* vacall/vacall.h (__VA_STRUCT_RETURN): Enable __VA_SMALL_STRUCT_RETURN
	on FreeBSD/i386, OpenBSD/i386, DragonFly/i386.
	* callback/vacall_r/vacall_r.h: Likewise.
	* avcall/avcall-i386.c: Update comments.
	* vacall/vacall-i386.c (vacall_receiver): Return the structure address
	in %eax also for other platforms than MSVC.
	* PLATFORMS, */PLATFORMS: List these platforms.
	* NEWS: Likewise.

2017-09-09  Bruno Haible  <bruno@clisp.org>

	i386: Assume MSVC struct return convention also on 32-bit mingw.
	* avcall/avcall.h (__AV_STRUCT_RETURN): Enable __AV_MSVC_STRUCT_RETURN
	on 32-bit mingw.
	* vacall/vacall.h (__VA_STRUCT_RETURN): Enable __VA_MSVC_STRUCT_RETURN
	on 32-bit mingw.
	* callback/vacall_r/vacall_r.h: Likewise.
	* NEWS: Mention the fix.

2017-09-09  Bruno Haible  <bruno@clisp.org>

	vacall: Fix warnings on DragonFly BSD.
	* vacall/vacall-internal.h (__va_start, __va_arg): Undefine first.

2017-09-09  Bruno Haible  <bruno@clisp.org>

	avcall, vacall: Optimize struct return of small structs.
	* avcall/avcall-arm64.c (avcall_call): Add alternative optimized code
	for struct return.
	* avcall/avcall-hppa.c (avcall_call): Likewise.
	* avcall/avcall-ia64.c (avcall_call): Likewise.
	* avcall/avcall-mipsn32.c (avcall_call): Likewise.
	* avcall/avcall-mips64.c (avcall_call): Likewise.
	* avcall/avcall-powerpc64.c (avcall_call): Likewise.
	* avcall/avcall-sparc64.c (avcall_call): Likewise.
	* avcall/avcall-x86_64.c (avcall_call): Likewise.
	* avcall/avcall-x86_64-windows.c (avcall_call): Likewise.
	* avcall/avcall-hppa64.c (avcall_call): Likewise, but don't enable it.
	* vacall/vacall-arm64.c (vacall_receiver): Add alternative optimized
	code for struct return.
	* vacall/vacall-hppa.c (vacall_receiver): Likewise.
	* vacall/vacall-ia64.c (vacall_receiver): Likewise.
	* vacall/vacall-mipsn32.c (vacall_receiver): Likewise.
	* vacall/vacall-mips64.c (vacall_receiver): Likewise.
	* vacall/vacall-powerpc64.c (vacall_receiver): Likewise.
	* vacall/vacall-sparc64.c (vacall_receiver): Likewise.
	* vacall/vacall-x86_64.c (vacall_receiver): Likewise.
	* vacall/vacall-x86_64-windows.c (vacall_receiver): Likewise.
	* vacall/vacall-hppa64.c (vacall_receiver): Likewise.

2017-09-09  Bruno Haible  <bruno@clisp.org>

	avcall, vacall: Align code style.
	* avcall/avcall-hppa.c (avcall_call): Use variable name 'iret', like
	for the other ABIs.
	* avcall/avcall-ia64.c: Likewise.
	* avcall/avcall-arm64.c (avcall_call): Use variable names 'iret' and
	'iret2', like for the other ABIs.
	* avcall/avcall-x86_64.c: Likewise.
	* avcall/avcall-sparc64.c (avcall_call): Use variable names 'iret',
	'iret2', 'iret3', 'iret4', for consistency.
	* vacall/vacall-sparc64 (vacall_receiver): Likewise.

2017-09-09  Bruno Haible  <bruno@clisp.org>

	x86_64: Remove register pressure on gcc.
	* avcall/avcall-x86_64.c: Don't declare iarg[1-6].
	(avcall_call): Pass the integer arguments through arguments.
	* avcall/avcall-x86_64-windows.c: Don't declare iarg[1-4].
	(avcall_call): Pass the integer arguments through arguments.
	* vacall/vacall-x86_64.c: Don't declare iarg[1-6].
	(vacall_receiver): Use another way to save the integer registers.
	* vacall/vacall-x86_64-windows.c: Don't declare iarg[1-4].

2017-09-09  Bruno Haible  <bruno@clisp.org>

	Fix preprocessor warning "does not give a valid preprocessing token".
	* common/asm-i386.h (NUM): Don't use token concatenation between '$'
	and a possibly negative number.
	* common/asm-x86_64.h (NUM): Likewise.

2017-09-09  Bruno Haible  <bruno@clisp.org>

	hppa64: Simplify trampoline.
	* trampoline/tramp-hppa64-old.s: Renamed from trampoline/tramp-hppa64.s.
	* trampoline/tramp-hppa64-old.o: Renamed from trampoline/tramp-hppa64.o.
	* trampoline/tramp-hppa64-macro.S: New file.
	* trampoline/Makefile.in (tramp-hppa64.lo, tramp-hppa64.s): New targets.
	(clean): Remove tramp-hppa64.s.
	(SOURCE_FILES): Add tramp-hppa64-macro.S.
	* trampoline/trampoline.c: Distinguish __hppa64old__ and __hppa64new__.
	Implement trampoline for __hppa64new__.
	* callback/trampoline_r/tramp-hppa64-old.s: Renamed from
	callback/trampoline_r/tramp-hppa64.s.
	* callback/trampoline_r/tramp-hppa64-old.o: Renamed from
	callback/trampoline_r/tramp-hppa64.o.
	* callback/trampoline_r/tramp-hppa64-macro.S: New file.
	* callback/trampoline_r/Makefile.in (tramp-hppa64.lo, tramp-hppa64.s):
	New targets.
	(clean): Remove tramp-hppa64.s.
	(SOURCE_FILES): Add tramp-hppa64-macro.S.
	* callback/trampoline_r/trampoline.c: Distinguish __hppa64old__ and
	__hppa64new__. Implement trampoline for __hppa64new__.
	* configure.ac (CPU_OBJECTS): Augment with tramp-hppa64.lo.

2017-09-09  Bruno Haible  <bruno@clisp.org>

	hppa64: Add support for HP-PA in 64-bit mode on HP-UX.
	* cross-tools/cross.conf: Add configuration for hppa64 cross tools.
	* porting-tools/abis/README: Add details about platforms where function
	pointers are actually pointers to some struct.
	* porting-tools/abis/call-used-registers.txt: Add info about hppa64.
	Fix info about hppa.
	* porting-tools/abis/reg-struct-return.txt: Add info about hppa64.
	* porting-tools/abis/stack-frame.txt: Likewise.
	* porting-tools/execstack/voidfunc-hppa64.o: New file.
	* common/asm-hppa64.h: New file.
	* common/asm-hppa64.sh: New file.
	* Makefile.in (SOURCE_FILES): Add them.
	* avcall/avcall.h (__AV_REGISTER_STRUCT_RETURN): Add code for
	__hppa64__.
	* avcall/avcall-alist.h (__av_alist): Likewise.
	* avcall/avcall-internal.h: Add code for __hppa64__, especially
	__av_start1, __av_reg_struct_return, __av_start_struct4, __av_word,
	__av_longlong, __av_ulonglong, _av_float, _av_double,
	__av_struct_leftadjusted, __av_struct.
	* avcall/avcall-hppa64.c: New file.
	* avcall/Makefile.devel (avcall-hppa64-linux.s, avcall-hppa64-macro.S):
	New targets.
	* avcall/Makefile.in (avcall-hppa64.lo, avcall-hppa64.s): New targets.
	(clean): Remove avcall-hppa64.s.
	(SOURCE_FILES): Add avcall-hppa64.c, avcall-hppa64-linux.s,
	avcall-hppa64-macro.S.
	* vacall/vacall.h (__VA_REGISTER_STRUCT_RETURN): Add code for
	__hppa64__.
	* vacall/vacall-internal.h: Add code for __hppa64__, especially
	__va_alist, __va_reg_struct_return, __va_start_struct2,
	__va_arg_leftadjusted, __va_arg_rightadjusted, __va_arg_adjusted,
	_va_arg_longlong, _va_arg_ulonglong, __va_align_double, _va_arg_float,
	_va_arg_double, __va_arg_struct, _va_return_longlong.
	* vacall/vacall-hppa64.c: New file.
	* vacall/Makefile.devel (vacall-hppa64-linux.s, vacall-hppa64-macro.S):
	New targets.
	* vacall/Makefile.in (vacall-hppa64.@OBJEXT@, vacall-hppa64.s): New
	targets.
	(clean): Remove vacall-hppa64.s.
	(SOURCE_FILES): Add vacall-hppa64.c, vacall-hppa64-linux.s,
	vacall-hppa64-macro.S.
	* callback/vacall_r/vacall_r.h (__VA_REGISTER_STRUCT_RETURN): Add code
	for __hppa64__.
	* callback/vacall_r/Makefile.devel (vacall-hppa64-linux.s,
	vacall-hppa64-macro.S): New targets.
	* callback/vacall_r/Makefile.in (vacall-hppa64.lo, vacall-hppa64.s): New
	targets.
	(clean): Remove vacall-hppa64.s.
	(SOURCE_FILES): Add vacall-hppa64-linux.s, vacall-hppa64-macro.S.
	* trampoline/Makefile.devel (cache-hppa64-linux.s,
	cache-hppa64-macro.S): New targets.
	(proto-hppa64.s, tramp-hppa64.o): New targets.
	* trampoline/proto-hppa64.s: New generated file.
	* trampoline/tramp-hppa64.s: New file.
	* trampoline/tramp-hppa64.o: New generated file.
	* trampoline/tramp-hppa-macro.S: Fix comment.
	* trampoline/cache-hppa.c: Add code for __hppa64__.
	* trampoline/trampoline.c: Implement for __hppa64__.
	* trampoline/Makefile.in (cache-hppa64.lo, cache-hppa64.s): New targets.
	(clean): Remove cache-hppa64.s.
	(SOURCE_FILES): Add cache-hppa64-linux.s, cache-hppa64-macro.S.
	* callback/trampoline_r/Makefile.devel (cache-hppa64-linux.s,
	cache-hppa64-macro.S): New targets.
	(proto-hppa64.s, tramp-hppa64.o): New targets.
	* callback/trampoline_r/proto64.c: Add code for __hppa64__.
	* callback/trampoline_r/proto-hppa64.s: New generated file.
	* callback/trampoline_r/tramp-hppa64.s: New file.
	* callback/trampoline_r/tramp-hppa64.o: New generated file.
	* callback/trampoline_r/tramp-hppa-macro.S: Fix comment.
	* callback/trampoline_r/trampoline.c: Implement for __hppa64__.
	* callback/trampoline_r/test1.c: Add support for __hppa64__.
	* callback/trampoline_r/Makefile.in (cache-hppa64.lo, cache-hppa64.s):
	New targets.
	(clean): Remove cache-hppa64.s.
	(SOURCE_FILES): Add cache-hppa64-linux.s, cache-hppa64-macro.S.
	* configure.ac (CPU_OBJECTS): Augment also for hppa64 ABI.
	* PLATFORMS, */PLATFORMS: List the 64-bit HP-PA machine.
	* NEWS: Mention the new port.

2017-09-09  Bruno Haible  <bruno@clisp.org>

	Don't violate ISO C rules.
	* avcall/avcall-internal.h (__av_struct): Don't store an unaligned
	pointer in (LIST).aptr.

2017-09-09  Bruno Haible  <bruno@clisp.org>

	Assume the C preprocessor discards // comments.
	* common/asm-i386.h: Renamed from common/asm-i386.hh.
	* Makefile.maint (common/asm-i386.h): Remove target.
	* Makefile.in (SOURCE_FILES): Add common/asm-i386.h. Remove
	common/asm-i386.hh.
	(GENERATED_FILES): Remove common/asm-i386.h.

2017-09-09  Bruno Haible  <bruno@clisp.org>

	avcall: Optimize struct return of small structs.
	* avcall/avcall-*.c: Cache l->raddr in a local variable.

2017-09-09  Bruno Haible  <bruno@clisp.org>

	x86_64: Improve processing of assembly-language files.
	* common/asm-x86_64.sh: Eliminate #APP and #NO_APP directives.
	In the MEM* patterns, recognize all 64-bit register names.

2017-09-09  Bruno Haible  <bruno@clisp.org>

	Fix compilation error on HP-UX (regression from 2017-09-03).
	* avcall/avcall-libapi.c: Include <stdlib.h> before ffcall-stdint.h.

2017-09-03  Bruno Haible  <bruno@clisp.org>

	i386: Align processing of assembly-language files with x86_64 case.
	* common/asm-i386.hh (INSN2MOVXL): Renamed from INSN2MOVX.
	* common/asm-i386.sh: Generate INSN2MOVXL instead of INSN2MOVX.

2017-09-03  Bruno Haible  <bruno@clisp.org>

	i386: Provide disambiguating size prefixes in more cases.
	* common/asm-i386.sh: Introduce size prefixes also for the second
	operand of instructions with two operands.

2017-09-03  Bruno Haible  <bruno@clisp.org>

	i386: Simplify processing of assembly-language files.
	* common/asm-i386.sh: Remove unused introduction of FUNEND. Remove
	no-op rule for GLOBL.

2017-09-03  Bruno Haible  <bruno@clisp.org>

	x86_64: Add support for MSVC 14.
	* common/asm-x86_64.h (R, NUM, ADDR, ADDR_PCRELATIVE, X1, X2, X4, X8,
	MEM, MEM_DISP, MEM_INDEX, MEM_SHINDEX, MEM_DISP_SHINDEX0,
	MEM_DISP_SHINDEX, MEM_PCRELATIVE, INDIR, INSNCONC, INSN1, INSN2,
	INSN2S, INSN2MOVXL, INSN2MOVXQ, INSN2MOVXLQ, _): New macros.
	(TEXT, P2ALIGN, DECLARE_FUNCTION, FUNBEGIN, FUNEND): Implement for MSVC.
	* common/asm-x86_64.sh: Generate instructions as macros that may expand
	into AT&T syntax or MSVC syntax.
	* avcall/Makefile.in (avcall-x86_64.lo): Use a different rule for MSVC.
	(clean): Remove also avcall-x86_64.asm.
	* vacall/Makefile.in (vacall-x86_64.@OBJEXT@): Use a different rule for
	MSVC.
	(clean): Remove also vacall-x86_64.asm.
	* callback/vacall_r/Makefile.in (vacall-x86_64.lo): Use a different rule
	for MSVC.
	(clean): Remove also vacall-x86_64.asm.
	* PLATFORMS, */PLATFORMS: List the 64-bit mingw machine.
	* NEWS: Mention the new port.

2017-09-03  Bruno Haible  <bruno@clisp.org>

	x86_64: Add support for mingw.
	* avcall/avcall.h (__AV_LLP64): New macro.
	(__avword): Use it.
	* avcall/avcall-alist.h (__av_alist): Change fields of type
	'unsigned long' to 'uintptr_t'.
	* avcall/avcall-internal.h (__av_longlong): Update implementation for
	LLP64 platforms.
	* vacall/vacall.h (__VA_LLP64): New macro.
	(__vaword): Use it.
	* callback/vacall_r/vacall_r.h: Likewise.
	* vacall/vacall-internal.h (__va_alist): Change fields of type
	'unsigned long' to 'uintptr_t'. Don't assume that 'long long' is the
	same as 'long' on x86_64.
	(_va_arg_longlong, _va_arg_ulonglong, _va_return_longlong,
	_va_return_ulonglong): Update implementation for LLP64 platforms.
	* PLATFORMS, */PLATFORMS: List the 64-bit mingw machine.
	* NEWS: Mention the new port.

2017-09-03  Bruno Haible  <bruno@clisp.org>

	Fix warnings on 64-bit native Windows.
	* avcall/tests.c (pointer_tests): Use %p to display the value of a
	pointer.
	* vacall/tests.c (main): Likewise,
	* callback/tests.c (main): Likewise,

2017-09-03  Bruno Haible  <bruno@clisp.org>

	Add support for platforms where sizeof(long) < sizeof(void*).
	* ffcall-stdint.h: New file.
	* Makefile.in (SOURCE_FILES): Add it.
	* avcall/avcall-internal.h: Include ffcall-stdint.h. Use [u]intptr_t
	instead of 'long', 'unsigned long', or '__avword' where appropriate.
	* vacall/vacall-internal.h: Include ffcall-stdint.h. Use [u]intptr_t
	instead of 'long', 'unsigned long', or '__vaword' where appropriate.
	* Makefile.maint (GNULIB_MODULES): Add stdint.
	* trampoline/trampoline.c: Include <stdint.h>. Use [u]intptr_t instead
	of 'long' or 'unsigned long' where appropriate. For __x86_64__, use
	'unsigned long long' instead of 'unsigned long'.
	* callback/trampoline_r/trampoline.c: Likewise.
	* callback/trampoline_r/test1.c (f): Use 'void*' instead of 'long' to
	access env.

2017-09-03  Bruno Haible  <bruno@clisp.org>

	x86_64: Add support for Cygwin.
	* porting-tools/abis/call-used-registers.txt: Add info about x86_64-ms
	ABI.
	* porting-tools/abis/reg-struct-return.txt: Likewise.
	* porting-tools/abis/stack-frame.txt: Likewise.
	* common/asm-x86_64.h: Add support for compilers on Windows.
	(TEXT, GLOBL): New macros.
	* common/asm-x86_64.sh: Truncate the EH_FRAME_SECTION also on Windows.
	Eliminate .file pseudo-op. Macroize .text, .p2align, .globl directives.
	* avcall/avcall-alist.h (__x86_64_ms__, __x86_64_sysv__): New macros.
	(__av_alist): Add support for __x86_64_ms__.
	* avcall/avcall-internal.h (__av_start1, __av_reg_struct_return,
	__av_start_struct3, __av_start_struct4, __av_word, _av_float,
	_av_double, __av_struct): Add support for __x86_64_ms__.
	* avcall/avcall-x86_64.c: Improve comments.
	* avcall/avcall-x86_64-windows.c: New file.
	* avcall/Makefile.devel (avcall-x86_64-windows.s,
	avcall-x86_64-windows-macro.S): New targets.
	* avcall/Makefile.in (avcall-x86_64.s): On Windows, use
	avcall-x86_64-windows-macro.S.
	(SOURCE_FILES): Add avcall-x86_64-windows.c, avcall-x86_64-windows.s,
	avcall-x86_64-windows-macro.S.
	* vacall/vacall-internal.h (__x86_64_ms__, __x86_64_sysv__): New macros.
	(__VA_FARG_NUM): Define also for __mipsn32__ || __mips64__.
	(__va_alist): Add support for __x86_64_ms__.
	(__va_reg_struct_return, __va_start_struct1, __va_start_struct2,
	__va_arg_leftadjusted, __va_arg_rightadjusted, __va_arg_adjusted,
	_va_arg_float, _va_arg_double, __va_arg_struct): Likewise.
	* vacall/vacall-x86_64.c: Update comments.
	* vacall/vacall-x86_64-windows.c: New file.
	* vacall/Makefile.devel (vacall-x86_64-windows.s,
	vacall-x86_64-windows-macro.S): New targets.
	* vacall/Makefile.in (vacall-x86_64.s): On Windows, use
	vacall-x86_64-windows-macro.S.
	(SOURCE_FILES): Add vacall-x86_64-windows.c, vacall-x86_64-windows.s,
	vacall-x86_64-windows-macro.S.
	* callback/vacall_r/Makefile.devel (vacall-x86_64-windows.s,
	vacall-x86_64-windows-macro.S): New targets.
	* callback/vacall_r/Makefile.in (vacall-x86_64.s): On Windows, use
	vacall-x86_64-windows-macro.S.
	(SOURCE_FILES): Add vacall-x86_64-windows.s,
	vacall-x86_64-windows-macro.S.
	* PLATFORMS, */PLATFORMS: List the 64-bit Cygwin machine.
	* NEWS: Mention the new port.

2017-09-03  Bruno Haible  <bruno@clisp.org>

	Remove special build infrastructure for MSVC. The generic one works.
	* avcall/Makefile.msvc: Remove file.
	* avcall/Makefile.in (SOURCE_FILES): Remove it.
	* vacall/Makefile.maint (config.h.msvc): Remove target.
	(totally-clean): Don't remove config.h.msvc.
	* vacall/Makefile.msvc: Remove file.
	* vacall/Makefile.in (SOURCE_FILES): Remove it.
	(GENERATED_FILES): Remove config.h.msvc.
	* trampoline/Makefile.maint (config.h.msvc): Remove target.
	(totally-clean): Don't remove config.h.msvc.
	* trampoline/Makefile.msvc: Remove file.
	* trampoline/Makefile.in (SOURCE_FILES): Remove it.
	(GENERATED_FILES): Remove config.h.msvc.
	* callback/vacall_r/Makefile.maint (config.h.msvc): Remove target.
	(totally-clean): Don't remove config.h.msvc.
	* callback/vacall_r/Makefile.msvc: Remove file.
	* callback/vacall_r/Makefile.in (SOURCE_FILES): Remove it.
	(GENERATED_FILES): Remove config.h.msvc.
	* callback/trampoline_r/Makefile.maint (config.h.msvc): Remove target.
	(totally-clean): Don't remove config.h.msvc.
	* callback/trampoline_r/Makefile.msvc: Remove file.
	* callback/trampoline_r/Makefile.in (SOURCE_FILES): Remove it.
	(GENERATED_FILES): Remove config.h.msvc.
	* callback/Makefile.maint (vacall_r/config.h.msvc,
	trampoline_r/config.h.msvc): Remove targets.
	* callback/Makefile.msvc: Remove file.
	* callback/Makefile.in (SOURCE_FILES): Remove it.
	* Makefile.msvc: Remove file.
	* Makefile.in (SOURCE_FILES): Remove it.

2017-09-03  Bruno Haible  <bruno@clisp.org>

	Make the generic build infrastructure work on MSVC.
	* m4/as-underscore.m4: Rely on gl_ASM_SYMBOL_PREFIX from gnulib. Don't
	define ASM_UNDERSCORE any more.
	* configure.ac: Set IF_MSVC, IFNOT_MSVC.
	* common/asm-i386.hh: Fix P2ALIGN parameter list.
	* common/asm-i386.sh: Improve handling of indirect calls and jmps.
	* avcall/Makefile.in: Use OBJEXT.
	(avcall-i386.lo): Use a different rule for MSVC.
	* vacall/Makefile.devel: Transform 'vacall_function' before the
	asm-i386.sh script, not afterwards.
	* vacall/Makefile.in: Use OBJEXT.
	(vacall-i386.o): Use a different rule for MSVC.
	* trampoline/trampoline.c: On native Windows, when CODE_EXECUTABLE is
	not defined, use VirtualAlloc.
	* trampoline/Makefile.in: Use OBJEXT.
	* callback/vacall_r/get_receiver.c: New file.
	* callback/vacall_r/Makefile.maint (vacall-i386-msvc.c): Use the C
	source code of callback_get_receiver.
	* callback/vacall_r/Makefile.in: Use OBJEXT.
	(vacall-i386.lo): Use a different rule for MSVC.
	(SOURCE_FILES): Add get_receiver.c.
	* callback/trampoline_r/trampoline.c: On native Windows, when
	CODE_EXECUTABLE is not defined, use VirtualAlloc.
	* callback/trampoline_r/Makefile.in: Use OBJEXT.
	* callback/Makefile.in: Use OBJEXT.
	* README.win32: Remove file.
	* README.windows: New file, from GNU gettext.
	* Makefile.in (SOURCE_FILES): Remove README.win32. Add README.windows.
	* PLATFORMS, */PLATFORMS: List the 32-bit mingw and MSVC machine.
	* NEWS: Mention MSVC support.

2017-09-03  Bruno Haible  <bruno@clisp.org>

	Don't use symbolic links for .h files.
	MSVC 14 does not follow the symbolic links set by Cygwin's 'ln -s'.
	* trampoline/Makefile.in (LN_S): Remove variable.
	* callback/trampoline_r/Makefile.in (LN_S): Remove variable.
	* callback/Makefile.in (INCLUDES): Add an -I option for vacall_r.h.
	(LN_S): Remove variable.
	(vacall_r.h, trampoline_r.h): Remove targets.
	(callback-libapi.lo): Use explicit -I option for trampoline_r.h. Update
	dependencies.
	(test1.o, minitests.o, minitests.s, minitests-c++.o, tests.o, tests.s):
	Update dependencies.
	(MOSTLYCLEANFILES): Remove vacall_r.h, trampoline_r.h.
	* configure.ac: Don't invoke CL_PROG_LN_S.

2017-09-03  Bruno Haible  <bruno@clisp.org>

	Remove special build infrastructure for mingw. The generic one works.
	* avcall/Makefile.maint (avcall-i386-mingw32.c): Remove target.
	(totally-clean): Don't remove avcall-i386-mingw32.c.
	* avcall/Makefile.mingw32: Remove file.
	* avcall/Makefile.in (SOURCE_FILES): Remove it.
	(GENERATED_FILES): Remove avcall-i386-mingw32.c.
	* vacall/Makefile.maint (config.h.mingw32, vacall-i386-mingw32.c):
	Remove targets.
	(totally-clean): Don't remove config.h.mingw32, vacall-i386-mingw32.c.
	* vacall/Makefile.mingw32: Remove file.
	* vacall/Makefile.in (SOURCE_FILES): Remove it.
	(GENERATED_FILES): Remove config.h.mingw32, vacall-i386-mingw32.c.
	* trampoline/Makefile.maint (config.h.mingw32): Remove target.
	(totally-clean): Don't remove config.h.mingw32.
	* trampoline/Makefile.mingw32: Remove file.
	* trampoline/Makefile.in (SOURCE_FILES): Remove it.
	(GENERATED_FILES): Remove config.h.mingw32.
	* callback/vacall_r/Makefile.maint (config.h.mingw32,
	vacall-i386-mingw32.c): Remove targets.
	(totally-clean): Don't remove config.h.mingw32, vacall-i386-mingw32.c.
	* callback/vacall_r/Makefile.mingw32: Remove file.
	* callback/vacall_r/Makefile.in (SOURCE_FILES): Remove it.
	(GENERATED_FILES): Remove config.h.mingw32, vacall-i386-mingw32.c).
	* callback/trampoline_r/Makefile.maint (config.h.mingw32): Remove
	target.
	(totally-clean): Don't remove config.h.mingw32.
	* callback/trampoline_r/Makefile.mingw32: Remove file.
	* callback/trampoline_r/Makefile.in (SOURCE_FILES): Remove it.
	(GENERATED_FILES): Remove config.h.mingw32.
	* callback/Makefile.maint (vacall_r/config.h.mingw32,
	vacall_r/vacall-i386-mingw32.c, trampoline_r/config.h.mingw32): Remove
	targets.
	* callback/Makefile.mingw32: Remove file.
	* callback/Makefile.in (SOURCE_FILES): Remove it.
	* Makefile.mingw32: Remove file.
	* Makefile.in (SOURCE_FILES): Remove it.

2017-09-03  Bruno Haible  <bruno@clisp.org>

	Fix leftover files after "make distclean" (regression from 2017-08-27).
	* avcall/Makefile.in (distclean): Also remove minitests-c++.output.*.
	* vacall/Makefile.in (distclean): Likewise.
	* callback/Makefile.in (DISTCLEANFILES): Add minitests-c++.output.*.

2017-08-27  Bruno Haible  <bruno@clisp.org>

	Enable building shared libraries on Windows.
	* avcall/Makefile.in (libavcall.la): Pass option '-no-undefined' to
	$(LIBTOOL_LINK).
	* trampoline/Makefile.in (libtrampoline.la): Likewise.
	* callback/vacall_r/Makefile.in (libvacall.la): Likewise.
	* callback/trampoline_r/Makefile.in (libtrampoline.la): Likewise.
	* callback/Makefile.in (libcallback.la): Likewise.

2017-08-27  Bruno Haible  <bruno@clisp.org>

	Do proper versioning of shared libraries.
	* avcall/Makefile.in (LIBAVCALL_VERSION_INFO): New variable.
	(libavcall.la): Use libtool option -version-info.
	* trampoline/Makefile.in (LIBTRAMPOLINE_VERSION_INFO): New variable.
	(libtrampoline.la): Use libtool option -version-info.
	* callback/Makefile.in (LIBCALLBACK_VERSION_INFO): New variable.
	(libcallback.la): Use libtool option -version-info.
	* README: Remove statement of problem. Update figures about code size.
	* NEWS: Mention the change.

2017-08-27  Bruno Haible  <bruno@clisp.org>

	Fix warnings on 64-bit native Windows.
	* testcases.c (vp_vpdpcpsp): Use %p to display the value of a pointer.
	* vacall/tests.c (simulator): Likewise.
	* callback/tests.c (vp_vpdpcpsp_simulator): Likewise,

2017-08-27  Bruno Haible  <bruno@clisp.org>

	Remove code duplication of test cases.
	* testcases.c: New file, extracted from avcall/tests.c.
	* Makefile.in (SOURCE_FILES): Add it.
	* avcall/tests.c: Remove testcases functions. Include testcases.c
	instead.
	* vacall/tests.c: Likewise.
	* callback/tests.c: Likewise.
	* porting-tools/abis/README: Update.

2017-08-27  Bruno Haible  <bruno@clisp.org>

	avcall: Fix weakness in tests (added on 2017-01-29).
	* avcall/tests.c (ll_l2ll, ll_l3ll, ll_l4ll, ll_l5ll, ll_l6ll, ll_l7ll):
	Use a temporary variable of type 'long long'.

2017-08-27  Bruno Haible  <bruno@clisp.org>

	vacall, callback: Remove workarounds for obsolete platforms.
	* vacall/tests.c: Remove workarounds for SunOS 4 cc, gcc-2.5, gcc-2.7.x.
	* callback/tests.c: Likewise.

2017-08-27  Bruno Haible  <bruno@clisp.org>

	Add tests that verify the C++ support.
	* Makefile.maint (GNULIB_MODULES): Add ansi-c++-opt.
	* configure.ac: Invoke gl_PROG_ANSI_CXX. Set IF_CXX.
	* avcall/minitests-c++.cc: New file.
	* avcall/Makefile.in (CXX, CXXFLAGS): New variables.
	(minitests-c++.o, minitests-c++): New targets.
	(check): Optionally, test also minitests-c++.
	(clean): Remove minitests-c++.o, minitests-c++, minitests-c++.out.
	(SOURCE_FILES): Add minitests-c++.cc.
	* vacall/minitests-c++.cc: New file.
	* vacall/Makefile.in (CXX, CXXFLAGS): New variables.
	(minitests-c++.o, minitests-c++): New targets.
	(check): Optionally, test also minitests-c++.
	(clean): Remove minitests-c++.o, minitests-c++, minitests-c++.out.
	(SOURCE_FILES): Add minitests-c++.cc.
	* trampoline/test2-c++.cc: New file.
	* trampoline/test2.c (main): Don't test &main in C++ mode.
	* trampoline/Makefile.in (CXX, CXXFLAGS): New variables.
	(test2-c++.o, test2-c++): New targets.
	(check): Optionally, test also test2-c++.
	(clean): Remove test2-c++.o, test2-c++.
	(SOURCE_FILES): test2-c++.cc.
	* callback/minitests-c++.cc: New file.
	* callback/Makefile.in (CXX, CXXFLAGS): New variables.
	(minitests-c++.o, minitests-c++): New targets.
	(check): Optionally, test also minitests-c++.
	(MOSTLYCLEANFILES): Add minitests-c++.o, minitests-c++,
	minitests-c++.out.
	(SOURCE_FILES): Add minitests-c++.cc.

2017-08-27  Bruno Haible  <bruno@clisp.org>

	Add support for SUNWspro C++ on Solaris.
	* avcall/avcall.h: Treat SUNWspro C++ like SUNWspro C.
	* vacall/vacall.h: Likewise.
	* callback/vacall_r/vacall_r.h: Likewise.

2017-08-27  Bruno Haible  <bruno@clisp.org>

	Make the include files C++-safe.
	* avcall/avcall.h: Add C++ guards.
	(__AV_alignof): Test __IBM__ALIGNOF__. Use template-based definition
	for C++.
	* vacall/vacall.h: Add C++ guards.
	(__VA_alignof): Test __IBM__ALIGNOF__. Use template-based definition
	for C++.
	* callback/vacall_r/vacall_r.h: Add C++ guards.
	(__VA_alignof): Test __IBM__ALIGNOF__. Use template-based definition
	for C++.

2017-08-27  Bruno Haible  <bruno@clisp.org>

	Make sure the tests use only the public include files.
	* avcall/tests.c: Don't include config.h.
	* vacall/tests.c: Don't include config.h.
	* callback/tests.c: Likewise.
	* callback/trampoline_r/test1.c: Likewise. Include ffcall-abi.h instead.
	* avcall/Makefile.in (avcall-libapi.lo): Use $(INCLUDES).
	* vacall/Makefile.in (INCLUDES): Remove -I options that reference
	gnulib-lib.
	(INCLUDES_WITH_GNULIB): New variable.
	(vacall-libapi.o): Use INCLUDES_WITH_GNULIB instead of INCLUDES.
	* trampoline/Makefile.in (INCLUDES): Remove -I options that reference
	gnulib-lib.
	(INCLUDES_WITH_GNULIB): New variable.
	(trampoline.lo): Use INCLUDES_WITH_GNULIB instead of INCLUDES.
	* callback/vacall_r/Makefile.in (INCLUDES): Remove -I options that
	reference gnulib-lib.
	(INCLUDES_WITH_GNULIB): New variable.
	(vacall-libapi.lo): Use INCLUDES_WITH_GNULIB instead of INCLUDES.
	* callback/trampoline_r/Makefile.in (INCLUDES): Remove -I options that
	reference gnulib-lib.
	(INCLUDES_WITH_GNULIB): New variable.
	(trampoline.lo): Use INCLUDES_WITH_GNULIB instead of INCLUDES.

2017-08-27  Bruno Haible  <bruno@clisp.org>

	Make recognition of Solaris more robust.
	* avcall/avcall.h: Test for '__sun', not for 'sun'.
	* vacall/vacall.h: Likewise.
	* callback/vacall_r/vacall_r.h: Likewise.
	* vacall/tests.c: Likewise.
	* callback/tests.c: Likewise.

2017-08-27  Bruno Haible  <bruno@clisp.org>

	avcall: Align field names.
	* avcall/avcall-alist.h (__av_alist): Rename field 'farg' to 'fargs'.
	* avcall/avcall-internal.h (_av_float): Update.
	* avcall/avcall-mipsn32.c (avcall_call): Likewise.
	* avcall/avcall-mips64.c (avcall_call): Likewise.

2017-08-27  Bruno Haible  <bruno@clisp.org>

	Remove support for old NeXTstep.
	* avcall/avcall.h (__AV_NEXTGCC_STRUCT_RETURN): Remove enum value.
	* avcall/avcall-internal.h (__av_start_struct4) [__i386__]: Remove test
	for __AV_NEXTGCC_STRUCT_RETURN.
	* avcall/avcall-i386.c (avcall_call): Likewise.
	* avcall/PLATFORMS: Update.
	* vacall/vacall.h (__VA_NEXTGCC_STRUCT_RETURN): Remove enum value.
	* callback/vacall_r/vacall_r.h: Likewise.
	* vacall/vacall-internal.h (__va_start_struct2) [__i386__]: Remove test
	for __VA_NEXTGCC_STRUCT_RETURN.
	* vacall/vacall-i386.c (vacall_receiver): Likewise.
	* trampoline/trampoline.c: Don't include <mach/mach_init.h>.
	* callback/trampoline_r/trampoline.c: Likewise.

2017-08-27  Bruno Haible  <bruno@clisp.org>

	hppa: Remove support for old gcc-2.6.3.
	* avcall/avcall.h (__AV_OLDGCC_STRUCT_RETURN): Remove enum value.
	* avcall/avcall-internal.h (__av_reg_struct_return) [__hppa__]: Remove
	test for __AV_OLDGCC_STRUCT_RETURN.
	* avcall/avcall-hppa.c (avcall_call): Likewise.
	* vacall/vacall.h (__VA_OLDGCC_STRUCT_RETURN): Remove enum value.
	* callback/vacall_r/vacall_r.h (__VA_OLDGCC_STRUCT_RETURN): Likewise.
	* vacall/vacall-internal.h (__va_reg_struct_return) [__hppa__]: Remove
	test for __VA_OLDGCC_STRUCT_RETURN.
	* vacall/vacall-hppa.c (vacall_receiver): Likewise.

2017-08-27  Bruno Haible  <bruno@clisp.org>

	avcall: Evaluate __AV_ALIST_WORDS only during av_start_* macros. Part 2.
	* avcall/avcall-alist.h (__av_alist) [__hppa__]: Add 'args_end' field.
	* avcall/avcall-internal.h (__av_start1) [__hppa__]: Initialize it.
	* avcall/avcall-hppa.c (avcall_call): Use it to reduce the use of
	__AV_ALIST_WORDS.

2017-08-27  Bruno Haible  <bruno@clisp.org>

	avcall: Fix overflow detection bug on hppa.
	* avcall/avcall-internal.h (__av_struct) [__hppa__]: Use LIST.eptr
	instead of &LIST.args[0].

2017-08-27  Bruno Haible  <bruno@clisp.org>

	Fix build failure with --enable-shared on Solaris/SPARC with cc.
	* common/asm-sparc.h: Test __SVR4, not __svr4__.
	* common/asm-sparc.sh: Fix comment about postprocessing.
	* avcall/Makefile.in (avcall-sparc.s, avcall-sparc64.s): Remove space
	after '#'.
	* vacall/Makefile.in (vacall-sparc.s, vacall-sparc64.s): Likewise.
	* trampoline/Makefile.in (cache-sparc.s, cache-sparc64.s): Likewise.
	* callback/vacall_r/Makefile.in (vacall-sparc.s, vacall-sparc64.s):
	Likewise.
	* callback/trampoline_r/Makefile.in (cache-sparc.s, cache-sparc64.s):
	Likewise.

2017-08-27  Bruno Haible  <bruno@clisp.org>

	vacall: Fix build failure with gcc configured with --enable-default-pie.
	Works around a GCC bug, reported at
	<https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81653>.
	* vacall/Makefile.devel (vacall-sparc-linux-pic.s): New target.
	(vacall-sparc-macro.S): Combine vacall-sparc-linux.s and
	vacall-sparc-linux-pic.s in one file.
	(vacall-sparc64-linux-pic.s): New target.
	(vacall-sparc64-macro.S): Combine vacall-sparc64-linux.s and
	vacall-sparc64-linux-pic.s in one file.
	* vacall/Makefile.in (SOURCE_FILES): Add vacall-sparc-linux-pic.s,
	vacall-sparc64-linux-pic.s.

2017-08-27  Bruno Haible  <bruno@clisp.org>

	mips: Avoid warning about undeclared function 'cacheflush' on Linux.
	* trampoline/trampoline.c: On Linux, include <sys/cachectl.h>, not
	<asm/cachectl.h>.
	* callback/trampoline_r/trampoline.c: Likewise.

2017-08-27  Bruno Haible  <bruno@clisp.org>

	vacall: Fix struct returns on mips (o32 ABI).
	* vacall/vacall-mips.c (vacall_receiver): Return the struct return
	address in register $2.

2017-08-27  Bruno Haible  <bruno@clisp.org>

	ia64: Test __GNUC__ only in av/va_start_* (regression from 2017-07-30).
	* avcall/avcall.h (__AV_OLDGCC_STRUCT_ARGS): New enum item.
	(__AV_STRUCT_ARGS): Use it.
	* avcall/avcall-internal.h (__av_struct) [__ia64__]: Test flag
	__AV_OLDGCC_STRUCT_ARGS, not __GNUC__.
	* vacall/vacall.h (__VA_OLDGCC_STRUCT_ARGS): New enum item.
	(__VA_STRUCT_ARGS): Use it.
	* callback/vacall_r/vacall_r.h: Likewise.
	* vacall/vacall-internal.h (__va_arg_struct): Test flag
	__VA_OLDGCC_STRUCT_ARGS, not __GNUC__.

2017-08-27  Bruno Haible  <bruno@clisp.org>

	Fix "make check" failure on Linux/mips (regression from 2017-07-30).
	* ffcall-abi.h: For mipsn32, test _MIPS_SIM, because <sgidefs.h> defines
	both _ABIO32 and _ABIN32.

2017-07-31  Bruno Haible  <bruno@clisp.org>

	Fix preprocessor warning "does not give a valid preprocessing token".
	Reported by Reini Urban at <https://savannah.gnu.org/support/?109280>.
	* common/asm-arm.sh: Don't put a colon inside the C() or L() argument.
	* common/asm-i386.sh: Likewise.
	* common/asm-m68k.sh: Likewise.
	* common/asm-sparc.sh: Likewise.
	* common/asm-x86_64.sh: Likewise.
	* common/asm-arm.h (FUNBEGIN): Don't put a colon inside the C()
	argument.
	* common/asm-i386.hh (FUNBEGIN): Likewise.
	* common/asm-m68k.h (FUNBEGIN): Likewise.
	* common/asm-sparc.h (FUNBEGIN): Likewise.
	* common/asm-x86_64.h (FUNBEGIN): Likewise.

2017-07-31  Bruno Haible  <bruno@clisp.org>

	Fix preprocessor warning "Unknown preprocessing directive".
	* common/asm-hppa.sh: Eliminate #APP, #NO_APP lines.
	* common/asm-powerpc.sh: Likewise.

2017-07-31  Bruno Haible  <bruno@clisp.org>

	trampoline_r: Rework API.
	* callback/trampoline_r/trampoline_r.h (trampoline_r_address,
	trampoline_r_data0, trampoline_r_data1): Change signatures.
	* callback/trampoline_r/trampoline.c (trampoline_r_address,
	trampoline_r_data0, trampoline_r_data1): Update accordingly.
	* callback/trampoline_r/test2.c: Update.
	* callback/callback-libapi.c (is_callback): Likewise.

2017-07-31  Bruno Haible  <bruno@clisp.org>

	vacall: Fix build error on IRIX with cc (regression from 2017-07-30).
	* vacall/vacall-internal.h (__va_arg_adjusted, __va_arg_struct): Cast
	result of __va_arg_leftadjusted and __va_arg_rightadjusted to 'void*'.

2017-07-31  Bruno Haible  <bruno@clisp.org>

	Fix "make check" failure on arm (regression from 2017-07-30).
	* vacall/vacall-internal.h (__va_alist): Move the 'filler1' field right
	before the 'tmp' field.
	* callback/vacall_r/vacall_r.h (vacall_alist): Add 'filler1' field
	between 'flags' and 'tmp' fields.

2017-07-31  Bruno Haible  <bruno@clisp.org>

	Fix build error (regression from 2017-07-30).
	* vacall/Makefile.in (INCLUDES): Add -I options for <stdnoreturn.h>.
	* callback/vacall_r/Makefile.in (INCLUDES): Likewise.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	vacall: Polish Makefile.in.
	* vacall/Makefile.in (vacall-x86_64-x32.o): Remove spurious reference to
	LIBTOOL_COMPILE.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	m68k: Fix callback test crash on Linux.
	* avcall/Makefile.in (avcall-m68k.s): Use the .S file in Motorola
	syntax (cross-compiled for m68k-linux), not the one in MIT syntax
	(cross-compiled for m68k-sun).
	* vacall/Makefile.in (vacall-m68k.s): Likewise.
	* callback/vacall_r/Makefile.in (vacall-m68k.s): Likewise.
	* avcall/PLATFORM, NEWS: Update.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	m68k: Fix build failure on Linux.
	* common/asm-m68k.sh: In mit syntax, recognize 'pc' as a register name.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	Limit the exported symbols of the installed shared libraries.
	* avcall/Makefile.in (LIBAVCALL_EXPORTED_SYMBOLS_REGEX): New variable.
	(libavcall.la): Use libtool's -export-symbols-regex option.
	* trampoline/Makefile.in (LIBTRAMPOLINE_EXPORTED_SYMBOLS_REGEX): New
	variable.
	(libtrampoline.la): Use libtool's -export-symbols-regex option.
	* callback/Makefile.in (LIBCALLBACK_EXPORTED_SYMBOLS_REGEX): New
	variable.
	(libcallback.la): Use libtool's -export-symbols-regex option.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	Ensure source compatibility with existing versions of GNU clisp, part 3.
	* vacall/vacall-internal.h (__va_alist): Move the 'flags' and 'tmp'
	fields to the beginning.
	* callback/vacall_r/vacall_r.h (vacall_alist): When used by GNU clisp,
	declare 'flags' and 'tmp' members.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	Ensure source compatibility with existing versions of GNU clisp, part 2.
	* avcall/avcall-alist.h (__av_alist): Move the 'flags' field to the
	beginning.
	* avcall/avcall.h (av_alist): When used by GNU clisp, declare a 'flags'
	member.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	Ensure source compatibility with existing versions of GNU clisp, part 1.
	* avcall/avcall-libapi.c (__builtin_avcall): New dummy function.
	* callback/callback-libapi.c (trampoline_r_data0): New dummy function.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	Remove copied files from callback/vacall_r/.
	* callback/vacall_r/Makefile.devel (vacall-*.s): Compile
	../../vacall/vacall-*.c directly.
	* autogen.sh: Don't invoke target 'copied-files' in callback/vacall_r/.
	* Makefile.devel (precompiled): Likewise.
	* Makefile.in (COPIED_FILES): Remove callback/vacall_r/*.
	* callback/vacall_r/Makefile.maint (COPIED_FILES): Remove variable.
	(copied-files): Remove target.
	* callback/vacall_r/Makefile.in (SOURCE_FILES): Remove vacall-*.c.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	callback: Allow for binary-compatible future changes of main API.
	* callback/callback.h: Renamed from callback/callback.h.in.
	Don't include trampoline_r.h.
	(callback_t, __TR_function): New types.
	(callback_function_t): Renamed from __VA_function.
	(alloc_callback, free_callback, is_callback, callback_address,
	callback_data): Declare as functions, not as macros.
	* callback/callback-libapi.c: New file.
	* configure.ac: Don't create callback/callback.h.
	* callback/Makefile.in (LIBTOOL_COMPILE): New variable.
	(callback.h): Remove target
	(callback-libapi.lo): New target.
	(libcallback.la): Include it.
	(install-lib, install, installdirs, uninstall): Don't recurse into
	'trampoline_r' directory.
	(test1.o, minitests.o, minitests.s, tests.o, tests.s): Update
	dependency.
	(MOSTLYCLEANFILES): Remove callback.h.
	(SOURCE_FILES): Add callback.h, callback-libapi.c. Remove callback.h.in.
	* callback/test1.c (function): Remove type.
	(main): Remove a cast.
	* callback/tests.c (main): Use the type 'callback_t'.
	* Makefile.in (DISTCLEANFILES): Update stamp file list.
	* NEWS: Mention the improvement.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	callback: Remove version number from trampoline_r.h.
	Rationale: It is already present in callback.h.
	* callback/trampoline_r/trampoline_r.h: Renamed from
	callback/trampoline_r/trampoline_r.h.in.
	(LIBFFCALL_VERSION): Remove macro.
	* configure.ac: Don't create callback/trampoline_r/trampoline_r.h.
	* callback/trampoline_r/Makefile.in (trampoline_r.h): Remove target.
	(trampoline.lo, test1.o, test2.o): Update dependencies.
	(install-lib, install): Update.
	(distclean): Don't remove trampoline_r.h.
	(SOURCE_FILES): Add trampoline_r.h. Remove trampoline_r.h.in.
	* callback/Makefile.in (trampoline_r.h): Link to
	$(srcdir)/trampoline_r/trampoline_r.h.
	* Makefile.in (DISTCLEANFILES): Update stamp file list.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	vacall, callback: Allow compiler optimizations regarding noreturn.
	* Makefile.maint (GNULIB_MODULES): Add 'stdnoreturn'.
	* vacall/vacall-libapi.c: Include <stdnoreturn.h>.
	(__va_struct_buffer_t): Moved to here.
	(vacall_struct_buffer): Declare static.
	(vacall_error_type_mismatch, vacall_error_struct_too_large): Declare
	static and noreturn.
	* callback/vacall_r/vacall-libapi.c: Likewise.
	* vacall/vacall-internal.h (__va_start_struct, __va_return): Update.
	(vacall_error_type_mismatch, vacall_error_struct_too_large,
	__va_struct_buffer_t, vacall_struct_buffer): Remove declarations.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	vacall, callback: Move copyright notice up.
	* vacall/vacall.h: Put double-inclusion guard after copyright header.
	* callback/vacall_r/vacall_r.h: Likewise.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	callback: Allow for binary-compatible future changes of __va_* macros.
	* callback/vacall_r/vacall_r.h: New file, extracted from
	callback/vacall_r/vacall_r.h.in. Include <stddef.h>, ffcall-abi.h.
	(vacall_*): Define to symbols that start with 'callback_'.
	(va_alist): Define als pointer to 'struct vacall_alist'.
	(vacall_start, vacall_start_struct, vacall_arg_char, vacall_arg_schar,
	vacall_arg_uchar, vacall_arg_short, vacall_arg_ushort, vacall_arg_int,
	vacall_arg_uint, vacall_arg_long, vacall_arg_ulong, vacall_arg_longlong,
	vacall_arg_ulonglong, vacall_arg_float, vacall_arg_double,
	vacall_arg_ptr, vacall_arg_struct, vacall_return_void,
	vacall_return_char, vacall_return_schar, vacall_return_uchar,
	vacall_return_short, vacall_return_ushort, vacall_return_int,
	vacall_return_uint, vacall_return_long, vacall_return_ulong,
	vacall_return_longlong, vacall_return_ulonglong, vacall_return_float,
	vacall_return_double, vacall_return_ptr, vacall_return_struct): New
	declarations.
	(va_start_void, va_start_char, va_start_schar, va_start_uchar,
	va_start_short, va_start_ushort, va_start_int, va_start_uint,
	va_start_long, va_start_ulong, va_start_longlong, va_start_ulonglong,
	va_start_float, va_start_double, va_start_ptr, _va_start_struct,
	va_arg_char, va_arg_schar, va_arg_uchar, va_arg_short, va_arg_ushort,
	va_arg_int, va_arg_uint, va_arg_long, va_arg_ulong, va_arg_longlong,
	va_arg_ulonglong, va_arg_float, va_arg_double, va_arg_ptr,
	va_arg_struct, _va_arg_struct, va_return_void, va_return_char,
	va_return_schar, va_return_uchar, va_return_short, va_return_ushort,
	va_return_int, va_return_uint, va_return_long, va_return_ulong,
	va_return_longlong, va_return_ulonglong, va_return_float,
	va_return_double, va_return_ptr, _va_return_struct): Define in terms of
	these functions.
	* callback/vacall_r/vacall-libapi.c: Include vacall-internal.h instead
	of vacall_r.h.in.
	(vacall_start, vacall_start_struct, vacall_arg_char, vacall_arg_schar,
	vacall_arg_uchar, vacall_arg_short, vacall_arg_ushort, vacall_arg_int,
	vacall_arg_uint, vacall_arg_long, vacall_arg_ulong, vacall_arg_longlong,
	vacall_arg_ulonglong, vacall_arg_float, vacall_arg_double,
	vacall_arg_ptr, vacall_arg_struct, vacall_return_void,
	vacall_return_char, vacall_return_schar, vacall_return_uchar,
	vacall_return_short, vacall_return_ushort, vacall_return_int,
	vacall_return_uint, vacall_return_long, vacall_return_ulong,
	vacall_return_longlong, vacall_return_ulonglong, vacall_return_float,
	vacall_return_double, vacall_return_ptr, vacall_return_struct): New
	functions.
	* vacall/vacall-internal.h: If REENTRANT, include vacall_r.h.
	* callback/vacall_r/vacall_r.h.in: Remove file.
	* vacall/vacall-*.c: Include vacall-internal.h instead of vacall_r.h.in.
	* vacall/vacall-libapi.c: Likewise.
	* callback/vacall_r/Makefile.devel (GCCFLAGS): Add -I option for
	ffcall-abi.h.
	(vacall-*.s): Update dependencies. Pass -I options to gcc.
	* configure.ac: Don't create callback/vacall_r/vacall_r.h.
	* callback/vacall_r/Makefile.maint (vacall_r.h.msvc,
	vacall_r.h.mingw32): Remove targets.
	(totally-clean): Don't remove vacall_r.h.msvc, vacall_r.h.mingw32.
	* callback/Makefile.maint (vacall_r/vacall_r.h.msvc,
	vacall_r/vacall_r.h.mingw32): Remove targets.
	* callback/vacall_r/Makefile.in (INCLUDES): Add -I options for
	vacall-internal.h and ffcall-abi.h.
	(all): Don't depend on vacall_r.h.
	(vacall-libapi.lo): Update dependencies. Pass -DREENTRANT option.
	(install-lib, install): Update.
	(distclean): Don't remove vacall_r.h.
	(SOURCE_FILES): Add vacall_r.h. Remove vacall_r.h.in.
	(GENERATED_FILES): Remove vacall_r.h.mingw32, vacall_r.h.msvc.
	* callback/Makefile.in (INCLUDES): Add -I option for ffcall-abi.h.
	(vacall_r.h): Link to $(srcdir)/vacall_r/vacall_r.h.
	* Makefile.in (DISTCLEANFILES): Update.
	* porting-tools/abis/README: Update.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	vacall: Allow for binary-compatible future changes of the __va_* macros.
	* vacall/vacall.h: New file, extracted from vacall/vacall.h.in.
	Include <stddef.h>, ffcall-abi.h.
	(va_alist): Define als pointer to 'struct vacall_alist'.
	(vacall_start, vacall_start_struct, vacall_arg_char, vacall_arg_schar,
	vacall_arg_uchar, vacall_arg_short, vacall_arg_ushort, vacall_arg_int,
	vacall_arg_uint, vacall_arg_long, vacall_arg_ulong, vacall_arg_longlong,
	vacall_arg_ulonglong, vacall_arg_float, vacall_arg_double,
	vacall_arg_ptr, vacall_arg_struct, vacall_return_void,
	vacall_return_char, vacall_return_schar, vacall_return_uchar,
	vacall_return_short, vacall_return_ushort, vacall_return_int,
	vacall_return_uint, vacall_return_long, vacall_return_ulong,
	vacall_return_longlong, vacall_return_ulonglong, vacall_return_float,
	vacall_return_double, vacall_return_ptr, vacall_return_struct): New
	declarations.
	(va_start_void, va_start_char, va_start_schar, va_start_uchar,
	va_start_short, va_start_ushort, va_start_int, va_start_uint,
	va_start_long, va_start_ulong, va_start_longlong, va_start_ulonglong,
	va_start_float, va_start_double, va_start_ptr, _va_start_struct,
	va_arg_char, va_arg_schar, va_arg_uchar, va_arg_short, va_arg_ushort,
	va_arg_int, va_arg_uint, va_arg_long, va_arg_ulong, va_arg_longlong,
	va_arg_ulonglong, va_arg_float, va_arg_double, va_arg_ptr,
	va_arg_struct, _va_arg_struct, va_return_void, va_return_char,
	va_return_schar, va_return_uchar, va_return_short, va_return_ushort,
	va_return_int, va_return_uint, va_return_long, va_return_ulong,
	va_return_longlong, va_return_ulonglong, va_return_float,
	va_return_double, va_return_ptr, _va_return_struct): Define in terms of
	these functions.
	* vacall/vacall-libapi.c: Include vacall-internal.h instead of
	vacall.h.in.
	(vacall_start, vacall_start_struct, vacall_arg_char, vacall_arg_schar,
	vacall_arg_uchar, vacall_arg_short, vacall_arg_ushort, vacall_arg_int,
	vacall_arg_uint, vacall_arg_long, vacall_arg_ulong, vacall_arg_longlong,
	vacall_arg_ulonglong, vacall_arg_float, vacall_arg_double,
	vacall_arg_ptr, vacall_arg_struct, vacall_return_void,
	vacall_return_char, vacall_return_schar, vacall_return_uchar,
	vacall_return_short, vacall_return_ushort, vacall_return_int,
	vacall_return_uint, vacall_return_long, vacall_return_ulong,
	vacall_return_longlong, vacall_return_ulonglong, vacall_return_float,
	vacall_return_double, vacall_return_ptr, vacall_return_struct): New
	functions.
	* vacall/vacall-internal.h: New file, extracted from vacall/vacall.h.in.
	(__VA_ALIST_WORDS): Fix comment.
	(__va_alist): Declare as 'struct vacall_alist'.
	(__va_start): Add FLAGS argument.
	(__va_start_struct): Renamed from _va_start_struct. Add FLAGS argument.
	(_va_arg_*): Renamed from va_arg_*.
	(_va_arg_ptr): Renamed from va_arg_ptr. Remove TYPE argument.
	(_va_return_*): Renamed from va_return_*.
	(_va_return_ptr): Renamed from va_return_ptr. Remove TYPE argument.
	(__va_return_struct): Renamed from _va_return_struct.
	* vacall/vacall.h.in: Remove file.
	* configure.ac: Don't create vacall.h by substitution.
	* vacall/vacall-*.c: Include vacall-internal.h instead of vacall.h.in.
	* vacall/Makefile.devel (GCCFLAGS): Add -I option for ffcall-abi.h.
	(vacall-*.s): Update dependencies.
	(tests-*.s): Likewise. No more need to symlink vacall.h.
	* vacall/Makefile.maint (vacall.h.msvc, vacall.h.mingw32): Remove
	targets.
	(totally-clean): Don't remove them.
	* vacall/Makefile.in (INCLUDES): Add -I option for ffcall-abi.h.
	(vacall-libapi.o): Update dependencies.
	(install): Update.
	(minitests.o, minitests.s, tests.o, tests.s): Update dependency.
	(distclean): Don't remove vacall.h.
	(SOURCE_FILES): Add vacall.h, vacall-internal.h. Remove vacall.h.in.
	(GENERATED_FILES): Remove vacall.h.mingw32, vacall.h.msvc.
	* Makefile.in (DISTCLEANFILES): Update stamp file list.
	* vacall/README: Update.
	* porting-tools/abis/README: Update.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	vacall: Remove special optimization of va_return_struct macro.
	* vacall/vacall.h.in (va_return_struct): Define through
	_va_return_struct.
	* callback/vacall_r/vacall_r.h.in: Likewise.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	vacall, callback: Prefix all exported symbols at linker level.
	* vacall/vacall-*.c: Define vacall_receiver instead of __vacall,
	callback_receiver instead of __vacall_r,
	callback_get_receiver instead of get__vacall_r.
	* vacall/vacall-libapi.c: Include config.h first.
	(vacall_receiver): Renamed from __vacall.
	(vacall_struct_buffer): Renamed from __va_struct_buffer.
	(vacall_error_type_mismatch): Renamed from __va_error1.
	(vacall_error_struct_too_large): Renamed from __va_error2.
	* vacall/vacall.h.in (_va_start_struct, __va_return): Update.
	(vacall_error_type_mismatch): Renamed from __va_error1.
	(vacall_error_struct_too_large): Renamed from __va_error2.
	(vacall_struct_buffer): Renamed from __va_struct_buffer.
	* callback/vacall_r/vacall-libapi.c: Include config.h first.
	(vacall_struct_buffer): Renamed from __va_struct_buffer.
	(vacall_error_type_mismatch): Renamed from __va_error1.
	(vacall_error_struct_too_large): Renamed from __va_error2.
	* callback/vacall_r/vacall_r.h.in (vacall_error_type_mismatch,
	vacall_error_struct_too_large, vacall_structcpy, vacall_struct_buffer):
	Define to symbols that start with 'callback_'.
	(_va_start_struct, __va_return): Update.
	(callback_receiver): Renamed from __vacall_r.
	(callback_get_receiver): Renamed from get__vacall_r.
	(vacall_error_type_mismatch): Renamed from __va_error1.
	(vacall_error_struct_too_large): Renamed from __va_error2.
	(vacall_struct_buffer): Renamed from __va_struct_buffer.
	* callback/callback.h.in: Update.
	* callback/trampoline_r/trampoline_r.h.in (alloc_trampoline_r,
	free_trampoline_r, is_trampoline_r, trampoline_r_address,
	trampoline_r_data0, trampoline_r_data1): Define to symbols that start
	with 'callback_trampoline_'.
	* callback/elf-hack.txt: Update.
	* porting-tools/abis/call-used-registers.txt: Update.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	callback: Use distinct object file names in static library.
	* callback/vacall_r/vacall-libapi.c: Renamed from
	callback/vacall_r/misc.c.
	* callback/vacall_r/Makefile.in (OBJECTS, SOURCE_FILES): Update.
	(vacall-libapi.lo): Renamed from misc.lo.
	* callback/Makefile.in (libcallback.la): Update.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	vacall: Use distinct object file names in static library.
	* vacall/vacall-libapi.c: Renamed from vacall/misc.c.
	* vacall/Makefile.in (OBJECTS, SOURCE_FILES): Update.
	(vacall-libapi.o): Renamed from misc.o.
	* vacall/README: Update.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	avcall: Modernize.
	* avcall/avcall.h: Change double-include guard. Modernize copyright
	header.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	avcall: Allow for binary-compatible future changes of the __av_* macros.
	* avcall/avcall.h: New file, extracted from avcall/avcall.h.in.
	Include <stddef.h>, ffcall-abi.h.
	When included from avcall-internal.h, include avcall-alist.h and add
	member '_av_m_alist' in av_alist type.
	(avcall_overflown, avcall_start, avcall_start_struct, avcall_arg_long,
	avcall_arg_ulong, avcall_arg_ptr, avcall_arg_longlong,
	avcall_arg_ulonglong, avcall_arg_float, avcall_arg_double,
	avcall_arg_struct): New declarations.
	(av_overflown, av_start_void, av_start_char, av_start_schar,
	av_start_uchar, av_start_short, av_start_ushort, av_start_int,
	av_start_uint, av_start_long, av_start_ulong, av_start_longlong,
	av_start_ulonglong, av_start_float, av_start_double, av_start_ptr,
	_av_start_struct, av_char, av_schar, av_short, av_int, av_long,
	av_uchar, av_ushort, av_uint, av_ulong, av_ptr, av_longlong,
	av_ulonglong, av_float, av_double, av_struct, _av_struct, av_call):
	Define in terms of these functions.
	* avcall/avcall-libapi.c: New file.
	* avcall/avcall-alist.h: New file, extracted from avcall/avcall.h.in.
	* avcall/avcall-internal.h: New file, extracted from avcall/avcall.h.in.
	(__av_start): Add LIST_ARGS_END and FLAGS arguments.
	(__av_start1, __av_start_init_eptr): Add LIST_ARGS_END argument.
	(__av_start_struct): Add LIST_ARGS, LIST_ARGS_END, FLAGS arguments.
	(__av_long): Renamed from _av_long.
	(__av_ulong): Renamed from _av_ulong.
	(__av_ptr): Renamed from _av_ptr. Remove TYPE argument.
	(__av_arg_longlong): Renamed from __av_longlong.
	(__av_longlong): Renamed from _av_longlong.
	(__av_ulonglong): Renamed from _av_ulonglong.
	* avcall/avcall.h.in: Remove file.
	* configure.ac: Don't create avcall.h by substitution.
	* avcall/avcall-*.c: Include avcall-internal.h instead of avcall.h.in.
	(avcall_call): Change argument type to 'av_alist*'.
	* avcall/Makefile.devel (GCCFLAGS): Add -I option for ffcall-abi.h.
	(avcall-*.s): Update dependencies.
	(tests-*.s): Likewise. No more need to symlink avcall.h.
	* avcall/Makefile.maint (avcall.h.msvc, avcall.h.mingw32): Remove
	targets.
	(totally-clean): Don't remove them.
	* avcall/Makefile.in (INCLUDES): Add -I option for ffcall-abi.h.
	(OBJECTS): Add avcall-libapi.lo.
	(avcall-libapi.lo): New target.
	(install-lib, install): Update.
	(minitests.o, minitests.s, tests.o, tests.s): Update dependency.
	(distclean): Don't remove avcall.h.
	(SOURCE_FILES): Add avcall.h, avcall-internal.h, avcall-alist.h,
	avcall-libapi.c. Remove avcall.h.in.
	(GENERATED_FILES): Remove avcall.h.mingw32, avcall.h.msvc.
	* Makefile.in (DISTCLEANFILES): Update stamp file list.
	* avcall/README: Update.
	* porting-tools/abis/README: Update.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	avcall: Allow for binary-compatible future changes of __av_alist.
	* avcall/avcall.h.in (__AV_ALIST_SIZE_BOUND): New macro.
	(__av_alist_verify): New verification.
	(av_alist): Use it to allocate room.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	avcall: Separate the fixed-size part from the variable part of av_alist.
	* avcall/avcall.h.in (__av_alist): Renamed from av_alist. Add 'args'
	field as a pointer.
	(av_alist): New type.
	(_av_overflown): Renamed from av_overflown.
	(av_overflown): New macro.
	(__av_start): Add LIST_ARGS argument.
	(av_start_*, _av_start_struct): Update accordingly.
	(_av_long): Renamed from av_long.
	(_av_ulong): Renamed from av_ulong.
	(_av_ptr): Renamed from av_ptr.
	(av_long, av_ulong, av_ptr): New macros.
	(_av_longlong): Renamed from av_longlong.
	(_av_ulonglong): Renamed from av_ulonglong.
	(av_longlong, av_ulonglong): New macros.
	(_av_float): Renamed from av_float.
	(_av_double): Renamed from av_double.
	(av_float, av_double): New macros.
	(av_struct, _av_struct, av_call): Update.
	(avcall_call): Take an '__av_alist*' parameter.
	* avcall/avcall-*.c (avcall_call): Take an '__av_alist*' parameter.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	avcall: Remove unused macro argument TYPE.
	* avcall/avcall.h.in (__av_struct_copy, __av_struct_leftadjusted,
	__av_struct_rightadjusted, __av_struct): Remove TYPE argument.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	avcall: Remove special optimization of av_struct macro.
	* avcall/avcall.h.in (av_struct): Take the address of VAL.
	(__av_struct_assign): Remove macro.
	(__av_struct, __av_struct_leftadjusted, __av_struct_rightadjusted):
	Remove ASSIGN argument; use __av_struct_copy instead.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	avcall: Evaluate __AV_ALIST_WORDS only during av_start_* macros. Part 1.
	* avcall/avcall.h.in (av_alist): Enable 'eptr' field on all platforms.
	(__av_eptr): Remove macro. Use (LIST).eptr eveywhere instead.
	(__av_start_init_eptr): New macro.
	(__av_start): Invoke it.
	(__av_start1): Don't initialize (LIST).eptr here.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	avcall: Prefix all exported symbols at linker level with 'avcall_'.
	* avcall/avcall.h.in (avcall_call): Renamed from __builtin_avcall.
	* avcall/avcall-*.c: Update accordingly.
	* avcall/DOC: Likewise.
	* avcall/avcall.3: Likewise.
	* avcall/avcall.html: Likewise.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	trampoline: Rework API.
	* trampoline/trampoline.h: Add C++ guards. Add comments.
	(trampoline_function_t): Renamed from __TR_function.
	(alloc_trampoline, trampoline_address, trampoline_variable,
	trampoline_data): Change signatures.
	* trampoline/trampoline.c: Update accordingly.
	* trampoline/test1.c (function): Remove type.
	(main): Update.
	* trampoline/test2.c (function): Remove type.
	(main): Update.
	* NEWS: Mention the changes.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	trampoline: Restructure include file.
	* trampoline/trampoline.h: Renamed from trampoline/trampoline.h.in.
	* configure.ac: Don't create trampoline.h by substitution.
	* trampoline/Makefile.in (trampoline.h): Remove target.
	(trampoline.lo, test1.o, test2.o): Update dependency.
	(install, SOURCE_FILES): Update.
	(distclean): Don't remove trampoline.h.
	* trampoline/README: Update.
	* Makefile.in (DISTCLEANFILES): Update stamp file list.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	Move ABI indicator macro definitions to a separate include file.
	Rationale: Prepare for getting rid of most .h.in -> .h substitutions.
	* ffcall-abi.h: New file.
	* Makefile.in (install, uninstall): Install/uninstall ffcall-abi.h.
	(SOURCE_FILES): Add ffcall-abi.h.
	* porting-tools/abis/predefines.c: New file.
	* porting-tools/abis/README: Update.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	Move libffcall version number to a separate include file.
	Rationale: Prepare for getting rid of most .h.in -> .h substitutions.
	* ffcall-version.in.h: New file.
	* configure.ac: Invoke AC_CONFIG_HEADERS for ffcall-version.h.
	* avcall/avcall.h.in (LIBFFCALL_VERSION): Remove definition. Include
	ffcall-version.h instead.
	* vacall/vacall.h.in: Likewise.
	* trampoline/trampoline.h.in: Likewise.
	* callback/callback.h.in: Likewise.
	* callback/vacall_r/vacall_r.h.in (LIBFFCALL_VERSION): Remove
	definition.
	* callback/trampoline_r/trampoline_r.h.in (LIBFFCALL_VERSION): Likewise.
	* dummy/ffcall-version.h: New file.
	* avcall/Makefile.devel (GCCFLAGS): Add -I option to find a dummy
	ffcall-version.h.
	* vacall/Makefile.devel (GCCFLAGS): Likewise.
	* callback/vacall_r/Makefile.devel (GCCFLAGS): Likewise.
	* vacall/Makefile.maint (VERSION): Remove macro.
	(vacall.h.msvc, vacall.h.mingw32): Don't substitute LIBFFCALL_VERSION.
	* callback/vacall_r/Makefile.maint (VERSION): Remove macro.
	(vacall_r.h.msvc, vacall_r.h.mingw32): Don't substitute
	LIBFFCALL_VERSION.
	* Makefile.in (ffcall-version.h): New target.
	(install, installdirs, uninstall): Install/uninstall ffcall-version.h.
	(DISTCLEANFILES): Add ffcall-version.h. Update stamp file list.
	(SOURCE_FILES): Add ffcall-version.in.h, dummy/ffcall-version.h.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	Remove configure test for 'long long'. Assume the compiler has it.
	Rationale: All compilers nowadays have 'long long', for years.
	* configure.ac: Don't invoke AC_TYPE_LONG_LONG_INT.
	* avcall/avcall.h.in (HAVE_LONG_LONG_INT): Remove macro.
	* vacall/vacall.h.in (HAVE_LONG_LONG_INT): Likewise.
	* callback/vacall_r/vacall_r.h.in (HAVE_LONG_LONG_INT): Likewise.
	* vacall/Makefile.devel (GCCFLAGS): Remove -DHAVE_LONG_LONG_INT.
	* callback/vacall_r/Makefile.devel (GCCFLAGS): Likewise.
	* avcall/tests.c: Remove test for HAVE_LONG_LONG_INT.
	* vacall/tests.c: Likewise.
	* callback/tests.c: Likewise.
	* porting-tools/abis/README: Update.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	Remove unused configure test AC_C_CHAR_UNSIGNED.
	* vacall/vacall.h.in (__CHAR_UNSIGNED__): Remove unuseed macro.
	* callback/vacall_r/vacall_r.h.in (__CHAR_UNSIGNED__): Likewise.
	* configure.ac: Don't invoke AC_C_CHAR_UNSIGNED.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	Don't depend on FFCALL_IREG_FLOAT_RETURN configure result.
	Rationale: The installed .h files should be compiler independent.
	* avcall/avcall.h.in (__IREG_FLOAT_RETURN__): Remove macro. Assume it is
	not defined on m68k.
	* vacall/vacall.h.in (__IREG_FLOAT_RETURN__): Likewise.
	* callback/vacall_r/vacall_r.h.in (__IREG_FLOAT_RETURN__): Likewise.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	Don't depend on FFCALL_SMALL_STRUCT_RETURN configure result.
	Rationale: The installed .h files should be compiler independent.
	* avcall/avcall.h.in (__SMALL_STRUCT_RETURN__): Remove macro. Use
	explicit ABI conditional instead.
	* vacall/vacall.h.in (__SMALL_STRUCT_RETURN__): Likewise.
	* callback/vacall_r/vacall_r.h.in (__SMALL_STRUCT_RETURN__): Likewise.
	* avcall/Makefile.maint (avcall.h.msvc, avcall.h.mingw32): Don't
	substitute __SMALL_STRUCT_RETURN__.
	* vacall/Makefile.maint (vacall.h.msvc, vacall.h.mingw32): Likewise.
	* callback/vacall_r/Makefile.maint (vacall_r.h.msvc,
	vacall_r.h.mingw32): Likewise.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	Move a file.
	* avcall/port-structs.c: Moved to porting-tools/abis/.
	* porting-tools/abis/README: Mention it.

2017-07-30  Bruno Haible  <bruno@clisp.org>

	Remove support for old PCC struct return convention.
	It is not reentrant and therefore a fortiori not multithread-safe.
	* m4/pccstruct.m4: Remove file.
	* Makefile.in (SOURCE_FILES): Remove it.
	* configure.ac: Remove FFCALL_PCC_STRUCT_RETURN invocation.
	* avcall/avcall.h.in (__PCC_STRUCT_RETURN__): Remove macro.
	(__AV_PCC_STRUCT_RETURN): Remove enum value.
	(__av_start_struct1): Remove macro.
	(_av_start_struct): Use __av_start_struct2 instead.
	* avcall/avcall-*.c: Remove support for __AV_PCC_STRUCT_RETURN flag.
	* vacall/vacall.h.in (__PCC_STRUCT_RETURN__): Remove macro.
	(__VA_PCC_STRUCT_RETURN): Remove enum value.
	(_va_start_struct): Update accordingly.
	* callback/vacall_r/vacall_r.h.in: Likewise.
	* vacall/vacall-*.c: Remove support for __VA_PCC_STRUCT_RETURN flag.
	* vacall/misc.c (__va_error2): Update error message.
	* callback/vacall_r/misc.c (__va_error2): Likewise.

2017-07-22  Bruno Haible  <bruno@clisp.org>

	ia64: Make vacall code more robust.
	* vacall/vacall-ia64.c: Use a split struct to allocate room for the
	8 leading words in the callee's stack.
	* porting-tools/abis/stack-frame.txt: Mention the change.

2017-07-22  Bruno Haible  <bruno@clisp.org>

	alpha: Make vacall code more robust.
	* vacall/vacall-alpha.c: Use a split struct to allocate room for the
	6 leading words in the callee's stack.
	* porting-tools/abis/stack-frame.txt: Mention the change.

2017-07-22  Bruno Haible  <bruno@clisp.org>

	alpha: Make vacall code more maintainable.
	* vacall/vacall.h.in (__va_alist, va_arg_double, va_arg_float) [alpha]:
	Add fields 'farg_offset', 'farg'.
	* callback/vacall_r/vacall_r.h.in: Likewise.
	* vacall/vacall-alpha.c (__vacall): Don't allocate the fargs in the
	'locals' struct. Initialize 'farg_offset' field.

2017-07-22  Bruno Haible  <bruno@clisp.org>

	mipsn32, mips64: Remove unused field.
	* vacall/vacall.h.in (__va_alist) [__mipsn32__ || __mips64__]: Remove
	field 'memargptr'.
	* callback/vacall_r/vacall_r.h.in: Likewise.
	* vacall/vacall-mipsn32.c (__vacall): Update accordingly.
	* vacall/vacall-mips64.c (__vacall): Likewise.

2017-07-22  Bruno Haible  <bruno@clisp.org>

	mipsn32, mips64: Make vacall code more robust.
	* vacall/Makefile.devel (vacall-mipsn32eb-macro.S,
	vacall-mipsn32el-macro.S, vacall-mips64eb-macro.S,
	vacall-mips64el-macro.S): Remove post-processing hack.
	* callback/vacall_r/Makefile.devel (vacall-mipsn32eb-macro.S,
	vacall-mipsn32el-macro.S, vacall-mips64eb-macro.S,
	vacall-mips64el-macro.S): Likewise.
	* vacall/vacall-mipsn32.c: Use a split struct to allocate room for the
	8 leading words in the callee's stack.
	* vacall/vacall-mips64.c: Likewise.
	* porting-tools/abis/stack-frame.txt: Mention the change.

2017-07-22  Bruno Haible  <bruno@clisp.org>

	mips: Don't store dynamic state in the flags.
	* avcall/avcall.h.in (__AV_FLOAT_1, __AV_FLOAT_2, __AV_DOUBLE_1,
	__AV_DOUBLE_2): Remove enum values.
	(av_alist) [mips]: Store the number of floating-point register arguments
	in fanum. Store bitmasks in farg_mask and darg_mask. Rename field
	'floatarg' to 'fargs'. Rename field 'doublearg' to 'dargs'.
	(__av_start1, av_float, av_double): Update implementation accordingly.
	* avcall/avcall-mips.c (__builtin_avcall): Access farg_mask and
	darg_mask instead of the flags.
	* vacall/vacall.h.in (__VA_FLOAT_1, __VA_FLOAT_2): Remove enum values.
	(__VA_REGISTER_FLOATSTRUCT_RETURN, __VA_REGISTER_DOUBLESTRUCT_RETURN):
	Change values.
	(__va_alist, va_arg_float, va_arg_double) [mips]: Store the number of
	floating-point register arguments in fanum. Use it instead of the
	__VA_FLOAT_1 flag.
	* callback/vacall_r/vacall_r.h.in: Likewise.
	* vacall/vacall-mips.c (__vacall): Update accordingly.

2017-07-22  Bruno Haible  <bruno@clisp.org>

	powerpc, powerpc64, ia64, x86_64: Undo premature optimization.
	* vacall/vacall.h.in: Use 'fanum' field instead of 'memfargptr' field.
	* callback/vacall_r/vacall_r.h.in: Likewise.
	* vacall/vacall-ia64.c: Update accordingly.
	* vacall/vacall-powerpc.c: Likewise.
	* vacall/vacall-powerpc64.c: Likewise.
	* vacall/vacall-x86_64.c: Likewise.

2017-07-22  Bruno Haible  <bruno@clisp.org>

	x86_64: Undo premature optimization.
	* vacall/vacall.h.in [__x86_64__]: Use 'ianum' field instead of
	'memiargptr' field.
	* callback/vacall_r/vacall_r.h.in: Likewise.
	* vacall/vacall-x86_64.c (__vacall): Update accordingly.

2017-07-22  Bruno Haible  <bruno@clisp.org>

	x86_64: Undo premature optimization.
	* avcall/avcall.h.in [__x86_64__]: Use 'ianum' field instead of 'iaptr'
	field.

2017-07-22  Bruno Haible  <bruno@clisp.org>

	ia64, x86_64: Use symbolic constants.
	* avcall/avcall.h.in (__AV_FARG_NUM) [__ia64__ || __x86_64__]:
	New macro.
	(av_float, av_double): Use it.
	(__av_struct): Use __AV_IARG_NUM.
	* vacall/vacall.h.in (__VA_FARG_NUM) [__ia64__ || __x86_64__]:
	New macro.
	(va_arg_float, va_arg_double): Use it.
	* callback/vacall_r/vacall_r.h.in: Likewise.

2017-07-22  Bruno Haible  <bruno@clisp.org>

	armhf: Fix a bug in vacall (failing tests d_d13i, f_f17l3L, d_d17l3L).
	* vacall/vacall.h.in (__va_alist, __va_start_struct2,
	__va_arg_leftadjusted, __va_arg_rightadjusted, __va_arg_longlong)
	[__armhf__]: Use 'iarg' and 'ianum' fields instead of 'saptr' field.
	(va_arg_float, va_arg_double) [__armhf__]: Don't force all remaining
	integer arguments to the stack.
	* callback/vacall_r/vacall_r.h.in: Likewise.
	* vacall/vacall-armhf.c (__vacall): Update accordingly.

2017-07-22  Bruno Haible  <bruno@clisp.org>

	armhf: Fix a bug in avcall (failing tests f_f17l3L, d_d17l3L).
	* avcall/avcall.h.in [__armhf__]: Store integer argument count in ianum.
	(__av_start1, __av_start_struct4, __av_word, __av_longlong, av_float,
	av_double, __av_struct): Update implementation accordingly.
	* avcall/avcall-arm.c: Add comment.
	* avcall/avcall-armhf.c: Likewise.
	* porting-tools/abis/stack-frame.txt: Update information.
	* NEWS: Mention the fix.

2017-07-22  Bruno Haible  <bruno@clisp.org>

	powerpc: Make avcall code more robust.
	* avcall/avcall-powerpc.c (__builtin_avcall) [_AIX]: Don't rely on a
	particular stack frame layout produced by GCC. Use __builtin_alloca
	instead.
	* avcall/avcall-powerpc64.c (STACK_OFFSET): Remove unused macro.

2017-07-22  Bruno Haible  <bruno@clisp.org>

	powerpc: Don't ever access out-of-range array elements.
	* avcall/avcall-powerpc.c (__builtin_avcall): Access only 8 fargs when
	only 8 exist.

2017-07-22  Bruno Haible  <bruno@clisp.org>

	powerpc, powerpc64: Use symbolic constants.
	* avcall/avcall.h.in (__AV_FARG_NUM) [__powerpc__ || __powerpc64__]:
	New macro.
	(av_float, av_double): Use it.
	* vacall/vacall.h.in (__VA_FARG_NUM) [__powerpc__ || __powerpc64__]:
	New macro.
	(va_arg_float, va_arg_double): Use it.
	* callback/vacall_r/vacall_r.h.in: Likewise.

2017-07-22  Bruno Haible  <bruno@clisp.org>

	powerpc: Fix a bug (failing tests f_f12i, f_f13i, d_d12i, d_d13i).
	* avcall/avcall.h.in [__powerpc_sysv4__]: Store integer register
	arguments in iargs[] and their count in ianum.
	(__av_start1, __av_start_struct4, av_long, av_ulong, av_ptr,
	__av_longlong, __av_struct): Update implementation accordingly.
	* avcall/avcall-powerpc.c (__builtin_avcall): Update accordingly.
	Ignore farglen in the arg copy loop.
	* vacall/vacall.h.in (__va_alist, __va_start_struct2,
	__va_arg_leftadjusted, __va_arg_rightadjusted, __va_arg_longlong,
	va_arg_float, va_arg_double) [__powerpc_sysv4__]: Use 'ianum' field
	instead of 'saptr', 'onstack' fields. Don't bump 'ianum' in
	va_arg_float, va_arg_double.
	* callback/vacall_r/vacall_r.h.in: Likewise.
	* vacall/vacall-powerpc.c (__vacall): Update accordingly
	* porting-tools/abis/stack-frame.txt: Fix information.
	* NEWS: Mention the fix.

2017-07-22  Bruno Haible  <bruno@clisp.org>

	powerpc: Simplify #if expressions.
	* avcall/avcall.h.in (__powerpc_aix__, __powerpc_sysv4__): New macros.
	Use them in #if expressions.
	* vacall/vacall.h.in: Likewise.
	* callback/vacall_r/vacall_r.h.in: Likewise.
	* avcall/avcall-powerpc.c: Add comments.
	* vacall/vacall-powerpc.c: Likewise.

2017-07-22  Bruno Haible  <bruno@clisp.org>

	s390, s390x: Merge common code.
	* vacall/vacall.h.in (va_arg_float, va_arg_double) [s390,s390x]: Merge.
	* callback/vacall_r/vacall_r.h.in: Likewise.

2017-07-22  Bruno Haible  <bruno@clisp.org>

	s390: Fix a bug (failing tests f_f3i...f_f13i, d_d3i...d_d13i).
	* vacall/vacall.h.in (va_arg_float, va_arg_double) [s390]: Don't bump
	ianum,
	* callback/vacall_r/vacall_r.h.in: Likewise.
	* NEWS: Mention the fix.

2017-07-22  Bruno Haible  <bruno@clisp.org>

	s390: Make vacall code more similar to s390x, arm64 cases.
	* vacall/vacall.h.in (__va_alist, __va_start_struct2,
	__va_arg_leftadjusted, __va_arg_rightadjusted, __va_arg_adjusted,
	va_arg_float, va_arg_double, __va_arg_struct) [s390]: Use 'ianum'
	field instead of 'saptr', 'onstack' fields.
	* callback/vacall_r/vacall_r.h.in: Likewise.
	* vacall/vacall-s390.c: Update accordingly.

2017-07-22  Bruno Haible  <bruno@clisp.org>

	Add some mixed-number args boundary tests.
	* avcall/tests.c (f_f17l3L, d_d17l3L): New tests.
	* vacall/tests.c: Likewise.
	* callback/tests.c: Likewise.

2017-07-22  Bruno Haible  <bruno@clisp.org>

	Add more mixed-number tests.
	* avcall/tests.c (f_fi, ..., f_f13i, d_di, ..., d_d13i): New tests.
	* vacall/tests.c: Likewise.
	* callback/tests.c: Likewise.

2017-07-19  Bruno Haible  <bruno@clisp.org>

	s390: Make avcall code more robust.
	* avcall/avcall-s390.c (STACK_OFFSET): Remove macro.
	(__builtin_avcall): Don't rely on a particular stack frame layout
	produced by GCC. Use __builtin_alloca instead.

2017-07-19  Bruno Haible  <bruno@clisp.org>

	s390: Make avcall code more similar to s390x, arm64, x86_64 cases.
	* avcall/avcall.h.in (av_alist, __av_start_struct4, __av_word, av_long,
	av_ulong, av_ptr, __av_longlong, __av_struct) [s390]: Use iargs[] array
	for the first 5 general-purpose argument words, like on s390x.
	(__av_struct_rightadjusted) [s390]: Remove macro.
	* avcall/avcall-s390.c (__builtin_avcall): Update accordingly.

2017-07-19  Bruno Haible  <bruno@clisp.org>

	s390: Simplify avcall code.
	* avcall/avcall.h.in (av_alist, __av_start1, __av_start_struct4,
	__av_word, __av_longlong, av_float, av_double,
	__av_struct_rightadjusted, __av_struct) [s390]: Use 'ianum' field
	instead of 'fargwords' field.
	* avcall/avcall-s390.c (__builtin_avcall): Update accordingly.

2017-07-16  Bruno Haible  <bruno@clisp.org>

	Allow building statically linked binaries, through LDFLAGS="-static".
	* Makefile.main (libtool-imported-files): Fetch and apply patch from
	<https://lists.gnu.org/archive/html/bug-libtool/2017-07/msg00000.html>:

	2017-07-15  Bruno Haible  <bruno@clisp.org>

		* build-aux/ltmain.sh (func_mode_help, func_mode_link): In the
		link mode, accept option '-static-uninstalled-libs' in place of
		'-static', and make '-static' an equivalent of '-all-static'.

2017-07-07  Bruno Haible  <bruno@clisp.org>

	build: Avoid a hanging configure test on FreeBSD/arm64.
	Seen with FreeBSD 11.1-RC1 on arm64 (under qemu 2.9.0).
	* m4/codeexec.m4 (FFCALL_CODEEXEC): Avoid running the test on
	FreeBSD/arm64.

2017-06-27  Bruno Haible  <bruno@clisp.org>

	build: Fix warning in autoconf test.
	* m4/shm.m4 (CL_SHM): Include <stdlib.h>, to declare exit().

2017-06-25  Bruno Haible  <bruno@clisp.org>

	Add doc about ABIs and calling conventions.
	* porting-tools/abis: New directory.
	* common/reg-struct-return.txt: Moved to porting-tools/abis/.
	* callback/call-used-registers.txt: Likewise.

2017-06-25  Bruno Haible  <bruno@clisp.org>

	Add doc about emulation of target platforms.
	* porting-tools/emulation: New directory.

2017-06-24  Bruno Haible  <bruno@clisp.org>

	s390: Simplify code.
	* vacall/vacall.h.in (__va_alist) [s390]: Use a counter instead of
	2 pointers.
	(va_arg_float, va_arg_double): Update accordingly;
	* callback/vacall_r/vacall_r.h.in: Likewise.
	* vacall/vacall-s390.c: Update accordingly.

2017-06-24  Bruno Haible  <bruno@clisp.org>

	s390: Simplify code.
	* avcall/avcall.h.in (av_alist) [s390]: Use a counter instead of
	4 pointers. Use 2 bitmasks instead of 2 int[] arrays.
	(__av_start1, av_float, av_double): Update accordingly.
	* avcall/avcall-s390.c (__builtin_avcall): Likewise.

2017-06-24  Bruno Haible  <bruno@clisp.org>

	build: Improve guesses when cross-compiling.
	* m4/codeexec.m4 (FFCALL_CODEEXEC, FFCALL_CODEEXEC_PAX): When
	cross-compiling, use the known autoconf test results.
	* m4/mmap.m4 (FFCALL_MMAP): Likewise.
	* m4/mprotect.m4 (FFCALL_MPROTECT): Likewise.
	* m4/pccstruct.m4 (FFCALL_PCC_STRUCT_RETURN): Likewise.
	* m4/shm.m4 (CL_SHM): Likewise.
	* m4/smallstruct.m4 (FFCALL_SMALL_STRUCT_RETURN): Likewise.

2017-06-24  Bruno Haible  <bruno@clisp.org>

	Bump version number.
	* VERSION: Set to 2.0.
	* NEWS: Open new section for 2.0.

2017-06-24  Bruno Haible  <bruno@clisp.org>

	build: Use decimal notation for the version number.
	* VERSION: Set to 1.13.
	* configure.ac: Simplify AC_CONFIG_HEADERS invocations. Define
	LIBFFCALL_VERSION as C macro, based on PACKAGE_VERSION.
	* avcall/avcall.h.in (LIBFFCALL_VERSION): Use a plain #define, for
	substitution by config.status.
	* vacall/vacall.h.in: Likewise.
	* trampoline/trampoline.h.in: Likewise.
	* callback/callback.h.in: Likewise.
	* callback/vacall_r/vacall_r.h.in: Likewise.
	* callback/trampoline_r/trampoline_r.h.in: Likewise.

2017-06-24  Bruno Haible  <bruno@clisp.org>

	trampoline, callback: Make multithread-safe.
	* Makefile.maint (AUTOMAKE): New variable.
	(all): Depend on Makefile-ins.
	(GNULIB_MODULES): Add 'lock'.
	(gnulib-m4/gnulib-cache.m4): Don't remove generated gnulib-lib files.
	(ALL_MAKEFILE_IN_FROM_AM): New variable.
	(Makefile-ins, gnulib-lib/Makefile.in): New targets.
	* configure.ac: Invoke AM_INIT_AUTOMAKE. Arrange to generate
	gnulib-lib/Makefile. Invoke gl_EARLY earlier. Recurse into gnulib-lib
	directory.
	* Makefile.in (DISTCLEANFILES): Add the various stamp-h* files created
	by config.status at the end of the 'configure' run.
	(AUTOMAKE_IMPORTED_FILES): New variable.
	(IMPORTED_FILES): Use it.
	* trampoline/Makefile.in (INCLUDES): Reference the gnulib build dir and
	source dir.
	(LTLIBTHREAD): New variable.
	(libtrampoline.la): Link against libgnu.la, with options $(LTLIBTHREAD).
	(test1, test2): Link against libtrampoline.la.
	* trampoline/trampoline.c: Include glthread/lock.h.
	(zero_fd, file_fd, file_length): Move to file scope.
	(for_mmap_init): New function, extracted from alloc_trampoline.
	(for_mmap_once): New variable.
	(freelist_lock): New variable.
	(alloc_trampoline): Use once-only execution and locking.
	* callback/trampoline_r/Makefile.in (INCLUDES): Reference the gnulib
	build dir and source dir.
	(LTLIBTHREAD): New variable.
	(libtrampoline.la): Link against libgnu.la, with options $(LTLIBTHREAD).
	(test1, test2): Link against libtrampoline.la.
	* callback/trampoline_r/trampoline.c: Include glthread/lock.h.
	(zero_fd, file_fd, file_length): Move to file scope.
	(for_mmap_init): New function, extracted from alloc_trampoline.
	(for_mmap_once): New variable.
	(freelist_lock): New variable.
	(alloc_trampoline_r): Use once-only execution and locking.
	* callback/Makefile.in (LTLIBTHREAD): New variable.
	(libcallback.la): Link against libgnu.la, with options $(LTLIBTHREAD).

2017-06-24  Bruno Haible  <bruno@clisp.org>

	build: Rename glm4 to gnulib-m4.
	* autogen.sh: Write gnulib-m4 instead of glm4.
	* Makefile.maint: Likewise.
	* Makefile.in (GNULIB_IMPORTED_FILES): Likewise.

2017-06-24  Bruno Haible  <bruno@clisp.org>

	build: Assume a single configure.ac file.
	* Makefile.maint (ALL_CONFIGURE_AC, aclocal.m4): Simplify.

2017-06-24  Bruno Haible  <bruno@clisp.org>

	Merge all autoconf configurations into a single one.
	* configure.ac: Include the body of all other configure.ac files.
	Use a single config.h file. Inline FFCALL_COMMON_LIBTOOL and
	FFCALL_COMMON_TRAMPOLINE.
	* avcall/configure.ac: Remove file.
	* vacall/configure.ac: Remove file.
	* trampoline/configure.ac: Remove file.
	* callback/configure.ac: Remove file.
	* callback/vacall_r/configure.ac: Remove file.
	* callback/trampoline_r/configure.ac: Remove file.
	* m4/general.m4 (FFCALL_COMMON_LIBTOOL, FFCALL_COMMON_TRAMPOLINE):
	Remove macros.
	* build-aux/ac-help.sed: Remove file.
	* Makefile.maint (CONFIGURED_SUBDIRS, SUBDIRS_CONFIGURE): Remove
	variables.
	(ALL_CONFIGURE): Keep only the top-level configure.
	(%/configure): Remove rule.
	(ALL_CONFIG_H_IN): Set to only the top-level config.h.in.
	(config.h.in): Replace the %/config.h.in rule.
	* vacall/Makefile.maint (config.h.msvc, config.h.mingw32): Use top-level
	config.h.in.
	* trampoline/Makefile.maint (config.h.msvc, config.h.mingw32): Use
	top-level config.h.in.
	* callback/Makefile.maint (vacall_r/config.h.msvc,
	vacall_r/config.h.mingw32, trampoline_r/config.h.msvc,
	trampoline_r/config.h.mingw32): Update dependencies.
	* callback/vacall_r/Makefile.maint (config.h.msvc, config.h.mingw32):
	Use top-level config.h.in.
	* callback/trampoline_r/Makefile.maint (config.h.msvc,
	config.h.mingw32): Use top-level config.h.in.
	* Makefile.in (DISTCLEANFILES): Add config.h, libtool.
	(SOURCE_FILES): Remove build-aux/ac-help.sed.
	(GENERATED_FILES): Add config.h.in. Remove */config* and
	callback/*/config*.
	* avcall/Makefile.in (INCLUDES): Look also in '..'.
	(top_builddir): Set to '..'.
	(distclean): Don't remove config* and libtool.
	(SOURCE_FILES): Remove configure.ac.
	* vacall/Makefile.in (INCLUDES): Look also in '..'.
	(misc.o): Update dependency.
	(distclean): Don't remove config* and libtool.
	(SOURCE_FILES): Remove configure.ac.
	* trampoline/Makefile.in (INCLUDES): Look also in '..'.
	(top_builddir): Set to '..'.
	(distclean): Don't remove config* and libtool.
	(SOURCE_FILES): Remove configure.ac.
	* callback/Makefile.in (INCLUDES): Look also in '..'.
	(top_builddir): Set to '..'.
	(DISTCLEANFILES): Remove config* and libtool.
	(SOURCE_FILES): Remove configure.ac.
	* callback/vacall_r/Makefile.in (INCLUDES): Look also in '../..'.
	(top_builddir): Set to '../..'.
	(misc.lo): Update dependency.
	(distclean): Don't remove config* and libtool.
	(SOURCE_FILES): Remove configure.ac.
	* callback/trampoline_r/Makefile.in (INCLUDES): Look also in '../..'.
	(top_builddir): Set to '../..'.
	(distclean): Don't remove config* and libtool.
	(SOURCE_FILES): Remove configure.ac.
	* README, */README: Update.

2017-06-24  Bruno Haible  <bruno@clisp.org>

	trampoline: Build library using libtool.
	* trampoline/configure.ac: Invoke FFCALL_COMMON_LIBTOOL.
	(CPU_OBJECTS): Now contains .lo file names instead of .o file names.
	* trampoline/Makefile.in (LIBTOOL*, top_builddir): New variables.
	(*.lo): Targets renamed from *.o.
	(libtrampoline.la): Replaces target libtrampoline.a.
	Use LIBTOOL* variables as appropriate.
	(clean): Remove also *.lo, libtrampoline.*, .libs, _libs.
	(distclean): Remove also 'libtool'.

2017-06-24  Bruno Haible  <bruno@clisp.org>

	trampoline: Generate position-independent code.
	* trampoline/Makefile.devel (GCCFLAGS): Add -fPIC.

2017-06-24  Bruno Haible  <bruno@clisp.org>

	vacall: Explain why not using libtool.
	* vacall/README: Add comment about libtool.

2017-06-24  Bruno Haible  <bruno@clisp.org>

	Fix result of an autoconf test on AIX.
	* m4/codeexec.m4 (FFCALL_CODEEXEC): Don't actually run the test on
	powerpc64 (AIX and Linux) and ia64 (Linux).

2017-06-24  Bruno Haible  <bruno@clisp.org>

	build: Avoid testing an undefined variable.
	* m4/codeexec.m4 (FFCALL_CODEEXEC_PAX): Before testing
	cl_cv_func_mprotect_works, test ac_cv_func_mprotect.

2017-06-24  Bruno Haible  <bruno@clisp.org>

	build: Add necessary AC_REQUIREs.
	* m4/codeexec.m4 (FFCALL_CODEEXEC): Require AC_CANONICAL_HOST and
	gl_HOST_CPU_C_ABI.

2017-06-24  Bruno Haible  <bruno@clisp.org>

	Fix build error on Solaris 11 with Oracle Developer Studio 12.5.
	* common/asm-x86_64.sh: Clarify the necessary postprocessing.
	* common/asm-i386.sh: Document the necessary postprocessing.
	* avcall/Makefile.in (avcall-i386.s): Do more postprocessing.
	* vacall/Makefile.in (vacall-i386.s): Likewise.
	* callback/vacall_r/Makefile.in (vacall-i386.s): Likewise.

2017-06-24  Bruno Haible  <bruno@clisp.org>

	Fix compilation error on CentOS 5.
	* trampoline/trampoline.c (open_noinherit): New function.
	(alloc_trampoline): Use it.
	* callback/trampoline_r/trampoline.c: Likewise.

2017-06-24  Bruno Haible  <bruno@clisp.org>

	Prefer https over http URLs.
	* autogen.sh: Access ftp.gnu.org through https.

2017-06-24  Bruno Haible  <bruno@clisp.org>

	Remove obsolete mention of nonexistent file.
	* avcall/README: Don't mention underscore.h.
	* vacall/README: Likewise.

2017-06-24  Bruno Haible  <bruno@clisp.org>

	Remove obsolete protexec.c file.
	* trampoline/protexec.c: Remove file.
	* trampoline/README: Update.
	* callback/trampoline_r/Makefile.maint (COPIED_FILES): Remove
	protexec.c.

2017-06-21  Bruno Haible  <bruno@clisp.org>

	Fix list of distributed files.
	* Makefile.in (SOURCE_FILES): Add m4/endianness.m4, common/asm-s390.sh.

2017-06-19  Bruno Haible  <bruno@clisp.org>

	Fix a misnomer.
	* vacall/vacall.h.in: Rename 'regarg' to 'iarg'.
	* callback/vacall_r/vacall_r.h.in: Likewise.
	* vacall/vacall-powerpc.c: Update accordingly.
	* vacall/vacall-s390.c: Likewise.

2017-06-18  Bruno Haible  <bruno@clisp.org>

	s390x: Add support for s390x CPU (64-bit S/390).
	* cross-tools/cross.conf: Add configuration for s390x cross tools.
	* common/reg-struct-return.txt: Add info about s390x.
	* callback/call-used-registers.txt: Likewise.
	* common/asm-s390.sh: New file.
	* avcall/avcall.h.in: Optionally define __s390x__. Add code for
	__s390x__, especially __av_start_struct4, av_float, av_double,
	__av_struct.
	* avcall/avcall-s390x.c: New file.
	* avcall/Makefile.devel (avcall-s390-macro.S): Use asm-s390.sh.
	(avcall-s390x-linux.s, avcall-s390x-macro.S): New targets.
	* avcall/Makefile.in (avcall-s390x.lo, avcall-s390x.s): New targets.
	(clean): Remove avcall-s390x.s.
	(SOURCE_FILES): Add avcall-s390x.c, avcall-s390x-linux.s,
	avcall-s390x-macro.S.
	* vacall/vacall.h.in: Optionally define __s390x__. Add code for
	__s390x__, especially __va_start_struct2, __va_arg_adjusted,
	va_arg_float, va_arg_double, __va_arg_struct.
	* vacall/vacall-s390x.c: New file.
	* vacall/Makefile.devel (vacall-s390-macro.S): Use asm-s390.sh.
	(vacall-s390x-linux.s, vacall-s390x-macro.S): New targets.
	* vacall/Makefile.in (vacall-s390x.o, vacall-s390x.s): New targets.
	(clean): Remove vacall-s390x.s.
	(SOURCE_FILES): Add vacall-s390x.c, vacall-s390x-linux.s,
	vacall-s390x-macro.S.
	* callback/vacall_r/Makefile.maint (COPIED_FILES): Add vacall-s390x.c.
	* Makefile.in (COPIED_FILES): Add callback/vacall_r/vacall-s390x.c.
	* callback/vacall_r/vacall_r.h.in: Optionally define __s390x__. Add code
	for __s390x__, especially __va_start_struct2, __va_arg_adjusted,
	va_arg_float, va_arg_double, __va_arg_struct.
	* callback/vacall_r/Makefile.devel (vacall-s390-macro.S): Use
	asm-s390.sh.
	(vacall-s390x-linux.s, vacall-s390x-macro.S): New targets.
	* callback/vacall_r/Makefile.in (vacall-s390x.lo, vacall-s390x.s): New
	targets.
	(clean): Remove vacall-s390x.s.
	(SOURCE_FILES): Add vacall-s390x.c, vacall-s390x-linux.s,
	vacall-s390x-macro.S.
	* trampoline/Makefile.devel (proto-s390x.s, tramp-s390x.o): New targets.
	* trampoline/proto-s390x.s: New generated file.
	* trampoline/tramp-s390x.s: New file.
	* trampoline/tramp-s390x.o: New generated file.
	* trampoline/trampoline.c: Implement for __s390x__.
	* callback/trampoline_r/Makefile.devel (proto-s390x.s, tramp-s390x.o):
	New targets.
	* callback/trampoline_r/proto64.c: Add support for __s390x__.
	* callback/trampoline_r/proto-s390x.s: New generated file.
	* callback/trampoline_r/tramp-s390x.s: New file.
	* callback/trampoline_r/tramp-s390x.o: New generated file.
	* callback/trampoline_r/trampoline.c: Implement for __s390x__.
	* callback/trampoline_r/test1.c: Add support for __s390x__.
	* PLATFORMS, */PLATFORMS: List the s390x machine.
	* NEWS: Mention the new port.

2017-06-18  Bruno Haible  <bruno@clisp.org>

	Small code style improvements.
	* avcall/avcall.h.in [__arm64__]: Define and use __AV_FARG_NUM.
	[__s390__, __arm64__] (__av_struct): Avoid a boolean negation.
	* vacall/vacall.h.in [__arm64__]: Define and use __VA_IARG_NUM,
	__VA_FARG_NUM.
	[__x86_64__]: Define and use __VA_IARG_NUM.
	* callback/vacall_r/vacall_r.h.in: Likewise.

2017-06-18  Bruno Haible  <bruno@clisp.org>

	s390: Reorder code.
	* avcall/avcall.h.in: Move s390 specific code to the end (after ia64 and
	x86_64 specific code).
	* vacall/vacall.h.in: Likewise.
	* callback/vacall_r/vacall_r.h.in: Likewise.

2017-06-18  Bruno Haible  <bruno@clisp.org>

	s390: Improve trampolines.
	* trampoline/Makefile.devel (proto-s390.s): New target.
	(tramp-s390.o): Use cross tools.
	* trampoline/proto-s390.s: Regenerated with gcc 3.1.
	* trampoline/tramp-s390.s: Rewritten from scratch, to not use %r13.
	* trampoline/tramp-s390.o: New generated file.
	* trampoline/trampoline.c (alloc_trampoline) [__s390__]: Change the
	trampoline to not use %r13.
	* callback/trampoline_r/Makefile.devel (proto-s390.s): New target.
	(tramp-s390.o): Use cross tools.
	* callback/trampoline_r/proto-s390.s: Regenerated with gcc 3.1.
	* callback/trampoline_r/tramp-s390.s: Rewritten from scratch. Use 'lm'
	instruction.
	* callback/trampoline_r/tramp-s390.o: Regenerated.
	* callback/trampoline_r/trampoline.c (alloc_trampoline_r) [__s390__]:
	Change the trampoline accordingly.

2017-06-17  Bruno Haible  <bruno@clisp.org>

	arm64: Add support for arm64 CPU (a.k.a. aarch64).
	* cross-tools/cross.conf: Add configuration for arm64 cross tools.
	* common/reg-struct-return.txt: Add info about arm64.
	* callback/call-used-registers.txt: Likewise.
	* avcall/avcall.h.in: Add code for __arm64__, especially __av_start1,
	av_long, av_ulong, av_ptr, av_float, av_double, __av_struct.
	* avcall/avcall-arm64.c: New file.
	* avcall/Makefile.devel (avcall-arm64-macro.S): New target.
	* avcall/Makefile.in (avcall-arm64.lo, avcall-arm64.s): New targets.
	(clean): Remove avcall-arm64.s.
	(SOURCE_FILES): Add avcall-arm64.c, avcall-arm64-macro.S.
	* vacall/vacall.h.in: Add code for __arm64__, especially
	__va_arg_adjusted, va_arg_float, va_arg_double, __va_arg_struct.
	* vacall/vacall-arm64.c: New file.
	* vacall/Makefile.devel (vacall-arm64-macro.S): New target.
	* vacall/Makefile.in (vacall-arm64.o, vacall-arm64.s): New targets.
	(clean): Remove vacall-arm64.s.
	(SOURCE_FILES): Add vacall-arm64.c, vacall-arm64-macro.S.
	* callback/vacall_r/Makefile.maint (COPIED_FILES): Add vacall-arm64.c.
	* Makefile.in (COPIED_FILES): Add callback/vacall_r/vacall-arm64.c.
	* callback/vacall_r/vacall_r.h.in: Add code for __arm64__, especially
	__va_arg_adjusted, va_arg_float, va_arg_double, __va_arg_struct.
	* callback/vacall_r/Makefile.devel (vacall-arm64-macro.S): New target.
	* callback/vacall_r/Makefile.in (vacall-arm64.lo, vacall-arm64.s): New
	targets.
	(clean): Remove vacall-arm64.s.
	(SOURCE_FILES): Add vacall-arm64.c, vacall-arm64-macro.S.
	* trampoline/Makefile.devel (proto-arm64.s, tramp-arm64.o): New targets.
	* trampoline/proto-arm64.s: New generated file.
	* trampoline/tramp-arm64.s: New file.
	* trampoline/tramp-arm64.o: New generated file.
	* trampoline/trampoline.c: Implement for __arm64__.
	* callback/trampoline_r/Makefile.devel (proto-arm64.s, tramp-arm64.o):
	New targets.
	* callback/trampoline_r/proto64.c: Add support for __arm64__.
	* callback/trampoline_r/proto-arm64.s: New generated file.
	* callback/trampoline_r/tramp-arm64.s: New file.
	* callback/trampoline_r/tramp-arm64.o: New generated file.
	* callback/trampoline_r/trampoline.c: Implement for __arm64__.
	* callback/trampoline_r/test1.c: Add support for __arm64__.
	* PLATFORMS, */PLATFORMS: List the arm64 machine.
	* NEWS: Mention the new port.

2017-06-16  Bruno Haible  <bruno@clisp.org>

	Remove unused fields from __va_alist.
	* vacall/vacall.h.in (__va_alist): Don't include _longlong and
	_ulonglong on platforms where they are unused.
	* callback/vacall_r/vacall_r.h.in: Likewise.

2017-06-15  Bruno Haible  <bruno@clisp.org>

	Reduce the amount of cache invalidation to the necessary minimum.
	* trampoline/trampoline.c (alloc_trampoline): New macro
	TRAMP_CODE_LENGTH. Use it instead of TRAMP_LENGTH for cache
	invalidation.
	* callback/trampoline_r/trampoline.c (alloc_trampoline_r): Likewise.

2017-06-10  Bruno Haible  <bruno@clisp.org>

	Make the top-level "./configure --help" output complete.
	Reported by Karl Berry <karl@freefriends.org> in
	<https://lists.gnu.org/archive/html/libffcall/2017-03/msg00000.html>.
	* build-aux/ac-help.sed: New file, from GNU gettext with modifications.
	* Makefile.in (SOURCE_FILES): Add it.
	* configure.ac: Collect the AC_ARG_* options from the subdirectories,
	like in GNU gettext.
	* callback/configure.ac: Likewise.
	* Makefile.maint (aclocal.m4): Disable esyscmd invocations while running
	aclocal.

2017-06-10  Bruno Haible  <bruno@clisp.org>

	In comments, write 'libffcall' instead of 'ffcall'.

2017-06-10  Bruno Haible  <bruno@clisp.org>

	Add cache invalidation for 64-bit powerpc.
	* trampoline/cache-powerpc64.c: New file.
	* trampoline/Makefile.devel (cache-powerpc64-elfv2-linux.s,
	cache-powerpc64-elfv2-macro.S): New rules.
	* trampoline/configure.ac (CPU_OBJECTS): Augment also for
	powerpc64-elfv2 ABI.
	* trampoline/Makefile.in (cache-powerpc64-elfv2.o,
	cache-powerpc64-elfv2.s): New rules.
	(clean): Remove also cache-powerpc64-elfv2.s.
	(SOURCE_FILES): Add cache-powerpc64.c, cache-powerpc64-elfv2-linux.s,
	cache-powerpc64-elfv2-macro.S.
	* trampoline/trampoline.c (__TR_clear_cache): Declare also for
	powerpc64-elfv2 ABI.
	(alloc_trampoline): Invoke __TR_clear_cache also on powerpc64-elfv2 ABI.
	* callback/trampoline_r/cache-powerpc64.c: New file.
	* callback/trampoline_r/Makefile.devel (cache-powerpc64-elfv2-linux.s,
	cache-powerpc64-elfv2-macro.S): New rules.
	* trampoline/configure.ac (CPU_OBJECTS): Augment also for
	powerpc64-elfv2 ABI.
	* callback/trampoline_r/Makefile.in (cache-powerpc64-elfv2.lo,
	cache-powerpc64-elfv2.s): New rules.
	(clean): Remove also cache-powerpc64-elfv2.s.
	(SOURCE_FILES): Add cache-powerpc64.c, cache-powerpc64-elfv2-linux.s,
	cache-powerpc64-elfv2-macro.S.
	* callback/trampoline_r/trampoline.c (__TR_clear_cache): Declare also
	for powerpc64-elfv2 ABI.
	(alloc_trampoline_r): Invoke __TR_clear_cache also on powerpc64-elfv2
	ABI.

2017-06-10  Bruno Haible  <bruno@clisp.org>

	Fix cache invalidation for 32-bit powerpc.
	* trampoline/cache-powerpc.c: Add comment.
	* callback/trampoline_r/cache-powerpc.c: New file, based on
	trampoline/cache-powerpc.c.
	* callback/trampoline_r/Makefile.maint (COPIED_FILES): Remove
	cache-powerpc.c.
	* Makefile.in (COPIED_FILES): Remove
	callback/trampoline_r/cache-powerpc.c.

2017-06-10  Bruno Haible  <bruno@clisp.org>

	Don't declare the need for an executable stack on Linux and FreeBSD.
	* porting-tools: New directory.
	* common/asm-alpha.sh: New file.
	* common/asm-powerpc.sh: New file.
	* common/asm-arm.sh: Remove the GNU-stack note line.
	* common/asm-sparc.sh: Likewise.
	* common/asm-x86_64.sh: Likewise.
	* common/noexecstack.h: New file.
	* common/noexecstack-arm.h: New file.
	* avcall/Makefile.devel (precompiled): Add avcall-alpha-macro.S,
	avcall-powerpc-linux-macro.S, avcall-powerpc-sysv4-macro.S,
	avcall-powerpc64-linux.S, avcall-powerpc64-elfv2-linux.S,
	avcall-ia64-macro.S, avcall-s390-macro.S. Remove avcall-alpha.s,
	avcall-powerpc-linux.s, avcall-powerpc-sysv4.s,
	avcall-powerpc64-linux.s, avcall-powerpc64-elfv2-linux.s, avcall-ia64.s,
	avcall-s390.s.
	(avcall-i386-macro.S, avcall-m68k.mit.S, avcall-m68k.motorola.S,
	avcall-sparc-macro.S, avcall-sparc64-macro.S, avcall-hppa-macro.S,
	avcall-x86_64-macro.S): Include noexecstack.h.
	(avcall-alpha-linux.s): Renamed from avcall-alpha.s.
	(avcall-alpha-macro.S): New rule.
	(avcall-arm-macro.S, avcall-armhf-macro.S): Include noexecstack-arm.h.
	(avcall-powerpc-linux-macro.S): New rule.
	(avcall-powerpc-sysv4-macro.S): Replaces rule for
	avcall-powerpc-sysv4.s.
	(avcall-powerpc64-linux.S): Replaces rule for avcall-powerpc64-linux.s.
	(avcall-powerpc64-elfv2-linux.S): Replaces rule for
	avcall-powerpc64-elfv2-linux.s.
	(avcall-ia64-linux.s): Renamed from avcall-ia64.s.
	(avcall-ia64-macro.S): New rule.
	(avcall-s390-linux.s): Renamed from avcall-s390.s.
	(avcall-s390-macro.S): New rule.
	* avcall/Makefile.in (avcall-alpha.s): New rule.
	(avcall-alpha.lo): Update.
	(avcall-powerpc.s): Use avcall-powerpc-linux-macro.S,
	avcall-powerpc-sysv4-macro.S instead of avcall-powerpc-linux.s,
	avcall-powerpc-sysv4.s.
	(avcall-powerpc64.s): Use avcall-powerpc64-linux.S instead of
	avcall-powerpc64-linux.s.
	(avcall-powerpc64-elfv2.s): Use avcall-powerpc64-elfv2-linux.S instead
	of avcall-powerpc64-elfv2-linux.s.
	(avcall-ia64.s): New rule.
	(avcall-ia64.lo): Update.
	(avcall-s390.s): New rule.
	(avcall-s390.lo): Update.
	(clean): Remove also avcall-alpha.s, avcall-ia64.s, avcall-s390.s.
	(SOURCE_FILES): Update.
	* vacall/Makefile.devel (precompiled): Add vacall-alpha-macro.S,
	vacall-powerpc-linux-macro.S, vacall-powerpc-sysv4-macro.S,
	vacall-powerpc64-linux.S, vacall-powerpc64-elfv2-linux.S,
	vacall-ia64-macro.S, vacall-s390-macro.S. Remove vacall-alpha.s,
	vacall-powerpc-linux.s, vacall-powerpc-sysv4.s,
	vacall-powerpc64-linux.s, vacall-powerpc64-elfv2-linux.s, vacall-ia64.s,
	vacall-s390.s.
	(vacall-i386-macro.S, vacall-m68k.mit.S, vacall-m68k.motorola.S,
	vacall-sparc-macro.S, vacall-sparc64-macro.S, vacall-hppa-macro.S,
	vacall-x86_64-macro.S): Include noexecstack.h.
	(vacall-alpha-linux.s): Renamed from vacall-alpha.s.
	(vacall-alpha-macro.S): New rule.
	(vacall-arm-macro.S, vacall-armhf-macro.S): Include noexecstack-arm.h.
	(vacall-powerpc-linux-macro.S): New rule.
	(vacall-powerpc-sysv4-macro.S): Replaces rule for
	vacall-powerpc-sysv4.s.
	(vacall-powerpc64-linux.S): Replaces rule for vacall-powerpc64-linux.s.
	(vacall-powerpc64-elfv2-linux.S): Replaces rule for
	vacall-powerpc64-elfv2-linux.s.
	(vacall-ia64-linux.s): Renamed from vacall-ia64.s.
	(vacall-ia64-macro.S): New rule.
	(vacall-s390-linux.s): Renamed from vacall-s390.s.
	(vacall-s390-macro.S): New rule.
	* vacall/Makefile.in (vacall-alpha.s): New rule.
	(vacall-alpha.o): Update.
	(vacall-powerpc.s): Use vacall-powerpc-linux-macro.S,
	vacall-powerpc-sysv4-macro.S instead of vacall-powerpc-linux.s,
	vacall-powerpc-sysv4.s.
	(vacall-powerpc64.s): Use vacall-powerpc64-linux.S instead of
	vacall-powerpc64-linux.s.
	(vacall-powerpc64-elfv2.s): Use vacall-powerpc64-elfv2-linux.S instead
	of vacall-powerpc64-elfv2-linux.s.
	(vacall-ia64.s): New rule.
	(vacall-ia64.o): Update.
	(vacall-s390.s): New rule.
	(vacall-s390.o): Update.
	(clean): Remove also vacall-alpha.s, vacall-ia64.s, vacall-s390.s.
	(SOURCE_FILES): Update.
	* callback/vacall_r/Makefile.devel (precompiled): Add
	vacall-powerpc64-linux.S, vacall-powerpc64-elfv2-linux.S,
	vacall-ia64-macro.S. Remove vacall-powerpc64-linux.s,
	vacall-powerpc64-elfv2-linux.s, vacall-ia64.s.
	(vacall-i386-macro.S, vacall-m68k.mit.S, vacall-m68k.motorola.S,
	vacall-sparc-macro.S, vacall-sparc64-macro.S, vacall-alpha-macro.S,
	vacall-hppa-macro.S, vacall-powerpc-linux-macro.S,
	vacall-powerpc-sysv4-macro.S, vacall-x86_64-macro.S,
	vacall-s390-macro.S): Include noexecstack.h.
	(vacall-arm-macro.S, vacall-armhf-macro.S): Include noexecstack-arm.h.
	(vacall-powerpc64-linux.S): Replaces rule for vacall-powerpc64-linux.s.
	(vacall-powerpc64-elfv2-linux.S): Replaces rule for
	vacall-powerpc64-elfv2-linux.s.
	(vacall-ia64-linux.s): Renamed from vacall-ia64.s.
	(vacall-ia64-macro.S): New rule.
	* callback/vacall_r/Makefile.in (vacall-powerpc64.s): Use
	vacall-powerpc64-linux.S instead of vacall-powerpc64-linux.s.
	(vacall-powerpc64-elfv2.s): Use vacall-powerpc64-elfv2-linux.S instead
	of vacall-powerpc64-elfv2-linux.s.
	(vacall-ia64.s): New rule.
	(vacall-ia64.lo): Update.
	(vacall-s390.s): New rule.
	(vacall-s390.lo): Update.
	(clean): Remove also vacall-ia64.s.
	(SOURCE_FILES): Update.
	* trampoline/cache-alpha.s: Remove file.
	* trampoline/cache-hppa.s: Remove file.
	* trampoline/cache-powerpc-macos.s, trampoline/cache-powerpc-sysv4.s:
	Remove files.
	* trampoline/cache-sparc-macro.S: Remove file.
	* trampoline/tramp-hppa-macro.S: Renamed from trampoline/tramp-hppa.s.
	Include "noexecstack.h".
	* trampoline/tramp-ia64-macro.S: Renamed from trampoline/tramp-ia64.s.
	Include "noexecstack.h".
	* trampoline/tramp-powerpc64-aix.S: Include "noexecstack.h".
	* trampoline/Makefile.devel: Rename GCCFLAGS to OLDGCCFLAGS in old
	rules.
	(cache-*): Remove old rules.
	(precompiled): New target.
	(cache-sparc-linux.s, cache-sparc-macro.S, cache-sparc64-linux.s,
	cache-sparc64-macro.S, cache-alpha-linux.s, cache-alpha-macro.S,
	cache-hppa-linux.s, cache-hppa-macro.S, cache-powerpc-linux.s,
	cache-powerpc-linux-macro.S, cache-powerpc-macos.s): New rules.
	* trampoline/Makefile.in (tramp-hppa.s): New rule.
	(tramp-hppa.o): Update.
	(tramp-powerpc64.s: Depend on noexecstack.h.
	(tramp-ia64.s): New rule.
	(tramp-ia64.o): Update.
	(cache-sparc64.s): Update.
	(cache-alpha.s): New rule.
	(cache-alpha.o): Update.
	(cache-hppa.s): New rule.
	(cache-hppa.o): Update.
	(cache-powerpc.s): New rule.
	(cache-powerpc.o): Update.
	(clean): Remove also tramp-hppa.s, tramp-ia64.s, cache-alpha.s,
	cache-hppa.s, cache-powerpc.s.
	(SOURCE_FILES): Update.
	* callback/trampoline_r/cache-sparc-macro.S: Remove file.
	* callback/trampoline_r/tramp-hppa-macro.S: Renamed from
	callback/trampoline_r/tramp-hppa.s. Include "noexecstack.h".
	* callback/trampoline_r/tramp-ia64-macro.S: Renamed from
	callback/trampoline_r/tramp-ia64.s. Include "noexecstack.h".
	* callback/trampoline_r/tramp-powerpc64-aix.S: Include "noexecstack.h".
	* callback/trampoline_r/Makefile.maint (COPIED_FILES): Remove
	cache-alpha.s, cache-hppa.s, cache-powerpc-macos.s,
	cache-powerpc-sysv4.s.
	* callback/trampoline_r/Makefile.devel: Rename GCCFLAGS to OLDGCCFLAGS
	in old rules.
	(cache-*): Remove old rules.
	(precompiled): New target.
	(cache-sparc-linux.s, cache-sparc-macro.S, cache-sparc64-linux.s,
	cache-sparc64-macro.S, cache-alpha-linux.s, cache-alpha-macro.S,
	cache-hppa-linux.s, cache-hppa-macro.S, cache-powerpc-linux.s,
	cache-powerpc-linux-macro.S, cache-powerpc-macos.s): New rules.
	* callback/trampoline_r/Makefile.in (tramp-hppa.s): New rule.
	(tramp-hppa.lo): Update.
	(tramp-powerpc64.s: Depend on noexecstack.h.
	(tramp-ia64.s): New rule.
	(tramp-ia64.lo): Update.
	(cache-sparc64.s): Update.
	(cache-alpha.s): New rule.
	(cache-alpha.lo): Update.
	(cache-hppa.s): New rule.
	(cache-hppa.lo): Update.
	(cache-powerpc.s): New rule.
	(cache-powerpc.lo): Update.
	(clean): Remove also tramp-hppa.s, tramp-ia64.s, cache-alpha.s,
	cache-hppa.s, cache-powerpc.s.
	(SOURCE_FILES): Update.
	* Makefile.devel (precompiled): Recurse also into trampoline and
	callback/trampoline_r directories.
	* Makefile.in (SOURCE_FILES): Update.
	(COPIED_FILES): Remove callback/trampoline_r/cache-alpha.s,
	callback/trampoline_r/cache-hppa.s,
	callback/trampoline_r/cache-powerpc-macos.s,
	callback/trampoline_r/cache-powerpc-sysv4.s.
	* NEWS: Mention the change.

2017-06-10  Bruno Haible  <bruno@clisp.org>

	Simplify Makefile.devel.
	* avcall/Makefile.devel (HOST, CPU): Remove unused variables.
	* vacall/Makefile.devel (HOST, CPU): Likewise.
	* trampoline/Makefile.devel (HOST, CPU): Likewise.
	* callback/vacall_r/Makefile.devel (HOST, CPU): Likewise.
	* callback/trampoline_r/Makefile.devel (HOST, CPU): Likewise.

2017-06-10  Bruno Haible  <bruno@clisp.org>

	Make the EXECUTABLE_VIA_MMAP_FILE_SHARED support work on i386.
	* trampoline/trampoline.c (alloc_trampoline): New local variable
	'function_x'. Use it instead of 'function' for the computation of the
	relative address in the i386 trampoline.
	* callback/trampoline_r/trampoline.c (alloc_trampoline_r): Likewise.

2017-06-04  Bruno Haible  <bruno@clisp.org>

	build: Get rid of autom4te.cache directories.
	* Makefile.maint (configure, $(SUBDIRS_CONFIGURE), $(ALL_CONFIG_H_IN)):
	Remove autom4te.cache subdirectory.

2017-06-04  Bruno Haible  <bruno@clisp.org>

	Change the license from GPLv2 to GPLv2+.
	* **/configure.ac, **/*.3, **/*.html, **/minitests.c,
	callback/MIGRATION, common/asm-*: Add copyright notice.
	* m4/*.m4: Use GPLv2+ with exception notice.
	* Everywhere else: Change GPLv2 copyright notice to GPLv2+ copyright
	notice. Update copyright years.

2017-06-03  Bruno Haible  <bruno@clisp.org>

	Make the cross-build.sh script work with argument 'all'.
	* cross-tools/cross-build.sh: Fix typo.

2017-06-03  Bruno Haible  <bruno@clisp.org>

	Improve support for SELinux.
	* m4/codeexec.m4 (FFCALL_CODEEXEC_PAX): On SELinux systems, define
	HAVE_MPROTECT_AFTER_MALLOC_CAN_EXEC to -1.
	* trampoline/trampoline.c: When HAVE_MPROTECT_AFTER_MALLOC_CAN_EXEC is
	-1, assume the worst and don't set EXECUTABLE_VIA_MALLOC_THEN_MPROTECT.
	* callback/trampoline_r/trampoline.c: Likewise.

2017-06-03  Bruno Haible  <bruno@clisp.org>

	Improve support for SELinux.
	* m4/codeexec.m4 (FFCALL_CODEEXEC_PAX): On SELinux systems, define
	HAVE_MPROTECT_AFTER_MMAP_CAN_EXEC to -1.
	* trampoline/trampoline.c: When HAVE_MPROTECT_AFTER_MMAP_CAN_EXEC is -1,
	assume the worst and don't set EXECUTABLE_VIA_MMAP_THEN_MPROTECT.
	* callback/trampoline_r/trampoline.c: Likewise.

2017-06-03  Bruno Haible  <bruno@clisp.org>

	Indent the *.m4 files.
	* m4/as-underscore.m4: Use reasonable indentation.
	* m4/cc-gcc.m4: Likewise.
	* m4/codeexec.m4: Likewise.
	* m4/endianness.m4: Likewise.
	* m4/general.m4: Likewise.
	* m4/getpagesize.m4: Likewise.
	* m4/ireg.m4: Likewise.
	* m4/ln.m4: Likewise.
	* m4/mach-vm.m4: Likewise.
	* m4/mmap.m4: Likewise.
	* m4/mprotect.m4: Likewise.
	* m4/pccstruct.m4: Likewise.
	* m4/shm.m4: Likewise.
	* m4/smallstruct.m4: Likewise.
	* m4/proto.m4: Likewise.
	(CL_PROTO_TRY, CL_PROTO_CONST, CL_PROTO_MISSING, CONST_VARIANTS,
	SIZE_VARIANTS): Remove macros.

2017-02-26  Bruno Haible  <bruno@clisp.org>

	Document more clearly the maintainer prerequisites.
	* Makefile.in (ACLOCAL, AUTOCONF, AUTOHEADER): Add comments.
	* README-hacking: Likewise.
	Reported by Don Cohen <don-ffcall@isis.cs3-inc.com> in
	<https://lists.gnu.org/archive/html/libffcall/2017-02/msg00001.html>
	and Sam Steingold <sds@gnu.org>.

2017-02-26  Bruno Haible  <bruno@clisp.org>

	Document the support for GNU Hurd.
	* PLATFORMS, */PLATFORMS: List i686-unknown-gnu0.9 (gcc).

2017-02-19  Bruno Haible  <bruno@clisp.org>

	configuration: Avoid running an unneeded test.
	* m4/codeexec.m4 (FFCALL_CODEEXEC_PAX): Require FFCALL_CODEEXEC. Do
	nothing if its result is that malloc()ed memory is already executable.

2017-02-19  Bruno Haible  <bruno@clisp.org>

	Remove useless double-inclusion guard on .c files.
	* avcall/tests.c: Remove double-inclusion guard.
	* avcall/avcall-*.c: Likewise. Fix comment.

2017-02-19  Bruno Haible  <bruno@clisp.org>

	powerpc: Fix build failure on MacOS X (regression from 2017-01-29).
	1.
	* cross-tools/cross.conf: For powerpc-darwin, go back to gcc 3.3.6.
	* cross-tools/patches/gcc-3.3.6.patch: New file.
	* avcall/Makefile.devel (avcall-powerpc-macos.s): Use gcc 3.3.6.
	* vacall/Makefile.devel (vacall-powerpc-macos.s): Use gcc 3.3.6.
	* callback/vacall_r/Makefile.devel (vacall-powerpc-macos.s): Use gcc
	3.3.6.
	2.
	* avcall/Makefile.in (avcall-powerpc.s): For MacOS, remove the .machine
	pseudo-op.
	* vacall/Makefile.in (vacall-powerpc.s): Likewise.
	* callback/vacall_r/Makefile.in (vacall-powerpc.s): Likewise.
	3.
	* PLATFORMS, */PLATFORMS: List powerpc-apple-darwin9.8.0 (gcc).
	* NEWS: Mention the status of MacOS X / powerpc.

2017-02-12  Bruno Haible  <bruno@clisp.org>

	Make the cross-build.sh script work on an x86_64-linux host.
	* cross-tools/cross-build.sh: Remove the binutils-*/gprof directory.
	* cross-tools/patches/binutils-*.patch: Backport a buffer overrun bug
	fix from binutils-2.17.

2017-02-12  Bruno Haible  <bruno@clisp.org>

	Make the cross-build.sh script more usable.
	* README-hacking: Add more text.
	* cross-tools/cross-build.sh: Don't assume the script is run from the
	current directory. Accept a relative HOST_CROSS_DIR.
	Reported by Don Cohen <don-ffcall@isis.cs3-inc.com>.

2017-02-11  Bruno Haible  <bruno@clisp.org>

	Update documentation.
	* NEWS: List the progress since version 1.12.

2017-02-11  Bruno Haible  <bruno@clisp.org>

	powerpc: Add support for OpenBSD.
	* avcall/Makefile.in (avcall-powerpc.s): Treat OpenBSD like NetBSD.
	* vacall/Makefile.in (vacall-powerpc.s): Likewise.
	* callback/vacall_r/Makefile.in (vacall-powerpc.s): Likewise.

2017-02-11  Bruno Haible  <bruno@clisp.org>

	mips64: Add support for OpenBSD.
	On OpenBSD, cacheflush() is declared in <machine/sysarch.h>, see
	openbsd-src/blob/master/lib/libarch/mips64/cacheflush.3 .
	* trampoline/trampoline.c [__OpenBSD__]: Include <machine/sysarch.h>.
	* callback/trampoline_r/trampoline.c: Likewise.

2017-02-11  Bruno Haible  <bruno@clisp.org>

	Support the LDFLAGS configure variable.
	* avcall/Makefile.in (LDFLAGS): New variable.
	Use it in all linking commands.
	* vacall/Makefile.in (LDFLAGS): New variable.
	Use it in all linking commands.
	* trampoline/Makefile.in (LDFLAGS): New variable.
	Use it in all linking commands.
	* callback/Makefile.in (LDFLAGS): New variable.
	Use it in all linking commands.
	* callback/vacall_r/Makefile.in (LDFLAGS): New variable.
	Use it in all linking commands.
	* callback/trampoline_r/Makefile.in (LDFLAGS): New variable.
	Use it in all linking commands.

2017-02-11  Bruno Haible  <bruno@clisp.org>

	Fix build failure on Mac OS X 10.5 / x86_64. Regression from today.
	* common/asm-x86_64.sh: Recognize symbol in symbol(%rip) syntax.
	* vacall/Makefile.devel (vacall-x86_64-macro.S): Remove extra
	postprocessing, now done by common/asm-x86_64.sh.

2017-02-11  Bruno Haible  <bruno@clisp.org>

	Fix build failure on Mac OS X 10.5 / i386. Regression from today.
	* common/asm-i386.sh: Simplify the function referencing code, originally
	for PIC on ELF platforms, so that it works also on non-ELF platforms.

2017-02-11  Bruno Haible  <bruno@clisp.org>

	x86_64: Add support for the x32 ABI on Linux.
	* avcall/avcall.h.in: Optionally define __x86_64_x32__.
	(__avword, __av_longlong): Define differently for __x86_64_x32__.
	* avcall/Makefile.devel (avcall-x86_64-x32-linux.s): New target.
	* avcall/Makefile.in (avcall-x86_64-x32.lo, avcall-x86_64-x32.s): New
	targets.
	(clean): Remove also avcall-x86_64-x32.s.
	(SOURCE_FILES): Add avcall-x86_64-x32-linux.s.
	* vacall/vacall-x86_64.c: Don't declare a register variable in %rbp for
	GCC >= 4.9.
	For __x86_64_x32__, treat return of 'long long' and 'unsigned long long'
	differently.
	* vacall/vacall.h.in: Optionally define __x86_64_x32__.
	(__vaword, va_arg_longlong, va_return_longlong): Define differently for
	__x86_64_x32__.
	* callback/vacall_r/vacall_r.h.in: Likewise.
	* vacall/Makefile.devel (vacall-x86_64-x32-linux.s): New target.
	* vacall/Makefile.in (vacall-x86_64-x32.o, vacall-x86_64-x32.s): New
	targets.
	(clean): Remove also vacall-x86_64-x32.s.
	(SOURCE_FILES): Add vacall-x86_64-x32-linux.s.
	* trampoline/Makefile.devel (proto-x86_64-x32.s, tramp-x86_64-x32.o):
	New targets.
	* trampoline/proto-x86_64-x32.s: New generated file.
	* trampoline/tramp-x86_64-x32.s: New file.
	* trampoline/tramp-x86_64-x32.o: New generated file.
	* trampoline/trampoline.c: Add code for __x86_64_x32__.
	* callback/vacall_r/Makefile.devel (vacall-x86_64-x32-linux.s): New
	target.
	* callback/vacall_r/Makefile.in (vacall-x86_64-x32.lo,
	vacall-x86_64-x32.s): New targets.
	(clean): Remove also vacall-x86_64-x32.s.
	(SOURCE_FILES): Add vacall-x86_64-x32-linux.s.
	* callback/trampoline_r/Makefile.devel (proto-x86_64-x32.s,
	tramp-x86_64-x32.o): New targets.
	* callback/trampoline_r/proto.c: Specify env register for
	__x86_64_x32__.
	* callback/trampoline_r/proto-x86_64-x32.s: New generated file.
	* callback/trampoline_r/tramp-x86_64-x32.s: New file.
	* callback/trampoline_r/tramp-x86_64-x32.o: New generated file.
	* callback/trampoline_r/trampoline.c: Add code for __x86_64_x32__.
	* PLATFORMS, */PLATFORMS: List x86_64-unknown-linux (gcc -mx32).

2017-02-11  Bruno Haible  <bruno@clisp.org>

	Simplify platform defines. Reverts commit from 2010-07-20.
	* trampoline/trampoline.h.in: Remove CPU symbol definitions.
	* callback/trampoline_r/trampoline_r.h.in: Likewise.

2017-02-11  Bruno Haible  <bruno@clisp.org>

	powerpc64: Add support for the ELFv2 ABI on Linux.
	* avcall/avcall-powerpc64.c: Handle small struct return in registers
	when __AV_REGISTER_STRUCT_RETURN is set.
	* avcall/avcall.h.in: Optionally define __powerpc64_elfv2__.
	(__AV_REGISTER_STRUCT_RETURN): Define also for __powerpc64__.
	(__av_reg_struct_return, __av_start_struct3): Define differently for
	__powerpc64_elfv2__.
	(av_float) [__powerpc64__]: Define in a simplified way if
	__AV_AIXCC_FLOAT_ARGS cannot be set.
	(__av_struct): Define differently for little-endian __powerpc64__.
	* avcall/Makefile.devel (avcall-powerpc64-elfv2-linux.s): New target.
	* avcall/Makefile.in (avcall-powerpc64-elfv2.lo,
	avcall-powerpc64-elfv2.s): New targets.
	(clean): Remove also avcall-powerpc64-elfv2.s.
	(SOURCE_FILES): Add avcall-powerpc64-elfv2-linux.s.
	* vacall/vacall-powerpc64.c: Handle small struct return in registers
	when __VA_REGISTER_STRUCT_RETURN is set.
	* vacall/vacall.h.in: Optionally define __powerpc64_elfv2__.
	(__VA_REGISTER_STRUCT_RETURN): Define also for __powerpc64__.
	(__va_reg_struct_return, __va_start_struct1): Define differently for
	__powerpc64_elfv2__.
	(__va_arg_adjusted): Define differently for little-endian __powerpc64__.
	(va_arg_float) [__powerpc64__]: Define in a simplified way if
	__VA_AIXCC_FLOAT_ARGS cannot be set.
	* callback/vacall_r/vacall_r.h.in: Likewise.
	* vacall/Makefile.devel (vacall-powerpc64-elfv2-linux.s): New target.
	* vacall/Makefile.in (vacall-powerpc64-elfv2.o,
	vacall-powerpc64-elfv2.s): New targets.
	(clean): Remove also vacall-powerpc64-elfv2.s.
	(SOURCE_FILES): Add vacall-powerpc64-elfv2-linux.s.
	* trampoline/Makefile.devel (proto-powerpc64-elfv2.s,
	tramp-powerpc64-elfv2.o): New targets.
	* trampoline/proto-powerpc64elfv2.s: New generated file.
	* trampoline/tramp-powerpc64elfv2.s: New file.
	* trampoline/tramp-powerpc64elfv2.o: New generated file.
	* trampoline/trampoline.c: Add code for __powerpc64_elfv2__.
	* callback/vacall_r/Makefile.devel (vacall-powerpc64-elfv2-linux.s):
	New target.
	* callback/vacall_r/Makefile.in (vacall-powerpc64-elfv2.lo,
	vacall-powerpc64-elfv2.s): New targets.
	(clean): Remove also vacall-powerpc64-elfv2.s.
	(SOURCE_FILES): Add vacall-powerpc64-elfv2-linux.s.
	* callback/trampoline_r/Makefile.devel (proto-powerpc64-elfv2.s,
	tramp-powerpc64-elfv2.o): New targets.
	* callback/trampoline_r/proto-powerpc64elfv2.s: New generated file.
	* callback/trampoline_r/tramp-powerpc64elfv2.s: New file.
	* callback/trampoline_r/tramp-powerpc64elfv2.o: New generated file.
	* callback/trampoline_r/trampoline.c: Add code for __powerpc64_elfv2__.
	* PLATFORMS, */PLATFORMS: List powerpc64le-unknown-linux (gcc).

2017-02-11  Bruno Haible  <bruno@clisp.org>

	powerpc64: Add support for AIX in a 64-bit build, with xlc.
	* avcall/avcall.h.in (__AV_AIXCC_FLOAT_ARGS, __AV_FLOAT_ARGS): New enum
	values.
	(__AV_START_FLAGS): Include __AV_FLOAT_ARGS.
	(av_float) [__powerpc64__]: Pick word according to whether
	__AV_AIXCC_FLOAT_ARGS is set.
	* vacall/vacall.h.in (__VA_AIXCC_FLOAT_ARGS, __VA_FLOAT_ARGS): New enum
	values.
	(__VA_START_FLAGS): Include __VA_FLOAT_ARGS.
	(va_arg_float) [__powerpc64__]: Pick word according to whether
	__VA_AIXCC_FLOAT_ARGS is set.
	* callback/vacall_r/vacall_r.h.in: Likewise.
	* PLATFORMS, */PLATFORMS: List powerpc-ibm-aix7.1.3.0 (xlc -q64).

2017-02-11  Bruno Haible  <bruno@clisp.org>

	powerpc64: Add support for AIX in a 64-bit build, with gcc.
	* avcall/avcall.h.in (__AV_AIXCC_STRUCT_ARGS): Define also on
	__powerpc64__.
	(__AV_STRUCT_ARGS): Set to __AV_AIXCC_STRUCT_ARGS on __powerpc64__ with
	AIX.
	(__av_struct): Define for __powerpc64__ like for __powerpc__.
	* vacall/vacall.h.in (__VA_AIXCC_STRUCT_ARGS): Define also on
	__powerpc64__.
	(__VA_STRUCT_ARGS): Set to __VA_AIXCC_STRUCT_ARGS on __powerpc64__ with
	AIX.
	(__va_arg_struct): Define for __powerpc64__ with AIX like for
	__powerpc__ with AIX.
	* callback/vacall_r/vacall_r.h.in: Likewise.
	* PLATFORMS, */PLATFORMS: List powerpc-ibm-aix7.1.3.0 (gcc -maix64).

2017-02-11  Bruno Haible  <bruno@clisp.org>

	powerpc64: Add support for AIX in a 64-bit build, part 1.
	* avcall/Makefile.devel (avcall-powerpc64-aix.s,
	avcall-powerpc64-linux.s): New targets.
	(avcall-powerpc64.s): Remove target.
	* avcall/Makefile.in (avcall-powerpc64.s): New target.
	(avcall-powerpc64.lo): Update.
	(clean): Remove also avcall-powerpc64.s.
	(SOURCE_FILES): Add avcall-powerpc64-aix.s, avcall-powerpc64-linux.s.
	Remove avcall-powerpc64.s.
	* vacall/Makefile.devel (vacall-powerpc64-aix.s,
	vacall-powerpc64-linux.s): New targets.
	(vacall-powerpc64.s): Remove target.
	* vacall/Makefile.in (vacall-powerpc64.s): New target.
	(vacall-powerpc64.o): Update.
	(clean): Remove also vacall-powerpc64.s.
	(SOURCE_FILES): Add vacall-powerpc64-aix.s, vacall-powerpc64-linux.s.
	Remove vacall-powerpc64.s.
	* callback/vacall_r/Makefile.devel (vacall-powerpc64-aix.s,
	vacall-powerpc64-linux.s): New targets.
	(vacall-powerpc64.s): Remove target.
	* callback/vacall_r/Makefile.in (vacall-powerpc64.s): New target.
	(vacall-powerpc64.lo): Update.
	(clean): Remove also vacall-powerpc64.s.
	(SOURCE_FILES): Add vacall-powerpc64-aix.s, vacall-powerpc64-linux.s.
	Remove vacall-powerpc64.s.

2017-02-11  Bruno Haible  <bruno@clisp.org>

	powerpc64: Update Makefile.devel rules.
	* trampoline/Makefile.devel (CROSS_TOOL): New variable.
	(proto-powerpc64-aix.s): Update rule.
	* callback/trampoline_r/Makefile.devel (proto-powerpc64-aix.s): Update
	rule.

2017-02-11  Bruno Haible  <bruno@clisp.org>

	hppa: Fix bug with structure return for sizes 5, 6, 7.
	* avcall/avcall-hppa.c: For structure return for sizes > 4, get 4 bytes
	from iret2.
	* vacall/vacall-hppa.c: For structure return for sizes > 4, put 4 bytes
	into iret2.

2017-02-11  Bruno Haible  <bruno@clisp.org>

	x86_64: Fix bug with structure return for sizes < 16, != 1, 2, 4, 8.
	* avcall/avcall-x86_64.c: Treat structure returns for all sizes <= 16
	like those with sizes 1, 2, 4, 8, 16.

2017-02-11  Bruno Haible  <bruno@clisp.org>

	Add some dedicated small structure return tests.
	* avcall/tests.c (Size1, Size2, Size3, Size4, Size7, Size8, Size12,
	Size15, Size16): New types.
	(S1_v, S2_v, S3_v, S4_v, S7_v, S8_v, S12_v, S15_v, S15_v): New tests.
	* vacall/tests.c: Likewise.
	* callback/tests.c: Likewise.

2017-02-11  Bruno Haible  <bruno@clisp.org>

	Remove outdated no-op definition.
	* vacall/vacall.h.in (__VA_ANSI_FLOAT_ARGS): Remove enum value.

2017-02-11  Bruno Haible  <bruno@clisp.org>

	powerpc: Don't special-case NetBSD.
	* vacall/vacall-powerpc.c: Remove special case of NetBSD.
	* callback/vacall_r/Makefile.devel (vacall-powerpc-netbsd-macro.S):
	Remove target.
	* callback/vacall_r/vacall-powerpc-netbsd.s: Remove file.
	* callback/vacall_r/vacall-powerpc-netbsd-macro.S: Remove file.
	* callback/vacall_r/Makefile.in (vacall-powerpc.s): Use
	vacall-powerpc-linux-macro.S instead of vacall-powerpc-netbsd-macro.S.
	(SOURCE_FILES): Remove vacall-powerpc-netbsd.s,
	vacall-powerpc-netbsd-macro.S.
	* callback/trampoline_r/proto.c: Remove special case of powerpc/NetBSD.
	* callback/trampoline_r/trampoline.c: Remove special case of
	powerpc/NetBSD.
	* callback/trampoline_r/test1.c: Likewise.

2017-02-11  Bruno Haible  <bruno@clisp.org>

	m68k: Don't special-case NetBSD.
	* callback/call-used-registers.txt: Add comment about NetBSD.
	* vacall/vacall-m68k.c: Remove special case of NetBSD.
	* callback/vacall_r/Makefile.devel (vacall-m68k-netbsd-macro.S): Remove
	target.
	* callback/vacall_r/Makefile.in (vacall-m68k.s): Always use
	vacall-m68k.mit.S.
	(SOURCE_FILES): Remove vacall-m68k-netbsd-macro.S.
	* callback/trampoline_r/proto.c: Remove special case of m68k/NetBSD.
	* callback/trampoline_r/proto-m68k-netbsd.s: Remove file.
	* callback/trampoline_r/tramp-m68k-netbsd.s: Remove file.
	* callback/trampoline_r/tramp-m68k-netbsd.o: Remove file.
	* callback/trampoline_r/Makefile.devel (proto-m68k-netbsd.s,
	tramp-m68k-netbsd.o): Remove targets.
	* callback/trampoline_r/trampoline.c: Remove special case of
	m68k/NetBSD.
	* callback/trampoline_r/test1.c: Likewise.

2017-02-11  Bruno Haible  <bruno@clisp.org>

	Revert BINFMT_ELF hack.
	* callback/elf-hack.txt: Explain the new workaround.
	* callback/vacall_r/Makefile.devel (vacall-i386-macro.S,
	vacall-m68k.mit.S, vacall-m68k.motorola.S, vacall-m68k-netbsd-macro.S,
	vacall-mipseb-macro.S, vacall-mipsel-macro.S, vacall-mipsn32eb-macro.S,
	vacall-mipsn32el-macro.S, vacall-mips64eb-macro.S,
	vacall-mips64el-macro.S, vacall-alpha-macro.S,
	vacall-powerpc-linux-macro.S, vacall-powerpc-netbsd-macro.S,
	vacall-powerpc-sysv4-macro.S, vacall-x86_64-macro.S,
	vacall-s390-macro.S): Don't postprocess through elfhack-*.sed.
	* callback/vacall_r/elfhack-alpha.S: Remove file.
	* callback/vacall_r/elfhack-alpha.sed: Remove file.
	* callback/vacall_r/elfhack-i386.S: Remove file.
	* callback/vacall_r/elfhack-i386.sed: Remove file.
	* callback/vacall_r/elfhack-m68k.S: Remove file.
	* callback/vacall_r/elfhack-m68k.sed: Remove file.
	* callback/vacall_r/elfhack-mips.S: Remove file.
	* callback/vacall_r/elfhack-mips.sed: Remove file.
	* callback/vacall_r/elfhack-mips64.S: Remove file.
	* callback/vacall_r/elfhack-mips64.sed: Remove file.
	* callback/vacall_r/elfhack-powerpc.S: Remove file.
	* callback/vacall_r/elfhack-powerpc.sed: Remove file.
	* callback/vacall_r/elfhack-s390.S: Remove file.
	* callback/vacall_r/elfhack-s390.sed: Remove file.
	* callback/vacall_r/elfhack-x86_64.S: Remove file.
	* callback/vacall_r/elfhack-x86_64.sed: Remove file.
	* callback/vacall_r/Makefile.in (ASPFLAGS): Don't set BINFMT_ELF.
	(SOURCE_FILES): Remove elhack-*.S and elfhack-*.sed.
	* callback/vacall_r/configure.ac: Don't invoke FFCALL_BINFMT_ELF.
	* callback/trampoline_r/trampoline.c: Remove code for BINFMT_ELF.
	* callback/trampoline_r/tramp-alpha.s: Remove trampelf.
	* callback/trampoline_r/tramp-alpha.o: Regenerated.
	* callback/trampoline_r/tramp-i386.s: Remove trampelf.
	* callback/trampoline_r/tramp-i386.o: Regenerated.
	* callback/trampoline_r/tramp-m68k-netbsd.s: Remove trampelf.
	* callback/trampoline_r/tramp-m68k-netbsd.o: Regenerated.
	* callback/trampoline_r/tramp-m68k.s: Remove trampelf.
	* callback/trampoline_r/tramp-m68k.o: Regenerated.
	* callback/trampoline_r/tramp-mips.s: Remove trampelf.
	* callback/trampoline_r/tramp-mips.o: Regenerated.
	* callback/trampoline_r/tramp-mips64.s: Remove trampelf.
	* callback/trampoline_r/tramp-mips64.o: Regenerated.
	* callback/trampoline_r/tramp-powerpc-sysv4.s: Remove trampelf.
	* callback/trampoline_r/tramp-powerpc-sysv4.o: Regenerated.
	* callback/trampoline_r/tramp-s390.s: Remove trampelf.
	* callback/trampoline_r/tramp-s390.o: Regenerated.
	* callback/trampoline_r/tramp-x86_64.s: Remove trampelf.
	* callback/trampoline_r/tramp-x86_64.o: Regenerated.
	* callback/trampoline_r/test1.c: Reenable on ELF platforms.
	* callback/trampoline_r/configure.ac: Don't invoke FFCALL_BINFMT_ELF.
	* callback/configure.ac: Don't invoke FFCALL_BINFMT_ELF_OPTION.
	* configure.ac: Don't invoke FFCALL_BINFMT_ELF_OPTION.
	* m4/binfmt-elf.m4: Remove file.
	* Makefile.in (SOURCE_FILES): Remove it.
	* README: Update regarding the ELF problem.

2017-02-11  Bruno Haible  <bruno@clisp.org>

	Access __vacall_r through an indirection, except on SPARC.
	* callback/vacall_r/vacall_r.h.in (__vacall_r_t): New type.
	(get__vacall_r): New declaration.
	(__vacall_r): Remove declaration.
	* vacall/vacall-alpha.c [REENTRANT]: Make __vacall_r static.
	(get__vacall_r): New function.
	* vacall/vacall-arm.c: Likewise.
	* vacall/vacall-armhf.c: Likewise.
	* vacall/vacall-hppa.c: Likewise.
	* vacall/vacall-i386.c: Likewise.
	* vacall/vacall-ia64.c: Likewise.
	* vacall/vacall-m68k.c: Likewise.
	* vacall/vacall-mips.c: Likewise.
	* vacall/vacall-mipsn32.c: Likewise.
	* vacall/vacall-mips64.c: Likewise.
	* vacall/vacall-powerpc.c: Likewise.
	* vacall/vacall-powerpc64.c: Likewise.
	* vacall/vacall-s390.c: Likewise.
	* vacall/vacall-x86_64.c: Likewise.
	* callback/vacall_r/vacall-powerpc-netbsd-macro.S: Update accordingly.
	* callback/vacall_r/Makefile.devel (vacall-mipseb-linux.s,
	vacall-mipsel-linux.s): Use option -mno-explicit-relocs. Needed for
	IRIX.
	* callback/vacall_r/Makefile.in (vacall-i386.s): Remove space after '@'.
	Needed on Solaris/x86.
	* callback/callback.h.in (alloc_callback, is_callback): Use
	get__vacall_r().

2017-01-29  Bruno Haible  <bruno@clisp.org>

	s390: Regenerate .s and .S files with known compilers.
	* avcall/avcall-s390.c: Fix include statement.
	* avcall/Makefile.devel (avcall-s390.s): New target.
	* vacall/Makefile.devel (vacall-s390.s): New target.
	* callback/vacall_r/Makefile.devel (vacall-s390-linux.s): New target.
	* avcall/Makefile.in: Move avcall-s390.lo target.
	* vacall/Makefile.in: Move vacall-s390.o target.
	* avcall/avcall-s390.s: Remove from version control.
	* vacall/vacall-s390.s: Likewise.
	* callback/vacall_r/vacall-s390-linux.s: Likewise.
	* callback/vacall_r/vacall-s390-macro.S: Likewise.

2017-01-29  Bruno Haible  <bruno@clisp.org>

	x86_64: Regenerate .s and .S files with known compilers.
	* common/asm-x86_64.h (P2ALIGN): New macro.
	(ALIGN): Remove macro.
	* common/asm-x86_64.sh: Rewritten to consume ELF input. Produce L,
	P2ALIGN macros.
	* avcall/avcall-x86_64.c: Use __builtin_alloca instead of hacking on the
	'sp' register.
	* avcall/Makefile.devel (avcall-x86_64-linux.s): Rewritten.
	* vacall/Makefile.devel (vacall-x86_64-linux.s): Rewritten.
	* callback/vacall_r/Makefile.devel (vacall-x86_64-linux.s): Rewritten.
	* avcall/avcall-x86_64-linux.s: Remove from version control.
	* avcall/avcall-x86_64-macro.S: Likewise.
	* vacall/vacall-x86_64-linux.s: Likewise.
	* vacall/vacall-x86_64-macro.S: Likewise.
	* callback/vacall_r/vacall-x86_64-linux.s: Likewise.
	* callback/vacall_r/vacall-x86_64-macro.S: Likewise.

2017-01-29  Bruno Haible  <bruno@clisp.org>

	ia64: Regenerate .s and .S files with known compilers.
	* avcall/Makefile.devel (avcall-ia64.s): Rewritten.
	* vacall/Makefile.devel (vacall-ia64.s): Rewritten.
	* callback/vacall_r/Makefile.devel (vacall-ia64.s): Rewritten.
	* vacall/vacall-ia64.c: Put all local variables in a struct.
	* avcall/avcall-ia64.s: Remove from version control.
	* vacall/vacall-ia64.s: Likewise.
	* callback/vacall_r/vacall-ia64.s: Likewise.

2017-01-29  Bruno Haible  <bruno@clisp.org>

	powerpc, powerpc64: Regenerate .s and .S files with known compilers.
	* avcall/avcall-powerpc64.c: Use __builtin_alloca. Use an 'if' cascade
	instead of gotos.
	* avcall/Makefile.devel (avcall-powerpc-linux.s): New target.
	(avcall-powerpc-aix.s, avcall-powerpc-sysv4.s, avcall-powerpc-macos.s,
	avcall-powerpc64.s): Rewritten.
	* vacall/Makefile.devel (vacall-powerpc-linux.s): New target.
	(vacall-powerpc-aix.s, vacall-powerpc-sysv4.s, vacall-powerpc-macos.s,
	vacall-powerpc64.s): Rewritten.
	* callback/vacall_r/Makefile.devel (vacall-powerpc-linux.s): New target.
	(vacall-powerpc-aix.s, vacall-powerpc-sysv4-macro.S,
	vacall-powerpc-macos.s, vacall-powerpc64.s): Rewritten.
	* avcall/avcall-powerpc-aix.s: Remove from version control.
	* avcall/avcall-powerpc-linux.s: Likewise.
	* avcall/avcall-powerpc-sysv4.s: Likewise.
	* avcall/avcall-powerpc-macos.s: Likewise.
	* avcall/avcall-powerpc64.s: Likewise.
	* vacall/vacall-powerpc-aix.s: Likewise.
	* vacall/vacall-powerpc-linux.s: Likewise.
	* vacall/vacall-powerpc-sysv4.s: Likewise.
	* vacall/vacall-powerpc-macos.s: Likewise.
	* vacall/vacall-powerpc64.s: Likewise.
	* callback/vacall_r/vacall-powerpc-aix.s: Likewise.
	* callback/vacall_r/vacall-powerpc-linux.s: Likewise.
	* callback/vacall_r/vacall-powerpc-linux-macro.S: Likewise.
	* callback/vacall_r/vacall-powerpc-sysv4-macro.S: Likewise.
	* callback/vacall_r/vacall-powerpc-macos.s: Likewise.
	* callback/vacall_r/vacall-powerpc64.s: Likewise.

2017-02-11  Bruno Haible  <bruno@clisp.org>

	armhf: Add support for arm with -mfloat-abi=hard.
	* avcall/avcall.h.in: Add code for __armhf__, especially __av_start1,
	__av_start_struct4, av_long, av_ulong, av_ptr, __av_longlong, av_float,
	av_double, __av_struct.
	* avcall/avcall-armhf.c: New file.
	* avcall/Makefile.devel (avcall-armhf-macro.S): New target.
	* avcall/Makefile.in (avcall-armhf.lo, avcall-armhf.s): New targets.
	(clean): Remove avcall-armhf.s.
	(SOURCE_FILES): Add avcall-armhf.c, avcall-armhf-macro.S.
	* vacall/vacall.h.in: Add code for __armhf__, especially va_arg_float,
	va_arg_double.
	* vacall/vacall-armhf.c: New file.
	* vacall/Makefile.devel (vacall-armhf-macro.S): New target.
	* vacall/Makefile.in (vacall-armhf.o, vacall-armhf.s): New targets.
	(clean): Remove vacall-armhf.s.
	(SOURCE_FILES): Add vacall-armhf.c, vacall-armhf-macro.S.
	* callback/vacall_r/Makefile.maint (COPIED_FILES): Add vacall-armhf.c.
	* Makefile.in (COPIED_FILES): Add callback/vacall_r/vacall-armhf.c.
	* callback/vacall_r/vacall_r.h.in: Add code for __armhf__, especially
	va_arg_float, va_arg_double.
	* callback/vacall_r/Makefile.devel (vacall-armhf-macro.S): New target.
	* callback/vacall_r/Makefile.in (vacall-armhf.lo, vacall-armhf.s): New
	targets.
	(clean): Remove vacall-armhf.s.
	(SOURCE_FILES): Add vacall-armhf.c, vacall-armhf-macro.S.
	* trampoline/trampoline.h.in: Optionally define __armhf__.
	* trampoline/trampoline.c: Treat __armhf__ like __arm__.
	* callback/trampoline_r/trampoline_r.h.in: Optionally define __armhf__.
	* callback/trampoline_r/trampoline.c: Treat __armhf__ like __arm__.
	* PLATFORMS, */PLATFORMS: List the armv7 machine with 'hard' floats.

2017-02-11  Bruno Haible  <bruno@clisp.org>

	arm: Make callback work, for -mfloat-abi=soft.
	* callback/trampoline_r/Makefile.devel (CROSS_TOOL): New variable.
	(proto-arm.s): Use known cross-compiler and -fno-omit-frame-pointer.
	(tramp-arm.o): Use known cross-assembler.
	* callback/trampoline_r/proto-arm.s: Regenerated.
	* callback/trampoline_r/tramp-arm.s: Try three different trampolines.
	The third one, trampcallwithframe, works.
	* callback/trampoline_r/tramp-arm.o: Regenerated.
	* callback/call-used-registers.txt: Add comments about arm.
	* callback/trampoline_r/trampoline.c: For arm, use a trampoline with
	standard prologue with struct args and standard epilogue.
	* callback/trampoline_r/test1.c: On arm platforms, don't check the
	passing of env.
	* vacall/vacall-arm.c [REENTRANT]: Expect to find env on the stack, not
	in r12.
	* callback/vacall_r/Makefile.devel (vacall-arm-macro.S): Don't
	postprocess through elfhack-arm.sed.
	* callback/vacall_r/elfhack-arm.S: Remove file.
	* callback/vacall_r/elfhack-arm.sed: Remove file.
	* callback/vacall_r/Makefile.in (SOURCE_FILES): Remove elfhack-arm.S,
	elfhack-arm.sed.
	* PLATFORMS: List the arm5 machine with 'soft' floats.
	* callback/PLATFORMS: Likewise.

2017-01-31  Bruno Haible  <bruno@clisp.org>

	arm: Make vacall work, for -mfloat-abi=soft.
	* vacall/vacall.h.in [__arm__] (__va_alist): Enable the filler word.
	* callback/vacall_r/vacall_r.h.in: Likewise.
	* vacall/vacall-arm.c: Use a split struct to convince GCC to allocate
	room on the stack for the first 4 general-purpose argument words.
	* vacall/PLATFORMS: List the arm5 machine with 'soft' floats.
	* avcall/PLATFORMS: Likewise.

2017-01-29  Bruno Haible  <bruno@clisp.org>

	arm: Fulfil the constraint that the sp register must be 8-bytes-aligned.
	* avcall/avcall-arm.c: Enforce 8-bytes-alignment of the stack pointer.
	* vacall/vacall-arm.c: Likewise.

	arm: Remove support for old arm platforms without the ARM EABI.
	* avcall/avcall.h.in: Revisit all __arm__ and __ARMEL__ conditionals.
	* vacall/vacall.h.in: Likewise.
	* callback/vacall_r/vacall_r.h.in: Likewise.
	* avcall/avcall-arm.c: Renamed from avcall/avcall-armel.c.
	* avcall/Makefile.devel (avcall-arm-macro.S): Make sure it's usable for
	both endiannesses.
	(avcall-armel.s): Remove target.
	* avcall/Makefile.in (avcall-armel.lo): Remove target.
	(SOURCE_FILES): Remove avcall-armel.[cs].
	* vacall/vacall-arm.c: Renamed from vacall/vacall-armel.c.
	* vacall/Makefile.devel (vacall-arm-macro.S): Make sure it's usable for
	both endiannesses.
	(vacall-armel.s): Remove target.
	* vacall/Makefile.in (vacall-armel.o): Remove target.
	(SOURCE_FILES): Remove vacall-armel.[cs].
	* Makefile.in (COPIED_FILES): Remove callback/vacall_r/vacall-armel.c.
	* callback/vacall_r/Makefile.devel (vacall-arm-macro.S): Make sure it's
	usable for both endiannesses.
	(vacall-armel-macro.S): Remove target.
	* callback/vacall_r/Makefile.maint (COPIED_FILES): Remove
	vacall-armel.c.
	* callback/vacall_r/Makefile.in (vacall-armel.lo, vacall-armel.s):
	Remove targets.
	(clean): Don't remove vacall-armel.s.
	(SOURCE_FILES): Remove vacall-armel.c, vacall-armel-macro.S.

	arm: Regenerate .s and .S files with known compilers.
	* common/asm-arm.h (L, FUNBEGIN, FUNEND): New macros.
	* common/asm-arm.sh: Rewritten to consume ELF input. Produce L,
	FUNBEGIN, FUNEND macros.
	* avcall/Makefile.devel (avcall-arm-macro.S, avcall-armel.s): Rewritten.
	* vacall/Makefile.devel (vacall-arm-macro.S, vacall-armel.s): Rewritten.
	* callback/vacall_r/Makefile.devel (vacall-arm-macro.S,
	vacall-armel-macro.S): Rewritten.
	* avcall/avcall-arm-macro.S: Remove from version control.
	* avcall/avcall-armel.s: Likewise.
	* vacall/vacall-arm-macro.S: Likewise.
	* vacall/vacall-armel.s: Likewise.
	* callback/vacall_r/vacall-arm-macro.S: Likewise.
	* callback/vacall_r/vacall-armel-macro.S: Likewise.

2017-01-29  Bruno Haible  <bruno@clisp.org>

	hppa: Regenerate .s and .S files with known compilers.
	* common/asm-hppa.sh: New file.
	* common/asm-hppa.h: New file.
	* Makefile.in (SOURCE_FILES): Add them.
	* avcall/Makefile.devel (avcall-hppa-linux.s, avcall-hppa-macro.S): New
	targets.
	(avcall-hppa.s): Remove target.
	* avcall/Makefile.in (avcall-hppa.s): New target.
	(avcall-hppa.lo): Update.
	(clean): Remove also avcall-hppa.s.
	(SOURCE_FILES): Add avcall-hppa-linux.s, avcall-hppa-macro.S. Remove
	avcall-hppa.s.
	* vacall/vacall-hppa.c: Use explicit assignments to move the arguments
	to their stack locations.
	* vacall/Makefile.devel (vacall-hppa-linux.s, vacall-hppa-macro.S): New
	targets.
	(vacall-hppa.s): Remove target.
	* vacall/Makefile.in (vacall-hppa.s): New target.
	(vacall-hppa.o): Update.
	(clean): Remove also vacall-hppa.s.
	(SOURCE_FILES): Add vacall-hppa-linux.s, vacall-hppa-macro.S. Remove
	vacall-hppa.s.
	* callback/vacall_r/Makefile.devel (vacall-hppa-linux.s,
	vacall-hppa-macro.S): New targets.
	(vacall-hppa.s): Remove target.
	* callback/vacall_r/Makefile.in (vacall-hppa.s): New target.
	(vacall-hppa.lo): Update.
	(clean): Remove also vacall-hppa.s.
	(SOURCE_FILES): Add vacall-hppa-linux.s, vacall-hppa-macro.S. Remove
	vacall-hppa.s.
	* avcall/avcall-hppa.s: Remove from version control.
	* vacall/vacall-hppa.s: Likewise.
	* callback/vacall_r/vacall-hppa.s: Likewise.
	* PLATFORMS, */PLATFORMS: List hppa2.0w-hp-hpux11.31 (cc).

2017-01-29  Bruno Haible  <bruno@clisp.org>

	alpha: Regenerate .s and .S files with known compilers.
	* avcall/avcall-alpha.c: Use __builtin_alloca.
	* avcall/Makefile.devel (precompiled): Depend on avcall-alpha.s.
	(avcall-alpha.s): Rewritten.
	* vacall/vacall-alpha.c: Put all local variables in a struct.
	* vacall/Makefile.devel (precompiled): Depend on vacall-alpha.s.
	(vacall-alpha.s): Rewritten.
	* callback/vacall_r/Makefile.devel (precompiled): Depend on
	vacall-alpha-macro.S.
	(vacall-alpha-linux.s): New target.
	(vacall-alpha-macro.S): Rewritten.
	* callback/vacall_r/Makefile.in (SOURCE_FILES): Add
	vacall-alpha-linux.s.
	* avcall/avcall-alpha.s: Remove from version control.
	* vacall/vacall-alpha.s: Likewise.
	* callback/vacall_r/vacall-alpha-macro.S: Likewise.

2017-01-29  Bruno Haible  <bruno@clisp.org>

	sparc64: Fix for Solaris.
	* vacall/Makefile.devel (vacall-sparc64-linux.s): Produce code that does
	not make assumptions about the address space.
	* PLATFORMS, */PLATFORMS: List sparc64-sun-solaris2.10 (gcc -m64,
	cc -xarch=generic64).

2017-01-29  Bruno Haible  <bruno@clisp.org>

	sparc, sparc64: Regenerate .s and .S files with known compilers.
	* common/asm-sparc.h (L, FUNBEGIN, FUNEND): New macros.
	* common/asm-sparc.sh: Rewritten to consume ELF input. Produce L,
	FUNBEGIN, FUNEND macros.
	* common/asm-sparc64.sh: Remove file.
	* Makefile.in (SOURCE_FILES): Remove common/asm-sparc64.sh.
	* avcall/Makefile.devel (precompiled): Depend on avcall-sparc-macro.S
	and avcall-sparc64-macro.S.
	(avcall-sparc-linux.s, avcall-sparc64-linux.s): New target.
	(avcall-sparc-macro.S, avcall-sparc64-macro.S): Rewritten.
	* avcall/Makefile.in (SOURCE_FILES): Add avcall-sparc-linux.s,
	avcall-sparc64-linux.s.
	* vacall/Makefile.devel (precompiled): Depend on vacall-sparc-macro.S
	and vacall-sparc64-macro.S.
	(vacall-sparc-linux.s, vacall-sparc64-linux.s): New target.
	(vacall-sparc-macro.S, vacall-sparc64-macro.S): Rewritten.
	* vacall/Makefile.in (SOURCE_FILES): Add vacall-sparc-linux.s,
	vacall-sparc64-linux.s.
	* callback/vacall_r/Makefile.devel (precompiled): Depend on
	vacall-sparc-macro.S and vacall-sparc64-macro.S.
	(vacall-sparc-linux.s, vacall-sparc64-linux.s): New target.
	(vacall-sparc-macro.S, vacall-sparc64-macro.S): Rewritten.
	* callback/vacall_r/Makefile.in (SOURCE_FILES): Add
	vacall-sparc-linux.s, vacall-sparc64-linux.s.
	* avcall/avcall-sparc-macro.S: Remove from version control.
	* avcall/avcall-sparc64-macro.S: Likewise.
	* vacall/vacall-sparc-macro.S: Likewise.
	* vacall/vacall-sparc64-macro.S: Likewise.
	* callback/vacall_r/vacall-sparc-macro.S: Likewise.
	* callback/vacall_r/vacall-sparc64-macro.S: Likewise.

2017-01-29  Bruno Haible  <bruno@clisp.org>

	mips64: Make it work on Linux (mips64, mips64el) with "gcc -mabi=64".
	* avcall/avcall-mips64.c: Add code for struct returns on _MIPSEL.
	* avcall/Makefile.devel (avcall-mips64eb-linux.s,
	avcall-mips64eb-macro.S, avcall-mips64el-linux.s,
	avcall-mips64el-macro.S): New targets.
	(avcall-mips64-linux.s, avcall-mips64-macro.S): Remove targets.
	* avcall/Makefile.in (avcall-mips64.s): Take into account the
	ENDIANNESS.
	(SOURCE_FILES): Add avcall-mips64eb-linux.s, avcall-mips64el-linux.s,
	avcall-mips64eb-macro.S, avcall-mips64el-macro.S.
	Remove avcall-mips64-linux.s, avcall-mips64-macro.S.
	* vacall/vacall-mips64.c: Add code for struct returns on _MIPSEL.
	* vacall/Makefile.devel (vacall-mips64eb-linux.s,
	vacall-mips64eb-macro.S, vacall-mips64el-linux.s,
	vacall-mips64el-macro.S): New targets.
	(vacall-mips64-linux.s, vacall-mips64-macro.S): Remove targets.
	* vacall/Makefile.in (vacall-mips64.s): Take into account the
	ENDIANNESS.
	(SOURCE_FILES): Add vacall-mips64eb-linux.s, vacall-mips64el-linux.s,
	vacall-mips64eb-macro.S, vacall-mips64el-macro.S.
	Remove vacall-mips64-linux.s, vacall-mips64-macro.S.
	* callback/vacall_r/Makefile.devel (vacall-mips64eb-linux.s,
	vacall-mips64eb-macro.S, vacall-mips64el-linux.s,
	vacall-mips64el-macro.S): New targets.
	(vacall-mips64-linux.s, vacall-mips64-macro.S): Remove targets.
	* callback/vacall_r/Makefile.in (vacall-mips64.s): Take into account the
	ENDIANNESS.
	(SOURCE_FILES): Add vacall-mips64eb-linux.s, vacall-mips64el-linux.s,
	vacall-mips64eb-macro.S, vacall-mips64el-macro.S.
	Remove vacall-mips64-linux.s, vacall-mips64-macro.S.
	* PLATFORMS, */PLATFORMS: List mips64-unknown-linux (gcc -mabi=64).

2017-01-29  Bruno Haible  <bruno@clisp.org>

	mipsn32: Make it work on Linux (mips64, mips64el) with "gcc -mabi=n32".
	* avcall/avcall-mipsn32.c: Add code for struct returns on _MIPSEL.
	* avcall/Makefile.devel (avcall-mipsn32eb-linux.s,
	avcall-mipsn32eb-macro.S, avcall-mipsn32el-linux.s,
	avcall-mipsn32el-macro.S): New targets.
	(avcall-mipsn32-linux.s, avcall-mipsn32-macro.S): Remove targets.
	* avcall/Makefile.in (avcall-mipsn32.s): Take into account the
	ENDIANNESS.
	(SOURCE_FILES): Add avcall-mipsn32eb-linux.s,
	avcall-mipsn32el-linux.s, avcall-mipsn32eb-macro.S,
	avcall-mipsn32el-macro.S.
	Remove avcall-mipsn32-linux.s, avcall-mipsn32-macro.S.
	* vacall/vacall-mipsn32.c: Add code for struct returns on _MIPSEL.
	* vacall/Makefile.devel (vacall-mipsn32eb-linux.s,
	vacall-mipsn32eb-macro.S, vacall-mipsn32el-linux.s,
	vacall-mipsn32el-macro.S): New targets.
	(vacall-mipsn32-linux.s, vacall-mipsn32-macro.S): Remove targets.
	* vacall/Makefile.in (vacall-mipsn32.s): Take into account the
	ENDIANNESS.
	(SOURCE_FILES): Add vacall-mipsn32eb-linux.s, vacall-mipsn32el-linux.s,
	vacall-mipsn32eb-macro.S, vacall-mipsn32el-macro.S.
	Remove vacall-mipsn32-linux.s, vacall-mipsn32-macro.S.
	* callback/vacall_r/Makefile.devel (vacall-mipsn32eb-linux.s,
	vacall-mipsn32eb-macro.S, vacall-mipsn32el-linux.s,
	vacall-mipsn32el-macro.S): New targets.
	(vacall-mipsn32-linux.s, vacall-mipsn32-macro.S): Remove targets.
	* callback/vacall_r/Makefile.in (vacall-mipsn32.s): Take into account
	the ENDIANNESS.
	(SOURCE_FILES): Add vacall-mipsn32eb-linux.s, vacall-mipsn32el-linux.s,
	vacall-mipsn32eb-macro.S, vacall-mipsn32el-macro.S.
	Remove vacall-mipsn32-linux.s, vacall-mipsn32-macro.S.
	* PLATFORMS, */PLATFORMS: List mips64-unknown-linux (gcc -mabi=n32).

2017-01-29  Bruno Haible  <bruno@clisp.org>

	mips: Make it work on Linux (mips, mipsel) with "gcc -mabi=32".
	* m4/endianness.m4: New file.
	* avcall/Makefile.devel (avcall-mipseb-linux.s, avcall-mipseb-macro.S,
	avcall-mipsel-linux.s, avcall-mipsel-macro.S): New targets.
	(avcall-mips-linux.s, avcall-mips-macro.S): Remove targets.
	* avcall/configure.ac: Invoke FFCALL_ENDIANNESS.
	* avcall/Makefile.in (avcall-mips.s): Take into account the ENDIANNESS.
	(SOURCE_FILES): Add avcall-mipseb-linux.s, avcall-mipsel-linux.s,
	avcall-mipseb-macro.S, avcall-mipsel-macro.S.
	Remove avcall-mips-linux.s, avcall-mips-macro.S.
	* vacall/Makefile.devel (vacall-mipseb-linux.s, vacall-mipseb-macro.S,
	vacall-mipsel-linux.s, vacall-mipsel-macro.S): New targets.
	(vacall-mips-linux.s, vacall-mips-macro.S): Remove targets.
	* vacall/configure.ac: Invoke FFCALL_ENDIANNESS.
	* vacall/Makefile.in (vacall-mips.s): Take into account the ENDIANNESS.
	(SOURCE_FILES): Add vacall-mipseb-linux.s, vacall-mipsel-linux.s,
	vacall-mipseb-macro.S, vacall-mipsel-macro.S.
	Remove vacall-mips-linux.s, vacall-mips-macro.S.
	* callback/vacall_r/Makefile.devel (vacall-mipseb-linux.s,
	vacall-mipseb-macro.S, vacall-mipsel-linux.s, vacall-mipsel-macro.S):
	New targets.
	* callback/vacall_r/configure.ac: Invoke FFCALL_ENDIANNESS.
	* callback/vacall_r/Makefile.in (vacall-mips.s): Take into account the
	ENDIANNESS.
	(SOURCE_FILES): Add vacall-mipseb-linux.s, vacall-mipsel-linux.s,
	vacall-mipseb-macro.S, vacall-mipsel-macro.S.
	Remove vacall-mips-linux.s, vacall-mips-macro.S.
	* PLATFORMS, */PLATFORMS: List mips-unknown-linux (gcc -mabi=32).

2017-01-29  Bruno Haible  <bruno@clisp.org>

	mips, mipsn32, mips64: Regenerate .s and .S files with known compilers.
	This restores support for IRIX with cc -32 (regression from 2008-09-26).
	* common/asm-mips.sh: Rewritten to consume ELF input.
	* avcall/avcall-mips.c: Rely on the compiler to set $25 at each
	function call. Add comment about broken GCC 3.3.x and 3.4.x. Avoid
	'switch' statements, to make the generated code position-independent.
	Declare iret2 as single __avword.
	* avcall/avcall-mipsn32.c: Use __builtin_alloca. Rely on the compiler
	to set $25 at each function call.
	* avcall/avcall-mips64.c: Likewise.
	* avcall/Makefile.devel (precompiled): Depend on avcall-mips-macro.S,
	avcall-mipsn32-macro.S, avcall-mips64-macro.S.
	(avcall-mips-linux.s, avcall-mipsn32-linux.s, avcall-mips64-linux.s):
	New targets.
	(avcall-mips-macro.S, avcall-mipsn32-macro.S, avcall-mips64-macro.S):
	Rewritten.
	* avcall/Makefile.in (SOURCE_FILES): Add avcall-mips-linux.s,
	avcall-mipsn32-linux.s, avcall-mips64-linux.s.
	* vacall/vacall-mips.c: Rely on the compiler to set $25 at each
	function call.
	* vacall/vacall-mipsn32.c: Likewise.
	* vacall/vacall-mips64.c: Likewise. Add offset to references of
	arguments in the stack.
	* vacall/Makefile.devel (precompiled): Depend on vacall-mips-macro.S,
	vacall-mipsn32-macro.S, vacall-mips64-macro.S.
	(vacall-mips-linux.s, vacall-mipsn32-linux.s, vacall-mips64-linux.s):
	New targets.
	(vacall-mips-macro.S): Rewritten.
	(vacall-mipsn32-macro.S): Rewritten. Update the postprocessing hack.
	(vacall-mips64-macro.S): Rewritten. Add a postprocessing hack.
	* vacall/Makefile.in (SOURCE_FILES): Add vacall-mips-linux.s,
	vacall-mipsn32-linux.s, vacall-mips64-linux.s.
	* callback/vacall_r/Makefile.devel (precompiled): Depend on
	vacall-mips-macro.S, vacall-mipsn32-macro.S, vacall-mips64-macro.S.
	(vacall-mips-linux.s, vacall-mipsn32-linux.s, vacall-mips64-linux.s):
	New targets.
	(vacall-mips-macro.S): Rewritten.
	(vacall-mipsn32-macro.S): Rewritten. Update the postprocessing hack.
	(vacall-mips64-macro.S): Rewritten. Add a postprocessing hack.
	* callback/vacall_r/Makefile.in (SOURCE_FILES): Add vacall-mips-linux.s,
	vacall-mipsn32-linux.s, vacall-mips64-linux.s.
	* avcall/avcall-mips-macro.S: Remove from version control.
	* avcall/avcall-mipsn32-macro.S: Likewise.
	* avcall/avcall-mips64-macro.S: Likewise.
	* vacall/vacall-mips-macro.S: Likewise.
	* vacall/vacall-mipsn32-macro.S: Likewise.
	* vacall/vacall-mips64-macro.S: Likewise.
	* callback/vacall_r/vacall-mips-macro.S: Likewise.
	* callback/vacall_r/vacall-mipsn32-macro.S: Likewise.
	* callback/vacall_r/vacall-mips64-macro.S: Likewise.
	* PLATFORMS, */PLATFORMS: List mips-sgi-irix6.5 (cc -32).

2017-01-29  Bruno Haible  <bruno@clisp.org>

	m68k: Regenerate .s and .S files with known compilers.
	* common/asm-m68k.h (L, FUNBEGIN, FUNEND): New macros.
	* common/asm-m68k.sh: Expect a syntax argument. Produce L, FUNBEGIN,
	FUNEND macros.
	* avcall/avcall-m68k.c: Use __builtin_alloca instead of hacking on the
	'sp' register.
	* avcall/Makefile.devel (precompiled): Depend on avcall-m68k.mit.S and
	avcall-m68k.motorola.S.
	(avcall-m68k-linux.s, avcall-m68k-sun.s): New targets.
	(avcall-m68k.mit.S, avcall-m68k.motorola.S): Rewritten.
	* avcall/Makefile.in (avcall-m68k.s): Depend on avcall-m68k.motorola.S
	instead of avcall-m68k.mot.s.
	(SOURCE_FILES): Add avcall-m68k-linux.s, avcall-m68k-sun.s.
	Replace avcall-m68k.mot.s with avcall-m68k.motorola.S.
	* vacall/Makefile.devel (precompiled): Depend on vacall-m68k.mit.S and
	vacall-m68k.motorola.S.
	(vacall-m68k-linux.s, vacall-m68k-sun.s): New targets.
	(vacall-m68k.mit.S, vacall-m68k.motorola.S): Rewritten.
	* vacall/Makefile.in (vacall-m68k.s): Depend on vacall-m68k.motorola.S
	instead of vacall-m68k.mot.s.
	(SOURCE_FILES): Add vacall-m68k-linux.s,
	vacall-m68k-sun.s, vacall-mips-linux.s, vacall-mipsn32-linux.s,
	Replace vacall-m68k.mot.s with vacall-m68k.motorola.S.
	* callback/vacall_r/Makefile.devel (precompiled): Depend on
	vacall-m68k.mit.S, vacall-m68k.motorola.S, vacall-m68k-netbsd-macro.S.
	(vacall-m68k-linux.s, vacall-m68k-sun.s): New targets.
	(vacall-m68k.mit.S, vacall-m68k.motorola.S, vacall-m68k-netbsd-macro.S):
	Rewritten.
	* callback/vacall_r/Makefile.in (vacall-m68k.s): Depend on
	vacall-m68k.motorola.S instead of vacall-m68k.mot.s.
	(SOURCE_FILES): Add vacall-m68k-linux.s, vacall-m68k-sun.s.
	Replace vacall-m68k.mot.s with vacall-m68k.motorola.S.
	* avcall/avcall-m68k.mit.S: Remove from version control.
	* avcall/avcall-m68k.mot.s: Likewise.
	* callback/vacall_r/vacall-m68k-netbsd-macro.S: Likewise.
	* callback/vacall_r/vacall-m68k.mit.S: Likewise.
	* callback/vacall_r/vacall-m68k.mot.s: Likewise.
	* vacall/vacall-m68k.mit.S: Likewise.
	* vacall/vacall-m68k.mot.s: Likewise.

2017-01-29  Bruno Haible  <bruno@clisp.org>

	i386: Regenerate .s and .S files with known compilers.
	* common/asm-i386.hh (P2ALIGN): New macro.
	(FUNEND): Take two arguments.
	* common/asm-i386.sh: Rewritten to consume ELF input. Produce P2ALIGN
	macro. Handle indirect call statements.
	* avcall/avcall-i386.c: Use __builtin_alloca instead of hacking on the
	'sp' register.
	* avcall/Makefile.devel (precompiled): Depend on avcall-i386-macro.S.
	(avcall-i386-linux.s): New target.
	(avcall-i386-macro.S): Rewritten.
	* avcall/Makefile.in (SOURCE_FILES): Add avcall-i386-linux.s.
	* vacall/vacall-i386.c: Insert the appropriate stack cleanup before
	'ret $4'.
	* vacall/Makefile.devel (precompiled): Depend on vacall-i386-macro.S.
	(vacall-i386-linux.s): New target.
	(vacall-i386-macro.S): Rewritten.
	* vacall/Makefile.in (SOURCE_FILES): Add vacall-i386-linux.s.
	* callback/vacall_r/Makefile.devel (precompiled): Depend on
	vacall-i386-macro.S.
	(vacall-i386-linux.s): New target.
	(vacall-i386-macro.S): Rewritten.
	* callback/vacall_r/Makefile.in (SOURCE_FILES): Add vacall-i386-linux.s.
	* avcall/avcall-i386-macro.S: Remove from version control.
	* vacall/vacall-i386-macro.S: Likewise.
	* callback/vacall_r/vacall-i386-macro.S: Likewise.

2017-02-11  Bruno Haible  <bruno@clisp.org>

	Prepare for regenerating .s and .S files with known compilers.
	This serves three purposes:
	1. Being able to regenerate everything if avcall.h.in or vacall.h.in
	   changes.
	2. Allow safe stack unwinding across avcall and vacall invocations.
	3. Allow distributing libavcall and libcallback as shared libraries.
	* README-hacking: Document the cross compilers.
	* cross-tools/cross.conf: New file.
	* cross-tools/cross-build.sh: New file.
	* cross-tools/cross.in: New file.
	* cross-tools/patches/*.patch: New files.
	* avcall/Makefile.devel (GCCFLAGS): Add -fno-omit-frame-pointer, -fPIC.
	(CROSS_TOOL): New variable.
	* vacall/Makefile.devel (GCCFLAGS): Add -fno-omit-frame-pointer.
	(CROSS_TOOL): New variable.
	* callback/vacall_r/Makefile.devel (GCCFLAGS): Add
	-fno-omit-frame-pointer, -fPIC.
	(CROSS_TOOL): New variable.

2017-01-29  Bruno Haible  <bruno@clisp.org>

	s390: Fix long long args.
	* avcall/avcall.h.in (__av_longlong): Align only on a 4-bytes boundary,
	not on an 8-bytes boundary. Fix condition for switching from register
	args to stack args.
	* vacall/vacall.h.in (__va_arg_leftadjusted, __va_arg_rightadjusted):
	Fix condition for switching from register args to stack args.
	(__va_arg_longlong): Use __va_arg.
	* callback/vacall_r/vacall_r.h.in (__va_arg_leftadjusted,
	__va_arg_rightadjusted): Fix condition for switching from register args
	to stack args.
	(__va_arg_longlong): Use __va_arg.
	* PLATFORMS, */PLATFORMS: List s390x-ibm-linux with "gcc -m31".

2017-01-29  Bruno Haible  <bruno@clisp.org>

	s390: Fix trampoline.
	* trampoline/trampoline.c [__s390__]: Fix is_tramp macro.

2017-01-29  Bruno Haible  <bruno@clisp.org>

	ia64: Fix struct args.
	* avcall/avcall.h.in (__av_struct): Tweak #if.
	* avcall/avcall-ia64.c: Fix comment.
	* vacall/vacall.h.in (__va_arg_struct): Change #if to match
	callback/vacall_r/vacall_r.h.in.
	* callback/call-used-registers.txt: Fix info about ia64.
	* callback/vacall_r/vacall_r.h.in (__va_arg_struct): Tweak #if.
	* callback/trampoline_r/trampoline.c [__ia64__]: Fix is_tramp macro.

2017-01-29  Bruno Haible  <bruno@clisp.org>

	powerpc64: Make trampoline work on AIX in a 64-bit build.
	* trampoline/tramp-powerpc64-aix.S: Add assembler pseudo-ops for AIX.
	* callback/trampoline_r/tramp-powerpc64-aix.S: Likewise.

2017-01-29  Bruno Haible  <bruno@clisp.org>

	arm: Comments.
	* avcall/avcall-arm.c: Add comments.
	* avcall/avcall.h.in: Fix comment.

2017-01-29  Bruno Haible  <bruno@clisp.org>

	arm: Make trampoline work on real ARM harware.
	The cache flushing code in cache-arm.c and cache-armel.c are for old
	Linux versions. Nowadays the best way is through the GCC builtin
	function __clear_cache (which makes the appropriate Linux system call).
	* trampoline/trampoline.c (alloc_trampoline) [__arm__]: Invoke GCC
	builtin function __clear_cache. Remove call to __TR_clear_cache.
	* callback/trampoline_r/trampoline.c (alloc_trampoline_r) [__arm__]:
	Likewise.
	* trampoline/cache-arm.[cs]: Remove files.
	* trampoline/cache-armel.[cs]: Remove files.
	* callback/trampoline_r/Makefile.maint (COPIED_FILES): Remove
	cache-arm*.
	* Makefile.in (COPIED_FILES): Remove callback/trampoline_r/cache-arm*.
	* trampoline/Makefile.devel (cache-armel.s): Remove target.
	* trampoline/configure.ac (CPU_OBJECTS): Leave empty for arm and armel.
	* trampoline/Makefile.in (cache-arm.o, cache-armel.o): Remove targets.
	(SOURCE_FILES): Remove cache-arm.[cs], cache-armel.[cs].
	* callback/trampoline_r/Makefile.devel (cache-armel.s): Remove target.
	* callback/trampoline_r/configure.ac (CPU_OBJECTS): Leave empty for arm
	and armel.
	* callback/trampoline_r/Makefile.in (cache-arm.lo, cache-armel.lo):
	Remove targets.
	(SOURCE_FILES): Remove cache-arm.[cs], cache-armel.[cs].
	* trampoline/PLATFORMS: Add two ARM platforms.

2017-01-29  Bruno Haible  <bruno@clisp.org>

	hppa: Fix struct returns.
	* avcall/avcall.h.in [__hppa__]: Don't set __AV_PCC_STRUCT_RETURN by
	default.
	* avcall/avcall-hppa.c: Fix comment.
	* vacall/vacall.h.in [__hppa__]: Don't set __VA_PCC_STRUCT_RETURN by
	default.
	* callback/vacall_r/vacall_r.h.in [__hppa__]: Don't set
	__VA_PCC_STRUCT_RETURN by default.

2017-01-29  Bruno Haible  <bruno@clisp.org>

	sparc64: Fix the passing of 'float' arguments.
	* vacall/vacall.h.in (va_arg_float): Expect the float in the upper half
	of the 8-bytes word.
	* callback/vacall_r/vacall_r.h.in (va_arg_float): Likewise.
	* PLATFORMS, */PLATFORMS: List sparc64-unknown-linux (gcc).

2017-01-29  Bruno Haible  <bruno@clisp.org>

	sparc64: Fix a compiler warning.
	* vacall/vacall.h.in (__va_arg_struct): Add a cast to pointer.
	* callback/vacall_r/vacall_r.h.in: Likewise.

2017-01-29  Bruno Haible  <bruno@clisp.org>

	mips64: Fix trampoline_r.
	* callback/trampoline_r/trampoline.c: Fix conditionals that involve
	__mips64__.
	* callback/trampoline_r/test1.c: Fix duplicate declaration of 'env' on
	mips64.

2017-01-29  Bruno Haible  <bruno@clisp.org>

	mipsn32, mips64: Fix for little-endian platforms.
	* vacall/vacall.h.in (__va_arg_adjusted): Use same conditional on
	_MIPSEB and _MIPSEL as in callback/vacall_r/vacall_r.h.in.
	* callback/vacall_r/vacall_r.h.in: Reorder parts of a #if condition.

2017-01-29  Bruno Haible  <bruno@clisp.org>

	mips: Fix for Linux with "gcc -mabi=32".
	* trampoline/tramp-mips.old.o: Renamed from trampoline/tramp-mips.o.
	* trampoline/tramp-mips.old.s: Renamed from trampoline/tramp-mips.s.
	* trampoline/tramp-mips.s: New file, based on
	trampoline/tramp-mipsn32.s.
	* trampoline/tramp-mips.o: New generated file.
	* trampoline/trampoline.c: For __mips__, use the same trampoline as for
	__mipsn32__.

2017-01-29  Bruno Haible  <bruno@clisp.org>

	mips: Fix for Linux with "gcc -mabi=32".
	* vacall/vacall.h.in (__va_arg_adjusted): Use same conditional on
	_MIPSEB as in callback/vacall_r/vacall_r.h.in.

2017-01-29  Bruno Haible  <bruno@clisp.org>

	mipsn32, mips64: Fix struct args and struct returns with newer GCC.
	* avcall/avcall.h.in: For mipsn32 and mips64 in gcc >= 3.4:
	1. Don't set __AV_GCC_STRUCT_RETURN.
	2. Use __AV_SGICC_STRUCT_ARGS.
	* vacall/vacall.h.in: For mipsn32 and mips64 in gcc >= 3.4:
	1. Don't set __VA_GCC_STRUCT_RETURN.
	2. Use __VA_SGICC_STRUCT_ARGS.
	* callback/vacall_r/vacall_r.h.in: Likewise.
	* PLATFORMS, */PLATFORMS: List mips-sgi-irix6.5 (gcc -mabi=n32).

2017-01-29  Bruno Haible  <bruno@clisp.org>

	x86_64: Fix bug with structure arguments larger than 16 bytes.
	* avcall/avcall.h.in (__av_struct): Pass structures > 16 bytes on the
	stack.
	* vacall/vacall.h.in (__va_arg_adjusted): Expect types > 16 bytes passed
	on the stack.
	* callback/vacall_r/vacall_r.h.in (__va_arg_adjusted): Likewise.

2017-01-29  Bruno Haible  <bruno@clisp.org>

	i386, x86_64, sparc, sparc64: Fix for the Sun Studio 11 compiler.
	When preprocessing a .S file, "cc -E" activates some other preprocessor
	than the usual C preprocessor.
	* avcall/Makefile.in (avcall-i386.s, avcall-sparc.s, avcall-sparc64.s,
	avcall-x86_64.s): Feed the input to the preprocessor through standard
	input. Postprocess to remove space after '.' and '@'.
	* vacall/Makefile.in (vacall-i386.s, vacall-sparc.s, vacall-sparc64.s,
	vacall-x86_64.s): Likewise.
	* trampoline/Makefile.in (cache-sparc.s, cache-sparc64.s): Likewise.
	* callback/vacall_r/Makefile.in (vacall-i386.s, vacall-sparc.s,
	vacall-sparc64.s, vacall-x86_64.s): Likewise.
	* callback/trampoline_r/Makefile.in (cache-sparc.s, cache-sparc64.s):
	Likewise.

2017-01-29  Bruno Haible  <bruno@clisp.org>

	List platforms on which libffcall is known to work.
	* PLATFORMS, */PLATFORMS: List i386-pc-solaris2.10 (gcc),
	mips-sgi-irix6.5 (cc -n32), sparc-unknown-linux (gcc),
	alphaev67-unknown-linux (gcc), powerpc-ibm-aix7.1.3.0 (xlc, gcc).

2017-01-29  Bruno Haible  <bruno@clisp.org>

	Don't violate ISO C rules.
	* avcall/avcall.h.in (__av_struct): Don't store an unaligned pointer
	in (LIST).aptr.

2017-01-29  Bruno Haible  <bruno@clisp.org>

	Don't make side-effects before overflow checking.
	* avcall/avcall.h.in: In most macro definitions, modify (LIST).aptr
	after checking that it will remain within range, not before. But
	continue to modify (LIST).aptr before storing the argument, as this
	makes it easier w.r.t. to the alignment. This produces some more
	duplicate expressions that the compiler will eliminate. But the code
	is clearer this way.

2017-01-29  Bruno Haible  <bruno@clisp.org>

	Add more floating-point, mixed-number, general-purpose args tests.
	* avcall/tests.c (f_f24, d_iiidi, d_fdi, ll_iiilli, D_Dfd,
	l_l0K, ..., l_l6K, ll_l2ll, ..., ll_l7ll, d_l2d, ... d_l7d): New tests.
	* vacall/tests.c: Likewise.
	* callback/tests.c: Likewise.

2017-01-29  Bruno Haible  <bruno@clisp.org>

	Enable the 'long long' tests in callback.
	* callback/configure.ac: Invoke AC_TYPE_LONG_LONG_INT.
	* callback/tests.c: Test HAVE_LONG_LONG_INT, not HAVE_LONG_LONG.
	* avcall/avcall.h.in: Fix comment.
	* vacall/vacall.h.in: Likewise.

2017-01-29  Bruno Haible  <bruno@clisp.org>

	devel: Make it easy to keep the autogenerated files up-to-date.
	* avcall/Makefile.devel: Make all *.[sS] files depend on this file.
	(precompiled): Comment out all dependencies.
	* vacall/Makefile.devel: Likewise.
	* callback/vacall_r/Makefile.devel: Likewise.
	* callback/vacall_r/Makefile.maint (copied-files): New target.
	* callback/trampoline_r/Makefile.maint (copied-files): New target.
	* autogen.sh: To copy the files, just invoke these targets.
	* Makefile.devel (precompiled): New target.

2017-01-29  Bruno Haible  <bruno@clisp.org>

	configuration: Support the AR configure variable.
	Needed for a 64-bit build on AIX.
	* vacall/configure.ac: Invoke gl_PROG_AR_RANLIB instead of
	AC_PROG_RANLIB.
	* trampoline/configure.ac: Likewise.
	* vacall/Makefile.in (AR): Use value determined by gl_PROG_AR_RANLIB.
	* trampoline/Makefile.in (AR): Likewise.
	* avcall/Makefile.in (AR): Use value determined by libtool.
	* callback/Makefile.in (AR): Likewise.
	* callback/vacall_r/Makefile.in (AR): Likewise.
	* callback/trampoline_r/Makefile.in (AR): Likewise.
	* avcall/configure.ac: Reorder (a no-op).
	* callback/configure.ac: Likewise.
	* callback/vacall_r/configure.ac: Likewise.
	* callback/trampoline_r/configure.ac: Likewise.

2017-01-29  Bruno Haible  <bruno@clisp.org>

	configuration: Simplification.
	* m4/general.m4 (CL_CONFIG_SUBDIRS): Remove macro.
	* configure.ac: Use AC_CONFIG_SUBDIRS instead of CL_CONFIG_SUBDIRS.
	* callback/configure.ac: Likewise.

2017-01-29  Bruno Haible  <bruno@clisp.org>

	Revert the addition of a powerpc64le port by Masanori Mitsugi
	(commit from 2015-08-23).

2017-01-29  Bruno Haible  <bruno@clisp.org>

	Add support for some Linux+PaX or SELinux kernels and for HardenedBSD.
	Reported
	- by Gerard Milmeister in https://sourceforge.net/p/clisp/bugs/356/,
	- by Pradeep Kumar in https://sourceforge.net/p/clisp/bugs/415/,
	- by Don Cohen in
	  http://lists.gnu.org/archive/html/libffcall/2016-12/msg00002.html,
	- by Nelson Beebe.
	* m4/codeexec.m4 (FFCALL_CODEEXEC_PAX): New macro.
	* m4/general.m4 (FFCALL_COMMON_TRAMPOLINE): Require it.
	* trampoline/trampoline.c (EXECUTABLE_VIA_MALLOC_THEN_MPROTECT,
	EXECUTABLE_VIA_MMAP_THEN_MPROTECT, EXECUTABLE_VIA_MMAP_FILE_SHARED):
	New macros.
	(EXECUTABLE_VIA_MPROTECT, EXECUTABLE_VIA_MMAP_ANONYMOUS,
	EXECUTABLE_VIA_MMAP_DEVZERO): Remove macros.
	(MAP_FILE, MAP_VARIABLE): Define fallbacks.
	(pagesize): Define outside of functions.
	(alloc_trampoline): If EXECUTABLE_VIA_MMAP_FILE_SHARED is defined,
	create separate mappings of a file, for writing and for executing.
	If EXECUTABLE_VIA_MMAP_THEN_MPROTECT is defined, use mmap of an
	anonymous page, then mprotect.
	(free_trampoline): Convert back from executable address to writable
	address.
	* callback/trampoline_r/trampoline.c
	(EXECUTABLE_VIA_MALLOC_THEN_MPROTECT, EXECUTABLE_VIA_MMAP_THEN_MPROTECT,
	EXECUTABLE_VIA_MMAP_FILE_SHARED): New macros.
	(EXECUTABLE_VIA_MPROTECT, EXECUTABLE_VIA_MMAP_ANONYMOUS,
	EXECUTABLE_VIA_MMAP_DEVZERO): Remove macros.
	(MAP_FILE, MAP_VARIABLE): Define fallbacks.
	(pagesize): Define outside of functions.
	(alloc_trampoline_r): If EXECUTABLE_VIA_MMAP_FILE_SHARED is defined,
	create separate mappings of a file, for writing and for executing.
	If EXECUTABLE_VIA_MMAP_THEN_MPROTECT is defined, use mmap of an
	anonymous page, then mprotect.
	(free_trampoline_r, is_trampoline_r): Convert back from executable
	address to writable address.

2017-01-29  Bruno Haible  <bruno@clisp.org>

	Fix "Generic workaround against the ELF symbol resolving routine".
	* callback/vacall_r/elfhack-alpha.S: Put env in register $1, not $2.
	* callback/vacall_r/elfhack-alpha.sed: Make it find the correct line.
	* callback/trampoline_r/trampoline.c [__ia64__]: Fix code for
	BINFMT_ELF.
	[__mips64__]: Fix a typo in the trampoline for BINFMT_ELF.
	[__s390__]: Fix typo in is_tramp macro for BINFMT_ELF.

2017-01-10  Bruno Haible  <bruno@clisp.org>

	Update documentation.
	* README: Refer to the git repository, not to the last release.
	* DEPENDENCIES: New file.
	* Makefile.in (SOURCE_FILES): Add it.
	* README-hacking: New file.

2017-01-09  Bruno Haible  <bruno@clisp.org>

	Remove support for m68k/HP-UX, m68k/NeXT, apollo, mips/Ultrix.
	* trampoline/trampoline.c: Remove hpux, NeXT, apollo, ultrix
	conditionals.
	* trampoline/cache.c: Likewise.
	* callback/trampoline_r/trampoline.c: Likewise.

2017-01-09  Bruno Haible  <bruno@clisp.org>

	Remove support for m68k/AmigaOS.
	* avcall/Makefile.devel (avcall-m68k-amiga.s): Remove target.
	* avcall/avcall-m68k-amiga.c: Remove file.
	* avcall/avcall-m68k-amiga.s: Remove file.
	* avcall/Makefile.in (SOURCE_FILES): Remove them.
	* avcall/avcall.h.in: Remove AMIGA conditionals.
	* avcall/tests.c: Likewise.
	* trampoline/trampoline.c: Likewise.
	* callback/trampoline_r/trampoline.c: Likewise.

2017-01-09  Bruno Haible  <bruno@clisp.org>

	Remove support for the AIX 3 operating system.
	* avcall/Makefile.devel (avcall-powerpc-aix.s): Renamed from
	avcall-powerpc-aix.new.s.
	(avcall-powerpc-aix.old.s): Remove target.
	* avcall/avcall-powerpc-aix.s: Renamed from
	avcall/avcall-powerpc-aix.new.s.
	* avcall/avcall-powerpc-aix.old.s: Remove file.
	* avcall/Makefile.in (avcall-powerpc.s): No longer use
	avcall-powerpc-aix.old.s.
	(SOURCE_FILES): Add avcall-powerpc-aix.s. Remove
	avcall-powerpc-aix.new.s, avcall-powerpc-aix.old.s.
	* vacall/Makefile.devel (vacall-powerpc-aix.s): Renamed from
	vacall-powerpc-aix.new.s.
	(vacall-powerpc-aix.old.s): Remove target.
	* vacall/vacall-powerpc-aix.s: Renamed from
	vacall/vacall-powerpc-aix.new.s.
	* vacall/vacall-powerpc-aix.old.s: Remove file.
	* vacall/Makefile.in (vacall-powerpc.s): No longer use
	vacall-powerpc-aix.old.s.
	(SOURCE_FILES): Add vacall-powerpc-aix.s. Remove
	vacall-powerpc-aix.new.s, vacall-powerpc-aix.old.s.
	* callback/vacall_r/Makefile.devel (vacall-powerpc-aix.s): Renamed from
	vacall-powerpc-aix.new.s.
	(vacall-powerpc-aix.old.s): Remove target.
	* callback/vacall_r/vacall-powerpc-aix.s: Renamed from
	callback/vacall_r/vacall-powerpc-aix.new.s.
	* callback/vacall_r/vacall-powerpc-aix.old.s: Remove file.
	* callback/vacall_r/Makefile.in (vacall-powerpc.s): No longer use
	vacall-powerpc-aix.old.s.
	(SOURCE_FILES): Add vacall-powerpc-aix.s. Remove
	vacall-powerpc-aix.new.s, vacall-powerpc-aix.old.s.
	* trampoline/Makefile.devel (proto-powerpc-aix.s): Renamed from
	proto-powerpc-aix.new.s.
	(proto-powerpc-aix.old.s): Remove target.
	* trampoline/proto-powerpc-aix.s: Renamed from 
	trampoline/proto-powerpc-aix.new.s.
	* trampoline/proto-powerpc-aix.old.s: Remove file.
	* trampoline/tramp-powerpc-aix.S: Renamed from
	trampoline/tramp-powerpc.new.S.
	* trampoline/tramp-powerpc.old.S: Remove file.
	* trampoline/tramp-powerpc64-aix.S: Renamed from
	trampoline/tramp-powerpc64.new.S.
	* trampoline/Makefile.in (tramp-powerpc.s): No longer use
	tramp-powerpc.old.S.
	(tramp-powerpc64.s): Update.
	(SOURCE_FILES): Add tramp-powerpc-aix.S, tramp-powerpc64-aix.S. Remove
	tramp-powerpc.old.S, tramp-powerpc.new.S tramp-powerpc64.new.S.
	* callback/trampoline_r/Makefile.devel (proto-powerpc-aix.s): Renamed
	from proto-powerpc-aix.new.s.
	(proto-powerpc-aix.old.s): Remove target.
	* callback/trampoline_r/proto-powerpc-aix.s: Renamed from
	callback/trampoline_r/proto-powerpc-aix.new.s.
	* callback/trampoline_r/proto-powerpc-aix.old.s: Remove file.
	* callback/trampoline_r/tramp-powerpc-aix.S: Renamed from
	callback/trampoline_r/tramp-powerpc.new.S.
	* callback/trampoline_r/tramp-powerpc.old.S: Remove file.
	* callback/trampoline_r/tramp-powerpc64-aix.S: Renamed from
	callback/trampoline_r/tramp-powerpc64.new.S.
	* callback/trampoline_r/Makefile.in (tramp-powerpc.s): No longer use
	tramp-powerpc.old.S.
	(tramp-powerpc64.s): Update.
	(SOURCE_FILES): Add tramp-powerpc-aix.S, tramp-powerpc64-aix.S. Remove
	tramp-powerpc.old.S, tramp-powerpc.new.S tramp-powerpc64.new.S.
	* PLATFORMS, **/PLATFORMS: Update.

2017-01-08  Bruno Haible  <bruno@clisp.org>

	Remove support for the m88k CPU.
	The only place where this CPU is still used is in the OpenBSD 5.8
	luna88k port. The luna88k is museum hardware. They use the ELF binary
	format, through an inofficial port of the 10-years old binutils-2.17.
	* avcall/Makefile.devel (avcall-m88k.s, tests-m88k.s): Remove targets.
	* avcall/avcall-m88k.[cs]: Remove files.
	* avcall/Makefile.in (avcall-m88k.lo): Remove target.
	(SOURCE_FILES): Remove avcall-m88k.[cs].
	* avcall/avcall.h.in: Remove defined(__m88k__) conditionals.
	* vacall/Makefile.devel (vacall-m88k.s, tests-m88k.s): Remove targets.
	* vacall/vacall-m88k.[cs]: Remove files.
	* vacall/Makefile.in (vacall-m88k.o): Remove target.
	(SOURCE_FILES): Remove vacall-m88k.[cs].
	* vacall/vacall.h.in: Remove defined(__m88k__) conditionals.
	* trampoline/Makefile.devel (proto-m88k.s, tramp-m88k.s): Remove targets.
	* trampoline/proto-m88k.s: Remove file.
	* trampoline/tramp-m88k.s: Remove file.
	* trampoline/protexec.c: Remove __DOLPHIN__ conditionals.
	* trampoline/trampoline.c: Remove defined(__m88k__), HAVE_SYS_M88KBCS_H conditionals.
	* trampoline/trampoline.h.in: Don't test for m88k host.
	* trampoline/configure.ac: Don't test for m88k host.
	* callback/vacall_r/Makefile.devel (vacall-m88k.s): Remove target.
	* callback/vacall_r/vacall-m88k.s: Remove file.
	* callback/vacall_r/Makefile.in (vacall-m88k.lo): Remove target.
	(SOURCE_FILES): Remove vacall-m88k.[cs].
	* callback/vacall_r/vacall_r.h.in: Remove defined(__m88k__) conditionals.
	* callback/trampoline_r/Makefile.devel (proto-m88k.s, tramp-m88k.s): Remove targets.
	* callback/trampoline_r/proto-m88k.s: Remove file.
	* callback/trampoline_r/tramp-m88k.s: Remove file.
	* callback/trampoline_r/proto.c: Remove defined(__m88k__) conditional.
	* callback/trampoline_r/trampoline.c: Remove defined(__m88k__), HAVE_SYS_M88KBCS_H conditionals.
	* callback/trampoline_r/trampoline_r.h.in: Don't test for m88k host.
	* callback/trampoline_r/test1.c: Remove defined(__m88k__) conditionals.
	* callback/trampoline_r/configure.ac: Don't test for m88k host.
	* callback/call-used-registers.txt: Update.
	* callback/elf-hack.txt: Update.
	* common/reg-struct-return.txt: Update.
	* PLATFORMS, **/PLATFORMS: Update.
	* README: Update.
	* autogen.sh: Don't copy vacall-m88k.c.
	* Makefile.in (COPIED_FILES): Remove callback/vacall_r/vacall-m88k.c.

2017-01-08  Bruno Haible  <bruno@clisp.org>

	Fix last commit.
	* common/asm-x86_64.sh: Escape '&' characters in replacement string.

2017-01-03  Bruno Haible  <bruno@clisp.org>

	Add support for the Mac OS X 10.5 / x86_64 platform.
	* common/asm-x86_64.sh: Disable the frame info for exception handlers
	on Mac OS X.
	* avcall/avcall-x86_64-macro.S: Regenerated.
	* vacall/vacall-x86_64-macro.S: Likewise.
	* callback/vacall_r/vacall-x86_64-macro.S: Likewise.
	* m4/mmap.m4 (FFCALL_MMAP): Renamed from CL_MMAP. Remove AC_BEFORE
	invocations. Test mmap without MAP_FIXED only. Don't define
	HAVE_MMAP_DEVZERO_SUN4_29.
	* m4/mprotect.m4 (FFCALL_MPROTECT): Renamed from CL_MPROTECT. Update
	dependency.
	* m4/getpagesize.m4 (CL_GETPAGESIZE): Remove AC_BEFORE invocations.
	* m4/general.m4 (FFCALL_COMMON_TRAMPOLINE): Update dependencies.

2017-01-02  Bruno Haible  <bruno@clisp.org>

	Ensure the alignment of trampolines when we use the free-list approach.
	* trampoline/trampoline.c (alloc_trampoline): Consider TRAMP_ALIGN
	when allocating a page of trampolines.
	* callback/trampoline_r/trampoline.c (alloc_trampoline_r): Likewise.

2017-01-02  Bruno Haible  <bruno@clisp.org>

	Fix a build failure on Solaris/SPARC with newer gcc.
	* trampoline/trampoline.c: Remove 'extern inline' declarations.
	* callback/trampoline_r/trampoline.c: Likewise. For SPARC, declare
	__TR_clear_cache_2, not __TR_clear_cache_4.
	* PLATFORMS: Update.
	* avcall/PLATFORMS: Likewise.
	* vacall/PLATFORMS: Likewise.
	* trampoline/PLATFORMS: Likewise.
	* callback/PLATFORMS: Likewise.

2017-01-02  Bruno Haible  <bruno@clisp.org>

	Add support for the Solaris/x86 platform with cc.
	* common/asm-i386.sh: Remove the whitespace in the second argument of
	INSN2MOVX.
	* vacall/vacall-i386-macro.S: Regenerated.
	* callback/vacall_r/vacall-i386-macro.S: Likewise.
	* avcall/Makefile.in (avcall-i386.s): Eliminate ##.
	* vacall/Makefile.in (vacall-i386.s): Likewise.
	* callback/vacall_r/Makefile.in (vacall-i386.s): Likewise.
	* PLATFORMS: Update.
	* avcall/PLATFORMS: Likewise.
	* vacall/PLATFORMS: Likewise.
	* trampoline/PLATFORMS: Likewise.
	* callback/PLATFORMS: Likewise.

2017-01-02  Bruno Haible  <bruno@clisp.org>

	Add support for the Solaris/x86_64 platform.
	* common/asm-x86_64.sh: Introduce ALIGN macro. Disable the frame info
	for exception handlers on Solaris.
	* common/asm-x86_64.h (ALIGN): New macro.
	(FUNEND, EH_FRAME_SECTION): Define differently for Solaris.
	* vacall/Makefile.devel (vacall-x86_64-macro.S): Don't use a #define
	that assumes an ANSI C preprocessor.
	* avcall/avcall-x86_64-macro.S: Regenerated.
	* vacall/vacall-x86_64-macro.S: Likewise.
	* callback/vacall_r/vacall-x86_64-macro.S: Likewise.
	* avcall/Makefile.in (avcall-x86_64.s): Eliminate ##.
	* vacall/Makefile.in (vacall-x86_64.s): Likewise.
	* callback/vacall_r/Makefile.in (vacall-x86_64.s): Likewise.
	* PLATFORMS: Update.
	* avcall/PLATFORMS: Likewise.
	* vacall/PLATFORMS: Likewise.
	* trampoline/PLATFORMS: Likewise.
	* callback/PLATFORMS: Likewise.

2017-01-01  Bruno Haible  <bruno@clisp.org>

	Assume ANSI C in the documentation.
	* vacall/vacall.{3,html}: Use ANSI C declaration syntax. Stop
	mentioning <varargs.h>. Reference stdarg(3).
	* trampoline/trampoline.{3,html}: Reference stdarg(3).
	* callback/callback.{3,html}: Use ANSI C declaration syntax. Stop
	mentioning <varargs.h>.
	* callback/trampoline_r/trampoline_r.{3,html}: Reference stdarg(3).

2017-01-01  Bruno Haible  <bruno@clisp.org>

	Support the CPPFLAGS configure variable.
	* avcall/Makefile.in (CPPFLAGS): New variable.
	Use it in all .c file compilations.
	* vacall/Makefile.in (CPPFLAGS): New variable.
	Use it in all .c file compilations.
	* trampoline/Makefile.in (CPPFLAGS): New variable.
	Use it in all .c file compilations.
	* callback/Makefile.in (CPPFLAGS): New variable.
	Use it in all .c file compilations.
	* callback/vacall_r/Makefile.in (CPPFLAGS): New variable.
	Use it in all .c file compilations.
	* callback/trampoline_r/Makefile.in (CPPFLAGS): New variable.
	Use it in all .c file compilations.

2017-01-01  Bruno Haible  <bruno@clisp.org>

	Add option --disable-elf-hack to disable the ELF workaround.
	* m4/binfmt-elf.m4 (FFCALL_BINFMT_ELF_OPTION): New macro.
	(FFCALL_BINFMT_ELF): Require it. Set BINFMT_ELF to false and define
	BINFMT_ELF to 0 if --disable-elf-hack was specified.
	* configure.ac: Invoke FFCALL_BINFMT_ELF_OPTION.
	* callback/configure.ac: Likewise.
	* callback/elf-hack.txt: Explain how to use --disable-elf-hack for
	testing.

2017-01-01  Bruno Haible  <bruno@clisp.org>

	Generic workaround against the ELF symbol resolving routine.
	Reported for x86_64 by Andrey Kutejko <andy128k@gmail.com>
	at https://savannah.gnu.org/bugs/?32466 .
	* m4/binfmt-elf.m4: New file.
	* Makefile.in (SOURCE_FILES): Add it.
	* callback/elf-hack.txt: New file.
	* callback/test1.c: New file.
	* callback/Makefile.in (SOURCE_FILES): Add both.
	(test1.o, test1): New targets.
	(check): Also run test1.
	(MOSTLYCLEANFILES): Add test1.o, test1.
	* callback/trampoline_r/configure.ac: Invoke FFCALL_BINFMT_ELF.
	* callback/trampoline_r/Makefile.devel: Update the paths to the cross
	assemblers.
	* callback/trampoline_r/tramp-*.s: Add a 'trampelf' function.
	* callback/trampoline_r/tramp-*.S: Likewise.
	* callback/trampoline_r/tramp-*.o: Regenerated.
	* callback/trampoline_r/trampoline.c: Implement alternate trampolines on
	platforms with BINFMT_ELF.
	* callback/trampoline_r/test1.c: Skip the test if BINFMT_ELF.
	* callback/vacall_r/configure.ac: Invoke FFCALL_BINFMT_ELF.
	* callback/vacall_r/elfhack-alpha.S: New file.
	* callback/vacall_r/elfhack-alpha.sed: New file.
	* callback/vacall_r/elfhack-arm.S: New file.
	* callback/vacall_r/elfhack-arm.sed: New file.
	* callback/vacall_r/elfhack-i386.S: New file.
	* callback/vacall_r/elfhack-i386.sed: New file.
	* callback/vacall_r/elfhack-m68k.S: New file.
	* callback/vacall_r/elfhack-m68k.sed: New file.
	* callback/vacall_r/elfhack-mips.S: New file.
	* callback/vacall_r/elfhack-mips.sed: New file.
	* callback/vacall_r/elfhack-mips64.S: New file.
	* callback/vacall_r/elfhack-mips64.sed: New file.
	* callback/vacall_r/elfhack-powerpc.S: New file.
	* callback/vacall_r/elfhack-powerpc.sed: New file.
	* callback/vacall_r/elfhack-powerpc64le.S: New file.
	* callback/vacall_r/elfhack-powerpc64le.sed: New file.
	* callback/vacall_r/elfhack-s390.S: New file.
	* callback/vacall_r/elfhack-s390.sed: New file.
	* callback/vacall_r/elfhack-x86_64.S: New file.
	* callback/vacall_r/elfhack-x86_64.sed: New file.
	* callback/vacall_r/Makefile.devel (vacall-i386-macro.S): Insert an
	include of elfhack-i386.S.
	(vacall-m68k.mit.S, vacall-m68k-netbsd-macro.S): Insert an include of
	elfhack-m68k.S.
	(vacall-mips-macro.S, vacall-mipsn32-macro.S): Insert an include of
	elfhack-mips.S.
	(vacall-mips64-macro.S): Insert an include of elfhack-mips64.S.
	(vacall-alpha-macro.S): Renamed from vacall-alpha.s. Insert an include
	of elfhack-alpha.S.
	(vacall-arm-macro.S): Insert an include of elfhack-arm.S.
	(vacall-armel-macro.S): Renamed from vacall-armel.s. Insert an include
	of asm-arm.h and elfhack-arm.S.
	(vacall-powerpc-linux-macro.S, vacall-powerpc-netbsd-macro.S): New
	targets.
	(vacall-powerpc-sysv4-macro.S): Renamed from vacall-powerpc-sysv4.s.
	Insert an include of elfhack-powerpc.S.
	(vacall-powerpc64le-macro.S): Renamed from vacall-powerpc64le.s. Insert
	an include of elfhack-powerpc64.S.
	(vacall-x86_64-macro.S): Insert an include of elfhack-x86_64.S.
	(vacall-s390-macro.S): New target.
	* callback/vacall_r/vacall-alpha-macro.S: Renamed from
	callback/vacall_r/vacall-alpha.s. Include elfhack-alpha.S.
	* callback/vacall_r/vacall-arm-macro.S: Include elfhack-arm.S.
	* callback/vacall_r/vacall-armel-macro.S: Renamed from
	callback/vacall_r/vacall-armel.s. Include asm-arm.h and elfhack-arm.S.
	* callback/vacall_r/vacall-i386-macro.S: Include elfhack-i386.S.
	* callback/vacall_r/vacall-m68k.mit.S: Include elfhack-m68k.S.
	* callback/vacall_r/vacall-m68k-netbsd-macro.S: Likewise.
	* callback/vacall_r/vacall-mips-macro.S: Include elfhack-mips.S.
	* callback/vacall_r/vacall-mipsn32-macro.S: Likewise.
	* callback/vacall_r/vacall-mips64-macro.S: Include elfhack-mips64.S.
	* callback/vacall_r/vacall-powerpc-linux-macro.S: Generated, to include
	elfhack-powerpc.S.
	* callback/vacall_r/vacall-powerpc-netbsd-macro.S: Generated, to include
	elfhack-powerpc.S.
	* callback/vacall_r/vacall-powerpc-sysv4-macro.S: Renamed from
	callback/vacall_r/vacall-powerpc-sysv4.s. Include elfhack-powerpc.S.
	* callback/vacall_r/vacall-powerpc64le-macro.S: Renamed from
	callback/vacall_r/vacall-powerpc64le.s. Include elfhack-powerpc64le.S.
	* callback/vacall_r/vacall-s390-linux.s: Renamed from
	callback/vacall_r/vacall-s390.s.
	* callback/vacall_r/vacall-s390-macro.S: Generated, to include
	elfhack-s390.S.
	* callback/vacall_r/vacall-x86_64-macro.S: Include elfhack-x86_64.S.
	* callback/vacall_r/Makefile.in (ASPFLAGS): Conditionally define
	BINFMT_ELF.
	(vacall-i386.s, vacall-m68k.s, vacall-mips.s, vacall-mipsn32.s,
	vacall-mips64.s): Add a -I option for elfhack-*.S.
	(vacall-alpha.s): New target.
	(vacall-alpha.lo): Depend on it.
	(vacall-arm.s): Add a -I option for elfhack-*.S.
	(vacall-armel.s): New target.
	(vacall-armel.lo): Depend on it.
	(vacall-powerpc.s): For the linux, netbsd, sysv4 syntaxes, use the
	corresponding *.S file.
	(vacall-powerpc64le.s): New target.
	(vacall-powerpc64le.lo): Depend on it.
	(vacall-x86_64.s): Add a -I option for elfhack-*.S.
	(vacall-s390.s): New target.
	(vacall-s390.lo): Depend on it.
	(clean): Remove also vacall-alpha.s, vacall-armel.s,
	vacall-powerpc64le.s, vacall-s390.s.
	(SOURCE_FILES): Update for the renamed files. Add
	vacall-powerpc-linux-macro.S, vacall-powerpc-netbsd-macro.S,
	vacall-s390-macro.S, elfhack-*.S, elfhack-*.sed.
	* README: Clarify on which platforms the problem with the ELF symbol
	resolving routine still exists.

2016-12-31  Bruno Haible  <bruno@clisp.org>

	Update doc about available registers.
	* callback/call-used-registers.txt: Clarify call-used registers versus
	registers available for use in trampolines.
	* trampoline/tramp-powerpc-old.s: Mark as obsolete.
	* callback/trampoline_r/tramp-powerpc-old.s: Likewise.
	* trampoline/tramp-x86_64.s: Fix comment about available registers.
	* callback/trampoline_r/tramp-x86_64.s: Likewise.
	* trampoline/tramp-powerpc-sysv4.s: Likewise.
	* callback/trampoline_r/tramp-powerpc-sysv4.s: Likewise.
	* trampoline/tramp-*.s: Update comment about available registers.
	* trampoline/tramp-*.S: Likewise.
	* callback/trampoline_r/tramp-*.s: Likewise.
	* callback/trampoline_r/tramp-*.S: Likewise.

2016-12-31  Bruno Haible  <bruno@clisp.org>

	Simplify powerpc compilation rules.
	* avcall/Makefile.in (avcall-powerpc.s): New rule.
	(avcall-powerpc.lo): Depend on it. Remove libtool specific workaround.
	(clean): Remove also avcall-powerpc.s.
	* vacall/Makefile.in (vacall-powerpc.s): New rule.
	(vacall-powerpc.o): Depend on it.
	(clean): Remove also vacall-powerpc.s.
	* callback/vacall_r/Makefile.in (vacall-powerpc.s): New rule.
	(vacall-powerpc.lo): Depend on it. Remove libtool specific workaround.
	(clean): Remove also vacall-powerpc.s.

2016-12-29  Bruno Haible  <bruno@clisp.org>

	Revert "Pass the environment argument through the stack, not in a
	register." commit from 1999-06-01.
	* vacall/vacall-i386.c: Revert: Allow use of registers %esi, %edi, %ebp.
	Expect env in %ecx, not as first stack argument.
	* vacall/vacall-i386-macro.S: Revert.
	* callback/vacall_r/vacall-i386-macro.S: Revert.
	* callback/trampoline_r/proto.c (tramp2): Remove function.
	* callback/trampoline_r/proto-i386.s: Revert accordingly.
	* callback/trampoline_r/tramp-i386.s: Put the data in %ecx, not as
	first stack argument.
	* callback/trampoline_r/trampoline.c [i386]: Revert to simple
	trampoline.
	* callback/trampoline_r/test1.c (f) [i386]: Expect env in %ecx, not as
	first stack argument.

2016-12-29  Bruno Haible  <bruno@clisp.org>

	Revert "Never build shared libraries: --enable-shared has no effect."
	commit from 2012-04-24.
	* README: Revert, but still recommend --disable-shared.
	* avcall/Makefile.in (libavcall.la): Don't pass -static to libtool.
	* callback/Makefile.in (libcallback.la): Likewise.
	* callback/vacall_r/Makefile.in (libvacall.la): Likewise.
	* callback/trampoline_r/Makefile.in (libtrampoline.la): Likewise.

2016-12-30  Bruno Haible  <bruno@clisp.org>

	Rename text files.
	* common/reg-struct-return.txt: Renamed from common/reg-struct-return.
	* callback/call-used-registers.txt: Renamed from
	callback/call-used-registers.
	* trampoline/PORTING: Update.
	* callback/README: Likewise.

2016-12-29  Bruno Haible  <bruno@clisp.org>

	Update documentation about register usage.
	* callback/call-used-registers: Update regarding powerpc/NetBSD.

2016-12-29  Bruno Haible  <bruno@clisp.org>

	Remove support for the 'convex' CPU.
	* avcall/Makefile.devel (avcall-convex.s, tests-convex.s): Remove
	targets.
	* avcall/avcall-convex.[cs]: Remove files.
	* avcall/Makefile.in (avcall-convex.lo): Remove target.
	(SOURCE_FILES): Remove avcall-convex.[cs].
	* avcall/avcall.h.in: Remove defined(__convex__) conditionals.
	* vacall/Makefile.devel (vacall-convex.s, tests-convex.s): Remove
	targets.
	* vacall/vacall-convex.[cs]: Remove files.
	* vacall/Makefile.in (vacall-convex.o): Remove target.
	(SOURCE_FILES): Remove vacall-convex.[cs].
	* vacall/vacall.h.in: Remove defined(__convex__) conditionals.
	* trampoline/Makefile.devel (proto-convex.s, cache-convex.s,
	tramp-convex.s): Remove targets.
	* trampoline/proto-convex.s: Remove file.
	* trampoline/cache-convex.[cs]: Remove files.
	* trampoline/tramp-convex.s: Remove file.
	* trampoline/Makefile.in (cache-convex.o): Remove target.
	(SOURCE_FILES): Remove cache-convex.[cs].
	* trampoline/cache.c: Remove defined(__convex__) conditionals.
	* trampoline/protexec.c: Remove defined(__convex__) conditionals.
	* trampoline/trampoline.c: Remove defined(__convex__) conditionals.
	* trampoline/trampoline.h.in: Don't test for convex host.
	* trampoline/configure.ac: Don't test for convex host.
	* callback/vacall_r/Makefile.devel (vacall-convex.s): Remove target.
	* callback/vacall_r/vacall-convex.s: Remove file.
	* callback/vacall_r/Makefile.in (vacall-convex.lo): Remove target.
	(SOURCE_FILES): Remove vacall-convex.[cs].
	* callback/vacall_r/vacall_r.h.in: Remove defined(__convex__)
	conditionals.
	* callback/trampoline_r/Makefile.devel (proto-convex.s, cache-convex.s,
	tramp-convex.s): Remove targets.
	* callback/trampoline_r/proto-convex.s: Remove file.
	* callback/trampoline_r/tramp-convex.s: Remove file.
	* callback/trampoline_r/Makefile.in (cache-convex.lo): Remove target.
	(SOURCE_FILES): Remove cache-convex.[cs].
	* callback/trampoline_r/proto.c: Remove defined(__convex__)
	conditionals.
	* callback/trampoline_r/trampoline.c: Remove defined(__convex__)
	conditionals.
	* callback/trampoline_r/trampoline_r.h.in: Don't test for convex host.
	* callback/trampoline_r/test1.c: Remove defined(__convex__)
	conditionals.
	* callback/trampoline_r/configure.ac: Don't test for convex host.
	* callback/call-used-registers: Update.
	* common/reg-struct-return: Update.
	* PLATFORMS, **/PLATFORMS: Update.
	* autogen.sh: Don't copy vacall-convex.c, cache-convex.[cs].
	* Makefile.in (COPIED_FILES): Remove callback/vacall_r/vacall-convex.c,
	callback/trampoline_r/cache-convex.[cs].

2016-12-29  Bruno Haible  <bruno@clisp.org>

	Fix collision between different copies of __structcpy.
	Reported in http://savannah.gnu.org/bugs/?23474 .
	* avcall/avcall-structcpy.c: New file.
	* avcall/Makefile.in (avcall-structcpy.lo): Renamed from structcpy.lo.
	(SOURCE_FILES): Add avcall-structcpy.c.
	* avcall/Makefile.mingw32 (avcall-structcpy.o): Renamed from
	structcpy.o.
	* avcall/Makefile.msvc (avcall-structcpy.obj): Renamed from
	structcpy.obj.
	* avcall/avcall.h.in: Declare and use avcall_structcpy instead of
	__structcpy.
	* avcall/README: Update.
	* vacall/vacall-structcpy.c: New file.
	* vacall/Makefile.in (vacall-structcpy.o): Renamed from structcpy.o.
	(SOURCE_FILES): Add vacall-structcpy.c.
	* vacall/Makefile.mingw32 (vacall-structcpy.o): Renamed from
	structcpy.o.
	* vacall/Makefile.msvc (vacall-structcpy.obj): Renamed from
	structcpy.obj.
	* vacall/vacall.h.in: Declare and use vacall_structcpy instead of
	__structcpy.
	* callback/vacall_r/vacall-structcpy.c: New file.
	* callback/vacall_r/Makefile.in (vacall-structcpy.lo): Renamed from
	structcpy.lo.
	(SOURCE_FILES): Add vacall-structcpy.c.
	* callback/vacall_r/Makefile.mingw32 (vacall-structcpy.o): Renamed from
	structcpy.o.
	* callback/vacall_r/Makefile.msvc (vacall-structcpy.obj): Renamed from
	structcpy.obj.
	* callback/vacall_r/vacall_r.h.in: Declare and use callback_structcpy
	instead of __structcpy.
	* callback/Makefile.in (libcallback.la): Use vacall-structcpy.lo, not
	structcpy.lo.
	* callback/Makefile.mingw32 (OBJECTS): Use vacall-structcpy.o, not
	structcpy.o.
	* callback/Makefile.msvc (OBJECTS): Use vacall-structcpy.obj, not
	structcpy.obj.
	(vacall_r/vacall-structcpy.obj): Renamed from vacall_r/structcpy.obj.
	(clean): Update accordingly.

2016-12-29  Bruno Haible  <bruno@clisp.org>

	Put duplicated files under version control only once, part 2.
	* vacall/vacall-powerpc.c: Update with the 'REENTRANT' code from
	callback/vacall_r/.
	* vacall/vacall-s390.c: Likewise.
	* callback/vacall_r/vacall-alpha.c: Remove file.
	* callback/vacall_r/vacall-arm.c: Remove file.
	* callback/vacall_r/vacall-armel.c: Remove file.
	* callback/vacall_r/vacall-convex.c: Remove file.
	* callback/vacall_r/vacall-hppa.c: Remove file.
	* callback/vacall_r/vacall-i386.c: Remove file.
	* callback/vacall_r/vacall-ia64.c: Remove file.
	* callback/vacall_r/vacall-m68k.c: Remove file.
	* callback/vacall_r/vacall-m88k.c: Remove file.
	* callback/vacall_r/vacall-mips.c: Remove file.
	* callback/vacall_r/vacall-mipsn32.c: Remove file.
	* callback/vacall_r/vacall-mips64.c: Remove file.
	* callback/vacall_r/vacall-powerpc.c: Remove file.
	* callback/vacall_r/vacall-powerpc64.c: Remove file.
	* callback/vacall_r/vacall-powerpc64le.c: Remove file.
	* callback/vacall_r/vacall-s390.c: Remove file.
	* callback/vacall_r/vacall-sparc.c: Remove file.
	* callback/vacall_r/vacall-sparc64.c: Remove file.
	* callback/vacall_r/vacall-x86_64.c: Remove file.
	* autogen.sh: Copy these files from vacall/.
	* Makefile.in (COPIED_FILES): Add these files.

2016-12-28  Bruno Haible  <bruno@clisp.org>

	More robust quoting in Autoconf macros.
	* configure.ac: Add brackets around Autoconf macro arguments.
	* avcall/configure.ac: Likewise.
	* vacall/configure.ac: Likewise.
	* trampoline/configure.ac: Likewise.
	* callback/configure.ac: Likewise.
	* callback/vacall_r/configure.ac: Likewise.
	* callback/trampoline_r/configure.ac: Likewise.
	* m4/as-underscore.m4: Likewise.
	* m4/cc-gcc.m4: Likewise.
	* m4/codeexec.m4: Likewise.
	* m4/general.m4: Likewise.
	* m4/getpagesize.m4: Likewise.
	* m4/ireg.m4: Likewise.
	* m4/ln.m4: Likewise.
	* m4/mach-vm.m4: Likewise.
	* m4/mmap.m4: Likewise.
	* m4/mprotect.m4: Likewise.
	* m4/pccstruct.m4: Likewise.
	* m4/proto.m4: Likewise.
	* m4/shm.m4: Likewise.
	* m4/smallstruct.m4: Likewise.

2016-12-28  Bruno Haible  <bruno@clisp.org>

	Update list of contributors.
	* README: List all contributors.

2016-12-28  Bruno Haible  <bruno@clisp.org>

	Add support for 64-bit mode (x86_64) on Mac OS X.
	* common/asm-x86_64.sh: New file.
	* common/asm-x86_64.h: New file.
	* Makefile.in (SOURCE_FILES): Add them.
	* avcall/avcall-x86_64-linux.s: Renamed from avcall/avcall-x86_64.s.
	* avcall/Makefile.devel (avcall-x86_64-linux.s): Renamed from avcall-x86_64.s.
	(avcall-x86_64-macro.S): New target.
	* avcall/avcall-x86_64-macro.S: New file, generated through avcall/Makefile.devel.
	* avcall/Makefile.in (avcall-x86_64.s): New target.
	(avcall-x86_64.lo): Use it, in the build dir.
	(clean): Remove it.
	(SOURCE_FILES): Add avcall-x86_64-linux.s, avcall-x86_64-macro.S. Remove avcall-x86_64.s.
	* vacall/vacall-x86_64-linux.s: Renamed from vacall/vacall-x86_64.s.
	* vacall/Makefile.devel (vacall-x86_64-linux.s): Renamed from vacall-x86_64.s.
	(vacall-x86_64-macro.S): New target.
	* vacall/vacall-x86_64-macro.S: New file, generated through vacall/Makefile.devel.
	* vacall/Makefile.in (vacall-x86_64.s): New target.
	(vacall-x86_64.o): Use it, in the build dir.
	(clean): Remove it.
	(SOURCE_FILES): Add vacall-x86_64-linux.s, vacall-x86_64-macro.S. Remove vacall-x86_64.s.
	* callback/vacall_r/vacall-x86_64-linux.s: Renamed from callback/vacall_r/vacall-x86_64.s.
	* callback/vacall_r/Makefile.devel (vacall-x86_64-linux.s): Renamed from vacall-x86_64.s.
	(vacall-x86_64-macro.S): New target.
	* callback/vacall_r/vacall-x86_64-macro.S: New file, generated through callback/vacall_r/Makefile.devel.
	* callback/vacall_r/Makefile.in (vacall-x86_64.s): New target.
	(vacall-x86_64.lo): Use it, in the build dir.
	(clean): Remove it.
	(SOURCE_FILES): Add vacall-x86_64-linux.s, vacall-x86_64-macro.S. Remove vacall-x86_64.s.
	* callback/trampoline_r/test1.c (CHECK_ENV_REGISTER): New macro.
	(f, main): Use it instead of __GNUC__.
	* NEWS: Mention the change.

2016-12-28  Bruno Haible  <bruno@clisp.org>

	Rename the asm* files.
	* common/asm-arm.h: Renamed from common/asmarm.h.
	* common/asm-arm.sh: Renamed from common/asmarm.sh.
	* common/asm-i386.hh: Renamed from common/asmi386.hh.
	* common/asm-i386.sh: Renamed from common/asmi386.sh.
	* common/asm-m68k.h: Renamed from common/asmm68k.h.
	* common/asm-m68k.sh: Renamed from common/asmm68k.sh.
	* common/asm-mips.h: Renamed from common/asmmips.h.
	* common/asm-mips.sh: Renamed from common/asmmips.sh.
	* common/asm-sparc.h: Renamed from common/asmsparc.h.
	* common/asm-sparc.sh: Renamed from common/asmsparc.sh.
	* common/asm-sparc64.sh: Renamed from common/asmsparc64.sh.
	* **/Makefile.devel, **/*.S: Update.
	* Makefile.maint (common/asm-i386.h): Renamed from common/asmi386.h.
	* Makefile.in (SOURCE_FILES, GENERATED_FILES): Update.

2016-12-27  Bruno Haible  <bruno@clisp.org>

	Add the real source of asmi386.h.
	* common/asmi386.hh: New file, from GNU clisp.
	* common/asmi386.h: Remove file.
	* Makefile.maint (common/asmi386.h): New target. Rule copied from
	GNU clisp's Makefile.devel.
	(all): Depend on it.
	* Makefile.in (SOURCE_FILES): Add common/asmi386.hh. Remove
	common/asmi386.h.
	(GENERATED_FILES): Add common/asmi386.h.

2016-12-27  Bruno Haible  <bruno@clisp.org>

	Modernize Cygwin detection.
	* common/asmi386.h: Test __CYGWIN__, not __CYGWIN32__.
	From Ken Brown <kbrown@cornell.edu> on 2015-03-05.

2016-12-27  Bruno Haible  <bruno@clisp.org>

	Create tarballs through an Automake-like "make dist" command.
	* Makefile.in (SOURCE_FILES, LIBTOOL_IMPORTED_FILES,
	GNULIB_IMPORTED_FILES, IMPORTED_FILES, COPIED_FILES, GENERATED_FILES,
	DISTFILES): New macros.
	(distdir): New target.
	(PACKAGE, VERSION, TAR, GZIP): New macros.
	(dist): New target.
	* avcall/Makefile.in (SOURCE_FILES, GENERATED_FILES, DISTFILES): New
	macros.
	(distdir): New target.
	* vacall/Makefile.in (SOURCE_FILES, GENERATED_FILES, DISTFILES): New
	macros.
	(distdir): New target.
	* trampoline/Makefile.in (SOURCE_FILES, GENERATED_FILES, DISTFILES):
	New macros.
	(distdir): New target.
	* callback/Makefile.in (SOURCE_FILES, GENERATED_FILES, DISTFILES): New
	macros.
	(distdir): New target.
	* callback/vacall_r/Makefile.in (SOURCE_FILES, GENERATED_FILES,
	DISTFILES): New macros.
	(distdir): New target.
	* callback/trampoline_r/Makefile.in (SOURCE_FILES, GENERATED_FILES,
	DISTFILES): New macros.
	(distdir): New target.
	* configure.ac (extrasub): Replace all occurrences of @subdir@.
	* callback/configure.ac (extrasub): Likewise.

2016-12-27  Bruno Haible  <bruno@clisp.org>

	Bump version number.
	* VERSION: Set to 0x010D (= 1.13).

2016-12-27  Bruno Haible  <bruno@clisp.org>

	Rename each configure.in to configure.ac.
	* configure.ac: Renamed from configure.in.
	* avcall/configure.ac: Renamed from avcall/configure.in.
	* vacall/configure.ac: Renamed from vacall/configure.in.
	* trampoline/configure.ac: Renamed from trampoline/configure.in.
	* callback/configure.ac: Renamed from callback/configure.in.
	* callback/vacall_r/configure.ac: Renamed from
	callback/vacall_r/configure.in.
	* callback/trampoline_r/configure.ac: Renamed from
	callback/trampoline_r/configure.in.
	* Makefile.maint (ALL_CONFIGURE_AC): Renamed from ALL_CONFIGURE_IN.
	(aclocal.m4, configure, %/configure, %/config.h.in): Update.
	* README, */README: Update.

2016-12-27  Bruno Haible  <bruno@clisp.org>

	Modernize quoting.
	* NEWS: Quote ‘like this’, not `like this'.
	* README.os2: Likewise.
	* common/uniq-u.c: Likewise.
	* avcall/DOC: Likewise.
	* avcall/avcall-i386.c: Likewise.
	* avcall/avcall-sparc.c: Likewise.
	* avcall/avcall-sparc64.c: Likewise.
	* avcall/avcall.h.in: Likewise.
	* avcall/avcall.html: Likewise.
	* vacall/vacall.h.in: Likewise.
	* callback/trampoline_r/trampoline.c: Likewise.
	* callback/trampoline_r/trampoline_r.h.in: Likewise.
	* trampoline/PORTING: Likewise.
	* trampoline/trampoline.c: Likewise.
	* trampoline/trampoline.h.in: Likewise.
	* callback/vacall_r/vacall_r.h.in: Likewise.
	* configurations/README: Likewise.
	* avcall/Makefile.maint (ROFF_MAN): Produce UTF-8 output instead of
	ASCII output.
	* vacall/Makefile.maint (ROFF_MAN): Likewise.
	* trampoline/Makefile.maint (ROFF_MAN): Likewise.
	* callback/Makefile.maint (ROFF_MAN): Likewise.
	* callback/trampoline_r/Makefile.maint (ROFF_MAN): Likewise.

2016-12-27  Bruno Haible  <bruno@clisp.org>

	Avoid unnecessary recursion in "make maintainer-clean".
	* Makefile.in (DISTCLEANFILES): New variable.
	(distclean, maintainer-clean): Use it.
	* callback/Makefile.in (DISTCLEANFILES): New variable.
	(distclean): Use it. Don't depend on 'clean'. Instead, use
	MOSTLYCLEANDIRS, MOSTLYCLEANFILES.
	(maintainer-clean): Don't depend on 'distclean'. Instead, use
	MOSTLYCLEANDIRS, MOSTLYCLEANFILES, DISTCLEANFILES.
	(distclean-subdirs, maintainerclean-subdirs): Inline and remove targets.

2016-12-27  Bruno Haible  <bruno@clisp.org>

	Make "make mostlyclean" act like "make clean".
	* callback/Makefile.in (MOSTLYCLEANDIRS, MOSTLYCLEANFILES): New
	variables.
	(mostlyclean, clean): Use them.
	(clean-subdirs): Inline and remove target.

2016-12-27  Bruno Haible  <bruno@clisp.org>

	Fix Makefile rules for powerpc64, from 2006-04-27.
	* trampoline/Makefile.in (clean): Also remove tramp-powerpc64.s.
	* callback/trampoline_r/Makefile.in (clean): Likewise.

2016-12-26  Bruno Haible  <bruno@clisp.org>

	Reorder Makefile targets.
	* trampoline/Makefile.in: Reorder.
	* callback/trampoline_r/Makefile.in: Reorder.

2016-12-26  Bruno Haible  <bruno@clisp.org>

	Fix Makefile rules for powerpc64le, from 2015-08-23.
	* trampoline/Makefile.devel (CPP): New variable.
	(tramp-powerpc64le.o, tramp-powerpc64le.s): New targets.
	* trampoline/Makefile.in (tramp-powerpc64le.o, tramp-powerpc64le.s):
	Remove targets.
	* callback/trampoline_r/Makefile.devel (CPP): New variable.
	(tramp-powerpc64le.o, tramp-powerpc64le.s): New targets.
	* callback/trampoline_r/Makefile.in (tramp-powerpc64le.lo,
	tramp-powerpc64le.s): Remove targets.

2016-12-26  Bruno Haible  <bruno@clisp.org>

	Fix Makefile rules for s390, from 2002-03-24.
	* trampoline/Makefile.devel (tramp-s390.o): New target.
	* trampoline/Makefile.in (tramp-s390.o): Remove target.
	* callback/trampoline_r/Makefile.devel (tramp-s390.o): New target.
	* callback/trampoline_r/Makefile.in (tramp-s390.lo): Remove target.

2016-12-26  Bruno Haible  <bruno@clisp.org>

	Fix "make distclean".
	* avcall/Makefile.in (distclean): Also remove config.h.
	* callback/Makefile.in (distclean): Likewise.

2016-12-26  Bruno Haible  <bruno@clisp.org>

	Make it possible to build in $(srcdir) on case-insensitive file systems.
	* avcall/avcall-${cpu}-macro.S: Renamed from avcall/avcall-${cpu}.S.
	* avcall/Makefile.devel: Update accordingly.
	* avcall/Makefile.in: Likewise.
	* vacall/vacall-${cpu}-macro.S: Renamed from vacall/vacall-${cpu}.S.
	* vacall/Makefile.devel: Update accordingly.
	* vacall/Makefile.in: Likewise.
	* trampoline/cache-sparc-macro.S: Renamed from trampoline/cache-sparc.S.
	* trampoline/Makefile.devel: Update accordingly.
	* trampoline/Makefile.in: Update accordingly.
	* callback/vacall_r/vacall-${cpu}-macro.S: Renamed from
	callback/vacall_r/vacall-${cpu}.S.
	* callback/vacall_r/Makefile.devel: Update accordingly.
	* callback/vacall_r/Makefile.in: Likewise.
	* callback/trampoline_r/cache-sparc-macro.S: Renamed from
	callback/trampoline_r/cache-sparc.S.
	* callback/trampoline_r/Makefile.devel: Update accordingly.
	* callback/trampoline_r/Makefile.in: Update accordingly.

2016-12-26  Bruno Haible  <bruno@clisp.org>

	Simplify armel build rule.
	* avcall/Makefile.devel (avcall-armel.s): Renamed from avcall-armel.S.
	Simplify.
	* avcall/Makefile.in (avcall-armel.lo): Use $(srcdir)/avcall-armel.s.
	(avcall-armel.s): Remove target.

2016-12-26  Bruno Haible  <bruno@clisp.org>

	Put duplicated files under version control only once.
	* autogen.sh: Copy some files from trampoline/ to callback/trampoline_r.
	* common/asm*.sh: Moved here from avcall/, vacall/, callback/vacall_r.
	* common/asm*.h: Likewise.
	* common/reg-struct-return: Likewise.
	* common/structcpy.c: Likewise.
	* common/uniq-u.c: Moved here from avcall/, vacall/, callback/.
	* avcall/Makefile.devel: Update paths of asm*.sh.
	* avcall/Makefile.in: Add -I options for asm*.h. Update path of structcpy.c.
	* avcall/Makefile.mingw32: Likewise.
	* avcall/Makefile.msvc: Likewise. Update path of uniq-u.c.
	* vacall/Makefile.devel: Update paths of asm*.sh.
	* vacall/Makefile.in: Add -I options for asm*.h. Update path of structcpy.c.
	* vacall/Makefile.mingw32: Likewise.
	* vacall/Makefile.msvc: Likewise. Update path of uniq-u.c.
	* trampoline/Makefile.devel: Update paths of asm*.sh.
	* trampoline/Makefile.in: Add -I options for asm*.h.
	* callback/Makefile.msvc: Update path of uniq-u.c.
	* callback/vacall_r/Makefile.devel: Update paths of asm*.sh.
	* callback/vacall_r/Makefile.in: Add -I options for asm*.h. Update path of structcpy.c.
	* callback/vacall_r/Makefile.mingw32: Likewise.
	* callback/vacall_r/Makefile.msvc: Likewise.
	* callback/trampoline_r/Makefile.devel: Update paths of asm*.sh.
	* callback/trampoline_r/Makefile.in: Add -I options for asm*.h.

2016-12-26  Bruno Haible  <bruno@clisp.org>

	Fix dependencies.
	* avcall/Makefile.devel (avcall-sparc64.S): Depend on asmsparc64.sh,
	not asmsparc.sh.
	* vacall/Makefile.devel (vacall-sparc64.S): Likewise.
	* callback/vacall_r/Makefile.devel (vacall-sparc64.S): Likewise.
	* callback/Makefile.maint (vacall_r/vacall-i386-*.c): Don't depend on
	vacall_r/asmi386.sh.

2016-12-26  Bruno Haible  <bruno@clisp.org>

	Add missing dependency.
	* callback/vacall_r/Makefile.devel (vacall-m68k-netbsd.S): Depend on
	asmm68k.sh.

2016-12-26  Bruno Haible  <bruno@clisp.org>

	Switch to libtool-2.4.6.
	* autogen.sh (LIBTOOL_VERSION): Set to 2.4.6.
	* Makefile.maint (libtool-imported-files): Import also m4/ltoptions.m4,
	m4/ltsugar.m4, m4/ltversion.m4, m4/lt~obsolete.m4.
	* m4/general.m4 (FFCALL_COMMON_LIBTOOL): Invoke LT_INIT.

2016-12-26  Bruno Haible  <bruno@clisp.org>

	Switch to autoconf 2.69 and automake 1.15.
	* Makefile.maint (ACLOCAL, AUTOCONF, AUTOHEADER): Bump version numbers.

2016-12-26  Bruno Haible  <bruno@clisp.org>

	Remove files that can easily be autogenerated from version control.
	* autogen.sh: New file.
	* Makefile.maint: New file, partially inspired by Makefile.devel.
	* Makefile.devel (all): Remove target and its subtargets.
	* avcall/Makefile.maint: New file, extracted from avcall/Makefile.devel.
	* avcall/Makefile.devel (precompiled): Renamed from 'all'.
	Remove all targets that are moved to avcall/Makefile.maint.
	* vacall/Makefile.maint: New file, extracted from vacall/Makefile.devel.
	* vacall/Makefile.devel (precompiled): Renamed from 'all'.
	Remove all targets that are moved to vacall/Makefile.maint.
	* trampoline/Makefile.maint: New file, extracted from
	trampoline/Makefile.devel.
	* trampoline/Makefile.devel (precompiled): Renamed from 'all'.
	Remove all targets that are moved to trampoline/Makefile.maint.
	* callback/Makefile.maint: Renamed from callback/Makefile.devel.
	(trampoline_r/trampoline_r.man): New target.
	(totally-clean, force): New targets.
	* callback/vacall_r/Makefile.maint: New file, extracted from
	callback/vacall_r/Makefile.devel.
	* callback/vacall_r/Makefile.devel (precompiled): Renamed from 'all'.
	Remove all targets that are moved to callback/vacall_r/Makefile.maint.
	(vacall_r.man): Remove target.
	* callback/trampoline_r/Makefile.maint: New file, extracted from
	callback/trampoline_r/Makefile.devel.
	* callback/trampoline_r/Makefile.devel (precompiled): Renamed from
	'all'.
	Remove all targets that are moved to
	callback/trampoline_r/Makefile.maint.

2016-12-26  Bruno Haible  <bruno@clisp.org>

	Remove test result files from version control.
	* callback/trampoline_r/tests.passed.i386-pc-win32-gcc: Remove file.

2015-08-23  Hernán Erasmo  <dherasmo@gmail.com>

	Added compatibility with ppc64le architecture. Credit goes
	to Masanori Mitsugi <mitsugi@linux.vnet.ibm.com>

2012-04-24  Sam Steingold  <sds@gnu.org>

	Never build shared libraries: --enable-shared has no effect.
	* avcall/Makefile.in (libavcall.la): pass -static to LIBTOOL_LINK
	* callback/Makefile.in (libcallback.la): ditto
	* callback/trampoline_r/Makefile.in (libtrampoline.la): ditto
	* callback/vacall_r/Makefile.in (libvacall.la): ditto

2010-09-03  Sam Steingold  <sds@gnu.org>

	* configure.in: call AC_CONFIG_AUX_DIR(build-aux)

2010-09-03  Sam Steingold  <sds@gnu.org>

	* Makefile.devel (gnulib-imported): also import host-cpu-c-abi
	* avcall/configure.in, callback/configure.in:
	* callback/trampoline_r/configure.in, callback/vacall_r/configure.in:
	* trampoline/configure.in, vacall/configure.in:
	use gl_HOST_CPU_C_ABI instead of FFCALL_CANONICAL_HOST_CPU
	* m4/general.m4: remove FFCALL_CANONICAL_HOST_CPU,
	FFCALL_CACHE_EGREP_CPP, FFCALL_SET_CPU_ABI
	* glm4/host-cpu-c-abi.m4: add
	* avcall/Makefile.in, callback/Makefile.in:
	* callback/trampoline_r/Makefile.in, callback/vacall_r/Makefile.in:
	* trampoline/Makefile.in, vacall/Makefile.in,
	use @HOST_CPU_C_ABI@ instead of @host_cpu_abi@
	* callback/trampoline_r/configure.in, trampoline/configure.in:
	* m4/codeexec.m4: use $HOST_CPU_C_ABI instead of $host_cpu_abi

2010-07-20  Sam Steingold  <sds@gnu.org>

	* callback/trampoline_r/trampoline_r.h.in, trampoline/trampoline.h.in:
	add autoconf CPU detection block; this fixes trampoline on sparc64/linux
	Suggested by Valeriy E. Ushakov <uwe@netbsd.org>

2010-07-20  Valeriy E. Ushakov  <uwe@netbsd.org>

	https://savannah.gnu.org/bugs/?22081
	support sparc64 for solaris & *bsd
	* avcall/avcall-sparc64.c, avcall/avcall.h.in:
	Kill callee (%g2). Sparc64 doesn't need that code.
	Delete space[] - gcc optimizes it away anyway, and it doesn't
	guarantee correct operation even if it's not removed - if compiler
	allocs it below other local vars on the stack, then calling
	function with enough arguments will clobber local vars.
	Instead i've changed the code to use alloca, see the comment in
	the code for details on why this works. It also doesn't waste 2K
	of stack on each call, we only grab the space we actually need.
	I nuked farg_mask. It's not necessary for float args, marking
	them in darg_mask does the right thing (new av_float). And they
	just hurt structure passing, where, again, marking up darg_mask
	does the right thing.
	* avcall/avcall-saprc64.S: Regenerated with NetBSD gcc4
	* vacall/vacall-sparc64.S, callback/vacall_r/vacall-sparc64.S:
	New binutils on sparc64 insist on having global registers properly
	declared with .register. I've just added the declarations manually
	w/out actually regenerating the files to demonstrate that's the
	only change needed there. IF the files are regenerated with a
	newer compiler you will get them automatically.

2009-11-10  Sam Steingold  <sds@gnu.org>

	* vacall/Makefile.in (vacall-armel.o): vacall-armel.s is in $(srcdir)
	* callback/vacall_r/Makefile.in (vacall-armel.lo): ditto

2009-10-16  Sam Steingold  <sds@gnu.org>

	the final fix for LIBFFCALL_VERSION
	* Makefile.devel (vacall/vacall.h.msvc, vacall/vacall.h.mingw32)
	(callback/vacall_r/vacall_r.h.msvc)
	(callback/vacall_r/vacall_r.h.mingw32): depend on VERSION
	* avcall/avcall.h.in, callback/callback.h.in,
	* callback/trampoline_r/trampoline_r.h.in, vacall/vacall.h.in,
	* callback/vacall_r/vacall_r.h.in, trampoline/trampoline.h.in:
	use @LIBFFCALL_VERSION@ instead of @PACKAGE_VERSION@
	* avcall/configure.in: additional processing for avcall.h to
	substitute @LIBFFCALL_VERSION@
	* callback/configure.in: ditto for callback.h
	* callback/trampoline_r/configure.in: ditto for trampoline_r.h
	* callback/vacall_r/configure.in: ditto for vacall_r.h
	* trampoline/configure.in: ditto for trampoline.h
	* vacall/configure.in: ditto for vacall.h
	* callback/vacall_r/Makefile.devel (vacall_r.h.msvc)
	(vacall_r.h.mingw32): depend on ../../VERSION;
	substitute @LIBFFCALL_VERSION@
	* vacall/Makefile.devel (vacall.h.msvc, vacall.h.mingw32): depend
	on ../VERSION; substitute @LIBFFCALL_VERSION@

2009-10-16  Sam Steingold  <sds@gnu.org>

	* glm4/longlong.m4, glm4/nocrash.m4: update from gnulib

2009-10-16  Sam Steingold  <sds@gnu.org>

	* Makefile.devel (update-gnulib): use git when available

2009-10-16  Sam Steingold  <sds@gnu.org>

	* avcall/configure.in, callback/configure.in,
	* callback/trampoline_r/configure.in, callback/vacall_r/configure.in,
	* trampoline/configure.in, vacall/configure.in: list the main generated
	header (avcall.h et al) in AC_CONFIG_HEADERS, not in AC_CONFIG_FILES
	fixes the bug#27706 (introduced on 2009-04-24)

2009-04-28  Sam Steingold  <sds@gnu.org>

	* m4/general.m4 (FFCALL_CACHE_EGREP_CPP, FFCALL_SET_CPU_ABI):
	abstracted out of FFCALL_CANONICAL_HOST_CPU
	(FFCALL_CANONICAL_HOST_CPU): use them

2009-04-27  Max Lapan  <max.lapan@gmail.com>
	Sam Steingold  <sds@gnu.org>

	* avcall/Makefile.devel, avcall/Makefile.in, avcall/avcall.h.in,
	* callback/trampoline_r/Makefile.devel,
	* callback/trampoline_r/Makefile.in,
	* callback/trampoline_r/configure.in,
	* callback/vacall_r/Makefile.devel, callback/vacall_r/Makefile.in,
	* callback/vacall_r/vacall_r.h.in, trampoline/Makefile.devel,
	* trampoline/Makefile.in, trampoline/configure.in,
	* vacall/Makefile.devel, vacall/Makefile.in, vacall/vacall.h.in:
	Add ARMel support <https://savannah.gnu.org/bugs/?22492>
	* m4/general.m4 (FFCALL_CANONICAL_HOST_CPU): use AC_EGREP_CPP to
	distinguish between arm and armel
	* avcall/avcall-armel.S, avcall/avcall-armel.c,
	* callback/trampoline_r/cache-armel.c,
	* callback/trampoline_r/cache-armel.s,
	* callback/vacall_r/vacall-armel.c, callback/vacall_r/vacall-armel.s,
	* trampoline/cache-armel.c, trampoline/cache-armel.s,
	* vacall/vacall-armel.c, vacall/vacall-armel.s:
	new files

2009-04-27  Max Lapan  <max.lapan@gmail.com>

	* avcall/tests.c, callback/tests.c, vacall/tests.c:
	#include "config.h" for HAVE_LONG_LONG_INT

2009-04-27  Max Lapan  <max.lapan@gmail.com>

	* callback/trampoline_r/trampoline.c (is_tramp) [__arm__]:
	fix bug in the last patch

2009-04-24  Sam Steingold  <sds@gnu.org>

	* avcall/configure.in, callback/configure.in,
	* callback/trampoline_r/configure.in, callback/vacall_r/configure.in,
	* trampoline/configure.in, vacall/configure.in:
	use AC_CONFIG_FILES instead of AC_OUTPUT with argument
	* Makefile.devel (aclocal.m4): adjust the grep regexp

2009-04-24  Sam Steingold  <sds@gnu.org>

	* Makefile.in, avcall/Makefile.in, callback/Makefile.in,
	* callback/trampoline_r/Makefile.in, callback/vacall_r/Makefile.in,
	* trampoline/Makefile.in, vacall/Makefile.in (datarootdir):
	set to @datarootdir@ to avoid a configure warning

2009-04-24  Sam Steingold  <sds@gnu.org>

	* Makefile.devel (SUBDIRS_CONFIG_H): add avcall and callback

2009-04-24  Sam Steingold  <sds@gnu.org>

	* VERSION: new file
	* configure.in: use AC_INIT with the version argument
	* avcall/Makefile.mingw32: use sed to set LIBFFCALL_VERSION in avcall.h
	* callback/vacall_r/Makefile.mingw32:
	use sed to set LIBFFCALL_VERSION in vacall_r.h
	* vacall/Makefile.mingw32: use sed to set LIBFFCALL_VERSION in vacall.h
	* avcall/avcall.h.in, callback/callback.h.in,
	* callback/trampoline_r/trampoline_r.h.in,
	* callback/vacall_r/vacall_r.h.in,
	* trampoline/trampoline.h.in, vacall/vacall.h.in:
	(LIBFFCALL_VERSION): define to @PACKAGE_VERSION@
	* avcall/configure.in, callback/configure.in,
	* callback/trampoline_r/configure.in, callback/vacall_r/configure.in,
	* trampoline/configure.in, vacall/configure.in:
	use AC_INIT with the version argument,
	pass [config.h] to AC_CONFIG_HEADERS

2009-04-23  Sam Steingold  <sds@gnu.org>

	* m4/codeexec.m4, m4/ireg.m4, m4/pccstruct.m4, m4/smallstruct.m4:
	all 3 arguments of AC_DEFINE are now required

2009-04-21  Sam Steingold  <sds@gnu.org>

	* m4/as-underscore.m4, m4/codeexec.m4, m4/general.m4:
	* m4/getpagesize.m4, m4/ireg.m4, m4/mach-vm.m4, m4/mmap.m4:
	* m4/mprotect.m4, m4/pccstruct.m4, m4/shm.m4, m4/smallstruct.m4:
	quote AC_DEFINE arguments

2008-09-28  Sam Steingold  <sds@gnu.org>

	* Makefile.devel (aclocal.m4): include glm4 (this defined gl_EARLY
	and gl_INIT and fixes make check on x86_64)

2008-09-26  Sam Steingold  <sds@gnu.org>

	* avcall/avcall-ia64.s, avcall/avcall.h.in:
	* callback/vacall_r/vacall_r.h.in:
	support IA64 on Linux (kernel 2.6.16+ and gcc 4.1.0+)
	https://savannah.gnu.org/bugs/index.php?22130
	http://sourceforge.net/tracker/index.php?func=detail&aid=1528895&group_id=1355&atid=301355

2008-09-26  Sam Steingold  <sds@gnu.org>

	* callback/trampoline_r/Makefile.in, callback/trampoline_r/cache-arm.c:
	* callback/trampoline_r/cache-arm.s, callback/trampoline_r/configure.in:
	* callback/trampoline_r/tramp-arm.s, callback/trampoline_r/tramp-mips.s:
	* callback/trampoline_r/trampoline.c, trampoline/cache-arm.c:
	* trampoline/cache-arm.s, trampoline/configure.in:
	* trampoline/tramp-arm.s, trampoline/trampoline.c:
	add arm support from Jonathan Olson (debian 1.10-2)
	https://savannah.gnu.org/bugs/?func=detailitem&item_id=9468

2008-09-26  Sam Steingold  <sds@gnu.org>

	* avcall/avcall-mips.S, avcall/avcall-mips.c, avcall/avcall.h.in:
	* callback/trampoline_r/trampoline.c, callback/vacall_r/vacall_r.h.in:
	* m4/general.m4, trampoline/trampoline.c, vacall/vacall.h.in:
	add mipsel support from Thiemo Seufer (debian 1.10-2)

2008-09-26  Sam Steingold  <sds@gnu.org>

	* Makefile.devel, Makefile.in, callback/Makefile.devel,
	* callback/Makefile.in: use "&&" instead of ";" for all targets

2008-07-13  Sam Steingold  <sds@gnu.org>

	* glm4/gnulib-cache.m4, glm4/gnulib-common.m4, glm4/gnulib-comp.m4:
	* glm4/gnulib-tool.m4, glm4/onceonly.m4: add from gnulib
	* glm4/nocrash.m4: update from gnulib
	* Makefile.devel (gnulib-imported): remove gllib
	* configure.ac: call gl_EARLY and gl_INIT

2008-07-08  Sam Steingold  <sds@gnu.org>

	* Makefile.devel (SUBDIRS_CONFIGURE): use $(CURDIR) instead of .
	(%/configure): use "&&" instead of ";"

2008-07-03  Sam Steingold  <sds@gnu.org>

	* Makefile.devel (all): split into a few manageable targets
	(config-h-in, woe32-h, woe32-c): new targets
	(configure): use patterns

2008-07-03  Sam Steingold  <sds@gnu.org>

	* m4/smallstruct.m4 (FFCALL_SMALL_STRUCT_RETURN): rename from
	CL_SMALL_STRUCT_RETURN; use ffcall_cv_* instead of cl_cv_*;
	use return instead of exit()
	* m4/pccstruct.m4 (FFCALL_PCC_STRUCT_RETURN): rename from
	CL_PCC_STRUCT_RETURN; use ffcall_cv_* instead of cl_cv_*;
	use return instead of exit()
	* m4/ireg.m4 (FFCALL_IREG_FLOAT_RETURN): remame from
	CL_IREG_FLOAT_RETURN; use ffcall_cv_* instead of cl_cv_*;
	use return instead of exit()
	* m4/codeexec.m4 (FFCALL_CODEEXEC): rename from CL_CODEEXEC
	use ffcall_cv_* instead of cl_cv_*; use return instead of exit()
	* m4/general.m4: remove non-FFCALL code
	(FFCALL_COMMON_LIBTOOL): rename from CL_FFCALL_COMMON_LIBTOOL
	(FFCALL_COMMON_TRAMPOLINE): rename from CL_FFCALL_COMMON_TRAMPOLINE
	(FFCALL_CANONICAL_HOST_CPU): <- CL_CANONICAL_HOST_CPU_FOR_FFCALL

2008-07-03  Sam Steingold  <sds@gnu.org>

	* Makefile.devel (build-aux-update): new target

2008-07-02  Sam Steingold  <sds@gnu.org>

	* Makefile.devel (gnulib-imported, update-gnulib): new targets
	* glm4: new directory
	* longlong.m4, nocrash.m4: move from m4 to glm4

2008-07-02  Sam Steingold  <sds@gnu.org>

	* m4/ln.m4: update from clisp
	* m4/cp.m4: remove
	* m4/getpagesize.m4: update from clisp
	* m4/general.m4: update from clisp
	* m4/mmap.m4: update from clisp
	* m4/mprotect.m4: update from clisp
	* m4/proto.m4: update from clisp
	* m4/openflags.m4: remove
	* m4/cc-void.m4: remove

2008-07-02  Sam Steingold  <sds@gnu.org>

	* Makefile.devel, aclocal.m4: move autoconf/aclocal.m4 to aclocal.m4
	* aclocal/autoconf.m4: remove
	* Makefile.devel (CLISP_DIR): remove

2008-07-02  Sam Steingold  <sds@gnu.org>

	* m4/ffcall-pccstruct.m4, m4/ffcall-smallstruct.m4, m4/ffcall-ireg.m4:
	* m4/ffcall-codeexec.m4: remove "ffcall-" prefix
	* Makefile.devel: update

See clisp ChangeLog for earlier changes.
