* [committed] libstdc++: Fix libbacktrace build files
@ 2022-01-19 14:59 Jonathan Wakely
2022-01-20 12:30 ` Jonathan Wakely
0 siblings, 1 reply; 2+ messages in thread
From: Jonathan Wakely @ 2022-01-19 14:59 UTC (permalink / raw)
To: libstdc++, gcc-patches
Tested x86_64-linux, pushed to trunk.
This makes it possible to combine --enable-libstdcxx-debug with
--enable-libstdcxx-backtrace, by adding a rule to src/Makefile to copy
the backtrace-supported.h header into the src/debug/libbacktrace
directory.
Add libbacktrace path to testsuite flags so the tests can link without
having the library installed.
Also fix some warnings when running automake for the libbacktrace
makefile.
Use a per-library CPPFLAGS variable to fix:
src/libbacktrace/Makefile.am:38: warning: AM_CPPFLAGS multiply defined in condition TRUE ...
fragment.am:43: ... 'AM_CPPFLAGS' previously defined here
src/libbacktrace/Makefile.am:32: 'fragment.am' included from here
Create symlinks to the libbacktrace sources to fix:
src/libbacktrace/Makefile.am:55: warning: source file '../../../libbacktrace/atomic.c' is in a subdirectory,
src/libbacktrace/Makefile.am:55: but option 'subdir-objects' is disabled
libstdc++-v3/ChangeLog:
* scripts/testsuite_flags.in: Add src/libbacktrace/.libs to
linker search paths.
* src/Makefile.am: Fix src/debug/libbacktrace build.
* src/Makefile.in: Regenerate.
* src/libbacktrace/Makefile.am: Use per-library CPPFLAGS
variable. Use symlinks for the source files.
* src/libbacktrace/Makefile.in: Regenerate.
---
libstdc++-v3/scripts/testsuite_flags.in | 3 +-
libstdc++-v3/src/Makefile.am | 12 +-
libstdc++-v3/src/Makefile.in | 9 +-
libstdc++-v3/src/libbacktrace/Makefile.am | 56 ++++++----
libstdc++-v3/src/libbacktrace/Makefile.in | 128 +++++++++++++---------
5 files changed, 132 insertions(+), 76 deletions(-)
diff --git a/libstdc++-v3/scripts/testsuite_flags.in b/libstdc++-v3/scripts/testsuite_flags.in
index cf7f0f7411e..40dd3d3465e 100755
--- a/libstdc++-v3/scripts/testsuite_flags.in
+++ b/libstdc++-v3/scripts/testsuite_flags.in
@@ -78,7 +78,8 @@ case ${query} in
;;
--cxxldflags)
SECTIONLDFLAGS="@SECTION_LDFLAGS@ @LIBICONV@
- -L${BUILD_DIR}/src/filesystem/.libs"
+ -L${BUILD_DIR}/src/filesystem/.libs
+ -L${BUILD_DIR}/src/libbacktrace/.libs"
echo ${SECTIONLDFLAGS}
;;
*)
diff --git a/libstdc++-v3/src/Makefile.am b/libstdc++-v3/src/Makefile.am
index 71a0da2cd93..18f57632c3d 100644
--- a/libstdc++-v3/src/Makefile.am
+++ b/libstdc++-v3/src/Makefile.am
@@ -30,8 +30,10 @@ endif
if ENABLE_BACKTRACE
backtrace_dir = libbacktrace
+backtrace_supported_h = $(backtrace_dir)/backtrace-supported.h
else
backtrace_dir =
+backtrace_supported_h =
endif
## Keep this list sync'd with acinclude.m4:GLIBCXX_CONFIGURE.
@@ -402,7 +404,15 @@ stamp-debug: Makefile $(foreach dir,$(SUBDIRS),$(dir)/Makefile)
fi; \
echo `date` > stamp-debug;
-build-debug: stamp-debug
+if ENABLE_BACKTRACE
+${debugdir}/$(backtrace_supported_h): $(backtrace_supported_h) stamp-debug
+ cp $< $@
+debug_backtrace_supported_h = ${debugdir}/$(backtrace_supported_h)
+else
+debug_backtrace_supported_h =
+endif
+
+build-debug: stamp-debug $(debug_backtrace_supported_h)
(cd ${debugdir}; \
mv Makefile Makefile.tmp; \
sed -e 's,all-local: all-once,all-local:,' \
diff --git a/libstdc++-v3/src/libbacktrace/Makefile.am b/libstdc++-v3/src/libbacktrace/Makefile.am
index 3a3195167b2..0f1143507f3 100644
--- a/libstdc++-v3/src/libbacktrace/Makefile.am
+++ b/libstdc++-v3/src/libbacktrace/Makefile.am
@@ -35,9 +35,12 @@ toolexeclib_LTLIBRARIES = libstdc++_libbacktrace.la
ACLOCAL_AMFLAGS = -I ../.. -I ../../config
-AM_CPPFLAGS = -I $(top_srcdir)/../include -I $(top_srcdir)/../libgcc \
+# This will be used instead of the common AM_CPPFLAGS from fragment.am
+libstdc___libbacktrace_la_CPPFLAGS = \
+ -I $(top_srcdir)/../include -I $(top_srcdir)/../libgcc \
-I ../../../libgcc -I .. -I $(top_srcdir) \
-I $(top_srcdir)/../libbacktrace \
+ -I $(top_srcdir)/../libiberty \
-include $(top_srcdir)/src/libbacktrace/backtrace-rename.h \
$(BACKTRACE_CPPFLAGS)
@@ -50,42 +53,55 @@ AM_CFLAGS += $(EXTRA_CFLAGS)
AM_CXXFLAGS = $(CXX_WARN_FLAGS) -fno-rtti -fno-exceptions
AM_CXXFLAGS += $(EXTRA_CXXFLAGS)
+obj_prefix = std_stacktrace
+
+# Each FILE.c in SOURCES will be compiled to SHORTNAME-FILE.o
+libstdc___libbacktrace_la_SHORTNAME = $(obj_prefix)
+
libstdc___libbacktrace_la_SOURCES = \
- ../../../libbacktrace/backtrace.h \
- ../../../libbacktrace/atomic.c \
- ../../../libbacktrace/dwarf.c \
- ../../../libbacktrace/fileline.c \
- ../../../libbacktrace/internal.h \
- ../../../libbacktrace/posix.c \
- ../../../libbacktrace/sort.c \
- ../../../libbacktrace/simple.c \
- ../../../libbacktrace/state.c \
- ../../../libiberty/cp-demangle.c
+ atomic.c \
+ dwarf.c \
+ fileline.c \
+ posix.c \
+ sort.c \
+ simple.c \
+ state.c \
+ cp-demangle.c
FORMAT_FILES = \
- ../../../libbacktrace/elf.c \
- ../../../libbacktrace/unknown.c
+ elf.c \
+ unknown.c
VIEW_FILES = \
- ../../../libbacktrace/read.c \
- ../../../libbacktrace/mmapio.c
+ read.c \
+ mmapio.c
ALLOC_FILES = \
- ../../../libbacktrace/alloc.c \
- ../../../libbacktrace/mmap.c
+ alloc.c \
+ mmap.c
EXTRA_libstdc___libbacktrace_la_SOURCES = \
$(FORMAT_FILES) \
$(VIEW_FILES) \
$(ALLOC_FILES)
+# These three files are chosen by configure and added to the link.
+# We need the SHORTNAME- prefix so that they use the custom CPPFLAGS above.
libstdc___libbacktrace_la_LIBADD = \
- $(FORMAT_FILE) \
- $(VIEW_FILE) \
- $(ALLOC_FILE)
+ $(obj_prefix)-$(FORMAT_FILE) \
+ $(obj_prefix)-$(VIEW_FILE) \
+ $(obj_prefix)-$(ALLOC_FILE)
libstdc___libbacktrace_la_DEPENDENCIES = $(libstdc___libbacktrace_la_LIBADD)
+# Use symlinks for the sources
+
+%.c: ../../../libbacktrace/%.c
+ $(LN_S) $< $@
+
+cp-demangle.c: ../../../libiberty/cp-demangle.c
+ $(LN_S) $< $@
+
LTCOMPILE = \
$(LIBTOOL) --tag CC --tag disable-shared \
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
--
2.31.1
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [committed] libstdc++: Fix libbacktrace build files
2022-01-19 14:59 [committed] libstdc++: Fix libbacktrace build files Jonathan Wakely
@ 2022-01-20 12:30 ` Jonathan Wakely
0 siblings, 0 replies; 2+ messages in thread
From: Jonathan Wakely @ 2022-01-20 12:30 UTC (permalink / raw)
To: libstdc++; +Cc: gcc Patches, Dominique d'Humieres
[-- Attachment #1: Type: text/plain, Size: 2893 bytes --]
On Wed, 19 Jan 2022 at 15:00, Jonathan Wakely wrote:
>
> Tested x86_64-linux, pushed to trunk.
>
>
> This makes it possible to combine --enable-libstdcxx-debug with
> --enable-libstdcxx-backtrace, by adding a rule to src/Makefile to copy
> the backtrace-supported.h header into the src/debug/libbacktrace
> directory.
>
> Add libbacktrace path to testsuite flags so the tests can link without
> having the library installed.
>
> Also fix some warnings when running automake for the libbacktrace
> makefile.
>
> Use a per-library CPPFLAGS variable to fix:
>
> src/libbacktrace/Makefile.am:38: warning: AM_CPPFLAGS multiply defined in condition TRUE ...
> fragment.am:43: ... 'AM_CPPFLAGS' previously defined here
> src/libbacktrace/Makefile.am:32: 'fragment.am' included from here
>
> Create symlinks to the libbacktrace sources to fix:
>
> src/libbacktrace/Makefile.am:55: warning: source file '../../../libbacktrace/atomic.c' is in a subdirectory,
> src/libbacktrace/Makefile.am:55: but option 'subdir-objects' is disabled
>
> libstdc++-v3/ChangeLog:
>
> * scripts/testsuite_flags.in: Add src/libbacktrace/.libs to
> linker search paths.
> * src/Makefile.am: Fix src/debug/libbacktrace build.
> * src/Makefile.in: Regenerate.
> * src/libbacktrace/Makefile.am: Use per-library CPPFLAGS
> variable. Use symlinks for the source files.
> * src/libbacktrace/Makefile.in: Regenerate.
> ---
> libstdc++-v3/scripts/testsuite_flags.in | 3 +-
> libstdc++-v3/src/Makefile.am | 12 +-
> libstdc++-v3/src/Makefile.in | 9 +-
> libstdc++-v3/src/libbacktrace/Makefile.am | 56 ++++++----
> libstdc++-v3/src/libbacktrace/Makefile.in | 128 +++++++++++++---------
> 5 files changed, 132 insertions(+), 76 deletions(-)
>
> diff --git a/libstdc++-v3/scripts/testsuite_flags.in b/libstdc++-v3/scripts/testsuite_flags.in
> index cf7f0f7411e..40dd3d3465e 100755
> --- a/libstdc++-v3/scripts/testsuite_flags.in
> +++ b/libstdc++-v3/scripts/testsuite_flags.in
> @@ -78,7 +78,8 @@ case ${query} in
> ;;
> --cxxldflags)
> SECTIONLDFLAGS="@SECTION_LDFLAGS@ @LIBICONV@
> - -L${BUILD_DIR}/src/filesystem/.libs"
> + -L${BUILD_DIR}/src/filesystem/.libs
> + -L${BUILD_DIR}/src/libbacktrace/.libs"
> echo ${SECTIONLDFLAGS}
> ;;
> *)
This part broke nearly every test on macOS, because the linker warns
about unknown paths.
The src/filesystem/.libs dir only exists for
--enable-libstdcxx-filesystem-ts (which is enabled by default on
macOS) and src/libbacktrace/.libs only exists for
--enable-libstdcxx-backtrace (which is disabled by default on all
targets). The src/filesystem/.libs part has been there for years, so
must have been a latent problem on macOS.
Fixed by this patch, tested powerpc64le-linux and pushed to trunk.
[-- Attachment #2: patch.txt --]
[-- Type: text/plain, Size: 1457 bytes --]
commit 5929f253fcdbf24fd47706dd11aafdeac5e9ecb6
Author: Jonathan Wakely <jwakely@redhat.com>
Date: Thu Jan 20 11:15:27 2022
libstdc++: Only add valid -L paths to testsuite linker options
The MacOS linker warns about -L arguments that don't exist, which causes
all tests to fail for the defauly configuration (because libbacktrace
isn't built).
libstdc++-v3/ChangeLog:
* scripts/testsuite_flags.in: Only add src/filesystem/.libs and
src/libbacktrace/.libs to LDFLAGS if those directories exist.
diff --git a/libstdc++-v3/scripts/testsuite_flags.in b/libstdc++-v3/scripts/testsuite_flags.in
index 40dd3d3465e..18748f0f9ce 100755
--- a/libstdc++-v3/scripts/testsuite_flags.in
+++ b/libstdc++-v3/scripts/testsuite_flags.in
@@ -77,9 +77,15 @@ case ${query} in
echo ${PCHFLAGS}
;;
--cxxldflags)
- SECTIONLDFLAGS="@SECTION_LDFLAGS@ @LIBICONV@
- -L${BUILD_DIR}/src/filesystem/.libs
- -L${BUILD_DIR}/src/libbacktrace/.libs"
+ FS_LDFLAGS=
+ BT_LDFLAGS=
+ if [ -d ${BUILD_DIR}/src/filesystem/.libs ]; then
+ FS_LDFLAGS=-L${BUILD_DIR}/src/filesystem/.libs
+ fi
+ if [ -d ${BUILD_DIR}/src/libbacktrace/.libs ]; then
+ BT_LDFLAGS=-L${BUILD_DIR}/src/libbacktrace/.libs
+ fi
+ SECTIONLDFLAGS="@SECTION_LDFLAGS@ @LIBICONV@ $FS_LDFLAGS $BT_LDFLAGS"
echo ${SECTIONLDFLAGS}
;;
*)
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2022-01-20 12:30 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-19 14:59 [committed] libstdc++: Fix libbacktrace build files Jonathan Wakely
2022-01-20 12:30 ` Jonathan Wakely
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).