Message ID | 20140327135904.GA2883@bart |
---|---|
State | New |
Headers | show |
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 <Andreas.Krebbel@de.ibm.com> > > * 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
On 27/03/14 15:15, Jakub Jelinek wrote: > 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? Yes. It does fix it. >> #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__ ? We do. I'll remove it. Bye, -Andreas-
On Thu, Mar 27, 2014 at 04:32:19PM +0100, Andreas Krebbel wrote: > On 27/03/14 15:15, Jakub Jelinek wrote: > > 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? > Yes. It does fix it. Looks ok to me. > >> #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__ ? > > We do. I'll remove it. BTW, your patch forced me to look at abilists of versioned shared libraries between 4.8.x and trunk and these 6 symbols are the only ones that are removed from {i?86,x86_64,ppc,ppc64,s390,s390x} arches. Jakub
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*) diff --git a/libgcc/configure b/libgcc/configure index 35896de..9e30d5e 100644 --- a/libgcc/configure +++ b/libgcc/configure @@ -4321,7 +4321,7 @@ $as_echo "$libgcc_cv_cfi" >&6; } # 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 diff --git a/libgcc/configure.ac b/libgcc/configure.ac index d877d21..3a1a11c 100644 --- 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