Ensure libgcc_s unwinder is always used on 64-bit Solaris 10+/x86 (PR target/59788)
gcc: PR target/59788 * config/sol2.h (LINK_LIBGCC_MAPFILE_SPEC): Define. (LINK_SPEC): Use it for -shared, -shared-libgcc. libgcc: PR target/59788 * config/t-slibgcc-sld (libgcc-unwind.map): New target. (install-libgcc-unwind-map-forbuild): New target. (all): Depend on install-libgcc-unwind-map-forbuild. (install-libgcc-unwind-map): New target. (install): Depend on install-libgcc-unwind-map. gcc/testsuite: PR target/59788 * g++.dg/eh/unwind-direct.C: New test. toplevel: PR target/59788 * ltmain.sh (opt_duplicate_compiler_generated_deps): Enable on *solaris2*. From-SVN: r207454
This commit is contained in:
parent
f8e162b710
commit
91da048112
|
@ -1,3 +1,9 @@
|
||||||
|
2014-02-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||||
|
|
||||||
|
PR target/59788
|
||||||
|
* ltmain.sh (opt_duplicate_compiler_generated_deps): Enable on
|
||||||
|
*solaris2*.
|
||||||
|
|
||||||
2014-01-21 John David Anglin <danglin@gcc.gnu.org>
|
2014-01-21 John David Anglin <danglin@gcc.gnu.org>
|
||||||
|
|
||||||
* MAINTAINERS: Update my email address.
|
* MAINTAINERS: Update my email address.
|
||||||
|
|
|
@ -1,3 +1,9 @@
|
||||||
|
2014-02-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||||
|
|
||||||
|
PR target/59788
|
||||||
|
* config/sol2.h (LINK_LIBGCC_MAPFILE_SPEC): Define.
|
||||||
|
(LINK_SPEC): Use it for -shared, -shared-libgcc.
|
||||||
|
|
||||||
2014-02-03 Jan Hubicka <hubicka@ucw.cz>
|
2014-02-03 Jan Hubicka <hubicka@ucw.cz>
|
||||||
|
|
||||||
PR ipa/59882
|
PR ipa/59882
|
||||||
|
|
|
@ -174,12 +174,21 @@ along with GCC; see the file COPYING3. If not see
|
||||||
#define RDYNAMIC_SPEC "--export-dynamic"
|
#define RDYNAMIC_SPEC "--export-dynamic"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef USE_GLD
|
||||||
|
/* With Sun ld, use mapfile to enforce direct binding to libgcc_s unwinder. */
|
||||||
|
#define LINK_LIBGCC_MAPFILE_SPEC \
|
||||||
|
"%{shared|shared-libgcc:-M %slibgcc-unwind.map}"
|
||||||
|
#else
|
||||||
|
/* GNU ld doesn't support direct binding. */
|
||||||
|
#define LINK_LIBGCC_MAPFILE_SPEC ""
|
||||||
|
#endif
|
||||||
|
|
||||||
#undef LINK_SPEC
|
#undef LINK_SPEC
|
||||||
#define LINK_SPEC \
|
#define LINK_SPEC \
|
||||||
"%{h*} %{v:-V} \
|
"%{h*} %{v:-V} \
|
||||||
%{!shared:%{!static:%{rdynamic: " RDYNAMIC_SPEC "}}} \
|
%{!shared:%{!static:%{rdynamic: " RDYNAMIC_SPEC "}}} \
|
||||||
%{static:-dn -Bstatic} \
|
%{static:-dn -Bstatic} \
|
||||||
%{shared:-G -dy %{!mimpure-text:-z text}} \
|
%{shared:-G -dy %{!mimpure-text:-z text}} " LINK_LIBGCC_MAPFILE_SPEC " \
|
||||||
%{symbolic:-Bsymbolic -G -dy -z text} \
|
%{symbolic:-Bsymbolic -G -dy -z text} \
|
||||||
%(link_arch) \
|
%(link_arch) \
|
||||||
%{Qy:} %{!Qn:-Qy}"
|
%{Qy:} %{!Qn:-Qy}"
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2014-02-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||||
|
|
||||||
|
PR target/59788
|
||||||
|
* g++.dg/eh/unwind-direct.C: New test.
|
||||||
|
|
||||||
2014-02-04 Uros Bizjak <ubizjak@gmail.com>
|
2014-02-04 Uros Bizjak <ubizjak@gmail.com>
|
||||||
|
|
||||||
* lib/tsan-dg.exp (tsan_init): Set trivial testcase
|
* lib/tsan-dg.exp (tsan_init): Set trivial testcase
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
// PR target/59788
|
||||||
|
// { dg-do run { target { *-*-solaris2* && { ! gld } } } }
|
||||||
|
// { dg-options "-Wl,-Bdirect" }
|
||||||
|
|
||||||
|
#include <stdexcept>
|
||||||
|
|
||||||
|
int
|
||||||
|
main(void)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{ throw std::runtime_error( "Catch me if you can!"); }
|
||||||
|
catch(...)
|
||||||
|
{ return 0; }
|
||||||
|
return 1;
|
||||||
|
}
|
|
@ -1,3 +1,12 @@
|
||||||
|
2014-02-04 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE>
|
||||||
|
|
||||||
|
PR target/59788
|
||||||
|
* config/t-slibgcc-sld (libgcc-unwind.map): New target.
|
||||||
|
(install-libgcc-unwind-map-forbuild): New target.
|
||||||
|
(all): Depend on install-libgcc-unwind-map-forbuild.
|
||||||
|
(install-libgcc-unwind-map): New target.
|
||||||
|
(install): Depend on install-libgcc-unwind-map.
|
||||||
|
|
||||||
2014-02-02 Sandra Loosemore <sandra@codesourcery.com>
|
2014-02-02 Sandra Loosemore <sandra@codesourcery.com>
|
||||||
|
|
||||||
* config/nios2/crti.S (_init): Initialize GOT pointer from
|
* config/nios2/crti.S (_init): Initialize GOT pointer from
|
||||||
|
|
|
@ -3,3 +3,26 @@
|
||||||
|
|
||||||
SHLIB_LDFLAGS = -Wl,-h,$(SHLIB_SONAME) -Wl,-z,text -Wl,-z,defs \
|
SHLIB_LDFLAGS = -Wl,-h,$(SHLIB_SONAME) -Wl,-z,text -Wl,-z,defs \
|
||||||
-Wl,-M,$(SHLIB_MAP)
|
-Wl,-M,$(SHLIB_MAP)
|
||||||
|
|
||||||
|
# Linker mapfile to enforce direct binding to libgcc_s unwinder
|
||||||
|
# (PR target/59788).
|
||||||
|
libgcc-unwind.map: libgcc-std.ver
|
||||||
|
@(echo "{"; \
|
||||||
|
for f in `grep _Unwind_ $< | sort`; do \
|
||||||
|
echo " $$f = EXTERN DIRECT;"; \
|
||||||
|
done; \
|
||||||
|
echo "};" ) > $@
|
||||||
|
|
||||||
|
# Copy libgcc-unwind.map to the place where gcc will look for it at build-time.
|
||||||
|
install-libgcc-unwind-map-forbuild: libgcc-unwind.map
|
||||||
|
dest=$(gcc_objdir)/tmp$$$$-$<; \
|
||||||
|
cp $< $$dest; \
|
||||||
|
chmod a+r $$dest; \
|
||||||
|
sh $(srcdir)/../move-if-change $$dest $(gcc_objdir)/$<
|
||||||
|
|
||||||
|
all: install-libgcc-unwind-map-forbuild
|
||||||
|
|
||||||
|
install-libgcc-unwind-map: libgcc-unwind.map
|
||||||
|
$(INSTALL_DATA) $< $(DESTDIR)$(slibdir)
|
||||||
|
|
||||||
|
install: install-libgcc-unwind-map
|
||||||
|
|
|
@ -976,7 +976,7 @@ func_enable_tag ()
|
||||||
|
|
||||||
|
|
||||||
case $host in
|
case $host in
|
||||||
*cygwin* | *mingw* | *pw32* | *cegcc*)
|
*cygwin* | *mingw* | *pw32* | *cegcc* | *solaris2* )
|
||||||
# don't eliminate duplications in $postdeps and $predeps
|
# don't eliminate duplications in $postdeps and $predeps
|
||||||
opt_duplicate_compiler_generated_deps=:
|
opt_duplicate_compiler_generated_deps=:
|
||||||
;;
|
;;
|
||||||
|
|
Loading…
Reference in New Issue