Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 878593

Summary: dev-libs/protobuf-c: gcc is unable to compile with -flto
Product: Gentoo Linux Reporter: Jocelyn Mayer <l_indien>
Component: Current packagesAssignee: No maintainer - Look at https://wiki.gentoo.org/wiki/Project:Proxy_Maintainers if you want to take care of it <maintainer-needed>
Status: RESOLVED WORKSFORME    
Severity: normal CC: eschwartz, l_indien
Priority: Normal    
Version: unspecified   
Hardware: All   
OS: Linux   
Whiteboard:
Package list:
Runtime testing required: ---
Bug Depends on:    
Bug Blocks: 618550    
Attachments: output from emerge --info =dev-libs/protobuf-c-1.4.1
Emerge failure using gcc and '-flto' flags build log

Description Jocelyn Mayer 2022-10-29 04:22:34 UTC
If having '-flto' in compilation flags, gcc fails to compile protobuf-c:
t/generated-code2/cxx-generate-packed-data fails to generate test-full-cxx-output.inc
Compiling using '-fno-lto' or using clang is OK

Reproducible: Always

Steps to Reproduce:
1. Add '-flto' to compilation flags
2. Try to build dev-libs/protobuf-c using gcc
3.
Actual Results:  
Build of test programs fails

Expected Results:  
Build to succeed.

Disabling lto when using gcc seems required
Comment 1 Jocelyn Mayer 2022-10-29 04:23:45 UTC
Created attachment 825773 [details]
output from emerge --info =dev-libs/protobuf-c-1.4.1

Note that this is the merged version, with '-fno-lto' flags set.
Comment 2 Jocelyn Mayer 2022-10-29 04:24:33 UTC
Created attachment 825775 [details]
Emerge failure using gcc and '-flto' flags build log
Comment 3 Eli Schwartz gentoo-dev 2024-05-06 03:53:42 UTC
libtool: link: x86_64-pc-linux-gnu-g++ -std=c++17 -march=native -fstack-protector-all -O2 -pipe -fdiagnostics-color=always -frecord-gcc-switches -flto=4 -Werror=odr -Werror=lto-type-mismatch -Werror=strict-aliasing -Wformat -Werror=format-security -Wl,-O1 -flto=4 -Werror=odr -Werror=lto-type-mismatch -Werror=strict-aliasing -Wl,--defsym=__gentoo_check_ldflags__=0 -o t/generated-code2/cxx-generate-packed-data t/generated-code2/cxx_generate_packed_data-cxx-generate-packed-data.o t/generated_code2_cxx_generate_packed_data-test-full.pb.o protobuf-c/t_generated_code2_cxx_generate_packed_data-protobuf-c.pb.o  -Wl,--as-needed -lprotobuf
./t/generated-code2/cxx-generate-packed-data > ./t/generated-code2/test-full-cxx-output.inc
make  all-am



There is one change here to upgrade to newer protobuf and e.g. compile with a newer C++ std, which may or may not have made a difference?