summaryrefslogtreecommitdiff
path: root/libmpx
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@lorry>2017-05-02 14:43:35 +0000
committerLorry Tar Creator <lorry-tar-importer@lorry>2017-05-02 14:43:35 +0000
commit34efdaf078b01a7387007c4e6bde6db86384c4b7 (patch)
treed503eaf41d085669d1481bb46ec038bc866fece6 /libmpx
parentf733cf303bcdc952c92b81dd62199a40a1f555ec (diff)
downloadgcc-tarball-master.tar.gz
gcc-7.1.0gcc-7.1.0
Diffstat (limited to 'libmpx')
-rw-r--r--libmpx/ChangeLog67
-rw-r--r--libmpx/Makefile.am2
-rw-r--r--libmpx/Makefile.in6
-rw-r--r--libmpx/aclocal.m41
-rw-r--r--libmpx/configure26
-rw-r--r--libmpx/configure.ac3
-rw-r--r--libmpx/mpxrt/Makefile.am2
-rw-r--r--libmpx/mpxrt/Makefile.in6
-rw-r--r--libmpx/mpxrt/libtool-version2
-rw-r--r--libmpx/mpxrt/mpxrt-utils.c46
-rw-r--r--libmpx/mpxrt/mpxrt-utils.h6
-rw-r--r--libmpx/mpxrt/mpxrt.c6
-rw-r--r--libmpx/mpxwrap/Makefile.am2
-rw-r--r--libmpx/mpxwrap/Makefile.in6
-rw-r--r--libmpx/mpxwrap/libtool-version2
-rw-r--r--libmpx/mpxwrap/mpx_wrappers.c35
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 *