Bug 2352554

Summary: chromium build error on ppc64le on f42 and rawhide
Product: [Fedora] Fedora Reporter: Than Ngo <than>
Component: llvmAssignee: Tom Stellard <tstellar>
Status: CLOSED CURRENTRELEASE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: unspecified    
Version: 42CC: airlied, dmalcolm, fedora-llvm-team, jakub, jchecahi, jistone, kkleine, npopov, scottt.tw, sergesanspaille, siddharth.kde, suraj.ghimire7, tbaeder, tstellar, tuliom
Target Milestone: ---   
Target Release: ---   
Hardware: ppc64le   
OS: Linux   
URL: https://kojipkgs.fedoraproject.org//work/tasks/9743/130229743/build.log
Whiteboard:
Fixed In Version: Doc Type: ---
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2025-03-31 11:46:43 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Than Ngo 2025-03-14 13:31:34 UTC
chromium breaks with errors on ppc64le in f41 and rawhide.

Reproducible: Always

Steps to Reproduce:
1.build chromium on ppc64le (f42 or rawhide)

Actual Results:  
chromium build breaks with following error:

clang++ -MD -MF obj/net/net/broken_alternative_services.o.d -DUSE_UDEV -DUSE_AURA=1 -DUSE_GLIB=1 -DUSE_OZONE=1 -DOFFICIAL_BUILD -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -DNO_UNWIND_TABLES -D_GNU_SOURCE -D_LIBCPP_HARDENING_MODE=_LIBCPP_HARDENING_MODE_EXTENSIVE -D_LIBCPP_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCXXABI_DISABLE_VISIBILITY_ANNOTATIONS -D_LIBCPP_INSTRUMENTED_WITH_ASAN=0 -DCR_LIBCXX_REVISION=2e25154d49c29fa9aa42c30ad4a027bd30123434 -DTMP_REBUILD_HACK -DNDEBUG -DNVALGRIND -DDYNAMIC_ANNOTATIONS_ENABLED=0 -DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_56 -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_56 -DGOOGLE_PROTOBUF_NO_RTTI -DGOOGLE_PROTOBUF_NO_STATIC_INITIALIZER -DGOOGLE_PROTOBUF_INTERNAL_DONATE_STEAL_INLINE=0 -DHAVE_PTHREAD -DCR_CXX_INCLUDE=\"third_party/rust/chromium_crates_io/vendor/cxx-1.0.137/include/cxx.h\" -DNET_IMPLEMENTATION -DENABLE_BUILT_IN_DNS -DUSE_GIO -DU_USING_ICU_NAMESPACE=0 -DU_ENABLE_DYLOAD=0 -DUSE_CHROMIUM_ICU=1 -DU_ENABLE_TRACING=1 -DU_ENABLE_RESOURCE_TRACING=0 -DU_STATIC_IMPLEMENTATION -DICU_UTIL_DATA_IMPL=ICU_UTIL_DATA_FILE -I../.. -Igen -I../../buildtools/third_party/libc++ -I../../third_party/perfetto/include -Igen/third_party/perfetto/build_config -Igen/third_party/perfetto -Igen/shim_headers/double_conversion_shim -I../../net/third_party/quiche/overrides -I../../net/third_party/quiche/src/quiche/common/platform/default -I../../net/third_party/quiche/src -Igen/shim_headers/brotli_shim -Igen/shim_headers/zstd_headers -I../../third_party/protobuf/src -I../../base/allocator/partition_allocator/src -Igen/base/allocator/partition_allocator/src -I../../third_party/abseil-cpp -I../../third_party/boringssl/src/include -Igen/net/third_party/quiche/src -I../../third_party/zlib -I../../third_party/ced/src -I../../third_party/icu/source/common -I../../third_party/icu/source/i18n -Wall -Wextra -Wimplicit-fallthrough -Wextra-semi -Wunreachable-code-aggressive -Wthread-safety -Wgnu -Wno-gnu-anonymous-struct -Wno-gnu-conditional-omitted-operand -Wno-gnu-include-next -Wno-gnu-label-as-value -Wno-gnu-redeclared-enum -Wno-gnu-statement-expression -Wno-gnu-zero-variadic-macro-arguments -Wno-zero-length-array -Wno-missing-field-initializers -Wno-unused-parameter -Wno-psabi -Wloop-analysis -Wno-unneeded-internal-declaration -Wno-cast-function-type -Wno-thread-safety-reference-return -Wshadow -fno-delete-null-pointer-checks -fwrapv -fno-ident -fno-strict-aliasing -fstack-protector-strong -ftrivial-auto-var-init=zero -fwrapv -fno-unwind-tables -fno-asynchronous-unwind-tables -fPIC -pthread -fcolor-diagnostics -fmerge-all-constants -fno-sized-deallocation -fcrash-diagnostics-dir=../../tools/clang/crashreports -mllvm -instcombine-lower-dbg-declare=0 -mllvm -split-threshold-for-reg-with-hint=0 -ffp-contract=off -Wa,--crel,--allow-experimental-crel -fcomplete-member-pointers -m64 -ffile-compilation-dir=. -no-canonical-prefixes -ftrivial-auto-var-init=pattern -fno-omit-frame-pointer -g0 -fvisibility=hidden -Wheader-hygiene -Wstring-conversion -Wtautological-overlap-compare -O2 -fdata-sections -ffunction-sections -fno-unique-section-names -fno-math-errno -isystem/usr/include/nss3 -isystem/usr/include/nspr4 -isystem/usr/include/glib-2.0 -isystem/usr/lib64/glib-2.0/include -isystem/usr/include/sysprof-6 -DPROTOBUF_ALLOW_DEPRECATED=1 -Wexit-time-destructors -DWITH_GZFILEOP -isystem/usr/include/glib-2.0 -isystem/usr/lib64/glib-2.0/include -isystem/usr/include/libmount -isystem/usr/include/blkid -isystem/usr/include/sysprof-6 -Wno-invalid-offsetof -Wenum-compare-conditional -Wno-c++11-narrowing-const-reference -Wno-missing-template-arg-list-after-template-kw -std=c++20 -Wno-trigraphs -gsimple-template-names -fno-exceptions -fno-rtti -nostdinc++ -isystem../../third_party/libc++/src/include -isystem../../third_party/libc++abi/src/include -fvisibility-inlines-hidden  -Wno-deprecated-declarations -Wno-unknown-warning-option -Wno-unused-command-line-argument -Wno-unused-but-set-variable -Wno-unused-result -Wno-unused-function -Wno-unused-variable -Wno-unused-const-variable -Wno-unneeded-internal-declaration -Wno-unknown-attributes -Wno-unknown-pragmas -faltivec-src-compat=mixed -Wno-deprecated-altivec-src-compat -c ../../net/http/broken_alternative_services.cc -o obj/net/net/broken_alternative_services.o
error: Undefined temporary symbol .L_MergedGlobals.15

Expected Results:  
it should build without error on ppc64le (fedora 42 and rawhide)

This problem only shows up on ppc64le (f42 or rawhide). It built fine on x86_64/aarch64.

Comment 1 Than Ngo 2025-03-14 13:36:50 UTC
Just info for you: chromium built fine with llvm-19.1.7-11. So it looks like a regression here.

Comment 2 Tulio Magno Quites Machado Filho 2025-03-14 14:57:32 UTC
In LLVM 20, the ppc64le backend started to use the GlobalMerge pass instead of a custom pass.
I wonder if there are corner cases with issues.

@than, could you test if the build works when passing -mno-global-merge , please?

Comment 3 Than Ngo 2025-03-14 15:14:42 UTC
@tuliom, the build still aborts with the same error when passing -mno-global-merge

Comment 4 Than Ngo 2025-03-14 15:28:27 UTC
@tuliom, the build works when passing -O0 (independent of -mno-global-merge option)

Comment 5 Tulio Magno Quites Machado Filho 2025-03-14 21:21:42 UTC
I managed to reduce the test for this issue and reported it upstream: https://github.com/llvm/llvm-project/issues/131394

Comment 6 Nikita Popov 2025-03-18 11:05:33 UTC
-mllvm -ppc-global-merge=0 instead of -mno-global-merge may work.

Comment 7 Than Ngo 2025-03-19 11:52:59 UTC
(In reply to Nikita Popov from comment #6)
> -mllvm -ppc-global-merge=0 instead of -mno-global-merge may work.

It works with -mllvm -ppc-global-merge=0

Comment 8 Nikita Popov 2025-03-22 14:41:50 UTC
I believe the new llvm-20.1.1-1.fc42 and llvm-20.1.1-1.fc43 builds should fix this, but I haven't verified.

Comment 9 Tom Stellard 2025-03-29 16:21:04 UTC
(In reply to Nikita Popov from comment #8)
> I believe the new llvm-20.1.1-1.fc42 and llvm-20.1.1-1.fc43 builds should
> fix this, but I haven't verified.

I did a scratch build of chromium using llvm-20.1.1-1.fc43 and the build was successful: https://koji.fedoraproject.org/koji/taskinfo?taskID=130858088

Comment 10 Than Ngo 2025-03-31 08:57:34 UTC
(In reply to Tom Stellard from comment #9)
> (In reply to Nikita Popov from comment #8)
> > I believe the new llvm-20.1.1-1.fc42 and llvm-20.1.1-1.fc43 builds should
> > fix this, but I haven't verified.
> 
> I did a scratch build of chromium using llvm-20.1.1-1.fc43 and the build was
> successful: https://koji.fedoraproject.org/koji/taskinfo?taskID=130858088

Tom, looking at the build.log i still see CXXFLAGS+=' -O0' used in your scratchbuild. 

I will do a scratch build without the workaround today and will report the result to you.

Thanks

Comment 11 Than Ngo 2025-03-31 11:46:43 UTC
I did a scratch build of latest chromium with llvm-20.1.1-1.fc43 and confirmed the fix.

Thanks you!