Hi,

May this patch go into trunk at this point?  It is very important for
dynamic MPX codes.

Thanks,
Ilya

2015-03-18 14:56 GMT+03:00 Ilya Enkovich <enkovich....@gmail.com>:
> Hi,
>
> This patch fixes PR target/65444 by passing '-z bndplt' to linker when 
> appropriate.  Bootstrapped and tested on x86_64-unknown-linux-gnu.  Will 
> commit it to trunk in a couple of days if no objections arise.
>
> Thanks,
> Ilya
> --
> gcc/
>
> 2015-03-18  Ilya Enkovich  <ilya.enkov...@intel.com>
>
>         PR driver/65444
>         * config/i386/linux-common.h (MPX_SPEC): New.
>         (CHKP_SPEC): Add MPX_SPEC.
>
> libmpx/
>
> 2015-03-18  Ilya Enkovich  <ilya.enkov...@intel.com>
>
>         PR driver/65444
>         * configure.ac: Add check for '-z bndplt' support
>         by linker. Add link_mpx output variable.
>         * libmpx.spec.in (link_mpx): New.
>         * configure: Regenerate.
>
>
> diff --git a/gcc/config/i386/linux-common.h b/gcc/config/i386/linux-common.h
> index 9c6560b..dd79ec6 100644
> --- a/gcc/config/i386/linux-common.h
> +++ b/gcc/config/i386/linux-common.h
> @@ -59,6 +59,11 @@ along with GCC; see the file COPYING3.  If not see
>   %:include(libmpx.spec)%(link_libmpx)"
>  #endif
>
> +#ifndef MPX_SPEC
> +#define MPX_SPEC "\
> + 
> %{mmpx:%{fcheck-pointer-bounds:%{!static:%:include(libmpx.spec)%(link_mpx)}}}"
> +#endif
> +
>  #ifndef LIBMPX_SPEC
>  #if defined(HAVE_LD_STATIC_DYNAMIC)
>  #define LIBMPX_SPEC "\
> @@ -89,5 +94,5 @@ along with GCC; see the file COPYING3.  If not see
>
>  #ifndef CHKP_SPEC
>  #define CHKP_SPEC "\
> -%{!nostdlib:%{!nodefaultlibs:" LIBMPX_SPEC LIBMPXWRAPPERS_SPEC "}}"
> +%{!nostdlib:%{!nodefaultlibs:" LIBMPX_SPEC LIBMPXWRAPPERS_SPEC "}}" MPX_SPEC
>  #endif
> diff --git a/libmpx/configure.ac b/libmpx/configure.ac
> index fe0d3f2..3f8b50f 100644
> --- a/libmpx/configure.ac
> +++ b/libmpx/configure.ac
> @@ -40,7 +40,18 @@ AC_MSG_RESULT($LIBMPX_SUPPORTED)
>  AM_CONDITIONAL(LIBMPX_SUPPORTED, [test "x$LIBMPX_SUPPORTED" = "xyes"])
>
>  link_libmpx="-lpthread"
> +link_mpx=""
> +AC_MSG_CHECKING([whether ld accepts -z bndplt])
> +echo "int main() {};" > conftest.c
> +if AC_TRY_COMMAND([${CC} ${CFLAGS} -Wl,-z,bndplt -o conftest conftest.c 
> 1>&AS_MESSAGE_LOG_FD])
> +then
> +    AC_MSG_RESULT([yes])
> +    link_mpx="$link_mpx -z bndplt"
> +else
> +    AC_MSG_RESULT([no])
> +fi
>  AC_SUBST(link_libmpx)
> +AC_SUBST(link_mpx)
>
>  AM_INIT_AUTOMAKE(foreign no-dist no-dependencies)
>  AM_ENABLE_MULTILIB(, ..)
> diff --git a/libmpx/libmpx.spec.in b/libmpx/libmpx.spec.in
> index a265e28..34d0bdf 100644
> --- a/libmpx/libmpx.spec.in
> +++ b/libmpx/libmpx.spec.in
> @@ -1,3 +1,5 @@
>  # This spec file is read by gcc when linking.  It is used to specify the
> -# standard libraries we need in order to link with libcilkrts.
> +# standard libraries we need in order to link with libmpx.
>  *link_libmpx: @link_libmpx@
> +
> +*link_mpx: @link_mpx@

Reply via email to