From 9120ed481bf7c70fcec769456208cb24704bd49b Mon Sep 17 00:00:00 2001 From: MSVSphere Packaging Team Date: Thu, 19 Sep 2024 01:44:42 +0300 Subject: [PATCH] import chromium-129.0.6668.58-1.el8 --- .chromium.metadata | 4 +- .gitignore | 4 +- ...generated-config-for-libaom-on-ppc64.patch | 219 +--- ...Implement-support-for-PPC64-on-Linux.patch | 214 ++-- ...ox-linux-services-credentials.cc-PPC.patch | 10 +- SOURCES/cargo-add-ppc64.diff | 12 + SOURCES/chromium-126-system-libstdc++.patch | 667 ---------- ...m-128.0.6613.137-python-3.13-warning.patch | 13 + ...e-H.264-video-parser-during-demuxing.patch | 32 + .../chromium-129-el8-atk-compiler-error.patch | 1083 +++++++++++++++++ SOURCES/dawn-fix-ppc64le-detection.patch | 12 +- SOURCES/dawn-fix-typos.patch | 16 - SOURCES/partition-alloc-4k-detect.patch | 112 -- SPECS/chromium.spec | 78 +- 14 files changed, 1325 insertions(+), 1151 deletions(-) create mode 100644 SOURCES/cargo-add-ppc64.diff delete mode 100644 SOURCES/chromium-126-system-libstdc++.patch create mode 100644 SOURCES/chromium-128.0.6613.137-python-3.13-warning.patch create mode 100644 SOURCES/chromium-129-disable-H.264-video-parser-during-demuxing.patch create mode 100644 SOURCES/chromium-129-el8-atk-compiler-error.patch delete mode 100644 SOURCES/dawn-fix-typos.patch delete mode 100644 SOURCES/partition-alloc-4k-detect.patch diff --git a/.chromium.metadata b/.chromium.metadata index 794f2925..633cf56e 100644 --- a/.chromium.metadata +++ b/.chromium.metadata @@ -1,6 +1,4 @@ -b66519ed49abdd4712315ae3a4645830073c09cf SOURCES/bindgen-cli-aarch64.tar.xz -107a886d1095bb01268e6cd51f1878385e694229 SOURCES/bindgen-cli-x86_64.tar.xz -a04c6ab7556a332875497f411f8fa1a5f0adc23a SOURCES/chromium-128.0.6613.119-clean.tar.xz +7806b006b3cc1fe919ec61a2aae5602e42da66c5 SOURCES/chromium-129.0.6668.58-clean.tar.xz 7e5d2c7864c5c83ec789b59c77cd9c20d2594916 SOURCES/linux-arm64-0.19.2.tgz dea187019741602d57aaf189a80abba261fbd2aa SOURCES/linux-x64-0.19.2.tgz 3e94bb4f999c636293bc745b02d98e7925da5616 SOURCES/node-v20.6.1-linux-arm64.tar.xz diff --git a/.gitignore b/.gitignore index 337829e9..629ab946 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,4 @@ -SOURCES/bindgen-cli-aarch64.tar.xz -SOURCES/bindgen-cli-x86_64.tar.xz -SOURCES/chromium-128.0.6613.119-clean.tar.xz +SOURCES/chromium-129.0.6668.58-clean.tar.xz SOURCES/linux-arm64-0.19.2.tgz SOURCES/linux-x64-0.19.2.tgz SOURCES/node-v20.6.1-linux-arm64.tar.xz diff --git a/SOURCES/0001-Add-pregenerated-config-for-libaom-on-ppc64.patch b/SOURCES/0001-Add-pregenerated-config-for-libaom-on-ppc64.patch index 52c50723..5fd44ff8 100644 --- a/SOURCES/0001-Add-pregenerated-config-for-libaom-on-ppc64.patch +++ b/SOURCES/0001-Add-pregenerated-config-for-libaom-on-ppc64.patch @@ -1,10 +1,10 @@ -Index: chromium-128.0.6613.113/third_party/libaom/source/config/linux/ppc64/config/aom_config.asm +Index: chromium-129.0.6668.42/third_party/libaom/source/config/linux/ppc64/config/aom_config.asm =================================================================== --- /dev/null -+++ chromium-128.0.6613.113/third_party/libaom/source/config/linux/ppc64/config/aom_config.asm ++++ chromium-129.0.6668.42/third_party/libaom/source/config/linux/ppc64/config/aom_config.asm @@ -0,0 +1,95 @@ +; -+; Copyright (c) 2024, Alliance for Open Media. All rights reserved ++; Copyright (c) 2024, Alliance for Open Media. All rights reserved. +; +; This source code is subject to the terms of the BSD 2 Clause License and +; the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License @@ -67,8 +67,8 @@ Index: chromium-128.0.6613.113/third_party/libaom/source/config/linux/ppc64/conf +CONFIG_SALIENCY_MAP equ 0 +CONFIG_SHARED equ 0 +CONFIG_SIZE_LIMIT equ 1 -+CONFIG_SPATIAL_RESAMPLING equ 1 +CONFIG_SPEED_STATS equ 0 ++CONFIG_SVT_AV1 equ 1 +CONFIG_TFLITE equ 0 +CONFIG_THREE_PASS equ 0 +CONFIG_TUNE_BUTTERAUGLI equ 0 @@ -98,13 +98,13 @@ Index: chromium-128.0.6613.113/third_party/libaom/source/config/linux/ppc64/conf +HAVE_VSX equ 1 +HAVE_WXWIDGETS equ 0 +STATIC_LINK_JXL equ 0 -Index: chromium-128.0.6613.113/third_party/libaom/source/config/linux/ppc64/config/aom_config.c +Index: chromium-129.0.6668.42/third_party/libaom/source/config/linux/ppc64/config/aom_config.c =================================================================== --- /dev/null -+++ chromium-128.0.6613.113/third_party/libaom/source/config/linux/ppc64/config/aom_config.c ++++ chromium-129.0.6668.42/third_party/libaom/source/config/linux/ppc64/config/aom_config.c @@ -0,0 +1,13 @@ +/* -+ * Copyright (c) 2024, Alliance for Open Media. All rights reserved ++ * Copyright (c) 2024, Alliance for Open Media. All rights reserved. + * + * This source code is subject to the terms of the BSD 2 Clause License and + * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License @@ -116,13 +116,13 @@ Index: chromium-128.0.6613.113/third_party/libaom/source/config/linux/ppc64/conf +#include "aom/aom_codec.h" +static const char* const cfg = "cmake ../source/libaom -G \"Unix Makefiles\" -DCMAKE_TOOLCHAIN_FILE=\"../source/libaom/build/cmake/toolchains/ppc-linux-gcc.cmake\" -DCONFIG_AV1_DECODER=0 -DCONFIG_AV1_ENCODER=1 -DCONFIG_LIBYUV=0 -DCONFIG_AV1_HIGHBITDEPTH=0 -DCONFIG_AV1_TEMPORAL_DENOISING=1 -DCONFIG_QUANT_MATRIX=0 -DCONFIG_REALTIME_ONLY=1 -DCONFIG_SIZE_LIMIT=1 -DDECODE_HEIGHT_LIMIT=16384 -DDECODE_WIDTH_LIMIT=16384"; +const char *aom_codec_build_config(void) {return cfg;} -Index: chromium-128.0.6613.113/third_party/libaom/source/config/linux/ppc64/config/aom_config.h +Index: chromium-129.0.6668.42/third_party/libaom/source/config/linux/ppc64/config/aom_config.h =================================================================== --- /dev/null -+++ chromium-128.0.6613.113/third_party/libaom/source/config/linux/ppc64/config/aom_config.h -@@ -0,0 +1,99 @@ ++++ chromium-129.0.6668.42/third_party/libaom/source/config/linux/ppc64/config/aom_config.h +@@ -0,0 +1,98 @@ +/* -+ * Copyright (c) 2024, Alliance for Open Media. All rights reserved ++ * Copyright (c) 2024, Alliance for Open Media. All rights reserved. + * + * This source code is subject to the terms of the BSD 2 Clause License and + * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License @@ -187,8 +187,8 @@ Index: chromium-128.0.6613.113/third_party/libaom/source/config/linux/ppc64/conf +#define CONFIG_SALIENCY_MAP 0 +#define CONFIG_SHARED 0 +#define CONFIG_SIZE_LIMIT 1 -+#define CONFIG_SPATIAL_RESAMPLING 1 +#define CONFIG_SPEED_STATS 0 ++#define CONFIG_SVT_AV1 1 +#define CONFIG_TFLITE 0 +#define CONFIG_THREE_PASS 0 +#define CONFIG_TUNE_BUTTERAUGLI 0 @@ -217,14 +217,24 @@ Index: chromium-128.0.6613.113/third_party/libaom/source/config/linux/ppc64/conf +#define HAVE_UNISTD_H 1 +#define HAVE_VSX 1 +#define HAVE_WXWIDGETS 0 -+#define INLINE inline +#define STATIC_LINK_JXL 0 +#endif // AOM_CONFIG_H_ -Index: chromium-128.0.6613.113/third_party/libaom/source/config/linux/ppc64/config/aom_dsp_rtcd.h +Index: chromium-129.0.6668.42/third_party/libaom/source/config/linux/ppc64/config/aom_dsp_rtcd.h =================================================================== --- /dev/null -+++ chromium-128.0.6613.113/third_party/libaom/source/config/linux/ppc64/config/aom_dsp_rtcd.h -@@ -0,0 +1,1541 @@ ++++ chromium-129.0.6668.42/third_party/libaom/source/config/linux/ppc64/config/aom_dsp_rtcd.h +@@ -0,0 +1,1501 @@ ++/* ++ * Copyright (c) 2024, Alliance for Open Media. All rights reserved. ++ * ++ * This source code is subject to the terms of the BSD 2 Clause License and ++ * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License ++ * was not distributed with this source code in the LICENSE file, you can ++ * obtain it at www.aomedia.org/license/software. If the Alliance for Open ++ * Media Patent License 1.0 was not distributed with this source code in the ++ * PATENTS file, you can obtain it at www.aomedia.org/license/patent. ++ */ ++ +// This file is generated. Do not edit. +#ifndef AOM_DSP_RTCD_H_ +#define AOM_DSP_RTCD_H_ @@ -273,9 +283,6 @@ Index: chromium-128.0.6613.113/third_party/libaom/source/config/linux/ppc64/conf +void aom_comp_mask_pred_c(uint8_t *comp_pred, const uint8_t *pred, int width, int height, const uint8_t *ref, int ref_stride, const uint8_t *mask, int mask_stride, int invert_mask); +#define aom_comp_mask_pred aom_comp_mask_pred_c + -+void aom_convolve8_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const InterpKernel *filter, int x0_q4, int x_step_q4, int y0_q4, int y_step_q4, int w, int h); -+#define aom_convolve8 aom_convolve8_c -+ +void aom_convolve8_horiz_c(const uint8_t *src, ptrdiff_t src_stride, uint8_t *dst, ptrdiff_t dst_stride, const int16_t *filter_x, int x_step_q4, const int16_t *filter_y, int y_step_q4, int w, int h); +#define aom_convolve8_horiz aom_convolve8_horiz_c + @@ -822,99 +829,51 @@ Index: chromium-128.0.6613.113/third_party/libaom/source/config/linux/ppc64/conf +unsigned int aom_masked_sad128x128_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad128x128 aom_masked_sad128x128_c + -+void aom_masked_sad128x128x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad128x128x4d aom_masked_sad128x128x4d_c -+ +unsigned int aom_masked_sad128x64_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad128x64 aom_masked_sad128x64_c + -+void aom_masked_sad128x64x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad128x64x4d aom_masked_sad128x64x4d_c -+ +unsigned int aom_masked_sad16x16_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad16x16 aom_masked_sad16x16_c + -+void aom_masked_sad16x16x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad16x16x4d aom_masked_sad16x16x4d_c -+ +unsigned int aom_masked_sad16x32_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad16x32 aom_masked_sad16x32_c + -+void aom_masked_sad16x32x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad16x32x4d aom_masked_sad16x32x4d_c -+ +unsigned int aom_masked_sad16x8_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad16x8 aom_masked_sad16x8_c + -+void aom_masked_sad16x8x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad16x8x4d aom_masked_sad16x8x4d_c -+ +unsigned int aom_masked_sad32x16_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad32x16 aom_masked_sad32x16_c + -+void aom_masked_sad32x16x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad32x16x4d aom_masked_sad32x16x4d_c -+ +unsigned int aom_masked_sad32x32_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad32x32 aom_masked_sad32x32_c + -+void aom_masked_sad32x32x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad32x32x4d aom_masked_sad32x32x4d_c -+ +unsigned int aom_masked_sad32x64_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad32x64 aom_masked_sad32x64_c + -+void aom_masked_sad32x64x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad32x64x4d aom_masked_sad32x64x4d_c -+ +unsigned int aom_masked_sad4x4_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad4x4 aom_masked_sad4x4_c + -+void aom_masked_sad4x4x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad4x4x4d aom_masked_sad4x4x4d_c -+ +unsigned int aom_masked_sad4x8_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad4x8 aom_masked_sad4x8_c + -+void aom_masked_sad4x8x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad4x8x4d aom_masked_sad4x8x4d_c -+ +unsigned int aom_masked_sad64x128_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad64x128 aom_masked_sad64x128_c + -+void aom_masked_sad64x128x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad64x128x4d aom_masked_sad64x128x4d_c -+ +unsigned int aom_masked_sad64x32_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad64x32 aom_masked_sad64x32_c + -+void aom_masked_sad64x32x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad64x32x4d aom_masked_sad64x32x4d_c -+ +unsigned int aom_masked_sad64x64_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad64x64 aom_masked_sad64x64_c + -+void aom_masked_sad64x64x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad64x64x4d aom_masked_sad64x64x4d_c -+ +unsigned int aom_masked_sad8x16_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad8x16 aom_masked_sad8x16_c + -+void aom_masked_sad8x16x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad8x16x4d aom_masked_sad8x16x4d_c -+ +unsigned int aom_masked_sad8x4_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad8x4 aom_masked_sad8x4_c + -+void aom_masked_sad8x4x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad8x4x4d aom_masked_sad8x4x4d_c -+ +unsigned int aom_masked_sad8x8_c(const uint8_t *src, int src_stride, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask); +#define aom_masked_sad8x8 aom_masked_sad8x8_c + -+void aom_masked_sad8x8x4d_c(const uint8_t *src, int src_stride, const uint8_t *ref[4], int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned sads[4]); -+#define aom_masked_sad8x8x4d aom_masked_sad8x8x4d_c -+ +unsigned int aom_masked_sub_pixel_variance128x128_c(const uint8_t *src, int src_stride, int xoffset, int yoffset, const uint8_t *ref, int ref_stride, const uint8_t *second_pred, const uint8_t *msk, int msk_stride, int invert_mask, unsigned int *sse); +#define aom_masked_sub_pixel_variance128x128 aom_masked_sub_pixel_variance128x128_c + @@ -1766,11 +1725,22 @@ Index: chromium-128.0.6613.113/third_party/libaom/source/config/linux/ppc64/conf +#endif + +#endif -Index: chromium-128.0.6613.113/third_party/libaom/source/config/linux/ppc64/config/aom_scale_rtcd.h +Index: chromium-129.0.6668.42/third_party/libaom/source/config/linux/ppc64/config/aom_scale_rtcd.h =================================================================== --- /dev/null -+++ chromium-128.0.6613.113/third_party/libaom/source/config/linux/ppc64/config/aom_scale_rtcd.h -@@ -0,0 +1,107 @@ ++++ chromium-129.0.6668.42/third_party/libaom/source/config/linux/ppc64/config/aom_scale_rtcd.h +@@ -0,0 +1,91 @@ ++/* ++ * Copyright (c) 2024, Alliance for Open Media. All rights reserved. ++ * ++ * This source code is subject to the terms of the BSD 2 Clause License and ++ * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License ++ * was not distributed with this source code in the LICENSE file, you can ++ * obtain it at www.aomedia.org/license/software. If the Alliance for Open ++ * Media Patent License 1.0 was not distributed with this source code in the ++ * PATENTS file, you can obtain it at www.aomedia.org/license/patent. ++ */ ++ +// This file is generated. Do not edit. +#ifndef AOM_SCALE_RTCD_H_ +#define AOM_SCALE_RTCD_H_ @@ -1795,33 +1765,6 @@ Index: chromium-128.0.6613.113/third_party/libaom/source/config/linux/ppc64/conf +void aom_extend_frame_borders_plane_row_c(const struct yv12_buffer_config *ybf, int plane, int v_start, int v_end); +#define aom_extend_frame_borders_plane_row aom_extend_frame_borders_plane_row_c + -+void aom_extend_frame_borders_y_c(struct yv12_buffer_config *ybf); -+#define aom_extend_frame_borders_y aom_extend_frame_borders_y_c -+ -+void aom_extend_frame_inner_borders_c(struct yv12_buffer_config *ybf, const int num_planes); -+#define aom_extend_frame_inner_borders aom_extend_frame_inner_borders_c -+ -+void aom_horizontal_line_2_1_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); -+#define aom_horizontal_line_2_1_scale aom_horizontal_line_2_1_scale_c -+ -+void aom_horizontal_line_5_3_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); -+#define aom_horizontal_line_5_3_scale aom_horizontal_line_5_3_scale_c -+ -+void aom_horizontal_line_5_4_scale_c(const unsigned char *source, unsigned int source_width, unsigned char *dest, unsigned int dest_width); -+#define aom_horizontal_line_5_4_scale aom_horizontal_line_5_4_scale_c -+ -+void aom_vertical_band_2_1_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width); -+#define aom_vertical_band_2_1_scale aom_vertical_band_2_1_scale_c -+ -+void aom_vertical_band_2_1_scale_i_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width); -+#define aom_vertical_band_2_1_scale_i aom_vertical_band_2_1_scale_i_c -+ -+void aom_vertical_band_5_3_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width); -+#define aom_vertical_band_5_3_scale aom_vertical_band_5_3_scale_c -+ -+void aom_vertical_band_5_4_scale_c(unsigned char *source, int src_pitch, unsigned char *dest, int dest_pitch, unsigned int dest_width); -+#define aom_vertical_band_5_4_scale aom_vertical_band_5_4_scale_c -+ +void aom_yv12_copy_frame_c(const struct yv12_buffer_config *src_bc, struct yv12_buffer_config *dst_bc, const int num_planes); +#define aom_yv12_copy_frame aom_yv12_copy_frame_c + @@ -1878,11 +1821,22 @@ Index: chromium-128.0.6613.113/third_party/libaom/source/config/linux/ppc64/conf +#endif + +#endif -Index: chromium-128.0.6613.113/third_party/libaom/source/config/linux/ppc64/config/av1_rtcd.h +Index: chromium-129.0.6668.42/third_party/libaom/source/config/linux/ppc64/config/av1_rtcd.h =================================================================== --- /dev/null -+++ chromium-128.0.6613.113/third_party/libaom/source/config/linux/ppc64/config/av1_rtcd.h -@@ -0,0 +1,484 @@ ++++ chromium-129.0.6668.42/third_party/libaom/source/config/linux/ppc64/config/av1_rtcd.h +@@ -0,0 +1,438 @@ ++/* ++ * Copyright (c) 2024, Alliance for Open Media. All rights reserved. ++ * ++ * This source code is subject to the terms of the BSD 2 Clause License and ++ * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License ++ * was not distributed with this source code in the LICENSE file, you can ++ * obtain it at www.aomedia.org/license/software. If the Alliance for Open ++ * Media Patent License 1.0 was not distributed with this source code in the ++ * PATENTS file, you can obtain it at www.aomedia.org/license/patent. ++ */ ++ +// This file is generated. Do not edit. +#ifndef AV1_RTCD_H_ +#define AV1_RTCD_H_ @@ -1967,12 +1921,6 @@ Index: chromium-128.0.6613.113/third_party/libaom/source/config/linux/ppc64/conf + int ref_stride, int subpel_search); +#define aom_comp_avg_upsampled_pred aom_comp_avg_upsampled_pred_c + -+void aom_dist_wtd_comp_avg_upsampled_pred_c(MACROBLOCKD *xd, const struct AV1Common *const cm, int mi_row, int mi_col, -+ const MV *const mv, uint8_t *comp_pred, const uint8_t *pred, int width, -+ int height, int subpel_x_q3, int subpel_y_q3, const uint8_t *ref, -+ int ref_stride, const DIST_WTD_COMP_PARAMS *jcp_param, int subpel_search); -+#define aom_dist_wtd_comp_avg_upsampled_pred aom_dist_wtd_comp_avg_upsampled_pred_c -+ +void aom_quantize_b_helper_c(const tran_low_t *coeff_ptr, intptr_t n_coeffs, const int16_t *zbin_ptr, const int16_t *round_ptr, const int16_t *quant_ptr, const int16_t *quant_shift_ptr, tran_low_t *qcoeff_ptr, tran_low_t *dqcoeff_ptr, const int16_t *dequant_ptr, uint16_t *eob_ptr, const int16_t *scan, const int16_t *iscan, const qm_val_t *qm_ptr, const qm_val_t *iqm_ptr, const int log_scale); +#define aom_quantize_b_helper aom_quantize_b_helper_c + @@ -2050,6 +1998,9 @@ Index: chromium-128.0.6613.113/third_party/libaom/source/config/linux/ppc64/conf +void av1_dr_prediction_z3_c(uint8_t *dst, ptrdiff_t stride, int bw, int bh, const uint8_t *above, const uint8_t *left, int upsample_left, int dx, int dy); +#define av1_dr_prediction_z3 av1_dr_prediction_z3_c + ++void av1_fdwt8x8_uint8_input_c(const uint8_t *input, tran_low_t *output, int stride, int hbd); ++#define av1_fdwt8x8_uint8_input av1_fdwt8x8_uint8_input_c ++ +void av1_filter_intra_edge_c(uint8_t *p, int sz, int strength); +#define av1_filter_intra_edge av1_filter_intra_edge_c + @@ -2113,60 +2064,6 @@ Index: chromium-128.0.6613.113/third_party/libaom/source/config/linux/ppc64/conf +void av1_highbd_inv_txfm_add_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); +#define av1_highbd_inv_txfm_add av1_highbd_inv_txfm_add_c + -+void av1_highbd_inv_txfm_add_16x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_16x32 av1_highbd_inv_txfm_add_16x32_c -+ -+void av1_highbd_inv_txfm_add_16x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_16x4 av1_highbd_inv_txfm_add_16x4_c -+ -+void av1_highbd_inv_txfm_add_16x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_16x64 av1_highbd_inv_txfm_add_16x64_c -+ -+void av1_highbd_inv_txfm_add_16x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_16x8 av1_highbd_inv_txfm_add_16x8_c -+ -+void av1_highbd_inv_txfm_add_32x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_32x16 av1_highbd_inv_txfm_add_32x16_c -+ -+void av1_highbd_inv_txfm_add_32x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_32x32 av1_highbd_inv_txfm_add_32x32_c -+ -+void av1_highbd_inv_txfm_add_32x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_32x64 av1_highbd_inv_txfm_add_32x64_c -+ -+void av1_highbd_inv_txfm_add_32x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_32x8 av1_highbd_inv_txfm_add_32x8_c -+ -+void av1_highbd_inv_txfm_add_4x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_4x16 av1_highbd_inv_txfm_add_4x16_c -+ -+void av1_highbd_inv_txfm_add_4x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_4x4 av1_highbd_inv_txfm_add_4x4_c -+ -+void av1_highbd_inv_txfm_add_4x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_4x8 av1_highbd_inv_txfm_add_4x8_c -+ -+void av1_highbd_inv_txfm_add_64x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_64x16 av1_highbd_inv_txfm_add_64x16_c -+ -+void av1_highbd_inv_txfm_add_64x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_64x32 av1_highbd_inv_txfm_add_64x32_c -+ -+void av1_highbd_inv_txfm_add_64x64_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_64x64 av1_highbd_inv_txfm_add_64x64_c -+ -+void av1_highbd_inv_txfm_add_8x16_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_8x16 av1_highbd_inv_txfm_add_8x16_c -+ -+void av1_highbd_inv_txfm_add_8x32_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_8x32 av1_highbd_inv_txfm_add_8x32_c -+ -+void av1_highbd_inv_txfm_add_8x4_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_8x4 av1_highbd_inv_txfm_add_8x4_c -+ -+void av1_highbd_inv_txfm_add_8x8_c(const tran_low_t *input, uint8_t *dest, int stride, const TxfmParam *txfm_param); -+#define av1_highbd_inv_txfm_add_8x8 av1_highbd_inv_txfm_add_8x8_c -+ +void av1_highbd_iwht4x4_16_add_c(const tran_low_t *input, uint8_t *dest, int dest_stride, int bd); +#define av1_highbd_iwht4x4_16_add av1_highbd_iwht4x4_16_add_c + @@ -2260,7 +2157,7 @@ Index: chromium-128.0.6613.113/third_party/libaom/source/config/linux/ppc64/conf +void av1_resize_and_extend_frame_c(const YV12_BUFFER_CONFIG *src, YV12_BUFFER_CONFIG *dst, const InterpFilter filter, const int phase, const int num_planes); +#define av1_resize_and_extend_frame av1_resize_and_extend_frame_c + -+void av1_resize_horz_dir_c(const uint8_t *const input, int in_stride, uint8_t *intbuf, int height, int filteredlength, int width2); ++void av1_resize_horz_dir_c(const uint8_t *const input, int in_stride, uint8_t *intbuf, int height, int filtered_length, int width2); +#define av1_resize_horz_dir av1_resize_horz_dir_c + +bool av1_resize_vert_dir_c(uint8_t *intbuf, uint8_t *output, int out_stride, int height, int height2, int width2, int start_col); diff --git a/SOURCES/0001-Implement-support-for-PPC64-on-Linux.patch b/SOURCES/0001-Implement-support-for-PPC64-on-Linux.patch index d413b084..623cf5ac 100644 --- a/SOURCES/0001-Implement-support-for-PPC64-on-Linux.patch +++ b/SOURCES/0001-Implement-support-for-PPC64-on-Linux.patch @@ -40,20 +40,16 @@ This patch implements support for the PPC64 architecture on Linux hosts. util/misc/capture_context_test_util_linux.cc | 6 + 36 files changed, 932 insertions(+), 12 deletions(-) -Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/CONTRIBUTORS -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/crashpad/crashpad/CONTRIBUTORS -+++ chromium-128.0.6613.113/third_party/crashpad/crashpad/CONTRIBUTORS +--- a/third_party/crashpad/crashpad/CONTRIBUTORS ++++ b/third_party/crashpad/crashpad/CONTRIBUTORS @@ -13,3 +13,5 @@ Mark Mentovai Robert Sesek Scott Graham Joshua Peraza +Shawn Anastasio +Timothy Pearson -Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/minidump/minidump_context.h -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/crashpad/crashpad/minidump/minidump_context.h -+++ chromium-128.0.6613.113/third_party/crashpad/crashpad/minidump/minidump_context.h +--- a/third_party/crashpad/crashpad/minidump/minidump_context.h ++++ b/third_party/crashpad/crashpad/minidump/minidump_context.h @@ -687,6 +687,70 @@ struct MinidumpContextRISCV64 { uint32_t fcsr; }; @@ -125,10 +121,8 @@ Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/minidump/minidump_c } // namespace crashpad #endif // CRASHPAD_MINIDUMP_MINIDUMP_CONTEXT_H_ -Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc -+++ chromium-128.0.6613.113/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc +--- a/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc ++++ b/third_party/crashpad/crashpad/minidump/minidump_context_writer.cc @@ -110,6 +110,13 @@ MinidumpContextWriter::CreateFromSnapsho break; } @@ -192,10 +186,8 @@ Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/minidump/minidump_c +} } // namespace crashpad -Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/minidump/minidump_context_writer.h -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/crashpad/crashpad/minidump/minidump_context_writer.h -+++ chromium-128.0.6613.113/third_party/crashpad/crashpad/minidump/minidump_context_writer.h +--- a/third_party/crashpad/crashpad/minidump/minidump_context_writer.h ++++ b/third_party/crashpad/crashpad/minidump/minidump_context_writer.h @@ -413,6 +413,49 @@ class MinidumpContextRISCV64Writer final MinidumpContextRISCV64 context_; }; @@ -246,11 +238,9 @@ Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/minidump/minidump_c } // namespace crashpad #endif // CRASHPAD_MINIDUMP_MINIDUMP_CONTEXT_WRITER_H_ -Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/minidump/minidump_context_writer_test.cc -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/crashpad/crashpad/minidump/minidump_context_writer_test.cc -+++ chromium-128.0.6613.113/third_party/crashpad/crashpad/minidump/minidump_context_writer_test.cc -@@ -328,6 +328,21 @@ TYPED_TEST(MinidumpContextWriter, RISCV6 +--- a/third_party/crashpad/crashpad/minidump/minidump_context_writer_test.cc ++++ b/third_party/crashpad/crashpad/minidump/minidump_context_writer_test.cc +@@ -322,6 +322,21 @@ TYPED_TEST(MinidumpContextWriter, RISCV6 TypeParam>(context, ExpectMinidumpContextRISCV64, kSeed); } @@ -272,10 +262,8 @@ Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/minidump/minidump_c } // namespace } // namespace test } // namespace crashpad -Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc -+++ chromium-128.0.6613.113/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc +--- a/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc ++++ b/third_party/crashpad/crashpad/minidump/minidump_misc_info_writer.cc @@ -177,6 +177,8 @@ std::string MinidumpMiscInfoDebugBuildSt static constexpr char kCPU[] = "mips64"; #elif defined(ARCH_CPU_RISCV64) @@ -285,10 +273,8 @@ Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/minidump/minidump_m #else #error define kCPU for this CPU #endif -Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/minidump/test/minidump_context_test_util.cc -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/crashpad/crashpad/minidump/test/minidump_context_test_util.cc -+++ chromium-128.0.6613.113/third_party/crashpad/crashpad/minidump/test/minidump_context_test_util.cc +--- a/third_party/crashpad/crashpad/minidump/test/minidump_context_test_util.cc ++++ b/third_party/crashpad/crashpad/minidump/test/minidump_context_test_util.cc @@ -297,6 +297,40 @@ void InitializeMinidumpContextRISCV64(Mi context->fcsr = value++; } @@ -369,10 +355,8 @@ Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/minidump/test/minid + } // namespace test } // namespace crashpad -Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/minidump/test/minidump_context_test_util.h -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/crashpad/crashpad/minidump/test/minidump_context_test_util.h -+++ chromium-128.0.6613.113/third_party/crashpad/crashpad/minidump/test/minidump_context_test_util.h +--- a/third_party/crashpad/crashpad/minidump/test/minidump_context_test_util.h ++++ b/third_party/crashpad/crashpad/minidump/test/minidump_context_test_util.h @@ -90,6 +90,9 @@ void ExpectMinidumpContextMIPS64(uint32_ void ExpectMinidumpContextRISCV64(uint32_t expect_seed, const MinidumpContextRISCV64* observed, @@ -383,10 +367,8 @@ Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/minidump/test/minid //! \} } // namespace test -Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/capture_memory.cc -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/crashpad/crashpad/snapshot/capture_memory.cc -+++ chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/capture_memory.cc +--- a/third_party/crashpad/crashpad/snapshot/capture_memory.cc ++++ b/third_party/crashpad/crashpad/snapshot/capture_memory.cc @@ -123,6 +123,11 @@ void CaptureMemory::PointedToByContext(c for (size_t i = 0; i < std::size(context.riscv64->regs); ++i) { MaybeCaptureMemoryAround(delegate, context.riscv64->regs[i]); @@ -399,10 +381,8 @@ Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/capture_me #else #error Port. #endif -Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/cpu_architecture.h -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/crashpad/crashpad/snapshot/cpu_architecture.h -+++ chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/cpu_architecture.h +--- a/third_party/crashpad/crashpad/snapshot/cpu_architecture.h ++++ b/third_party/crashpad/crashpad/snapshot/cpu_architecture.h @@ -47,6 +47,9 @@ enum CPUArchitecture { //! \brief 64-bit RISC-V. @@ -413,10 +393,8 @@ Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/cpu_archit }; } // namespace crashpad -Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/cpu_context.cc -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/crashpad/crashpad/snapshot/cpu_context.cc -+++ chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/cpu_context.cc +--- a/third_party/crashpad/crashpad/snapshot/cpu_context.cc ++++ b/third_party/crashpad/crashpad/snapshot/cpu_context.cc @@ -173,6 +173,8 @@ uint64_t CPUContext::InstructionPointer( return arm64->pc; case kCPUArchitectureRISCV64: @@ -424,18 +402,18 @@ Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/cpu_contex + case kCPUArchitecturePPC64: + return ppc64->nip; default: - NOTREACHED_IN_MIGRATION(); - return ~0ull; -@@ -191,6 +193,8 @@ uint64_t CPUContext::StackPointer() cons + NOTREACHED(); + } +@@ -190,6 +192,8 @@ uint64_t CPUContext::StackPointer() cons return arm64->sp; case kCPUArchitectureRISCV64: return riscv64->regs[1]; + case kCPUArchitecturePPC64: + return ppc64->regs[1]; default: - NOTREACHED_IN_MIGRATION(); - return ~0ull; -@@ -231,6 +235,7 @@ bool CPUContext::Is64Bit() const { + NOTREACHED(); + } +@@ -226,6 +230,7 @@ bool CPUContext::Is64Bit() const { case kCPUArchitectureX86_64: case kCPUArchitectureARM64: case kCPUArchitectureMIPS64EL: @@ -443,10 +421,8 @@ Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/cpu_contex case kCPUArchitectureRISCV64: return true; case kCPUArchitectureX86: -Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/cpu_context.h -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/crashpad/crashpad/snapshot/cpu_context.h -+++ chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/cpu_context.h +--- a/third_party/crashpad/crashpad/snapshot/cpu_context.h ++++ b/third_party/crashpad/crashpad/snapshot/cpu_context.h @@ -371,6 +371,24 @@ struct CPUContextRISCV64 { uint32_t fcsr; }; @@ -480,10 +456,8 @@ Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/cpu_contex }; }; -Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h -+++ chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h +--- a/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h ++++ b/third_party/crashpad/crashpad/snapshot/linux/cpu_context_linux.h @@ -15,6 +15,7 @@ #ifndef CRASHPAD_SNAPSHOT_LINUX_CPU_CONTEXT_LINUX_H_ #define CRASHPAD_SNAPSHOT_LINUX_CPU_CONTEXT_LINUX_H_ @@ -571,10 +545,8 @@ Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/linux/cpu_ } // namespace internal } // namespace crashpad -Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/linux/debug_rendezvous_test.cc -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/crashpad/crashpad/snapshot/linux/debug_rendezvous_test.cc -+++ chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/linux/debug_rendezvous_test.cc +--- a/third_party/crashpad/crashpad/snapshot/linux/debug_rendezvous_test.cc ++++ b/third_party/crashpad/crashpad/snapshot/linux/debug_rendezvous_test.cc @@ -194,12 +194,15 @@ void TestAgainstTarget(PtraceConnection* device == 0 && inode == 0 && mapping_name == "[vdso]"; #if defined(ARCH_CPU_X86) @@ -592,10 +564,8 @@ Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/linux/debu }, module_mapping->name, module_mapping->device, -Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc -+++ chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc +--- a/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc ++++ b/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.cc @@ -367,6 +367,69 @@ bool ExceptionSnapshotLinux::ReadContext return internal::ReadContext(reader, context_address, context_.riscv64); } @@ -666,10 +636,8 @@ Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/linux/exce #endif // ARCH_CPU_X86_FAMILY bool ExceptionSnapshotLinux::Initialize( -Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h -+++ chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h +--- a/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h ++++ b/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux.h @@ -91,6 +91,8 @@ class ExceptionSnapshotLinux final : pub CPUContextMIPS64 mips64; #elif defined(ARCH_CPU_RISCV64) @@ -679,10 +647,8 @@ Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/linux/exce #endif } context_union_; CPUContext context_; -Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux_test.cc -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux_test.cc -+++ chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux_test.cc +--- a/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux_test.cc ++++ b/third_party/crashpad/crashpad/snapshot/linux/exception_snapshot_linux_test.cc @@ -325,7 +325,28 @@ void ExpectContext(const CPUContext& act sizeof(actual.riscv64->fpregs)), 0); @@ -712,10 +678,8 @@ Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/linux/exce #else #error Port. #endif -Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc -+++ chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc +--- a/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc ++++ b/third_party/crashpad/crashpad/snapshot/linux/process_reader_linux.cc @@ -129,6 +129,8 @@ void ProcessReaderLinux::Thread::Initial : thread_info.thread_context.t32.regs[29]; #elif defined(ARCH_CPU_RISCV64) @@ -725,10 +689,8 @@ Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/linux/proc #else #error Port. #endif -Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/linux/signal_context.h -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/crashpad/crashpad/snapshot/linux/signal_context.h -+++ chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/linux/signal_context.h +--- a/third_party/crashpad/crashpad/snapshot/linux/signal_context.h ++++ b/third_party/crashpad/crashpad/snapshot/linux/signal_context.h @@ -456,6 +456,89 @@ static_assert(offsetof(UContextfcsr = value++; } @@ -937,10 +891,8 @@ Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/test/test_ + } // namespace test } // namespace crashpad -Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/test/test_cpu_context.h -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/crashpad/crashpad/snapshot/test/test_cpu_context.h -+++ chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/test/test_cpu_context.h +--- a/third_party/crashpad/crashpad/snapshot/test/test_cpu_context.h ++++ b/third_party/crashpad/crashpad/snapshot/test/test_cpu_context.h @@ -64,6 +64,7 @@ void InitializeCPUContextARM64(CPUContex void InitializeCPUContextMIPS(CPUContext* context, uint32_t seed); void InitializeCPUContextMIPS64(CPUContext* context, uint32_t seed); @@ -949,10 +901,8 @@ Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/snapshot/test/test_ //! \} } // namespace test -Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/test/linux/get_tls.cc -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/crashpad/crashpad/test/linux/get_tls.cc -+++ chromium-128.0.6613.113/third_party/crashpad/crashpad/test/linux/get_tls.cc +--- a/third_party/crashpad/crashpad/test/linux/get_tls.cc ++++ b/third_party/crashpad/crashpad/test/linux/get_tls.cc @@ -51,6 +51,8 @@ LinuxVMAddress GetTLS() { : "$3"); #elif defined(ARCH_CPU_RISCV64) @@ -962,10 +912,8 @@ Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/test/linux/get_tls. #else #error Port. #endif // ARCH_CPU_ARMEL -Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/test/multiprocess_posix.cc -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/crashpad/crashpad/test/multiprocess_posix.cc -+++ chromium-128.0.6613.113/third_party/crashpad/crashpad/test/multiprocess_posix.cc +--- a/third_party/crashpad/crashpad/test/multiprocess_posix.cc ++++ b/third_party/crashpad/crashpad/test/multiprocess_posix.cc @@ -162,7 +162,8 @@ void Multiprocess::SetExpectedChildTermi } @@ -976,10 +924,8 @@ Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/test/multiprocess_p SetExpectedChildTermination(kTerminationSignal, SIGTRAP); #else SetExpectedChildTermination(kTerminationSignal, SIGILL); -Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/util/linux/auxiliary_vector.cc -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/crashpad/crashpad/util/linux/auxiliary_vector.cc -+++ chromium-128.0.6613.113/third_party/crashpad/crashpad/util/linux/auxiliary_vector.cc +--- a/third_party/crashpad/crashpad/util/linux/auxiliary_vector.cc ++++ b/third_party/crashpad/crashpad/util/linux/auxiliary_vector.cc @@ -56,6 +56,11 @@ bool AuxiliaryVector::Read(PtraceConnect if (type == AT_IGNORE) { continue; @@ -992,10 +938,8 @@ Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/util/linux/auxiliar if (!MapInsertOrReplace(&values_, type, value, nullptr)) { LOG(ERROR) << "duplicate auxv entry"; return false; -Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/util/linux/ptracer.cc -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/crashpad/crashpad/util/linux/ptracer.cc -+++ chromium-128.0.6613.113/third_party/crashpad/crashpad/util/linux/ptracer.cc +--- a/third_party/crashpad/crashpad/util/linux/ptracer.cc ++++ b/third_party/crashpad/crashpad/util/linux/ptracer.cc @@ -430,6 +430,64 @@ bool GetThreadArea64(pid_t tid, return true; } @@ -1071,10 +1015,8 @@ Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/util/linux/ptracer. GetThreadArea64(tid, info->thread_context, &info->thread_specific_data_address, -Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/util/linux/thread_info.h -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/crashpad/crashpad/util/linux/thread_info.h -+++ chromium-128.0.6613.113/third_party/crashpad/crashpad/util/linux/thread_info.h +--- a/third_party/crashpad/crashpad/util/linux/thread_info.h ++++ b/third_party/crashpad/crashpad/util/linux/thread_info.h @@ -34,6 +34,10 @@ #include #endif @@ -1193,10 +1135,8 @@ Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/util/linux/thread_i //! \brief The thread-local storage address for the thread. LinuxVMAddress thread_specific_data_address; }; -Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/util/misc/capture_context.h -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/crashpad/crashpad/util/misc/capture_context.h -+++ chromium-128.0.6613.113/third_party/crashpad/crashpad/util/misc/capture_context.h +--- a/third_party/crashpad/crashpad/util/misc/capture_context.h ++++ b/third_party/crashpad/crashpad/util/misc/capture_context.h @@ -70,6 +70,7 @@ using NativeCPUContext = ucontext_t; //! Linux | ARM/ARM64 | `r0`/`x0` //! Linux | MIPS/MIPS64 | `$a0` @@ -1205,10 +1145,8 @@ Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/util/misc/capture_c //! //! Additionally, the value `LR` on ARM/ARM64 will be the return address of //! this function. -Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/util/misc/capture_context_linux.S -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/crashpad/crashpad/util/misc/capture_context_linux.S -+++ chromium-128.0.6613.113/third_party/crashpad/crashpad/util/misc/capture_context_linux.S +--- a/third_party/crashpad/crashpad/util/misc/capture_context_linux.S ++++ b/third_party/crashpad/crashpad/util/misc/capture_context_linux.S @@ -30,7 +30,7 @@ .globl CAPTURECONTEXT_SYMBOL2 #if defined(__i386__) || defined(__x86_64__) @@ -1435,10 +1373,8 @@ Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/util/misc/capture_c #elif defined(__riscv) #define MCONTEXT_GREGS_OFFSET 176 -Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/util/misc/capture_context_test.cc -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/crashpad/crashpad/util/misc/capture_context_test.cc -+++ chromium-128.0.6613.113/third_party/crashpad/crashpad/util/misc/capture_context_test.cc +--- a/third_party/crashpad/crashpad/util/misc/capture_context_test.cc ++++ b/third_party/crashpad/crashpad/util/misc/capture_context_test.cc @@ -48,7 +48,7 @@ void TestCaptureContext() { uintptr_t pc = ProgramCounterFromContext(context_1); @@ -1448,10 +1384,8 @@ Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/util/misc/capture_c // Sanitizers can cause enough code bloat that the “nearby” check would // likely fail. const uintptr_t kReferencePC = -Index: chromium-128.0.6613.113/third_party/crashpad/crashpad/util/misc/capture_context_test_util_linux.cc -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/crashpad/crashpad/util/misc/capture_context_test_util_linux.cc -+++ chromium-128.0.6613.113/third_party/crashpad/crashpad/util/misc/capture_context_test_util_linux.cc +--- a/third_party/crashpad/crashpad/util/misc/capture_context_test_util_linux.cc ++++ b/third_party/crashpad/crashpad/util/misc/capture_context_test_util_linux.cc @@ -38,6 +38,8 @@ void SanityCheckContext(const NativeCPUC #elif defined(ARCH_CPU_RISCV64) EXPECT_EQ(context.uc_mcontext.__gregs[10], diff --git a/SOURCES/Sandbox-linux-services-credentials.cc-PPC.patch b/SOURCES/Sandbox-linux-services-credentials.cc-PPC.patch index e578daf7..7535d699 100644 --- a/SOURCES/Sandbox-linux-services-credentials.cc-PPC.patch +++ b/SOURCES/Sandbox-linux-services-credentials.cc-PPC.patch @@ -1,10 +1,8 @@ -Index: chromium-128.0.6613.113/sandbox/linux/services/credentials.cc -=================================================================== ---- chromium-128.0.6613.113.orig/sandbox/linux/services/credentials.cc -+++ chromium-128.0.6613.113/sandbox/linux/services/credentials.cc -@@ -85,7 +85,7 @@ bool ChrootToSafeEmptyDir() { - pid_t pid = -1; +--- a/sandbox/linux/services/credentials.cc ++++ b/sandbox/linux/services/credentials.cc +@@ -91,7 +91,7 @@ bool ChrootToSafeEmptyDir() { alignas(16) char stack_buf[PTHREAD_STACK_MIN]; + #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) diff --git a/SOURCES/cargo-add-ppc64.diff b/SOURCES/cargo-add-ppc64.diff new file mode 100644 index 00000000..275bf026 --- /dev/null +++ b/SOURCES/cargo-add-ppc64.diff @@ -0,0 +1,12 @@ +diff -up chromium-129.0.6668.42/build/rust/cargo_crate.gni.me chromium-129.0.6668.42/build/rust/cargo_crate.gni +--- chromium-129.0.6668.42/build/rust/cargo_crate.gni.me 2024-09-16 14:19:49.407900780 +0200 ++++ chromium-129.0.6668.42/build/rust/cargo_crate.gni 2024-09-16 14:21:33.411392581 +0200 +@@ -429,7 +429,7 @@ template("cargo_crate") { + rust_abi_target, + ] + } +- if (current_cpu == "arm64" || current_cpu == "x64") { ++ if (current_cpu == "arm64" || current_cpu == "x64" || current_cpu == "ppc64") { + args += [ + "--pointer-width", + "64", diff --git a/SOURCES/chromium-126-system-libstdc++.patch b/SOURCES/chromium-126-system-libstdc++.patch deleted file mode 100644 index 396f48f8..00000000 --- a/SOURCES/chromium-126-system-libstdc++.patch +++ /dev/null @@ -1,667 +0,0 @@ -diff -up chromium-126.0.6478.26/base/allocator/partition_allocator/src/partition_alloc/starscan/stats_collector.h.system-libstdc++ chromium-126.0.6478.26/base/allocator/partition_allocator/src/partition_alloc/starscan/stats_collector.h ---- chromium-126.0.6478.26/base/allocator/partition_allocator/src/partition_alloc/starscan/stats_collector.h.system-libstdc++ 2024-05-29 18:00:45.000000000 +0200 -+++ chromium-126.0.6478.26/base/allocator/partition_allocator/src/partition_alloc/starscan/stats_collector.h 2024-06-02 23:51:25.562917154 +0200 -@@ -14,7 +14,7 @@ - #include - #include - --#include "partition_alloc/internal_allocator_forward.h" -+#include "partition_alloc/internal_allocator.h" - #include "partition_alloc/partition_alloc_base/threading/platform_thread.h" - #include "partition_alloc/partition_alloc_base/time/time.h" - #include "partition_alloc/partition_alloc_check.h" -diff -up chromium-126.0.6478.26/chrome/browser/ui/tabs/tab_strip_model.h.system-libstdc++ chromium-126.0.6478.26/chrome/browser/ui/tabs/tab_strip_model.h ---- chromium-126.0.6478.26/chrome/browser/ui/tabs/tab_strip_model.h.system-libstdc++ 2024-05-29 18:00:59.000000000 +0200 -+++ chromium-126.0.6478.26/chrome/browser/ui/tabs/tab_strip_model.h 2024-06-02 23:51:25.563917178 +0200 -@@ -12,6 +12,7 @@ - #include - #include - #include -+#include - #include - - #include "base/containers/span.h" -diff -up chromium-126.0.6478.26/components/viz/service/display/surface_aggregator.cc.system-libstdc++ chromium-126.0.6478.26/components/viz/service/display/surface_aggregator.cc ---- chromium-126.0.6478.26/components/viz/service/display/surface_aggregator.cc.system-libstdc++ 2024-05-29 18:01:12.000000000 +0200 -+++ chromium-126.0.6478.26/components/viz/service/display/surface_aggregator.cc 2024-06-02 23:51:25.563917178 +0200 -@@ -2296,7 +2296,7 @@ AggregatedFrame SurfaceAggregator::Aggre - root_surface_id_ = surface_id; - - // Start recording new stats for this aggregation. -- stats_.emplace(); -+ stats_ = AggregateStatistics{}; - - base::ElapsedTimer prewalk_timer; - ResolvedFrameData* resolved_frame = GetResolvedFrame(surface_id); -diff -up chromium-126.0.6478.26/content/browser/first_party_sets/first_party_sets_handler_database_helper.cc.system-libstdc++ chromium-126.0.6478.26/content/browser/first_party_sets/first_party_sets_handler_database_helper.cc ---- chromium-126.0.6478.26/content/browser/first_party_sets/first_party_sets_handler_database_helper.cc.system-libstdc++ 2024-05-29 18:01:12.000000000 +0200 -+++ chromium-126.0.6478.26/content/browser/first_party_sets/first_party_sets_handler_database_helper.cc 2024-06-02 23:51:25.563917178 +0200 -@@ -2,6 +2,7 @@ - // Use of this source code is governed by a BSD-style license that can be - // found in the LICENSE file. - -+#include - #include "content/browser/first_party_sets/first_party_sets_handler_database_helper.h" - - #include "base/containers/contains.h" -diff -up chromium-126.0.6478.26/content/services/auction_worklet/real_time_reporting_bindings.h.system-libstdc++ chromium-126.0.6478.26/content/services/auction_worklet/real_time_reporting_bindings.h ---- chromium-126.0.6478.26/content/services/auction_worklet/real_time_reporting_bindings.h.system-libstdc++ 2024-06-04 13:52:43.689553459 +0200 -+++ chromium-126.0.6478.26/content/services/auction_worklet/real_time_reporting_bindings.h 2024-06-04 13:52:01.117778943 +0200 -@@ -12,7 +12,7 @@ - #include "content/common/content_export.h" - #include "content/services/auction_worklet/auction_v8_helper.h" - #include "content/services/auction_worklet/context_recycler.h" --#include "content/services/auction_worklet/public/mojom/real_time_reporting.mojom-forward.h" -+#include "content/services/auction_worklet/public/mojom/real_time_reporting.mojom.h" - #include "v8/include/v8-forward.h" - - namespace auction_worklet { -diff -up chromium-126.0.6478.26/gpu/command_buffer/service/shared_image/shared_image_backing.h.system-libstdc++ chromium-126.0.6478.26/gpu/command_buffer/service/shared_image/shared_image_backing.h ---- chromium-126.0.6478.26/gpu/command_buffer/service/shared_image/shared_image_backing.h.system-libstdc++ 2024-05-29 18:01:26.000000000 +0200 -+++ chromium-126.0.6478.26/gpu/command_buffer/service/shared_image/shared_image_backing.h 2024-06-02 23:51:25.564917202 +0200 -@@ -111,6 +111,25 @@ using VideoDecodeDevice = Microsoft::WRL - using VideoDecodeDevice = void*; - #endif // BUILDFLAG(IS_WIN) - -+class ScopedWriteUMA { -+ public: -+ ScopedWriteUMA() = default; -+ -+ ScopedWriteUMA(const ScopedWriteUMA&) = delete; -+ ScopedWriteUMA& operator=(const ScopedWriteUMA&) = delete; -+ -+ ~ScopedWriteUMA() { -+ UMA_HISTOGRAM_BOOLEAN("GPU.SharedImage.ContentConsumed", -+ content_consumed_); -+ } -+ -+ bool content_consumed() const { return content_consumed_; } -+ void SetConsumed() { content_consumed_ = true; } -+ -+ private: -+ bool content_consumed_ = false; -+}; -+ - // Represents the actual storage (GL texture, VkImage, GMB) for a SharedImage. - // Should not be accessed directly, instead is accessed through a - // SharedImageRepresentation. -@@ -384,25 +403,6 @@ class GPU_GLES2_EXPORT SharedImageBackin - mutable std::optional lock_; - - private: -- class ScopedWriteUMA { -- public: -- ScopedWriteUMA() = default; -- -- ScopedWriteUMA(const ScopedWriteUMA&) = delete; -- ScopedWriteUMA& operator=(const ScopedWriteUMA&) = delete; -- -- ~ScopedWriteUMA() { -- UMA_HISTOGRAM_BOOLEAN("GPU.SharedImage.ContentConsumed", -- content_consumed_); -- } -- -- bool content_consumed() const { return content_consumed_; } -- void SetConsumed() { content_consumed_ = true; } -- -- private: -- bool content_consumed_ = false; -- }; -- - const Mailbox mailbox_; - const viz::SharedImageFormat format_; - const gfx::Size size_; -diff -up chromium-126.0.6478.26/mojo/public/cpp/bindings/lib/multiplex_router.cc.system-libstdc++ chromium-126.0.6478.26/mojo/public/cpp/bindings/lib/multiplex_router.cc ---- chromium-126.0.6478.26/mojo/public/cpp/bindings/lib/multiplex_router.cc.system-libstdc++ 2024-05-29 18:01:33.000000000 +0200 -+++ chromium-126.0.6478.26/mojo/public/cpp/bindings/lib/multiplex_router.cc 2024-06-02 23:51:25.564917202 +0200 -@@ -893,7 +893,7 @@ bool MultiplexRouter::ExclusiveSyncWaitF - DCHECK(!exclusive_sync_wait_); - - scoped_refptr keep_alive(this); -- exclusive_sync_wait_.emplace(); -+ exclusive_sync_wait_ = ExclusiveSyncWaitInfo{}; - exclusive_sync_wait_->interface_id = interface_id; - exclusive_sync_wait_->request_id = request_id; - while (!exclusive_sync_wait_->finished) { -diff -up chromium-126.0.6478.26/third_party/blink/common/interest_group/auction_config_mojom_traits.cc.system-libstdc++ chromium-126.0.6478.26/third_party/blink/common/interest_group/auction_config_mojom_traits.cc ---- chromium-126.0.6478.26/third_party/blink/common/interest_group/auction_config_mojom_traits.cc.system-libstdc++ 2024-05-29 18:01:37.000000000 +0200 -+++ chromium-126.0.6478.26/third_party/blink/common/interest_group/auction_config_mojom_traits.cc 2024-06-02 23:51:25.565917225 +0200 -@@ -225,8 +225,6 @@ bool StructTraitsall_buyers_priority_signals) || - !data.ReadAuctionReportBuyerKeys(&out->auction_report_buyer_keys) || - !data.ReadAuctionReportBuyers(&out->auction_report_buyers) || -- !data.ReadAuctionReportBuyerDebugModeConfig( -- &out->auction_report_buyer_debug_mode_config) || - !data.ReadRequiredSellerCapabilities( - &out->required_seller_capabilities) || - !data.ReadRequestedSize(&out->requested_size) || -diff -up chromium-126.0.6478.26/third_party/blink/renderer/core/loader/history_item.cc.system-libstdc++ chromium-126.0.6478.26/third_party/blink/renderer/core/loader/history_item.cc ---- chromium-126.0.6478.26/third_party/blink/renderer/core/loader/history_item.cc.system-libstdc++ 2024-05-29 18:01:39.000000000 +0200 -+++ chromium-126.0.6478.26/third_party/blink/renderer/core/loader/history_item.cc 2024-06-02 23:51:25.565917225 +0200 -@@ -182,26 +182,26 @@ void HistoryItem::SetReferrerPolicy(netw - - void HistoryItem::SetVisualViewportScrollOffset(const ScrollOffset& offset) { - if (!view_state_) -- view_state_ = std::make_optional(); -+ view_state_ = blink::HistoryItem::ViewState{}; - view_state_->visual_viewport_scroll_offset_ = offset; - } - - void HistoryItem::SetScrollOffset(const ScrollOffset& offset) { - if (!view_state_) -- view_state_ = std::make_optional(); -+ view_state_ = blink::HistoryItem::ViewState{}; - view_state_->scroll_offset_ = offset; - } - - void HistoryItem::SetPageScaleFactor(float scale_factor) { - if (!view_state_) -- view_state_ = std::make_optional(); -+ view_state_ = blink::HistoryItem::ViewState{}; - view_state_->page_scale_factor_ = scale_factor; - } - - void HistoryItem::SetScrollAnchorData( - const ScrollAnchorData& scroll_anchor_data) { - if (!view_state_) -- view_state_ = std::make_optional(); -+ view_state_ = blink::HistoryItem::ViewState{}; - view_state_->scroll_anchor_data_ = scroll_anchor_data; - } - -diff -up chromium-126.0.6478.26/third_party/blink/renderer/core/page/page_popup_controller.h.system-libstdc++ chromium-126.0.6478.26/third_party/blink/renderer/core/page/page_popup_controller.h ---- chromium-126.0.6478.26/third_party/blink/renderer/core/page/page_popup_controller.h.system-libstdc++ 2024-06-04 17:01:05.066469613 +0200 -+++ chromium-126.0.6478.26/third_party/blink/renderer/core/page/page_popup_controller.h 2024-06-04 16:51:41.076869743 +0200 -@@ -31,6 +31,7 @@ - #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_PAGE_PAGE_POPUP_CONTROLLER_H_ - #define THIRD_PARTY_BLINK_RENDERER_CORE_PAGE_PAGE_POPUP_CONTROLLER_H_ - -+#include - #include "third_party/blink/renderer/platform/bindings/script_wrappable.h" - #include "third_party/blink/renderer/platform/heap/collection_support/heap_vector.h" - #include "third_party/blink/renderer/platform/heap/garbage_collected.h" -diff -up chromium-126.0.6478.26/third_party/blink/renderer/core/paint/fragment_data_iterator.h.system-libstdc++ chromium-126.0.6478.26/third_party/blink/renderer/core/paint/fragment_data_iterator.h ---- chromium-126.0.6478.26/third_party/blink/renderer/core/paint/fragment_data_iterator.h.system-libstdc++ 2024-05-29 18:01:40.000000000 +0200 -+++ chromium-126.0.6478.26/third_party/blink/renderer/core/paint/fragment_data_iterator.h 2024-06-02 23:51:25.565917225 +0200 -@@ -22,7 +22,7 @@ class FragmentDataIteratorBase { - - public: - explicit FragmentDataIteratorBase(Head& head) : fragment_head_(head) {} -- explicit FragmentDataIteratorBase(nullptr_t) {} -+ explicit FragmentDataIteratorBase(std::nullptr_t) {} - - Data* GetFragmentData() const { - return !IsDone() ? &fragment_head_.at(idx_) : nullptr; -diff -up chromium-126.0.6478.26/third_party/blink/renderer/modules/encoding/text_decoder.h.system-libstdc++ chromium-126.0.6478.26/third_party/blink/renderer/modules/encoding/text_decoder.h ---- chromium-126.0.6478.26/third_party/blink/renderer/modules/encoding/text_decoder.h.system-libstdc++ 2024-06-03 23:14:03.138724802 +0200 -+++ chromium-126.0.6478.26/third_party/blink/renderer/modules/encoding/text_decoder.h 2024-06-03 23:14:41.395654435 +0200 -@@ -31,6 +31,7 @@ - #ifndef THIRD_PARTY_BLINK_RENDERER_MODULES_ENCODING_TEXT_DECODER_H_ - #define THIRD_PARTY_BLINK_RENDERER_MODULES_ENCODING_TEXT_DECODER_H_ - -+#include - #include - - #include "third_party/blink/renderer/bindings/core/v8/v8_typedefs.h" -diff -up chromium-126.0.6478.26/third_party/blink/renderer/modules/media_controls/elements/media_control_timeline_element.cc.system-libstdc++ chromium-126.0.6478.26/third_party/blink/renderer/modules/media_controls/elements/media_control_timeline_element.cc ---- chromium-126.0.6478.26/third_party/blink/renderer/modules/media_controls/elements/media_control_timeline_element.cc.system-libstdc++ 2024-05-29 18:01:40.000000000 +0200 -+++ chromium-126.0.6478.26/third_party/blink/renderer/modules/media_controls/elements/media_control_timeline_element.cc 2024-06-02 23:51:25.566917250 +0200 -@@ -102,7 +102,7 @@ void MediaControlTimelineElement::Update - void MediaControlTimelineElement::SetPosition(double current_time, - bool suppress_aria) { - if (is_live_ && !live_anchor_time_ && current_time != 0) { -- live_anchor_time_.emplace(); -+ live_anchor_time_ = LiveAnchorTime{}; - live_anchor_time_->clock_time_ = base::TimeTicks::Now(); - live_anchor_time_->media_time_ = MediaElement().currentTime(); - } -diff -up chromium-126.0.6478.26/third_party/blink/renderer/platform/fonts/shaping/run_segmenter.h.system-libstdc++ chromium-126.0.6478.26/third_party/blink/renderer/platform/fonts/shaping/run_segmenter.h ---- chromium-126.0.6478.26/third_party/blink/renderer/platform/fonts/shaping/run_segmenter.h.system-libstdc++ 2024-06-04 16:52:15.268516255 +0200 -+++ chromium-126.0.6478.26/third_party/blink/renderer/platform/fonts/shaping/run_segmenter.h 2024-06-04 16:56:23.906705337 +0200 -@@ -7,6 +7,7 @@ - - #include - #include -+#include - #include "third_party/blink/renderer/platform/fonts/font_orientation.h" - #include "third_party/blink/renderer/platform/fonts/orientation_iterator.h" - #include "third_party/blink/renderer/platform/fonts/script_run_iterator.h" -diff -up chromium-126.0.6478.26/third_party/blink/renderer/platform/graphics/paint/geometry_mapper_transform_cache.cc.system-libstdc++ chromium-126.0.6478.26/third_party/blink/renderer/platform/graphics/paint/geometry_mapper_transform_cache.cc ---- chromium-126.0.6478.26/third_party/blink/renderer/platform/graphics/paint/geometry_mapper_transform_cache.cc.system-libstdc++ 2024-05-29 18:01:41.000000000 +0200 -+++ chromium-126.0.6478.26/third_party/blink/renderer/platform/graphics/paint/geometry_mapper_transform_cache.cc 2024-06-02 23:51:25.566917250 +0200 -@@ -70,7 +70,7 @@ void GeometryMapperTransformCache::Updat - to_2d_translation_root_ += translation; - - if (parent.plane_root_transform_) { -- plane_root_transform_.emplace(); -+ plane_root_transform_ = PlaneRootTransform{}; - plane_root_transform_->plane_root = parent.plane_root(); - plane_root_transform_->to_plane_root = parent.to_plane_root(); - plane_root_transform_->to_plane_root.Translate(translation.x(), -@@ -98,7 +98,7 @@ void GeometryMapperTransformCache::Updat - // as the 2d translation root. - plane_root_transform_ = std::nullopt; - } else { -- plane_root_transform_.emplace(); -+ plane_root_transform_ = PlaneRootTransform{}; - plane_root_transform_->plane_root = parent.plane_root(); - plane_root_transform_->to_plane_root.MakeIdentity(); - parent.ApplyToPlaneRoot(plane_root_transform_->to_plane_root); -@@ -140,7 +140,7 @@ void GeometryMapperTransformCache::Updat - parent_node->UpdateScreenTransform(); - const auto& parent = parent_node->GetTransformCache(); - -- screen_transform_.emplace(); -+ screen_transform_ = ScreenTransform{}; - parent.ApplyToScreen(screen_transform_->to_screen); - if (node.FlattensInheritedTransform()) - screen_transform_->to_screen.Flatten(); -diff -up chromium-126.0.6478.26/third_party/ruy/src/ruy/profiler/instrumentation.h.system-libstdc++ chromium-126.0.6478.26/third_party/ruy/src/ruy/profiler/instrumentation.h ---- chromium-126.0.6478.26/third_party/ruy/src/ruy/profiler/instrumentation.h.system-libstdc++ 2024-05-29 18:03:01.000000000 +0200 -+++ chromium-126.0.6478.26/third_party/ruy/src/ruy/profiler/instrumentation.h 2024-06-02 23:51:25.566917250 +0200 -@@ -19,6 +19,7 @@ limitations under the License. - #ifdef RUY_PROFILER - #include - #include -+#include - #include - #endif - -diff -up chromium-126.0.6478.26/third_party/webrtc/modules/congestion_controller/goog_cc/loss_based_bwe_v2.cc.system-libstdc++ chromium-126.0.6478.26/third_party/webrtc/modules/congestion_controller/goog_cc/loss_based_bwe_v2.cc ---- chromium-126.0.6478.26/third_party/webrtc/modules/congestion_controller/goog_cc/loss_based_bwe_v2.cc.system-libstdc++ 2024-05-29 18:03:48.000000000 +0200 -+++ chromium-126.0.6478.26/third_party/webrtc/modules/congestion_controller/goog_cc/loss_based_bwe_v2.cc 2024-06-02 23:51:25.567917273 +0200 -@@ -549,7 +549,7 @@ absl::optional L - if (!enabled.Get()) { - return config; - } -- config.emplace(); -+ config = Config{}; - config->bandwidth_rampup_upper_bound_factor = - bandwidth_rampup_upper_bound_factor.Get(); - config->bandwidth_rampup_upper_bound_factor_in_hold = -diff -up chromium-126.0.6478.26/ui/gfx/x/generated_protos/randr.cc.system-libstdc++ chromium-126.0.6478.26/ui/gfx/x/generated_protos/randr.cc ---- chromium-126.0.6478.26/ui/gfx/x/generated_protos/randr.cc.system-libstdc++ 2024-05-29 18:02:32.000000000 +0200 -+++ chromium-126.0.6478.26/ui/gfx/x/generated_protos/randr.cc 2024-06-02 23:51:25.568917297 +0200 -@@ -305,7 +305,7 @@ void ReadEvent(RandR - // data - auto data_expr = subCode; - if (CaseEq(data_expr, RandR::Notify::CrtcChange)) { -- data.cc.emplace(); -+ data.cc = RandR::NotifyEvent::Cc{}; - auto& timestamp = (*data.cc).timestamp; - auto& window = (*data.cc).window; - auto& crtc = (*data.cc).crtc; -@@ -349,7 +349,7 @@ void ReadEvent(RandR - Read(&height, &buf); - } - if (CaseEq(data_expr, RandR::Notify::OutputChange)) { -- data.oc.emplace(); -+ data.oc = RandR::NotifyEvent::Oc{}; - auto& timestamp = (*data.oc).timestamp; - auto& config_timestamp = (*data.oc).config_timestamp; - auto& window = (*data.oc).window; -@@ -394,7 +394,7 @@ void ReadEvent(RandR - subpixel_order = static_cast(tmp6); - } - if (CaseEq(data_expr, RandR::Notify::OutputProperty)) { -- data.op.emplace(); -+ data.op = RandR::NotifyEvent::Op{}; - auto& window = (*data.op).window; - auto& output = (*data.op).output; - auto& atom = (*data.op).atom; -@@ -422,7 +422,7 @@ void ReadEvent(RandR - Pad(&buf, 11); - } - if (CaseEq(data_expr, RandR::Notify::ProviderChange)) { -- data.pc.emplace(); -+ data.pc = RandR::NotifyEvent::Pc{}; - auto& timestamp = (*data.pc).timestamp; - auto& window = (*data.pc).window; - auto& provider = (*data.pc).provider; -@@ -440,7 +440,7 @@ void ReadEvent(RandR - Pad(&buf, 16); - } - if (CaseEq(data_expr, RandR::Notify::ProviderProperty)) { -- data.pp.emplace(); -+ data.pp = RandR::NotifyEvent::Pp{}; - auto& window = (*data.pp).window; - auto& provider = (*data.pp).provider; - auto& atom = (*data.pp).atom; -@@ -466,7 +466,7 @@ void ReadEvent(RandR - Pad(&buf, 11); - } - if (CaseEq(data_expr, RandR::Notify::ResourceChange)) { -- data.rc.emplace(); -+ data.rc = RandR::NotifyEvent::Rc{}; - auto& timestamp = (*data.rc).timestamp; - auto& window = (*data.rc).window; - -@@ -480,7 +480,7 @@ void ReadEvent(RandR - Pad(&buf, 20); - } - if (CaseEq(data_expr, RandR::Notify::Lease)) { -- data.lc.emplace(); -+ data.lc = RandR::NotifyEvent::Lc{}; - auto& timestamp = (*data.lc).timestamp; - auto& window = (*data.lc).window; - auto& lease = (*data.lc).lease; -diff -up chromium-126.0.6478.26/ui/gfx/x/generated_protos/xinput.cc.system-libstdc++ chromium-126.0.6478.26/ui/gfx/x/generated_protos/xinput.cc ---- chromium-126.0.6478.26/ui/gfx/x/generated_protos/xinput.cc.system-libstdc++ 2024-05-29 18:02:32.000000000 +0200 -+++ chromium-126.0.6478.26/ui/gfx/x/generated_protos/xinput.cc 2024-06-02 23:51:25.569917321 +0200 -@@ -560,7 +560,7 @@ void ReadEvent detail - // map - auto map_expr = present; - if (CaseAnd(map_expr, Xkb::MapPart::KeyTypes)) { -- map.types_rtrn.emplace(); -+ map.types_rtrn = std::vector{}; - auto& types_rtrn = *map.types_rtrn; - - // types_rtrn -@@ -5207,7 +5207,7 @@ std::unique_ptr - if (CaseAnd(replies_expr, Xkb::GBNDetail::Types) || - CaseAnd(replies_expr, Xkb::GBNDetail::ClientSymbols) || - CaseAnd(replies_expr, Xkb::GBNDetail::ServerSymbols)) { -- replies.types.emplace(); -+ replies.types = Xkb::GetKbdByNameReply::Types{}; - auto& getmap_type = (*replies.types).getmap_type; - auto& typeDeviceID = (*replies.types).typeDeviceID; - auto& getmap_sequence = (*replies.types).getmap_sequence; -@@ -5626,7 +5626,7 @@ std::unique_ptr - } - } - if (CaseAnd(replies_expr, Xkb::GBNDetail::CompatMap)) { -- replies.compat_map.emplace(); -+ replies.compat_map = Xkb::GetKbdByNameReply::CompatMap{}; - auto& compatmap_type = (*replies.compat_map).compatmap_type; - auto& compatDeviceID = (*replies.compat_map).compatDeviceID; - auto& compatmap_sequence = (*replies.compat_map).compatmap_sequence; -@@ -5747,7 +5747,7 @@ std::unique_ptr - } - } - if (CaseAnd(replies_expr, Xkb::GBNDetail::IndicatorMaps)) { -- replies.indicator_maps.emplace(); -+ replies.indicator_maps = Xkb::GetKbdByNameReply::IndicatorMaps{}; - auto& indicatormap_type = (*replies.indicator_maps).indicatormap_type; - auto& indicatorDeviceID = (*replies.indicator_maps).indicatorDeviceID; - auto& indicatormap_sequence = -@@ -5840,7 +5840,7 @@ std::unique_ptr - } - if (CaseAnd(replies_expr, Xkb::GBNDetail::KeyNames) || - CaseAnd(replies_expr, Xkb::GBNDetail::OtherNames)) { -- replies.key_names.emplace(); -+ replies.key_names = Xkb::GetKbdByNameReply::KeyNames{}; - auto& keyname_type = (*replies.key_names).keyname_type; - auto& keyDeviceID = (*replies.key_names).keyDeviceID; - auto& keyname_sequence = (*replies.key_names).keyname_sequence; -@@ -6087,7 +6087,7 @@ std::unique_ptr - } - } - if (CaseAnd(replies_expr, Xkb::GBNDetail::Geometry)) { -- replies.geometry.emplace(); -+ replies.geometry = Xkb::GetKbdByNameReply::Geometry{}; - auto& geometry_type = (*replies.geometry).geometry_type; - auto& geometryDeviceID = (*replies.geometry).geometryDeviceID; - auto& geometry_sequence = (*replies.geometry).geometry_sequence; diff --git a/SOURCES/chromium-128.0.6613.137-python-3.13-warning.patch b/SOURCES/chromium-128.0.6613.137-python-3.13-warning.patch new file mode 100644 index 00000000..3923e298 --- /dev/null +++ b/SOURCES/chromium-128.0.6613.137-python-3.13-warning.patch @@ -0,0 +1,13 @@ +diff -up chromium-128.0.6613.137/third_party/inspector_protocol/code_generator.py.me chromium-128.0.6613.137/third_party/inspector_protocol/code_generator.py +--- chromium-128.0.6613.137/third_party/inspector_protocol/code_generator.py.me 2024-09-16 12:47:47.541825252 +0200 ++++ chromium-128.0.6613.137/third_party/inspector_protocol/code_generator.py 2024-09-16 12:48:39.210990291 +0200 +@@ -147,8 +147,7 @@ def dash_to_camelcase(word): + + def to_snake_case(name): + name = re.sub(r"([A-Z]{2,})([A-Z][a-z])", r"\1_\2", name) +- return re.sub(r"([a-z0-9])([A-Z])", r"\1_\2", name, sys.maxsize).lower() +- ++ return re.sub(r"([a-z0-9])([A-Z])", r"\1_\2", name, count=sys.maxsize).lower() + + def to_method_case(config, name): + if config.use_title_case_methods: diff --git a/SOURCES/chromium-129-disable-H.264-video-parser-during-demuxing.patch b/SOURCES/chromium-129-disable-H.264-video-parser-during-demuxing.patch new file mode 100644 index 00000000..78f49fa4 --- /dev/null +++ b/SOURCES/chromium-129-disable-H.264-video-parser-during-demuxing.patch @@ -0,0 +1,32 @@ +diff -up chromium-129.0.6668.42.old/media/filters/ffmpeg_glue.cc.me chromium-129.0.6668.42.old/media/filters/ffmpeg_glue.cc +--- chromium-129.0.6668.42.old/media/filters/ffmpeg_glue.cc.me 2024-09-15 22:12:33.945186323 +0200 ++++ chromium-129.0.6668.42.old/media/filters/ffmpeg_glue.cc 2024-09-16 10:53:13.334970539 +0200 +@@ -17,14 +17,11 @@ + + namespace media { + +-// Kill switches in case things explode. Remove after M132. ++// Kill switch in case things explode. Remove after M132. + // TODO(crbug.com/355485812): Re-enable this flag. + BASE_FEATURE(kAllowOnlyAudioCodecsDuringDemuxing, + "AllowOnlyAudioCodecsDuringDemuxing", + base::FEATURE_ENABLED_BY_DEFAULT); +-BASE_FEATURE(kForbidH264ParsingDuringDemuxing, +- "ForbidH264ParsingDuringDemuxing", +- base::FEATURE_ENABLED_BY_DEFAULT); + + // Internal buffer size used by AVIO for reading. + // TODO(dalecurtis): Experiment with this buffer size and measure impact on +@@ -118,12 +115,6 @@ FFmpegGlue::FFmpegGlue(FFmpegURLProtocol + // Enable fast, but inaccurate seeks for MP3. + format_context_->flags |= AVFMT_FLAG_FAST_SEEK; + +- // We don't allow H.264 parsing during demuxing since we have our own parser +- // and the ffmpeg one increases memory usage unnecessarily. +- if (base::FeatureList::IsEnabled(kForbidH264ParsingDuringDemuxing)) { +- format_context_->flags |= AVFMT_FLAG_NOH264PARSE; +- } +- + // Ensures format parsing errors will bail out. From an audit on 11/2017, all + // instances were real failures. Solves bugs like http://crbug.com/710791. + format_context_->error_recognition |= AV_EF_EXPLODE; diff --git a/SOURCES/chromium-129-el8-atk-compiler-error.patch b/SOURCES/chromium-129-el8-atk-compiler-error.patch new file mode 100644 index 00000000..58e4cfbb --- /dev/null +++ b/SOURCES/chromium-129-el8-atk-compiler-error.patch @@ -0,0 +1,1083 @@ +diff -up chromium-129.0.6668.58/content/browser/accessibility/accessibility_auralinux_browsertest.cc.me chromium-129.0.6668.58/content/browser/accessibility/accessibility_auralinux_browsertest.cc +--- chromium-129.0.6668.58/content/browser/accessibility/accessibility_auralinux_browsertest.cc.me 2024-09-18 19:26:40.951100740 +0200 ++++ chromium-129.0.6668.58/content/browser/accessibility/accessibility_auralinux_browsertest.cc 2024-09-18 19:28:06.219700474 +0200 +@@ -3,6 +3,7 @@ + // found in the LICENSE file. + + #include ++#include + + #include + #include +@@ -547,6 +548,10 @@ IN_PROC_BROWSER_TEST_F(AccessibilityAura + g_object_unref(div_element); + } + ++#if defined(ATK_CHECK_VERSION) && ATK_CHECK_VERSION(2, 30, 0) ++#define ATK_230 ++#endif ++ + IN_PROC_BROWSER_TEST_F(AccessibilityAuraLinuxBrowserTest, + TestCharacterExtentsWithInvalidArguments) { + AtkText* atk_text = SetUpSampleParagraph(); +@@ -569,12 +574,14 @@ IN_PROC_BROWSER_TEST_F(AccessibilityAura + EXPECT_EQ(expect, width); + EXPECT_EQ(expect, height); + ++#ifdef ATK_230 + atk_text_get_character_extents(atk_text, invalid_offset, &x, &y, &width, + &height, ATK_XY_PARENT); + EXPECT_EQ(expect, x); + EXPECT_EQ(expect, y); + EXPECT_EQ(expect, width); + EXPECT_EQ(expect, height); ++#endif // ATK_230 + + atk_text_get_character_extents(atk_text, invalid_offset, &x, &y, &width, + &height, ATK_XY_WINDOW); +@@ -593,12 +600,14 @@ IN_PROC_BROWSER_TEST_F(AccessibilityAura + EXPECT_EQ(expect, width); + EXPECT_EQ(expect, height); + ++#ifdef ATK_230 + atk_text_get_character_extents(atk_text, invalid_offset, &x, &y, &width, + &height, ATK_XY_PARENT); + EXPECT_EQ(expect, x); + EXPECT_EQ(expect, y); + EXPECT_EQ(expect, width); + EXPECT_EQ(expect, height); ++#endif // ATK_230 + + atk_text_get_character_extents(atk_text, invalid_offset, &x, &y, &width, + &height, ATK_XY_WINDOW); +@@ -613,7 +622,9 @@ IN_PROC_BROWSER_TEST_F(AccessibilityAura + AtkCoordType kCoordinateTypes[] = { + ATK_XY_SCREEN, + ATK_XY_WINDOW, ++#ifdef ATK_230 + ATK_XY_PARENT, ++#endif // ATK_230 + }; + + IN_PROC_BROWSER_TEST_F(AccessibilityAuraLinuxBrowserTest, +@@ -872,6 +883,7 @@ IN_PROC_BROWSER_TEST_F(AccessibilityAura + TestCharacterExtentsInScrollableInput(); + } + ++#if defined(ATK_230) + typedef bool (*ScrollToPointFunc)(AtkComponent* component, + AtkCoordType coords, + gint x, +@@ -881,6 +893,18 @@ typedef bool (*ScrollToFunc)(AtkComponen + // TODO(crbug.com/40866728): Enable this test. + IN_PROC_BROWSER_TEST_F(AccessibilityAuraLinuxBrowserTest, + DISABLED_TestScrollToPoint) { ++ // There's a chance we may be compiled with a newer version of ATK and then ++ // run with an older one, so we need to do a runtime check for this method ++ // that is available in ATK 2.30 instead of linking directly. ++ ScrollToPointFunc scroll_to_point = reinterpret_cast( ++ dlsym(RTLD_DEFAULT, "atk_component_scroll_to_point")); ++ if (!scroll_to_point) { ++ LOG(WARNING) ++ << "Skipping AccessibilityAuraLinuxBrowserTest::TestScrollToPoint" ++ " because ATK version < 2.30 detected."; ++ return; ++ } ++ + LoadSampleParagraphInScrollableDocument(); + AtkText* atk_text = GetSampleParagraph(); + ASSERT_TRUE(ATK_IS_COMPONENT(atk_text)); +@@ -893,7 +917,7 @@ IN_PROC_BROWSER_TEST_F(AccessibilityAura + AccessibilityNotificationWaiter location_changed_waiter( + shell()->web_contents(), ui::kAXModeComplete, + ax::mojom::Event::kLocationChanged); +- atk_component_scroll_to_point(atk_component, ATK_XY_PARENT, 0, 0); ++ scroll_to_point(atk_component, ATK_XY_PARENT, 0, 0); + ASSERT_TRUE(location_changed_waiter.WaitForNotification()); + + atk_component_get_extents(atk_component, &x, &y, nullptr, nullptr, +@@ -902,20 +926,20 @@ IN_PROC_BROWSER_TEST_F(AccessibilityAura + EXPECT_GT(prev_y, y); + + constexpr int kScrollToY = 0; +- atk_component_scroll_to_point(atk_component, ATK_XY_SCREEN, 0, kScrollToY); ++ scroll_to_point(atk_component, ATK_XY_SCREEN, 0, kScrollToY); + ASSERT_TRUE(location_changed_waiter.WaitForNotification()); + atk_component_get_extents(atk_component, &x, &y, nullptr, nullptr, + ATK_XY_SCREEN); + EXPECT_EQ(kScrollToY, y); + + constexpr int kScrollToY_2 = 243; +- atk_component_scroll_to_point(atk_component, ATK_XY_SCREEN, 0, kScrollToY_2); ++ scroll_to_point(atk_component, ATK_XY_SCREEN, 0, kScrollToY_2); + ASSERT_TRUE(location_changed_waiter.WaitForNotification()); + atk_component_get_extents(atk_component, nullptr, &y, nullptr, nullptr, + ATK_XY_SCREEN); + EXPECT_EQ(kScrollToY_2, y); + +- atk_component_scroll_to_point(atk_component, ATK_XY_SCREEN, 0, 129); ++ scroll_to_point(atk_component, ATK_XY_SCREEN, 0, 129); + ASSERT_TRUE(location_changed_waiter.WaitForNotification()); + atk_component_get_extents(atk_component, nullptr, &y, nullptr, nullptr, + ATK_XY_SCREEN); +@@ -932,6 +956,17 @@ IN_PROC_BROWSER_TEST_F(AccessibilityAura + // TODO(crbug.com/40866728): Enable this test. + IN_PROC_BROWSER_TEST_F(AccessibilityAuraLinuxBrowserTest, + DISABLED_TestScrollTo) { ++ // There's a chance we may be compiled with a newer version of ATK and then ++ // run with an older one, so we need to do a runtime check for this method ++ // that is available in ATK 2.30 instead of linking directly. ++ ScrollToFunc scroll_to = reinterpret_cast( ++ dlsym(RTLD_DEFAULT, "atk_component_scroll_to")); ++ if (!scroll_to) { ++ LOG(WARNING) << "Skipping AccessibilityAuraLinuxBrowserTest::TestScrollTo" ++ " because ATK version < 2.30 detected."; ++ return; ++ } ++ + LoadInitialAccessibilityTreeFromHtml( + R"HTML( + +@@ -973,8 +1008,7 @@ IN_PROC_BROWSER_TEST_F(AccessibilityAura + AccessibilityNotificationWaiter waiter( + shell()->web_contents(), ui::kAXModeComplete, + ax::mojom::Event::kScrollPositionChanged); +- ASSERT_TRUE( +- atk_component_scroll_to(ATK_COMPONENT(target), ATK_SCROLL_TOP_EDGE)); ++ ASSERT_TRUE(scroll_to(ATK_COMPONENT(target), ATK_SCROLL_TOP_EDGE)); + ASSERT_TRUE(waiter.WaitForNotification()); + int x, y; + atk_component_get_extents(ATK_COMPONENT(target), &x, &y, nullptr, nullptr, +@@ -982,40 +1016,35 @@ IN_PROC_BROWSER_TEST_F(AccessibilityAura + EXPECT_EQ(y, doc_y); + EXPECT_NE(x, doc_x); + +- ASSERT_TRUE( +- atk_component_scroll_to(ATK_COMPONENT(target), ATK_SCROLL_TOP_LEFT)); ++ ASSERT_TRUE(scroll_to(ATK_COMPONENT(target), ATK_SCROLL_TOP_LEFT)); + ASSERT_TRUE(waiter.WaitForNotification()); + atk_component_get_extents(ATK_COMPONENT(target), &x, &y, nullptr, nullptr, + ATK_XY_SCREEN); + EXPECT_EQ(y, doc_y); + EXPECT_EQ(x, doc_x); + +- ASSERT_TRUE( +- atk_component_scroll_to(ATK_COMPONENT(target), ATK_SCROLL_BOTTOM_EDGE)); ++ ASSERT_TRUE(scroll_to(ATK_COMPONENT(target), ATK_SCROLL_BOTTOM_EDGE)); + ASSERT_TRUE(waiter.WaitForNotification()); + atk_component_get_extents(ATK_COMPONENT(target), &x, &y, nullptr, nullptr, + ATK_XY_SCREEN); + EXPECT_NE(y, doc_y); + EXPECT_EQ(x, doc_x); + +- ASSERT_TRUE( +- atk_component_scroll_to(ATK_COMPONENT(target), ATK_SCROLL_RIGHT_EDGE)); ++ ASSERT_TRUE(scroll_to(ATK_COMPONENT(target), ATK_SCROLL_RIGHT_EDGE)); + ASSERT_TRUE(waiter.WaitForNotification()); + atk_component_get_extents(ATK_COMPONENT(target), &x, &y, nullptr, nullptr, + ATK_XY_SCREEN); + EXPECT_NE(y, doc_y); + EXPECT_NE(x, doc_x); + +- ASSERT_TRUE( +- atk_component_scroll_to(ATK_COMPONENT(target2), ATK_SCROLL_LEFT_EDGE)); ++ ASSERT_TRUE(scroll_to(ATK_COMPONENT(target2), ATK_SCROLL_LEFT_EDGE)); + ASSERT_TRUE(waiter.WaitForNotification()); + atk_component_get_extents(ATK_COMPONENT(target2), &x, &y, nullptr, nullptr, + ATK_XY_SCREEN); + EXPECT_NE(y, doc_y); + EXPECT_EQ(x, doc_x); + +- ASSERT_TRUE( +- atk_component_scroll_to(ATK_COMPONENT(target2), ATK_SCROLL_TOP_LEFT)); ++ ASSERT_TRUE(scroll_to(ATK_COMPONENT(target2), ATK_SCROLL_TOP_LEFT)); + ASSERT_TRUE(waiter.WaitForNotification()); + atk_component_get_extents(ATK_COMPONENT(target2), &x, &y, nullptr, nullptr, + ATK_XY_SCREEN); +@@ -1047,10 +1076,39 @@ IN_PROC_BROWSER_TEST_F(AccessibilityAura + g_object_unref(target2); + g_object_unref(target3); + } ++#endif // defined(ATK_230) ++ ++#if defined(ATK_CHECK_VERSION) && ATK_CHECK_VERSION(2, 32, 0) ++typedef gboolean (*ScrollSubstringToFunc)(AtkText* text, ++ gint start_offset, ++ gint end_offset, ++ AtkScrollType type); ++ScrollSubstringToFunc g_scroll_substring_to = nullptr; ++ ++NO_SANITIZE("cfi-icall") ++gboolean ScrollSubstringTo(AtkText* text, ++ gint start_offset, ++ gint end_offset, ++ AtkScrollType type) { ++ EXPECT_NE(g_scroll_substring_to, nullptr); ++ return g_scroll_substring_to(text, start_offset, end_offset, type); ++} + + // TODO(crbug.com/40866728): Enable this test. + IN_PROC_BROWSER_TEST_F(AccessibilityAuraLinuxBrowserTest, + DISABLED_TestScrollSubstringTo) { ++ // There's a chance we may be compiled with a newer version of ATK and then ++ // run with an older one, so we need to do a runtime check for this method ++ // that is available in ATK 2.32 instead of linking directly. ++ g_scroll_substring_to = reinterpret_cast( ++ dlsym(RTLD_DEFAULT, "atk_text_scroll_substring_to")); ++ if (!g_scroll_substring_to) { ++ LOG(WARNING) << "Skipping " ++ "AccessibilityAuraLinuxBrowserTest::TestSubstringScrollTo" ++ " because ATK version < 2.32 detected."; ++ return; ++ } ++ + LoadInitialAccessibilityTreeFromHtml( + R"HTML( + +@@ -1084,8 +1142,7 @@ IN_PROC_BROWSER_TEST_F(AccessibilityAura + AccessibilityNotificationWaiter waiter( + shell()->web_contents(), ui::kAXModeComplete, + ax::mojom::Event::kScrollPositionChanged); +- ASSERT_TRUE(atk_text_scroll_substring_to(ATK_TEXT(target1), 1, 2, +- ATK_SCROLL_TOP_EDGE)); ++ ASSERT_TRUE(ScrollSubstringTo(ATK_TEXT(target1), 1, 2, ATK_SCROLL_TOP_EDGE)); + ASSERT_TRUE(waiter.WaitForNotification()); + int x, y; + atk_text_get_character_extents(ATK_TEXT(target1), 1, &x, &y, nullptr, nullptr, +@@ -1093,40 +1150,37 @@ IN_PROC_BROWSER_TEST_F(AccessibilityAura + EXPECT_EQ(y, doc_y); + EXPECT_NE(x, doc_x); + +- ASSERT_TRUE(atk_text_scroll_substring_to(ATK_TEXT(target1), 1, 2, +- ATK_SCROLL_TOP_LEFT)); ++ ASSERT_TRUE(ScrollSubstringTo(ATK_TEXT(target1), 1, 2, ATK_SCROLL_TOP_LEFT)); + ASSERT_TRUE(waiter.WaitForNotification()); + atk_text_get_character_extents(ATK_TEXT(target1), 1, &x, &y, nullptr, nullptr, + ATK_XY_SCREEN); + EXPECT_EQ(y, doc_y); + EXPECT_EQ(x, doc_x); + +- ASSERT_TRUE(atk_text_scroll_substring_to(ATK_TEXT(target1), 1, 2, +- ATK_SCROLL_BOTTOM_EDGE)); ++ ASSERT_TRUE( ++ ScrollSubstringTo(ATK_TEXT(target1), 1, 2, ATK_SCROLL_BOTTOM_EDGE)); + ASSERT_TRUE(waiter.WaitForNotification()); + atk_text_get_character_extents(ATK_TEXT(target1), 1, &x, &y, nullptr, nullptr, + ATK_XY_SCREEN); + EXPECT_NE(y, doc_y); + EXPECT_EQ(x, doc_x); + +- ASSERT_TRUE(atk_text_scroll_substring_to(ATK_TEXT(target1), 1, 2, +- ATK_SCROLL_RIGHT_EDGE)); ++ ASSERT_TRUE( ++ ScrollSubstringTo(ATK_TEXT(target1), 1, 2, ATK_SCROLL_RIGHT_EDGE)); + ASSERT_TRUE(waiter.WaitForNotification()); + atk_text_get_character_extents(ATK_TEXT(target1), 1, &x, &y, nullptr, nullptr, + ATK_XY_SCREEN); + EXPECT_NE(y, doc_y); + EXPECT_NE(x, doc_x); + +- ASSERT_TRUE(atk_text_scroll_substring_to(ATK_TEXT(target1), 1, 2, +- ATK_SCROLL_LEFT_EDGE)); ++ ASSERT_TRUE(ScrollSubstringTo(ATK_TEXT(target1), 1, 2, ATK_SCROLL_LEFT_EDGE)); + ASSERT_TRUE(waiter.WaitForNotification()); + atk_text_get_character_extents(ATK_TEXT(target1), 1, &x, &y, nullptr, nullptr, + ATK_XY_SCREEN); + EXPECT_NE(y, doc_y); + EXPECT_EQ(x, doc_x); + +- ASSERT_TRUE(atk_text_scroll_substring_to(ATK_TEXT(target1), 1, 2, +- ATK_SCROLL_TOP_LEFT)); ++ ASSERT_TRUE(ScrollSubstringTo(ATK_TEXT(target1), 1, 2, ATK_SCROLL_TOP_LEFT)); + ASSERT_TRUE(waiter.WaitForNotification()); + atk_text_get_character_extents(ATK_TEXT(target1), 1, &x, &y, nullptr, nullptr, + ATK_XY_SCREEN); +@@ -1136,9 +1190,42 @@ IN_PROC_BROWSER_TEST_F(AccessibilityAura + g_object_unref(target1); + } + ++typedef gboolean (*ScrollSubstringToPointFunc)(AtkText* text, ++ gint start_offset, ++ gint end_offset, ++ AtkCoordType coord_type, ++ gint x, ++ gint y); ++ScrollSubstringToPointFunc g_scroll_substring_to_point = nullptr; ++ ++NO_SANITIZE("cfi-icall") ++gboolean ScrollSubstringToPoint(AtkText* text, ++ gint start_offset, ++ gint end_offset, ++ AtkCoordType coord_type, ++ gint x, ++ gint y) { ++ EXPECT_NE(g_scroll_substring_to_point, nullptr); ++ return g_scroll_substring_to_point(text, start_offset, end_offset, coord_type, ++ x, y); ++} ++ + // TODO(crbug.com/40866728): Enable this test. + IN_PROC_BROWSER_TEST_F(AccessibilityAuraLinuxBrowserTest, + DISABLED_TestScrollSubstringToPoint) { ++ // There's a chance we may be compiled with a newer version of ATK and then ++ // run with an older one, so we need to do a runtime check for this method ++ // that is available in ATK 2.30 instead of linking directly. ++ g_scroll_substring_to_point = reinterpret_cast( ++ dlsym(RTLD_DEFAULT, "atk_text_scroll_substring_to_point")); ++ if (!g_scroll_substring_to_point) { ++ LOG(WARNING) ++ << "Skipping " ++ "AccessibilityAuraLinuxBrowserTest::TestScrollSubstringToPoint" ++ " because ATK version < 2.30 detected."; ++ return; ++ } ++ + LoadSampleParagraphInScrollableDocument(); + AtkText* atk_text = GetSampleParagraph(); + ASSERT_TRUE(ATK_IS_COMPONENT(atk_text)); +@@ -1151,7 +1238,7 @@ IN_PROC_BROWSER_TEST_F(AccessibilityAura + AccessibilityNotificationWaiter location_changed_waiter( + shell()->web_contents(), ui::kAXModeComplete, + ax::mojom::Event::kLocationChanged); +- atk_text_scroll_substring_to_point(atk_text, 1, 2, ATK_XY_PARENT, 0, 0); ++ ScrollSubstringToPoint(atk_text, 1, 2, ATK_XY_PARENT, 0, 0); + ASSERT_TRUE(location_changed_waiter.WaitForNotification()); + + atk_text_get_character_extents(atk_text, 1, &x, &y, nullptr, nullptr, +@@ -1160,22 +1247,20 @@ IN_PROC_BROWSER_TEST_F(AccessibilityAura + EXPECT_GT(prev_y, y); + + constexpr int kScrollToY = 0; +- atk_text_scroll_substring_to_point(atk_text, 1, 2, ATK_XY_SCREEN, 0, +- kScrollToY); ++ ScrollSubstringToPoint(atk_text, 1, 2, ATK_XY_SCREEN, 0, kScrollToY); + ASSERT_TRUE(location_changed_waiter.WaitForNotification()); + atk_text_get_character_extents(atk_text, 1, &x, &y, nullptr, nullptr, + ATK_XY_SCREEN); + EXPECT_EQ(kScrollToY, y); + + constexpr int kScrollToY_2 = 243; +- atk_text_scroll_substring_to_point(atk_text, 1, 2, ATK_XY_SCREEN, 0, +- kScrollToY_2); ++ ScrollSubstringToPoint(atk_text, 1, 2, ATK_XY_SCREEN, 0, kScrollToY_2); + ASSERT_TRUE(location_changed_waiter.WaitForNotification()); + atk_text_get_character_extents(atk_text, 1, &x, &y, nullptr, nullptr, + ATK_XY_SCREEN); + EXPECT_EQ(kScrollToY_2, y); + +- atk_text_scroll_substring_to_point(atk_text, 1, 2, ATK_XY_SCREEN, 0, 129); ++ ScrollSubstringToPoint(atk_text, 1, 2, ATK_XY_SCREEN, 0, 129); + ASSERT_TRUE(location_changed_waiter.WaitForNotification()); + atk_text_get_character_extents(atk_text, 1, &x, &y, nullptr, nullptr, + ATK_XY_SCREEN); +@@ -1191,6 +1276,7 @@ IN_PROC_BROWSER_TEST_F(AccessibilityAura + + g_object_unref(atk_text); + } ++#endif // defined(ATK_CHECK_VERSION) && ATK_CHECK_VERSION(2, 32, 0) + + #if BUILDFLAG(IS_LINUX) || BUILDFLAG(IS_CHROMEOS) + // Flaky on crbug.com/1026149 +diff -up chromium-129.0.6668.58/ui/accessibility/platform/ax_platform_node_auralinux.cc.me chromium-129.0.6668.58/ui/accessibility/platform/ax_platform_node_auralinux.cc +--- chromium-129.0.6668.58/ui/accessibility/platform/ax_platform_node_auralinux.cc.me 2024-09-18 19:26:26.040821017 +0200 ++++ chromium-129.0.6668.58/ui/accessibility/platform/ax_platform_node_auralinux.cc 2024-09-18 19:28:06.220700493 +0200 +@@ -2,7 +2,6 @@ + // Use of this source code is governed by a BSD-style license that can be + // found in the LICENSE file. + +-#include "base/version.h" + #ifdef UNSAFE_BUFFERS_BUILD + // TODO(crbug.com/40285824): Remove this and convert code to safer constructs. + #pragma allow_unsafe_buffers +@@ -10,6 +9,7 @@ + + #include "ui/accessibility/platform/ax_platform_node_auralinux.h" + ++#include + #include + + #include +@@ -47,14 +47,33 @@ + #include "ui/accessibility/platform/child_iterator.h" + #include "ui/gfx/geometry/rect_conversions.h" + +-// Function availability can be tested by checking whether its address is not +-// nullptr. +-#define WEAK_ATK_FN(x) extern "C" __attribute__((weak)) decltype(x) x +- +-// TODO(https://crbug.com/40549424): This may be removed when support for +-// Ubuntu 18.04 is dropped. +-WEAK_ATK_FN(atk_component_scroll_to_point); +-WEAK_ATK_FN(atk_text_scroll_substring_to_point); ++#if defined(ATK_CHECK_VERSION) && ATK_CHECK_VERSION(2, 10, 0) ++#define ATK_210 ++#endif ++ ++#if defined(ATK_CHECK_VERSION) && ATK_CHECK_VERSION(2, 12, 0) ++#define ATK_212 ++#endif ++ ++#if defined(ATK_CHECK_VERSION) && ATK_CHECK_VERSION(2, 16, 0) ++#define ATK_216 ++#endif ++ ++#if defined(ATK_CHECK_VERSION) && ATK_CHECK_VERSION(2, 26, 0) ++#define ATK_226 ++#endif ++ ++#if defined(ATK_CHECK_VERSION) && ATK_CHECK_VERSION(2, 30, 0) ++#define ATK_230 ++#endif ++ ++#if defined(ATK_CHECK_VERSION) && ATK_CHECK_VERSION(2, 32, 0) ++#define ATK_232 ++#endif ++ ++#if defined(ATK_CHECK_VERSION) && ATK_CHECK_VERSION(2, 34, 0) ++#define ATK_234 ++#endif + + namespace ui { + +@@ -146,11 +165,29 @@ AtkObject* g_active_top_level_frame = nu + + AtkObject* g_active_views_dialog = nullptr; + ++#if defined(ATK_216) + constexpr AtkRole kStaticRole = ATK_ROLE_STATIC; + constexpr AtkRole kSubscriptRole = ATK_ROLE_SUBSCRIPT; + constexpr AtkRole kSuperscriptRole = ATK_ROLE_SUPERSCRIPT; ++#else ++constexpr AtkRole kStaticRole = ATK_ROLE_TEXT; ++constexpr AtkRole kSubscriptRole = ATK_ROLE_TEXT; ++constexpr AtkRole kSuperscriptRole = ATK_ROLE_TEXT; ++#endif + ++#if defined(ATK_226) + constexpr AtkRole kAtkFootnoteRole = ATK_ROLE_FOOTNOTE; ++#else ++constexpr AtkRole kAtkFootnoteRole = ATK_ROLE_LIST_ITEM; ++#endif ++ ++#if defined(ATK_234) ++constexpr AtkRole kAtkRoleContentDeletion = ATK_ROLE_CONTENT_DELETION; ++constexpr AtkRole kAtkRoleContentInsertion = ATK_ROLE_CONTENT_INSERTION; ++#else ++constexpr AtkRole kAtkRoleContentDeletion = ATK_ROLE_SECTION; ++constexpr AtkRole kAtkRoleContentInsertion = ATK_ROLE_SECTION; ++#endif + + using GetTypeFunc = GType (*)(); + using GetColumnHeaderCellsFunc = GPtrArray* (*)(AtkTableCell* cell); +@@ -161,6 +198,11 @@ using GetRowColumnSpanFunc = bool (*)(At + gint* row_span, + gint* col_span); + ++static GetTypeFunc g_atk_table_cell_get_type; ++static GetColumnHeaderCellsFunc g_atk_table_cell_get_column_header_cells; ++static GetRowHeaderCellsFunc g_atk_table_cell_get_row_header_cells; ++static GetRowColumnSpanFunc g_atk_table_cell_get_row_column_span; ++ + // The ATK API often requires pointers to be used as out arguments, while + // allowing for those pointers to be null if the caller is not interested in + // the value. This function is a simpler helper to avoid continually checking +@@ -170,35 +212,17 @@ void SetIntPointerValueIfNotNull(int* po + *pointer = value; + } + +-// TODO(https://crbug.com/40549424): This may be removed when support for +-// Ubuntu 18.04 is dropped. ++#if defined(ATK_230) + bool SupportsAtkComponentScrollingInterface() { +- return atk_component_scroll_to_point; ++ return dlsym(RTLD_DEFAULT, "atk_component_scroll_to_point"); + } ++#endif + +-// TODO(https://crbug.com/40549424): This may be removed when support for +-// Ubuntu 18.04 is dropped. ++#if defined(ATK_232) + bool SupportsAtkTextScrollingInterface() { +- return atk_text_scroll_substring_to_point; +-} +- +-// TODO(https://crbug.com/40549424): This may be removed when support for +-// Ubuntu 18.04 is dropped. +-AtkRole GetAtkRoleContentDeletion() { +- base::Version atk_version(atk_get_version()); +- return atk_version.CompareTo(base::Version("2.34.0")) >= 0 +- ? ATK_ROLE_CONTENT_DELETION +- : ATK_ROLE_SECTION; +-} +- +-// TODO(https://crbug.com/40549424): This may be removed when support for +-// Ubuntu 18.04 is dropped. +-AtkRole GetAtkRoleContentInsertion() { +- base::Version atk_version(atk_get_version()); +- return atk_version.CompareTo(base::Version("2.34.0")) >= 0 +- ? ATK_ROLE_CONTENT_INSERTION +- : ATK_ROLE_SECTION; ++ return dlsym(RTLD_DEFAULT, "atk_text_scroll_substring_to_point"); + } ++#endif + + AtkObject* FindAtkObjectParentFrame(AtkObject* atk_object) { + AXPlatformNodeAuraLinux* node = +@@ -297,10 +321,12 @@ AXCoordinateSystem AtkCoordTypeToAXCoord + return AXCoordinateSystem::kScreenDIPs; + case ATK_XY_WINDOW: + return AXCoordinateSystem::kRootFrame; ++#if defined(ATK_230) + case ATK_XY_PARENT: + // AXCoordinateSystem does not support parent coordinates. + NOTIMPLEMENTED(); + return AXCoordinateSystem::kFrame; ++#endif + default: + return AXCoordinateSystem::kScreenDIPs; + } +@@ -513,6 +539,7 @@ gboolean GrabFocus(AtkComponent* atk_com + return obj->GrabFocus(); + } + ++#if defined(ATK_230) + gboolean ScrollTo(AtkComponent* atk_component, AtkScrollType scroll_type) { + g_return_val_if_fail(ATK_IS_COMPONENT(atk_component), FALSE); + +@@ -539,6 +566,7 @@ gboolean ScrollToPoint(AtkComponent* atk + obj->ScrollToPoint(atk_coord_type, x, y); + return TRUE; + } ++#endif + + void Init(AtkComponentIface* iface) { + iface->get_extents = GetExtents; +@@ -546,10 +574,12 @@ void Init(AtkComponentIface* iface) { + iface->get_size = GetSize; + iface->ref_accessible_at_point = RefAccesibleAtPoint; + iface->grab_focus = GrabFocus; ++#if defined(ATK_230) + if (SupportsAtkComponentScrollingInterface()) { + iface->scroll_to = ScrollTo; + iface->scroll_to_point = ScrollToPoint; + } ++#endif + } + + const GInterfaceInfo Info = {reinterpret_cast(Init), +@@ -1232,6 +1262,7 @@ gboolean AddSelection(AtkText* atk_text, + return SetSelection(atk_text, 0, start_offset, end_offset); + } + ++#if defined(ATK_210) + char* GetStringAtOffset(AtkText* atk_text, + int offset, + AtkTextGranularity atk_granularity, +@@ -1246,7 +1277,9 @@ char* GetStringAtOffset(AtkText* atk_tex + return GetTextWithBoundaryType(atk_text, offset, boundary, start_offset, + end_offset); + } ++#endif + ++#if defined(ATK_230) + gfx::Rect GetUnclippedParentHypertextRangeBoundsRect( + AXPlatformNodeDelegate* ax_platform_node_delegate, + const int start_offset, +@@ -1270,6 +1303,7 @@ gfx::Rect GetUnclippedParentHypertextRan + AXClippingBehavior::kClipped) + .OffsetFromOrigin(); + } ++#endif + + void GetCharacterExtents(AtkText* atk_text, + int offset, +@@ -1285,10 +1319,12 @@ void GetCharacterExtents(AtkText* atk_te + AXPlatformNodeAuraLinux::FromAtkObject(ATK_OBJECT(atk_text)); + if (obj) { + switch (coordinate_type) { ++#if defined(ATK_230) + case ATK_XY_PARENT: + rect = GetUnclippedParentHypertextRangeBoundsRect(obj->GetDelegate(), + offset, offset + 1); + break; ++#endif + default: + rect = obj->GetDelegate()->GetHypertextRangeBoundsRect( + obj->UnicodeToUTF16OffsetInText(offset), +@@ -1324,10 +1360,12 @@ void GetRangeExtents(AtkText* atk_text, + AXPlatformNodeAuraLinux::FromAtkObject(ATK_OBJECT(atk_text)); + if (obj) { + switch (coordinate_type) { ++#if defined(ATK_230) + case ATK_XY_PARENT: + rect = GetUnclippedParentHypertextRangeBoundsRect( + obj->GetDelegate(), start_offset, end_offset); + break; ++#endif + default: + rect = obj->GetDelegate()->GetHypertextRangeBoundsRect( + obj->UnicodeToUTF16OffsetInText(start_offset), +@@ -1377,6 +1415,7 @@ AtkAttributeSet* GetDefaultAttributes(At + return ToAtkAttributeSet(obj->GetDefaultTextAttributes()); + } + ++#if defined(ATK_232) + gboolean ScrollSubstringTo(AtkText* atk_text, + gint start_offset, + gint end_offset, +@@ -1407,6 +1446,7 @@ gboolean ScrollSubstringToPoint(AtkText* + return obj->ScrollSubstringToPoint(start_offset, end_offset, atk_coord_type, + x, y); + } ++#endif // ATK_232 + + void Init(AtkTextIface* iface) { + iface->get_text = GetText; +@@ -1429,12 +1469,16 @@ void Init(AtkTextIface* iface) { + iface->get_run_attributes = GetRunAttributes; + iface->get_default_attributes = GetDefaultAttributes; + ++#if defined(ATK_210) + iface->get_string_at_offset = GetStringAtOffset; ++#endif + ++#if defined(ATK_232) + if (SupportsAtkTextScrollingInterface()) { + iface->scroll_substring_to = ScrollSubstringTo; + iface->scroll_substring_to_point = ScrollSubstringToPoint; + } ++#endif + } + + const GInterfaceInfo Info = {reinterpret_cast(Init), +@@ -1837,11 +1881,15 @@ const GInterfaceInfo Info = {reinterpret + + } // namespace atk_table + ++// The ATK table cell interface was added in ATK 2.12. ++#if defined(ATK_212) ++ + namespace atk_table_cell { + + gint GetColumnSpan(AtkTableCell* cell) { ++ DCHECK(g_atk_table_cell_get_type); + g_return_val_if_fail( +- G_TYPE_CHECK_INSTANCE_TYPE((cell), atk_table_cell_get_type()), 0); ++ G_TYPE_CHECK_INSTANCE_TYPE((cell), AtkTableCellInterface::GetType()), 0); + + if (const AXPlatformNodeBase* obj = + AXPlatformNodeAuraLinux::FromAtkObject(ATK_OBJECT(cell))) { +@@ -1853,8 +1901,10 @@ gint GetColumnSpan(AtkTableCell* cell) { + } + + GPtrArray* GetColumnHeaderCells(AtkTableCell* cell) { ++ DCHECK(g_atk_table_cell_get_type); + g_return_val_if_fail( +- G_TYPE_CHECK_INSTANCE_TYPE((cell), atk_table_cell_get_type()), nullptr); ++ G_TYPE_CHECK_INSTANCE_TYPE((cell), AtkTableCellInterface::GetType()), ++ nullptr); + + GPtrArray* array = g_ptr_array_new_with_free_func(g_object_unref); + +@@ -1888,8 +1938,10 @@ GPtrArray* GetColumnHeaderCells(AtkTable + } + + gboolean GetCellPosition(AtkTableCell* cell, gint* row, gint* column) { ++ DCHECK(g_atk_table_cell_get_type); + g_return_val_if_fail( +- G_TYPE_CHECK_INSTANCE_TYPE((cell), atk_table_cell_get_type()), FALSE); ++ G_TYPE_CHECK_INSTANCE_TYPE((cell), AtkTableCellInterface::GetType()), ++ FALSE); + + if (auto* obj = AXPlatformNodeAuraLinux::FromAtkObject(ATK_OBJECT(cell))) { + std::optional row_index = obj->GetTableRow(); +@@ -1906,8 +1958,9 @@ gboolean GetCellPosition(AtkTableCell* c + } + + gint GetRowSpan(AtkTableCell* cell) { ++ DCHECK(g_atk_table_cell_get_type); + g_return_val_if_fail( +- G_TYPE_CHECK_INSTANCE_TYPE((cell), atk_table_cell_get_type()), 0); ++ G_TYPE_CHECK_INSTANCE_TYPE((cell), AtkTableCellInterface::GetType()), 0); + + if (auto* obj = AXPlatformNodeAuraLinux::FromAtkObject(ATK_OBJECT(cell))) { + // If the object is not a cell, we return 0. +@@ -1918,8 +1971,10 @@ gint GetRowSpan(AtkTableCell* cell) { + } + + GPtrArray* GetRowHeaderCells(AtkTableCell* cell) { ++ DCHECK(g_atk_table_cell_get_type); + g_return_val_if_fail( +- G_TYPE_CHECK_INSTANCE_TYPE((cell), atk_table_cell_get_type()), nullptr); ++ G_TYPE_CHECK_INSTANCE_TYPE((cell), AtkTableCellInterface::GetType()), ++ nullptr); + + GPtrArray* array = g_ptr_array_new_with_free_func(g_object_unref); + +@@ -1953,8 +2008,10 @@ GPtrArray* GetRowHeaderCells(AtkTableCel + } + + AtkObject* GetTable(AtkTableCell* cell) { ++ DCHECK(g_atk_table_cell_get_type); + g_return_val_if_fail( +- G_TYPE_CHECK_INSTANCE_TYPE((cell), atk_table_cell_get_type()), nullptr); ++ G_TYPE_CHECK_INSTANCE_TYPE((cell), AtkTableCellInterface::GetType()), ++ nullptr); + + if (auto* obj = AXPlatformNodeAuraLinux::FromAtkObject(ATK_OBJECT(cell))) { + if (auto* table = obj->GetTable()) +@@ -1980,6 +2037,8 @@ const GInterfaceInfo Info = {reinterpret + + } // namespace atk_table_cell + ++#endif // ATK_212 ++ + namespace atk_object { + + gpointer kAXPlatformNodeAuraLinuxParentClass = nullptr; +@@ -2246,6 +2305,50 @@ void Detach(AXPlatformNodeAuraLinuxObjec + + } // namespace + ++// static ++NO_SANITIZE("cfi-icall") ++GType AtkTableCellInterface::GetType() { ++ return g_atk_table_cell_get_type(); ++} ++ ++// static ++NO_SANITIZE("cfi-icall") ++GPtrArray* AtkTableCellInterface::GetColumnHeaderCells(AtkTableCell* cell) { ++ return g_atk_table_cell_get_column_header_cells(cell); ++} ++ ++// static ++NO_SANITIZE("cfi-icall") ++GPtrArray* AtkTableCellInterface::GetRowHeaderCells(AtkTableCell* cell) { ++ return g_atk_table_cell_get_row_header_cells(cell); ++} ++ ++// static ++NO_SANITIZE("cfi-icall") ++bool AtkTableCellInterface::GetRowColumnSpan(AtkTableCell* cell, ++ gint* row, ++ gint* column, ++ gint* row_span, ++ gint* col_span) { ++ return g_atk_table_cell_get_row_column_span(cell, row, column, row_span, ++ col_span); ++} ++ ++// static ++bool AtkTableCellInterface::Exists() { ++ g_atk_table_cell_get_type = reinterpret_cast( ++ dlsym(RTLD_DEFAULT, "atk_table_cell_get_type")); ++ g_atk_table_cell_get_column_header_cells = ++ reinterpret_cast( ++ dlsym(RTLD_DEFAULT, "atk_table_cell_get_column_header_cells")); ++ g_atk_table_cell_get_row_header_cells = ++ reinterpret_cast( ++ dlsym(RTLD_DEFAULT, "atk_table_cell_get_row_header_cells")); ++ g_atk_table_cell_get_row_column_span = reinterpret_cast( ++ dlsym(RTLD_DEFAULT, "atk_table_cell_get_row_column_span")); ++ return *g_atk_table_cell_get_type; ++} ++ + void AXPlatformNodeAuraLinux::EnsureGTypeInit() { + #if !GLIB_CHECK_VERSION(2, 36, 0) + static bool first_time = true; +@@ -2353,8 +2456,11 @@ GType AXPlatformNodeAuraLinux::GetAccess + g_type_add_interface_static(type, ATK_TYPE_TABLE, &atk_table::Info); + + if (interface_mask_.Implements(ImplementedAtkInterfaces::Value::kTableCell)) { +- g_type_add_interface_static(type, atk_table_cell_get_type(), +- &atk_table_cell::Info); ++ // Run-time check to ensure AtkTableCell is supported (requires ATK 2.12). ++ if (AtkTableCellInterface::Exists()) { ++ g_type_add_interface_static(type, AtkTableCellInterface::GetType(), ++ &atk_table_cell::Info); ++ } + } + + return type; +@@ -2584,9 +2690,9 @@ AtkRole AXPlatformNodeAuraLinux::GetAtkR + case ax::mojom::Role::kComplementary: + return ATK_ROLE_LANDMARK; + case ax::mojom::Role::kContentDeletion: +- return GetAtkRoleContentDeletion(); ++ return kAtkRoleContentDeletion; + case ax::mojom::Role::kContentInsertion: +- return GetAtkRoleContentInsertion(); ++ return kAtkRoleContentInsertion; + case ax::mojom::Role::kContentInfo: + case ax::mojom::Role::kFooter: + return ATK_ROLE_LANDMARK; +@@ -3020,12 +3126,14 @@ void AXPlatformNodeAuraLinux::GetAtkStat + static_cast(ax::mojom::AriaCurrentState::kFalse)) { + atk_state_set_add_state(atk_state_set, ATK_STATE_ACTIVE); + } ++#if defined(ATK_216) + // Runtime checks in case we were compiled with a newer version of ATK. + if (IsPlatformCheckable() && PlatformSupportsState(ATK_STATE_CHECKABLE)) + atk_state_set_add_state(atk_state_set, ATK_STATE_CHECKABLE); + if (HasIntAttribute(ax::mojom::IntAttribute::kHasPopup) && + PlatformSupportsState(ATK_STATE_HAS_POPUP)) + atk_state_set_add_state(atk_state_set, ATK_STATE_HAS_POPUP); ++#endif + if (GetBoolAttribute(ax::mojom::BoolAttribute::kBusy)) + atk_state_set_add_state(atk_state_set, ATK_STATE_BUSY); + if (GetBoolAttribute(ax::mojom::BoolAttribute::kModal)) +@@ -3064,9 +3172,11 @@ void AXPlatformNodeAuraLinux::GetAtkStat + if (GetData().GetRestriction() != ax::mojom::Restriction::kDisabled) { + if (GetDelegate()->IsReadOnlySupported() && + GetDelegate()->IsReadOnlyOrDisabled()) { ++#if defined(ATK_216) + // Runtime check in case we were compiled with a newer version of ATK. + if (PlatformSupportsState(ATK_STATE_READ_ONLY)) + atk_state_set_add_state(atk_state_set, ATK_STATE_READ_ONLY); ++#endif + } else { + atk_state_set_add_state(atk_state_set, ATK_STATE_ENABLED); + atk_state_set_add_state(atk_state_set, ATK_STATE_SENSITIVE); +@@ -3100,12 +3210,16 @@ struct AtkIntListRelation { + static AtkIntListRelation kIntListRelations[] = { + {ax::mojom::IntListAttribute::kControlsIds, ATK_RELATION_CONTROLLER_FOR, + ATK_RELATION_CONTROLLED_BY}, ++#if defined(ATK_226) + {ax::mojom::IntListAttribute::kDetailsIds, ATK_RELATION_DETAILS, + ATK_RELATION_DETAILS_FOR}, ++#endif + {ax::mojom::IntListAttribute::kDescribedbyIds, ATK_RELATION_DESCRIBED_BY, + ATK_RELATION_DESCRIPTION_FOR}, ++#if defined(ATK_226) + {ax::mojom::IntListAttribute::kErrormessageIds, ATK_RELATION_ERROR_MESSAGE, + ATK_RELATION_ERROR_FOR}, ++#endif + {ax::mojom::IntListAttribute::kFlowtoIds, ATK_RELATION_FLOWS_TO, + ATK_RELATION_FLOWS_FROM}, + {ax::mojom::IntListAttribute::kLabelledbyIds, ATK_RELATION_LABELLED_BY, +@@ -3884,6 +3998,7 @@ void AXPlatformNodeAuraLinux::OnReadonly + if (!obj) + return; + ++#if defined(ATK_216) + // Runtime check in case we were compiled with a newer version of ATK. + if (!PlatformSupportsState(ATK_STATE_READ_ONLY)) + return; +@@ -3891,6 +4006,7 @@ void AXPlatformNodeAuraLinux::OnReadonly + atk_object_notify_state_change( + obj, ATK_STATE_READ_ONLY, + GetData().GetRestriction() == ax::mojom::Restriction::kReadOnly); ++#endif + } + + void AXPlatformNodeAuraLinux::OnInvalidStatusChanged() { +@@ -4217,11 +4333,13 @@ gfx::Rect AXPlatformNodeAuraLinux::GetEx + extents.Offset(window_origin); + break; + } ++#if defined(ATK_230) + case ATK_XY_PARENT: { + gfx::Vector2d parent_origin = -GetParentOriginInScreenCoordinates(); + extents.Offset(parent_origin); + break; + } ++#endif + } + + return extents; +@@ -4651,6 +4769,7 @@ bool AXPlatformNodeAuraLinux::IsInLiveRe + return HasStringAttribute(ax::mojom::StringAttribute::kContainerLiveStatus); + } + ++#if defined(ATK_230) + void AXPlatformNodeAuraLinux::ScrollToPoint(AtkCoordType atk_coord_type, + int x, + int y) { +@@ -4723,7 +4842,9 @@ void AXPlatformNodeAuraLinux::ScrollNode + rect -= rect.OffsetFromOrigin(); + ScrollNodeRectIntoView(rect, atk_scroll_type); + } ++#endif // defined(ATK_230) + ++#if defined(ATK_232) + std::optional + AXPlatformNodeAuraLinux::GetUnclippedHypertextRangeBoundsRect(int start_offset, + int end_offset) { +@@ -4782,6 +4903,7 @@ bool AXPlatformNodeAuraLinux::ScrollSubs + + return true; + } ++#endif // defined(ATK_232) + + void AXPlatformNodeAuraLinux::ComputeStylesIfNeeded() { + if (!offset_to_text_attributes_.empty()) +@@ -4964,8 +5086,10 @@ gfx::Point AXPlatformNodeAuraLinux::Conv + switch (atk_coord_type) { + case ATK_XY_WINDOW: + return point + GetParentFrameOriginInScreenCoordinates(); ++#if defined(ATK_230) + case ATK_XY_PARENT: + return point + GetParentOriginInScreenCoordinates(); ++#endif + case ATK_XY_SCREEN: + default: + return point; +diff -up chromium-129.0.6668.58/ui/accessibility/platform/ax_platform_node_auralinux.h.me chromium-129.0.6668.58/ui/accessibility/platform/ax_platform_node_auralinux.h +--- chromium-129.0.6668.58/ui/accessibility/platform/ax_platform_node_auralinux.h.me 2024-09-18 19:26:54.167348688 +0200 ++++ chromium-129.0.6668.58/ui/accessibility/platform/ax_platform_node_auralinux.h 2024-09-18 19:28:06.220700493 +0200 +@@ -52,6 +52,31 @@ struct FindInPageResultInfo { + } + }; + ++// AtkTableCell was introduced in ATK 2.12. Ubuntu Trusty has ATK 2.10. ++// Compile-time checks are in place for ATK versions that are older than 2.12. ++// However, we also need runtime checks in case the version we are building ++// against is newer than the runtime version. To prevent a runtime error, we ++// check that we have a version of ATK that supports AtkTableCell. If we do, ++// we dynamically load the symbol; if we don't, the interface is absent from ++// the accessible object and its methods will not be exposed or callable. ++// The definitions below ensure we have no missing symbols. Note that in ++// environments where we have ATK > 2.12, the definitions of AtkTableCell and ++// AtkTableCellIface below are overridden by the runtime version. ++// TODO(accessibility) Remove AtkTableCellInterface when 2.12 is the minimum ++// supported version. ++struct COMPONENT_EXPORT(AX_PLATFORM) AtkTableCellInterface { ++ typedef struct _AtkTableCell AtkTableCell; ++ static GType GetType(); ++ static GPtrArray* GetColumnHeaderCells(AtkTableCell* cell); ++ static GPtrArray* GetRowHeaderCells(AtkTableCell* cell); ++ static bool GetRowColumnSpan(AtkTableCell* cell, ++ gint* row, ++ gint* column, ++ gint* row_span, ++ gint* col_span); ++ static bool Exists(); ++}; ++ + // This class with an enum is used to generate a bitmask which tracks the ATK + // interfaces that an AXPlatformNodeAuraLinux's ATKObject implements. + class ImplementedAtkInterfaces { +diff -up chromium-129.0.6668.58/ui/accessibility/platform/ax_platform_node_auralinux_unittest.cc.me chromium-129.0.6668.58/ui/accessibility/platform/ax_platform_node_auralinux_unittest.cc +--- chromium-129.0.6668.58/ui/accessibility/platform/ax_platform_node_auralinux_unittest.cc.me 2024-09-18 19:27:10.728659400 +0200 ++++ chromium-129.0.6668.58/ui/accessibility/platform/ax_platform_node_auralinux_unittest.cc 2024-09-18 19:28:06.221700512 +0200 +@@ -8,6 +8,7 @@ + #endif + + #include ++#include + #include + #include + +@@ -884,6 +885,17 @@ typedef bool (*ScrollToPointFunc)(AtkCom + typedef bool (*ScrollToFunc)(AtkComponent* component, AtkScrollType type); + + TEST_F(AXPlatformNodeAuraLinuxTest, AtkComponentScrollToPoint) { ++ // There's a chance we may be compiled with a newer version of ATK and then ++ // run with an older one, so we need to do a runtime check for this method ++ // that is available in ATK 2.30 instead of linking directly. ++ ScrollToPointFunc scroll_to_point = reinterpret_cast( ++ dlsym(RTLD_DEFAULT, "atk_component_scroll_to_point")); ++ if (!scroll_to_point) { ++ LOG(WARNING) << "Skipping AtkComponentScrollToPoint" ++ " because ATK version < 2.30 detected."; ++ return; ++ } ++ + AXNodeData root; + root.id = 1; + root.role = ax::mojom::Role::kRootWebArea; +@@ -911,8 +923,7 @@ TEST_F(AXPlatformNodeAuraLinuxTest, AtkC + EXPECT_EQ(10, width); + EXPECT_EQ(10, height); + +- atk_component_scroll_to_point(ATK_COMPONENT(child_obj), ATK_XY_SCREEN, 600, +- 650); ++ scroll_to_point(ATK_COMPONENT(child_obj), ATK_XY_SCREEN, 600, 650); + atk_component_get_extents(ATK_COMPONENT(child_obj), &x_left, &y_top, &width, + &height, ATK_XY_SCREEN); + EXPECT_EQ(610, x_left); +@@ -920,8 +931,7 @@ TEST_F(AXPlatformNodeAuraLinuxTest, AtkC + EXPECT_EQ(10, width); + EXPECT_EQ(10, height); + +- atk_component_scroll_to_point(ATK_COMPONENT(child_obj), ATK_XY_PARENT, 10, +- 10); ++ scroll_to_point(ATK_COMPONENT(child_obj), ATK_XY_PARENT, 10, 10); + atk_component_get_extents(ATK_COMPONENT(child_obj), &x_left, &y_top, &width, + &height, ATK_XY_SCREEN); + // The test wrapper scrolls every element when scrolling, so this should be +@@ -938,6 +948,17 @@ TEST_F(AXPlatformNodeAuraLinuxTest, AtkC + } + + TEST_F(AXPlatformNodeAuraLinuxTest, AtkComponentScrollTo) { ++ // There's a chance we may be compiled with a newer version of ATK and then ++ // run with an older one, so we need to do a runtime check for this method ++ // that is available in ATK 2.30 instead of linking directly. ++ ScrollToFunc scroll_to = reinterpret_cast( ++ dlsym(RTLD_DEFAULT, "atk_component_scroll_to")); ++ if (!scroll_to) { ++ LOG(WARNING) << "Skipping AtkComponentScrollTo" ++ " because ATK version < 2.30 detected."; ++ return; ++ } ++ + AXNodeData root; + root.id = 1; + root.role = ax::mojom::Role::kRootWebArea; +@@ -965,7 +986,7 @@ TEST_F(AXPlatformNodeAuraLinuxTest, AtkC + EXPECT_EQ(10, width); + EXPECT_EQ(10, height); + +- atk_component_scroll_to(ATK_COMPONENT(child_obj), ATK_SCROLL_ANYWHERE); ++ scroll_to(ATK_COMPONENT(child_obj), ATK_SCROLL_ANYWHERE); + atk_component_get_extents(ATK_COMPONENT(child_obj), &x_left, &y_top, &width, + &height, ATK_XY_SCREEN); + EXPECT_EQ(0, x_left); +diff -up chromium-129.0.6668.58/ui/accessibility/platform/inspect/ax_tree_formatter_auralinux.cc.me chromium-129.0.6668.58/ui/accessibility/platform/inspect/ax_tree_formatter_auralinux.cc +--- chromium-129.0.6668.58/ui/accessibility/platform/inspect/ax_tree_formatter_auralinux.cc.me 2024-09-18 19:27:20.965851455 +0200 ++++ chromium-129.0.6668.58/ui/accessibility/platform/inspect/ax_tree_formatter_auralinux.cc 2024-09-18 19:28:06.221700512 +0200 +@@ -474,18 +474,34 @@ void AXTreeFormatterAuraLinux::AddTableC + int row = 0, col = 0, row_span = 0, col_span = 0; + int n_row_headers = 0, n_column_headers = 0; + +- AtkTableCell* cell = G_TYPE_CHECK_INSTANCE_CAST( +- (atk_object), atk_table_cell_get_type(), AtkTableCell); ++ // Properties obtained via AtkTableCell, if possible. If we do not have at ++ // least ATK 2.12, use the same logic in our AtkTableCell implementation so ++ // that tests can still be run. ++ if (AtkTableCellInterface::Exists()) { ++ AtkTableCell* cell = G_TYPE_CHECK_INSTANCE_CAST( ++ (atk_object), AtkTableCellInterface::GetType(), AtkTableCell); + +- atk_table_cell_get_row_column_span(cell, &row, &col, &row_span, &col_span); ++ AtkTableCellInterface::GetRowColumnSpan(cell, &row, &col, &row_span, ++ &col_span); + +- GPtrArray* column_headers = atk_table_cell_get_column_header_cells(cell); +- n_column_headers = column_headers->len; +- g_ptr_array_unref(column_headers); ++ GPtrArray* column_headers = ++ AtkTableCellInterface::GetColumnHeaderCells(cell); ++ n_column_headers = column_headers->len; ++ g_ptr_array_unref(column_headers); + +- GPtrArray* row_headers = atk_table_cell_get_row_header_cells(cell); +- n_row_headers = row_headers->len; +- g_ptr_array_unref(row_headers); ++ GPtrArray* row_headers = AtkTableCellInterface::GetRowHeaderCells(cell); ++ n_row_headers = row_headers->len; ++ g_ptr_array_unref(row_headers); ++ } else { ++ row = node->GetTableRow().value_or(-1); ++ col = node->GetTableColumn().value_or(-1); ++ row_span = node->GetTableRowSpan().value_or(0); ++ col_span = node->GetTableColumnSpan().value_or(0); ++ if (role == ATK_ROLE_TABLE_CELL) { ++ n_column_headers = node->GetDelegate()->GetColHeaderNodeIds(col).size(); ++ n_row_headers = node->GetDelegate()->GetRowHeaderNodeIds(row).size(); ++ } ++ } + + std::vector cell_info; + cell_info.push_back(base::StringPrintf("row=%i", row)); diff --git a/SOURCES/dawn-fix-ppc64le-detection.patch b/SOURCES/dawn-fix-ppc64le-detection.patch index 360ec35b..4379d4e7 100644 --- a/SOURCES/dawn-fix-ppc64le-detection.patch +++ b/SOURCES/dawn-fix-ppc64le-detection.patch @@ -1,8 +1,6 @@ -Index: chromium-128.0.6613.113/third_party/dawn/src/dawn/common/Platform.h -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/dawn/src/dawn/common/Platform.h -+++ chromium-128.0.6613.113/third_party/dawn/src/dawn/common/Platform.h -@@ -158,10 +158,12 @@ +--- 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 @@ -15,5 +13,5 @@ Index: chromium-128.0.6613.113/third_party/dawn/src/dawn/common/Platform.h +#elif defined(__PPC__) +#define DAWN_PLATFORM_IS_PPC 1 - #else - #error "Unsupported platform." + #elif defined(__wasm32__) + #define DAWN_PLATFORM_IS_WASM32 1 diff --git a/SOURCES/dawn-fix-typos.patch b/SOURCES/dawn-fix-typos.patch deleted file mode 100644 index b3206b93..00000000 --- a/SOURCES/dawn-fix-typos.patch +++ /dev/null @@ -1,16 +0,0 @@ -Index: chromium-128.0.6613.113/third_party/dawn/src/dawn/common/Assert.cpp -=================================================================== ---- chromium-128.0.6613.113.orig/third_party/dawn/src/dawn/common/Assert.cpp -+++ chromium-128.0.6613.113/third_party/dawn/src/dawn/common/Assert.cpp -@@ -52,9 +52,9 @@ void BreakPoint() { - __asm__ __volatile__("ebreak"); - #elif DAWN_PLATFORM_IS(MIPS) - __asm__ __volatile__("break"); --#elif DAWN_PLATFORM_IS(S390) || DAWN_PLATFORM_IS_(S390X) -+#elif DAWN_PLATFORM_IS(S390) || DAWN_PLATFORM_IS(S390X) - __asm__ __volatile__(".word 0x0001"); --#elif DAWN_PLATFORM_IS(PPC) || DAWN_PLATFORM_IS_(PPC64) -+#elif DAWN_PLATFORM_IS(PPC) || DAWN_PLATFORM_IS(PPC64) - __asm__ __volatile__("twge 2,2"); - #else - #error "Unsupported platform" diff --git a/SOURCES/partition-alloc-4k-detect.patch b/SOURCES/partition-alloc-4k-detect.patch deleted file mode 100644 index a0a3f959..00000000 --- a/SOURCES/partition-alloc-4k-detect.patch +++ /dev/null @@ -1,112 +0,0 @@ ---- a/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_constants.h -+++ b/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_constants.h -@@ -100,21 +100,21 @@ - // other constant values, we pack _all_ `PartitionRoot::Alloc` sizes perfectly - // up against the end of a system page. - --#if defined(_MIPS_ARCH_LOONGSON) || defined(ARCH_CPU_LOONGARCH64) -+#if (BUILDFLAG(IS_APPLE) && defined(ARCH_CPU_64_BITS)) || \ -+ defined(PARTITION_ALLOCATOR_CONSTANTS_POSIX_NONCONST_PAGE_SIZE) - PA_ALWAYS_INLINE PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR size_t - PartitionPageShift() { -- return 16; // 64 KiB -+ return PageAllocationGranularityShift() + 2; - } --#elif defined(ARCH_CPU_PPC64) -+#elif defined(_MIPS_ARCH_LOONGSON) || defined(ARCH_CPU_LOONGARCH64) - PA_ALWAYS_INLINE PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR size_t - PartitionPageShift() { -- return 18; // 256 KiB -+ return 16; // 64 KiB - } --#elif (BUILDFLAG(IS_APPLE) && defined(ARCH_CPU_64_BITS)) || \ -- defined(PARTITION_ALLOCATOR_CONSTANTS_POSIX_NONCONST_PAGE_SIZE) -+#elif defined(ARCH_CPU_PPC64) - PA_ALWAYS_INLINE PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR size_t - PartitionPageShift() { -- return PageAllocationGranularityShift() + 2; -+ return 18; // 256 KiB - } - #else - PA_ALWAYS_INLINE PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR size_t ---- a/base/allocator/partition_allocator/src/partition_alloc/page_allocator_constants.h -+++ b/base/allocator/partition_allocator/src/partition_alloc/page_allocator_constants.h -@@ -26,7 +26,8 @@ - #define PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR __attribute__((const)) - - #elif (BUILDFLAG(IS_ANDROID) && defined(ARCH_CPU_64_BITS)) || \ -- (BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64)) -+ (BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_ARM64)) || \ -+ (BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_PPC64)) - // This should work for all POSIX (if needed), but currently all other - // supported OS/architecture combinations use either hard-coded values - // (such as x86) or have means to determine these values without needing -@@ -86,17 +87,7 @@ - - PA_ALWAYS_INLINE PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR size_t - PageAllocationGranularityShift() { --#if BUILDFLAG(IS_WIN) || defined(ARCH_CPU_PPC64) -- // Modern ppc64 systems support 4kB (shift = 12) and 64kB (shift = 16) page -- // sizes. Since 64kB is the de facto standard on the platform and binaries -- // compiled for 64kB are likely to work on 4kB systems, 64kB is a good choice -- // here. -- return 16; // 64kB --#elif defined(_MIPS_ARCH_LOONGSON) || defined(ARCH_CPU_LOONGARCH64) -- return 14; // 16kB --#elif BUILDFLAG(IS_APPLE) && defined(ARCH_CPU_64_BITS) -- return static_cast(vm_page_shift); --#elif defined(PARTITION_ALLOCATOR_CONSTANTS_POSIX_NONCONST_PAGE_SIZE) -+#if defined(PARTITION_ALLOCATOR_CONSTANTS_POSIX_NONCONST_PAGE_SIZE) - // arm64 supports 4kb (shift = 12), 16kb (shift = 14), and 64kb (shift = 16) - // page sizes. Retrieve from or initialize cache. - size_t shift = page_characteristics.shift.load(std::memory_order_relaxed); -@@ -106,6 +97,16 @@ - page_characteristics.shift.store(shift, std::memory_order_relaxed); - } - return shift; -+#elif BUILDFLAG(IS_WIN) || defined(ARCH_CPU_PPC64) -+ // Modern ppc64 systems support 4kB (shift = 12) and 64kB (shift = 16) page -+ // sizes. Since 64kB is the de facto standard on the platform and binaries -+ // compiled for 64kB are likely to work on 4kB systems, 64kB is a good choice -+ // here. -+ return 16; // 64kB -+#elif defined(_MIPS_ARCH_LOONGSON) || defined(ARCH_CPU_LOONGARCH64) -+ return 14; // 16kB -+#elif BUILDFLAG(IS_APPLE) && defined(ARCH_CPU_64_BITS) -+ return static_cast(vm_page_shift); - #else - return 12; // 4kB - #endif ---- a/base/allocator/partition_allocator/src/partition_alloc/address_space_randomization.h -+++ b/base/allocator/partition_allocator/src/partition_alloc/address_space_randomization.h -@@ -180,10 +180,10 @@ - #else // !BUILDFLAG(IS_AIX) && !defined(ARCH_CPU_BIG_ENDIAN) - - // Little-endian Linux PPC has 48 bits of virtual addressing. Use 46. -- PA_ALWAYS_INLINE constexpr uintptr_t ASLRMask() { -+ PA_ALWAYS_INLINE PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR uintptr_t ASLRMask() { - return AslrMask(46); - } -- PA_ALWAYS_INLINE constexpr uintptr_t ASLROffset() { -+ PA_ALWAYS_INLINE PAGE_ALLOCATOR_CONSTANTS_DECLARE_CONSTEXPR uintptr_t ASLROffset() { - return AslrAddress(0); - } - ---- a/base/allocator/partition_allocator/src/partition_alloc/partition_page_constants.h -+++ b/base/allocator/partition_allocator/src/partition_alloc/partition_page_constants.h -@@ -17,10 +17,15 @@ - // PartitionPageSize() is 4 times the OS page size. - static constexpr size_t kMaxSlotsPerSlotSpan = 4 * (1 << 14) / kSmallestBucket; - #elif defined(PARTITION_ALLOCATOR_CONSTANTS_POSIX_NONCONST_PAGE_SIZE) -+#if defined(ARCH_CPU_PPC64) -+// System page size can be 4 or 64 kiB on Linux on ppc64. Use 64 kiB maximum. -+static constexpr size_t kMaxSlotsPerSlotSpan = 4 * (1 << 16) / kSmallestBucket; -+#else - // System page size can be 4, 16, or 64 kiB on Linux on arm64. 64 kiB is - // currently (kMaxSlotsPerSlotSpanBits == 13) not supported by the code, - // so we use the 16 kiB maximum (64 kiB will crash). - static constexpr size_t kMaxSlotsPerSlotSpan = 4 * (1 << 14) / kSmallestBucket; -+#endif - #elif BUILDFLAG(IS_LINUX) && defined(ARCH_CPU_PPC64) - // System page size is not a constant on OpenPOWER systems, but is either 4kiB - // or 64kiB (1 << 12 or 1 << 16) diff --git a/SPECS/chromium.spec b/SPECS/chromium.spec index cd10e174..419f16ae 100644 --- a/SPECS/chromium.spec +++ b/SPECS/chromium.spec @@ -296,7 +296,7 @@ %endif Name: chromium%{chromium_channel} -Version: 128.0.6613.119 +Version: 129.0.6668.58 Release: 1%{?dist} Summary: A WebKit (Blink) powered web browser that Google doesn't want you to use Url: http://www.chromium.org/Home @@ -333,6 +333,9 @@ Patch90: chromium-121-system-libxml.patch # patch for using system opus Patch91: chromium-108-system-opus.patch +# python-3,13, Deprecationwarning: 'count' is passed as positionaö argument +Patch100: chromium-128.0.6613.137-python-3.13-warning.patch + # system ffmpeg # need for old ffmpeg 5.x on epel9 Patch129: chromium-125-ffmpeg-5.x-reordered_opaque.patch @@ -345,6 +348,8 @@ Patch132: chromium-118-sigtrap_system_ffmpeg.patch Patch133: chromium-121-system-old-ffmpeg.patch # disable FFmpegAllowLists by default to allow external ffmpeg patch134: chromium-125-disable-FFmpegAllowLists.patch +# revert, it causes build error: use of undeclared identifier 'AVFMT_FLAG_NOH264PARSE' +Patch135: chromium-129-disable-H.264-video-parser-during-demuxing.patch # file conflict with old kernel on el8/el9 Patch141: chromium-118-dma_buf_export_sync_file-conflict.patch @@ -357,6 +362,9 @@ Patch150: chromium-124-qt6.patch Patch305: chromium-124-el8-arm64-memory_tagging.patch Patch306: chromium-127-el8-ifunc-header.patch +# workaround for build error due to old atk version on el8 +Patch307: chromium-129-el8-atk-compiler-error.patch + # enable fstack-protector-strong Patch312: chromium-123-fstack-protector-strong.patch @@ -373,9 +381,6 @@ Patch353: chromium-127-aarch64-duplicate-case-value.patch # remove flag split-threshold-for-reg-with-hint, it's not supported in clang <= 17 Patch354: chromium-126-split-threshold-for-reg-with-hint.patch -# use system libstdc++ -Patch355: chromium-126-system-libstdc++.patch - # set clang_lib path Patch358: chromium-127-rust-clanglib.patch @@ -447,12 +452,12 @@ Patch407: 0002-Add-ppc64-trap-instructions.patch Patch408: fix-ppc64-linux-syscalls-headers.patch Patch409: use-sysconf-page-size-on-ppc64.patch -Patch410: dawn-fix-typos.patch Patch411: dawn-fix-ppc64le-detection.patch Patch412: add-ppc64-architecture-to-extensions.diff # Suppress harmless compiler warning messages that appear on ppc64 due to arch-specific warning flags being passed Patch413: fix-unknown-warning-option-messages.diff +Patch414: cargo-add-ppc64.diff # upstream patches @@ -489,10 +494,6 @@ Source14: https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-%{esbuild_ve Source15: https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-%{esbuild_version}.tgz %endif -# bindgen for epel8 -Source16: https://than.fedorapeople.org/epel8/bindgen-cli-aarch64.tar.xz -Source17: https://than.fedorapeople.org/epel8/bindgen-cli-x86_64.tar.xz - # esbuild binary from fedora %if 0%{?fedora} BuildRequires: golang-github-evanw-esbuild @@ -519,12 +520,7 @@ BuildRequires: binutils %endif BuildRequires: rustc -%if 0%{?rhel} == 8 -# need to build bindgen on el8 -BuildRequires: cargo -%else BuildRequires: bindgen-cli -%endif %if ! %{bundlezstd} BuildRequires: libzstd-devel @@ -647,6 +643,10 @@ BuildRequires: libappstream-glib BuildRequires: libstdc++-static %endif +%if ! %{use_custom_libcxx} +BuildRequires: libcxx-devel +%endif + # Fedora tries to use system libs whenever it can. BuildRequires: bzip2-devel BuildRequires: dbus-glib-devel @@ -1058,6 +1058,10 @@ Qt6 UI for chromium. %patch -P91 -p1 -b .system-opus %endif +%if 0%{?fedora} +%patch -P100 -p1 -b .python-3.13-warning +%endif + %if ! %{bundleffmpegfree} %if 0%{?rhel} == 9 %patch -P129 -p1 -R -b .ffmpeg-5.x-reordered_opaque @@ -1067,6 +1071,7 @@ Qt6 UI for chromium. %patch -P132 -p1 -b .sigtrap_system_ffmpeg %patch -P133 -p1 -b .system-old-ffmpeg %patch -P134 -p1 -b .disable-FFmpegAllowLists +%patch -P135 -p1 -b .disable-H.264-video-parser-during-demuxing %endif %if 0%{?rhel} == 8 || 0%{?rhel} == 9 @@ -1082,6 +1087,7 @@ Qt6 UI for chromium. %patch -P305 -p1 -b .el8-memory_tagging %patch -P306 -p1 -b .el8-ifunc-header %endif +%patch -P307 -p1 -b .el8-atk-compiler-error %endif %patch -P312 -p1 -b .fstack-protector-strong @@ -1100,9 +1106,6 @@ Qt6 UI for chromium. %patch -P354 -p1 -b .split-threshold-for-reg-with-hint %endif -%if ! %{use_custom_libcxx} -%patch -P355 -p1 -b .system-libstdc++ -%endif %patch -P358 -p1 -b .rust-clang_lib %ifarch ppc64le @@ -1157,30 +1160,16 @@ Qt6 UI for chromium. %patch -P407 -p1 -b .0002-Add-ppc64-trap-instructions %patch -P408 -p1 -b .fix-ppc64-linux-syscalls-headers %patch -P409 -p1 -b .use-sysconf-page-size-on-ppc64 -%patch -P410 -p1 -b .dawn-fix-typos %patch -P411 -p1 -b .dawn-fix-ppc64le-detection %patch -P412 -p1 -b .add-ppc64-architecture-to-extensions %patch -P413 -p1 -b .fix-unknown-warning-option-messages +%patch -P414 -p1 -b .rust-add-ppc64-case %endif # Change shebang in all relevant files in this directory and all subdirectories # See `man find` for how the `-exec command {} +` syntax works find -type f \( -iname "*.py" \) -exec sed -i '1s=^#! */usr/bin/\(python\|env python\)[23]\?=#!%{chromium_pybin}=' {} + -# workaround for missing bindgen on el8 -%if 0%{?rhel} == 8 -%ifarch aarch64 -tar -Jxf %{SOURCE16} -%endif -%ifarch x86_64 -tar -Jxf %{SOURCE17} -%endif -mkdir -p usr/%{_lib} -pushd usr/%{_lib} -ln -fs %{_libdir}/libclang* . -popd -%endif - # Add correct path for nodejs binary %if ! %{system_nodejs} pushd third_party/node/linux @@ -1261,6 +1250,11 @@ CFLAGS="$FLAGS" CXXFLAGS="$FLAGS" %endif +%if ! %{use_custom_libcxx} +CXXFLAGS="$FLAGS -stdlib=libc++" +LDFLAGS="$LDFLAGS -stdlib=libc++" +%endif + %ifarch ppc64le CXXFLAGS+=' -faltivec-src-compat=mixed -Wno-deprecated-altivec-src-compat' %endif @@ -1303,11 +1297,7 @@ export RUSTC_BOOTSTRAP=1 # set rustc version rustc_version="$(rustc --version)" # set rust bindgen root -%if 0%{?rhel} == 8 -rust_bindgen_root="$PWD%{_prefix}" -%else rust_bindgen_root="%{_prefix}" -%endif # set clang version clang_version="$(clang --version | sed -n 's/clang version //p' | cut -d. -f1)" @@ -1988,6 +1978,22 @@ getent group chrome-remote-desktop >/dev/null || groupadd -r chrome-remote-deskt %endif %changelog +* Tue Sep 17 2024 Than Ngo - 129.0.6668.58-1 +- update to 129.0.6668.58 + * High CVE-2024-8904: Type Confusion in V8 + * Medium CVE-2024-8905: Inappropriate implementation in V8 + * Medium CVE-2024-8906: Incorrect security UI in Downloads + * Medium CVE-2024-8907: Insufficient data validation in Omnibox + * Low CVE-2024-8908: Inappropriate implementation in Autofill + * Low CVE-2024-8909: Inappropriate implementation in UI + +* Wed Sep 11 2024 Than Ngo - 128.0.6613.137-1 +- update to 128.0.6613.137 + * High CVE-2024-8636: Heap buffer overflow in Skia + * High CVE-2024-8637: Use after free in Media Router + * High CVE-2024-8638: Type Confusion in V8 + * High CVE-2024-8639: Use after free in Autofill + * Thu Sep 05 2024 Than Ngo - 128.0.6613.119-1 - update to 128.0.6613.119 * High CVE-2024-8362: Use after free in WebAudio