Browse Source

Compile x86/swscale_template with -mno-red-zone.

Replaces a very hackish hack to fix the same issue (call instruction
overwriting stack variables).

Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
tags/n0.9
Reimar Döffinger 13 years ago
parent
commit
424bcc46b5
3 changed files with 7 additions and 10 deletions
  1. +5
    -0
      configure
  2. +2
    -0
      libswscale/Makefile
  3. +0
    -10
      libswscale/x86/swscale_template.c

+ 5
- 0
configure View File

@@ -3179,6 +3179,10 @@ else
fi
check_cflags -fno-math-errno
check_cflags -fno-signed-zeros
check_cc -mno-red-zone <<EOF && noredzone_flags="-mno-red-zone"
int x;
EOF


if enabled icc; then
# Just warnings, no remarks
@@ -3469,6 +3473,7 @@ SLIB_INSTALL_LINKS=${SLIB_INSTALL_LINKS}
SLIB_INSTALL_EXTRA_LIB=${SLIB_INSTALL_EXTRA_LIB}
SLIB_INSTALL_EXTRA_SHLIB=${SLIB_INSTALL_EXTRA_SHLIB}
SAMPLES:=${samples:-\$(FATE_SAMPLES)}
NOREDZONE_FLAGS=$noredzone_flags
EOF

get_version(){


+ 2
- 0
libswscale/Makefile View File

@@ -21,6 +21,8 @@ OBJS-$(HAVE_MMX) += x86/rgb2rgb.o \
OBJS-$(HAVE_VIS) += sparc/yuv2rgb_vis.o
OBJS-$(HAVE_YASM) += x86/scale.o

$(SUBDIR)x86/swscale_mmx.o: CFLAGS += $(NOREDZONE_FLAGS)

TESTPROGS = colorspace swscale

DIRS = bfin mlib ppc sparc x86


+ 0
- 10
libswscale/x86/swscale_template.c View File

@@ -1963,10 +1963,6 @@ static void RENAME(hyscale_fast)(SwsContext *c, int16_t *dst,
#if defined(PIC)
DECLARE_ALIGNED(8, uint64_t, ebxsave);
#endif
// HACK: gcc 4.6 no longer decrements esp,
// use this to make it reserve space for the call
// return address
void *dummy;

__asm__ volatile(
#if defined(PIC)
@@ -2018,7 +2014,6 @@ static void RENAME(hyscale_fast)(SwsContext *c, int16_t *dst,
#if defined(PIC)
,"m" (ebxsave)
#endif
,"m" (dummy)
: "%"REG_a, "%"REG_c, "%"REG_d, "%"REG_S, "%"REG_D
#if !defined(PIC)
,"%"REG_b
@@ -2040,10 +2035,6 @@ static void RENAME(hcscale_fast)(SwsContext *c, int16_t *dst1, int16_t *dst2,
#if defined(PIC)
DECLARE_ALIGNED(8, uint64_t, ebxsave);
#endif
// HACK: gcc 4.6 no longer decrements esp,
// use this to make it reserve space for the call
// return address
void *dummy;

__asm__ volatile(
#if defined(PIC)
@@ -2083,7 +2074,6 @@ static void RENAME(hcscale_fast)(SwsContext *c, int16_t *dst1, int16_t *dst2,
#if defined(PIC)
,"m" (ebxsave)
#endif
,"m" (dummy)
: "%"REG_a, "%"REG_c, "%"REG_d, "%"REG_S, "%"REG_D
#if !defined(PIC)
,"%"REG_b


Loading…
Cancel
Save