From c2be82058fb40f3ae891c68d185ff53e07f14f45 Mon Sep 17 00:00:00 2001 From: Caroline Tice Date: Fri, 12 Mar 2021 07:34:36 -0800 Subject: [PATCH] libstdc++-v3: Update VTV vars for libtool link commands [PR99172] This fixes PR 99172 Currently when GCC is configured with --enable-vtable-verify, the libstdc++-v3 Makefiles add "-fvtable-verify=std -Wl,-u_vtable_map_vars_start,-u_vtable_map_vars_end" to libtool link commands. The "-fvtable-verify=std" piece causes alternate versions of libtool (such as slibtool) to fail, unable to find "-lvtv" (GNU libtool just removes that piece). This patch updates the libstdc++-v3 Makefiles to not pass "-fvtable-verify=std" to the libtool link commands. --- libstdc++-v3/ChangeLog | 9 +++++++++ libstdc++-v3/src/Makefile.am | 4 +++- libstdc++-v3/src/Makefile.in | 3 ++- 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 6834a90ff9e..296dc680675 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,3 +1,12 @@ +2021-03-15 Caroline Tice + + PR libstdc++/99172 + * src/Makefile.am (AM_CXXFLAGS_PRE, AM_CXXFLAGS): Add + AM_CXXFLAGS_PRE with the old definition of AM_CXXFLAGS; make + AM_CXXFLAGS to be AM_CXXFLAGS_PRE with '-fvtable-verify=std' + filtered out. + * src/Makefile.in: Regenerate. + 2021-03-11 Patrick Palka * src/c++17/floating_to_chars.cc: Simplify the file as if diff --git a/libstdc++-v3/src/Makefile.am b/libstdc++-v3/src/Makefile.am index 78e788cccb3..16f4cc6eff4 100644 --- a/libstdc++-v3/src/Makefile.am +++ b/libstdc++-v3/src/Makefile.am @@ -214,12 +214,14 @@ compatibility-condvar.o: compatibility-condvar.cc # set this option because CONFIG_CXXFLAGS has to be after # OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden # as the occasion calls for it. -AM_CXXFLAGS = \ +AM_CXXFLAGS_PRE = \ -std=gnu++98 \ $(glibcxx_compiler_pic_flag) \ $(XTEMPLATE_FLAGS) $(VTV_CXXFLAGS) \ $(WARN_CXXFLAGS) $(OPTIMIZE_CXXFLAGS) $(CONFIG_CXXFLAGS) +AM_CXXFLAGS = $(filter-out -fvtable-verify=std,$(AM_CXXFLAGS_PRE)) + # Libtool notes # 1) In general, libtool expects an argument such as `--tag=CXX' when diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in index 684b7aee16b..4df5c829a7f 100644 --- a/libstdc++-v3/src/Makefile.in +++ b/libstdc++-v3/src/Makefile.in @@ -578,12 +578,13 @@ libstdc___la_LINK = $(CXXLINK) $(libstdc___la_LDFLAGS) $(lt_host_flags) # set this option because CONFIG_CXXFLAGS has to be after # OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden # as the occasion calls for it. -AM_CXXFLAGS = \ +AM_CXXFLAGS_PRE = \ -std=gnu++98 \ $(glibcxx_compiler_pic_flag) \ $(XTEMPLATE_FLAGS) $(VTV_CXXFLAGS) \ $(WARN_CXXFLAGS) $(OPTIMIZE_CXXFLAGS) $(CONFIG_CXXFLAGS) +AM_CXXFLAGS = $(filter-out -fvtable-verify=std,$(AM_CXXFLAGS_PRE)) # Libtool notes