This patch builds code which throws exceptions with -fno-omit-frame-pointer,
so frame-based unwinder can unwind through it.

To be applied only to google/main branch.

Tested by buildit bootstrap, verified in the build log that
-fno-omit-frame-pointer is applied to functexcept, eh_throw and eh_terminate.


2011-04-04  Paul Pluzhnikov  <ppluzhni...@google.com>

        * libstdc++-v3/src/Makefile.am  (revision 171950): Add
        -fno-omit-frame-pointer to functexcept.
        * libstdc++-v3/libsupc++/Makefile.am    (revision 171950): Add
        -fno-omit-frame-pointer to eh_throw and eh_terminate.
        * libstdc++-v3/src/Makefile.in  (revision 171950): Regenerate.
        * libstdc++-v3/libsupc++/Makefile.in    (revision 171950): Regenerate.

Index: libstdc++-v3/src/Makefile.am
===================================================================
--- libstdc++-v3/src/Makefile.am        (revision 171950)
+++ libstdc++-v3/src/Makefile.am        (working copy)
@@ -395,7 +395,8 @@
        $(XTEMPLATE_FLAGS) \
        $(WARN_CXXFLAGS) \
        $(OPTIMIZE_CXXFLAGS) \
-       $(CONFIG_CXXFLAGS)
+       $(CONFIG_CXXFLAGS) \
+       $($(@)_no_omit_frame_pointer)
 
 
 # libstdc++ libtool notes
@@ -469,3 +470,6 @@
 install_debug:
        (cd ${debugdir} && $(MAKE) \
        toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install)
+
+# Google-specific pessimization
+functexcept.lo_no_omit_frame_pointer = -fno-omit-frame-pointer
Index: libstdc++-v3/libsupc++/Makefile.am
===================================================================
--- libstdc++-v3/libsupc++/Makefile.am  (revision 171950)
+++ libstdc++-v3/libsupc++/Makefile.am  (working copy)
@@ -106,7 +106,8 @@
        $(LIBSUPCXX_PICFLAGS) \
        $(WARN_CXXFLAGS) \
        $(OPTIMIZE_CXXFLAGS) \
-       $(CONFIG_CXXFLAGS)
+       $(CONFIG_CXXFLAGS) \
+       $($(@)_no_omit_frame_pointer)
 
 AM_MAKEFLAGS = \
        "gxx_include_dir=$(gxx_include_dir)"
@@ -211,3 +212,7 @@
          q=`echo $$p | sed -e 's,.*/,,'`; \
          rm -f $(DESTDIR)$(bitsdir)/$$q; \
        done
+
+# Google-specific pessimization
+eh_terminate.lo_no_omit_frame_pointer = -fno-omit-frame-pointer
+eh_throw.lo_no_omit_frame_pointer = -fno-omit-frame-pointer
Index: libstdc++-v3/src/Makefile.in
===================================================================
--- libstdc++-v3/src/Makefile.in        (revision 171950)
+++ libstdc++-v3/src/Makefile.in        (working copy)
@@ -484,7 +484,8 @@
        $(XTEMPLATE_FLAGS) \
        $(WARN_CXXFLAGS) \
        $(OPTIMIZE_CXXFLAGS) \
-       $(CONFIG_CXXFLAGS)
+       $(CONFIG_CXXFLAGS) \
+       $($(@)_no_omit_frame_pointer)
 
 
 # libstdc++ libtool notes
@@ -522,6 +523,9 @@
          $(CXX) $(OPT_LDFLAGS) $(SECTION_LDFLAGS) $(AM_CXXFLAGS) $(LTLDFLAGS) 
-o $@
 
 debugdir = debug
+
+# Google-specific pessimization
+functexcept.lo_no_omit_frame_pointer = -fno-omit-frame-pointer
 all: all-am
 
 .SUFFIXES:
Index: libstdc++-v3/libsupc++/Makefile.in
===================================================================
--- libstdc++-v3/libsupc++/Makefile.in  (revision 171950)
+++ libstdc++-v3/libsupc++/Makefile.in  (working copy)
@@ -412,7 +412,8 @@
        $(LIBSUPCXX_PICFLAGS) \
        $(WARN_CXXFLAGS) \
        $(OPTIMIZE_CXXFLAGS) \
-       $(CONFIG_CXXFLAGS)
+       $(CONFIG_CXXFLAGS) \
+       $($(@)_no_omit_frame_pointer)
 
 AM_MAKEFLAGS = \
        "gxx_include_dir=$(gxx_include_dir)"
@@ -476,6 +477,10 @@
 # prepending each of $(*_HEADERS) with VPATH below.
 stddir = $(gxx_include_dir)
 bitsdir = $(gxx_include_dir)/bits
+
+# Google-specific pessimization
+eh_terminate.lo_no_omit_frame_pointer = -fno-omit-frame-pointer
+eh_throw.lo_no_omit_frame_pointer = -fno-omit-frame-pointer
 all: all-am
 
 .SUFFIXES:

--
This patch is available for review at http://codereview.appspot.com/4348050

Reply via email to