Commit da34ade5 by Jason Merrill Committed by Jason Merrill

re PR c++/60731 (dynamic library not getting reinitialized on multiple calls to dlopen())

	PR c++/60731
	* common.opt (-fno-gnu-unique): Add.
	* config/elfos.h (USE_GNU_UNIQUE_OBJECT): Check it.

From-SVN: r209186
parent 67649cb8
2014-04-07 Jason Merrill <jason@redhat.com>
PR c++/60731
* common.opt (-fno-gnu-unique): Add.
* config/elfos.h (USE_GNU_UNIQUE_OBJECT): Check it.
2014-04-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com> 2014-04-07 Kyrylo Tkachov <kyrylo.tkachov@arm.com>
* haifa-sched.c: Fix outdated function reference and minor * haifa-sched.c: Fix outdated function reference and minor
......
...@@ -1267,6 +1267,10 @@ fgnu-tm ...@@ -1267,6 +1267,10 @@ fgnu-tm
Common Report Var(flag_tm) Common Report Var(flag_tm)
Enable support for GNU transactional memory Enable support for GNU transactional memory
fgnu-unique
Common Report Var(flag_gnu_unique) Init(1)
Use STB_GNU_UNIQUE if supported by the assembler
floop-flatten floop-flatten
Common Ignore Common Ignore
Does nothing. Preserved for backward compatibility. Does nothing. Preserved for backward compatibility.
......
...@@ -287,7 +287,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ...@@ -287,7 +287,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
/* Write the extra assembler code needed to declare an object properly. */ /* Write the extra assembler code needed to declare an object properly. */
#ifdef HAVE_GAS_GNU_UNIQUE_OBJECT #ifdef HAVE_GAS_GNU_UNIQUE_OBJECT
#define USE_GNU_UNIQUE_OBJECT 1 #define USE_GNU_UNIQUE_OBJECT flag_gnu_unique
#else #else
#define USE_GNU_UNIQUE_OBJECT 0 #define USE_GNU_UNIQUE_OBJECT 0
#endif #endif
......
...@@ -1070,6 +1070,7 @@ See S/390 and zSeries Options. ...@@ -1070,6 +1070,7 @@ See S/390 and zSeries Options.
-ffixed-@var{reg} -fexceptions @gol -ffixed-@var{reg} -fexceptions @gol
-fnon-call-exceptions -fdelete-dead-exceptions -funwind-tables @gol -fnon-call-exceptions -fdelete-dead-exceptions -funwind-tables @gol
-fasynchronous-unwind-tables @gol -fasynchronous-unwind-tables @gol
-fno-gnu-unique @gol
-finhibit-size-directive -finstrument-functions @gol -finhibit-size-directive -finstrument-functions @gol
-finstrument-functions-exclude-function-list=@var{sym},@var{sym},@dots{} @gol -finstrument-functions-exclude-function-list=@var{sym},@var{sym},@dots{} @gol
-finstrument-functions-exclude-file-list=@var{file},@var{file},@dots{} @gol -finstrument-functions-exclude-file-list=@var{file},@var{file},@dots{} @gol
...@@ -22013,6 +22014,20 @@ Generate unwind table in DWARF 2 format, if supported by target machine. The ...@@ -22013,6 +22014,20 @@ Generate unwind table in DWARF 2 format, if supported by target machine. The
table is exact at each instruction boundary, so it can be used for stack table is exact at each instruction boundary, so it can be used for stack
unwinding from asynchronous events (such as debugger or garbage collector). unwinding from asynchronous events (such as debugger or garbage collector).
@item -fno-gnu-unique
@opindex fno-gnu-unique
On systems with recent GNU assembler and C library, the C++ compiler
uses the @code{STB_GNU_UNIQUE} binding to make sure that definitions
of template static data members and static local variables in inline
functions are unique even in the presence of @code{RTLD_LOCAL}; this
is necessary to avoid problems with a library used by two different
@code{RTLD_LOCAL} plugins depending on a definition in one of them and
therefore disagreeing with the other one about the binding of the
symbol. But this causes @code{dlclose} to be ignored for affected
DSOs; if your program relies on reinitialization of a DSO via
@code{dlclose} and @code{dlopen}, you can use
@option{-fno-gnu-unique}.
@item -fpcc-struct-return @item -fpcc-struct-return
@opindex fpcc-struct-return @opindex fpcc-struct-return
Return ``short'' @code{struct} and @code{union} values in memory like Return ``short'' @code{struct} and @code{union} values in memory like
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment