From 7de7dcbaec80d4c943375fc43361b4dd34bba549 Mon Sep 17 00:00:00 2001 From: Sandra Loosemore Date: Thu, 21 Jan 2016 01:03:42 +0000 Subject: 2016-01-20 Sandra Loosemore gcc/ * doc/invoke.texi (Instrumentation Options): Clarify -mmpx linking requirements. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@232648 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 5 +++++ gcc/doc/invoke.texi | 22 +++++++++++----------- 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 724681d9530..82cb6d610d7 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +2016-01-20 Sandra Loosemore + + * doc/invoke.texi (Instrumentation Options): Clarify -mmpx linking + requirements. + 2016-01-20 Sandra Loosemore * common.opt (feliminate-dwarf2-dups): Replace references to diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index c00746fdab4..d2819753de2 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -9923,22 +9923,22 @@ is instrumented with checks of the pointer used for memory access against bounds associated with that pointer. Currently there -is only an implementation for Intel MPX available, thus x86 target +is only an implementation for Intel MPX available, thus x86 GNU/Linux target and @option{-mmpx} are required to enable this feature. MPX-based instrumentation requires a runtime library to enable MPX in hardware and handle bounds violation signals. By default when @option{-fcheck-pointer-bounds} and @option{-mmpx} options are used to link a program, the GCC driver -links against the @file{libmpx} runtime library and @file{libmpxwrappers} -library. It also passes '-z bndplt' to a linker in case it supports this -option (which is checked on libmpx configuration). Note that old versions -of linker may ignore option. Gold linker doesn't support '-z bndplt' -option. With no '-z bndplt' support in linker all calls to dynamic libraries -lose passed bounds reducing overall protection level. It's highly -recommended to use linker with '-z bndplt' support. In case such linker -is not available it is adviced to always use @option{-static-libmpxwrappers} -for better protection level or use @option{-static} to completely avoid -external calls to dynamic libraries. MPX-based instrumentation +links against the @file{libmpx} and @file{libmpxwrappers} libraries. +Bounds checking on calls to dynamic libraries requires a linker +with @option{-z bndplt} support; if GCC was configured with a linker +without support for this option (including the Gold linker and older +versions of ld), a warning is given if you link with @option{-mmpx} +without also specifying @option{-static}, since the overall effectiveness +of the bounds checking protection is reduced. +See also @option{-static-libmpxwrappers}. + +MPX-based instrumentation may be used for debugging and also may be included in production code to increase program security. Depending on usage, you may have different requirements for the runtime library. The current version -- cgit v1.2.3