| From bdcf4d90f618f497311c348f984e005924cb3def Mon Sep 17 00:00:00 2001 |
| From: Bernd Kuhls <bernd.kuhls@t-online.de> |
| Date: Sun, 29 Jul 2018 20:58:06 +0200 |
| Subject: [PATCH] Check for -fstack-protector |
| |
| Not all toolchains provide support for -fstack-protector. This patch |
| provides a configure check to avoid build errors like |
| |
| /home/buildroot/buildroot/output/host/opt/ext-toolchain/bin/../lib/gcc/x86_64-buildroot-linux-uclibc/6.4.0/../../../../x86_64-buildroot-linux-uclibc/bin/ld: cannot find -lssp_nonshared |
| /home/buildroot/buildroot/output/host/opt/ext-toolchain/bin/../lib/gcc/x86_64-buildroot-linux-uclibc/6.4.0/../../../../x86_64-buildroot-linux-uclibc/bin/ld: cannot find -lssp |
| |
| Patch sent upstream as PR 125. |
| |
| Signed-off-by: Bernd Kuhls <bernd.kuhls@t-online.de> |
| --- |
| configure.ac | 16 ++++++++++++++++ |
| decode/Makefile.am | 5 ++++- |
| encode/Makefile.am | 5 ++++- |
| putsurface/Makefile.am | 5 ++++- |
| vainfo/Makefile.am | 5 ++++- |
| videoprocess/Makefile.am | 5 ++++- |
| 6 files changed, 36 insertions(+), 5 deletions(-) |
| |
| diff --git a/configure.ac b/configure.ac |
| index be2e00d..cfa508a 100644 |
| --- a/configure.ac |
| +++ b/configure.ac |
| @@ -129,6 +129,22 @@ if test "$ac_cv_have_gnuc_visibility_attribute" = "yes"; then |
| [Defined to 1 if GCC visibility attribute is supported]) |
| fi |
| |
| +# Check for -fstack-protector |
| +ssp_cc=yes |
| +if test "X$CC-cc" != "X"; then |
| + AC_MSG_CHECKING([whether ${CC-cc} accepts -fstack-protector]) |
| + ssp_old_cflags="$CFLAGS" |
| + CFLAGS="$CFLAGS -fstack-protector" |
| + AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[alloca(100);]])], [], [ssp_cc=no]) |
| + AC_MSG_RESULT([$ssp_cc]) |
| + if test "X$ssp_cc" = "Xno"; then |
| + CFLAGS="$ssp_old_cflags" |
| + else |
| + AC_DEFINE([ENABLE_SSP_CC], 1, [Define if SSP C support is enabled.]) |
| + fi |
| +fi |
| +AM_CONDITIONAL(USE_SSP, test "$ssp_cc" = "yes") |
| + |
| # Check for DRM (mandatory) |
| LIBDRM_VERSION=libdrm_version |
| PKG_CHECK_MODULES([DRM], [libdrm >= $LIBDRM_VERSION]) |
| diff --git a/decode/Makefile.am b/decode/Makefile.am |
| index febc50d..8ea9252 100644 |
| --- a/decode/Makefile.am |
| +++ b/decode/Makefile.am |
| @@ -24,11 +24,14 @@ bin_PROGRAMS = mpeg2vldemo loadjpeg |
| |
| AM_CPPFLAGS = \ |
| -Wall \ |
| - -fstack-protector \ |
| $(LIBVA_CFLAGS) \ |
| -I$(top_srcdir)/common \ |
| $(NULL) |
| |
| +if USE_SSP |
| +AM_CPPFLAGS += -fstack-protector |
| +endif |
| + |
| TEST_LIBS = \ |
| $(LIBVA_LIBS) \ |
| $(top_builddir)/common/libva-display.la \ |
| diff --git a/encode/Makefile.am b/encode/Makefile.am |
| index 8298b39..c107007 100644 |
| --- a/encode/Makefile.am |
| +++ b/encode/Makefile.am |
| @@ -25,10 +25,13 @@ noinst_PROGRAMS = svctenc |
| |
| AM_CPPFLAGS = \ |
| -Wall \ |
| - -fstack-protector \ |
| $(LIBVA_CFLAGS) \ |
| $(NULL) |
| |
| +if USE_SSP |
| +AM_CPPFLAGS += -fstack-protector |
| +endif |
| + |
| h264encode_SOURCES = h264encode.c |
| h264encode_CFLAGS = -I$(top_srcdir)/common -g |
| h264encode_LDADD = \ |
| diff --git a/putsurface/Makefile.am b/putsurface/Makefile.am |
| index e7b62a1..10ae63e 100644 |
| --- a/putsurface/Makefile.am |
| +++ b/putsurface/Makefile.am |
| @@ -26,9 +26,12 @@ TEST_CFLAGS = \ |
| $(LIBVA_CFLAGS) \ |
| -I$(top_srcdir)/common \ |
| -Wall \ |
| - -fstack-protector \ |
| $(NULL) |
| |
| +if USE_SSP |
| +TEST_CFLAGS += -fstack-protector |
| +endif |
| + |
| TEST_LIBS = \ |
| $(LIBVA_LIBS) \ |
| $(top_builddir)/common/libva-display.la \ |
| diff --git a/vainfo/Makefile.am b/vainfo/Makefile.am |
| index aff201f..e59f466 100644 |
| --- a/vainfo/Makefile.am |
| +++ b/vainfo/Makefile.am |
| @@ -27,9 +27,12 @@ vainfo_cflags = \ |
| $(LIBVA_CFLAGS) \ |
| -DLIBVA_VERSION_S="\"$(LIBVA_VERSION)\"" \ |
| -Wall \ |
| - -fstack-protector \ |
| $(NULL) |
| |
| +if USE_SSP |
| +vainfo_cflags += -fstack-protector |
| +endif |
| + |
| vainfo_libs = \ |
| $(LIBVA_LIBS) \ |
| $(top_builddir)/common/libva-display.la \ |
| diff --git a/videoprocess/Makefile.am b/videoprocess/Makefile.am |
| index eb79bc3..448da7d 100644 |
| --- a/videoprocess/Makefile.am |
| +++ b/videoprocess/Makefile.am |
| @@ -24,11 +24,14 @@ bin_PROGRAMS = vavpp |
| |
| AM_CPPFLAGS = \ |
| -Wall \ |
| - -fstack-protector \ |
| $(LIBVA_CFLAGS) \ |
| -I$(top_srcdir)/common \ |
| $(NULL) |
| |
| +if USE_SSP |
| +AM_CPPFLAGS += -fstack-protector |
| +endif |
| + |
| TEST_LIBS = \ |
| $(LIBVA_LIBS) \ |
| $(top_builddir)/common/libva-display.la \ |