]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
libphobos: Build runtime library with -ffunction-sections -fdata-sections
authorIain Buclaw <ibuclaw@gdcproject.org>
Thu, 8 Apr 2021 16:31:04 +0000 (18:31 +0200)
committerIain Buclaw <ibuclaw@gdcproject.org>
Sat, 10 Apr 2021 13:02:07 +0000 (15:02 +0200)
Tests for `-ffunction-sections -fdata-sections' and sets SECTION_FLAGS
accordingly.  If there is no warning when using it, take advantage of
the smaller executables that can be had with `--gc-sections'.

libphobos/ChangeLog:

* Makefile.in: Regenerate.
* configure: Regenerate.
* configure.ac: Call DRUNTIME_SECTION_FLAGS.
* libdruntime/Makefile.am: Add SECTION_FLAGS to AM_DFLAGS.
* libdruntime/Makefile.in: Regenerate.
* m4/druntime.m4 (DRUNTIME_SECTION_FLAGS): New macro.
* src/Makefile.am: Add SECTION_FLAGS to AM_DFLAGS.
* src/Makefile.in: Regenerate.
* testsuite/Makefile.in: Regenerate.

libphobos/Makefile.in
libphobos/configure
libphobos/configure.ac
libphobos/libdruntime/Makefile.am
libphobos/libdruntime/Makefile.in
libphobos/m4/druntime.m4
libphobos/src/Makefile.am
libphobos/src/Makefile.in
libphobos/testsuite/Makefile.in

index eab1268886705f35e75541ab8d6b4546d7e09ee7..a8f7e1607429c58d3a4a15fda709f279f783cdce 100644 (file)
@@ -271,6 +271,7 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 RANLIB = @RANLIB@
+SECTION_FLAGS = @SECTION_FLAGS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
index 59ca64aa1e022d72b9f6f6821cca570da47306e4..fe7cd9c11ff5357c937d354d9e087e6c74c5694f 100755 (executable)
@@ -700,6 +700,7 @@ DRUNTIME_CPU_ARM_FALSE
 DRUNTIME_CPU_ARM_TRUE
 DRUNTIME_CPU_AARCH64_FALSE
 DRUNTIME_CPU_AARCH64_TRUE
+SECTION_FLAGS
 libphobos_srcdir
 libphobos_builddir
 get_gcc_base_ver
@@ -11749,7 +11750,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11752 "configure"
+#line 11753 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -11855,7 +11856,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<_LT_EOF
-#line 11858 "configure"
+#line 11859 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
   fi
 
 
+
+
+  gdc_save_DFLAGS=$GDCFLAGS
+  GDCFLAGS="-fno-moduleinfo -nostdinc -I $phobos_cv_abs_srcdir/libdruntime -nophoboslib $GDCFLAGS"
+
+    ac_ext=d
+ac_compile='$GDC -c $GDCFLAGS conftest.$ac_ext >&5'
+ac_link='$GDC -o conftest$ac_exeext $GDCFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=yes
+
+    GDCFLAGS="$GDCFLAGS -g -Werror -ffunction-sections -fdata-sections"
+    cat > conftest.$ac_ext <<_ACEOF
+module mod;
+int foo; void bar() { }
+
+extern(C) int main() {
+  return 0;
+}
+_ACEOF
+if ac_fn_d_try_compile "$LINENO"; then :
+  ac_fdsections=yes
+else
+  ac_fdsections=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+    if test "x$ac_fdsections" = "xyes"; then
+      SECTION_FLAGS='-ffunction-sections -fdata-sections'
+    fi
+    { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_fdsections" >&5
+$as_echo "$ac_fdsections" >&6; }
+    ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+  GDCFLAGS=$gdc_save_DFLAGS
+
+
+
+
   druntime_target_cpu_parsed=""
   case "$target_cpu" in
       aarch64*)
index 248d0ebbc19f9f5bc47d7ef6e176ebf38eef0203..3b5a830cccfaca11750e797502c7c0188ac6a215 100644 (file)
@@ -137,6 +137,7 @@ GCC_BASE_VER
 DRUNTIME_CONFIGURE
 DRUNTIME_MULTILIB
 DRUNTIME_WERROR
+DRUNTIME_SECTION_FLAGS
 DRUNTIME_CPU_SOURCES
 DRUNTIME_OS_SOURCES
 DRUNTIME_OS_THREAD_MODEL
index 74a0f006036b765e6efd13fa208f287de1fbe8e9..02a68b1042486bb17eab46c584b96fe7e6f418b6 100644 (file)
@@ -24,7 +24,7 @@ D_EXTRA_DFLAGS=-nostdinc -I $(srcdir) -I .
 # D flags for compilation
 AM_DFLAGS= \
        $(phobos_lt_pic_flag) $(phobos_compiler_shared_flag) \
-       $(WARN_DFLAGS) $(CHECKING_DFLAGS) $(CET_DFLAGS)
+       $(WARN_DFLAGS) $(CHECKING_DFLAGS) $(SECTION_FLAGS) $(CET_DFLAGS)
 
 # Flags for other kinds of sources
 AM_CFLAGS=$(CET_FLAGS)
index 63b2133e69c170b33888ee490985040ae48ffece..853a7fc1981b4b0973c1cb0397285e506410cedb 100644 (file)
@@ -635,6 +635,7 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 RANLIB = @RANLIB@
+SECTION_FLAGS = @SECTION_FLAGS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -727,7 +728,7 @@ D_EXTRA_DFLAGS = -nostdinc -I $(srcdir) -I .
 # D flags for compilation
 AM_DFLAGS = \
        $(phobos_lt_pic_flag) $(phobos_compiler_shared_flag) \
-       $(WARN_DFLAGS) $(CHECKING_DFLAGS) $(CET_DFLAGS)
+       $(WARN_DFLAGS) $(CHECKING_DFLAGS) $(SECTION_FLAGS) $(CET_DFLAGS)
 
 
 # Flags for other kinds of sources
index 7221712a888b4c90406e3f4a7d9338134f2e05c2..2a7a689dd18e2c79f48b1748f703676502a6cbbd 100644 (file)
@@ -116,3 +116,22 @@ AC_DEFUN([DRUNTIME_INSTALL_DIRECTORIES],
   gdc_include_dir='$(libdir)/gcc/${target_alias}/${gcc_version}/include/d'
   AC_SUBST(gdc_include_dir)
 ])
+
+# DRUNTIME_SECTION_FLAGS
+# ----------------------
+# Check for -ffunction-sections nad -fdata-sections.
+AC_DEFUN([DRUNTIME_SECTION_FLAGS],
+[
+  WITH_LOCAL_DRUNTIME([
+    AC_LANG_PUSH([D])
+    GDCFLAGS="$GDCFLAGS -g -Werror -ffunction-sections -fdata-sections"
+    AC_TRY_COMPILE([int foo; void bar() { }],[return 0;],
+                  [ac_fdsections=yes], [ac_fdsections=no])
+    if test "x$ac_fdsections" = "xyes"; then
+      SECTION_FLAGS='-ffunction-sections -fdata-sections'
+    fi
+    AC_MSG_RESULT($ac_fdsections)
+    AC_LANG_POP([D])
+  ], [-nophoboslib])
+  AC_SUBST(SECTION_FLAGS)
+])
index 2dedc740f16149fd57c256a7d836df367366dff0..f97ddccaca84e4998b9dd7314ae2221bf9883162 100644 (file)
@@ -25,7 +25,7 @@ D_EXTRA_DFLAGS=-nostdinc -I $(srcdir) \
 # D flags for compilation
 AM_DFLAGS= \
        $(phobos_lt_pic_flag) $(phobos_compiler_shared_flag) \
-       $(WARN_DFLAGS) $(CHECKING_DFLAGS) $(CET_DFLAGS)
+       $(WARN_DFLAGS) $(CHECKING_DFLAGS) $(SECTION_FLAGS) $(CET_DFLAGS)
 
 # Flags for other kinds of sources
 AM_CFLAGS=$(CET_FLAGS)
index 9e410e5b642e31e503337e458ae31386b6b26878..4f76e1077d5e0f2fc2d514d5e4b449e1e2cc321d 100644 (file)
@@ -388,6 +388,7 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 RANLIB = @RANLIB@
+SECTION_FLAGS = @SECTION_FLAGS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
@@ -482,7 +483,7 @@ D_EXTRA_DFLAGS = -nostdinc -I $(srcdir) \
 # D flags for compilation
 AM_DFLAGS = \
        $(phobos_lt_pic_flag) $(phobos_compiler_shared_flag) \
-       $(WARN_DFLAGS) $(CHECKING_DFLAGS) $(CET_DFLAGS)
+       $(WARN_DFLAGS) $(CHECKING_DFLAGS) $(SECTION_FLAGS) $(CET_DFLAGS)
 
 
 # Flags for other kinds of sources
index 51eb4efc79d8cda50139e0d833ca66dc09fc29da..885548018baeea8997471889c9c9c12d60c486ee 100644 (file)
@@ -215,6 +215,7 @@ PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
 RANLIB = @RANLIB@
+SECTION_FLAGS = @SECTION_FLAGS@
 SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@