Refresh config.guess and config.sub
[libffi.git] / patches / emutramp
1 Index: libffi/ChangeLog
2 ===================================================================
3 --- libffi.orig/ChangeLog
4 +++ libffi/ChangeLog
5 @@ -3,6 +3,14 @@
6         * src/powerpc/linux64_closure.S: Add new ABI support.
7         * src/powerpc/linux64.S: Likewise.
8  
9 +2012-10-30  Magnus Granberg  <zorry@gentoo.org>
10 +           Pavel Labushev  <pavel.labushev@runbox.ru>
11 +
12 +       * configure.ac: New options pax_emutramp
13 +       * configure, fficonfig.h.in: Regenerated
14 +       * src/closures.c: New function emutramp_enabled_check() and
15 +       checks.
16 +
17  2012-10-30  Frederick Cheung  <frederick.cheung@gmail.com>
18  
19         * configure.ac: Enable FFI_MAP_EXEC_WRIT for Darwin 12 (mountain
20 @@ -27,7 +35,7 @@
21          * testsuite/libffi.call/cls_struct_va1.c: New.
22          * testsuite/libffi.call/cls_uchar_va.c: Likewise.
23          * testsuite/libffi.call/cls_uint_va.c: Likewise.
24 -        * testsuite/libffi.call/cls_ulong_va.c: Liekwise.
25 +        * testsuite/libffi.call/cls_ulong_va.c: Likewise.
26          * testsuite/libffi.call/cls_ushort_va.c: Likewise.
27          * testsuite/libffi.call/nested_struct11.c: Likewise.
28          * testsuite/libffi.call/uninitialized.c: Likewise.
29 Index: libffi/README
30 ===================================================================
31 --- libffi.orig/README
32 +++ libffi/README
33 @@ -154,6 +154,7 @@ See the ChangeLog files for details.
34         Add Blackfin support.
35         Add TILE-Gx/TILEPro support.
36         Add AArch64 support.
37 +       Add support for PaX enabled kernels with MPROTECT.
38  
39  3.0.11 Apr-11-12
40          Lots of build fixes.
41 Index: libffi/configure
42 ===================================================================
43 --- libffi.orig/configure
44 +++ libffi/configure
45 @@ -828,6 +828,7 @@ enable_libtool_lock
46  enable_portable_binary
47  with_gcc_arch
48  enable_maintainer_mode
49 +enable_pax_emutramp
50  enable_debug
51  enable_structs
52  enable_raw_api
53 @@ -1475,6 +1476,7 @@ Optional Features:
54                            unportable binaries
55    --enable-maintainer-mode  enable make rules and dependencies not useful
56                           (and sometimes confusing) to the casual installer
57 +  --enable-pax_emutramp       enable pax emulated trampolines, for we can't use PROT_EXEC
58    --enable-debug          debugging mode
59    --disable-structs       omit code for struct support
60    --disable-raw-api       make the raw api unavailable
61 @@ -1483,7 +1485,7 @@ Optional Features:
62  Optional Packages:
63    --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
64    --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
65 -  --with-pic[=PKGS]       try to use only PIC/non-PIC objects [default=use
66 +  --with-pic              try to use only PIC/non-PIC objects [default=use
67                            both]
68    --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
69    --with-sysroot=DIR Search for dependent libraries within DIR
70 @@ -5284,11 +5286,6 @@ else
71      lt_cv_sys_max_cmd_len=196608
72      ;;
73  
74 -  os2*)
75 -    # The test takes a long time on OS/2.
76 -    lt_cv_sys_max_cmd_len=8192
77 -    ;;
78 -
79    osf*)
80      # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure
81      # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not
82 @@ -5328,7 +5325,7 @@ else
83        # If test is not a shell built-in, we'll probably end up computing a
84        # maximum length that is only half of the actual maximum length, but
85        # we can't tell.
86 -      while { test "X"`env echo "$teststring$teststring" 2>/dev/null` \
87 +      while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \
88                  = "X$teststring$teststring"; } >/dev/null 2>&1 &&
89               test $i != 17 # 1/2 MB should be enough
90        do
91 @@ -5757,7 +5754,7 @@ irix5* | irix6* | nonstopux*)
92    lt_cv_deplibs_check_method=pass_all
93    ;;
94  
95 -# This must be glibc/ELF.
96 +# This must be Linux ELF.
97  linux* | k*bsd*-gnu | kopensolaris*-gnu)
98    lt_cv_deplibs_check_method=pass_all
99    ;;
100 @@ -6398,13 +6395,13 @@ old_postuninstall_cmds=
101  if test -n "$RANLIB"; then
102    case $host_os in
103    openbsd*)
104 -    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$tool_oldlib"
105 +    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib"
106      ;;
107    *)
108 -    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$tool_oldlib"
109 +    old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib"
110      ;;
111    esac
112 -  old_archive_cmds="$old_archive_cmds~\$RANLIB \$tool_oldlib"
113 +  old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib"
114  fi
115  
116  case $host_os in
117 @@ -6551,7 +6548,6 @@ for ac_symprfx in "" "_"; do
118      # which start with @ or ?.
119      lt_cv_sys_global_symbol_pipe="$AWK '"\
120  "     {last_section=section; section=\$ 3};"\
121 -"     /^COFF SYMBOL TABLE/{for(i in hide) delete hide[i]};"\
122  "     /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\
123  "     \$ 0!~/External *\|/{next};"\
124  "     / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\
125 @@ -6856,7 +6852,14 @@ s390*-*linux*|s390*-*tpf*|sparc*-*linux*
126             LD="${LD-ld} -m elf_i386_fbsd"
127             ;;
128           x86_64-*linux*)
129 -           LD="${LD-ld} -m elf_i386"
130 +           case `/usr/bin/file conftest.o` in
131 +             *x86-64*)
132 +                LD="${LD-ld} -m elf32_x86_64"
133 +                ;;
134 +             *)
135 +                LD="${LD-ld} -m elf_i386"
136 +                ;;
137 +           esac
138             ;;
139           ppc64-*linux*|powerpc64-*linux*)
140             LD="${LD-ld} -m elf32ppclinux"
141 @@ -6940,7 +6943,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; }
142      CFLAGS="$SAVE_CFLAGS"
143    fi
144    ;;
145 -*-*solaris*)
146 +sparc*-*solaris*)
147    # Find out which ABI we are using.
148    echo 'int i;' > conftest.$ac_ext
149    if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5
150 @@ -6951,20 +6954,7 @@ $as_echo "$lt_cv_cc_needs_belf" >&6; }
151      case `/usr/bin/file conftest.o` in
152      *64-bit*)
153        case $lt_cv_prog_gnu_ld in
154 -      yes*)
155 -        case $host in
156 -        i?86-*-solaris*)
157 -          LD="${LD-ld} -m elf_x86_64"
158 -          ;;
159 -        sparc*-*-solaris*)
160 -          LD="${LD-ld} -m elf64_sparc"
161 -          ;;
162 -        esac
163 -        # GNU ld 2.21 introduced _sol2 emulations.  Use them if available.
164 -        if ${LD-ld} -V | grep _sol2 >/dev/null 2>&1; then
165 -          LD="${LD-ld}_sol2"
166 -        fi
167 -        ;;
168 +      yes*) LD="${LD-ld} -m elf64_sparc" ;;
169        *)
170         if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then
171           LD="${LD-ld} -64"
172 @@ -7604,13 +7594,7 @@ else
173         $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \
174           -dynamiclib -Wl,-single_module conftest.c 2>conftest.err
175          _lt_result=$?
176 -       # If there is a non-empty error log, and "single_module"
177 -       # appears in it, assume the flag caused a linker warning
178 -        if test -s conftest.err && $GREP single_module conftest.err; then
179 -         cat conftest.err >&5
180 -       # Otherwise, if the output was created with a 0 exit code from
181 -       # the compiler, it worked.
182 -       elif test -f libconftest.dylib && test $_lt_result -eq 0; then
183 +       if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then
184           lt_cv_apple_cc_single_mod=yes
185         else
186           cat conftest.err >&5
187 @@ -7621,7 +7605,6 @@ else
188  fi
189  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5
190  $as_echo "$lt_cv_apple_cc_single_mod" >&6; }
191 -
192      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5
193  $as_echo_n "checking for -exported_symbols_list linker flag... " >&6; }
194  if ${lt_cv_ld_exported_symbols_list+:} false; then :
195 @@ -7654,7 +7637,6 @@ rm -f core conftest.err conftest.$ac_obj
196  fi
197  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5
198  $as_echo "$lt_cv_ld_exported_symbols_list" >&6; }
199 -
200      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5
201  $as_echo_n "checking for -force_load linker flag... " >&6; }
202  if ${lt_cv_ld_force_load+:} false; then :
203 @@ -7676,9 +7658,7 @@ _LT_EOF
204        echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5
205        $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err
206        _lt_result=$?
207 -      if test -s conftest.err && $GREP force_load conftest.err; then
208 -       cat conftest.err >&5
209 -      elif test -f conftest && test $_lt_result -eq 0 && $GREP forced_load conftest >/dev/null 2>&1 ; then
210 +      if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then
211         lt_cv_ld_force_load=yes
212        else
213         cat conftest.err >&5
214 @@ -8083,22 +8063,7 @@ fi
215  
216  # Check whether --with-pic was given.
217  if test "${with_pic+set}" = set; then :
218 -  withval=$with_pic; lt_p=${PACKAGE-default}
219 -    case $withval in
220 -    yes|no) pic_mode=$withval ;;
221 -    *)
222 -      pic_mode=default
223 -      # Look at the argument we got.  We use all the common list separators.
224 -      lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
225 -      for lt_pkg in $withval; do
226 -       IFS="$lt_save_ifs"
227 -       if test "X$lt_pkg" = "X$lt_p"; then
228 -         pic_mode=yes
229 -       fi
230 -      done
231 -      IFS="$lt_save_ifs"
232 -      ;;
233 -    esac
234 +  withval=$with_pic; pic_mode="$withval"
235  else
236    pic_mode=default
237  fi
238 @@ -8176,10 +8141,6 @@ LIBTOOL='$(SHELL) $(top_builddir)/libtoo
239  
240  
241  
242 -
243 -
244 -
245 -
246  test -z "$LN_S" && LN_S="ln -s"
247  
248  
249 @@ -8469,6 +8430,10 @@ _lt_linker_boilerplate=`cat conftest.err
250  $RM -r conftest*
251  
252  
253 +## CAVEAT EMPTOR:
254 +## There is no encapsulation within the following macros, do not change
255 +## the running order or otherwise move them around unless you know exactly
256 +## what you are doing...
257  if test -n "$compiler"; then
258  
259  lt_prog_compiler_no_builtin_flag=
260 @@ -8635,9 +8600,7 @@ lt_prog_compiler_static=
261      case $cc_basename in
262      nvcc*) # Cuda Compiler Driver 2.2
263        lt_prog_compiler_wl='-Xlinker '
264 -      if test -n "$lt_prog_compiler_pic"; then
265 -        lt_prog_compiler_pic="-Xcompiler $lt_prog_compiler_pic"
266 -      fi
267 +      lt_prog_compiler_pic='-Xcompiler -fPIC'
268        ;;
269      esac
270    else
271 @@ -8728,33 +8691,18 @@ lt_prog_compiler_static=
272         ;;
273        *)
274         case `$CC -V 2>&1 | sed 5q` in
275 -       *Sun\ Ceres\ Fortran* | *Sun*Fortran*\ [1-7].* | *Sun*Fortran*\ 8.[0-3]*)
276 +       *Sun\ F* | *Sun*Fortran*)
277           # Sun Fortran 8.3 passes all unrecognized flags to the linker
278           lt_prog_compiler_pic='-KPIC'
279           lt_prog_compiler_static='-Bstatic'
280           lt_prog_compiler_wl=''
281           ;;
282 -       *Sun\ F* | *Sun*Fortran*)
283 -         lt_prog_compiler_pic='-KPIC'
284 -         lt_prog_compiler_static='-Bstatic'
285 -         lt_prog_compiler_wl='-Qoption ld '
286 -         ;;
287         *Sun\ C*)
288           # Sun C 5.9
289           lt_prog_compiler_pic='-KPIC'
290           lt_prog_compiler_static='-Bstatic'
291           lt_prog_compiler_wl='-Wl,'
292           ;;
293 -        *Intel*\ [CF]*Compiler*)
294 -         lt_prog_compiler_wl='-Wl,'
295 -         lt_prog_compiler_pic='-fPIC'
296 -         lt_prog_compiler_static='-static'
297 -         ;;
298 -       *Portland\ Group*)
299 -         lt_prog_compiler_wl='-Wl,'
300 -         lt_prog_compiler_pic='-fpic'
301 -         lt_prog_compiler_static='-Bstatic'
302 -         ;;
303         esac
304         ;;
305        esac
306 @@ -9116,6 +9064,7 @@ $as_echo_n "checking whether the $compil
307    hardcode_direct=no
308    hardcode_direct_absolute=no
309    hardcode_libdir_flag_spec=
310 +  hardcode_libdir_flag_spec_ld=
311    hardcode_libdir_separator=
312    hardcode_minus_L=no
313    hardcode_shlibpath_var=unsupported
314 @@ -9365,7 +9314,8 @@ _LT_EOF
315         xlf* | bgf* | bgxlf* | mpixlf*)
316           # IBM XL Fortran 10.1 on PPC cannot create shared libs itself
317           whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive'
318 -         hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
319 +         hardcode_libdir_flag_spec=
320 +         hardcode_libdir_flag_spec_ld='-rpath $libdir'
321           archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname -o $lib'
322           if test "x$supports_anon_versioning" = xyes; then
323             archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~
324 @@ -9744,7 +9694,6 @@ fi
325         # The linker will not automatically build a static lib if we build a DLL.
326         # _LT_TAGVAR(old_archive_from_new_cmds, )='true'
327         enable_shared_with_static_runtimes=yes
328 -       exclude_expsyms='_NULL_IMPORT_DESCRIPTOR|_IMPORT_DESCRIPTOR_.*'
329         export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1,DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols'
330         # Don't use ranlib
331         old_postinstall_cmds='chmod 644 $oldlib'
332 @@ -9790,7 +9739,6 @@ fi
333    hardcode_shlibpath_var=unsupported
334    if test "$lt_cv_ld_force_load" = "yes"; then
335      whole_archive_flag_spec='`for conv in $convenience\"\"; do test  -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`'
336 -
337    else
338      whole_archive_flag_spec=''
339    fi
340 @@ -9819,6 +9767,10 @@ fi
341        hardcode_shlibpath_var=no
342        ;;
343  
344 +    freebsd1*)
345 +      ld_shlibs=no
346 +      ;;
347 +
348      # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor
349      # support.  Future versions do this automatically, but an explicit c++rt0.o
350      # does not break anything, and helps significantly (at the cost of a little
351 @@ -9831,7 +9783,7 @@ fi
352        ;;
353  
354      # Unfortunately, older versions of FreeBSD 2 do not have this feature.
355 -    freebsd2.*)
356 +    freebsd2*)
357        archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
358        hardcode_direct=yes
359        hardcode_minus_L=yes
360 @@ -9870,6 +9822,7 @@ fi
361        fi
362        if test "$with_gnu_ld" = no; then
363         hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
364 +       hardcode_libdir_flag_spec_ld='+b $libdir'
365         hardcode_libdir_separator=:
366         hardcode_direct=yes
367         hardcode_direct_absolute=yes
368 @@ -10493,6 +10446,11 @@ esac
369  
370  
371  
372 +
373 +
374 +
375 +
376 +
377    { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5
378  $as_echo_n "checking dynamic linker characteristics... " >&6; }
379  
380 @@ -10582,7 +10540,7 @@ need_version=unknown
381  
382  case $host_os in
383  aix3*)
384 -  version_type=linux # correct to gnu/linux during the next big refactor
385 +  version_type=linux
386    library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a'
387    shlibpath_var=LIBPATH
388  
389 @@ -10591,7 +10549,7 @@ aix3*)
390    ;;
391  
392  aix[4-9]*)
393 -  version_type=linux # correct to gnu/linux during the next big refactor
394 +  version_type=linux
395    need_lib_prefix=no
396    need_version=no
397    hardcode_into_libs=yes
398 @@ -10656,7 +10614,7 @@ beos*)
399    ;;
400  
401  bsdi[45]*)
402 -  version_type=linux # correct to gnu/linux during the next big refactor
403 +  version_type=linux
404    need_version=no
405    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
406    soname_spec='${libname}${release}${shared_ext}$major'
407 @@ -10795,7 +10753,7 @@ darwin* | rhapsody*)
408    ;;
409  
410  dgux*)
411 -  version_type=linux # correct to gnu/linux during the next big refactor
412 +  version_type=linux
413    need_lib_prefix=no
414    need_version=no
415    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext'
416 @@ -10803,6 +10761,10 @@ dgux*)
417    shlibpath_var=LD_LIBRARY_PATH
418    ;;
419  
420 +freebsd1*)
421 +  dynamic_linker=no
422 +  ;;
423 +
424  freebsd* | dragonfly*)
425    # DragonFly does not have aout.  When/if they implement a new
426    # versioning mechanism, adjust this.
427 @@ -10810,7 +10772,7 @@ freebsd* | dragonfly*)
428      objformat=`/usr/bin/objformat`
429    else
430      case $host_os in
431 -    freebsd[23].*) objformat=aout ;;
432 +    freebsd[123]*) objformat=aout ;;
433      *) objformat=elf ;;
434      esac
435    fi
436 @@ -10828,7 +10790,7 @@ freebsd* | dragonfly*)
437    esac
438    shlibpath_var=LD_LIBRARY_PATH
439    case $host_os in
440 -  freebsd2.*)
441 +  freebsd2*)
442      shlibpath_overrides_runpath=yes
443      ;;
444    freebsd3.[01]* | freebsdelf3.[01]*)
445 @@ -10848,18 +10810,17 @@ freebsd* | dragonfly*)
446    ;;
447  
448  gnu*)
449 -  version_type=linux # correct to gnu/linux during the next big refactor
450 +  version_type=linux
451    need_lib_prefix=no
452    need_version=no
453    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}'
454    soname_spec='${libname}${release}${shared_ext}$major'
455    shlibpath_var=LD_LIBRARY_PATH
456 -  shlibpath_overrides_runpath=no
457    hardcode_into_libs=yes
458    ;;
459  
460  haiku*)
461 -  version_type=linux # correct to gnu/linux during the next big refactor
462 +  version_type=linux
463    need_lib_prefix=no
464    need_version=no
465    dynamic_linker="$host_os runtime_loader"
466 @@ -10920,7 +10881,7 @@ hpux9* | hpux10* | hpux11*)
467    ;;
468  
469  interix[3-9]*)
470 -  version_type=linux # correct to gnu/linux during the next big refactor
471 +  version_type=linux
472    need_lib_prefix=no
473    need_version=no
474    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}'
475 @@ -10936,7 +10897,7 @@ irix5* | irix6* | nonstopux*)
476      nonstopux*) version_type=nonstopux ;;
477      *)
478         if test "$lt_cv_prog_gnu_ld" = yes; then
479 -               version_type=linux # correct to gnu/linux during the next big refactor
480 +               version_type=linux
481         else
482                 version_type=irix
483         fi ;;
484 @@ -10973,9 +10934,9 @@ linux*oldld* | linux*aout* | linux*coff*
485    dynamic_linker=no
486    ;;
487  
488 -# This must be glibc/ELF.
489 +# This must be Linux ELF.
490  linux* | k*bsd*-gnu | kopensolaris*-gnu)
491 -  version_type=linux # correct to gnu/linux during the next big refactor
492 +  version_type=linux
493    need_lib_prefix=no
494    need_version=no
495    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
496 @@ -11023,14 +10984,10 @@ fi
497    # before this can be enabled.
498    hardcode_into_libs=yes
499  
500 -  # Add ABI-specific directories to the system library path.
501 -  sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib"
502 -
503    # Append ld.so.conf contents to the search path
504    if test -f /etc/ld.so.conf; then
505      lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[      ]*hwcap[        ]/d;s/[:,      ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '`
506 -    sys_lib_dlsearch_path_spec="$sys_lib_dlsearch_path_spec $lt_ld_extra"
507 -
508 +    sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra"
509    fi
510  
511    # We used to test for /lib/ld.so.1 and disable shared libraries on
512 @@ -11061,7 +11018,7 @@ netbsd*)
513    ;;
514  
515  newsos6)
516 -  version_type=linux # correct to gnu/linux during the next big refactor
517 +  version_type=linux
518    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
519    shlibpath_var=LD_LIBRARY_PATH
520    shlibpath_overrides_runpath=yes
521 @@ -11130,7 +11087,7 @@ rdos*)
522    ;;
523  
524  solaris*)
525 -  version_type=linux # correct to gnu/linux during the next big refactor
526 +  version_type=linux
527    need_lib_prefix=no
528    need_version=no
529    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
530 @@ -11155,7 +11112,7 @@ sunos4*)
531    ;;
532  
533  sysv4 | sysv4.3*)
534 -  version_type=linux # correct to gnu/linux during the next big refactor
535 +  version_type=linux
536    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
537    soname_spec='${libname}${release}${shared_ext}$major'
538    shlibpath_var=LD_LIBRARY_PATH
539 @@ -11179,7 +11136,7 @@ sysv4 | sysv4.3*)
540  
541  sysv4*MP*)
542    if test -d /usr/nec ;then
543 -    version_type=linux # correct to gnu/linux during the next big refactor
544 +    version_type=linux
545      library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}'
546      soname_spec='$libname${shared_ext}.$major'
547      shlibpath_var=LD_LIBRARY_PATH
548 @@ -11210,7 +11167,7 @@ sysv5* | sco3.2v5* | sco5v6* | unixware*
549  
550  tpf*)
551    # TPF is a cross-target only.  Preferred cross-host = GNU/Linux.
552 -  version_type=linux # correct to gnu/linux during the next big refactor
553 +  version_type=linux
554    need_lib_prefix=no
555    need_version=no
556    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
557 @@ -11220,7 +11177,7 @@ tpf*)
558    ;;
559  
560  uts4*)
561 -  version_type=linux # correct to gnu/linux during the next big refactor
562 +  version_type=linux
563    library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}'
564    soname_spec='${libname}${release}${shared_ext}$major'
565    shlibpath_var=LD_LIBRARY_PATH
566 @@ -12002,8 +11959,6 @@ CC="$lt_save_CC"
567  
568  
569  
570 -
571 -
572          ac_config_commands="$ac_config_commands libtool"
573  
574  
575 @@ -14259,7 +14214,40 @@ $as_echo "#define AC_APPLE_UNIVERSAL_BUI
576   esac
577  
578  
579 -GCC_AS_CFI_PSEUDO_OP
580 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler .cfi pseudo-op support" >&5
581 +$as_echo_n "checking assembler .cfi pseudo-op support... " >&6; }
582 +if ${gcc_cv_as_cfi_pseudo_op+:} false; then :
583 +  $as_echo_n "(cached) " >&6
584 +else
585 +
586 +    gcc_cv_as_cfi_pseudo_op=unknown
587 +    cat confdefs.h - <<_ACEOF >conftest.$ac_ext
588 +/* end confdefs.h.  */
589 +asm (".cfi_startproc\n\t.cfi_endproc");
590 +int
591 +main ()
592 +{
593 +
594 +  ;
595 +  return 0;
596 +}
597 +_ACEOF
598 +if ac_fn_c_try_compile "$LINENO"; then :
599 +  gcc_cv_as_cfi_pseudo_op=yes
600 +else
601 +  gcc_cv_as_cfi_pseudo_op=no
602 +fi
603 +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
604 +
605 +fi
606 +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gcc_cv_as_cfi_pseudo_op" >&5
607 +$as_echo "$gcc_cv_as_cfi_pseudo_op" >&6; }
608 + if test "x$gcc_cv_as_cfi_pseudo_op" = xyes; then
609 +
610 +$as_echo "#define HAVE_AS_CFI_PSEUDO_OP 1" >>confdefs.h
611 +
612 + fi
613 +
614  
615  if test x$TARGET = xSPARC; then
616      { $as_echo "$as_me:${as_lineno-$LINENO}: checking assembler and linker support unaligned pc related relocs" >&5
617 @@ -14485,6 +14473,16 @@ $as_echo "#define SYMBOL_UNDERSCORE 1" >
618      fi
619  fi
620  
621 +# On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC.
622 +# Check whether --enable-pax_emutramp was given.
623 +if test "${enable_pax_emutramp+set}" = set; then :
624 +  enableval=$enable_pax_emutramp; if test "$enable_pax_emutramp" = "yes"; then
625 +
626 +$as_echo "#define FFI_MMAP_EXEC_EMUTRAMP_PAX 1" >>confdefs.h
627 +
628 +  fi
629 +fi
630 +
631  
632  FFI_EXEC_TRAMPOLINE_TABLE=0
633  case "$target" in
634 @@ -15580,7 +15578,6 @@ pic_mode='`$ECHO "$pic_mode" | $SED "$de
635  enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`'
636  SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`'
637  ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`'
638 -PATH_SEPARATOR='`$ECHO "$PATH_SEPARATOR" | $SED "$delay_single_quote_subst"`'
639  host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`'
640  host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`'
641  host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`'
642 @@ -15663,6 +15660,7 @@ with_gnu_ld='`$ECHO "$with_gnu_ld" | $SE
643  allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`'
644  no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`'
645  hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`'
646 +hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`'
647  hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`'
648  hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`'
649  hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`'
650 @@ -15718,7 +15716,6 @@ _LTECHO_EOF'
651  # Quote evaled strings.
652  for var in SHELL \
653  ECHO \
654 -PATH_SEPARATOR \
655  SED \
656  GREP \
657  EGREP \
658 @@ -15769,6 +15766,7 @@ with_gnu_ld \
659  allow_undefined_flag \
660  no_undefined_flag \
661  hardcode_libdir_flag_spec \
662 +hardcode_libdir_flag_spec_ld \
663  hardcode_libdir_separator \
664  exclude_expsyms \
665  include_expsyms \
666 @@ -16750,8 +16748,8 @@ $as_echo X"$file" |
667  # NOTE: Changes made to this file will be lost: look at ltmain.sh.
668  #
669  #   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
670 -#                 2006, 2007, 2008, 2009, 2010, 2011 Free Software
671 -#                 Foundation, Inc.
672 +#                 2006, 2007, 2008, 2009, 2010 Free Software Foundation,
673 +#                 Inc.
674  #   Written by Gordon Matzigkeit, 1996
675  #
676  #   This file is part of GNU Libtool.
677 @@ -16805,9 +16803,6 @@ SHELL=$lt_SHELL
678  # An echo program that protects backslashes.
679  ECHO=$lt_ECHO
680  
681 -# The PATH separator for the build system.
682 -PATH_SEPARATOR=$lt_PATH_SEPARATOR
683 -
684  # The host system.
685  host_alias=$host_alias
686  host=$host
687 @@ -17109,6 +17104,10 @@ no_undefined_flag=$lt_no_undefined_flag
688  # This must work even if \$libdir does not exist
689  hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec
690  
691 +# If ld is used when linking, flag to hardcode \$libdir into a binary
692 +# during linking.  This must work even if \$libdir does not exist.
693 +hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld
694 +
695  # Whether we need a single "-rpath" flag with a separated argument.
696  hardcode_libdir_separator=$lt_hardcode_libdir_separator
697  
698 Index: libffi/configure.ac
699 ===================================================================
700 --- libffi.orig/configure.ac
701 +++ libffi/configure.ac
702 @@ -357,6 +357,13 @@ if test x$TARGET = xX86_WIN64; then
703      fi
704  fi
705  
706 +# On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC.
707 +AC_ARG_ENABLE(pax_emutramp,
708 +  [  --enable-pax_emutramp       enable pax emulated trampolines, for we can't use PROT_EXEC],
709 +  if test "$enable_pax_emutramp" = "yes"; then
710 +    AC_DEFINE(FFI_MMAP_EXEC_EMUTRAMP_PAX, 1,
711 +      [Define this if you want to enable pax emulated trampolines])
712 +  fi)
713  
714  FFI_EXEC_TRAMPOLINE_TABLE=0
715  case "$target" in
716 Index: libffi/src/closures.c
717 ===================================================================
718 --- libffi.orig/src/closures.c
719 +++ libffi/src/closures.c
720 @@ -172,6 +172,27 @@ selinux_enabled_check (void)
721  
722  #endif /* !FFI_MMAP_EXEC_SELINUX */
723  
724 +/* On PaX enable kernels that have MPROTECT enable we can't use PROT_EXEC. */
725 +#ifdef FFI_MMAP_EXEC_EMUTRAMP_PAX
726 +#include <stdlib.h>
727 +
728 +static int emutramp_enabled = -1;
729 +
730 +static int
731 +emutramp_enabled_check (void)
732 +{
733 +  if (getenv ("FFI_DISABLE_EMUTRAMP") == NULL)
734 +    return 1;
735 +  else
736 +    return 0;
737 +}
738 +
739 +#define is_emutramp_enabled() (emutramp_enabled >= 0 ? emutramp_enabled \
740 +                               : (emutramp_enabled = emutramp_enabled_check ()))
741 +#else
742 +#define is_emutramp_enabled() 0
743 +#endif /* FFI_MMAP_EXEC_EMUTRAMP_PAX */
744 +
745  #elif defined (__CYGWIN__) || defined(__INTERIX)
746  
747  #include <sys/mman.h>
748 @@ -458,6 +479,12 @@ dlmmap (void *start, size_t length, int
749    printf ("mapping in %zi\n", length);
750  #endif
751  
752 +  if (execfd == -1 && is_emutramp_enabled ())
753 +    {
754 +      ptr = mmap (start, length, prot & ~PROT_EXEC, flags, fd, offset);
755 +      return ptr;
756 +    }
757 +
758    if (execfd == -1 && !is_selinux_enabled ())
759      {
760        ptr = mmap (start, length, prot | PROT_EXEC, flags, fd, offset);