On Thu, Mar 27, 2014 at 02:59:05PM +0100, Andreas Krebbel wrote:
> Hi,
>
> with r207507 I've made our fp to int conversion routines available
> also for the 32 bit biarch libgcc. The patch included these also for
> the 64 bit libgcc which is wrong since it prevent routines like
> fixsfti from being generated by libgcc2.c.
>
> The attached patch fixes the following testsuite regressions:
> < FAIL: gcc.c-torture/execute/pr49218.c compilation, -O0
> < FAIL: gcc.dg/torture/fp-int-convert-timode.c -O0 (test for excess errors)
Does this fix the:
-__fixdfti@@GCC_3.0 FUNC GLOBAL DEFAULT
-__fixsfti@@GCC_3.0 FUNC GLOBAL DEFAULT
-__fixtfti@@GCC_4.1.0 FUNC GLOBAL DEFAULT
-__fixunsdfti@@GCC_3.0 FUNC GLOBAL DEFAULT
-__fixunssfti@@GCC_3.0 FUNC GLOBAL DEFAULT
-__fixunstfti@@GCC_4.1.0 FUNC GLOBAL DEFAULT
regression when comparing
readelf -Ws libgcc_s.so.1 | sed -n '/\.symtab/,$d;/ UND
/d;/@GLIBC_PRIVATE/d;/\(GLOBAL\|WEAK\|UNIQUE\)/p' | awk '{ if ($4 == "OBJECT")
{ printf "%s %s %s %s %s\n", $8, $4, $5, $6, $3 } else { printf "%s %s %s
%s\n", $8, $4, $5, $6 }}' | LC_ALL=C sort -u
output between 4.8 and 4.9?
> 2014-03-27 Andreas Krebbel <[email protected]>
>
> * configure.ac: Set host_address for S/390.
> * configure: Regenerate.
> * config.host: Append t-floattodi to tmake_file depending on
> host_address.
>
> diff --git a/libgcc/config.host b/libgcc/config.host
> index f8f74cc..f4a7428 100644
> --- a/libgcc/config.host
> +++ b/libgcc/config.host
> @@ -1027,7 +1027,10 @@ s390-*-linux*)
> md_unwind_header=s390/linux-unwind.h
> ;;
> s390x-*-linux*)
> - tmake_file="${tmake_file} s390/t-crtstuff s390/t-linux
> s390/32/t-floattodi"
> + tmake_file="${tmake_file} s390/t-crtstuff s390/t-linux"
> + if test "${host_address}" = 32; then
> + tmake_file="${tmake_file} s390/32/t-floattodi"
> + fi
> md_unwind_header=s390/linux-unwind.h
> ;;
> s390x-ibm-tpf*)
> --- a/libgcc/configure.ac
> +++ b/libgcc/configure.ac
> @@ -283,7 +283,7 @@ AC_CACHE_CHECK([whether assembler supports CFI
> directives], [libgcc_cv_cfi],
> # word size rather than the address size.
> cat > conftest.c <<EOF
> #if defined(__x86_64__) || (!defined(__i386__) && defined(__LP64__)) \
> - || defined(__mips64)
> + || defined(__mips64) || defined(__s390x__)
> host_address=64
> #else
> host_address=32
Why is this needed? Don't s390x define __LP64__ ?
Jakub