GCC LTO options not correctly handled

Laurent Stacul <[email protected]>
Newsgroups gmane.comp.gnu.libtool.general
Message-ID <CAGdu8S+9DDV6aA6PJfXf+HgtFpNoAbW3iYm=FUiZZt8vWZUygw@mail.gmail.com>
Hello,

I have a flow in which I compile my object files with the Link-Time
Optimization (LTO) with gcc (option -flto -ffat-lto-objects). At link
time, I can decide if I want the LTO or not.

When I decide I don't want to use LTO for the final binary, I set
-fno-lto in the LDFLAGS. But depending on the project I want to build,
I can remain -flto due to a bad usage of the CFLAGS/CPPFLAGS/CXXFLAGS
in the project.

As I don't have the ownership on the project, I need to patch (and
provide a patch upstream). But this can be tedious on big projects, so
it would great if libtool don't filter the options like -fno-lto,
-fno-whopr.

I was thinking to something like:

diff --git a/build-aux/ltmain.in b/build-aux/ltmain.in
index 96b37003..f37a0cc7 100644
--- a/build-aux/ltmain.in
+++ b/build-aux/ltmain.in
@@ -5375,14 +5375,19 @@ func_mode_link ()
       # @file                GCC response files
       # -tp=*                Portland pgcc target processor selection
       # --sysroot=*          for sysroot support
-      # -O*, -g*, -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time
optimization
+      # -O*, -g*             Optimization, debugging
+      # -flto*, -fwhopr*, -fuse-linker-plugin GCC link-time optimization
+      # -ffat-lto-objects, -fno-fat-lto-objects GCC GIMPLE in ELF section
+      # -fno-lto, -fno-whopr GCC disable LTO
       # -specs=*             GCC specs files
       # -stdlib=*            select c++ std lib with clang
       # -fsanitize=*         Clang/GCC memory and address sanitizer
       # -fuse-ld=*           Linker select flags for GCC
       -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
       -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*|-tp=*|--sysroot=*|
\
-      -O*|-g*|-flto*|-fwhopr*|-fuse-linker-plugin|-fstack-protector*|-stdlib=*|
\
+      -O*|-g*|-flto*|-fno-lto|-fwhopr*|-fno-whopr| \
+      -ffat-lto-objects|-fno-fat-lto-objects| \
+      -fuse-linker-plugin|-fstack-protector*|-stdlib=*| \
       -specs=*|-fsanitize=*|-fuse-ld=*)
         func_quote_arg pretty "$arg"
        arg=$func_quote_arg_result

Regards,
Stac

_______________________________________________
https://lists.gnu.org/mailman/listinfo/libtool
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.