Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package chromium for openSUSE:Leap:16.0 
checked in at 2025-05-16 08:30:29
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Leap:16.0/chromium (Old)
 and      /work/SRC/openSUSE:Leap:16.0/.chromium.new.30101 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "chromium"

Fri May 16 08:30:29 2025 rev:2 rq:1277586 version:136.0.7103.113

Changes:
--------
--- /work/SRC/openSUSE:Leap:16.0/chromium/chromium.changes      2025-05-06 
11:09:28.679775424 +0200
+++ /work/SRC/openSUSE:Leap:16.0/.chromium.new.30101/chromium.changes   
2025-05-16 08:31:59.072310119 +0200
@@ -1,0 +2,82 @@
+Thu May 15 00:07:25 CEST 2025 - r...@suse.de
+
+- Chromium 136.0.7103.113
+  (stable release 2025-05-14) (boo#1243205)
+
+  * CVE-2025-4664: Insufficient policy enforcement in Loader
+  * CVE-2025-4609: Incorrect handle provided in unspecified
+    circumstances in Mojo
+
+-------------------------------------------------------------------
+Mon May 12 17:13:38 CEST 2025 - r...@suse.de
+
+- try build on ppc64le
+- added patches (from fedora)
+    ppc-fedora-add-ppc64-architecture-string.patch
+    ppc-fedora-0001-linux-seccomp-bpf-ppc64-glibc-workaround-in-SIGSYS-h.patch
+    ppc-fedora-0001-sandbox-Enable-seccomp_bpf-for-ppc64.patch
+    ppc-fedora-0001-services-service_manager-sandbox-linux-Fix-TCGETS-de.patch
+    ppc-fedora-0001-sandbox-linux-bpf_dsl-Update-syscall-ranges-for-ppc6.patch
+    ppc-fedora-0001-sandbox-linux-Implement-partial-support-for-ppc64-sy.patch
+    ppc-fedora-0001-sandbox-linux-Update-IsSyscallAllowed-in-broker_proc.patch
+    ppc-fedora-0001-sandbox-linux-Update-syscall-helpers-lists-for-ppc64.patch
+    ppc-fedora-0002-sandbox-linux-bpf_dsl-Modify-seccomp_macros-to-add-s.patch
+    ppc-fedora-0003-sandbox-linux-system_headers-Update-linux-seccomp-he.patch
+    ppc-fedora-0004-sandbox-linux-system_headers-Update-linux-signal-hea.patch
+    ppc-fedora-0005-sandbox-linux-seccomp-bpf-Add-ppc64-syscall-stub.patch
+    ppc-fedora-0005-sandbox-linux-update-unit-test-for-ppc64.patch
+    ppc-fedora-0006-sandbox-linux-disable-timedwait-time64-ppc64.patch
+    ppc-fedora-0007-sandbox-linux-add-ppc64-stat.patch
+    ppc-fedora-Sandbox-linux-services-credentials.cc-PPC.patch
+    ppc-fedora-0008-sandbox-fix-ppc64le-glibc234.patch
+    ppc-fedora-0001-third_party-angle-Include-missing-header-cstddef-in-.patch
+    ppc-fedora-0001-Add-PPC64-support-for-boringssl.patch
+    ppc-fedora-0001-third_party-libvpx-Properly-generate-gni-on-ppc64.patch
+    ppc-fedora-0001-third_party-pffft-Include-altivec.h-on-ppc64-with-SI.patch
+    ppc-fedora-0002-Add-PPC64-generated-files-for-boringssl.patch
+    ppc-fedora-0002-third_party-lss-kernel-structs.patch
+    ppc-fedora-0001-swiftshader-fix-build.patch
+    ppc-fedora-Rtc_base-system-arch.h-PPC.patch
+    ppc-fedora-0002-Include-cstddef-to-fix-build.patch
+    ppc-fedora-0004-third_party-crashpad-port-curl-transport-ppc64.patch
+    ppc-fedora-HACK-third_party-libvpx-use-generic-gnu.patch
+    ppc-fedora-0001-third-party-hwy-wrong-include.patch
+    ppc-fedora-HACK-debian-clang-disable-base-musttail.patch
+    ppc-fedora-0001-Add-ppc64-target-to-libaom.patch
+    ppc-fedora-0001-Add-pregenerated-config-for-libaom-on-ppc64.patch
+    ppc-fedora-0002-third_party-libvpx-Remove-bad-ppc64-config.patch
+    ppc-fedora-0003-third_party-libvpx-Add-ppc64-generated-config.patch
+    ppc-fedora-0004-third_party-libvpx-work-around-ambiguous-vsx.patch
+    ppc-fedora-skia-vsx-instructions.patch
+    ppc-fedora-0001-Implement-support-for-ppc64-on-Linux.patch
+    ppc-fedora-0001-Implement-support-for-PPC64-on-Linux.patch
+    ppc-fedora-0001-Force-baseline-POWER8-AltiVec-VSX-CPU-features-when-.patch
+    ppc-fedora-fix-clang-selection.patch
+    ppc-fedora-fix-rustc.patch
+    ppc-fedora-fix-rust-linking.patch
+    ppc-fedora-fix-breakpad-compile.patch
+    ppc-fedora-fix-partition-alloc-compile.patch
+    ppc-fedora-fix-study-crash.patch
+    ppc-fedora-memory-allocator-dcheck-assert-fix.patch
+    ppc-fedora-fix-different-data-layouts.patch
+    ppc-fedora-0002-Add-ppc64-trap-instructions.patch
+    ppc-fedora-fix-ppc64-linux-syscalls-headers.patch
+    ppc-fedora-use-sysconf-page-size-on-ppc64.patch
+    ppc-fedora-0001-Enable-ppc64-pointer-compression.patch
+    ppc-fedora-dawn-fix-ppc64le-detection.patch
+    ppc-fedora-add-ppc64-architecture-to-extensions.diff
+    ppc-fedora-fix-unknown-warning-option-messages.diff
+    ppc-fedora-add-ppc64-pthread-stack-size.patch
+    ppc-fedora-fix-ppc64-rust_png-build-error.patch
+- added patches
+    ppc-chromium-136-clang-config.patch
+- disable swiftshader on ppc64le like on aarch64
+ 
+-------------------------------------------------------------------
+Wed May  7 10:17:50 CEST 2025 - r...@suse.de
+
+- Chromium 136.0.7103.92
+  (stable release 2025-05-06) (boo#1242717)
+  * CVE-2025-4372: Use after free in WebAudio
+
+-------------------------------------------------------------------

Old:
----
  chromium-136.0.7103.59.tar.xz

New:
----
  chromium-136.0.7103.113.tar.xz
  ppc-chromium-136-clang-config.patch
  ppc-fedora-0001-Add-PPC64-support-for-boringssl.patch
  ppc-fedora-0001-Add-ppc64-target-to-libaom.patch
  ppc-fedora-0001-Add-pregenerated-config-for-libaom-on-ppc64.patch
  ppc-fedora-0001-Enable-ppc64-pointer-compression.patch
  ppc-fedora-0001-Force-baseline-POWER8-AltiVec-VSX-CPU-features-when-.patch
  ppc-fedora-0001-Implement-support-for-PPC64-on-Linux.patch
  ppc-fedora-0001-Implement-support-for-ppc64-on-Linux.patch
  ppc-fedora-0001-linux-seccomp-bpf-ppc64-glibc-workaround-in-SIGSYS-h.patch
  ppc-fedora-0001-sandbox-Enable-seccomp_bpf-for-ppc64.patch
  ppc-fedora-0001-sandbox-linux-Implement-partial-support-for-ppc64-sy.patch
  ppc-fedora-0001-sandbox-linux-Update-IsSyscallAllowed-in-broker_proc.patch
  ppc-fedora-0001-sandbox-linux-Update-syscall-helpers-lists-for-ppc64.patch
  ppc-fedora-0001-sandbox-linux-bpf_dsl-Update-syscall-ranges-for-ppc6.patch
  ppc-fedora-0001-services-service_manager-sandbox-linux-Fix-TCGETS-de.patch
  ppc-fedora-0001-swiftshader-fix-build.patch
  ppc-fedora-0001-third-party-hwy-wrong-include.patch
  ppc-fedora-0001-third_party-angle-Include-missing-header-cstddef-in-.patch
  ppc-fedora-0001-third_party-libvpx-Properly-generate-gni-on-ppc64.patch
  ppc-fedora-0001-third_party-pffft-Include-altivec.h-on-ppc64-with-SI.patch
  ppc-fedora-0002-Add-PPC64-generated-files-for-boringssl.patch
  ppc-fedora-0002-Add-ppc64-trap-instructions.patch
  ppc-fedora-0002-Include-cstddef-to-fix-build.patch
  ppc-fedora-0002-sandbox-linux-bpf_dsl-Modify-seccomp_macros-to-add-s.patch
  ppc-fedora-0002-third_party-libvpx-Remove-bad-ppc64-config.patch
  ppc-fedora-0002-third_party-lss-kernel-structs.patch
  ppc-fedora-0003-sandbox-linux-system_headers-Update-linux-seccomp-he.patch
  ppc-fedora-0003-third_party-libvpx-Add-ppc64-generated-config.patch
  ppc-fedora-0004-sandbox-linux-system_headers-Update-linux-signal-hea.patch
  ppc-fedora-0004-third_party-crashpad-port-curl-transport-ppc64.patch
  ppc-fedora-0004-third_party-libvpx-work-around-ambiguous-vsx.patch
  ppc-fedora-0005-sandbox-linux-seccomp-bpf-Add-ppc64-syscall-stub.patch
  ppc-fedora-0005-sandbox-linux-update-unit-test-for-ppc64.patch
  ppc-fedora-0006-sandbox-linux-disable-timedwait-time64-ppc64.patch
  ppc-fedora-0007-sandbox-linux-add-ppc64-stat.patch
  ppc-fedora-0008-sandbox-fix-ppc64le-glibc234.patch
  ppc-fedora-HACK-debian-clang-disable-base-musttail.patch
  ppc-fedora-HACK-third_party-libvpx-use-generic-gnu.patch
  ppc-fedora-Rtc_base-system-arch.h-PPC.patch
  ppc-fedora-Sandbox-linux-services-credentials.cc-PPC.patch
  ppc-fedora-add-ppc64-architecture-string.patch
  ppc-fedora-add-ppc64-architecture-to-extensions.diff
  ppc-fedora-add-ppc64-pthread-stack-size.patch
  ppc-fedora-dawn-fix-ppc64le-detection.patch
  ppc-fedora-fix-breakpad-compile.patch
  ppc-fedora-fix-clang-selection.patch
  ppc-fedora-fix-different-data-layouts.patch
  ppc-fedora-fix-partition-alloc-compile.patch
  ppc-fedora-fix-ppc64-linux-syscalls-headers.patch
  ppc-fedora-fix-ppc64-rust_png-build-error.patch
  ppc-fedora-fix-rust-linking.patch
  ppc-fedora-fix-rustc.patch
  ppc-fedora-fix-study-crash.patch
  ppc-fedora-fix-unknown-warning-option-messages.diff
  ppc-fedora-memory-allocator-dcheck-assert-fix.patch
  ppc-fedora-skia-vsx-instructions.patch
  ppc-fedora-use-sysconf-page-size-on-ppc64.patch

BETA DEBUG BEGIN:
  New:- added patches
    ppc-chromium-136-clang-config.patch
- disable swiftshader on ppc64le like on aarch64
  New:    
ppc-fedora-0001-third_party-angle-Include-missing-header-cstddef-in-.patch
    ppc-fedora-0001-Add-PPC64-support-for-boringssl.patch
    ppc-fedora-0001-third_party-libvpx-Properly-generate-gni-on-ppc64.patch
  New:    ppc-fedora-HACK-debian-clang-disable-base-musttail.patch
    ppc-fedora-0001-Add-ppc64-target-to-libaom.patch
    ppc-fedora-0001-Add-pregenerated-config-for-libaom-on-ppc64.patch
  New:    ppc-fedora-0001-Add-ppc64-target-to-libaom.patch
    ppc-fedora-0001-Add-pregenerated-config-for-libaom-on-ppc64.patch
    ppc-fedora-0002-third_party-libvpx-Remove-bad-ppc64-config.patch
  New:    ppc-fedora-use-sysconf-page-size-on-ppc64.patch
    ppc-fedora-0001-Enable-ppc64-pointer-compression.patch
    ppc-fedora-dawn-fix-ppc64le-detection.patch
  New:    ppc-fedora-0001-Implement-support-for-PPC64-on-Linux.patch
    ppc-fedora-0001-Force-baseline-POWER8-AltiVec-VSX-CPU-features-when-.patch
    ppc-fedora-fix-clang-selection.patch
  New:    ppc-fedora-0001-Implement-support-for-ppc64-on-Linux.patch
    ppc-fedora-0001-Implement-support-for-PPC64-on-Linux.patch
    ppc-fedora-0001-Force-baseline-POWER8-AltiVec-VSX-CPU-features-when-.patch
  New:    ppc-fedora-skia-vsx-instructions.patch
    ppc-fedora-0001-Implement-support-for-ppc64-on-Linux.patch
    ppc-fedora-0001-Implement-support-for-PPC64-on-Linux.patch
  New:    ppc-fedora-add-ppc64-architecture-string.patch
    ppc-fedora-0001-linux-seccomp-bpf-ppc64-glibc-workaround-in-SIGSYS-h.patch
    ppc-fedora-0001-sandbox-Enable-seccomp_bpf-for-ppc64.patch
  New:    
ppc-fedora-0001-linux-seccomp-bpf-ppc64-glibc-workaround-in-SIGSYS-h.patch
    ppc-fedora-0001-sandbox-Enable-seccomp_bpf-for-ppc64.patch
    ppc-fedora-0001-services-service_manager-sandbox-linux-Fix-TCGETS-de.patch
  New:    
ppc-fedora-0001-sandbox-linux-bpf_dsl-Update-syscall-ranges-for-ppc6.patch
    ppc-fedora-0001-sandbox-linux-Implement-partial-support-for-ppc64-sy.patch
    ppc-fedora-0001-sandbox-linux-Update-IsSyscallAllowed-in-broker_proc.patch
  New:    
ppc-fedora-0001-sandbox-linux-Implement-partial-support-for-ppc64-sy.patch
    ppc-fedora-0001-sandbox-linux-Update-IsSyscallAllowed-in-broker_proc.patch
    ppc-fedora-0001-sandbox-linux-Update-syscall-helpers-lists-for-ppc64.patch
  New:    
ppc-fedora-0001-sandbox-linux-Update-IsSyscallAllowed-in-broker_proc.patch
    ppc-fedora-0001-sandbox-linux-Update-syscall-helpers-lists-for-ppc64.patch
    ppc-fedora-0002-sandbox-linux-bpf_dsl-Modify-seccomp_macros-to-add-s.patch
  New:    
ppc-fedora-0001-services-service_manager-sandbox-linux-Fix-TCGETS-de.patch
    ppc-fedora-0001-sandbox-linux-bpf_dsl-Update-syscall-ranges-for-ppc6.patch
    ppc-fedora-0001-sandbox-linux-Implement-partial-support-for-ppc64-sy.patch
  New:    ppc-fedora-0001-sandbox-Enable-seccomp_bpf-for-ppc64.patch
    ppc-fedora-0001-services-service_manager-sandbox-linux-Fix-TCGETS-de.patch
    ppc-fedora-0001-sandbox-linux-bpf_dsl-Update-syscall-ranges-for-ppc6.patch
  New:    ppc-fedora-0002-third_party-lss-kernel-structs.patch
    ppc-fedora-0001-swiftshader-fix-build.patch
    ppc-fedora-Rtc_base-system-arch.h-PPC.patch
  New:    ppc-fedora-HACK-third_party-libvpx-use-generic-gnu.patch
    ppc-fedora-0001-third-party-hwy-wrong-include.patch
    ppc-fedora-HACK-debian-clang-disable-base-musttail.patch
  New:    ppc-fedora-0008-sandbox-fix-ppc64le-glibc234.patch
    ppc-fedora-0001-third_party-angle-Include-missing-header-cstddef-in-.patch
    ppc-fedora-0001-Add-PPC64-support-for-boringssl.patch
  New:    ppc-fedora-0001-Add-PPC64-support-for-boringssl.patch
    ppc-fedora-0001-third_party-libvpx-Properly-generate-gni-on-ppc64.patch
    ppc-fedora-0001-third_party-pffft-Include-altivec.h-on-ppc64-with-SI.patch
  New:    
ppc-fedora-0001-third_party-libvpx-Properly-generate-gni-on-ppc64.patch
    ppc-fedora-0001-third_party-pffft-Include-altivec.h-on-ppc64-with-SI.patch
    ppc-fedora-0002-Add-PPC64-generated-files-for-boringssl.patch
  New:    
ppc-fedora-0001-third_party-pffft-Include-altivec.h-on-ppc64-with-SI.patch
    ppc-fedora-0002-Add-PPC64-generated-files-for-boringssl.patch
    ppc-fedora-0002-third_party-lss-kernel-structs.patch
  New:    ppc-fedora-fix-different-data-layouts.patch
    ppc-fedora-0002-Add-ppc64-trap-instructions.patch
    ppc-fedora-fix-ppc64-linux-syscalls-headers.patch
  New:    ppc-fedora-Rtc_base-system-arch.h-PPC.patch
    ppc-fedora-0002-Include-cstddef-to-fix-build.patch
    ppc-fedora-0004-third_party-crashpad-port-curl-transport-ppc64.patch
  New:    
ppc-fedora-0001-sandbox-linux-Update-syscall-helpers-lists-for-ppc64.patch
    ppc-fedora-0002-sandbox-linux-bpf_dsl-Modify-seccomp_macros-to-add-s.patch
    ppc-fedora-0003-sandbox-linux-system_headers-Update-linux-seccomp-he.patch
  New:    ppc-fedora-0001-Add-pregenerated-config-for-libaom-on-ppc64.patch
    ppc-fedora-0002-third_party-libvpx-Remove-bad-ppc64-config.patch
    ppc-fedora-0003-third_party-libvpx-Add-ppc64-generated-config.patch
  New:    ppc-fedora-0002-Add-PPC64-generated-files-for-boringssl.patch
    ppc-fedora-0002-third_party-lss-kernel-structs.patch
    ppc-fedora-0001-swiftshader-fix-build.patch
  New:    
ppc-fedora-0002-sandbox-linux-bpf_dsl-Modify-seccomp_macros-to-add-s.patch
    ppc-fedora-0003-sandbox-linux-system_headers-Update-linux-seccomp-he.patch
    ppc-fedora-0004-sandbox-linux-system_headers-Update-linux-signal-hea.patch
  New:    ppc-fedora-0002-third_party-libvpx-Remove-bad-ppc64-config.patch
    ppc-fedora-0003-third_party-libvpx-Add-ppc64-generated-config.patch
    ppc-fedora-0004-third_party-libvpx-work-around-ambiguous-vsx.patch
  New:    
ppc-fedora-0003-sandbox-linux-system_headers-Update-linux-seccomp-he.patch
    ppc-fedora-0004-sandbox-linux-system_headers-Update-linux-signal-hea.patch
    ppc-fedora-0005-sandbox-linux-seccomp-bpf-Add-ppc64-syscall-stub.patch
  New:    ppc-fedora-0002-Include-cstddef-to-fix-build.patch
    ppc-fedora-0004-third_party-crashpad-port-curl-transport-ppc64.patch
    ppc-fedora-HACK-third_party-libvpx-use-generic-gnu.patch
  New:    ppc-fedora-0003-third_party-libvpx-Add-ppc64-generated-config.patch
    ppc-fedora-0004-third_party-libvpx-work-around-ambiguous-vsx.patch
    ppc-fedora-skia-vsx-instructions.patch
  New:    
ppc-fedora-0004-sandbox-linux-system_headers-Update-linux-signal-hea.patch
    ppc-fedora-0005-sandbox-linux-seccomp-bpf-Add-ppc64-syscall-stub.patch
    ppc-fedora-0005-sandbox-linux-update-unit-test-for-ppc64.patch
  New:    ppc-fedora-0005-sandbox-linux-seccomp-bpf-Add-ppc64-syscall-stub.patch
    ppc-fedora-0005-sandbox-linux-update-unit-test-for-ppc64.patch
    ppc-fedora-0006-sandbox-linux-disable-timedwait-time64-ppc64.patch
  New:    ppc-fedora-0005-sandbox-linux-update-unit-test-for-ppc64.patch
    ppc-fedora-0006-sandbox-linux-disable-timedwait-time64-ppc64.patch
    ppc-fedora-0007-sandbox-linux-add-ppc64-stat.patch
  New:    ppc-fedora-0006-sandbox-linux-disable-timedwait-time64-ppc64.patch
    ppc-fedora-0007-sandbox-linux-add-ppc64-stat.patch
    ppc-fedora-Sandbox-linux-services-credentials.cc-PPC.patch
  New:    ppc-fedora-Sandbox-linux-services-credentials.cc-PPC.patch
    ppc-fedora-0008-sandbox-fix-ppc64le-glibc234.patch
    ppc-fedora-0001-third_party-angle-Include-missing-header-cstddef-in-.patch
  New:    ppc-fedora-0001-third-party-hwy-wrong-include.patch
    ppc-fedora-HACK-debian-clang-disable-base-musttail.patch
    ppc-fedora-0001-Add-ppc64-target-to-libaom.patch
  New:    ppc-fedora-0004-third_party-crashpad-port-curl-transport-ppc64.patch
    ppc-fedora-HACK-third_party-libvpx-use-generic-gnu.patch
    ppc-fedora-0001-third-party-hwy-wrong-include.patch
  New:    ppc-fedora-0001-swiftshader-fix-build.patch
    ppc-fedora-Rtc_base-system-arch.h-PPC.patch
    ppc-fedora-0002-Include-cstddef-to-fix-build.patch
  New:    ppc-fedora-0007-sandbox-linux-add-ppc64-stat.patch
    ppc-fedora-Sandbox-linux-services-credentials.cc-PPC.patch
    ppc-fedora-0008-sandbox-fix-ppc64le-glibc234.patch
  New:- added patches (from fedora)
    ppc-fedora-add-ppc64-architecture-string.patch
    ppc-fedora-0001-linux-seccomp-bpf-ppc64-glibc-workaround-in-SIGSYS-h.patch
  New:    ppc-fedora-dawn-fix-ppc64le-detection.patch
    ppc-fedora-add-ppc64-architecture-to-extensions.diff
    ppc-fedora-fix-unknown-warning-option-messages.diff
  New:    ppc-fedora-fix-unknown-warning-option-messages.diff
    ppc-fedora-add-ppc64-pthread-stack-size.patch
    ppc-fedora-fix-ppc64-rust_png-build-error.patch
  New:    ppc-fedora-0001-Enable-ppc64-pointer-compression.patch
    ppc-fedora-dawn-fix-ppc64le-detection.patch
    ppc-fedora-add-ppc64-architecture-to-extensions.diff
  New:    ppc-fedora-fix-rust-linking.patch
    ppc-fedora-fix-breakpad-compile.patch
    ppc-fedora-fix-partition-alloc-compile.patch
  New:    
ppc-fedora-0001-Force-baseline-POWER8-AltiVec-VSX-CPU-features-when-.patch
    ppc-fedora-fix-clang-selection.patch
    ppc-fedora-fix-rustc.patch
  New:    ppc-fedora-memory-allocator-dcheck-assert-fix.patch
    ppc-fedora-fix-different-data-layouts.patch
    ppc-fedora-0002-Add-ppc64-trap-instructions.patch
  New:    ppc-fedora-fix-breakpad-compile.patch
    ppc-fedora-fix-partition-alloc-compile.patch
    ppc-fedora-fix-study-crash.patch
  New:    ppc-fedora-0002-Add-ppc64-trap-instructions.patch
    ppc-fedora-fix-ppc64-linux-syscalls-headers.patch
    ppc-fedora-use-sysconf-page-size-on-ppc64.patch
  New:    ppc-fedora-add-ppc64-pthread-stack-size.patch
    ppc-fedora-fix-ppc64-rust_png-build-error.patch
- added patches
  New:    ppc-fedora-fix-rustc.patch
    ppc-fedora-fix-rust-linking.patch
    ppc-fedora-fix-breakpad-compile.patch
  New:    ppc-fedora-fix-clang-selection.patch
    ppc-fedora-fix-rustc.patch
    ppc-fedora-fix-rust-linking.patch
  New:    ppc-fedora-fix-partition-alloc-compile.patch
    ppc-fedora-fix-study-crash.patch
    ppc-fedora-memory-allocator-dcheck-assert-fix.patch
  New:    ppc-fedora-add-ppc64-architecture-to-extensions.diff
    ppc-fedora-fix-unknown-warning-option-messages.diff
    ppc-fedora-add-ppc64-pthread-stack-size.patch
  New:    ppc-fedora-fix-study-crash.patch
    ppc-fedora-memory-allocator-dcheck-assert-fix.patch
    ppc-fedora-fix-different-data-layouts.patch
  New:    ppc-fedora-0004-third_party-libvpx-work-around-ambiguous-vsx.patch
    ppc-fedora-skia-vsx-instructions.patch
    ppc-fedora-0001-Implement-support-for-ppc64-on-Linux.patch
  New:    ppc-fedora-fix-ppc64-linux-syscalls-headers.patch
    ppc-fedora-use-sysconf-page-size-on-ppc64.patch
    ppc-fedora-0001-Enable-ppc64-pointer-compression.patch
BETA DEBUG END:

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ chromium.spec ++++++
--- /var/tmp/diff_new_pack.vzZfcd/_old  2025-05-16 08:32:29.929601129 +0200
+++ /var/tmp/diff_new_pack.vzZfcd/_new  2025-05-16 08:32:29.929601129 +0200
@@ -32,7 +32,7 @@
 %bcond_with gtk4
 %bcond_with qt5
 %endif
-%ifarch aarch64
+%ifarch aarch64 ppc64le riscv64
 %bcond_with swiftshader
 %else
 %bcond_without swiftshader
@@ -44,7 +44,7 @@
 # ERROR Unresolved dependencies.
 # //chrome/browser/ui/lens:unit_tests(//build/toolchain/linux/unbundle:default)
 #   needs 
//third_party/icu:icuuc_public(//build/toolchain/linux/unbundle:default)
-#bcond_without system_icu
+%bcond_with system_icu
 %bcond_without qt6
 %bcond_without ffmpeg_51
 %define ffmpeg_version 59
@@ -107,7 +107,7 @@
 %define n_suffix %{nil}
 %endif
 Name:           chromium%{n_suffix}
-Version:        136.0.7103.59
+Version:        136.0.7103.113
 Release:        0
 Summary:        Google's open source browser project
 License:        BSD-3-Clause AND LGPL-2.1-or-later
@@ -158,6 +158,64 @@
 Patch375:       chromium-131-fix-qt-ui.pach
 Patch376:       chromium-135-add_map_droppable.patch
 Patch377:       chromium-135-gperf-output.patch
+# conditionally applied patches ppc64le only
+Patch401:       ppc-fedora-add-ppc64-architecture-string.patch
+Patch402:       
ppc-fedora-0001-linux-seccomp-bpf-ppc64-glibc-workaround-in-SIGSYS-h.patch
+Patch403:       ppc-fedora-0001-sandbox-Enable-seccomp_bpf-for-ppc64.patch
+Patch404:       
ppc-fedora-0001-services-service_manager-sandbox-linux-Fix-TCGETS-de.patch
+Patch405:       
ppc-fedora-0001-sandbox-linux-bpf_dsl-Update-syscall-ranges-for-ppc6.patch
+Patch406:       
ppc-fedora-0001-sandbox-linux-Implement-partial-support-for-ppc64-sy.patch
+Patch407:       
ppc-fedora-0001-sandbox-linux-Update-IsSyscallAllowed-in-broker_proc.patch
+Patch408:       
ppc-fedora-0001-sandbox-linux-Update-syscall-helpers-lists-for-ppc64.patch
+Patch409:       
ppc-fedora-0002-sandbox-linux-bpf_dsl-Modify-seccomp_macros-to-add-s.patch
+Patch410:       
ppc-fedora-0003-sandbox-linux-system_headers-Update-linux-seccomp-he.patch
+Patch411:       
ppc-fedora-0004-sandbox-linux-system_headers-Update-linux-signal-hea.patch
+Patch412:       
ppc-fedora-0005-sandbox-linux-seccomp-bpf-Add-ppc64-syscall-stub.patch
+Patch413:       ppc-fedora-0005-sandbox-linux-update-unit-test-for-ppc64.patch
+Patch414:       
ppc-fedora-0006-sandbox-linux-disable-timedwait-time64-ppc64.patch
+Patch415:       ppc-fedora-0007-sandbox-linux-add-ppc64-stat.patch
+Patch416:       ppc-fedora-Sandbox-linux-services-credentials.cc-PPC.patch
+Patch417:       ppc-fedora-0008-sandbox-fix-ppc64le-glibc234.patch
+Patch418:       
ppc-fedora-0001-third_party-angle-Include-missing-header-cstddef-in-.patch
+Patch419:       ppc-fedora-0001-Add-PPC64-support-for-boringssl.patch
+Patch420:       
ppc-fedora-0001-third_party-libvpx-Properly-generate-gni-on-ppc64.patch
+Patch421:       
ppc-fedora-0001-third_party-pffft-Include-altivec.h-on-ppc64-with-SI.patch
+Patch422:       ppc-fedora-0002-Add-PPC64-generated-files-for-boringssl.patch
+Patch423:       ppc-fedora-0002-third_party-lss-kernel-structs.patch
+Patch424:       ppc-fedora-0001-swiftshader-fix-build.patch
+Patch425:       ppc-fedora-Rtc_base-system-arch.h-PPC.patch
+Patch426:       ppc-fedora-0002-Include-cstddef-to-fix-build.patch
+Patch427:       
ppc-fedora-0004-third_party-crashpad-port-curl-transport-ppc64.patch
+Patch428:       ppc-fedora-HACK-third_party-libvpx-use-generic-gnu.patch
+Patch429:       ppc-fedora-0001-third-party-hwy-wrong-include.patch
+Patch430:       ppc-fedora-HACK-debian-clang-disable-base-musttail.patch
+Patch431:       ppc-fedora-0001-Add-ppc64-target-to-libaom.patch
+Patch432:       
ppc-fedora-0001-Add-pregenerated-config-for-libaom-on-ppc64.patch
+Patch433:       
ppc-fedora-0002-third_party-libvpx-Remove-bad-ppc64-config.patch
+Patch434:       
ppc-fedora-0003-third_party-libvpx-Add-ppc64-generated-config.patch
+Patch435:       
ppc-fedora-0004-third_party-libvpx-work-around-ambiguous-vsx.patch
+Patch436:       ppc-fedora-skia-vsx-instructions.patch
+Patch437:       ppc-fedora-0001-Implement-support-for-ppc64-on-Linux.patch
+Patch438:       ppc-fedora-0001-Implement-support-for-PPC64-on-Linux.patch
+Patch439:       
ppc-fedora-0001-Force-baseline-POWER8-AltiVec-VSX-CPU-features-when-.patch
+Patch440:       ppc-fedora-fix-clang-selection.patch
+Patch441:       ppc-fedora-fix-rustc.patch
+Patch442:       ppc-fedora-fix-rust-linking.patch
+Patch443:       ppc-fedora-fix-breakpad-compile.patch
+Patch444:       ppc-fedora-fix-partition-alloc-compile.patch
+Patch445:       ppc-fedora-fix-study-crash.patch
+Patch446:       ppc-fedora-memory-allocator-dcheck-assert-fix.patch
+Patch447:       ppc-fedora-fix-different-data-layouts.patch
+Patch448:       ppc-fedora-0002-Add-ppc64-trap-instructions.patch
+Patch449:       ppc-fedora-fix-ppc64-linux-syscalls-headers.patch
+Patch450:       ppc-fedora-use-sysconf-page-size-on-ppc64.patch
+Patch451:       ppc-fedora-0001-Enable-ppc64-pointer-compression.patch
+Patch452:       ppc-fedora-dawn-fix-ppc64le-detection.patch
+Patch453:       ppc-fedora-add-ppc64-architecture-to-extensions.diff
+Patch454:       ppc-fedora-fix-unknown-warning-option-messages.diff
+Patch455:       ppc-fedora-add-ppc64-pthread-stack-size.patch
+Patch456:       ppc-fedora-fix-ppc64-rust_png-build-error.patch
+Patch457:       ppc-chromium-136-clang-config.patch
 # conditionally applied patches
 # patch where ffmpeg < 5
 Patch1002:      chromium-125-ffmpeg-5.x-reordered_opaque.patch
@@ -315,7 +373,7 @@
 Obsoletes:      chromium-ffmpeg < %{version}
 Obsoletes:      chromium-ffmpegsumo < %{version}
 # no 32bit supported and it takes ages to build
-ExclusiveArch:  x86_64 aarch64 riscv64
+ExclusiveArch:  x86_64 aarch64 riscv64 ppc64le
 %if 0%{?suse_version} <= 1500
 BuildRequires:  pkgconfig(glproto)
 %endif
@@ -428,8 +486,12 @@
 
 %prep
 %setup -q -n %{rname}-%{version}
-# apply all patches up to 999
-%autopatch -p1 -M 999
+# apply all patches up to 399
+%autopatch -p1 -M 399
+
+%ifarch ppc64le
+%autopatch -p1 -m 400 -M 499
+%endif
 
 %if %{without ffmpeg_51}
 # ffmpeg is too old
@@ -956,6 +1018,17 @@
 %ifarch riscv64
 myconf_gn+=" host_cpu=\"riscv64\""
 %endif
+%ifarch aarch64
+myconf_gn+=" host_cpu=\"arm64\""
+%if %{with arm_bti}
+myconf_gn+=" arm_control_flow_integrity=\"standard\""
+%else
+myconf_gn+=" arm_control_flow_integrity=\"none\""
+%endif
+%endif
+%ifarch ppc64le
+myconf_gn+=" host_cpu=\"ppc64\""
+%endif
 myconf_gn+=" host_os=\"linux\""
 myconf_gn+=" is_debug=false"
 myconf_gn+=" dcheck_always_on=false"
@@ -1045,15 +1118,6 @@
 myconf_gn+=" proprietary_codecs=true"
 myconf_gn+=" ffmpeg_branding=\"Chrome\""
 
-%ifarch aarch64
-myconf_gn+=" host_cpu=\"arm64\""
-%if %{with arm_bti}
-myconf_gn+=" arm_control_flow_integrity=\"standard\""
-%else
-myconf_gn+=" arm_control_flow_integrity=\"none\""
-%endif
-%endif
-
 # Set up Google API keys, see 
http://www.chromium.org/developers/how-tos/api-keys
 # Note: these are for the openSUSE Chromium builds ONLY. For your own 
distribution,
 # please get your own set of keys.

++++++ _scmsync.obsinfo ++++++
--- /var/tmp/diff_new_pack.vzZfcd/_old  2025-05-16 08:32:30.093607990 +0200
+++ /var/tmp/diff_new_pack.vzZfcd/_new  2025-05-16 08:32:30.097608157 +0200
@@ -1,6 +1,6 @@
-mtime: 1746197395
-commit: 66bbaf63b4671b1cbe7ab3f24181b18a8c3725eb92f15b53310687684fd93c2a
+mtime: 1747267435
+commit: 59433e07513aea31b8cdc823c99d2c5bed10d7ab34db6aa110c2cc8b8355fc29
 url: https://src.opensuse.org/chromium/chromium.git
-revision: 66bbaf63b4671b1cbe7ab3f24181b18a8c3725eb92f15b53310687684fd93c2a
+revision: 59433e07513aea31b8cdc823c99d2c5bed10d7ab34db6aa110c2cc8b8355fc29
 projectscmsync: https://src.opensuse.org/chromium/_ObsPrj.git
 

++++++ build.specials.obscpio ++++++

++++++ chromium-136.0.7103.59.tar.xz -> chromium-136.0.7103.113.tar.xz ++++++
/work/SRC/openSUSE:Leap:16.0/chromium/chromium-136.0.7103.59.tar.xz 
/work/SRC/openSUSE:Leap:16.0/.chromium.new.30101/chromium-136.0.7103.113.tar.xz 
differ: char 15, line 1


++++++ ppc-chromium-136-clang-config.patch ++++++
--- chromium-136.0.7103.92/build/config/clang/BUILD.gn  2025/05/13 09:47:39     
1.1
+++ chromium-136.0.7103.92/build/config/clang/BUILD.gn  2025/05/13 09:48:27
@@ -206,6 +206,8 @@
           _suffix = "-aarch64"
         } else if (current_cpu == "riscv64") {
           _suffix = "-riscv64"
+        } else if (current_cpu == "ppc64") {
+          _suffix = "-powerpc64le"
         } else {
           assert(false)  # Unhandled cpu type
         }

++++++ ppc-fedora-0001-Add-PPC64-support-for-boringssl.patch ++++++
++++ 8912 lines (skipped)

++++++ ppc-fedora-0001-Add-ppc64-target-to-libaom.patch ++++++
>From 40309fb53e39477490fd6928ebe67c4fb78de380 Mon Sep 17 00:00:00 2001
From: Shawn Anastasio <shawnanasta...@gmail.com>
Date: Sun, 10 Mar 2019 21:01:37 -0500
Subject: [PATCH] Add ppc64 target to libaom

---
 third_party/libaom/BUILD.gn        | 12 ++++++++++++
 third_party/libaom/cmake_update.sh |  3 +++
 2 files changed, 15 insertions(+)

Index: chromium-128.0.6613.113/third_party/libaom/BUILD.gn
===================================================================
--- chromium-128.0.6613.113.orig/third_party/libaom/BUILD.gn
+++ chromium-128.0.6613.113/third_party/libaom/BUILD.gn
@@ -275,6 +275,18 @@ if (current_cpu == "arm64") {
   }
 }
 
+if (current_cpu == "ppc64") {
+  source_set("libaom_intrinsics_vsx") {
+    configs -= [ "//build/config/compiler:chromium_code" ]
+    configs += [ "//build/config/compiler:no_chromium_code" ]
+    configs += [ ":libaom_config" ]
+    sources = [
+      "//third_party/libaom/source/libaom/aom_ports/ppc_cpudetect.c",
+    ]
+    sources += aom_av1_common_intrin_vsx
+  }
+}
+
 static_library("libaom") {
   check_includes = false
   if (!is_debug && is_win) {
@@ -338,6 +350,9 @@ static_library("libaom") {
     # This is needed by all arm boards due to aom_arm_cpu_caps()
     sources += [ "source/libaom/aom_ports/aarch32_cpudetect.c" ]
   }
+  if (current_cpu == "ppc64") {
+    deps += [ ":libaom_intrinsics_vsx" ]
+  }
   if (is_android) {
     deps += [ "//third_party/cpu_features:ndk_compat" ]
   }
Index: chromium-128.0.6613.113/third_party/libaom/cmake_update.sh
===================================================================
--- chromium-128.0.6613.113.orig/third_party/libaom/cmake_update.sh
+++ chromium-128.0.6613.113/third_party/libaom/cmake_update.sh
@@ -167,6 +167,9 @@
   "#define [A-Z0-9_]+[[:space:]]+[01]" "${CFG}/win/ia32/config/aom_config.h" \
   | awk '{print "%define " $2 " " $3}' > 
"${CFG}/win/ia32/config/aom_config.asm"
 
+reset_dirs linux/ppc64
+gen_config_files linux/ppc64 "${toolchain}/ppc-linux-gcc.cmake 
${all_platforms}"
+
 # Copy linux configurations and modify for Windows.
 reset_dirs win/x64
 cp "${CFG}/linux/x64/config"/* "${CFG}/win/x64/config/"

++++++ ppc-fedora-0001-Add-pregenerated-config-for-libaom-on-ppc64.patch ++++++
++++ 2267 lines (skipped)

++++++ ppc-fedora-0001-Enable-ppc64-pointer-compression.patch ++++++
Index: chromium-134.0.6998.117/v8/gni/v8.gni
===================================================================
--- chromium-134.0.6998.117.orig/v8/gni/v8.gni
+++ chromium-134.0.6998.117/v8/gni/v8.gni
@@ -224,7 +224,7 @@ assert(!(v8_enable_webassembly && v8_ena
 if (v8_enable_pointer_compression == "") {
   v8_enable_pointer_compression =
       v8_current_cpu == "arm64" || v8_current_cpu == "x64" ||
-      v8_current_cpu == "loong64"
+      v8_current_cpu == "loong64" || v8_current_cpu == "ppc64"
 }
 
 # The Wasm interpreter is currently supported only on arm64 and x64, on

++++++ 
ppc-fedora-0001-Force-baseline-POWER8-AltiVec-VSX-CPU-features-when-.patch 
++++++
>From ea104a841fca1ff4d5430915f1b7c52c6a642f13 Mon Sep 17 00:00:00 2001
From: Timothy Pearson <tpear...@raptorengineering.com>
Date: Fri, 21 Sep 2018 21:44:17 -0500
Subject: [PATCH] Force baseline POWER8 / AltiVec / VSX CPU features when on a
 PPC64 platform in LE mode

---
 BUILD.gn | 6 ++++++
 1 file changed, 6 insertions(+)

Index: chromium-130.0.6723.44/v8/BUILD.gn
===================================================================
--- chromium-130.0.6723.44.orig/v8/BUILD.gn
+++ chromium-130.0.6723.44/v8/BUILD.gn
@@ -1431,7 +1431,14 @@ config("toolchain") {
   if (v8_current_cpu == "ppc64") {
     defines += [ "V8_TARGET_ARCH_PPC64" ]
     cflags += [ "-ffp-contract=off" ]
-    if (current_os == "aix") {
+    if (current_os == "linux") {
+        cflags += [
+        # Enable usage of AltiVec, VSX, and other POWER8 and higher features
+        "-mcpu=power8",
+        "-maltivec",
+        "-mvsx",
+      ]
+    } else if (current_os == "aix") {
       cflags += [
         # Work around AIX ceil, trunc and round oddities.
         "-mcpu=power5+",

++++++ ppc-fedora-0001-Implement-support-for-PPC64-on-Linux.patch ++++++
++++ 1482 lines (skipped)

++++++ ppc-fedora-0001-Implement-support-for-ppc64-on-Linux.patch ++++++
++++ 774 lines (skipped)

++++++ 
ppc-fedora-0001-linux-seccomp-bpf-ppc64-glibc-workaround-in-SIGSYS-h.patch 
++++++
>From b3a14db7637232d30c878cc1f1ad6d8037e81379 Mon Sep 17 00:00:00 2001
From: Shawn Anastasio <sh...@anastas.io>
Date: Tue, 15 Jan 2019 22:42:21 -0600
Subject: [PATCH] linux/seccomp-bpf: ppc64+glibc workaround in SIGSYS handler

Workaround for an apparent issue with glibc negating syscall
parameters. Observed on a ppc64le machine with glibc.
More investigation required.
---
 sandbox/linux/seccomp-bpf/trap.cc | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

Index: chromium-128.0.6613.113/sandbox/linux/seccomp-bpf/trap.cc
===================================================================
--- chromium-128.0.6613.113.orig/sandbox/linux/seccomp-bpf/trap.cc
+++ chromium-128.0.6613.113/sandbox/linux/seccomp-bpf/trap.cc
@@ -236,6 +236,20 @@ void Trap::SigSys(int nr, LinuxSigInfo*
       SetIsInSigHandler();
     }
 
+#if defined(__powerpc64__)
+    // On ppc64+glibc, some syscalls seem to accidentally negate the first
+    // parameter which causes checks against it to fail. For now, manually
+    // negate them back.
+    // TODO(sh...@anastas.io): investigate this issue further
+    auto nr = SECCOMP_SYSCALL(ctx);
+    if (nr == __NR_openat || nr == __NR_mkdirat || nr == __NR_faccessat || nr 
== __NR_readlinkat ||
+        nr == __NR_renameat || nr == __NR_renameat2 || nr == __NR_newfstatat 
|| nr == __NR_unlinkat) {
+        if (static_cast<int>(SECCOMP_PARM1(ctx)) > 0) {
+            SECCOMP_PARM1(ctx) = -SECCOMP_PARM1(ctx);
+        }
+    }
+#endif
+
     // Copy the seccomp-specific data into a arch_seccomp_data structure. This
     // is what we are showing to TrapFnc callbacks that the system call
     // evaluator registered with the sandbox.

++++++ ppc-fedora-0001-sandbox-Enable-seccomp_bpf-for-ppc64.patch ++++++
>From 0c65e40ae578b743b5f06956597ebc9700768d18 Mon Sep 17 00:00:00 2001
From: Shawn Anastasio <shawnanasta...@yahoo.com>
Date: Thu, 9 Aug 2018 22:45:47 -0500
Subject: [PATCH 1/1] sandbox: Enable seccomp_bpf for ppc64

---
 sandbox/features.gni | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: chromium-128.0.6613.113/sandbox/features.gni
===================================================================
--- chromium-128.0.6613.113.orig/sandbox/features.gni
+++ chromium-128.0.6613.113/sandbox/features.gni
@@ -9,7 +9,8 @@
 use_seccomp_bpf = (is_linux || is_chromeos || is_android) &&
                   (current_cpu == "x86" || current_cpu == "x64" ||
                    current_cpu == "arm" || current_cpu == "arm64" ||
-                   current_cpu == "mipsel" || current_cpu == "mips64el")
+                   current_cpu == "mipsel" || current_cpu == "mips64el" ||
+                   current_cpu == "ppc64")
 
 # SSBD (Speculative Store Bypass Disable) is a mitigation of Spectre Variant 4.
 # As Spectre Variant 4 can be mitigated by site isolation, opt-out SSBD on site

++++++ 
ppc-fedora-0001-sandbox-linux-Implement-partial-support-for-ppc64-sy.patch 
++++++
>From 036d209a3f1a771de9aed31dfbe804aaf91d1c27 Mon Sep 17 00:00:00 2001
From: Shawn Anastasio <shawnanasta...@yahoo.com>
Date: Thu, 9 Aug 2018 23:35:21 -0500
Subject: [PATCH] sandbox/linux: Implement partial support for ppc64 syscalls
 and ucontext

Unlike other architectures, the ppc64 files currently rely on applicable
headers being provided by the system. It is sufficient for standard
GNU/Linux environments, but may require expansion elsewhere.
---
 sandbox/linux/BUILD.gn                              |  2 ++
 sandbox/linux/system_headers/linux_syscalls.h       |  4 ++++
 sandbox/linux/system_headers/linux_ucontext.h       |  2 ++
 sandbox/linux/system_headers/ppc64_linux_syscalls.h | 12 ++++++++++++
 sandbox/linux/system_headers/ppc64_linux_ucontext.h | 12 ++++++++++++
 5 files changed, 32 insertions(+)
 create mode 100644 sandbox/linux/system_headers/ppc64_linux_syscalls.h
 create mode 100644 sandbox/linux/system_headers/ppc64_linux_ucontext.h

Index: chromium-134.0.6998.35/sandbox/linux/BUILD.gn
===================================================================
--- chromium-134.0.6998.35.orig/sandbox/linux/BUILD.gn
+++ chromium-134.0.6998.35/sandbox/linux/BUILD.gn
@@ -384,6 +384,8 @@ component("sandbox_services") {
 
 source_set("sandbox_services_headers") {
   sources = [
+    "system_headers/ppc64_linux_syscalls.h",
+    "system_headers/ppc64_linux_ucontext.h",
     "system_headers/arm64_linux_syscalls.h",
     "system_headers/arm_linux_syscalls.h",
     "system_headers/arm_linux_ucontext.h",
Index: chromium-134.0.6998.35/sandbox/linux/system_headers/linux_syscalls.h
===================================================================
--- chromium-134.0.6998.35.orig/sandbox/linux/system_headers/linux_syscalls.h
+++ chromium-134.0.6998.35/sandbox/linux/system_headers/linux_syscalls.h
@@ -35,5 +35,9 @@
 #include "sandbox/linux/system_headers/arm64_linux_syscalls.h"
 #endif
 
+#if defined(__powerpc64__)
+#include "sandbox/linux/system_headers/ppc64_linux_syscalls.h"
+#endif
+
 #endif  // SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_SYSCALLS_H_
 
Index: 
chromium-134.0.6998.35/sandbox/linux/system_headers/ppc64_linux_syscalls.h
===================================================================
--- /dev/null
+++ chromium-134.0.6998.35/sandbox/linux/system_headers/ppc64_linux_syscalls.h
@@ -0,0 +1,12 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef SANDBOX_LINUX_SYSTEM_HEADERS_PPC64_LINUX_SYSCALLS_H_
+#define SANDBOX_LINUX_SYSTEM_HEADERS_PPC64_LINUX_SYSCALLS_H_
+
+#include <asm/unistd.h>
+
+//TODO: is it necessary to redefine syscall numbers for PPC64?
+
+#endif  // SANDBOX_LINUX_SYSTEM_HEADERS_PPC64_LINUX_SYSCALLS_H_
Index: 
chromium-134.0.6998.35/sandbox/linux/system_headers/ppc64_linux_ucontext.h
===================================================================
--- /dev/null
+++ chromium-134.0.6998.35/sandbox/linux/system_headers/ppc64_linux_ucontext.h
@@ -0,0 +1,12 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef SANDBOX_LINUX_SYSTEM_HEADERS_PPC64_LINUX_UCONTEXT_H_
+#define SANDBOX_LINUX_SYSTEM_HEADERS_PPC64_LINUX_UCONTEXT_H_
+
+#include <sys/ucontext.h>
+
+//TODO: is it necessary to redefine ucontext on PPC64?
+
+#endif  // SANDBOX_LINUX_SYSTEM_HEADERS_PPC64_LINUX_UCONTEXT_H_

++++++ 
ppc-fedora-0001-sandbox-linux-Update-IsSyscallAllowed-in-broker_proc.patch 
++++++
>From c41cd6ac927f592b161abc04468d3c7a4be91995 Mon Sep 17 00:00:00 2001
From: Shawn Anastasio <shawnanasta...@yahoo.com>
Date: Tue, 23 Oct 2018 15:49:31 -0500
Subject: [PATCH] sandbox/linux: Update IsSyscallAllowed in broker_process.cc

---
 sandbox/linux/syscall_broker/broker_process.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: chromium-128.0.6613.113/sandbox/linux/syscall_broker/broker_process.cc
===================================================================
--- chromium-128.0.6613.113.orig/sandbox/linux/syscall_broker/broker_process.cc
+++ chromium-128.0.6613.113/sandbox/linux/syscall_broker/broker_process.cc
@@ -169,7 +169,7 @@ bool BrokerProcess::IsSyscallBrokerable(
 #if defined(__NR_fstatat64)
     case __NR_fstatat64:
 #endif
-#if defined(__x86_64__) || defined(__aarch64__)
+#if defined(__x86_64__) || defined(__aarch64__) || defined(__powerpc64__)
     case __NR_newfstatat:
 #endif
       return !fast_check || policy_->allowed_command_set.test(COMMAND_STAT);

++++++ 
ppc-fedora-0001-sandbox-linux-Update-syscall-helpers-lists-for-ppc64.patch 
++++++
++++ 639 lines (skipped)

++++++ 
ppc-fedora-0001-sandbox-linux-bpf_dsl-Update-syscall-ranges-for-ppc6.patch 
++++++
>From c9043a422fb4a5a6c72aaa1b907cea5f6a3061dd Mon Sep 17 00:00:00 2001
From: Shawn Anastasio <shawnanasta...@yahoo.com>
Date: Thu, 9 Aug 2018 19:10:24 -0500
Subject: [PATCH 1/4] sandbox/linux/bpf_dsl: Update syscall ranges for ppc64

---
 sandbox/linux/bpf_dsl/linux_syscall_ranges.h | 7 +++++++
 1 file changed, 7 insertions(+)

Index: chromium-128.0.6613.113/sandbox/linux/bpf_dsl/linux_syscall_ranges.h
===================================================================
--- chromium-128.0.6613.113.orig/sandbox/linux/bpf_dsl/linux_syscall_ranges.h
+++ chromium-128.0.6613.113/sandbox/linux/bpf_dsl/linux_syscall_ranges.h
@@ -56,6 +56,13 @@
 #define MAX_PUBLIC_SYSCALL __NR_syscalls
 #define MAX_SYSCALL MAX_PUBLIC_SYSCALL
 
+#elif defined(__powerpc64__)
+
+#include <asm/unistd.h>
+#define MIN_SYSCALL 0u
+#define MAX_PUBLIC_SYSCALL 386u
+#define MAX_SYSCALL MAX_PUBLIC_SYSCALL
+
 #else
 #error "Unsupported architecture"
 #endif

++++++ 
ppc-fedora-0001-services-service_manager-sandbox-linux-Fix-TCGETS-de.patch 
++++++
>From 7468b266532bd607eb1f5292d758256d800b2eee Mon Sep 17 00:00:00 2001
From: Shawn Anastasio <shawnanasta...@yahoo.com>
Date: Fri, 10 Aug 2018 00:23:50 -0500
Subject: [PATCH] services/service_manager/sandbox/linux: Fix TCGETS
 declaration on PPC64

---
 .../sandbox/linux/bpf_renderer_policy_linux.cc               | 5 +++++
 1 file changed, 5 insertions(+)

Index: chromium-128.0.6613.113/sandbox/policy/linux/bpf_renderer_policy_linux.cc
===================================================================
--- 
chromium-128.0.6613.113.orig/sandbox/policy/linux/bpf_renderer_policy_linux.cc
+++ chromium-128.0.6613.113/sandbox/policy/linux/bpf_renderer_policy_linux.cc
@@ -15,6 +15,11 @@
 #include "sandbox/linux/system_headers/linux_syscalls.h"
 #include "sandbox/policy/linux/sandbox_linux.h"
 
+// On PPC64, TCGETS is defined in terms of struct termios, so we must include 
termios.h
+#ifdef __powerpc64__
+#include <termios.h>
+#endif
+
 // TODO(vignatti): replace the local definitions below with #include
 // <linux/dma-buf.h> once kernel version 4.6 becomes widely used.
 #include <linux/types.h>

++++++ ppc-fedora-0001-swiftshader-fix-build.patch ++++++
--- a/third_party/swiftshader/third_party/llvm-10.0/BUILD.gn
+++ b/third_party/swiftshader/third_party/llvm-10.0/BUILD.gn
@@ -1258,6 +1258,8 @@
     "llvm/lib/Target/PowerPC/PPCVSXFMAMutate.cpp",
     "llvm/lib/Target/PowerPC/PPCVSXSwapRemoval.cpp",
     "llvm/lib/Target/PowerPC/TargetInfo/PowerPCTargetInfo.cpp",
+    "llvm/lib/MC/MCXCOFFObjectTargetWriter.cpp",
+    "llvm/lib/MC/MCAsmInfoXCOFF.cpp",
   ]
 }
 

++++++ ppc-fedora-0001-third-party-hwy-wrong-include.patch ++++++
--- a/third_party/highway/src/hwy/targets.cc
+++ b/third_party/highway/src/hwy/targets.cc
@@ -35,7 +35,7 @@
     HWY_OS_LINUX
 // sys/auxv.h does not always include asm/hwcap.h, or define HWCAP*, hence we
 // still include this directly. See #1199.
-#ifndef TOOLCHAIN_MISS_ASM_HWCAP_H
+#if !defined(TOOLCHAIN_MISS_ASM_HWCAP_H) && !defined(HWY_ARCH_PPC)
 #include <asm/hwcap.h>
 #endif
 #if HWY_HAVE_AUXV

++++++ 
ppc-fedora-0001-third_party-angle-Include-missing-header-cstddef-in-.patch 
++++++
Index: chromium-128.0.6613.113/third_party/angle/src/libANGLE/Constants.h
===================================================================
--- chromium-128.0.6613.113.orig/third_party/angle/src/libANGLE/Constants.h
+++ chromium-128.0.6613.113/third_party/angle/src/libANGLE/Constants.h
@@ -9,6 +9,7 @@
 #ifndef LIBANGLE_CONSTANTS_H_
 #define LIBANGLE_CONSTANTS_H_
 
+#include <cstddef>
 #include "common/platform.h"
 
 #include <stddef.h>

++++++ ppc-fedora-0001-third_party-libvpx-Properly-generate-gni-on-ppc64.patch 
++++++
>From cc613c2e3bac8d4d1ff153700b819f964435923a Mon Sep 17 00:00:00 2001
From: Shawn Anastasio <shawnanasta...@yahoo.com>
Date: Tue, 4 Sep 2018 18:16:07 -0500
Subject: [PATCH] third_party/libvpx: Properly generate gni on ppc64

---
 third_party/libvpx/BUILD.gn        |  2 ++
 third_party/libvpx/generate_gni.sh | 10 ++++++++++
 2 files changed, 12 insertions(+)

Index: chromium-128.0.6613.113/third_party/libvpx/BUILD.gn
===================================================================
--- chromium-128.0.6613.113.orig/third_party/libvpx/BUILD.gn
+++ chromium-128.0.6613.113/third_party/libvpx/BUILD.gn
@@ -320,6 +320,8 @@ if (current_cpu == "x86" || (current_cpu
     } else if (current_cpu == "x64") {
       deps = [ ":libvpx_x86_64_headers" ]
       sources = libvpx_srcs_x86_64_avx512
+    } else if (current_cpu == "ppc64") {
+      sources = libvpx_srcs_ppc64
     }
   }
 }

++++++ 
ppc-fedora-0001-third_party-pffft-Include-altivec.h-on-ppc64-with-SI.patch 
++++++
>From 63e63a70766f3059ce5f1d06a95988ecf909b298 Mon Sep 17 00:00:00 2001
From: Shawn Anastasio <sh...@anastas.io>
Date: Wed, 24 Apr 2019 21:17:23 -0500
Subject: [PATCH] third_party/pffft: Include altivec.h on ppc64 with SIMD
 enabled

---
 third_party/pffft/src/pffft.c | 1 +
 1 file changed, 1 insertion(+)

Index: chromium-128.0.6613.113/third_party/pffft/src/pffft.c
===================================================================
--- chromium-128.0.6613.113.orig/third_party/pffft/src/pffft.c
+++ chromium-128.0.6613.113/third_party/pffft/src/pffft.c
@@ -100,6 +100,7 @@
    Altivec support macros 
 */
 #if !defined(PFFFT_SIMD_DISABLE) && (defined(__ppc__) || defined(__ppc64__))
+#include <altivec.h>
 typedef vector float v4sf;
 #  define SIMD_SZ 4
 #  define VZERO() ((vector float) vec_splat_u8(0))

++++++ ppc-fedora-0002-Add-PPC64-generated-files-for-boringssl.patch ++++++
++++ 5764 lines (skipped)

++++++ ppc-fedora-0002-Add-ppc64-trap-instructions.patch ++++++
Index: chromium-128.0.6613.113/v8/src/base/immediate-crash.h
===================================================================
--- chromium-128.0.6613.113.orig/v8/src/base/immediate-crash.h
+++ chromium-128.0.6613.113/v8/src/base/immediate-crash.h
@@ -98,6 +98,13 @@
 #define TRAP_SEQUENCE1_() asm volatile(".2byte 0x0001");
 #define TRAP_SEQUENCE2_() asm volatile("")
 
+#elif V8_HOST_ARCH_PPC64
+
+#define TRAP_SEQUENCE1_() asm volatile("trap")
+// Intentionally empty: __builtin_unreachable() is always part of the sequence
+// (see IMMEDIATE_CRASH below)
+#define TRAP_SEQUENCE2_() asm volatile("")
+
 #else
 
 // Crash report accuracy will not be guaranteed on other architectures, but at

++++++ ppc-fedora-0002-Include-cstddef-to-fix-build.patch ++++++
>From 82922bf486e9926a171152f61030dfcd53f017b8 Mon Sep 17 00:00:00 2001
From: Timothy Pearson <tpear...@raptorengineering.com>
Date: Thu, 30 Aug 2018 17:32:05 -0500
Subject: [PATCH] Include cstddef to fix build

size_t is not defined unless cstddef is included.
---
 third_party/crashpad/crashpad/compat/linux/sys/user.h  |   1 +

Index: 
chromium-127.0.6533.72/third_party/crashpad/crashpad/compat/linux/sys/user.h
===================================================================
--- 
chromium-127.0.6533.72.orig/third_party/crashpad/crashpad/compat/linux/sys/user.h
+++ chromium-127.0.6533.72/third_party/crashpad/crashpad/compat/linux/sys/user.h
@@ -15,6 +15,7 @@
 #ifndef CRASHPAD_COMPAT_LINUX_SYS_USER_H_
 #define CRASHPAD_COMPAT_LINUX_SYS_USER_H_
 
+#include <cstddef>
 #include_next <sys/user.h>
 
 #include <features.h>

++++++ 
ppc-fedora-0002-sandbox-linux-bpf_dsl-Modify-seccomp_macros-to-add-s.patch 
++++++
>From 3c4705bfdda45feb860a1f121631773e5fe8e53f Mon Sep 17 00:00:00 2001
From: Shawn Anastasio <shawnanasta...@yahoo.com>
Date: Thu, 9 Aug 2018 19:11:26 -0500
Subject: [PATCH 1/4] sandbox/linux/bpf_dsl: Modify seccomp_macros to add
 support for ppc64

---
 sandbox/linux/bpf_dsl/seccomp_macros.h | 43 ++++++++++++++++++++++++++
 1 file changed, 43 insertions(+)

Index: chromium-128.0.6613.113/sandbox/linux/bpf_dsl/seccomp_macros.h
===================================================================
--- chromium-128.0.6613.113.orig/sandbox/linux/bpf_dsl/seccomp_macros.h
+++ chromium-128.0.6613.113/sandbox/linux/bpf_dsl/seccomp_macros.h
@@ -14,6 +14,9 @@
 #if defined(__mips__)
 // sys/user.h in eglibc misses size_t definition
 #include <stddef.h>
+#elif defined(__powerpc64__)
+// Manually define greg_t on ppc64
+typedef unsigned long long greg_t;
 #endif
 #endif
 
@@ -343,6 +346,51 @@ struct regs_struct {
 #define SECCOMP_PT_PARM4(_regs) (_regs).regs[3]
 #define SECCOMP_PT_PARM5(_regs) (_regs).regs[4]
 #define SECCOMP_PT_PARM6(_regs) (_regs).regs[5]
+
+#elif defined(__powerpc64__)
+#include <asm/ptrace.h>
+
+typedef struct pt_regs regs_struct;
+
+#ifdef ARCH_CPU_LITTLE_ENDIAN
+#define SECCOMP_ARCH AUDIT_ARCH_PPC64LE
+#else
+#define SECCOMP_ARCH AUDIT_ARCH_PPC64
+#endif
+
+#define SECCOMP_REG(_ctx, _reg) ((_ctx)->uc_mcontext.regs->gpr[_reg])
+
+#define SECCOMP_RESULT(_ctx) SECCOMP_REG(_ctx, 3)
+#define SECCOMP_SYSCALL(_ctx) SECCOMP_REG(_ctx, 0)
+#define SECCOMP_IP(_ctx) (_ctx)->uc_mcontext.regs->nip
+#define SECCOMP_PARM1(_ctx) SECCOMP_REG(_ctx, 3)
+#define SECCOMP_PARM2(_ctx) SECCOMP_REG(_ctx, 4)
+#define SECCOMP_PARM3(_ctx) SECCOMP_REG(_ctx, 5)
+#define SECCOMP_PARM4(_ctx) SECCOMP_REG(_ctx, 6)
+#define SECCOMP_PARM5(_ctx) SECCOMP_REG(_ctx, 7)
+#define SECCOMP_PARM6(_ctx) SECCOMP_REG(_ctx, 8)
+
+#define SECCOMP_NR_IDX (offsetof(struct arch_seccomp_data, nr))
+#define SECCOMP_ARCH_IDX (offsetof(struct arch_seccomp_data, arch))
+#define SECCOMP_IP_MSB_IDX \
+  (offsetof(struct arch_seccomp_data, instruction_pointer) + 4)
+#define SECCOMP_IP_LSB_IDX \
+  (offsetof(struct arch_seccomp_data, instruction_pointer) + 0)
+#define SECCOMP_ARG_MSB_IDX(nr) \
+  (offsetof(struct arch_seccomp_data, args) + 8 * (nr) + 4)
+#define SECCOMP_ARG_LSB_IDX(nr) \
+  (offsetof(struct arch_seccomp_data, args) + 8 * (nr) + 0)
+
+#define SECCOMP_PT_RESULT(_regs) (_regs).gpr[3]
+#define SECCOMP_PT_SYSCALL(_regs) (_regs).gpr[0]
+#define SECCOMP_PT_IP(_regs) (_regs).nip
+#define SECCOMP_PT_PARM1(_regs) (_regs).gpr[3]
+#define SECCOMP_PT_PARM2(_regs) (_regs).gpr[4]
+#define SECCOMP_PT_PARM3(_regs) (_regs).gpr[5]
+#define SECCOMP_PT_PARM4(_regs) (_regs).gpr[6]
+#define SECCOMP_PT_PARM5(_regs) (_regs).gpr[7]
+#define SECCOMP_PT_PARM6(_regs) (_regs).gpr[8]
+
 #else
 #error Unsupported target platform
 

++++++ ppc-fedora-0002-third_party-libvpx-Remove-bad-ppc64-config.patch ++++++
++++ 3055 lines (skipped)

++++++ ppc-fedora-0002-third_party-lss-kernel-structs.patch ++++++
Index: chromium-136.0.7103.48/third_party/lss/linux_syscall_support.h
===================================================================
--- chromium-136.0.7103.48.orig/third_party/lss/linux_syscall_support.h
+++ chromium-136.0.7103.48/third_party/lss/linux_syscall_support.h
@@ -86,7 +86,7 @@
  * Porting to other related platforms should not be difficult.
  */
 #if (defined(__i386__) || defined(__x86_64__) || defined(__ARM_ARCH_3__) ||   \
-     defined(__mips__) || defined(__PPC__) || defined(__ARM_EABI__) || \
+     defined(__mips__) || defined(__PPC__) || defined(__powerpc64__) || 
defined(__ARM_EABI__) || \
      defined(__aarch64__) || defined(__s390__) || defined(__e2k__) ||  \
      (defined(__riscv) && __riscv_xlen == 64) || defined(__loongarch_lp64))  \
   && (defined(__linux) || defined(__ANDROID__))
@@ -398,7 +398,7 @@ struct kernel_stat64 {
   unsigned           __pad2;
   unsigned long long st_blocks;
 };
-#elif defined __PPC__
+#elif defined __PPC__ && !defined(__powerpc64__)
 struct kernel_stat64 {
   unsigned long long st_dev;
   unsigned long long st_ino;
@@ -420,6 +420,28 @@ struct kernel_stat64 {
   unsigned long      __unused4;
   unsigned long      __unused5;
 };
+#elif defined(__powerpc64__)
+struct kernel_stat64 {
+  unsigned long int  st_dev;
+  unsigned long int  st_ino;
+  unsigned int       st_mode;
+  unsigned long int  st_nlink;
+  unsigned int       st_uid;
+  unsigned int       st_gid;
+  unsigned long int  st_rdev;
+  unsigned short int __pad2;
+  long int           st_size;
+  long int           st_blksize;
+  long int           st_blocks;
+  long int           st_atime_;
+  unsigned long int  st_atime_nsec_;
+  long int           st_mtime_;
+  unsigned long int  st_mtime_nsec_;
+  long int           st_ctime_;
+  unsigned long int  st_ctime_nsec_;
+  unsigned long int  __unused4;
+  unsigned long int  __unused5;
+};
 #elif defined(__e2k__)
 struct kernel_stat64 {
   unsigned long long st_dev;
@@ -536,7 +558,7 @@ struct kernel_stat {
   uint64_t           st_ctime_nsec_;
   int64_t            __unused4[3];
 };
-#elif defined(__PPC__)
+#elif defined(__PPC__) && !defined(__powerpc64__)
 typedef unsigned long kernel_blkcnt_t;
 typedef unsigned long kernel_blksize_t;
 typedef unsigned kernel_dev_t;
@@ -567,6 +589,37 @@ struct kernel_stat {
   unsigned long      __unused4;
   unsigned long      __unused5;
 };
+#elif defined(__powerpc64__)
+typedef long int kernel_blkcnt_t;
+typedef long int kernel_blksize_t;
+typedef unsigned long int kernel_dev_t;
+typedef unsigned int kernel_gid_t;
+typedef unsigned long int kernel_ino_t;
+typedef unsigned int kernel_mode_t;
+typedef unsigned long int kernel_nlink_t;
+typedef long int kernel_off_t;
+typedef long int kernel_time_t;
+typedef unsigned int kernel_uid_t;
+struct kernel_stat {
+  kernel_dev_t       st_dev;
+  kernel_ino_t       st_ino;
+  kernel_mode_t      st_mode;
+  kernel_nlink_t     st_nlink;
+  kernel_uid_t       st_uid;
+  kernel_gid_t       st_gid;
+  kernel_dev_t       st_rdev;
+  kernel_off_t       st_size;
+  kernel_blksize_t   st_blksize;
+  kernel_blkcnt_t    st_blocks;
+  kernel_time_t      st_atime_;
+  unsigned long int  st_atime_nsec_;
+  kernel_time_t      st_mtime_;
+  unsigned long int  st_mtime_nsec_;
+  kernel_time_t      st_ctime_;
+  unsigned long int  st_ctime_nsec_;
+  unsigned long int  __unused4;
+  unsigned long int  __unused5;
+};
 #elif (defined(__mips__) && _MIPS_SIM != _MIPS_SIM_ABI64)
 typedef int kernel_blkcnt_t;
 typedef int kernel_blksize_t;
@@ -1823,6 +1876,28 @@ struct kernel_statx {
 #ifndef __NR_getcpu
 #define __NR_getcpu             302
 #endif
+
+/* Linux commit 86250b9d12caa1a3dee12a7cf638b7dd70eaadb6 (2010) adds
+ * direct socket system calls to PPC */
+#ifndef __NR_socket
+#define __NR_socket             326
+#endif
+#ifndef __NR_socketpair
+#define __NR_socketpair         333
+#endif
+#ifndef __NR_sendto
+#define __NR_sendto             335
+#endif
+#ifndef __NR_shutdown
+#define __NR_shutdown           338
+#endif
+#ifndef __NR_sendmsg
+#define __NR_sendmsg            341
+#endif
+#ifndef __NR_recvmsg
+#define __NR_recvmsg            342
+#endif
+
 /* End of powerpc definitions                                              */
 #elif defined(__s390__)
 #ifndef __NR_quotactl
@@ -4824,7 +4899,7 @@ struct kernel_statx {
     LSS_INLINE _syscall6(void*, mmap, void*, addr, size_t, length, int, prot,
                          int, flags, int, fd, int64_t, offset)
   #endif
-  #if defined(__PPC__)
+  #if defined(__PPC__) && !defined(__powerpc64__)
     #undef LSS_SC_LOADARGS_0
     #define LSS_SC_LOADARGS_0(dummy...)
     #undef LSS_SC_LOADARGS_1
@@ -5214,7 +5289,11 @@ struct kernel_statx {
 #endif
 
 #if !defined(__NR_pipe)
+#if defined(__powerpc64__)
+  LSS_INLINE pid_t LSS_NAME(pipe)(int *pipefd) {
+#else
   LSS_INLINE int LSS_NAME(pipe)(int *pipefd) {
+#endif
     return LSS_NAME(pipe2)(pipefd, 0);
   }
 #endif

++++++ 
ppc-fedora-0003-sandbox-linux-system_headers-Update-linux-seccomp-he.patch 
++++++
>From cca78240860abb63bbcfe94d1e5f04a1f23c527d Mon Sep 17 00:00:00 2001
From: Shawn Anastasio <shawnanasta...@yahoo.com>
Date: Thu, 9 Aug 2018 19:11:56 -0500
Subject: [PATCH 3/4] sandbox/linux/system_headers: Update linux seccomp header
 for ppc64

---
 sandbox/linux/system_headers/linux_seccomp.h | 10 ++++++++++
 1 file changed, 10 insertions(+)

Index: chromium-128.0.6613.113/sandbox/linux/system_headers/linux_seccomp.h
===================================================================
--- chromium-128.0.6613.113.orig/sandbox/linux/system_headers/linux_seccomp.h
+++ chromium-128.0.6613.113/sandbox/linux/system_headers/linux_seccomp.h
@@ -38,6 +38,9 @@
 #ifndef EM_AARCH64
 #define EM_AARCH64 183
 #endif
+#ifndef EM_PPC64
+#define EM_PPC64 21
+#endif
 
 #ifndef __AUDIT_ARCH_64BIT
 #define __AUDIT_ARCH_64BIT 0x80000000
@@ -70,6 +73,12 @@
 #ifndef AUDIT_ARCH_AARCH64
 #define AUDIT_ARCH_AARCH64 (EM_AARCH64 | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
 #endif
+#ifndef AUDIT_ARCH_PPC64
+#define AUDIT_ARCH_PPC64 (EM_PPC64 | __AUDIT_ARCH_64BIT)
+#endif
+#ifndef AUDIT_ARCH_PPC64LE
+#define AUDIT_ARCH_PPC64LE (EM_PPC64 | __AUDIT_ARCH_64BIT | __AUDIT_ARCH_LE)
+#endif
 
 // For prctl.h
 #ifndef PR_SET_SECCOMP

++++++ ppc-fedora-0003-third_party-libvpx-Add-ppc64-generated-config.patch 
++++++
++++ 5076 lines (skipped)

++++++ 
ppc-fedora-0004-sandbox-linux-system_headers-Update-linux-signal-hea.patch 
++++++
>From 298df3dc44f7121cd8cb9a06b29fa3b16c959b8d Mon Sep 17 00:00:00 2001
From: Shawn Anastasio <shawnanasta...@yahoo.com>
Date: Thu, 9 Aug 2018 19:13:25 -0500
Subject: [PATCH 4/4] sandbox/linux/system_headers: Update linux signal header
 for ppc64

---
 sandbox/linux/system_headers/linux_signal.h | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: chromium-128.0.6613.113/sandbox/linux/system_headers/linux_signal.h
===================================================================
--- chromium-128.0.6613.113.orig/sandbox/linux/system_headers/linux_signal.h
+++ chromium-128.0.6613.113/sandbox/linux/system_headers/linux_signal.h
@@ -13,7 +13,7 @@
 // (not undefined, but defined different values and in different memory
 // layouts). So, fill the gap here.
 #if defined(__i386__) || defined(__x86_64__) || defined(__arm__) || \
-    defined(__aarch64__)
+    defined(__aarch64__) || defined(__powerpc64__)
 
 #define LINUX_SIGHUP 1
 #define LINUX_SIGINT 2

++++++ ppc-fedora-0004-third_party-crashpad-port-curl-transport-ppc64.patch 
++++++
Index: 
chromium-128.0.6613.113/third_party/crashpad/crashpad/util/net/http_transport_libcurl.cc
===================================================================
--- 
chromium-128.0.6613.113.orig/third_party/crashpad/crashpad/util/net/http_transport_libcurl.cc
+++ 
chromium-128.0.6613.113/third_party/crashpad/crashpad/util/net/http_transport_libcurl.cc
@@ -239,6 +239,12 @@ std::string UserAgent() {
 #endif
 #elif defined (ARCH_CPU_RISCV64)
     static constexpr char arch[] = "riscv64";
+#elif defined(__powerpc64__)
+#if defined(ARCH_CPU_LITTLE_ENDIAN)
+    static constexpr char arch[] = "ppc64";
+#elif defined(ARCH_CPU_BIG_ENDIAN)
+    static constexpr char arch[] = "ppc64_be";
+#endif
 #else
 #error Port
 #endif

++++++ ppc-fedora-0004-third_party-libvpx-work-around-ambiguous-vsx.patch ++++++
Index: 
chromium-136.0.7103.48/third_party/libvpx/source/libvpx/vp9/encoder/ppc/vp9_quantize_vsx.c
===================================================================
--- 
chromium-136.0.7103.48.orig/third_party/libvpx/source/libvpx/vp9/encoder/ppc/vp9_quantize_vsx.c
+++ 
chromium-136.0.7103.48/third_party/libvpx/source/libvpx/vp9/encoder/ppc/vp9_quantize_vsx.c
@@ -38,6 +38,28 @@ static INLINE int16x8_t vec_max_across(i
   return vec_max(a, vec_perm(a, a, vec_perm16));
 }
 
+static INLINE void
+vec_u64_store(vector unsigned long long vecu64, unsigned long offset, void 
*ptr)
+{
+#ifndef WORDS_BIGENDIAN
+  __asm__ ("xxswapd %x0, %x1"
+          : "=wa" (vecu64)
+          : "wa" (vecu64));
+#endif
+#if __GNUC__ >= 4
+  if (__builtin_constant_p (offset) && offset == 0)
+    __asm__ ("stxvd2x %x0,0,%1\n\t"
+            :
+            : "wa" (vecu64), "r" ((uintptr_t)ptr)
+            : "memory");
+  else
+#endif
+    __asm__ ("stxvd2x %x0,%1,%2\n\t"
+            :
+            : "wa" (vecu64), "r" (offset), "r" ((uintptr_t)ptr)
+            : "memory", "r0");
+}
+
 void vp9_quantize_fp_vsx(const tran_low_t *coeff_ptr, intptr_t n_coeffs,
                          const int16_t *round_ptr, const int16_t *quant_ptr,
                          tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr,
@@ -60,10 +82,10 @@ void vp9_quantize_fp_vsx(const tran_low_
   qcoeff0 = vec_mulhi(vec_vaddshs(vec_abs(coeff0), round), quant);
   zero_coeff0 = vec_cmpeq(qcoeff0, vec_zeros_s16);
   qcoeff0 = vec_sign(qcoeff0, coeff0);
-  vec_vsx_st(qcoeff0, 0, qcoeff_ptr);
+  vec_u64_store(qcoeff0, 0, qcoeff_ptr);
 
   dqcoeff0 = vec_mladd(qcoeff0, dequant, vec_zeros_s16);
-  vec_vsx_st(dqcoeff0, 0, dqcoeff_ptr);
+  vec_u64_store(dqcoeff0, 0, dqcoeff_ptr);
 
   // Remove DC value from round and quant
   round = vec_splat(round, 1);
@@ -76,10 +98,10 @@ void vp9_quantize_fp_vsx(const tran_low_
   qcoeff1 = vec_mulhi(vec_vaddshs(vec_abs(coeff1), round), quant);
   zero_coeff1 = vec_cmpeq(qcoeff1, vec_zeros_s16);
   qcoeff1 = vec_sign(qcoeff1, coeff1);
-  vec_vsx_st(qcoeff1, 16, qcoeff_ptr);
+  vec_u64_store(qcoeff1, 16, qcoeff_ptr);
 
   dqcoeff1 = vec_mladd(qcoeff1, dequant, vec_zeros_s16);
-  vec_vsx_st(dqcoeff1, 16, dqcoeff_ptr);
+  vec_u64_store(dqcoeff1, 16, dqcoeff_ptr);
 
   eob = vec_max(vec_or(scan0, zero_coeff0), vec_or(scan1, zero_coeff1));
 
@@ -107,23 +129,23 @@ void vp9_quantize_fp_vsx(const tran_low_
       qcoeff0 = vec_mulhi(vec_vaddshs(vec_abs(coeff0), round), quant);
       zero_coeff0 = vec_cmpeq(qcoeff0, vec_zeros_s16);
       qcoeff0 = vec_sign(qcoeff0, coeff0);
-      vec_vsx_st(qcoeff0, off0, qcoeff_ptr);
+      vec_u64_store(qcoeff0, off0, qcoeff_ptr);
       dqcoeff0 = vec_mladd(qcoeff0, dequant, vec_zeros_s16);
-      vec_vsx_st(dqcoeff0, off0, dqcoeff_ptr);
+      vec_u64_store(dqcoeff0, off0, dqcoeff_ptr);
 
       qcoeff1 = vec_mulhi(vec_vaddshs(vec_abs(coeff1), round), quant);
       zero_coeff1 = vec_cmpeq(qcoeff1, vec_zeros_s16);
       qcoeff1 = vec_sign(qcoeff1, coeff1);
-      vec_vsx_st(qcoeff1, off1, qcoeff_ptr);
+      vec_u64_store(qcoeff1, off1, qcoeff_ptr);
       dqcoeff1 = vec_mladd(qcoeff1, dequant, vec_zeros_s16);
-      vec_vsx_st(dqcoeff1, off1, dqcoeff_ptr);
+      vec_u64_store(dqcoeff1, off1, dqcoeff_ptr);
 
       qcoeff2 = vec_mulhi(vec_vaddshs(vec_abs(coeff2), round), quant);
       zero_coeff2 = vec_cmpeq(qcoeff2, vec_zeros_s16);
       qcoeff2 = vec_sign(qcoeff2, coeff2);
-      vec_vsx_st(qcoeff2, off2, qcoeff_ptr);
+      vec_u64_store(qcoeff2, off2, qcoeff_ptr);
       dqcoeff2 = vec_mladd(qcoeff2, dequant, vec_zeros_s16);
-      vec_vsx_st(dqcoeff2, off2, dqcoeff_ptr);
+      vec_u64_store(dqcoeff2, off2, dqcoeff_ptr);
 
       eob = vec_max(eob, vec_or(scan0, zero_coeff0));
       eob2 = vec_max(vec_or(scan1, zero_coeff1), vec_or(scan2, zero_coeff2));
@@ -200,10 +222,10 @@ void vp9_quantize_fp_32x32_vsx(const tra
   qcoeff0 = vec_and(qcoeff0, mask0);
   zero_coeff0 = vec_cmpeq(qcoeff0, vec_zeros_s16);
   qcoeff0 = vec_sign(qcoeff0, coeff0);
-  vec_vsx_st(qcoeff0, 0, qcoeff_ptr);
+  vec_u64_store(qcoeff0, 0, qcoeff_ptr);
 
   dqcoeff0 = dequantize_coeff_32(qcoeff0, dequant);
-  vec_vsx_st(dqcoeff0, 0, dqcoeff_ptr);
+  vec_u64_store(dqcoeff0, 0, dqcoeff_ptr);
 
   // Remove DC value from thres, round, quant and dequant
   thres = vec_splat(thres, 1);
@@ -219,10 +241,10 @@ void vp9_quantize_fp_32x32_vsx(const tra
   qcoeff1 = vec_and(qcoeff1, mask1);
   zero_coeff1 = vec_cmpeq(qcoeff1, vec_zeros_s16);
   qcoeff1 = vec_sign(qcoeff1, coeff1);
-  vec_vsx_st(qcoeff1, 16, qcoeff_ptr);
+  vec_u64_store(qcoeff1, 16, qcoeff_ptr);
 
   dqcoeff1 = dequantize_coeff_32(qcoeff1, dequant);
-  vec_vsx_st(dqcoeff1, 16, dqcoeff_ptr);
+  vec_u64_store(dqcoeff1, 16, dqcoeff_ptr);
 
   eob = vec_max(vec_or(scan0, zero_coeff0), vec_or(scan1, zero_coeff1));
 
@@ -260,17 +282,17 @@ void vp9_quantize_fp_32x32_vsx(const tra
     qcoeff1 = vec_sign(qcoeff1, coeff1);
     qcoeff2 = vec_sign(qcoeff2, coeff2);
 
-    vec_vsx_st(qcoeff0, off0, qcoeff_ptr);
-    vec_vsx_st(qcoeff1, off1, qcoeff_ptr);
-    vec_vsx_st(qcoeff2, off2, qcoeff_ptr);
+    vec_u64_store(qcoeff0, off0, qcoeff_ptr);
+    vec_u64_store(qcoeff1, off1, qcoeff_ptr);
+    vec_u64_store(qcoeff2, off2, qcoeff_ptr);
 
     dqcoeff0 = dequantize_coeff_32(qcoeff0, dequant);
     dqcoeff1 = dequantize_coeff_32(qcoeff1, dequant);
     dqcoeff2 = dequantize_coeff_32(qcoeff2, dequant);
 
-    vec_vsx_st(dqcoeff0, off0, dqcoeff_ptr);
-    vec_vsx_st(dqcoeff1, off1, dqcoeff_ptr);
-    vec_vsx_st(dqcoeff2, off2, dqcoeff_ptr);
+    vec_u64_store(dqcoeff0, off0, dqcoeff_ptr);
+    vec_u64_store(dqcoeff1, off1, dqcoeff_ptr);
+    vec_u64_store(dqcoeff2, off2, dqcoeff_ptr);
 
     eob = vec_max(eob, vec_or(scan0, zero_coeff0));
     eob2 = vec_max(vec_or(scan1, zero_coeff1), vec_or(scan2, zero_coeff2));
Index: 
chromium-136.0.7103.48/third_party/libvpx/source/libvpx/vpx_dsp/ppc/fdct32x32_vsx.c
===================================================================
--- 
chromium-136.0.7103.48.orig/third_party/libvpx/source/libvpx/vpx_dsp/ppc/fdct32x32_vsx.c
+++ 
chromium-136.0.7103.48/third_party/libvpx/source/libvpx/vpx_dsp/ppc/fdct32x32_vsx.c
@@ -15,6 +15,28 @@
 #include "vpx_dsp/ppc/txfm_common_vsx.h"
 #include "vpx_dsp/ppc/types_vsx.h"
 
+static INLINE void
+vec_u64_store(vector unsigned long long vecu64, unsigned long offset, void 
*ptr)
+{
+#ifndef WORDS_BIGENDIAN
+  __asm__ ("xxswapd %x0, %x1"
+          : "=wa" (vecu64)
+          : "wa" (vecu64));
+#endif
+#if __GNUC__ >= 4
+  if (__builtin_constant_p (offset) && offset == 0)
+    __asm__ ("stxvd2x %x0,0,%1\n\t"
+            :
+            : "wa" (vecu64), "r" ((uintptr_t)ptr)
+            : "memory");
+  else
+#endif
+    __asm__ ("stxvd2x %x0,%1,%2\n\t"
+            :
+            : "wa" (vecu64), "r" (offset), "r" ((uintptr_t)ptr)
+            : "memory", "r0");
+}
+
 // Returns ((a +/- b) * cospi16 + (2 << 13)) >> 14.
 static INLINE void single_butterfly(int16x8_t a, int16x8_t b, int16x8_t *add,
                                     int16x8_t *sub) {
@@ -164,45 +186,45 @@ static INLINE void load(const int16_t *a
 }
 
 static INLINE void store(tran_low_t *a, const int16x8_t *b) {
-  vec_vsx_st(b[0], 0, a);
-  vec_vsx_st(b[8], 0, a + 8);
-  vec_vsx_st(b[16], 0, a + 16);
-  vec_vsx_st(b[24], 0, a + 24);
-
-  vec_vsx_st(b[1], 0, a + 32);
-  vec_vsx_st(b[9], 0, a + 40);
-  vec_vsx_st(b[17], 0, a + 48);
-  vec_vsx_st(b[25], 0, a + 56);
-
-  vec_vsx_st(b[2], 0, a + 64);
-  vec_vsx_st(b[10], 0, a + 72);
-  vec_vsx_st(b[18], 0, a + 80);
-  vec_vsx_st(b[26], 0, a + 88);
-
-  vec_vsx_st(b[3], 0, a + 96);
-  vec_vsx_st(b[11], 0, a + 104);
-  vec_vsx_st(b[19], 0, a + 112);
-  vec_vsx_st(b[27], 0, a + 120);
-
-  vec_vsx_st(b[4], 0, a + 128);
-  vec_vsx_st(b[12], 0, a + 136);
-  vec_vsx_st(b[20], 0, a + 144);
-  vec_vsx_st(b[28], 0, a + 152);
-
-  vec_vsx_st(b[5], 0, a + 160);
-  vec_vsx_st(b[13], 0, a + 168);
-  vec_vsx_st(b[21], 0, a + 176);
-  vec_vsx_st(b[29], 0, a + 184);
-
-  vec_vsx_st(b[6], 0, a + 192);
-  vec_vsx_st(b[14], 0, a + 200);
-  vec_vsx_st(b[22], 0, a + 208);
-  vec_vsx_st(b[30], 0, a + 216);
-
-  vec_vsx_st(b[7], 0, a + 224);
-  vec_vsx_st(b[15], 0, a + 232);
-  vec_vsx_st(b[23], 0, a + 240);
-  vec_vsx_st(b[31], 0, a + 248);
+  vec_u64_store(b[0], 0, a);
+  vec_u64_store(b[8], 0, a + 8);
+  vec_u64_store(b[16], 0, a + 16);
+  vec_u64_store(b[24], 0, a + 24);
+
+  vec_u64_store(b[1], 0, a + 32);
+  vec_u64_store(b[9], 0, a + 40);
+  vec_u64_store(b[17], 0, a + 48);
+  vec_u64_store(b[25], 0, a + 56);
+
+  vec_u64_store(b[2], 0, a + 64);
+  vec_u64_store(b[10], 0, a + 72);
+  vec_u64_store(b[18], 0, a + 80);
+  vec_u64_store(b[26], 0, a + 88);
+
+  vec_u64_store(b[3], 0, a + 96);
+  vec_u64_store(b[11], 0, a + 104);
+  vec_u64_store(b[19], 0, a + 112);
+  vec_u64_store(b[27], 0, a + 120);
+
+  vec_u64_store(b[4], 0, a + 128);
+  vec_u64_store(b[12], 0, a + 136);
+  vec_u64_store(b[20], 0, a + 144);
+  vec_u64_store(b[28], 0, a + 152);
+
+  vec_u64_store(b[5], 0, a + 160);
+  vec_u64_store(b[13], 0, a + 168);
+  vec_u64_store(b[21], 0, a + 176);
+  vec_u64_store(b[29], 0, a + 184);
+
+  vec_u64_store(b[6], 0, a + 192);
+  vec_u64_store(b[14], 0, a + 200);
+  vec_u64_store(b[22], 0, a + 208);
+  vec_u64_store(b[30], 0, a + 216);
+
+  vec_u64_store(b[7], 0, a + 224);
+  vec_u64_store(b[15], 0, a + 232);
+  vec_u64_store(b[23], 0, a + 240);
+  vec_u64_store(b[31], 0, a + 248);
 }
 
 // Returns 1 if negative 0 if positive
Index: 
chromium-136.0.7103.48/third_party/libvpx/source/libvpx/vpx_dsp/ppc/quantize_vsx.c
===================================================================
--- 
chromium-136.0.7103.48.orig/third_party/libvpx/source/libvpx/vpx_dsp/ppc/quantize_vsx.c
+++ 
chromium-136.0.7103.48/third_party/libvpx/source/libvpx/vpx_dsp/ppc/quantize_vsx.c
@@ -13,6 +13,28 @@
 #include "./vpx_dsp_rtcd.h"
 #include "vpx_dsp/ppc/types_vsx.h"
 
+static INLINE void
+vec_u64_store(vector unsigned long long vecu64, unsigned long offset, void 
*ptr)
+{
+#ifndef WORDS_BIGENDIAN
+  __asm__ ("xxswapd %x0, %x1"
+          : "=wa" (vecu64)
+          : "wa" (vecu64));
+#endif
+#if __GNUC__ >= 4
+  if (__builtin_constant_p (offset) && offset == 0)
+    __asm__ ("stxvd2x %x0,0,%1\n\t"
+            :
+            : "wa" (vecu64), "r" ((uintptr_t)ptr)
+            : "memory");
+  else
+#endif
+    __asm__ ("stxvd2x %x0,%1,%2\n\t"
+            :
+            : "wa" (vecu64), "r" (offset), "r" ((uintptr_t)ptr)
+            : "memory", "r0");
+}
+
 // Negate 16-bit integers in a when the corresponding signed 16-bit
 // integer in b is negative.
 static INLINE int16x8_t vec_sign(int16x8_t a, int16x8_t b) {
@@ -124,19 +146,19 @@ void vpx_quantize_b_vsx(const tran_low_t
 
   qcoeff0 =
       quantize_coeff(coeff0, coeff0_abs, round, quant, quant_shift, 
zero_mask0);
-  vec_vsx_st(qcoeff0, 0, qcoeff_ptr);
+  vec_u64_store(qcoeff0, 0, qcoeff_ptr);
   round = vec_splat(round, 1);
   quant = vec_splat(quant, 1);
   quant_shift = vec_splat(quant_shift, 1);
   qcoeff1 =
       quantize_coeff(coeff1, coeff1_abs, round, quant, quant_shift, 
zero_mask1);
-  vec_vsx_st(qcoeff1, 16, qcoeff_ptr);
+  vec_u64_store(qcoeff1, 16, qcoeff_ptr);
 
   dqcoeff0 = vec_mladd(qcoeff0, dequant, vec_zeros_s16);
-  vec_vsx_st(dqcoeff0, 0, dqcoeff_ptr);
+  vec_u64_store(dqcoeff0, 0, dqcoeff_ptr);
   dequant = vec_splat(dequant, 1);
   dqcoeff1 = vec_mladd(qcoeff1, dequant, vec_zeros_s16);
-  vec_vsx_st(dqcoeff1, 16, dqcoeff_ptr);
+  vec_u64_store(dqcoeff1, 16, dqcoeff_ptr);
 
   eob = vec_max(nonzero_scanindex(qcoeff0, iscan_ptr, 0),
                 nonzero_scanindex(qcoeff1, iscan_ptr, 16));
@@ -164,17 +186,17 @@ void vpx_quantize_b_vsx(const tran_low_t
                                zero_mask1);
       qcoeff2 = quantize_coeff(coeff2, coeff2_abs, round, quant, quant_shift,
                                zero_mask2);
-      vec_vsx_st(qcoeff0, off0, qcoeff_ptr);
-      vec_vsx_st(qcoeff1, off1, qcoeff_ptr);
-      vec_vsx_st(qcoeff2, off2, qcoeff_ptr);
+      vec_u64_store(qcoeff0, off0, qcoeff_ptr);
+      vec_u64_store(qcoeff1, off1, qcoeff_ptr);
+      vec_u64_store(qcoeff2, off2, qcoeff_ptr);
 
       dqcoeff0 = vec_mladd(qcoeff0, dequant, vec_zeros_s16);
       dqcoeff1 = vec_mladd(qcoeff1, dequant, vec_zeros_s16);
       dqcoeff2 = vec_mladd(qcoeff2, dequant, vec_zeros_s16);
 
-      vec_vsx_st(dqcoeff0, off0, dqcoeff_ptr);
-      vec_vsx_st(dqcoeff1, off1, dqcoeff_ptr);
-      vec_vsx_st(dqcoeff2, off2, dqcoeff_ptr);
+      vec_u64_store(dqcoeff0, off0, dqcoeff_ptr);
+      vec_u64_store(dqcoeff1, off1, dqcoeff_ptr);
+      vec_u64_store(dqcoeff2, off2, dqcoeff_ptr);
 
       eob = vec_max(eob, nonzero_scanindex(qcoeff0, iscan_ptr, off0));
       eob2 = vec_max(nonzero_scanindex(qcoeff1, iscan_ptr, off1),
@@ -243,12 +265,12 @@ void vpx_quantize_b_32x32_vsx(const tran
   qcoeff1 = quantize_coeff_32(coeff1, coeff1_abs, round, quant, quant_shift,
                               zero_mask1);
 
-  vec_vsx_st(qcoeff0, 0, qcoeff_ptr);
-  vec_vsx_st(qcoeff1, 16, qcoeff_ptr);
+  vec_u64_store(qcoeff0, 0, qcoeff_ptr);
+  vec_u64_store(qcoeff1, 16, qcoeff_ptr);
 
-  vec_vsx_st(dequantize_coeff_32(qcoeff0, dequant), 0, dqcoeff_ptr);
+  vec_u64_store(dequantize_coeff_32(qcoeff0, dequant), 0, dqcoeff_ptr);
   dequant = vec_splat(dequant, 1);  // remove DC from dequant
-  vec_vsx_st(dequantize_coeff_32(qcoeff1, dequant), 16, dqcoeff_ptr);
+  vec_u64_store(dequantize_coeff_32(qcoeff1, dequant), 16, dqcoeff_ptr);
 
   eob = vec_max(nonzero_scanindex(qcoeff0, iscan_ptr, 0),
                 nonzero_scanindex(qcoeff1, iscan_ptr, 16));
@@ -276,13 +298,13 @@ void vpx_quantize_b_32x32_vsx(const tran
     qcoeff2 = quantize_coeff_32(coeff2, coeff2_abs, round, quant, quant_shift,
                                 zero_mask2);
 
-    vec_vsx_st(qcoeff0, off0, qcoeff_ptr);
-    vec_vsx_st(qcoeff1, off1, qcoeff_ptr);
-    vec_vsx_st(qcoeff2, off2, qcoeff_ptr);
-
-    vec_vsx_st(dequantize_coeff_32(qcoeff0, dequant), off0, dqcoeff_ptr);
-    vec_vsx_st(dequantize_coeff_32(qcoeff1, dequant), off1, dqcoeff_ptr);
-    vec_vsx_st(dequantize_coeff_32(qcoeff2, dequant), off2, dqcoeff_ptr);
+    vec_u64_store(qcoeff0, off0, qcoeff_ptr);
+    vec_u64_store(qcoeff1, off1, qcoeff_ptr);
+    vec_u64_store(qcoeff2, off2, qcoeff_ptr);
+
+    vec_u64_store(dequantize_coeff_32(qcoeff0, dequant), off0, dqcoeff_ptr);
+    vec_u64_store(dequantize_coeff_32(qcoeff1, dequant), off1, dqcoeff_ptr);
+    vec_u64_store(dequantize_coeff_32(qcoeff2, dequant), off2, dqcoeff_ptr);
 
     eob = vec_max(eob, nonzero_scanindex(qcoeff0, iscan_ptr, off0));
     eob2 = vec_max(nonzero_scanindex(qcoeff1, iscan_ptr, off1),

++++++ ppc-fedora-0005-sandbox-linux-seccomp-bpf-Add-ppc64-syscall-stub.patch 
++++++
>From 1d44643a7c7cf650efd1093d22cd5bf859fdcb51 Mon Sep 17 00:00:00 2001
From: Shawn Anastasio <shawnanasta...@yahoo.com>
Date: Thu, 9 Aug 2018 20:52:13 -0500
Subject: [PATCH] sandbox/linux/seccomp-bpf: Add ppc64 syscall stub

---
 sandbox/linux/seccomp-bpf/syscall.cc | 53 ++++++++++++++++++++++++++--
 1 file changed, 51 insertions(+), 2 deletions(-)

Index: chromium-128.0.6613.113/sandbox/linux/seccomp-bpf/syscall.cc
===================================================================
--- chromium-128.0.6613.113.orig/sandbox/linux/seccomp-bpf/syscall.cc
+++ chromium-128.0.6613.113/sandbox/linux/seccomp-bpf/syscall.cc
@@ -23,7 +23,7 @@ namespace sandbox {
 namespace {
 
 #if defined(ARCH_CPU_X86_FAMILY) || defined(ARCH_CPU_ARM_FAMILY) || \
-    defined(ARCH_CPU_MIPS_FAMILY)
+    defined(ARCH_CPU_MIPS_FAMILY) || defined (ARCH_CPU_PPC64_FAMILY)
 // Number that's not currently used by any Linux kernel ABIs.
 const int kInvalidSyscallNumber = 0x351d3;
 #else
@@ -313,10 +313,54 @@ asm(// We need to be able to tell the ke
     "2:ret\n"
     ".cfi_endproc\n"
     ".size SyscallAsm, .-SyscallAsm\n"
+#elif defined(__powerpc64__)
+    ".text\n"
+    ".align 4\n"
+    ".type SyscallAsm @function\n"
+    "SyscallAsm:\n"
+    ".cfi_startproc\n"
+
+    // Check if r3 is negative
+    "cmpdi 3, 0\n"
+    "bgt 2f\n"
+
+    // Load address of 3f into r3 and return
+    "mflr 10\n"
+    "bl 1f\n"
+    "1: mflr 3\n"
+    "mtlr 10\n"
+    "addi 3, 3, 4*13\n"
+    "blr\n"
+
+    // Load arguments from array into r3-8
+    // save param 3 in r10
+    "2:\n"
+    "mr 0, 3\n"
+    "ld 3, 0(4)\n"
+    "ld 5, 16(4)\n"
+    "ld 6, 24(4)\n"
+    "ld 7, 32(4)\n"
+    "ld 8, 40(4)\n"
+    "ld 4, 8(4)\n"
+    "li 9, 0\n"
+
+    // Enter kernel
+    "sc\n"
+
+    // Magic return address
+    "3:\n"
+    // Like MIPS, ppc64 return values are always positive.
+    // Check for error in cr0.SO and negate upon error
+    "bc 4, 3, 4f\n"
+    "neg 3, 3\n"
+    "4: blr\n"
+
+    ".cfi_endproc\n"
+    ".size SyscallAsm, .-SyscallAsm\n"
 #endif
     );  // asm
 
-#if defined(__x86_64__)
+#if defined(__x86_64__) || defined(__powerpc64__)
 extern "C" {
 intptr_t SyscallAsm(intptr_t nr, const intptr_t args[6]);
 }
@@ -430,6 +474,8 @@ intptr_t Syscall::Call(int nr,
     ret = inout;
   }
 
+#elif defined(__powerpc64__)
+  intptr_t ret = SyscallAsm(nr, args);
 #else
 #error "Unimplemented architecture"
 #endif
@@ -446,8 +492,18 @@ void Syscall::PutValueInUcontext(intptr_
     // needs to be changed back.
     ret_val = -ret_val;
     SECCOMP_PARM4(ctx) = 1;
-  } else
+  } else {
     SECCOMP_PARM4(ctx) = 0;
+  }
+#endif
+#if defined(__powerpc64__)
+  // Same as MIPS, need to invert ret and set error register (cr0.SO)
+  if (ret_val <= -1 && ret_val >= -4095) {
+    ret_val = -ret_val;
+    ctx->uc_mcontext.regs->ccr |= (1 << 28);
+  } else {
+    ctx->uc_mcontext.regs->ccr &= ~(1 << 28);
+  }
 #endif
   SECCOMP_RESULT(ctx) = static_cast<greg_t>(ret_val);
 }

++++++ ppc-fedora-0005-sandbox-linux-update-unit-test-for-ppc64.patch ++++++
>From 6a852c4135864ba87b3cbdd0880d7cfecf7cd654 Mon Sep 17 00:00:00 2001
From: Shawn Anastasio <shawnanasta...@yahoo.com>
Date: Thu, 13 Sep 2018 15:12:22 -0500
Subject: [PATCH 5/6] sandbox/linux: update unit test for ppc64

---
 sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: 
chromium-128.0.6613.113/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc
===================================================================
--- 
chromium-128.0.6613.113.orig/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc
+++ 
chromium-128.0.6613.113/sandbox/linux/seccomp-bpf-helpers/baseline_policy_unittest.cc
@@ -352,8 +352,10 @@
 
 #if !defined(__aarch64__)
 TEST_BASELINE_SIGSYS(__NR_inotify_init)
+#if !defined(__powerpc64__)
 TEST_BASELINE_SIGSYS(__NR_vserver)
 #endif
+#endif
 
 #if defined(LIBC_GLIBC) && !BUILDFLAG(IS_CHROMEOS)
 BPF_TEST_C(BaselinePolicy, FutexEINVAL, BaselinePolicy) {

++++++ ppc-fedora-0006-sandbox-linux-disable-timedwait-time64-ppc64.patch ++++++
Index: chromium-128.0.6613.113/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc
===================================================================
--- 
chromium-128.0.6613.113.orig/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc
+++ chromium-128.0.6613.113/sandbox/linux/seccomp-bpf-helpers/syscall_sets.cc
@@ -374,7 +374,9 @@ bool SyscallSets::IsAllowedSignalHandlin
 #if defined(__i386__) || defined(__arm__) || \
     (defined(ARCH_CPU_MIPS_FAMILY) && defined(ARCH_CPU_32_BITS)) || \
     defined(__powerpc64__)
+#if !defined(__powerpc64__)
     case __NR_rt_sigtimedwait_time64:
+#endif
     case __NR_sigaction:
     case __NR_sigprocmask:
     case __NR_sigreturn:

++++++ ppc-fedora-0007-sandbox-linux-add-ppc64-stat.patch ++++++
Index: chromium-128.0.6613.113/sandbox/linux/system_headers/linux_stat.h
===================================================================
--- chromium-128.0.6613.113.orig/sandbox/linux/system_headers/linux_stat.h
+++ chromium-128.0.6613.113/sandbox/linux/system_headers/linux_stat.h
@@ -173,6 +173,28 @@ struct kernel_stat {
   unsigned int __unused4;
   unsigned int __unused5;
 };
+#elif defined(__powerpc64__)
+struct kernel_stat {
+   unsigned long   st_dev;
+   ino_t           st_ino;
+   unsigned long   st_nlink;
+   mode_t          st_mode;
+   uid_t           st_uid;
+   gid_t           st_gid;
+   unsigned long   st_rdev;
+   long            st_size;
+   unsigned long   st_blksize;
+   unsigned long   st_blocks;
+   // unsigned long   st_atime;
+   unsigned long   st_atime_nsec;
+   //unsigned long   st_mtime;
+   unsigned long   st_mtime_nsec;
+   //unsigned long   st_ctime;
+   unsigned long   st_ctime_nsec;
+   unsigned long   __unused4;
+   unsigned long   __unused5;
+   unsigned long   __unused6;
+};
 #endif
 
 #if !defined(AT_EMPTY_PATH)

++++++ ppc-fedora-0008-sandbox-fix-ppc64le-glibc234.patch ++++++
Index: chromium-134.0.6998.35/sandbox/policy/linux/bpf_utility_policy_linux.cc
===================================================================
--- chromium-134.0.6998.35.orig/sandbox/policy/linux/bpf_utility_policy_linux.cc
+++ chromium-134.0.6998.35/sandbox/policy/linux/bpf_utility_policy_linux.cc
@@ -34,7 +34,7 @@ ResultExpr UtilityProcessPolicy::Evaluat
     case __NR_fdatasync:
     case __NR_fsync:
 #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \
-    defined(__aarch64__)
+    defined(__aarch64__) || defined(__powerpc64__)
     case __NR_getrlimit:
 #endif
 #if defined(__i386__) || defined(__arm__)
Index: chromium-134.0.6998.35/sandbox/policy/linux/bpf_renderer_policy_linux.cc
===================================================================
--- 
chromium-134.0.6998.35.orig/sandbox/policy/linux/bpf_renderer_policy_linux.cc
+++ chromium-134.0.6998.35/sandbox/policy/linux/bpf_renderer_policy_linux.cc
@@ -90,7 +90,7 @@ ResultExpr RendererProcessPolicy::Evalua
     case __NR_ftruncate64:
 #endif
 #if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || \
-    defined(__aarch64__)
+    defined(__aarch64__) || defined(__powerpc64__)
     case __NR_getrlimit:
     case __NR_setrlimit:
 // We allow setrlimit to dynamically adjust the address space limit as
Index: chromium-134.0.6998.35/sandbox/linux/bpf_dsl/linux_syscall_ranges.h
===================================================================
--- chromium-134.0.6998.35.orig/sandbox/linux/bpf_dsl/linux_syscall_ranges.h
+++ chromium-134.0.6998.35/sandbox/linux/bpf_dsl/linux_syscall_ranges.h
@@ -58,9 +58,9 @@
 
 #elif defined(__powerpc64__)
 
-#include <asm/unistd.h>
+#include <asm-generic/unistd.h>
 #define MIN_SYSCALL 0u
-#define MAX_PUBLIC_SYSCALL 386u
+#define MAX_PUBLIC_SYSCALL __NR_syscalls
 #define MAX_SYSCALL MAX_PUBLIC_SYSCALL
 
 #else
Index: chromium-134.0.6998.35/sandbox/linux/services/credentials.cc
===================================================================
--- chromium-134.0.6998.35.orig/sandbox/linux/services/credentials.cc
+++ chromium-134.0.6998.35/sandbox/linux/services/credentials.cc
@@ -96,7 +96,8 @@ bool ChrootToSafeEmptyDir() {
 
   int clone_flags = CLONE_FS | LINUX_SIGCHLD;
   void* tls = nullptr;
-#if (defined(ARCH_CPU_X86_64) || defined(ARCH_CPU_ARM_FAMILY)) && \
+#if (defined(ARCH_CPU_X86_64) || defined(ARCH_CPU_ARM_FAMILY) || \
+    defined(ARCH_CPU_PPC64_FAMILY)) && \
     !defined(MEMORY_SANITIZER)
   // Use CLONE_VM | CLONE_VFORK as an optimization to avoid copying page 
tables.
   // Since clone writes to the new child's TLS before returning, we must set a
@@ -104,6 +105,11 @@ bool ChrootToSafeEmptyDir() {
   // glibc performs syscalls by calling a function pointer in TLS, so we do not
   // attempt this optimization.
   // TODO(crbug.com/40196869) Broken in MSan builds after LLVM f1bb30a4956f.
+  //
+  // NOTE: Without CLONE_VM, fontconfig will attempt to reload configuration
+  // in every thread.  Since the rendered threads are sandboxed without
+  // filesystem access (e.g. to /etc/fonts/fonts.conf) this will cause font
+  // configuration loading failures and no fonts will be displayed!
   clone_flags |= CLONE_VM | CLONE_VFORK | CLONE_SETTLS;
 
   char tls_buf[PTHREAD_STACK_MIN_CONST] = {};
Index: 
chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc
===================================================================
--- 
chromium-134.0.6998.35.orig/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc
+++ chromium-134.0.6998.35/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc
@@ -362,7 +362,16 @@ intptr_t SIGSYSFstatatHandler(const stru
   if (args.nr == __NR_fstatat_default) {
     if (*reinterpret_cast<const char*>(args.args[1]) == '\0' &&
         args.args[3] == static_cast<uint64_t>(AT_EMPTY_PATH)) {
-      return syscall(__NR_fstat_default, static_cast<int>(args.args[0]),
+          int fd = static_cast<int>(args.args[0]);
+#if defined(__powerpc64__)
+      // On ppc64+glibc, some syscalls seem to accidentally negate the first
+      // parameter which causes checks against it to fail. For now, manually
+      // negate them back.
+      // TODO: Investigate the root cause and fix in glibc
+      if (fd < 0)
+        fd = -fd;
+#endif
+      return syscall(__NR_fstat_default, fd,
                      reinterpret_cast<default_stat_struct*>(args.args[2]));
     }
     return -reinterpret_cast<intptr_t>(fs_denied_errno);

++++++ ppc-fedora-HACK-debian-clang-disable-base-musttail.patch ++++++
diff -up chromium-131.0.6778.69/base/compiler_specific.h.me 
chromium-131.0.6778.69/base/compiler_specific.h
--- chromium-131.0.6778.69/base/compiler_specific.h.me  2024-11-19 
20:44:12.404060581 +0100
+++ chromium-131.0.6778.69/base/compiler_specific.h     2024-11-19 
20:44:54.434121935 +0100
@@ -152,7 +152,7 @@
 //     MUSTTAIL return Func1(d + 1);  // `Func1()` will be tail-called.
 //   }
 // ```
-#if __has_cpp_attribute(clang::musttail)
+#if __has_cpp_attribute(clang::musttail) && !defined(__powerpc64__)
 #define MUSTTAIL [[clang::musttail]]
 #else
 #define MUSTTAIL
diff -up 
chromium-131.0.6778.85/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_base/compiler_specific.h.me
 
chromium-131.0.6778.85/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_base/compiler_specific.h
--- 
chromium-131.0.6778.85/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_base/compiler_specific.h.me
   2024-11-20 18:50:28.690761262 +0100
+++ 
chromium-131.0.6778.85/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_base/compiler_specific.h
      2024-11-20 18:54:49.374711202 +0100
@@ -138,7 +138,7 @@
 //     PA_MUSTTAIL return Func1(d + 1);  // `Func1()` will be tail-called.
 //   }
 // ```
-#if PA_HAS_CPP_ATTRIBUTE(clang::musttail)
+#if PA_HAS_CPP_ATTRIBUTE(clang::musttail) && !defined(__powerpc64__)
 #define PA_MUSTTAIL [[clang::musttail]]
 #else
 #define PA_MUSTTAIL

++++++ ppc-fedora-HACK-third_party-libvpx-use-generic-gnu.patch ++++++
Index: chromium-136.0.7103.48/third_party/libvpx/generate_gni.sh
===================================================================
--- chromium-136.0.7103.48.orig/third_party/libvpx/generate_gni.sh
+++ chromium-136.0.7103.48/third_party/libvpx/generate_gni.sh
@@ -433,7 +433,7 @@ gen_config_files linux/mipsel "--target=
 gen_config_files linux/mips64el "--target=mips64-linux-gcc ${all_platforms}"
 gen_config_files linux/loongarch \
   "--target=loongarch64-linux-gcc ${all_platforms}"
-gen_config_files linux/ppc64 "--target=ppc64le-linux-gcc ${all_platforms}"
+gen_config_files linux/ppc64 "--target=generic-gnu $HIGHBD ${all_platforms}"
 gen_config_files linux/generic "--target=generic-gnu $HIGHBD ${all_platforms}"
 gen_config_files win/arm64-highbd \
   "--target=arm64-win64-vs15 ${all_platforms} ${HIGHBD} ${disable_sve}"
Index: 
chromium-136.0.7103.48/third_party/libvpx/source/libvpx/build/make/rtcd.pl
===================================================================
--- 
chromium-136.0.7103.48.orig/third_party/libvpx/source/libvpx/build/make/rtcd.pl
+++ chromium-136.0.7103.48/third_party/libvpx/source/libvpx/build/make/rtcd.pl
@@ -527,8 +527,9 @@ if ($opts{arch} eq 'x86') {
   }
   arm;
 } elsif ($opts{arch} =~ /^ppc/ ) {
-  @ALL_ARCHS = filter(qw/vsx/);
-  ppc;
+  #@ALL_ARCHS = filter(qw/vsx/);
+  #ppc;
+  unoptimized;
 } elsif ($opts{arch} =~ /loongarch/ ) {
   @ALL_ARCHS = filter(qw/lsx lasx/);
   loongarch;
Index: chromium-136.0.7103.48/third_party/libvpx/BUILD.gn
===================================================================
--- chromium-136.0.7103.48.orig/third_party/libvpx/BUILD.gn
+++ chromium-136.0.7103.48/third_party/libvpx/BUILD.gn
@@ -102,6 +102,14 @@ config("libvpx_config") {
       "-Wno-sign-compare",
     ]
   }
+
+  if (current_cpu == "ppc64") {
+    cflags += [
+      "-mcpu=power8",
+      "-maltivec",
+      "-mvsx",
+    ]
+  }
 }
 
 # This config is applied to targets that depend on libvpx.

++++++ ppc-fedora-Rtc_base-system-arch.h-PPC.patch ++++++
Index: chromium-128.0.6613.113/third_party/webrtc/rtc_base/system/arch.h
===================================================================
--- chromium-128.0.6613.113.orig/third_party/webrtc/rtc_base/system/arch.h
+++ chromium-128.0.6613.113/third_party/webrtc/rtc_base/system/arch.h
@@ -46,6 +46,18 @@
 #endif
 #if defined(__MIPSEL__)
 #define WEBRTC_ARCH_LITTLE_ENDIAN
+#elif defined(__PPC__)
+#define WEBRTC_ARCH_PPC_FAMILY
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
+#define WEBRTC_ARCH_LITTLE_ENDIAN
+#else
+#define WEBRTC_ARCH_BIG_ENDIAN
+#endif
+#if defined(__LP64__)
+#define WEBRTC_ARCH_64_BITS
+#else
+#define WEBRTC_ARCH_32_BITS
+#endif
 #else
 #define WEBRTC_ARCH_BIG_ENDIAN
 #endif

++++++ ppc-fedora-Sandbox-linux-services-credentials.cc-PPC.patch ++++++
--- a/sandbox/linux/services/credentials.cc
+++ b/sandbox/linux/services/credentials.cc
@@ -87,7 +87,7 @@
   alignas(16) char stack_buf[PTHREAD_STACK_MIN_CONST];
 
 #if defined(ARCH_CPU_X86_FAMILY) || defined(ARCH_CPU_ARM_FAMILY) || \
-    defined(ARCH_CPU_MIPS_FAMILY)
+    defined(ARCH_CPU_MIPS_FAMILY) || defined(ARCH_CPU_PPC64_FAMILY)
   // The stack grows downward.
   void* stack = stack_buf + sizeof(stack_buf);
 #else

++++++ ppc-fedora-add-ppc64-architecture-string.patch ++++++
--- a/base/system/sys_info.cc
+++ b/base/system/sys_info.cc
@@ -255,6 +255,8 @@
   return "ARM";
 #elif defined(ARCH_CPU_ARM64)
   return "ARM_64";
+#elif defined(ARCH_CPU_PPC64)
+  return "PPC_64";
 #elif defined(ARCH_CPU_RISCV64)
   return "RISCV_64";
 #else

++++++ ppc-fedora-add-ppc64-architecture-to-extensions.diff ++++++
Index: 
chromium-128.0.6613.113/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc
===================================================================
--- 
chromium-128.0.6613.113.orig/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc
+++ 
chromium-128.0.6613.113/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc
@@ -310,6 +310,8 @@
     info->arch = extensions::api::runtime::PlatformArch::kMips;
   } else if (strcmp(arch, "mips64el") == 0) {
     info->arch = extensions::api::runtime::PlatformArch::kMips64;
+  } else if (strcmp(arch, "ppc64") == 0) {
+    info->arch = extensions::api::runtime::PlatformArch::kPpc64;
   } else {
     NOTREACHED();
   }
@@ -325,6 +327,8 @@
     info->nacl_arch = extensions::api::runtime::PlatformNaclArch::kMips;
   } else if (strcmp(nacl_arch, "mips64") == 0) {
     info->nacl_arch = extensions::api::runtime::PlatformNaclArch::kMips64;
+  } else if (strcmp(nacl_arch, "ppc64") == 0) {
+    info->nacl_arch = extensions::api::runtime::PlatformNaclArch::kPpc64;
   } else {
     NOTREACHED();
   }
Index: chromium-128.0.6613.113/extensions/common/api/runtime.json
===================================================================
--- chromium-128.0.6613.113.orig/extensions/common/api/runtime.json
+++ chromium-128.0.6613.113/extensions/common/api/runtime.json
@@ -98,7 +98,8 @@
             {"name": "x86-32", "description": "Specifies the processer 
architecture as x86-32."},
             {"name": "x86-64", "description": "Specifies the processer 
architecture as x86-64."},
             {"name": "mips", "description": "Specifies the processer 
architecture as mips."},
-            {"name": "mips64", "description": "Specifies the processer 
architecture as mips64."}
+            {"name": "mips64", "description": "Specifies the processer 
architecture as mips64."},
+            {"name": "ppc64", "description": "Specifies the processer 
architecture as ppc64."}
          ],
         "description": "The machine's processor architecture."
       },
@@ -111,7 +112,8 @@
           {"name": "x86-32", "description": "Specifies the native client 
architecture as x86-32."},
           {"name": "x86-64", "description": "Specifies the native client 
architecture as x86-64."},
           {"name": "mips", "description": "Specifies the native client 
architecture as mips."},
-          {"name": "mips64", "description": "Specifies the native client 
architecture as mips64."}
+          {"name": "mips64", "description": "Specifies the native client 
architecture as mips64."},
+          {"name": "ppc64", "description": "Specifies the native client 
architecture as ppc64."}
         ]
       },
       {

++++++ ppc-fedora-add-ppc64-pthread-stack-size.patch ++++++
--- a/base/process/launch.h
+++ b/base/process/launch.h
@@ -58,6 +58,9 @@
 #if defined(ARCH_CPU_ARM64) || defined(ARCH_CPU_LOONGARCH64)
 #define PTHREAD_STACK_MIN_CONST \
   (__builtin_constant_p(PTHREAD_STACK_MIN) ? PTHREAD_STACK_MIN : 131072)
+#elif defined(ARCH_CPU_PPC64)
+#define PTHREAD_STACK_MIN_CONST \
+  (__builtin_constant_p(PTHREAD_STACK_MIN) ? PTHREAD_STACK_MIN : 131072)
 #else
 #define PTHREAD_STACK_MIN_CONST \
   (__builtin_constant_p(PTHREAD_STACK_MIN) ? PTHREAD_STACK_MIN : 16384)

++++++ ppc-fedora-dawn-fix-ppc64le-detection.patch ++++++
--- a/third_party/dawn/src/dawn/common/Platform.h
+++ b/third_party/dawn/src/dawn/common/Platform.h
@@ -159,10 +159,12 @@
 #elif defined(__s390x__)
 #define DAWN_PLATFORM_IS_S390X 1
 
-#elif defined(__PPC__)
-#define DAWN_PLATFORM_IS_PPC 1
+// Order matters here
+// PPC64 also defines PPC, which can lead to detection failures on ppc64le 
systems
 #elif defined(__PPC64__)
 #define DAWN_PLATFORM_IS_PPC64 1
+#elif defined(__PPC__)
+#define DAWN_PLATFORM_IS_PPC 1
 
 #elif defined(__wasm32__)
 #define DAWN_PLATFORM_IS_WASM32 1

++++++ ppc-fedora-fix-breakpad-compile.patch ++++++
Index: chromium-128.0.6613.113/third_party/breakpad/BUILD.gn
===================================================================
--- chromium-128.0.6613.113.orig/third_party/breakpad/BUILD.gn
+++ chromium-128.0.6613.113/third_party/breakpad/BUILD.gn
@@ -782,7 +782,6 @@ if (is_linux || is_chromeos || is_androi
       "breakpad/src/client/minidump_file_writer.h",
       "breakpad/src/common/convert_UTF.cc",
       "breakpad/src/common/convert_UTF.h",
-      "breakpad/src/common/linux/breakpad_getcontext.S",
       "breakpad/src/common/linux/elf_core_dump.cc",
       "breakpad/src/common/linux/elf_core_dump.h",
       "breakpad/src/common/linux/elfutils.cc",
@@ -814,6 +813,8 @@ if (is_linux || is_chromeos || is_androi
     configs += [ "//build/config/compiler:no_chromium_code" ]
     public_configs = [ ":client_config" ]
 
+    defines = [ "HAVE_GETCONTEXT" ]
+
     if (current_cpu == "arm" && is_chromeos_ash) {
       # Avoid running out of registers in
       # linux_syscall_support.h:sys_clone()'s inline assembly.
@@ -871,7 +872,6 @@ if (is_linux || is_chromeos || is_androi
       "breakpad/src/client/linux/minidump_writer/minidump_writer_unittest.cc",
       
"breakpad/src/client/linux/minidump_writer/minidump_writer_unittest_utils.cc",
       
"breakpad/src/client/linux/minidump_writer/proc_cpuinfo_reader_unittest.cc",
-      "breakpad/src/common/linux/breakpad_getcontext_unittest.cc",
       "breakpad/src/common/linux/elf_core_dump_unittest.cc",
       "breakpad/src/common/linux/file_id_unittest.cc",
       "breakpad/src/common/linux/linux_libc_support_unittest.cc",

++++++ ppc-fedora-fix-clang-selection.patch ++++++
Index: chromium-128.0.6613.113/build/config/BUILDCONFIG.gn
===================================================================
--- chromium-128.0.6613.113.orig/build/config/BUILDCONFIG.gn
+++ chromium-128.0.6613.113/build/config/BUILDCONFIG.gn
@@ -138,7 +138,6 @@ declare_args() {
   # Set to true when compiling with the Clang compiler.
   is_clang = current_os != "linux" ||
              (current_cpu != "s390x" && current_cpu != "s390" &&
-              current_cpu != "ppc64" && current_cpu != "ppc" &&
               current_cpu != "mips" && current_cpu != "mips64" &&
               current_cpu != "riscv64")
 

++++++ ppc-fedora-fix-different-data-layouts.patch ++++++
Author: Daniel Richard G. <sk...@iskunk.org>

When building Chromium on unstable/ppc64el with ThinLTO enabled, this error
occurs in the final link:

  ld.lld-16: error: Linking two modules of different data layouts:
  $C_CXX_OBJECT is 'e-m:e-i64:64-n32:64-S128-v256:256:256-v512:512:512' whereas
  $RUST_LIBRARY is 'e-m:e-Fn32-i64:64-n32:64-S128-v256:256:256-v512:512:512'

This is because the LLVM data layout for powerpc64le-unknown-linux-gnu has
evolved over time, gaining the "Fn32" bit that specifies function pointer
alignment. See the following source locations:

  llvm-project/clang/lib/Basic/Targets/PPC.h
  (class PPC64TargetInfo, under "Triple.getArch() == llvm::Triple::ppc64le")

  rust/compiler/rustc_target/src/spec/powerpc64le_unknown_linux_gnu.rs
  (note that this file was relocated in a later version)

This change occurred in clang-17, and rustc followed suit in 1.73.0. Since
we use an older clang and a newer rustc in our unstable build, we get an
inconsistency in data layouts when targeting this particular platform.

The error reported by the linker is not technically an error, however, only
a warning goosed up by a --fatal-warnings flag.

Index: chromium-128.0.6613.113/build/config/compiler/BUILD.gn
===================================================================
--- chromium-128.0.6613.113.orig/build/config/compiler/BUILD.gn
+++ chromium-128.0.6613.113/build/config/compiler/BUILD.gn
@@ -380,7 +380,7 @@ config("compiler") {
 
     # Linker warnings.
     if (fatal_linker_warnings && !is_apple && current_os != "aix" &&
-        current_os != "zos") {
+        current_os != "zos" && current_cpu != "ppc64") {
       ldflags += [ "-Wl,--fatal-warnings" ]
     }
     if (fatal_linker_warnings && is_apple) {

++++++ ppc-fedora-fix-partition-alloc-compile.patch ++++++
kIndex: 
chromium-114.0.5735.45/base/allocator/partition_allocator/partition_alloc.gni
===================================================================
Index: 
chromium-128.0.6613.113/base/allocator/partition_allocator/partition_alloc.gni
===================================================================
--- 
chromium-128.0.6613.113.orig/base/allocator/partition_allocator/partition_alloc.gni
+++ 
chromium-128.0.6613.113/base/allocator/partition_allocator/partition_alloc.gni
@@ -69,7 +69,8 @@
   # NaCl targets don't use 64-bit pointers.
   has_64_bit_pointers = false
 } else if (current_cpu == "x64" || current_cpu == "arm64" ||
-           current_cpu == "loong64" || current_cpu == "riscv64") {
+           current_cpu == "loong64" || current_cpu == "riscv64" ||
+           current_cpu == "ppc64") {
   has_64_bit_pointers = true
 } else if (current_cpu == "x86" || current_cpu == "arm" ||
            current_cpu == "wasm") {

++++++ ppc-fedora-fix-ppc64-linux-syscalls-headers.patch ++++++
Index: 
chromium-128.0.6613.113/sandbox/linux/system_headers/ppc64_linux_syscalls.h
===================================================================
--- 
chromium-128.0.6613.113.orig/sandbox/linux/system_headers/ppc64_linux_syscalls.h
+++ chromium-128.0.6613.113/sandbox/linux/system_headers/ppc64_linux_syscalls.h
@@ -8,5 +8,18 @@
 #include <asm/unistd.h>
 
 //TODO: is it necessary to redefine syscall numbers for PPC64?
+// Needed for Ubuntu/Debian/Centos/RHEL:
+#if !defined(__NR_shmget)
+#define __NR_shmget     395
+#endif
+#if !defined(__NR_shmdt)
+#define __NR_shmdt      398
+#endif
+#if !defined(__NR_shmctl)
+#define __NR_shmctl     396
+#endif
+#if !defined(__NR_shmat)
+#define __NR_shmat      397
+#endif
 
 #endif  // SANDBOX_LINUX_SYSTEM_HEADERS_PPC64_LINUX_SYSCALLS_H_

++++++ ppc-fedora-fix-ppc64-rust_png-build-error.patch ++++++
diff -up 
chromium-135.0.7049.52/third_party/skia/experimental/rust_png/ffi/FFI.h.than 
chromium-135.0.7049.52/third_party/skia/experimental/rust_png/ffi/FFI.h
--- 
chromium-135.0.7049.52/third_party/skia/experimental/rust_png/ffi/FFI.h.than    
    2025-04-03 12:00:57.623069853 +0200
+++ chromium-135.0.7049.52/third_party/skia/experimental/rust_png/ffi/FFI.h     
2025-04-03 12:02:42.234420632 +0200
@@ -10,6 +10,7 @@
 
 #include <stddef.h>
 #include <stdint.h>
+#include <memory>
 
 // TODO(https://crbug.com/356698922): Use a real `#include` if possible.
 namespace rust {

++++++ ppc-fedora-fix-rust-linking.patch ++++++
Index: chromium-128.0.6613.113/build/toolchain/gcc_toolchain.gni
===================================================================
--- chromium-128.0.6613.113.orig/build/toolchain/gcc_toolchain.gni
+++ chromium-128.0.6613.113/build/toolchain/gcc_toolchain.gni
@@ -441,7 +441,13 @@ template("single_gcc_toolchain") {
         # -soname flag is not available on aix ld
         soname_flag = "-Wl,-soname=\"$soname\""
       }
-      link_command = "$ld -shared $soname_flag {{ldflags}}${extra_ldflags} -o 
\"$unstripped_sofile\" @\"$rspfile\" {{rlibs}}"
+      if (target_cpu == "ppc64") {
+        # Work around linker failures due to Rust libraries and the use of 
whole-archive
+        link_command = "$ld -shared $soname_flag -Wl,--start-group 
{{ldflags}}${extra_ldflags} -o \"$unstripped_sofile\" @\"$rspfile\" {{rlibs}} 
-Wl,--end-group"
+      }
+      else {
+        link_command = "$ld -shared $soname_flag {{ldflags}}${extra_ldflags} 
-o \"$unstripped_sofile\" @\"$rspfile\" {{rlibs}}"
+      }
 
       # Generate a map file to be used for binary size analysis.
       # Map file adds ~10% to the link time on a z620.
@@ -553,7 +559,13 @@ template("single_gcc_toolchain") {
         whole_archive_flag = "-Wl,--whole-archive"
         no_whole_archive_flag = "-Wl,--no-whole-archive"
       }
-      command = "$ld -shared {{ldflags}}${extra_ldflags} -o 
\"$unstripped_sofile\" $soname_flag @\"$rspfile\""
+      if (target_cpu == "ppc64") {
+        # Work around linker failures due to Rust libraries and the use of 
whole-archive
+        command = "$ld -shared -Wl,--start-group {{ldflags}}${extra_ldflags} 
-o \"$unstripped_sofile\" $soname_flag @\"$rspfile\" -Wl,--end-group"
+      }
+      else {
+        command = "$ld -shared {{ldflags}}${extra_ldflags} -o 
\"$unstripped_sofile\" $soname_flag @\"$rspfile\""
+      }
 
       if (defined(invoker.strip)) {
         strip_command = "${invoker.strip} -o \"$sofile\" 
\"$unstripped_sofile\""

++++++ ppc-fedora-fix-rustc.patch ++++++
diff -up chromium-131.0.6778.69/build/config/rust.gni.fix-rustc 
chromium-131.0.6778.69/build/config/rust.gni
--- chromium-131.0.6778.69/build/config/rust.gni.fix-rustc      2024-11-12 
22:48:45.000000000 +0100
+++ chromium-131.0.6778.69/build/config/rust.gni        2024-11-19 
23:01:25.484436409 +0100
@@ -200,6 +200,9 @@ if (is_linux || is_chromeos) {
   if (current_cpu == "arm64") {
     rust_abi_target = "aarch64-unknown-linux-gnu"
     cargo_target_abi = ""
+  } else if (current_cpu == "ppc64") {
+    rust_abi_target = "powerpc64le-unknown-linux-gnu"
+    cargo_target_abi = ""
   } else if (current_cpu == "x86") {
     rust_abi_target = "i686-unknown-linux-gnu"
     cargo_target_abi = ""

++++++ ppc-fedora-fix-study-crash.patch ++++++
--- a/components/variations/proto/study.proto
+++ b/components/variations/proto/study.proto
@@ -264,6 +264,9 @@
     // A Mac-only value, indicating an x86-64 binary running on an arm64 host
     // via "Rosetta 2" binary translation.
     TRANSLATED_X86_64 = 4;
+
+    // A POSIX-only value, indicating an OpenPOWER host
+    PPC64 = 5;
   }
 
   // Enum to pass as optional bool.
--- a/components/variations/service/variations_field_trial_creator_base.cc
+++ b/components/variations/service/variations_field_trial_creator_base.cc
@@ -109,6 +109,9 @@
   if (process_arch == "x86") {
     return Study::X86_32;
   }
+  if (process_arch == "PPC_64") {
+    return Study::PPC64;
+  }
   if (process_arch == "x86_64") {
     std::string os_arch = base::SysInfo::OperatingSystemArchitecture();
     if (base::StartsWith(os_arch, "arm",

++++++ ppc-fedora-fix-unknown-warning-option-messages.diff ++++++
Index: chromium-128.0.6613.113/build/config/compiler/BUILD.gn
===================================================================
--- chromium-128.0.6613.113.orig/build/config/compiler/BUILD.gn
+++ chromium-128.0.6613.113/build/config/compiler/BUILD.gn
@@ -1844,7 +1844,7 @@ config("default_warnings") {
 
       # -Wno-class-memaccess warns about hash table and vector in blink.
       # But the violation is intentional.
-      if (!is_nacl) {
+      if ((!is_nacl) && (current_cpu != "ppc64")) {
         cflags_cc += [ "-Wno-class-memaccess" ]
       }
 
@@ -1854,7 +1854,9 @@ config("default_warnings") {
 
       # Don't warn about "maybe" uninitialized. Clang doesn't include this
       # in -Wall but gcc does, and it gives false positives.
-      cflags += [ "-Wno-maybe-uninitialized" ]
+      if (current_cpu != "ppc64") {
+        cflags += [ "-Wno-maybe-uninitialized" ]
+      }
       cflags += [ "-Wno-deprecated-declarations" ]
 
       # -Wcomment gives too many false positives in the case a
@@ -1865,7 +1867,9 @@ config("default_warnings") {
 
       # -Wpacked-not-aligned complains all generated mojom-shared-internal.h
       # files.
-      cflags += [ "-Wno-packed-not-aligned" ]
+      if (current_cpu != "ppc64") {
+        cflags += [ "-Wno-packed-not-aligned" ]
+      }
     }
   }
 

++++++ ppc-fedora-memory-allocator-dcheck-assert-fix.patch ++++++
Index: 
chromium-127.0.6533.88/base/allocator/partition_allocator/src/partition_alloc/partition_bucket.cc
===================================================================
--- 
chromium-127.0.6533.88.orig/base/allocator/partition_allocator/src/partition_alloc/partition_bucket.cc
+++ 
chromium-127.0.6533.88/base/allocator/partition_allocator/src/partition_alloc/partition_bucket.cc
@@ -492,6 +492,9 @@ uint8_t ComputeSystemPagesPerSlotSpanPre
        partition_page_count <= kMaxPartitionPagesPerRegularSlotSpan;
        partition_page_count++) {
     size_t candidate_size = partition_page_count * PartitionPageSize();
+    if (candidate_size > kMaxBucketed) {
+      break;
+    }
     size_t waste = candidate_size % slot_size;
     if (waste <= .02 * SystemPageSize()) {
       return partition_page_count * NumSystemPagesPerPartitionPage();
@@ -508,6 +511,9 @@ uint8_t ComputeSystemPagesPerSlotSpanPre
       size_t system_page_count =
           partition_page_count * NumSystemPagesPerPartitionPage() - slack;
       size_t candidate_size = system_page_count * SystemPageSize();
+      if (candidate_size > kMaxBucketed) {
+        continue;
+      }
       size_t waste = candidate_size % slot_size;
       if (waste < best_waste) {
         best_waste = waste;

++++++ ppc-fedora-skia-vsx-instructions.patch ++++++
++++ 706 lines (skipped)

++++++ ppc-fedora-use-sysconf-page-size-on-ppc64.patch ++++++
Index: 
chromium-128.0.6613.113/base/allocator/partition_allocator/src/partition_alloc/page_allocator_constants.h
===================================================================
--- 
chromium-128.0.6613.113.orig/base/allocator/partition_allocator/src/partition_alloc/page_allocator_constants.h
+++ 
chromium-128.0.6613.113/base/allocator/partition_allocator/src/partition_alloc/page_allocator_constants.h
@@ -187,7 +187,11 @@ SystemPageBaseMask() {
   return ~SystemPageOffsetMask();
 }
 
+#if PA_BUILDFLAG(PA_ARCH_CPU_PPC64_FAMILY)
+constexpr size_t kPageMetadataShift = 6;  // 64 bytes per partition page.
+#else
 constexpr size_t kPageMetadataShift = 5;  // 32 bytes per partition page.
+#endif
 constexpr size_t kPageMetadataSize = 1 << kPageMetadataShift;
 
 }  // namespace internal

Reply via email to