diff options
Diffstat (limited to 'sys-devel/gcc/files/4.1.0/gcc-4.1.0-fast-math-i386-Os-workaround.patch')
-rw-r--r-- | sys-devel/gcc/files/4.1.0/gcc-4.1.0-fast-math-i386-Os-workaround.patch | 64 |
1 files changed, 0 insertions, 64 deletions
diff --git a/sys-devel/gcc/files/4.1.0/gcc-4.1.0-fast-math-i386-Os-workaround.patch b/sys-devel/gcc/files/4.1.0/gcc-4.1.0-fast-math-i386-Os-workaround.patch deleted file mode 100644 index 6090d66..0000000 --- a/sys-devel/gcc/files/4.1.0/gcc-4.1.0-fast-math-i386-Os-workaround.patch +++ /dev/null @@ -1,64 +0,0 @@ -workaround for lame stack packing on i386 ... - - - build gcc with -Os (crtfastmath.o to be specific) - - crtfastmath.o is installed into gcc libdir - - run gcc with -ffast-math and get crtfastmath.o linked in - - resulting compiled app segfaults due to init code in - crtfastmath.o that has mis-aligned structure on stack - -http://bugs.gentoo.org/147020 -http://gcc.gnu.org/PR28621 - -this is supposed to be fixed in current 4.1 branch, but i'm unable to get -the fix to work so until i can figure out what i'm doing wrong, we'll use -this workaround for now. - ---- gcc-4.1.1/gcc/config/i386/crtfastmath.c -+++ gcc-4.1.1/gcc/config/i386/crtfastmath.c -@@ -37,6 +37,23 @@ - #define FXSAVE (1 << 24) - #define SSE (1 << 25) - -+struct -+{ -+ unsigned short int cwd; -+ unsigned short int swd; -+ unsigned short int twd; -+ unsigned short int fop; -+ long int fip; -+ long int fcs; -+ long int foo; -+ long int fos; -+ long int mxcsr; -+ long int mxcsr_mask; -+ long int st_space[32]; -+ long int xmm_space[32]; -+ long int padding[56]; -+} __attribute__ ((aligned (16))) fxsave; -+ - static void __attribute__((constructor)) - set_fast_math (void) - { -@@ -75,22 +92,6 @@ - if (edx & FXSAVE) - { - /* Check if DAZ is available. */ -- struct -- { -- unsigned short int cwd; -- unsigned short int swd; -- unsigned short int twd; -- unsigned short int fop; -- long int fip; -- long int fcs; -- long int foo; -- long int fos; -- long int mxcsr; -- long int mxcsr_mask; -- long int st_space[32]; -- long int xmm_space[32]; -- long int padding[56]; -- } __attribute__ ((aligned (16))) fxsave; - - __builtin_memset (&fxsave, 0, sizeof (fxsave)); - |