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> (cherry picked from commit 424bcc46b5fb0d662e0fb9ad6319c5b9ef3d770f)
This commit is contained in:
parent
6109974cd9
commit
02affe2f0e
5
configure
vendored
5
configure
vendored
@ -3073,6 +3073,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
|
||||
@ -3383,6 +3387,7 @@ SLIB_EXTRA_CMD=${SLIB_EXTRA_CMD}
|
||||
SLIB_INSTALL_EXTRA_CMD=${SLIB_INSTALL_EXTRA_CMD}
|
||||
SLIB_UNINSTALL_EXTRA_CMD=${SLIB_UNINSTALL_EXTRA_CMD}
|
||||
SAMPLES:=${samples:-\$(FATE_SAMPLES)}
|
||||
NOREDZONE_FLAGS=$noredzone_flags
|
||||
EOF
|
||||
|
||||
get_version(){
|
||||
|
@ -20,6 +20,8 @@ OBJS-$(HAVE_MMX) += x86/rgb2rgb.o \
|
||||
x86/yuv2rgb_mmx.o
|
||||
OBJS-$(HAVE_VIS) += sparc/yuv2rgb_vis.o
|
||||
|
||||
$(SUBDIR)x86/swscale_mmx.o: CFLAGS += $(NOREDZONE_FLAGS)
|
||||
|
||||
TESTPROGS = colorspace swscale
|
||||
|
||||
DIRS = bfin mlib ppc sparc x86
|
||||
|
@ -2240,10 +2240,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)
|
||||
@ -2295,7 +2291,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
|
||||
@ -2317,10 +2312,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)
|
||||
@ -2360,7 +2351,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…
x
Reference in New Issue
Block a user