diff options
author | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-05-02 14:43:35 +0000 |
---|---|---|
committer | Lorry Tar Creator <lorry-tar-importer@lorry> | 2017-05-02 14:43:35 +0000 |
commit | 34efdaf078b01a7387007c4e6bde6db86384c4b7 (patch) | |
tree | d503eaf41d085669d1481bb46ec038bc866fece6 /libmpx | |
parent | f733cf303bcdc952c92b81dd62199a40a1f555ec (diff) | |
download | gcc-tarball-master.tar.gz |
gcc-7.1.0gcc-7.1.0
Diffstat (limited to 'libmpx')
-rw-r--r-- | libmpx/ChangeLog | 67 | ||||
-rw-r--r-- | libmpx/Makefile.am | 2 | ||||
-rw-r--r-- | libmpx/Makefile.in | 6 | ||||
-rw-r--r-- | libmpx/aclocal.m4 | 1 | ||||
-rw-r--r-- | libmpx/configure | 26 | ||||
-rw-r--r-- | libmpx/configure.ac | 3 | ||||
-rw-r--r-- | libmpx/mpxrt/Makefile.am | 2 | ||||
-rw-r--r-- | libmpx/mpxrt/Makefile.in | 6 | ||||
-rw-r--r-- | libmpx/mpxrt/libtool-version | 2 | ||||
-rw-r--r-- | libmpx/mpxrt/mpxrt-utils.c | 46 | ||||
-rw-r--r-- | libmpx/mpxrt/mpxrt-utils.h | 6 | ||||
-rw-r--r-- | libmpx/mpxrt/mpxrt.c | 6 | ||||
-rw-r--r-- | libmpx/mpxwrap/Makefile.am | 2 | ||||
-rw-r--r-- | libmpx/mpxwrap/Makefile.in | 6 | ||||
-rw-r--r-- | libmpx/mpxwrap/libtool-version | 2 | ||||
-rw-r--r-- | libmpx/mpxwrap/mpx_wrappers.c | 35 |
16 files changed, 180 insertions, 38 deletions
diff --git a/libmpx/ChangeLog b/libmpx/ChangeLog index 23404f535b..42afc5092e 100644 --- a/libmpx/ChangeLog +++ b/libmpx/ChangeLog @@ -1,17 +1,68 @@ -2016-08-22 Release Manager +2017-05-02 Release Manager - * GCC 6.2.0 released. + * GCC 7.1.0 released. -2016-06-10 Ilya Enkovich <ilya.enkovich@intel.com> +2017-01-30 Jakub Jelinek <jakub@redhat.com> - Backport from mainline r237292. - 2016-06-10 Ilya Enkovich <ilya.enkovich@intel.com> + * mpxrt/mpxrt-utils.h (__mpxrt_stop): New prototype. - * mpxwrap/mpx_wrappers.c (move_bounds): Fix overflow bug. +2017-01-21 Jakub Jelinek <jakub@redhat.com> + + PR other/79046 + * mpxrt/Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead + of cat to get version from BASE-VER file. + * mpxwrap/Makefile.am (gcc_version): Likewise. + * mpxrt/Makefile.in: Regenerated. + * mpxwrap/Makefile.in: Regenerated. + +2017-01-19 Jakub Jelinek <jakub@redhat.com> + + PR other/79046 + * aclocal.m4: Regenerated. + * configure: Regenerated. + * Makefile.in: Regenerated. + * mpxrt/Makefile.in: Regenerated. + * mpxwrap/Makefile.in: Regenerated. + +2017-01-17 Jakub Jelinek <jakub@redhat.com> + + PR other/79046 + * configure.ac: Add GCC_BASE_VER. + * Makefile.am (gcc_version): Use @get_gcc_base_ver@ instead of cat to + get version from BASE-VER file. + * configure: Regenerated. + * Makefile.in: Regenerated. + +2016-12-27 H.J. Lu <hongjiu.lu@intel.com> + Alexander Ivchenko <alexander.ivchenko@intel.com> -2016-04-27 Release Manager + * mpxwrap/libtool-version: New version. + * mpxwrap/mpx_wrappers.c (__mpx_wrapper_realloc): Make it + static with external alias. + (__mpx_wrapper_bzero): Ditto. + (mpx_wrapper_memcpy): Ditto. + (__mpx_wrapper_mempcpy): Ditto. - * GCC 6.1.0 released. +2016-12-26 Alexander Ivchenko <alexander.ivchenko@intel.com> + + * mpxrt/libtool-version: New version. + * mpxrt/mpxrt-utils.c (set_mpx_rt_stop_handler): New function. + (print_help): Add help for CHKP_RT_STOP_HANDLER environment + variable. + (__mpxrt_init_env_vars): Add initialization of stop_handler. + (__mpxrt_stop_handler): New function. + (__mpxrt_stop): Ditto. + * mpxrt/mpxrt-utils.h (mpx_rt_stop_mode_handler_t): New enum. + * mpxrt/mpxrt.c (handler): Replace exit(255) with __mpxrt_stop + function call. + +2016-11-15 Matthias Klose <doko@ubuntu.com> + + * configure: Regenerate. + +2016-06-10 Ilya Enkovich <ilya.enkovich@intel.com> + + * mpxwrap/mpx_wrappers.c (move_bounds): Fix overflow bug. 2016-01-20 Matthias Klose <doko@ubuntu.com> diff --git a/libmpx/Makefile.am b/libmpx/Makefile.am index bd0a8b6f93..9ec6ec7db6 100644 --- a/libmpx/Makefile.am +++ b/libmpx/Makefile.am @@ -9,7 +9,7 @@ nodist_toolexeclib_HEADERS = libmpx.spec endif ## May be used by toolexeclibdir. -gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) +gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) # Work around what appears to be a GNU make bug handling MAKEFLAGS # values defined in terms of make variables, as is the case for CC and diff --git a/libmpx/Makefile.in b/libmpx/Makefile.in index d644af3652..5e58b7299b 100644 --- a/libmpx/Makefile.in +++ b/libmpx/Makefile.in @@ -59,7 +59,8 @@ DIST_COMMON = ChangeLog $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ $(srcdir)/config.h.in $(srcdir)/../mkinstalldirs \ $(srcdir)/libmpx.spec.in ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/../config/lead-dot.m4 \ +am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ + $(top_srcdir)/../config/lead-dot.m4 \ $(top_srcdir)/../config/multi.m4 \ $(top_srcdir)/../config/override.m4 \ $(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \ @@ -216,6 +217,7 @@ dvidir = @dvidir@ enable_shared = @enable_shared@ enable_static = @enable_static@ exec_prefix = @exec_prefix@ +get_gcc_base_ver = @get_gcc_base_ver@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ @@ -255,7 +257,7 @@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I .. -I ../config @LIBMPX_SUPPORTED_TRUE@SUBDIRS = mpxrt $(am__append_1) @LIBMPX_SUPPORTED_TRUE@nodist_toolexeclib_HEADERS = libmpx.spec -gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) +gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) # Work around what appears to be a GNU make bug handling MAKEFLAGS # values defined in terms of make variables, as is the case for CC and diff --git a/libmpx/aclocal.m4 b/libmpx/aclocal.m4 index 9e505c1cd3..886b71f9a1 100644 --- a/libmpx/aclocal.m4 +++ b/libmpx/aclocal.m4 @@ -705,6 +705,7 @@ AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR +m4_include([../config/acx.m4]) m4_include([../config/lead-dot.m4]) m4_include([../config/multi.m4]) m4_include([../config/override.m4]) diff --git a/libmpx/configure b/libmpx/configure index 16d0dd85d3..853993a522 100644 --- a/libmpx/configure +++ b/libmpx/configure @@ -603,6 +603,7 @@ ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS LIBOBJS +get_gcc_base_ver XCFLAGS enable_static enable_shared @@ -731,6 +732,7 @@ with_pic enable_fast_install with_gnu_ld enable_libtool_lock +with_gcc_major_version_only ' ac_precious_vars='build_alias host_alias @@ -1377,6 +1379,8 @@ Optional Packages: --with-pic try to use only PIC/non-PIC objects [default=use both] --with-gnu-ld assume the C compiler uses GNU ld [default=no] + --with-gcc-major-version-only + use only GCC major number in filesystem paths Some influential environment variables: CC C compiler command @@ -9202,7 +9206,7 @@ _LT_EOF if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' else - export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' + export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' fi aix_use_runtimelinking=no @@ -11230,7 +11234,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11233 "configure" +#line 11237 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11336,7 +11340,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 11339 "configure" +#line 11343 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -11585,6 +11589,21 @@ else multilib_arg= fi +# Determine what GCC version number to use in filesystem paths. + + get_gcc_base_ver="cat" + +# Check whether --with-gcc-major-version-only was given. +if test "${with_gcc_major_version_only+set}" = set; then : + withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then + get_gcc_base_ver="sed -e 's/^\([0-9]*\).*\$\$/\1/'" + fi + +fi + + + + ac_config_files="$ac_config_files Makefile libmpx.spec" ac_config_headers="$ac_config_headers config.h" @@ -12305,7 +12324,6 @@ CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} CC="$CC" CXX="$CXX" GFORTRAN="$GFORTRAN" -GCJ="$GCJ" # The HP-UX ksh and POSIX shell print the target directory to stdout diff --git a/libmpx/configure.ac b/libmpx/configure.ac index 18ba687203..baa882b16b 100644 --- a/libmpx/configure.ac +++ b/libmpx/configure.ac @@ -125,6 +125,9 @@ else multilib_arg= fi +# Determine what GCC version number to use in filesystem paths. +GCC_BASE_VER + AC_CONFIG_FILES([Makefile libmpx.spec]) AC_CONFIG_HEADERS(config.h) AC_CONFIG_FILES(AC_FOREACH([DIR], [mpxrt mpxwrap], [DIR/Makefile ]), diff --git a/libmpx/mpxrt/Makefile.am b/libmpx/mpxrt/Makefile.am index 3280b62a96..41c806f972 100644 --- a/libmpx/mpxrt/Makefile.am +++ b/libmpx/mpxrt/Makefile.am @@ -2,7 +2,7 @@ ACLOCAL_AMFLAGS = -I $(top_srcdir) -I $(top_srcdir)/config if LIBMPX_SUPPORTED # May be used by toolexeclibdir. -gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) +gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) AM_CPPFLAGS = -I$(top_srcdir)/.. AM_CFLAGS = $(XCFLAGS) diff --git a/libmpx/mpxrt/Makefile.in b/libmpx/mpxrt/Makefile.in index 1fdb454f45..4c55d20c13 100644 --- a/libmpx/mpxrt/Makefile.in +++ b/libmpx/mpxrt/Makefile.in @@ -55,7 +55,8 @@ target_triplet = @target@ subdir = mpxrt DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/../config/lead-dot.m4 \ +am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ + $(top_srcdir)/../config/lead-dot.m4 \ $(top_srcdir)/../config/multi.m4 \ $(top_srcdir)/../config/override.m4 \ $(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \ @@ -210,6 +211,7 @@ dvidir = @dvidir@ enable_shared = @enable_shared@ enable_static = @enable_static@ exec_prefix = @exec_prefix@ +get_gcc_base_ver = @get_gcc_base_ver@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ @@ -249,7 +251,7 @@ top_srcdir = @top_srcdir@ ACLOCAL_AMFLAGS = -I $(top_srcdir) -I $(top_srcdir)/config # May be used by toolexeclibdir. -@LIBMPX_SUPPORTED_TRUE@gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) +@LIBMPX_SUPPORTED_TRUE@gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) @LIBMPX_SUPPORTED_TRUE@AM_CPPFLAGS = -I$(top_srcdir)/.. @LIBMPX_SUPPORTED_TRUE@AM_CFLAGS = $(XCFLAGS) @LIBMPX_SUPPORTED_TRUE@toolexeclib_LTLIBRARIES = libmpx.la diff --git a/libmpx/mpxrt/libtool-version b/libmpx/mpxrt/libtool-version index 7d9925549d..736d763e60 100644 --- a/libmpx/mpxrt/libtool-version +++ b/libmpx/mpxrt/libtool-version @@ -3,4 +3,4 @@ # a separate file so that version updates don't involve re-running # automake. # CURRENT:REVISION:AGE -2:0:0 +2:1:0 diff --git a/libmpx/mpxrt/mpxrt-utils.c b/libmpx/mpxrt/mpxrt-utils.c index 057a3553cb..63ee7c6ae6 100644 --- a/libmpx/mpxrt/mpxrt-utils.c +++ b/libmpx/mpxrt/mpxrt-utils.c @@ -60,6 +60,9 @@ #define MPX_RT_MODE "CHKP_RT_MODE" #define MPX_RT_MODE_DEFAULT MPX_RT_COUNT #define MPX_RT_MODE_DEFAULT_STR "count" +#define MPX_RT_STOP_HANDLER "CHKP_RT_STOP_HANDLER" +#define MPX_RT_STOP_HANDLER_DEFAULT MPX_RT_STOP_HANDLER_ABORT +#define MPX_RT_STOP_HANDLER_DEFAULT_STR "abort" #define MPX_RT_HELP "CHKP_RT_HELP" #define MPX_RT_ADDPID "CHKP_RT_ADDPID" #define MPX_RT_BNDPRESERVE "CHKP_RT_BNDPRESERVE" @@ -84,6 +87,7 @@ typedef struct { static int summary; static int add_pid; static mpx_rt_mode_t mode; +static mpx_rt_stop_mode_handler_t stop_handler; static env_var_list_t env_var_list; static verbose_type verbose_val; static FILE *out; @@ -226,6 +230,23 @@ set_mpx_rt_mode (const char *env) } } +static mpx_rt_stop_mode_handler_t +set_mpx_rt_stop_handler (const char *env) +{ + if (env == 0) + return MPX_RT_STOP_HANDLER_DEFAULT; + else if (strcmp (env, "abort") == 0) + return MPX_RT_STOP_HANDLER_ABORT; + else if (strcmp (env, "exit") == 0) + return MPX_RT_STOP_HANDLER_EXIT; + { + __mpxrt_print (VERB_ERROR, "Illegal value '%s' for %s. Legal values are" + "[abort | exit]\nUsing default value %s\n", + env, MPX_RT_STOP_HANDLER, MPX_RT_STOP_HANDLER_DEFAULT); + return MPX_RT_STOP_HANDLER_DEFAULT; + } +} + static void print_help (void) { @@ -244,6 +265,11 @@ print_help (void) fprintf (out, "%s \t\t set MPX runtime behavior on #BR exception." " [stop | count]\n" "\t\t\t [default: %s]\n", MPX_RT_MODE, MPX_RT_MODE_DEFAULT_STR); + fprintf (out, "%s \t set the handler function MPX runtime will call\n" + "\t\t\t on #BR exception when %s is set to \'stop\'." + " [abort | exit]\n" + "\t\t\t [default: %s]\n", MPX_RT_STOP_HANDLER, MPX_RT_MODE, + MPX_RT_STOP_HANDLER_DEFAULT_STR); fprintf (out, "%s \t\t generate out,err file for each process.\n" "\t\t\t generated file will be MPX_RT_{OUT,ERR}_FILE.pid\n" "\t\t\t [default: no]\n", MPX_RT_ADDPID); @@ -357,6 +383,10 @@ __mpxrt_init_env_vars (int* bndpreserve) env_var_list_add (MPX_RT_MODE, env); mode = set_mpx_rt_mode (env); + env = secure_getenv (MPX_RT_STOP_HANDLER); + env_var_list_add (MPX_RT_STOP_HANDLER, env); + stop_handler = set_mpx_rt_stop_handler (env); + env = secure_getenv (MPX_RT_BNDPRESERVE); env_var_list_add (MPX_RT_BNDPRESERVE, env); validate_bndpreserve (env, bndpreserve); @@ -487,6 +517,22 @@ __mpxrt_mode (void) return mode; } +mpx_rt_mode_t +__mpxrt_stop_handler (void) +{ + return stop_handler; +} + +void __attribute__ ((noreturn)) +__mpxrt_stop (void) +{ + if (__mpxrt_stop_handler () == MPX_RT_STOP_HANDLER_ABORT) + abort (); + else if (__mpxrt_stop_handler () == MPX_RT_STOP_HANDLER_EXIT) + exit (255); + __builtin_unreachable (); +} + void __mpxrt_print_summary (uint64_t num_brs, uint64_t l1_size) { diff --git a/libmpx/mpxrt/mpxrt-utils.h b/libmpx/mpxrt/mpxrt-utils.h index d62937df7d..a6f4f1b3ca 100644 --- a/libmpx/mpxrt/mpxrt-utils.h +++ b/libmpx/mpxrt/mpxrt-utils.h @@ -54,6 +54,11 @@ typedef enum { MPX_RT_STOP } mpx_rt_mode_t; +typedef enum { + MPX_RT_STOP_HANDLER_ABORT, + MPX_RT_STOP_HANDLER_EXIT +} mpx_rt_stop_mode_handler_t; + void __mpxrt_init_env_vars (int* bndpreserve); void __mpxrt_write_uint (verbose_type vt, uint64_t val, unsigned base); void __mpxrt_write (verbose_type vt, const char* str); @@ -61,5 +66,6 @@ void __mpxrt_print (verbose_type vt, const char* frmt, ...); mpx_rt_mode_t __mpxrt_mode (void); void __mpxrt_utils_free (void); void __mpxrt_print_summary (uint64_t num_brs, uint64_t l1_size); +void __mpxrt_stop (void) __attribute__ ((noreturn)); #endif /* MPXRT_UTILS_H */ diff --git a/libmpx/mpxrt/mpxrt.c b/libmpx/mpxrt/mpxrt.c index b52906bb9e..76d11f71fd 100644 --- a/libmpx/mpxrt/mpxrt.c +++ b/libmpx/mpxrt/mpxrt.c @@ -252,7 +252,7 @@ handler (int sig __attribute__ ((unused)), uctxt->uc_mcontext.gregs[REG_IP_IDX] = (greg_t)get_next_inst_ip ((uint8_t *)ip); if (__mpxrt_mode () == MPX_RT_STOP) - exit (255); + __mpxrt_stop (); return; default: @@ -269,7 +269,7 @@ handler (int sig __attribute__ ((unused)), __mpxrt_write (VERB_ERROR, ", ip = 0x"); __mpxrt_write_uint (VERB_ERROR, ip, 16); __mpxrt_write (VERB_ERROR, "\n"); - exit (255); + __mpxrt_stop (); } else { @@ -278,7 +278,7 @@ handler (int sig __attribute__ ((unused)), __mpxrt_write (VERB_ERROR, "! at 0x"); __mpxrt_write_uint (VERB_ERROR, ip, 16); __mpxrt_write (VERB_ERROR, "\n"); - exit (255); + __mpxrt_stop (); } } diff --git a/libmpx/mpxwrap/Makefile.am b/libmpx/mpxwrap/Makefile.am index f24cdc835d..d9e84ae662 100644 --- a/libmpx/mpxwrap/Makefile.am +++ b/libmpx/mpxwrap/Makefile.am @@ -2,7 +2,7 @@ ALCLOCAL_AMFLAGS = -I .. -I ../config AM_CPPFLAGS = -I $(top_srcdir) # May be used by toolexeclibdir. -gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) +gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) libmpxwrappers_la_CFLAGS = -fcheck-pointer-bounds -mmpx -fno-chkp-check-read \ -fno-chkp-check-write -fno-chkp-use-wrappers -fPIC diff --git a/libmpx/mpxwrap/Makefile.in b/libmpx/mpxwrap/Makefile.in index df1a3347ba..1b929b9f59 100644 --- a/libmpx/mpxwrap/Makefile.in +++ b/libmpx/mpxwrap/Makefile.in @@ -55,7 +55,8 @@ target_triplet = @target@ subdir = mpxwrap DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -am__aclocal_m4_deps = $(top_srcdir)/../config/lead-dot.m4 \ +am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ + $(top_srcdir)/../config/lead-dot.m4 \ $(top_srcdir)/../config/multi.m4 \ $(top_srcdir)/../config/override.m4 \ $(top_srcdir)/../ltoptions.m4 $(top_srcdir)/../ltsugar.m4 \ @@ -209,6 +210,7 @@ dvidir = @dvidir@ enable_shared = @enable_shared@ enable_static = @enable_static@ exec_prefix = @exec_prefix@ +get_gcc_base_ver = @get_gcc_base_ver@ host = @host@ host_alias = @host_alias@ host_cpu = @host_cpu@ @@ -249,7 +251,7 @@ ALCLOCAL_AMFLAGS = -I .. -I ../config AM_CPPFLAGS = -I $(top_srcdir) # May be used by toolexeclibdir. -gcc_version := $(shell cat $(top_srcdir)/../gcc/BASE-VER) +gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) libmpxwrappers_la_CFLAGS = -fcheck-pointer-bounds -mmpx -fno-chkp-check-read \ -fno-chkp-check-write -fno-chkp-use-wrappers -fPIC diff --git a/libmpx/mpxwrap/libtool-version b/libmpx/mpxwrap/libtool-version index fab30fb091..e241350d23 100644 --- a/libmpx/mpxwrap/libtool-version +++ b/libmpx/mpxwrap/libtool-version @@ -3,4 +3,4 @@ # a separate file so that version updates don't involve re-running # automake. # CURRENT:REVISION:AGE -2:0:0 +2:1:0 diff --git a/libmpx/mpxwrap/mpx_wrappers.c b/libmpx/mpxwrap/mpx_wrappers.c index 171a780311..aea0346b93 100644 --- a/libmpx/mpxwrap/mpx_wrappers.c +++ b/libmpx/mpxwrap/mpx_wrappers.c @@ -30,14 +30,20 @@ #include <assert.h> #include "mpxrt/mpxrt.h" -void * -__mpx_wrapper_malloc (size_t size) +/* Since internal MPX wrapper calls must avoid PLT which will clear bound + registers, we make them static with an external alias. */ +#define EXTERN_ALIAS(f) \ + __typeof (f) __##f __attribute__((alias(#f))); + +static void * +mpx_wrapper_malloc (size_t size) { void *p = (void *)malloc (size); if (!p) return __bnd_null_ptr_bounds (p); return __bnd_set_ptr_bounds (p, size); } +EXTERN_ALIAS (mpx_wrapper_malloc) void * __mpx_wrapper_mmap (void *addr, size_t length, int prot, int flags, @@ -52,7 +58,7 @@ void * __mpx_wrapper_realloc (void *ptr, size_t n) { if (!ptr) - return __mpx_wrapper_malloc (n); + return mpx_wrapper_malloc (n); /* We don't kwnow how much data is copied by realloc and therefore may check only lower bounds. */ @@ -74,8 +80,8 @@ __mpx_wrapper_calloc (size_t n_elements, size_t element_size) return __bnd_set_ptr_bounds (p, n_elements * element_size); } -void * -__mpx_wrapper_memset (void *dstpp, int c, size_t len) +static void * +mpx_wrapper_memset (void *dstpp, int c, size_t len) { if (len > 0) { @@ -85,10 +91,12 @@ __mpx_wrapper_memset (void *dstpp, int c, size_t len) return dstpp; } +EXTERN_ALIAS (mpx_wrapper_memset) + void __mpx_wrapper_bzero (void *dst, size_t len) { - __mpx_wrapper_memset (dst, 0, len); + mpx_wrapper_memset (dst, 0, len); } /* The mpx_pointer type is used for getting bits @@ -484,8 +492,8 @@ move_bounds (void *dst, const void *src, size_t n) return; } -void * -__mpx_wrapper_memmove (void *dst, const void *src, size_t n) +static void * +mpx_wrapper_memmove (void *dst, const void *src, size_t n) { if (n == 0) return dst; @@ -513,17 +521,20 @@ __mpx_wrapper_memmove (void *dst, const void *src, size_t n) return dst; } +EXTERN_ALIAS (mpx_wrapper_memmove) -void * -__mpx_wrapper_memcpy (void *dst, const void *src, size_t n) +static void * +mpx_wrapper_memcpy (void *dst, const void *src, size_t n) { - return __mpx_wrapper_memmove (dst, src, n); + return mpx_wrapper_memmove (dst, src, n); } +EXTERN_ALIAS (mpx_wrapper_memcpy) + void * __mpx_wrapper_mempcpy (void *dst, const void *src, size_t n) { - return (char *)__mpx_wrapper_memcpy (dst, src, n) + n; + return (char *)mpx_wrapper_memcpy (dst, src, n) + n; } char * |