Compare commits

..

No commits in common. "rawhide" and "f34" have entirely different histories.

376 changed files with 31326 additions and 156785 deletions

17
.gitignore vendored
View file

@ -26,20 +26,3 @@
/NotoSansTibetan-Regular.ttf
/node-v12.22.6-linux-arm64.tar.xz
/node-v12.22.6-linux-x64.tar.xz
/node-v16.17.0-linux-x64.tar.xz
/node-v16.17.0-linux-arm64.tar.xz
/testupload
/node-v19.8.1-linux-arm64.tar.xz
/node-v19.8.1-linux-x64.tar.xz
/node-v20.6.1-linux-arm64.tar.xz
/node-v20.6.1-linux-x64.tar.xz
/linux-arm64-0.19.2.tgz
/linux-x64-0.19.2.tgz
/v0.69.4.tar.gz
/bindgen-cli-aarch64.tar.xz
/bindgen-cli-x86_64.tar.xz
/linux-ppc64-0.19.2.tgz
/node-v22.14.0-linux-arm64.tar.xz
/node-v22.14.0-linux-ppc64le.tar.xz
/node-v22.14.0-linux-x64.tar.xz
/node-v22.14.0-stripped.tar.gz

File diff suppressed because it is too large Load diff

View file

@ -1,57 +0,0 @@
From 40309fb53e39477490fd6928ebe67c4fb78de380 Mon Sep 17 00:00:00 2001
From: Shawn Anastasio <shawnanastasio@gmail.com>
Date: Sun, 10 Mar 2019 21:01:37 -0500
Subject: [PATCH] Add ppc64 target to libaom
---
third_party/libaom/BUILD.gn | 12 ++++++++++++
third_party/libaom/cmake_update.sh | 3 +++
2 files changed, 15 insertions(+)
Index: chromium-144.0.7559.59/third_party/libaom/BUILD.gn
===================================================================
--- chromium-144.0.7559.59.orig/third_party/libaom/BUILD.gn
+++ chromium-144.0.7559.59/third_party/libaom/BUILD.gn
@@ -299,6 +299,18 @@ if (current_cpu == "arm64" || current_cp
}
}
+if (current_cpu == "ppc64") {
+ source_set("libaom_intrinsics_vsx") {
+ configs -= [ "//build/config/compiler:chromium_code" ]
+ configs += [ "//build/config/compiler:no_chromium_code" ]
+ configs += [ ":libaom_config" ]
+ sources = [
+ "//third_party/libaom/source/libaom/aom_ports/ppc_cpudetect.c",
+ ]
+ sources += aom_av1_common_intrin_vsx
+ }
+}
+
static_library("libaom") {
check_includes = false
if (!is_debug && is_win) {
@@ -368,6 +380,9 @@ static_library("libaom") {
# This is needed by all arm boards due to aom_arm_cpu_caps()
sources += [ "source/libaom/aom_ports/aarch32_cpudetect.c" ]
}
+ if (current_cpu == "ppc64") {
+ deps += [ ":libaom_intrinsics_vsx" ]
+ }
if (is_android) {
deps += [ "//third_party/cpu_features:ndk_compat" ]
}
Index: chromium-144.0.7559.59/third_party/libaom/cmake_update.sh
===================================================================
--- chromium-144.0.7559.59.orig/third_party/libaom/cmake_update.sh
+++ chromium-144.0.7559.59/third_party/libaom/cmake_update.sh
@@ -167,6 +167,9 @@ egrep \
"#define [A-Z0-9_]+[[:space:]]+[01]" "${CFG}/win/ia32/config/aom_config.h" \
| awk '{print "%define " $2 " " $3}' > "${CFG}/win/ia32/config/aom_config.asm"
+reset_dirs linux/ppc64
+gen_config_files linux/ppc64 "${toolchain}/ppc-linux-gcc.cmake ${all_platforms}"
+
# Copy linux configurations and modify for Windows.
reset_dirs win/x64
cp "${CFG}/linux/x64/config"/* "${CFG}/win/x64/config/"

File diff suppressed because it is too large Load diff

View file

@ -1,13 +0,0 @@
Index: chromium-144.0.7559.59/v8/gni/v8.gni
===================================================================
--- chromium-144.0.7559.59.orig/v8/gni/v8.gni
+++ chromium-144.0.7559.59/v8/gni/v8.gni
@@ -317,7 +317,7 @@ assert(
if (v8_enable_pointer_compression == "") {
v8_enable_pointer_compression =
v8_current_cpu == "arm64" || v8_current_cpu == "x64" ||
- v8_current_cpu == "loong64"
+ v8_current_cpu == "loong64" || v8_current_cpu == "ppc64"
}
# The Wasm interpreter is currently supported only on arm64 and x64, on

View file

@ -1,30 +0,0 @@
From ea104a841fca1ff4d5430915f1b7c52c6a642f13 Mon Sep 17 00:00:00 2001
From: Timothy Pearson <tpearson@raptorengineering.com>
Date: Fri, 21 Sep 2018 21:44:17 -0500
Subject: [PATCH] Force baseline POWER8 / AltiVec / VSX CPU features when on a
PPC64 platform in LE mode
---
BUILD.gn | 6 ++++++
1 file changed, 6 insertions(+)
Index: chromium-144.0.7559.59/v8/BUILD.gn
===================================================================
--- chromium-144.0.7559.59.orig/v8/BUILD.gn
+++ chromium-144.0.7559.59/v8/BUILD.gn
@@ -1596,7 +1596,14 @@ config("toolchain") {
if (v8_current_cpu == "ppc64") {
defines += [ "V8_TARGET_ARCH_PPC64" ]
cflags += [ "-ffp-contract=off" ]
- if (current_os == "aix") {
+ if (current_os == "linux") {
+ cflags += [
+ # Enable usage of AltiVec, VSX, and other POWER8 and higher features
+ "-mcpu=power8",
+ "-maltivec",
+ "-mvsx",
+ ]
+ } else if (current_os == "aix") {
cflags += [
# Work around AIX ceil, trunc and round oddities.
"-mcpu=power5+",

File diff suppressed because it is too large Load diff

View file

@ -1,773 +0,0 @@
From cda9400739dfa064907d822f00578bb51b24a404 Mon Sep 17 00:00:00 2001
From: Shawn Anastasio <shawnanastasio@yahoo.com>
Date: Fri, 17 Aug 2018 14:18:33 -0500
Subject: [PATCH] Implement support for ppc64 on Linux
This patch implements support for the ppc64 architecture on Linux systems.
Notable changes include:
* Modification of tests to support non-4K page sizes
* minidump_writer: Determine size of stack to capture based on page size
* dump_writer_common: Introduce member function GetVectorRegisters to
ThreadInfo on ppc64 systems. This allows Altivec/VMX registers to be
dumped like they are on OS X. linux_ptrace_dumper has been updated
to utilize this function along with the ptrace mode NT_PPC_VMX.
* processor/exploitability_unittest.cc: Tests were disabled on
non-x86 systems. They assume the system objdump is capable of
disassembling x86 binaries which is not the case on other
architectures.
To-do:
* tools/linux/md2core has been updated as well, but functionality
has not been confirmed and restoration of Altivec/VMX registers
has not been implemented
Note that proper functionality depends on updates to third_party/LSS
that introduce PPC64 support. An in-progress patch that allows
breakpad to build and run successfully is available at:
https://wiki.raptorcs.com/wiki/Porting/Chromium
---
.../dump_writer_common/raw_context_cpu.h | 2 +
.../linux/dump_writer_common/thread_info.cc | 56 ++++++++++++++++++-
.../linux/dump_writer_common/thread_info.h | 9 +++
.../dump_writer_common/ucontext_reader.cc | 42 ++++++++++++++
.../dump_writer_common/ucontext_reader.h | 3 +
src/client/linux/handler/exception_handler.cc | 22 +++++++-
src/client/linux/handler/exception_handler.h | 6 +-
.../handler/exception_handler_unittest.cc | 8 ++-
.../microdump_writer/microdump_writer.cc | 14 ++++-
.../microdump_writer_unittest.cc | 15 ++++-
.../minidump_writer/linux_core_dumper.cc | 8 ++-
.../linux/minidump_writer/linux_dumper.cc | 4 +-
.../linux/minidump_writer/linux_dumper.h | 3 +-
.../linux_dumper_unittest_helper.cc | 2 +
.../minidump_writer/linux_ptrace_dumper.cc | 19 +++++--
.../linux_ptrace_dumper_unittest.cc | 5 ++
.../linux/minidump_writer/minidump_writer.cc | 18 ++++--
.../linux/minidump_writer/minidump_writer.h | 2 +
.../minidump_writer_unittest.cc | 3 +
src/common/linux/memory_mapped_file.cc | 3 +-
.../linux/memory_mapped_file_unittest.cc | 7 ++-
src/common/memory_allocator_unittest.cc | 3 +-
src/processor/exploitability_linux.cc | 2 +
src/processor/exploitability_unittest.cc | 15 +++--
src/tools/linux/md2core/minidump-2-core.cc | 45 +++++++++++++++
25 files changed, 281 insertions(+), 35 deletions(-)
Index: chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/raw_context_cpu.h
===================================================================
--- chromium-144.0.7559.59.orig/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/raw_context_cpu.h
+++ chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/raw_context_cpu.h
@@ -51,6 +51,8 @@ typedef MDRawContextRISCV64 RawContextCP
# else
# error "Unexpected __riscv_xlen"
# endif
+#elif defined(__powerpc64__)
+typedef MDRawContextPPC64 RawContextCPU;
#else
#error "This code has not been ported to your platform yet."
#endif
Index: chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/thread_info.cc
===================================================================
--- chromium-144.0.7559.59.orig/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/thread_info.cc
+++ chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/thread_info.cc
@@ -336,7 +336,42 @@ void ThreadInfo::FillCPUContext(RawConte
#error "Unexpected __riscv_xlen"
#endif
}
-#endif // __riscv
+
+#elif defined(__powerpc64__)
+
+uintptr_t ThreadInfo::GetInstructionPointer() const {
+ return mcontext.gp_regs[PT_NIP];
+}
+
+void ThreadInfo::FillCPUContext(RawContextCPU* out) const {
+ out->context_flags = MD_CONTEXT_PPC64_FULL;
+ for (int i = 0; i < MD_CONTEXT_PPC64_GPR_COUNT; i++)
+ out->gpr[i] = mcontext.gp_regs[i];
+
+ out->lr = mcontext.gp_regs[PT_LNK];
+ out->srr0 = mcontext.gp_regs[PT_NIP];
+ out->srr1 = mcontext.gp_regs[PT_MSR];
+ out->cr = mcontext.gp_regs[PT_CCR];
+ out->xer = mcontext.gp_regs[PT_XER];
+ out->ctr = mcontext.gp_regs[PT_CTR];
+
+ for (int i = 0; i < MD_FLOATINGSAVEAREA_PPC_FPR_COUNT; i++)
+ out->float_save.fpregs[i] = mcontext.fp_regs[i];
+
+ out->float_save.fpscr = mcontext.fp_regs[NFPREG-1];
+
+ for (int i = 0; i < MD_VECTORSAVEAREA_PPC_VR_COUNT; i++)
+ out->vector_save.save_vr[i] = \
+ {(((uint64_t)vregs.vrregs[i][0]) << 32)
+ | vregs.vrregs[i][1],
+ (((uint64_t)vregs.vrregs[i][2]) << 32)
+ | vregs.vrregs[i][3]};
+
+ out->vrsave = vregs.vrsave;
+ out->vector_save.save_vscr = {0, vregs.vscr.vscr_word};
+ out->vector_save.save_vrvalid = 0xFFFFFFFF;
+}
+#endif // __powerpc64__
void ThreadInfo::GetGeneralPurposeRegisters(void** gp_regs, size_t* size) {
assert(gp_regs || size);
@@ -350,6 +385,11 @@ void ThreadInfo::GetGeneralPurposeRegist
*gp_regs = mcontext.__gregs;
if (size)
*size = sizeof(mcontext.__gregs);
+#elif defined(__powerpc64__)
+ if (gp_regs)
+ *gp_regs = mcontext.gp_regs;
+ if (size)
+ *size = sizeof(mcontext.gp_regs);
#else
if (gp_regs)
*gp_regs = &regs;
@@ -384,6 +424,11 @@ void ThreadInfo::GetFloatingPointRegiste
# else
# error "Unexpected __riscv_flen"
# endif
+#elif defined(__powerpc64__)
+ if (fp_regs)
+ *fp_regs = &mcontext.fp_regs;
+ if (size)
+ *size = sizeof(mcontext.fp_regs);
#else
if (fp_regs)
*fp_regs = &fpregs;
@@ -392,4 +437,13 @@ void ThreadInfo::GetFloatingPointRegiste
#endif
}
+#if defined(__powerpc64__)
+void ThreadInfo::GetVectorRegisters(void** v_regs, size_t* size) {
+ if (v_regs)
+ *v_regs = &vregs;
+ if (size)
+ *size = sizeof(vregs);
+}
+#endif
+
} // namespace google_breakpad
Index: chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/thread_info.h
===================================================================
--- chromium-144.0.7559.59.orig/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/thread_info.h
+++ chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/thread_info.h
@@ -67,6 +67,10 @@ struct ThreadInfo {
// Use the structures defined in <sys/user.h>
struct user_regs_struct regs;
struct user_fpsimd_struct fpregs;
+#elif defined(__powerpc64__)
+ // Use the structures defined in <sys/ucontext.h>.
+ mcontext_t mcontext;
+ struct _libc_vrstate vregs;
#elif defined(__mips__) || defined(__riscv)
// Use the structure defined in <sys/ucontext.h>.
mcontext_t mcontext;
@@ -83,6 +87,11 @@ struct ThreadInfo {
// Returns the pointer and size of float point register area.
void GetFloatingPointRegisters(void** fp_regs, size_t* size);
+
+#if defined(__powerpc64__)
+ // Returns the pointer and size of the vector register area. (PPC64 only)
+ void GetVectorRegisters(void** v_regs, size_t* size);
+#endif
};
} // namespace google_breakpad
Index: chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc
===================================================================
--- chromium-144.0.7559.59.orig/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc
+++ chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.cc
@@ -324,6 +324,48 @@ void UContextReader::FillCPUContext(RawC
#error "Unexpected __riscv_xlen"
#endif
}
+
+#elif defined(__powerpc64__)
+
+uintptr_t UContextReader::GetStackPointer(const ucontext_t* uc) {
+ return uc->uc_mcontext.gp_regs[MD_CONTEXT_PPC64_REG_SP];
+}
+
+uintptr_t UContextReader::GetInstructionPointer(const ucontext_t* uc) {
+ return uc->uc_mcontext.gp_regs[PT_NIP];
+}
+
+void UContextReader::FillCPUContext(RawContextCPU* out, const ucontext_t* uc,
+ const struct _libc_vrstate* vregs) {
+ out->context_flags = MD_CONTEXT_PPC64_FULL;
+
+ for (int i = 0; i < MD_CONTEXT_PPC64_GPR_COUNT; i++)
+ out->gpr[i] = uc->uc_mcontext.gp_regs[i];
+
+ out->lr = uc->uc_mcontext.gp_regs[PT_LNK];
+ out->srr0 = uc->uc_mcontext.gp_regs[PT_NIP];
+ out->srr1 = uc->uc_mcontext.gp_regs[PT_MSR];
+ out->cr = uc->uc_mcontext.gp_regs[PT_CCR];
+ out->xer = uc->uc_mcontext.gp_regs[PT_XER];
+ out->ctr = uc->uc_mcontext.gp_regs[PT_CTR];
+
+ for (int i = 0; i < MD_FLOATINGSAVEAREA_PPC_FPR_COUNT; i++)
+ out->float_save.fpregs[i] = uc->uc_mcontext.fp_regs[i];
+
+ out->float_save.fpscr = uc->uc_mcontext.fp_regs[NFPREG-1];
+
+ for (int i = 0; i < MD_VECTORSAVEAREA_PPC_VR_COUNT; i++)
+ out->vector_save.save_vr[i] =
+ {(((uint64_t)vregs->vrregs[i][0]) << 32)
+ | vregs->vrregs[i][1],
+ (((uint64_t)vregs->vrregs[i][2]) << 32)
+ | vregs->vrregs[i][3]};
+
+ out->vrsave = vregs->vrsave;
+ out->vector_save.save_vscr = {0, vregs->vscr.vscr_word};
+ out->vector_save.save_vrvalid = 0xFFFFFFFF;
+}
+
#endif
} // namespace google_breakpad
Index: chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h
===================================================================
--- chromium-144.0.7559.59.orig/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h
+++ chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/dump_writer_common/ucontext_reader.h
@@ -54,6 +54,9 @@ struct UContextReader {
#elif defined(__aarch64__)
static void FillCPUContext(RawContextCPU* out, const ucontext_t* uc,
const struct fpsimd_context* fpregs);
+#elif defined(__powerpc64__)
+ static void FillCPUContext(RawContextCPU *out, const ucontext_t *uc,
+ const struct _libc_vrstate* vregs);
#else
static void FillCPUContext(RawContextCPU* out, const ucontext_t* uc);
#endif
Index: chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc
===================================================================
--- chromium-144.0.7559.59.orig/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc
+++ chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.cc
@@ -466,6 +466,13 @@ bool ExceptionHandler::HandleSignal(int
memcpy(&g_crash_context_.float_state, fp_ptr,
sizeof(g_crash_context_.float_state));
}
+#elif defined(__powerpc64__)
+ // On PPC64, we must copy VR state
+ ucontext_t* uc_ptr = (ucontext_t*)uc;
+ if (uc_ptr->uc_mcontext.v_regs) {
+ memcpy(&g_crash_context_.vector_state, uc_ptr->uc_mcontext.v_regs,
+ sizeof(g_crash_context_.vector_state));
+ }
#elif GOOGLE_BREAKPAD_CRASH_CONTEXT_HAS_FLOAT_STATE
ucontext_t* uc_ptr = (ucontext_t*)uc;
if (uc_ptr->uc_mcontext.fpregs) {
@@ -704,10 +711,18 @@ bool ExceptionHandler::WriteMinidump() {
}
#endif
-#if GOOGLE_BREAKPAD_CRASH_CONTEXT_HAS_FLOAT_STATE && !defined(__aarch64__)
+#if GOOGLE_BREAKPAD_CRASH_CONTEXT_HAS_FLOAT_STATE && !defined(__aarch64__) \
+ && !defined(__powerpc64__)
memcpy(&context.float_state, context.context.uc_mcontext.fpregs,
sizeof(context.float_state));
#endif
+
+#if defined(__powerpc64__)
+ // Vector registers must be copied on PPC64
+ memcpy(&context.vector_state, context.context.uc_mcontext.v_regs,
+ sizeof(context.vector_state));
+#endif
+
context.tid = sys_gettid();
// Add an exception stream to the minidump for better reporting.
@@ -728,6 +743,9 @@ bool ExceptionHandler::WriteMinidump() {
#elif defined(__mips__)
context.siginfo.si_addr =
reinterpret_cast<void*>(context.context.uc_mcontext.pc);
+#elif defined(__powerpc64__)
+ context.siginfo.si_addr =
+ reinterpret_cast<void*>(context.context.uc_mcontext.gp_regs[PT_NIP]);
#elif defined(__riscv)
context.siginfo.si_addr =
reinterpret_cast<void*>(context.context.uc_mcontext.__gregs[REG_PC]);
Index: chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.h
===================================================================
--- chromium-144.0.7559.59.orig/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.h
+++ chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler.h
@@ -197,7 +197,11 @@ class ExceptionHandler {
siginfo_t siginfo;
pid_t tid; // the crashing thread.
ucontext_t context;
-#if GOOGLE_BREAKPAD_CRASH_CONTEXT_HAS_FLOAT_STATE
+#if defined(__powerpc64__)
+ // PPC64's FP state is a part of ucontext_t like MIPS but the vector
+ // state is not, so a struct is needed.
+ vstate_t vector_state;
+#elif GOOGLE_BREAKPAD_CRASH_CONTEXT_HAS_FLOAT_STATE
fpstate_t float_state;
#endif
};
Index: chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler_unittest.cc
===================================================================
--- chromium-144.0.7559.59.orig/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler_unittest.cc
+++ chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/handler/exception_handler_unittest.cc
@@ -325,7 +325,7 @@ TEST(ExceptionHandlerTest, ParallelChild
ASSERT_EQ(SIGSEGV, WTERMSIG(status));
return;
} else {
- usleep(100000);
+ usleep(200000);
}
}
@@ -581,6 +581,8 @@ const unsigned char kIllegalInstruction[
#if defined(__mips__)
// mfc2 zero,Impl - usually illegal in userspace.
0x48, 0x00, 0x00, 0x48
+#elif defined(__powerpc64__)
+ 0x01, 0x01, 0x01, 0x01 // Crashes on a tested POWER9 cpu
#else
// This crashes with SIGILL on x86/x86-64/arm.
0xff, 0xff, 0xff, 0xff
@@ -776,10 +778,10 @@ TEST(ExceptionHandlerTest, InstructionPo
// These are defined here so the parent can use them to check the
// data from the minidump afterwards.
- // Use 4k here because the OS will hand out a single page even
+ // Use the page size here because the OS will hand out a single page even
// if a smaller size is requested, and this test wants to
// test the upper bound of the memory range.
- const uint32_t kMemorySize = 4096; // bytes
+ const uint32_t kMemorySize = getpagesize(); // bytes
const int kOffset = kMemorySize - sizeof(kIllegalInstruction);
const pid_t child = fork();
Index: chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/microdump_writer/microdump_writer.cc
===================================================================
--- chromium-144.0.7559.59.orig/third_party/breakpad/breakpad/src/client/linux/microdump_writer/microdump_writer.cc
+++ chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/microdump_writer/microdump_writer.cc
@@ -143,7 +143,9 @@ class MicrodumpWriter {
const MicrodumpExtraInfo& microdump_extra_info,
LinuxDumper* dumper)
: ucontext_(context ? &context->context : nullptr),
-#if GOOGLE_BREAKPAD_CRASH_CONTEXT_HAS_FLOAT_STATE
+#if defined(__powerpc64__)
+ vector_state_(context ? &context->vector_state : nullptr),
+#elif GOOGLE_BREAKPAD_CRASH_CONTEXT_HAS_FLOAT_STATE
float_state_(context ? &context->float_state : nullptr),
#endif
dumper_(dumper),
@@ -350,6 +352,8 @@ class MicrodumpWriter {
# else
# error "Unexpected __riscv_xlen"
# endif
+#elif defined(__powerpc64__)
+ const char kArch[] = "ppc64";
#else
# error "This code has not been ported to your platform yet"
#endif
@@ -422,7 +426,9 @@ class MicrodumpWriter {
void DumpCPUState() {
RawContextCPU cpu;
my_memset(&cpu, 0, sizeof(RawContextCPU));
-#if GOOGLE_BREAKPAD_CRASH_CONTEXT_HAS_FLOAT_STATE
+#if defined(__powerpc64__)
+ UContextReader::FillCPUContext(&cpu, ucontext_, vector_state_);
+#elif GOOGLE_BREAKPAD_CRASH_CONTEXT_HAS_FLOAT_STATE
UContextReader::FillCPUContext(&cpu, ucontext_, float_state_);
#else
UContextReader::FillCPUContext(&cpu, ucontext_);
@@ -618,7 +624,9 @@ class MicrodumpWriter {
void* Alloc(unsigned bytes) { return dumper_->allocator()->Alloc(bytes); }
const ucontext_t* const ucontext_;
-#if GOOGLE_BREAKPAD_CRASH_CONTEXT_HAS_FLOAT_STATE
+#if defined(__powerpc64__)
+ const google_breakpad::vstate_t* const vector_state_;
+#elif GOOGLE_BREAKPAD_CRASH_CONTEXT_HAS_FLOAT_STATE
const google_breakpad::fpstate_t* const float_state_;
#endif
LinuxDumper* dumper_;
Index: chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/microdump_writer/microdump_writer_unittest.cc
===================================================================
--- chromium-144.0.7559.59.orig/third_party/breakpad/breakpad/src/client/linux/microdump_writer/microdump_writer_unittest.cc
+++ chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/microdump_writer/microdump_writer_unittest.cc
@@ -281,10 +281,19 @@ TEST(MicrodumpWriterTest, BasicWithMappi
CrashAndGetMicrodump(mappings, MicrodumpExtraInfo(), &buf);
ASSERT_TRUE(ContainsMicrodump(buf));
+ int page_size = getpagesize();
#ifdef __LP64__
- ASSERT_NE(std::string::npos,
- buf.find("M 0000000000001000 000000000000002A 0000000000001000 "
- "33221100554477668899AABBCCDDEEFF0 libfoo.so"));
+ // This test is only available for the following page sizes
+ ASSERT_TRUE((page_size == 4096) || (page_size == 65536));
+ if (page_size == 4096) {
+ ASSERT_NE(std::string::npos,
+ buf.find("M 0000000000001000 000000000000002A 0000000000001000 "
+ "33221100554477668899AABBCCDDEEFF0 libfoo.so"));
+ } else {
+ ASSERT_NE(std::string::npos,
+ buf.find("M 0000000000010000 000000000000002A 0000000000010000 "
+ "33221100554477668899AABBCCDDEEFF0 libfoo.so"));
+ }
#else
ASSERT_NE(std::string::npos,
buf.find("M 00001000 0000002A 00001000 "
Index: chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_core_dumper.cc
===================================================================
--- chromium-144.0.7559.59.orig/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_core_dumper.cc
+++ chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_core_dumper.cc
@@ -118,6 +118,9 @@ bool LinuxCoreDumper::GetThreadInfoByInd
#elif defined(__riscv)
stack_pointer = reinterpret_cast<uint8_t*>(
info->mcontext.__gregs[MD_CONTEXT_RISCV_REG_SP]);
+#elif defined(__powerpc64__)
+ stack_pointer =
+ reinterpret_cast<uint8_t*>(info->mcontext.gp_regs[MD_CONTEXT_PPC64_REG_SP]);
#else
# error "This code hasn't been ported to your platform yet."
#endif
@@ -213,7 +216,10 @@ bool LinuxCoreDumper::EnumerateThreads()
memset(&info, 0, sizeof(ThreadInfo));
info.tgid = status->pr_pgrp;
info.ppid = status->pr_ppid;
-#if defined(__mips__)
+#if defined(__powerpc64__)
+ for (int i = 0; i < 31; i++)
+ info.mcontext.gp_regs[i] = status->pr_reg[i];
+#elif defined(__mips__)
# if defined(__ANDROID__)
for (int i = EF_R0; i <= EF_R31; i++)
info.mcontext.gregs[i - EF_R0] = status->pr_reg[i];
Index: chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_dumper.cc
===================================================================
--- chromium-144.0.7559.59.orig/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_dumper.cc
+++ chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_dumper.cc
@@ -789,7 +789,9 @@ bool LinuxDumper::GetStackInfo(const voi
reinterpret_cast<uint8_t*>(int_stack_pointer & ~(page_size - 1));
// The number of bytes of stack which we try to capture.
- static const ptrdiff_t kStackToCapture = 32 * 1024;
+ // This now depends on page_size to avoid missing data
+ // on systems with larger page sizes.
+ static const ptrdiff_t kStackToCapture = 8 * page_size;
const MappingInfo* mapping = FindMapping(stack_pointer);
if (!mapping)
Index: chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_dumper.h
===================================================================
--- chromium-144.0.7559.59.orig/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_dumper.h
+++ chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_dumper.h
@@ -64,7 +64,8 @@ namespace google_breakpad {
typedef Elf32_auxv_t elf_aux_entry;
#elif defined(__x86_64) || defined(__aarch64__) || \
(defined(__mips__) && _MIPS_SIM != _ABIO32) || \
- (defined(__riscv) && __riscv_xlen == 64)
+ (defined(__riscv) && __riscv_xlen == 64) || \
+ defined(__powerpc64__)
typedef Elf64_auxv_t elf_aux_entry;
#endif
Index: chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc
===================================================================
--- chromium-144.0.7559.59.orig/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc
+++ chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_dumper_unittest_helper.cc
@@ -57,6 +57,8 @@
#define TID_PTR_REGISTER "$1"
#elif defined(__riscv)
#define TID_PTR_REGISTER "x4"
+#elif defined(__powerpc64__)
+#define TID_PTR_REGISTER "r8"
#else
#error This test has not been ported to this platform.
#endif
Index: chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper.cc
===================================================================
--- chromium-144.0.7559.59.orig/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper.cc
+++ chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper.cc
@@ -208,12 +208,12 @@ bool LinuxPtraceDumper::ReadRegisterSet(
#ifdef PTRACE_GETREGSET
struct iovec io;
info->GetGeneralPurposeRegisters(&io.iov_base, &io.iov_len);
- if (sys_ptrace(PTRACE_GETREGSET, tid, (void*)NT_PRSTATUS, (void*)&io) == -1) {
+ if (ptrace(PTRACE_GETREGSET, tid, (void*)NT_PRSTATUS, (void*)&io) == -1) {
return false;
}
info->GetFloatingPointRegisters(&io.iov_base, &io.iov_len);
- if (sys_ptrace(PTRACE_GETREGSET, tid, (void*)NT_FPREGSET, (void*)&io) == -1) {
+ if (ptrace(PTRACE_GETREGSET, tid, (void*)NT_FPREGSET, (void*)&io) == -1) {
// We are going to check if we can read VFP registers on ARM32.
// Currently breakpad does not support VFP registers to be a part of minidump,
// so this is only to confirm that we can actually read FP registers.
@@ -233,6 +233,15 @@ bool LinuxPtraceDumper::ReadRegisterSet(
}
#endif // defined(__arm__)
}
+
+#if defined(__powerpc64__)
+ // Grab the vector registers on PPC64 too
+ info->GetVectorRegisters(&io.iov_base, &io.iov_len);
+ if (ptrace(PTRACE_GETREGSET, tid, (void*)NT_PPC_VMX, (void*)&io) == -1) {
+ return false;
+ }
+#endif // defined(__powerpc64__)
+
return true;
#else
return false;
@@ -397,6 +406,9 @@ bool LinuxPtraceDumper::GetThreadInfoByI
#elif defined(__riscv)
stack_pointer = reinterpret_cast<uint8_t*>(
info->mcontext.__gregs[MD_CONTEXT_RISCV_REG_SP]);
+#elif defined(__powerpc64__)
+ stack_pointer =
+ reinterpret_cast<uint8_t*>(info->mcontext.gp_regs[MD_CONTEXT_PPC64_REG_SP]);
#else
# error "This code hasn't been ported to your platform yet."
#endif
Index: chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc
===================================================================
--- chromium-144.0.7559.59.orig/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc
+++ chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/minidump_writer/linux_ptrace_dumper_unittest.cc
@@ -469,6 +469,9 @@ TEST(LinuxPtraceDumperTest, VerifyStackR
#elif defined(__riscv)
pid_t* process_tid_location =
reinterpret_cast<pid_t*>(one_thread.mcontext.__gregs[4]);
+#elif defined(__powerpc64__)
+ pid_t* process_tid_location =
+ reinterpret_cast<pid_t*>(one_thread.mcontext.gp_regs[8]);
#else
#error This test has not been ported to this platform.
#endif
@@ -568,6 +571,8 @@ TEST_F(LinuxPtraceDumperTest, SanitizeSt
uintptr_t heap_addr = thread_info.mcontext.gregs[1];
#elif defined(__riscv)
uintptr_t heap_addr = thread_info.mcontext.__gregs[4];
+#elif defined(__powerpc64__)
+ uintptr_t heap_addr = thread_info.mcontext.gp_regs[8];
#else
#error This test has not been ported to this platform.
#endif
Index: chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer.cc
===================================================================
--- chromium-144.0.7559.59.orig/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer.cc
+++ chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer.cc
@@ -145,7 +145,9 @@ class MinidumpWriter {
: fd_(minidump_fd),
path_(minidump_path),
ucontext_(context ? &context->context : nullptr),
-#if GOOGLE_BREAKPAD_CRASH_CONTEXT_HAS_FLOAT_STATE
+#if defined(__powerpc64__)
+ vector_state_(context ? &context->vector_state : nullptr),
+#elif GOOGLE_BREAKPAD_CRASH_CONTEXT_HAS_FLOAT_STATE
float_state_(context ? &context->float_state : nullptr),
#endif
dumper_(dumper),
@@ -477,7 +479,9 @@ class MinidumpWriter {
if (!cpu.Allocate())
return false;
my_memset(cpu.get(), 0, sizeof(RawContextCPU));
-#if GOOGLE_BREAKPAD_CRASH_CONTEXT_HAS_FLOAT_STATE
+#if defined(__powerpc64__)
+ UContextReader::FillCPUContext(cpu.get(), ucontext_, vector_state_);
+#elif GOOGLE_BREAKPAD_CRASH_CONTEXT_HAS_FLOAT_STATE
UContextReader::FillCPUContext(cpu.get(), ucontext_, float_state_);
#else
UContextReader::FillCPUContext(cpu.get(), ucontext_);
@@ -954,7 +958,7 @@ class MinidumpWriter {
dirent->location.rva = 0;
}
-#if defined(__i386__) || defined(__x86_64__) || defined(__mips__)
+#if defined(__i386__) || defined(__x86_64__) || defined(__mips__) || defined(__powerpc64__)
bool WriteCPUInformation(MDRawSystemInfo* sys_info) {
char vendor_id[sizeof(sys_info->cpu.x86_cpu_info.vendor_id) + 1] = {0};
static const char vendor_id_name[] = "vendor_id";
@@ -974,7 +978,9 @@ class MinidumpWriter {
// processor_architecture should always be set, do this first
sys_info->processor_architecture =
-#if defined(__mips__)
+#if defined(__powerpc64__)
+ MD_CPU_ARCHITECTURE_PPC64;
+#elif defined(__mips__)
# if _MIPS_SIM == _ABIO32
MD_CPU_ARCHITECTURE_MIPS;
# elif _MIPS_SIM == _ABI64
@@ -1441,7 +1447,9 @@ class MinidumpWriter {
const char* path_; // Path to the file where the minidum should be written.
const ucontext_t* const ucontext_; // also from the signal handler
-#if GOOGLE_BREAKPAD_CRASH_CONTEXT_HAS_FLOAT_STATE
+#if defined(__powerpc64__)
+ const google_breakpad::vstate_t* const vector_state_;
+#elif GOOGLE_BREAKPAD_CRASH_CONTEXT_HAS_FLOAT_STATE
const google_breakpad::fpstate_t* const float_state_; // ditto
#endif
LinuxDumper* dumper_;
Index: chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer.h
===================================================================
--- chromium-144.0.7559.59.orig/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer.h
+++ chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer.h
@@ -47,6 +47,8 @@ class ExceptionHandler;
#if defined(__aarch64__)
typedef struct fpsimd_context fpstate_t;
+#elif defined(__powerpc64__)
+typedef struct _libc_vrstate vstate_t;
#elif !defined(__ARM_EABI__) && !defined(__mips__)
typedef std::remove_pointer<fpregset_t>::type fpstate_t;
#endif
Index: chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer_unittest.cc
===================================================================
--- chromium-144.0.7559.59.orig/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer_unittest.cc
+++ chromium-144.0.7559.59/third_party/breakpad/breakpad/src/client/linux/minidump_writer/minidump_writer_unittest.cc
@@ -723,6 +723,9 @@ TEST(MinidumpWriterTest, InvalidStackPoi
#elif defined(__riscv)
context.context.uc_mcontext.__gregs[MD_CONTEXT_RISCV_REG_SP] =
invalid_stack_pointer;
+#elif defined(__powerpc64__)
+ context.context.uc_mcontext.gp_regs[MD_CONTEXT_PPC64_REG_SP] =
+ invalid_stack_pointer;
#else
# error "This code has not been ported to your platform yet."
#endif
Index: chromium-144.0.7559.59/third_party/breakpad/breakpad/src/common/linux/memory_mapped_file.cc
===================================================================
--- chromium-144.0.7559.59.orig/third_party/breakpad/breakpad/src/common/linux/memory_mapped_file.cc
+++ chromium-144.0.7559.59/third_party/breakpad/breakpad/src/common/linux/memory_mapped_file.cc
@@ -72,8 +72,7 @@ bool MemoryMappedFile::Map(const char* p
#if defined(__x86_64__) || defined(__aarch64__) || \
(defined(__mips__) && _MIPS_SIM == _ABI64) || \
- (defined(__riscv) && __riscv_xlen == 64)
-
+ (defined(__riscv) && __riscv_xlen == 64) || defined(__powerpc64__)
struct kernel_stat st;
if (sys_fstat(fd, &st) == -1 || st.st_size < 0) {
#else
Index: chromium-144.0.7559.59/third_party/breakpad/breakpad/src/common/linux/memory_mapped_file_unittest.cc
===================================================================
--- chromium-144.0.7559.59.orig/third_party/breakpad/breakpad/src/common/linux/memory_mapped_file_unittest.cc
+++ chromium-144.0.7559.59/third_party/breakpad/breakpad/src/common/linux/memory_mapped_file_unittest.cc
@@ -178,9 +178,10 @@ TEST_F(MemoryMappedFileTest, RemapAfterM
TEST_F(MemoryMappedFileTest, MapWithOffset) {
// Put more data in the test file this time. Offsets can only be
// done on page boundaries, so we need a two page file to test this.
- const int page_size = 4096;
- char data1[2 * page_size];
- size_t data1_size = sizeof(data1);
+ const int page_size = getpagesize();
+ char *data1 = static_cast<char*>(malloc(2 * page_size));
+ EXPECT_TRUE(data1 != NULL);
+ size_t data1_size = (2 * page_size);
for (size_t i = 0; i < data1_size; ++i) {
data1[i] = i & 0x7f;
}
Index: chromium-144.0.7559.59/third_party/breakpad/breakpad/src/common/memory_allocator_unittest.cc
===================================================================
--- chromium-144.0.7559.59.orig/third_party/breakpad/breakpad/src/common/memory_allocator_unittest.cc
+++ chromium-144.0.7559.59/third_party/breakpad/breakpad/src/common/memory_allocator_unittest.cc
@@ -64,8 +64,9 @@ TEST(PageAllocatorTest, LargeObject) {
EXPECT_EQ(0U, allocator.pages_allocated());
uint8_t* p = reinterpret_cast<uint8_t*>(allocator.Alloc(10000));
+ uint64_t expected_pages = 1 + ((10000 - 1) / getpagesize());
ASSERT_FALSE(p == nullptr);
- EXPECT_EQ(3U, allocator.pages_allocated());
+ EXPECT_EQ(expected_pages, allocator.pages_allocated());
for (unsigned i = 1; i < 10; ++i) {
uint8_t* p = reinterpret_cast<uint8_t*>(allocator.Alloc(i));
ASSERT_FALSE(p == nullptr);
Index: chromium-144.0.7559.59/third_party/breakpad/breakpad/src/tools/linux/md2core/minidump-2-core.cc
===================================================================
--- chromium-144.0.7559.59.orig/third_party/breakpad/breakpad/src/tools/linux/md2core/minidump-2-core.cc
+++ chromium-144.0.7559.59/third_party/breakpad/breakpad/src/tools/linux/md2core/minidump-2-core.cc
@@ -82,6 +82,8 @@
#define ELF_ARCH EM_AARCH64
#elif defined(__riscv)
#define ELF_ARCH EM_RISCV
+#elif defined(__powerpc64__)
+ #define ELF_ARCH EM_PPC64
#endif
#if defined(__arm__)
@@ -92,6 +94,8 @@ typedef user_regs user_regs_struct;
#elif defined (__mips__) || defined(__riscv)
// This file-local typedef simplifies the source code.
typedef gregset_t user_regs_struct;
+#elif defined(__powerpc64__)
+typedef struct pt_regs user_regs_struct;
#endif
using google_breakpad::MDTypeHelper;
@@ -325,6 +329,9 @@ struct CrashedProcess {
#if defined(__aarch64__)
user_fpsimd_struct fpregs;
#endif
+#if defined(__powerpc64__)
+ mcontext_t mcontext;
+#endif
uintptr_t stack_addr;
const uint8_t* stack;
size_t stack_length;
@@ -628,6 +635,38 @@ ParseThreadRegisters(CrashedProcess::Thr
#error "Unexpected __riscv_xlen"
#endif
}
+#elif defined(__powerpc64__)
+static void
+ParseThreadRegisters(CrashedProcess::Thread* thread,
+ const MinidumpMemoryRange& range) {
+ const MDRawContextPPC64* rawregs = range.GetData<MDRawContextPPC64>(0);
+
+ for (int i = 0; i < MD_CONTEXT_PPC64_GPR_COUNT; i++)
+ thread->mcontext.gp_regs[i] = rawregs->gpr[i];
+
+ thread->mcontext.gp_regs[PT_LNK] = rawregs->lr;
+ thread->mcontext.gp_regs[PT_NIP] = rawregs->srr0;
+ thread->mcontext.gp_regs[PT_MSR] = rawregs->srr1;
+ thread->mcontext.gp_regs[PT_CCR] = rawregs->cr;
+ thread->mcontext.gp_regs[PT_XER] = rawregs->xer;
+ thread->mcontext.gp_regs[PT_CTR] = rawregs->ctr;
+ thread->mcontext.v_regs->vrsave = rawregs->vrsave;
+
+ for (int i = 0; i < MD_FLOATINGSAVEAREA_PPC_FPR_COUNT; i++)
+ thread->mcontext.fp_regs[i] = rawregs->float_save.fpregs[i];
+
+ thread->mcontext.fp_regs[NFPREG-1] = rawregs->float_save.fpscr;
+
+ for (int i = 0; i < MD_VECTORSAVEAREA_PPC_VR_COUNT; i++) {
+ thread->mcontext.v_regs->vrregs[i][0] = rawregs->vector_save.save_vr[i].high >> 32;
+ thread->mcontext.v_regs->vrregs[i][1] = rawregs->vector_save.save_vr[i].high;
+ thread->mcontext.v_regs->vrregs[i][2] = rawregs->vector_save.save_vr[i].low >> 32;
+ thread->mcontext.v_regs->vrregs[i][3] = rawregs->vector_save.save_vr[i].low;
+ }
+
+ thread->mcontext.v_regs->vscr.vscr_word = rawregs->vector_save.save_vscr.low & 0xFFFFFFFF;
+}
+
#else
#error "This code has not been ported to your platform yet"
#endif
@@ -733,6 +772,12 @@ ParseSystemInfo(const Options& options,
# else
# error "Unexpected __riscv_xlen"
# endif
+#elif defined(__powerpc64__)
+ if (sysinfo->processor_architecture != MD_CPU_ARCHITECTURE_PPC64) {
+ fprintf(stderr,
+ "This version of minidump-2-core only supports PPC64.\n");
+ exit(1);
+ }
#else
#error "This code has not been ported to your platform yet"
#endif

View file

@ -1,46 +0,0 @@
From e93d9b5fdcd8e5744de629461c03a07de2252f8f Mon Sep 17 00:00:00 2001
From: Stephen Gallagher <sgallagh@redhat.com>
Date: Fri, 17 Apr 2020 12:59:44 +0200
Subject: [PATCH] Remove unused OpenSSL config
The build process will try to create these config files, even when
using the system OpenSSL and will thus fail since we strip this path
from the tarball.
Signed-off-by: Stephen Gallagher <sgallagh@redhat.com>
Signed-off-by: rpm-build <rpm-build>
---
node.gyp | 17 -----------------
1 file changed, 17 deletions(-)
diff --git a/node.gyp b/node.gyp
index 1147495..da6ea50 100644
--- a/node.gyp
+++ b/node.gyp
@@ -822,23 +822,6 @@
],
},
],
- }, {
- 'variables': {
- 'opensslconfig_internal': '<(obj_dir)/deps/openssl/openssl.cnf',
- 'opensslconfig': './deps/openssl/nodejs-openssl.cnf',
- },
- 'actions': [
- {
- 'action_name': 'reset_openssl_cnf',
- 'inputs': [ '<(opensslconfig)', ],
- 'outputs': [ '<(opensslconfig_internal)', ],
- 'action': [
- '<(python)', 'tools/copyfile.py',
- '<(opensslconfig)',
- '<(opensslconfig_internal)',
- ],
- },
- ],
}],
],
}, # node_core_target_name
--
2.47.0

View file

@ -1,35 +0,0 @@
Index: chromium-144.0.7559.59/third_party/xnnpack/generate_build_gn.py
===================================================================
--- chromium-144.0.7559.59.orig/third_party/xnnpack/generate_build_gn.py
+++ chromium-144.0.7559.59/third_party/xnnpack/generate_build_gn.py
@@ -239,7 +239,10 @@ _PLATFORMS = [
bazel_platform='//:linux_aarch64'),
_Platform(gn_cpu='riscv64',
bazel_cpu='riscv64',
- bazel_platform='//:linux_riscv64')
+ bazel_platform='//:linux_riscv64'),
+ _Platform(gn_cpu='ppc64',
+ bazel_cpu='ppc64le',
+ bazel_platform='//:linux_ppc64le')
]
Index: chromium-144.0.7559.59/third_party/xnnpack/bazelroot/BUILD
===================================================================
--- chromium-144.0.7559.59.orig/third_party/xnnpack/bazelroot/BUILD
+++ chromium-144.0.7559.59/third_party/xnnpack/bazelroot/BUILD
@@ -29,6 +29,14 @@ platform(
],
)
+platform(
+ name = "linux_ppc64le",
+ constraint_values = [
+ "@platforms//os:linux",
+ "@platforms//cpu:ppc64le",
+ ],
+)
+
# A dummy clang toolchain for building them for any arch.
filegroup(name = "empty")

File diff suppressed because it is too large Load diff

View file

@ -1,20 +0,0 @@
Description: fix swiftshader build issue on ppc64el
Origin: vendor, https://gitlab.raptorengineering.com/raptor-engineering-public/chromium/openpower-patches/-/blob/chromium-131/patches/ppc64le/third_party/0001-swiftshader-fix-build.patch
Bug: https://buildd.debian.org/status/fetch.php?pkg=chromium&arch=ppc64el&ver=131.0.6778.204-1&stamp=1734633529&raw=0
Last-Update: 2024-12-20
---
This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
Index: chromium-144.0.7559.59/third_party/swiftshader/third_party/llvm-16.0/BUILD.gn
===================================================================
--- chromium-144.0.7559.59.orig/third_party/swiftshader/third_party/llvm-16.0/BUILD.gn
+++ chromium-144.0.7559.59/third_party/swiftshader/third_party/llvm-16.0/BUILD.gn
@@ -1599,6 +1599,9 @@ swiftshader_llvm_source_set("swiftshader
"llvm/lib/Target/PowerPC/PPCVSXFMAMutate.cpp",
"llvm/lib/Target/PowerPC/PPCVSXSwapRemoval.cpp",
"llvm/lib/Target/PowerPC/TargetInfo/PowerPCTargetInfo.cpp",
+ "llvm/lib/MC/MCXCOFFObjectTargetWriter.cpp",
+ "llvm/lib/MC/MCAsmInfoXCOFF.cpp",
+ "llvm/lib/MC/MCInstrInfo.cpp",
]
}

View file

@ -1,12 +0,0 @@
Index: chromium-144.0.7559.59/third_party/angle/src/libANGLE/Constants.h
===================================================================
--- chromium-144.0.7559.59.orig/third_party/angle/src/libANGLE/Constants.h
+++ chromium-144.0.7559.59/third_party/angle/src/libANGLE/Constants.h
@@ -9,6 +9,7 @@
#ifndef LIBANGLE_CONSTANTS_H_
#define LIBANGLE_CONSTANTS_H_
+#include <cstddef>
#include "common/platform.h"
#include <stddef.h>

View file

@ -1,23 +0,0 @@
From cc613c2e3bac8d4d1ff153700b819f964435923a Mon Sep 17 00:00:00 2001
From: Shawn Anastasio <shawnanastasio@yahoo.com>
Date: Tue, 4 Sep 2018 18:16:07 -0500
Subject: [PATCH] third_party/libvpx: Properly generate gni on ppc64
---
third_party/libvpx/BUILD.gn | 2 ++
third_party/libvpx/generate_gni.sh | 10 ++++++++++
2 files changed, 12 insertions(+)
Index: chromium-144.0.7559.59/third_party/libvpx/BUILD.gn
===================================================================
--- chromium-144.0.7559.59.orig/third_party/libvpx/BUILD.gn
+++ chromium-144.0.7559.59/third_party/libvpx/BUILD.gn
@@ -297,6 +297,8 @@ if (current_cpu == "x86" || (current_cpu
} else if (current_cpu == "x64") {
deps = [ ":libvpx_x86_64_headers" ]
sources = libvpx_srcs_x86_64_avx512
+ } else if (current_cpu == "ppc64") {
+ sources = libvpx_srcs_ppc64
}
}
}

View file

@ -1,22 +0,0 @@
From 63e63a70766f3059ce5f1d06a95988ecf909b298 Mon Sep 17 00:00:00 2001
From: Shawn Anastasio <shawn@anastas.io>
Date: Wed, 24 Apr 2019 21:17:23 -0500
Subject: [PATCH] third_party/pffft: Include altivec.h on ppc64 with SIMD
enabled
---
third_party/pffft/src/pffft.c | 1 +
1 file changed, 1 insertion(+)
Index: chromium-144.0.7559.59/third_party/pffft/src/pffft.c
===================================================================
--- chromium-144.0.7559.59.orig/third_party/pffft/src/pffft.c
+++ chromium-144.0.7559.59/third_party/pffft/src/pffft.c
@@ -100,6 +100,7 @@
Altivec support macros
*/
#if !defined(PFFFT_SIMD_DISABLE) && (defined(__ppc__) || defined(__ppc64__))
+#include <altivec.h>
typedef vector float v4sf;
# define SIMD_SZ 4
# define VZERO() ((vector float) vec_splat_u8(0))

File diff suppressed because it is too large Load diff

View file

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

View file

@ -1,36 +0,0 @@
# crypto: fix missing OPENSSL_NO_ENGINE guard
# PR-URL: https://github.com/nodejs/node/pull/57012
# Reviewed-By: Richard Lau <rlau@redhat.com>
# Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com>
# Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
# Reviewed-By: James M Snell <jasnell@gmail.com>
diff --git a/src/crypto/crypto_context.cc b/src/crypto/crypto_context.cc
index abcdef1..2345678 100644
--- a/src/crypto/crypto_context.cc
+++ b/src/crypto/crypto_context.cc
@@ -34,7 +34,9 @@ using ncrypto::BIOPointer;
using ncrypto::ClearErrorOnReturn;
using ncrypto::CryptoErrorList;
using ncrypto::DHPointer;
+#ifndef OPENSSL_NO_ENGINE
using ncrypto::EnginePointer;
+#endif // !OPENSSL_NO_ENGINE
using ncrypto::EVPKeyPointer;
using ncrypto::MarkPopErrorOnReturn;
using ncrypto::SSLPointer;
diff --git a/src/crypto/crypto_util.cc b/src/crypto/crypto_util.cc
index 1234567..abcdef0 100644
--- a/src/crypto/crypto_util.cc
+++ b/src/crypto/crypto_util.cc
@@ -30,7 +30,9 @@
using ncrypto::BIOPointer;
using ncrypto::CryptoErrorList;
+#ifndef OPENSSL_NO_ENGINE
using ncrypto::EnginePointer;
+#endif // !OPENSSL_NO_ENGINE
using ncrypto::EVPKeyCtxPointer;
using v8::ArrayBuffer;
using v8::BackingStore;
using v8::BigInt;

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

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

File diff suppressed because it is too large Load diff

View file

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

View file

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

View file

@ -0,0 +1,567 @@
From 7ae60470cdb0bea4548a0f5e8271b359f9450c79 Mon Sep 17 00:00:00 2001
From: Jeffrey Kardatzke <jkardatzke@google.com>
Date: Fri, 5 Feb 2021 03:33:58 +0000
Subject: [PATCH] vaapi: Update for libva forwards compatibility
There was a downstream patch applied for protected content for libva.
This patch is now upstreamed, but is not compatible with the downstream
version. This change will allow us to update libva in ChromeOS to an
intermediate version that'll be compatible with both downstream and
upstream. Then we can shift Chrome to the upstream API, and then remove
the downstream compatibility layer from ChromeOS after that and be on
upstream.
BUG=b:174951211
TEST=Chrome builds, protected content plays back
Change-Id: Id06b21daf19a54b340236b354b5f4a828e2362de
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2672690
Reviewed-by: Andres Calderon Jaramillo <andrescj@chromium.org>
Reviewed-by: J Kardatzke <jkardatzke@chromium.org>
Commit-Queue: J Kardatzke <jkardatzke@chromium.org>
Cr-Commit-Position: refs/heads/master@{#850949}
---
.../h264_vaapi_video_decoder_delegate.cc | 7 +
.../vaapi/h265_vaapi_video_decoder_delegate.h | 7 +
media/gpu/vaapi/va_prot.sigs | 1 -
media/gpu/vaapi/vaapi_utils.h | 7 +
.../gpu/vaapi/vaapi_video_decoder_delegate.cc | 11 +-
.../gpu/vaapi/vaapi_video_decoder_delegate.h | 7 +
media/gpu/vaapi/vaapi_wrapper.cc | 30 +--
media/gpu/vaapi/vaapi_wrapper.h | 7 +
.../va_protected_content.h | 225 ++----------------
tools/metrics/histograms/enums.xml | 2 +-
10 files changed, 75 insertions(+), 229 deletions(-)
diff --git a/media/gpu/vaapi/h264_vaapi_video_decoder_delegate.cc b/media/gpu/vaapi/h264_vaapi_video_decoder_delegate.cc
index 6e82506082ede..22fa594610540 100644
--- a/media/gpu/vaapi/h264_vaapi_video_decoder_delegate.cc
+++ b/media/gpu/vaapi/h264_vaapi_video_decoder_delegate.cc
@@ -4,6 +4,13 @@
#include "media/gpu/vaapi/h264_vaapi_video_decoder_delegate.h"
+// TODO(jkardatzke): Remove this once the transition to the new upstream
+// protected content API is complete. This is used to bridge a transition
+// between the libva pull request we used, and what actually landed upstream.
+#ifndef LEGACY_UPSTREAM_PROTECTED_LIBVA
+#define LEGACY_UPSTREAM_PROTECTED_LIBVA
+#endif
+
#include <va/va.h>
#include "base/memory/aligned_memory.h"
diff --git a/media/gpu/vaapi/h265_vaapi_video_decoder_delegate.h b/media/gpu/vaapi/h265_vaapi_video_decoder_delegate.h
index d152c3df8a90a..986c2b530076e 100644
--- a/media/gpu/vaapi/h265_vaapi_video_decoder_delegate.h
+++ b/media/gpu/vaapi/h265_vaapi_video_decoder_delegate.h
@@ -5,6 +5,13 @@
#ifndef MEDIA_GPU_VAAPI_H265_VAAPI_VIDEO_DECODER_DELEGATE_H_
#define MEDIA_GPU_VAAPI_H265_VAAPI_VIDEO_DECODER_DELEGATE_H_
+// TODO(jkardatzke): Remove this once the transition to the new upstream
+// protected content API is complete. This is used to bridge a transition
+// between the libva pull request we used, and what actually landed upstream.
+#ifndef LEGACY_UPSTREAM_PROTECTED_LIBVA
+#define LEGACY_UPSTREAM_PROTECTED_LIBVA
+#endif
+
#include <va/va.h>
#include "base/memory/scoped_refptr.h"
diff --git a/media/gpu/vaapi/va_prot.sigs b/media/gpu/vaapi/va_prot.sigs
index 1ffcd61778d11..dd13dafef1add 100644
--- a/media/gpu/vaapi/va_prot.sigs
+++ b/media/gpu/vaapi/va_prot.sigs
@@ -9,5 +9,4 @@ VAStatus vaCreateProtectedSession(VADisplay dpy, VAConfigID config_id, VAProtect
VAStatus vaDestroyProtectedSession(VADisplay dpy, VAProtectedSessionID protected_session);
VAStatus vaAttachProtectedSession(VADisplay dpy, VAContextID reserved, VAProtectedSessionID protected_session);
VAStatus vaDetachProtectedSession(VADisplay dpy, VAContextID reserved);
-VAStatus vaProtectedSessionHwUpdate(VADisplay dpy, VAProtectedSessionID protected_session, VABufferID buf_id);
VAStatus vaProtectedSessionExecute(VADisplay dpy, VAProtectedSessionID protected_session, VABufferID buf_id);
\ No newline at end of file
diff --git a/media/gpu/vaapi/vaapi_utils.h b/media/gpu/vaapi/vaapi_utils.h
index 9bcee23ce96d1..fd42ad2a148e3 100644
--- a/media/gpu/vaapi/vaapi_utils.h
+++ b/media/gpu/vaapi/vaapi_utils.h
@@ -5,6 +5,13 @@
#ifndef MEDIA_GPU_VAAPI_VAAPI_UTILS_H_
#define MEDIA_GPU_VAAPI_VAAPI_UTILS_H_
+// TODO(jkardatzke): Remove this once the transition to the new upstream
+// protected content API is complete. This is used to bridge a transition
+// between the libva pull request we used, and what actually landed upstream.
+#ifndef LEGACY_UPSTREAM_PROTECTED_LIBVA
+#define LEGACY_UPSTREAM_PROTECTED_LIBVA
+#endif
+
#include <va/va.h>
#include "base/callback_forward.h"
diff --git a/media/gpu/vaapi/vaapi_video_decoder_delegate.cc b/media/gpu/vaapi/vaapi_video_decoder_delegate.cc
index 07b7b3ce03f1b..a0a8ea67bd8c6 100644
--- a/media/gpu/vaapi/vaapi_video_decoder_delegate.cc
+++ b/media/gpu/vaapi/vaapi_video_decoder_delegate.cc
@@ -133,11 +133,13 @@ VaapiVideoDecoderDelegate::SetupDecryptDecode(
DCHECK_EQ(protected_session_state_, ProtectedSessionState::kCreated);
if (encryption_scheme_ == EncryptionScheme::kCenc) {
- crypto_params->encryption_type =
- full_sample ? VA_ENCRYPTION_TYPE_CENC_CTR : VA_ENCRYPTION_TYPE_CTR_128;
+ crypto_params->encryption_type = full_sample
+ ? VA_ENCRYPTION_TYPE_FULLSAMPLE_CTR
+ : VA_ENCRYPTION_TYPE_SUBSAMPLE_CTR;
} else {
- crypto_params->encryption_type =
- full_sample ? VA_ENCRYPTION_TYPE_CENC_CBC : VA_ENCRYPTION_TYPE_CBC;
+ crypto_params->encryption_type = full_sample
+ ? VA_ENCRYPTION_TYPE_FULLSAMPLE_CBC
+ : VA_ENCRYPTION_TYPE_SUBSAMPLE_CBC;
}
// For multi-slice we may already have segment information in here, so
@@ -224,6 +226,7 @@ VaapiVideoDecoderDelegate::SetupDecryptDecode(
memcpy(crypto_params->wrapped_decrypt_blob,
hw_key_data_map_[decrypt_config_->key_id()].data(),
DecryptConfig::kDecryptionKeySize);
+ crypto_params->key_blob_size = DecryptConfig::kDecryptionKeySize;
crypto_params->segment_info = &segments->front();
#else // if BUILDFLAG(IS_CHROMEOS_ASH)
protected_session_state_ = ProtectedSessionState::kFailed;
diff --git a/media/gpu/vaapi/vaapi_video_decoder_delegate.h b/media/gpu/vaapi/vaapi_video_decoder_delegate.h
index 1e222a41c543c..aeb48a75bd2c9 100644
--- a/media/gpu/vaapi/vaapi_video_decoder_delegate.h
+++ b/media/gpu/vaapi/vaapi_video_decoder_delegate.h
@@ -5,6 +5,13 @@
#ifndef MEDIA_GPU_VAAPI_VAAPI_VIDEO_DECODER_DELEGATE_H_
#define MEDIA_GPU_VAAPI_VAAPI_VIDEO_DECODER_DELEGATE_H_
+// TODO(jkardatzke): Remove this once the transition to the new upstream
+// protected content API is complete. This is used to bridge a transition
+// between the libva pull request we used, and what actually landed upstream.
+#ifndef LEGACY_UPSTREAM_PROTECTED_LIBVA
+#define LEGACY_UPSTREAM_PROTECTED_LIBVA
+#endif
+
#include <map>
#include <memory>
#include <string>
diff --git a/media/gpu/vaapi/vaapi_wrapper.cc b/media/gpu/vaapi/vaapi_wrapper.cc
index 696ffaf00d866..cd2ee37998fbd 100644
--- a/media/gpu/vaapi/vaapi_wrapper.cc
+++ b/media/gpu/vaapi/vaapi_wrapper.cc
@@ -133,7 +133,7 @@ enum class VaapiFunctions {
kVADestroyProtectedSession = 26,
kVAAttachProtectedSession = 27,
kVADetachProtectedSession = 28,
- kVAProtectedSessionHwUpdate = 29,
+ kVAProtectedSessionHwUpdate_Deprecated = 29,
kVAProtectedSessionExecute = 30,
// Anything else is captured in this last entry.
kOtherVAFunction = 31,
@@ -176,7 +176,7 @@ constexpr std::array<const char*,
"vaDestroyProtectedSession",
"vaAttachProtectedSession",
"vaDetachProtectedSession",
- "vaProtectedSessionHwUpdate",
+ "vaProtectedSessionHwUpdate (Deprecated)",
"vaProtectedSessionExecute",
"Other VA function"};
@@ -811,7 +811,7 @@ bool GetRequiredAttribs(const base::Lock* va_lock,
#if BUILDFLAG(IS_CHROMEOS_ASH)
if (mode == VaapiWrapper::kDecodeProtected && profile != VAProfileProtected) {
required_attribs->push_back(
- {VAConfigAttribEncryption, VA_ENCRYPTION_TYPE_CTR_128});
+ {VAConfigAttribEncryption, VA_ENCRYPTION_TYPE_SUBSAMPLE_CTR});
required_attribs->push_back(
{VAConfigAttribDecProcessing, VA_DEC_PROCESSING});
}
@@ -1852,13 +1852,14 @@ bool VaapiWrapper::CreateProtectedSession(
// We have to hold the VABuffer outside of the lock because its destructor
// will acquire the lock when it goes out of scope. We also must do this after
// we create the protected session.
- VAProtectedSessionHwUpdateBuffer hw_update_buf;
+ VAProtectedSessionExecuteBuffer hw_update_buf;
std::unique_ptr<ScopedVABuffer> hw_update = CreateVABuffer(
- VAProtectedSessionHwUpdateBufferType, sizeof(hw_update_buf));
+ VAProtectedSessionExecuteBufferType, sizeof(hw_update_buf));
{
base::AutoLock auto_lock(*va_lock_);
constexpr size_t kHwIdentifierMaxSize = 64;
memset(&hw_update_buf, 0, sizeof(hw_update_buf));
+ hw_update_buf.function_id = VA_TEE_EXEC_TEE_FUNCID_HW_UPDATE;
hw_update_buf.input.data_size = hw_config.size();
hw_update_buf.input.data =
static_cast<void*>(const_cast<uint8_t*>(hw_config.data()));
@@ -1868,22 +1869,22 @@ bool VaapiWrapper::CreateProtectedSession(
if (!MapAndCopy_Locked(
hw_update->id(),
{hw_update->type(), hw_update->size(), &hw_update_buf})) {
- LOG(ERROR) << "Failed mapping HwUpdate buf";
+ LOG(ERROR) << "Failed mapping Execute buf";
return false;
}
- VAStatus va_res = vaProtectedSessionHwUpdate(
+ VAStatus va_res = vaProtectedSessionExecute(
va_display_, va_protected_session_id_, hw_update->id());
- VA_SUCCESS_OR_RETURN(va_res, VaapiFunctions::kVAProtectedSessionHwUpdate,
+ VA_SUCCESS_OR_RETURN(va_res, VaapiFunctions::kVAProtectedSessionExecute,
false);
ScopedVABufferMapping mapping(va_lock_, va_display_, hw_update->id());
if (!mapping.IsValid()) {
- LOG(ERROR) << "Failed mapping returned HwUpdate buf";
+ LOG(ERROR) << "Failed mapping returned Execute buf";
return false;
}
auto* hw_update_buf_out =
- reinterpret_cast<VAProtectedSessionHwUpdateBuffer*>(mapping.data());
+ reinterpret_cast<VAProtectedSessionExecuteBuffer*>(mapping.data());
if (!hw_update_buf_out->output.data_size) {
LOG(ERROR) << "Received empty HW identifier";
return false;
@@ -1964,10 +1965,9 @@ bool VaapiWrapper::IsProtectedSessionDead() {
if (va_protected_session_id_ == VA_INVALID_ID)
return false;
- constexpr uint32_t kVaTeeExecGpuFuncIdIsSessionAlive = 0x40000103;
uint8_t alive;
VAProtectedSessionExecuteBuffer tee_exec_buf = {};
- tee_exec_buf.function_id = kVaTeeExecGpuFuncIdIsSessionAlive;
+ tee_exec_buf.function_id = VA_TEE_EXEC_TEE_FUNCID_IS_SESSION_ALIVE;
tee_exec_buf.input.data_size = 0;
tee_exec_buf.input.data = nullptr;
tee_exec_buf.output.data_size = sizeof(alive);
@@ -2518,7 +2518,7 @@ std::unique_ptr<ScopedVABuffer> VaapiWrapper::CreateVABuffer(VABufferType type,
base::AutoLock auto_lock(*va_lock_);
TRACE_EVENT0("media,gpu", "VaapiWrapper::CreateVABufferLocked");
#if BUILDFLAG(IS_CHROMEOS_ASH)
- VAContextID context_id = type == VAProtectedSessionHwUpdateBufferType
+ VAContextID context_id = type == VAProtectedSessionExecuteBufferType
? va_protected_session_id_
: va_context_id_;
#else
@@ -2807,8 +2807,8 @@ bool VaapiWrapper::Initialize(CodecMode mode,
for (auto& attrib : required_attribs) {
if (attrib.type == VAConfigAttribEncryption) {
attrib.value = (encryption_scheme == EncryptionScheme::kCbcs)
- ? VA_ENCRYPTION_TYPE_CBC
- : VA_ENCRYPTION_TYPE_CTR_128;
+ ? VA_ENCRYPTION_TYPE_SUBSAMPLE_CBC
+ : VA_ENCRYPTION_TYPE_SUBSAMPLE_CTR;
}
}
}
diff --git a/media/gpu/vaapi/vaapi_wrapper.h b/media/gpu/vaapi/vaapi_wrapper.h
index 29b6864998240..f58723a0e852e 100644
--- a/media/gpu/vaapi/vaapi_wrapper.h
+++ b/media/gpu/vaapi/vaapi_wrapper.h
@@ -10,6 +10,13 @@
#ifndef MEDIA_GPU_VAAPI_VAAPI_WRAPPER_H_
#define MEDIA_GPU_VAAPI_VAAPI_WRAPPER_H_
+// TODO(jkardatzke): Remove this once the transition to the new upstream
+// protected content API is complete. This is used to bridge a transition
+// between the libva pull request we used, and what actually landed upstream.
+#ifndef LEGACY_UPSTREAM_PROTECTED_LIBVA
+#define LEGACY_UPSTREAM_PROTECTED_LIBVA
+#endif
+
#include <stddef.h>
#include <stdint.h>
#include <va/va.h>
diff --git a/third_party/libva_protected_content/va_protected_content.h b/third_party/libva_protected_content/va_protected_content.h
index dfea3ce94a285..c14a77da41389 100644
--- a/third_party/libva_protected_content/va_protected_content.h
+++ b/third_party/libva_protected_content/va_protected_content.h
@@ -46,6 +46,7 @@ extern "C" {
* @{
*/
+#ifdef LEGACY_UPSTREAM_PROTECTED_LIBVA
/**
*
* A protected content function for processing cipher protected content.
@@ -97,16 +98,19 @@ extern "C" {
/** \brief Encryption parameters buffer for content protection usage */
#define VAEncryptionParameterBufferType ((VABufferType)0x20001)
+#endif // LEGACY_UPSTREAM_PROTECTED_LIBVA
+
/**\brief CENC status paramter, used for vendor content protection only.
* The buffer corresponds to #VACencStatusParameters for va/cp*/
#define VACencStatusParameterBufferType ((VABufferType)0x20002)
+#ifdef LEGACY_UPSTREAM_PROTECTED_LIBVA
/** attribute values for VAConfigAttribEncryption */
#define VA_ENCRYPTION_TYPE_NONE 0x00000000
-#define VA_ENCRYPTION_TYPE_CENC_CBC 0x00000002
-#define VA_ENCRYPTION_TYPE_CENC_CTR 0x00000008
-#define VA_ENCRYPTION_TYPE_CTR_128 0x00000010
-#define VA_ENCRYPTION_TYPE_CBC 0x00000020
+#define VA_ENCRYPTION_TYPE_FULLSAMPLE_CBC 0x00000002
+#define VA_ENCRYPTION_TYPE_FULLSAMPLE_CTR 0x00000008
+#define VA_ENCRYPTION_TYPE_SUBSAMPLE_CTR 0x00000010
+#define VA_ENCRYPTION_TYPE_SUBSAMPLE_CBC 0x00000020
/** attribute values for VAConfigAttribContentProtectionSessionMode */
#define VA_PC_SESSION_MODE_NONE 0x00000000
@@ -132,18 +136,11 @@ extern "C" {
#define VA_PC_SAMPLE_TYPE_FULLSAMPLE 0x00000001
#define VA_PC_SAMPLE_TYPE_SUBSAMPLE 0x00000002
-/** \brief TeeExec Function Codes. */
-typedef enum _VA_TEE_EXEC_FUNCTION_ID {
- VA_TEE_EXEC_TEE_FUNCID_PASS_THROUGH_NONE = 0x0,
-
- // 0x40000000~0x400000FFF reserved for TEE Exec GPU function
- VA_TEE_EXEC_GPU_FUNCID_ENCRYPTION_BLT = 0x40000000,
- VA_TEE_EXEC_GPU_FUNCID_DECRYPTION_BLT = 0x40000001,
+#endif // LEGACY_UPSTREAM_PROTECTED_LIBVA
- // 0x40001000~0x400001FFF reserved for TEE Exec TEE function
- VA_TEE_EXEC_TEE_FUNCID_PASS_THROUGH = 0x40001000,
-
-} VA_TEE_EXEC_FUNCTION_ID;
+/** \brief TeeExec Function Codes. */
+#define VA_TEE_EXEC_TEE_FUNCID_HW_UPDATE 0x40000002
+#define VA_TEE_EXEC_TEE_FUNCID_IS_SESSION_ALIVE 0x40000103
/** \brief values for the encryption return status. */
typedef enum {
@@ -159,6 +156,7 @@ typedef enum {
VA_ENCRYPTION_STATUS_UNSUPPORT
} VAEncryptionStatus;
+#ifdef LEGACY_UPSTREAM_PROTECTED_LIBVA
/** \brief structure for encrypted segment info. */
typedef struct _VAEncryptionSegmentInfo {
/** \brief The offset relative to the start of the bitstream input in
@@ -212,23 +210,12 @@ typedef struct _VAEncryptionParameters {
* encrypted, i.e. the CENC or CBC1 scheme is being used.
*/
uint32_t blocks_stripe_clear;
+ /* Forwards compatibility */
+ uint32_t key_blob_size;
/** \brief Reserved bytes for future use, must be zero */
- uint32_t va_reserved[VA_PADDING_MEDIUM];
+ uint32_t va_reserved[VA_PADDING_MEDIUM - sizeof(uint32_t)];
} VAEncryptionParameters;
-
-/** \brief structure for VA_TEE_EXEC_GPU_FUNCID_ENCRYPTION_BLT */
-typedef struct _VA_PROTECTED_BLT_PARAMS {
- uint8_t* src_resource; // The source resource which contains the clear data.
- uint8_t*
- dst_resource; // The Destination resource. This resource will contain the
- // encrypted data. It should be allocated by the caller.
- uint32_t width; // The width of the surface in Bytes.
- uint32_t height; // The height of the surface in Bytes (pay attention that
- // for NV12 the height(Bytes) = 1.5*height(Pixel)).
- VAEncryptionParameters*
- enc_params; // The encryption parameters as defined by application
- void* reserved_extension; // The reserved extension for future BLT operations
-} VA_PROTECTED_BLT_PARAMS;
+#endif // LEGACY_UPSTREAM_PROTECTED_LIBVA
/** \brief cenc status parameters, corresponding to
* #VACencStatusParameterBufferType*/
@@ -311,184 +298,6 @@ typedef struct _VACencSliceParameterBufferH264 {
uint32_t va_reserved[VA_PADDING_MEDIUM];
} VACencSliceParameterBufferH264;
-/**
- * \brief Slice parameter for HEVC cenc decode in main & main 10 profiles.
- *
- * This structure holds information for \c
- * slice_segment_header() and nal_unit_header() of the slice as
- * defined by the HEVC specification.
- *
- */
-typedef struct _VACencSliceParameterBufferHEVC {
- /** \brief Same as the HEVC bitstream syntax element. */
- uint8_t nal_unit_type;
- /** \brief Corresponds to the HEVC bitstream syntax element.
- * Same as nuh_temporal_id_plus1 - 1*/
- uint8_t nuh_temporal_id;
- /** \brief Slice type.
- * Corresponds to HEVC syntax element of the same name. */
- uint8_t slice_type;
- /** \brief Same as the HEVC bitstream syntax element. */
- uint16_t slice_pic_order_cnt_lsb;
- /** \brief Indicates EOS_NUT or EOB_NUT is detected in picture. */
- uint16_t has_eos_or_eob;
-
- union {
- struct {
- /** \brief Same as the HEVC bitstream syntax element */
- uint32_t no_output_of_prior_pics_flag : 1;
- /** \brief Same as the HEVC bitstream syntax element */
- uint32_t pic_output_flag : 1;
- /** \brief Same as the HEVC bitstream syntax element */
- uint32_t colour_plane_id : 2;
- /** \brief Reserved for future use, must be zero */
- uint32_t reserved : 19;
- } bits;
- uint32_t value;
- } slice_fields;
-
- /** \brief Parameters for driver reference frame set */
- /**@{*/
-
- /** \brief number of entries as current before in short-term rps
- * Corresponds to NumPocStCurrBefore as the HEVC specification. */
- uint8_t num_of_curr_before;
- /** \brief number of entries as current after in short-term rps
- * Corresponds to NumPocStCurrAfter as the HEVC specification. */
- uint8_t num_of_curr_after;
- /** \brief number of entries as current total in short-term rps*/
- uint8_t num_of_curr_total;
- /** \brief number of entries as foll in short-term rps
- * Corresponds to NumPocStFoll as the HEVC specification.*/
- uint8_t num_of_foll_st;
- /** \brief number of entries as current in long-term rps
- * Corresponds to NumPocLtCurr as the HEVC specification. */
- uint8_t num_of_curr_lt;
- /** \brief number of entries as foll in long-term rps
- * Corresponds to NumPocLtFoll as the HEVC specification.*/
- uint8_t num_of_foll_lt;
- /** \brief delta poc as short-term current before
- * Corresponds to PocStCurrBefore as the HEVC specification. */
- int32_t delta_poc_curr_before[8];
- /** \brief delta poc as short-term current after
- * Corresponds to PocStCurrAfter, as the HEVC specification.*/
- int32_t delta_poc_curr_after[8];
- /** \brief delta poc as short-term current total */
- int32_t delta_poc_curr_total[8];
- /** \brief delta poc as short-term foll
- * Corresponds to PocStFoll as the HEVC specification.*/
- int32_t delta_poc_foll_st[16];
- /** \brief delta poc as long-term current
- * Corresponds to PocLtCurr as the HEVC specification.*/
- int32_t delta_poc_curr_lt[8];
- /** \brief delta poc as long-term foll
- * Corresponds to PocLtFoll, as the HEVC specification.*/
- int32_t delta_poc_foll_lt[16];
- /** \brief delta poc msb present flag
- * Same as the HEVC bitstream syntax element. */
- uint8_t delta_poc_msb_present_flag[16];
- /** \brief long-term reference RPS is used for reference by current picture*/
- uint8_t is_lt_curr_total[8];
- /** \brief index of reference picture list. [0] is for P and B slice, [1] is
- * for B slice*/
- uint8_t ref_list_idx[2][16];
- /**@}*/
- /** \brief Pointer to the next #VACencSliceParameterBufferHEVC element,
- * or \c nullptr if there is none.*/
- void* next;
-
- /** \brief Reserved bytes for future use, must be zero */
- uint32_t va_reserved[VA_PADDING_MEDIUM];
-} VACencSliceParameterBufferHEVC;
-
-/**
- * \brief uncompressed header for VP9 cenc decode
- *
- * This structure holds information for \c
- * uncompressed_header() as defined by the VP9 specification.
- *
- */
-typedef struct _VACencSliceParameterBufferVP9 {
- union {
- struct {
- /** \brief Same as the VP9 bitstream syntax element. */
- uint32_t profile : 2;
- /** \brief Same as the VP9 bitstream syntax element. */
- uint32_t show_existing_frame_flag : 1;
- /** \brief Same as the VP9 bitstream syntax element. */
- uint32_t frame_to_show_map_idx : 3;
- /** \brief Same as the VP9 bitstream syntax element. */
- uint32_t frame_type : 1;
- /** \brief Same as the VP9 bitstream syntax element. */
- uint32_t show_frame : 1;
- /** \brief Same as the VP9 bitstream syntax element. */
- uint32_t error_resilient_mode : 1;
- /** \brief Same as the VP9 bitstream syntax element. */
- uint32_t intra_only : 1;
- /** \brief Same as the VP9 bitstream syntax element. */
- uint32_t ten_or_twelve_bit : 1;
- /** \brief Same as the VP9 bitstream syntax element. */
- uint32_t color_space : 3;
- /** \brief Same as the VP9 bitstream syntax element. */
- uint32_t color_range : 1;
- /** \brief Same as the VP9 bitstream syntax element. */
- uint32_t subsampling_x : 1;
- /** \brief Same as the VP9 bitstream syntax element. */
- uint32_t subsampling_y : 1;
- /** \brief Corresponds to ref_frame_idx[0]
- * as the VP9 specification */
- uint32_t ref_frame_idx0 : 3;
- /** \brief Corresponds to ref_frame_sign_bias[LAST_FRAME]
- * as the VP9 specification */
- uint32_t ref_frame_sign_bias0 : 1;
- /** \brief Corresponds to ref_frame_idx[1]
- * as the VP9 specification */
- uint32_t ref_frame_idx1 : 3;
- /** \brief Corresponds to ref_frame_sign_bias[GOLDEN_FRAME]
- * as the VP9 specification */
- uint32_t ref_frame_sign_bias1 : 1;
- /** \brief Corresponds to ref_frame_idx[2]
- * as the VP9 specification */
- uint32_t ref_frame_idx2 : 3;
- /** \brief Corresponds to ref_frame_sign_bias[ALTREF_FRAME]
- * as the VP9 specification */
- uint32_t ref_frame_sign_bias2 : 1;
- /** \brief Same as the VP9 bitstream syntax element. */
- uint32_t frame_parallel_decoding_mode : 1;
- /** \brief Same as the VP9 bitstream syntax element. */
- uint32_t render_and_frame_size_different : 1;
- /** \brief Reserved for future use, must be zero */
- uint32_t reserved : 1;
- } bits;
- uint32_t value;
- } header_fields;
- /** \brief Same as the VP9 bitstream syntax element. */
- uint16_t frame_width_minus1;
- /** \brief Same as the VP9 bitstream syntax element. */
- uint16_t frame_height_minus1;
- /** \brief Same as the VP9 bitstream syntax element. */
- uint16_t render_width_minus1;
- /** \brief Same as the VP9 bitstream syntax element. */
- uint16_t render_height_minus1;
- /** \brief Same as the VP9 bitstream syntax element. */
- uint8_t refresh_frame_flags;
- /** \brief Parameters for super frame*/
- /**@{*/
- /** \brief Superframe index, from 0 to frames_in_superframe_minus_1.
- * as the VP9 specification */
- uint8_t sf_index;
- /** \brief Superframe size, corresponds to frame_sizes[ sf_index ]
- * as the VP9 specification */
- uint32_t sf_frame_size;
- /**@}*/
- /** \brief Pointer to the next #VACencSliceParameterBufferVP9 element,
- * or \c nullptr if there is none.*/
- void* next;
-
- /** \brief Reserved bytes for future use, must be zero */
- uint32_t va_reserved[VA_PADDING_MEDIUM];
-} VACencSliceParameterBufferVP9;
-
/** \brief Cenc Slice Buffer Type*/
typedef enum {
/** \brief Parsed slice parameters \c VACencSliceParameterBuffer* */
diff --git a/tools/metrics/histograms/enums.xml b/tools/metrics/histograms/enums.xml
index e88db8a3f1201..c1bd0d7db925f 100644
--- a/tools/metrics/histograms/enums.xml
+++ b/tools/metrics/histograms/enums.xml
@@ -77050,7 +77050,7 @@ Full version information for the fingerprint enum values:
<int value="26" label="vaDestroyProtectedSession()"/>
<int value="27" label="vaAttachProtectedSession()"/>
<int value="28" label="vaDetachProtectedSession()"/>
- <int value="29" label="vaProtectedSessionHwUpdate()"/>
+ <int value="29" label="vaProtectedSessionHwUpdate() (deprecated)"/>
<int value="30" label="kVAProtectedSessionExecute()"/>
<int value="31" label="Other VA functions"/>
</enum>

BIN
GardinerModBug.ttf Normal file

Binary file not shown.

BIN
GardinerModCat.ttf Normal file

Binary file not shown.

View file

@ -1,13 +0,0 @@
Index: chromium-144.0.7559.59/base/compiler_specific.h
===================================================================
--- chromium-144.0.7559.59.orig/base/compiler_specific.h
+++ chromium-144.0.7559.59/base/compiler_specific.h
@@ -198,7 +198,7 @@
// MUSTTAIL return Func1(d + 1); // `Func1()` will be tail-called.
// }
// ```
-#if __has_cpp_attribute(clang::musttail)
+#if __has_cpp_attribute(clang::musttail) && !defined(__powerpc64__)
#define MUSTTAIL [[clang::musttail]]
#else
#define MUSTTAIL

View file

@ -1,13 +0,0 @@
Index: chromium-144.0.7559.59/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_base/compiler_specific.h
===================================================================
--- chromium-144.0.7559.59.orig/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_base/compiler_specific.h
+++ chromium-144.0.7559.59/base/allocator/partition_allocator/src/partition_alloc/partition_alloc_base/compiler_specific.h
@@ -139,7 +139,7 @@
// PA_MUSTTAIL return Func1(d + 1); // `Func1()` will be tail-called.
// }
// ```
-#if PA_HAS_CPP_ATTRIBUTE(clang::musttail)
+#if PA_HAS_CPP_ATTRIBUTE(clang::musttail) && !defined(__powerpc64__)
#define PA_MUSTTAIL [[clang::musttail]]
#else
#define PA_MUSTTAIL

View file

@ -1,13 +0,0 @@
Index: chromium-130.0.6723.44/third_party/skia/src/core/SkRasterPipeline.h
===================================================================
--- chromium-130.0.6723.44.orig/third_party/skia/src/core/SkRasterPipeline.h
+++ chromium-130.0.6723.44/third_party/skia/src/core/SkRasterPipeline.h
@@ -27,7 +27,7 @@ struct SkImageInfo;
struct skcms_TransferFunction;
#if __has_cpp_attribute(clang::musttail) && !defined(__EMSCRIPTEN__) && !defined(SK_CPU_ARM32) && \
- !defined(SK_CPU_LOONGARCH) && !(defined(_WIN32) && defined(SK_BUILD_FOR_ANDROID_FRAMEWORK))
+ !defined(SK_CPU_LOONGARCH) && !(defined(_WIN32) && defined(SK_BUILD_FOR_ANDROID_FRAMEWORK)) && !defined(__powerpc64__)
// [[clang::musttail]] is disabled for the Android version of Skia running on Windows as it
// causes crashes (This is probably related to http://crbug.com/1505442).
#define SK_HAS_MUSTTAIL 1

View file

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

View file

@ -1,9 +0,0 @@
- Widevine is not a free library and cannot be shipped in fedora.
You have to get it from Google first and install it under
/usr/lib64/chromium-browser or /opt/google/chrome if you want
Chromium to use widevine.
- Chromium uses the system ffmpeg-free library which is included in
fedora >= 36 and centos-stream 9. This library contains free video
codecs. If you want Chromium to use non-free video codecs, you need
to install libavcodec-freeworld from rpmfusion-free.

View file

@ -1,23 +0,0 @@
Index: chromium-144.0.7559.59/third_party/webrtc/rtc_base/system/arch.h
===================================================================
--- chromium-144.0.7559.59.orig/third_party/webrtc/rtc_base/system/arch.h
+++ chromium-144.0.7559.59/third_party/webrtc/rtc_base/system/arch.h
@@ -46,6 +46,18 @@
#endif
#if defined(__MIPSEL__)
#define WEBRTC_ARCH_LITTLE_ENDIAN
+#elif defined(__PPC__)
+#define WEBRTC_ARCH_PPC_FAMILY
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
+#define WEBRTC_ARCH_LITTLE_ENDIAN
+#else
+#define WEBRTC_ARCH_BIG_ENDIAN
+#endif
+#if defined(__LP64__)
+#define WEBRTC_ARCH_64_BITS
+#else
+#define WEBRTC_ARCH_32_BITS
+#endif
#else
#define WEBRTC_ARCH_BIG_ENDIAN
#endif

View file

@ -1,13 +0,0 @@
Index: chromium-144.0.7559.59/base/system/sys_info.cc
===================================================================
--- chromium-144.0.7559.59.orig/base/system/sys_info.cc
+++ chromium-144.0.7559.59/base/system/sys_info.cc
@@ -263,6 +263,8 @@ std::string SysInfo::ProcessCPUArchitect
return "ARM";
#elif defined(ARCH_CPU_ARM64)
return "ARM_64";
+#elif defined(ARCH_CPU_PPC64)
+ return "PPC_64";
#elif defined(ARCH_CPU_RISCV64)
return "RISCV_64";
#else

View file

@ -1,37 +0,0 @@
Index: chromium-144.0.7559.59/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc
===================================================================
--- chromium-144.0.7559.59.orig/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc
+++ chromium-144.0.7559.59/chrome/browser/extensions/api/runtime/chrome_runtime_api_delegate.cc
@@ -383,6 +383,8 @@ bool ChromeRuntimeAPIDelegate::GetPlatfo
info->arch = extensions::api::runtime::PlatformArch::kMips64;
} else if (arch == "riscv64") {
info->arch = extensions::api::runtime::PlatformArch::kRiscv64;
+ } else if (arch == "ppc64") {
+ info->arch = extensions::api::runtime::PlatformArch::kPpc64;
} else {
NOTREACHED();
}
Index: chromium-144.0.7559.59/extensions/common/api/runtime.json
===================================================================
--- chromium-144.0.7559.59.orig/extensions/common/api/runtime.json
+++ chromium-144.0.7559.59/extensions/common/api/runtime.json
@@ -98,7 +98,8 @@
{"name": "x86-64", "description": "Specifies the processer architecture as x86-64."},
{"name": "mips", "description": "Specifies the processer architecture as mips."},
{"name": "mips64", "description": "Specifies the processer architecture as mips64."},
- {"name": "riscv64", "description": "Specifies the processer architecture as riscv64."}
+ {"name": "riscv64", "description": "Specifies the processer architecture as riscv64."},
+ {"name": "ppc64", "description": "Specifies the processer architecture as ppc64."}
],
"description": "The machine's processor architecture."
},
@@ -111,7 +112,8 @@
{"name": "x86-32", "description": "Specifies the native client architecture as x86-32."},
{"name": "x86-64", "description": "Specifies the native client architecture as x86-64."},
{"name": "mips", "description": "Specifies the native client architecture as mips."},
- {"name": "mips64", "description": "Specifies the native client architecture as mips64."}
+ {"name": "mips64", "description": "Specifies the native client architecture as mips64."},
+ {"name": "ppc64", "description": "Specifies the native client architecture as ppc64."}
]
},
{

View file

@ -1,14 +0,0 @@
Index: chromium-144.0.7559.59/base/process/launch.h
===================================================================
--- chromium-144.0.7559.59.orig/base/process/launch.h
+++ chromium-144.0.7559.59/base/process/launch.h
@@ -58,6 +58,9 @@ enum TerminationStatus : int;
#if defined(ARCH_CPU_ARM64) || defined(ARCH_CPU_LOONGARCH64)
#define PTHREAD_STACK_MIN_CONST \
(__builtin_constant_p(PTHREAD_STACK_MIN) ? PTHREAD_STACK_MIN : 131072)
+#elif defined(ARCH_CPU_PPC64)
+#define PTHREAD_STACK_MIN_CONST \
+ (__builtin_constant_p(PTHREAD_STACK_MIN) ? PTHREAD_STACK_MIN : 131072)
#else
#define PTHREAD_STACK_MIN_CONST \
(__builtin_constant_p(PTHREAD_STACK_MIN) ? PTHREAD_STACK_MIN : 16384)

View file

@ -0,0 +1,14 @@
[Unit]
Description="Chrome Remote Desktop host daemon"
[Service]
User=%i
Environment=HOME=%h
ExecStart=@@CRD_PATH@@/chrome-remote-desktop --start --foreground
ExecStop=@@CRD_PATH@@/chrome-remote-desktop --stop
ExecReload=@@CRD_PATH@@/chrome-remote-desktop --reload
Restart=always
TimeoutStopSec=10
[Install]
WantedBy=multi-user.target

View file

@ -0,0 +1,92 @@
From d32156fd3773330eca99e9cba5e18db57aaa1a53 Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <stha09@googlemail.com>
Date: Sat, 19 Feb 2022 10:14:24 +0000
Subject: [PATCH] GCC: make GLImplementationParts constructors constexpr
Fix build error in GCC, as the constexpr operator== requires its
invocations to be also constexpr.
---
ui/gl/gl_implementation.cc | 23 -----------------------
ui/gl/gl_implementation.h | 25 +++++++++++++++++++++++--
2 files changed, 23 insertions(+), 25 deletions(-)
diff --git a/ui/gl/gl_implementation.cc b/ui/gl/gl_implementation.cc
index e4e5456..3e4a47c 100644
--- a/ui/gl/gl_implementation.cc
+++ b/ui/gl/gl_implementation.cc
@@ -26,29 +26,6 @@
namespace gl {
-ANGLEImplementation MakeANGLEImplementation(
- const GLImplementation gl_impl,
- const ANGLEImplementation angle_impl) {
- if (gl_impl == kGLImplementationEGLANGLE) {
- if (angle_impl == ANGLEImplementation::kNone) {
- return ANGLEImplementation::kDefault;
- } else {
- return angle_impl;
- }
- } else {
- return ANGLEImplementation::kNone;
- }
-}
-
-GLImplementationParts::GLImplementationParts(
- const ANGLEImplementation angle_impl)
- : gl(kGLImplementationEGLANGLE),
- angle(MakeANGLEImplementation(kGLImplementationEGLANGLE, angle_impl)) {}
-
-GLImplementationParts::GLImplementationParts(const GLImplementation gl_impl)
- : gl(gl_impl),
- angle(MakeANGLEImplementation(gl_impl, ANGLEImplementation::kDefault)) {}
-
bool GLImplementationParts::IsValid() const {
if (angle == ANGLEImplementation::kNone) {
return (gl != kGLImplementationEGLANGLE);
diff --git a/ui/gl/gl_implementation.h b/ui/gl/gl_implementation.h
index 376ed58..a2513ea 100644
--- a/ui/gl/gl_implementation.h
+++ b/ui/gl/gl_implementation.h
@@ -59,8 +59,14 @@ enum class ANGLEImplementation {
};
struct GL_EXPORT GLImplementationParts {
- explicit GLImplementationParts(const ANGLEImplementation angle_impl);
- explicit GLImplementationParts(const GLImplementation gl_impl);
+ constexpr explicit GLImplementationParts(const ANGLEImplementation angle_impl)
+ : gl(kGLImplementationEGLANGLE),
+ angle(MakeANGLEImplementation(kGLImplementationEGLANGLE, angle_impl)) {}
+
+ constexpr explicit GLImplementationParts(const GLImplementation gl_impl)
+ : gl(gl_impl),
+ angle(MakeANGLEImplementation(gl_impl, ANGLEImplementation::kDefault)) {
+ }
GLImplementation gl = kGLImplementationNone;
ANGLEImplementation angle = ANGLEImplementation::kNone;
@@ -80,6 +86,21 @@ struct GL_EXPORT GLImplementationParts {
bool IsValid() const;
bool IsAllowed(const std::vector<GLImplementationParts>& allowed_impls) const;
std::string ToString() const;
+
+ private:
+ constexpr ANGLEImplementation MakeANGLEImplementation(
+ const GLImplementation gl_impl,
+ const ANGLEImplementation angle_impl) {
+ if (gl_impl == kGLImplementationEGLANGLE) {
+ if (angle_impl == ANGLEImplementation::kNone) {
+ return ANGLEImplementation::kDefault;
+ } else {
+ return angle_impl;
+ }
+ } else {
+ return ANGLEImplementation::kNone;
+ }
+ }
};
struct GL_EXPORT GLWindowSystemBindingInfo {
--
2.34.1

View file

@ -0,0 +1,97 @@
From da6e3f6071fdabeb96c0805626418414b4a4cea8 Mon Sep 17 00:00:00 2001
From: Stephan Hartmann <stha09@googlemail.com>
Date: Wed, 9 Feb 2022 17:56:21 +0000
Subject: [PATCH] GCC: make base::InMilliseconds(F,RoundedUp) constexpr
media::DecodeTimestamp uses it in several constexpr methods.
---
base/time/time.cc | 24 ------------------------
base/time/time.h | 30 +++++++++++++++++++++++++++---
2 files changed, 27 insertions(+), 27 deletions(-)
diff --git a/base/time/time.cc b/base/time/time.cc
index 0de273e..e0acda2 100644
--- a/base/time/time.cc
+++ b/base/time/time.cc
@@ -74,30 +74,6 @@ int TimeDelta::InDaysFloored() const {
: std::numeric_limits<int>::max();
}
-double TimeDelta::InMillisecondsF() const {
- if (!is_inf())
- return static_cast<double>(delta_) / Time::kMicrosecondsPerMillisecond;
- return (delta_ < 0) ? -std::numeric_limits<double>::infinity()
- : std::numeric_limits<double>::infinity();
-}
-
-int64_t TimeDelta::InMilliseconds() const {
- if (!is_inf())
- return delta_ / Time::kMicrosecondsPerMillisecond;
- return (delta_ < 0) ? std::numeric_limits<int64_t>::min()
- : std::numeric_limits<int64_t>::max();
-}
-
-int64_t TimeDelta::InMillisecondsRoundedUp() const {
- if (!is_inf()) {
- const int64_t result = delta_ / Time::kMicrosecondsPerMillisecond;
- // Convert |result| from truncating to ceiling.
- return (delta_ > result * Time::kMicrosecondsPerMillisecond) ? (result + 1)
- : result;
- }
- return delta_;
-}
-
double TimeDelta::InMicrosecondsF() const {
if (!is_inf())
return static_cast<double>(delta_);
diff --git a/base/time/time.h b/base/time/time.h
index c027aab..fb1d78d 100644
--- a/base/time/time.h
+++ b/base/time/time.h
@@ -216,9 +216,9 @@ class BASE_EXPORT TimeDelta {
constexpr int InMinutes() const;
constexpr double InSecondsF() const;
constexpr int64_t InSeconds() const;
- double InMillisecondsF() const;
- int64_t InMilliseconds() const;
- int64_t InMillisecondsRoundedUp() const;
+ constexpr double InMillisecondsF() const;
+ constexpr int64_t InMilliseconds() const;
+ constexpr int64_t InMillisecondsRoundedUp() const;
constexpr int64_t InMicroseconds() const { return delta_; }
double InMicrosecondsF() const;
constexpr int64_t InNanoseconds() const;
@@ -889,6 +889,30 @@ constexpr int64_t TimeDelta::InSeconds() const {
return is_inf() ? delta_ : (delta_ / Time::kMicrosecondsPerSecond);
}
+constexpr double TimeDelta::InMillisecondsF() const {
+ if (!is_inf())
+ return static_cast<double>(delta_) / Time::kMicrosecondsPerMillisecond;
+ return (delta_ < 0) ? -std::numeric_limits<double>::infinity()
+ : std::numeric_limits<double>::infinity();
+}
+
+constexpr int64_t TimeDelta::InMilliseconds() const {
+ if (!is_inf())
+ return delta_ / Time::kMicrosecondsPerMillisecond;
+ return (delta_ < 0) ? std::numeric_limits<int64_t>::min()
+ : std::numeric_limits<int64_t>::max();
+}
+
+constexpr int64_t TimeDelta::InMillisecondsRoundedUp() const {
+ if (!is_inf()) {
+ const int64_t result = delta_ / Time::kMicrosecondsPerMillisecond;
+ // Convert |result| from truncating to ceiling.
+ return (delta_ > result * Time::kMicrosecondsPerMillisecond) ? (result + 1)
+ : result;
+ }
+ return delta_;
+}
+
constexpr int64_t TimeDelta::InNanoseconds() const {
return base::ClampMul(delta_, Time::kNanosecondsPerMicrosecond);
}
--
2.34.1

View file

@ -0,0 +1,35 @@
From 364dc0067d1c20c7a2d21277a7ec0c4419d9bc11 Mon Sep 17 00:00:00 2001
From: Jose Dapena Paz <jdapena@igalia.com>
Date: Wed, 23 Feb 2022 12:18:57 +0100
Subject: [PATCH] GCC: explicitely move return value of SCTHashdanceMetadata::ToValue
GCC rejects to do Return Value Optimization in
SCTHashdanceMetadata::ToValue, because the copy constructor is
deleted, and in that scenario RVO is rejected in GCC:
../../services/network/sct_auditing/sct_auditing_reporter.cc: In member function base::Value network::SCTAuditingReporter::SCTHashdanceMetadata::ToValue() const:
../../services/network/sct_auditing/sct_auditing_reporter.cc:191:10: error: use of deleted function base::Value::Value(const base::Value&)
191 | return value;
| ^~~~~
In file included from ../../services/network/sct_auditing/sct_auditing_reporter.h:14,
from ../../services/network/sct_auditing/sct_auditing_reporter.cc:5:
../../base/values.h:254:3: note: declared here
254 | Value(const Value&) = delete;
| ^~~~~
Bug: 819294
Change-Id: I111e51dd10eee7b909d4ac3c0911aac18a589166
---
diff --git a/services/network/sct_auditing/sct_auditing_reporter.cc b/services/network/sct_auditing/sct_auditing_reporter.cc
index a057e8e..365527b 100644
--- a/services/network/sct_auditing/sct_auditing_reporter.cc
+++ b/services/network/sct_auditing/sct_auditing_reporter.cc
@@ -188,7 +188,7 @@
kLogIdKey, base::Base64Encode(base::as_bytes(base::make_span(log_id))));
value.SetKey(kLogMMDKey, base::TimeDeltaToValue(log_mmd));
value.SetKey(kCertificateExpiry, base::TimeToValue(certificate_expiry));
- return value;
+ return std::move(value);
}
// static

View file

@ -0,0 +1,29 @@
From 1183b14db8bd08d731ff3433c436887de00be3aa Mon Sep 17 00:00:00 2001
From: Jose Dapena Paz <jdapena@igalia.com>
Date: Fri, 18 Feb 2022 16:28:25 +0000
Subject: [PATCH] Fix typo in non-clang GSL_OWNER macro
GCC build fails because GSL_OWNER is not defined (GSL_OWNER_ was
the one actually declared).
Bug: 819294
Change-Id: I1c3d17cb1c08b9bc0e8a888452da9868c308ddb5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3472080
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Commit-Queue: Daniel Cheng <dcheng@chromium.org>
Cr-Commit-Position: refs/heads/main@{#972974}
---
diff --git a/base/compiler_specific.h b/base/compiler_specific.h
index eec5810..1ee8074 100644
--- a/base/compiler_specific.h
+++ b/base/compiler_specific.h
@@ -386,7 +386,7 @@
#define GSL_OWNER [[gsl::Owner]]
#define GSL_POINTER [[gsl::Pointer]]
#else
-#define GSL_OWNER_
+#define GSL_OWNER
#define GSL_POINTER
#endif

View file

@ -0,0 +1,12 @@
diff -up chromium-98.0.4758.102/base/third_party/symbolize/symbolize.h.missing-utility-for-std-exchange chromium-98.0.4758.102/base/third_party/symbolize/symbolize.h
--- chromium-98.0.4758.102/base/third_party/symbolize/symbolize.h.missing-utility-for-std-exchange 2022-02-25 22:30:02.833745309 +0000
+++ chromium-98.0.4758.102/base/third_party/symbolize/symbolize.h 2022-02-25 22:30:02.832745344 +0000
@@ -58,6 +58,8 @@
#include "config.h"
#include "glog/logging.h"
+#include <utility>
+
#ifdef HAVE_SYMBOLIZE
#include <algorithm>

View file

@ -0,0 +1,20 @@
diff -up chromium-100.0.4896.60/chrome/common/chrome_paths.cc.widevine-other-locations chromium-100.0.4896.60/chrome/common/chrome_paths.cc
--- chromium-100.0.4896.60/chrome/common/chrome_paths.cc.widevine-other-locations 2022-04-02 15:48:56.944051789 +0000
+++ chromium-100.0.4896.60/chrome/common/chrome_paths.cc 2022-04-02 15:52:34.825642103 +0000
@@ -319,6 +319,16 @@ bool PathProvider(int key, base::FilePat
#if BUILDFLAG(ENABLE_WIDEVINE)
case chrome::DIR_BUNDLED_WIDEVINE_CDM:
+ base::PathService::Get(base::DIR_HOME, &cur);
+ cur = cur.Append(FILE_PATH_LITERAL(".local/lib/libwidevinecdm.so"));
+ if (base::PathExists(cur)) {
+ break;
+ }
+ // Yes, this has an arch hardcoded in the path, but at this time, it is the only place to find libwidevinecdm.so
+ if (base::PathExists(base::FilePath(FILE_PATH_LITERAL("/opt/google/chrome/WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so")))) {
+ cur = base::FilePath(FILE_PATH_LITERAL("/opt/google/chrome/WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so"));
+ break;
+ }
if (!GetComponentDirectory(&cur))
return false;
cur = cur.AppendASCII(kWidevineCdmBaseDirectory);

View file

@ -0,0 +1,11 @@
diff -up chromium-100.0.4896.75/net/base/address_list.h.missing-include-tuple chromium-100.0.4896.75/net/base/address_list.h
--- chromium-100.0.4896.75/net/base/address_list.h.missing-include-tuple 2022-04-08 10:03:31.950894611 -0400
+++ chromium-100.0.4896.75/net/base/address_list.h 2022-04-08 10:03:43.926970267 -0400
@@ -8,6 +8,7 @@
#include <stdint.h>
#include <string>
+#include <tuple>
#include <utility>
#include <vector>

View file

@ -0,0 +1,11 @@
diff -up chromium-100.0.4896.75/media/capabilities/webrtc_video_stats_db.h.missing-vector chromium-100.0.4896.75/media/capabilities/webrtc_video_stats_db.h
--- chromium-100.0.4896.75/media/capabilities/webrtc_video_stats_db.h.missing-vector 2022-04-11 18:10:09.979195562 -0400
+++ chromium-100.0.4896.75/media/capabilities/webrtc_video_stats_db.h 2022-04-11 18:10:30.261338074 -0400
@@ -7,6 +7,7 @@
#include <memory>
#include <string>
+#include <vector>
#include "base/callback_forward.h"
#include "base/check.h"

View file

@ -0,0 +1,49 @@
diff -up chromium-100.0.4896.75/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc.old-xkb chromium-100.0.4896.75/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc
--- chromium-100.0.4896.75/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc.old-xkb 2022-04-08 10:12:14.725197002 -0400
+++ chromium-100.0.4896.75/ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.cc 2022-04-08 10:13:04.512511489 -0400
@@ -31,14 +31,6 @@
#include "ui/events/keycodes/keyboard_code_conversion.h"
#include "ui/events/keycodes/keyboard_code_conversion_xkb.h"
-// xkb_keymap_key_get_mods_for_level is relatively new (introduced in ver 1.0,
-// Sep 6, 2020), thus it is not available on some platform, such as Ubuntu
-// 18.04, which we still supports.
-// Thus declare the function as weak here, so we can check the availability on
-// runtime.
-extern "C" __attribute__((weak)) decltype(
- xkb_keymap_key_get_mods_for_level) xkb_keymap_key_get_mods_for_level;
-
namespace ui {
namespace {
@@ -925,18 +917,10 @@ void XkbKeyboardLayoutEngine::SetKeymap(
const xkb_keysym_t* keysyms;
int num_syms = xkb_keymap_key_get_syms_by_level(keymap, keycode, layout,
level, &keysyms);
- if (xkb_keymap_key_get_mods_for_level) {
- xkb_mod_mask_t masks[100]; // Large enough buffer.
- int num_mods = xkb_keymap_key_get_mods_for_level(
- keymap, keycode, layout, level, masks, std::size(masks));
- AddEntries(base::make_span(keysyms, num_syms),
- base::make_span(masks, num_mods), keycode);
- } else {
// If not, unfortunately, there's no convenient/efficient way
// to take the possible masks. Thus, use mask 0 always.
constexpr xkb_mod_mask_t kMask[] = {0};
AddEntries(base::make_span(keysyms, num_syms), kMask, keycode);
- }
}
}
}
@@ -1000,10 +984,7 @@ int XkbKeyboardLayoutEngine::UpdateModif
DomCode XkbKeyboardLayoutEngine::GetDomCodeByKeysym(uint32_t keysym,
uint32_t modifiers) const {
- // If xkb_keymap_key_get_mods_for_level is not available, all entries are
- // stored with modifiers mask is 0.
- if (!xkb_keymap_key_get_mods_for_level)
- modifiers = 0;
+ modifiers = 0;
auto iter = xkb_keysym_map_.find(XkbKeysymMapKey(keysym, modifiers));
if (iter == xkb_keysym_map_.end()) {

View file

@ -0,0 +1,147 @@
diff -up chromium-100.0.4896.75/remoting/host/mojom/remoting_mojom_traits.h.remoting-extra-qualification chromium-100.0.4896.75/remoting/host/mojom/remoting_mojom_traits.h
--- chromium-100.0.4896.75/remoting/host/mojom/remoting_mojom_traits.h.remoting-extra-qualification 2022-04-05 20:02:25.525814644 +0000
+++ chromium-100.0.4896.75/remoting/host/mojom/remoting_mojom_traits.h 2022-04-07 13:35:28.490655471 +0000
@@ -30,7 +30,7 @@
namespace mojo {
template <>
-class mojo::StructTraits<remoting::mojom::BoolDataView, bool> {
+class StructTraits<remoting::mojom::BoolDataView, bool> {
public:
static bool value(bool value) { return value; }
@@ -41,7 +41,7 @@ class mojo::StructTraits<remoting::mojom
};
template <>
-class mojo::StructTraits<remoting::mojom::FloatDataView, float> {
+class StructTraits<remoting::mojom::FloatDataView, float> {
public:
static float value(float value) { return value; }
@@ -52,7 +52,7 @@ class mojo::StructTraits<remoting::mojom
};
template <>
-class mojo::StructTraits<remoting::mojom::Int32DataView, int32_t> {
+class StructTraits<remoting::mojom::Int32DataView, int32_t> {
public:
static int32_t value(int32_t value) { return value; }
@@ -64,7 +64,7 @@ class mojo::StructTraits<remoting::mojom
};
template <>
-class mojo::StructTraits<remoting::mojom::UInt32DataView, uint32_t> {
+class StructTraits<remoting::mojom::UInt32DataView, uint32_t> {
public:
static uint32_t value(uint32_t value) { return value; }
@@ -76,7 +76,7 @@ class mojo::StructTraits<remoting::mojom
};
template <>
-class mojo::StructTraits<remoting::mojom::DesktopCaptureOptionsDataView,
+class StructTraits<remoting::mojom::DesktopCaptureOptionsDataView,
::webrtc::DesktopCaptureOptions> {
public:
static bool use_update_notifications(
@@ -101,7 +101,7 @@ class mojo::StructTraits<remoting::mojom
};
template <>
-class mojo::StructTraits<remoting::mojom::DesktopEnvironmentOptionsDataView,
+class StructTraits<remoting::mojom::DesktopEnvironmentOptionsDataView,
::remoting::DesktopEnvironmentOptions> {
public:
static bool enable_curtaining(
@@ -161,7 +161,7 @@ class mojo::StructTraits<remoting::mojom
};
template <>
-class mojo::StructTraits<remoting::mojom::DesktopSizeDataView,
+class StructTraits<remoting::mojom::DesktopSizeDataView,
::webrtc::DesktopSize> {
public:
static int32_t width(const ::webrtc::DesktopSize& size) {
@@ -177,7 +177,7 @@ class mojo::StructTraits<remoting::mojom
};
template <>
-class mojo::StructTraits<remoting::mojom::DesktopVectorDataView,
+class StructTraits<remoting::mojom::DesktopVectorDataView,
::webrtc::DesktopVector> {
public:
static int32_t x(const ::webrtc::DesktopVector& vector) { return vector.x(); }
@@ -243,7 +243,7 @@ struct EnumTraits<remoting::mojom::Mouse
};
template <>
-class mojo::StructTraits<remoting::mojom::ClipboardEventDataView,
+class StructTraits<remoting::mojom::ClipboardEventDataView,
::remoting::protocol::ClipboardEvent> {
public:
static const std::string& mime_type(
@@ -261,7 +261,7 @@ class mojo::StructTraits<remoting::mojom
};
template <>
-class mojo::StructTraits<remoting::mojom::KeyEventDataView,
+class StructTraits<remoting::mojom::KeyEventDataView,
::remoting::protocol::KeyEvent> {
public:
static bool pressed(const ::remoting::protocol::KeyEvent& event) {
@@ -297,7 +297,7 @@ class mojo::StructTraits<remoting::mojom
};
template <>
-class mojo::StructTraits<remoting::mojom::MouseEventDataView,
+class StructTraits<remoting::mojom::MouseEventDataView,
::remoting::protocol::MouseEvent> {
public:
static absl::optional<int32_t> x(
@@ -386,7 +386,7 @@ class mojo::StructTraits<remoting::mojom
};
template <>
-class mojo::StructTraits<remoting::mojom::ScreenResolutionDataView,
+class StructTraits<remoting::mojom::ScreenResolutionDataView,
::remoting::ScreenResolution> {
public:
static const ::webrtc::DesktopSize& dimensions(
@@ -404,7 +404,7 @@ class mojo::StructTraits<remoting::mojom
};
template <>
-class mojo::StructTraits<remoting::mojom::TextEventDataView,
+class StructTraits<remoting::mojom::TextEventDataView,
::remoting::protocol::TextEvent> {
public:
static const std::string& text(const ::remoting::protocol::TextEvent& event) {
@@ -416,7 +416,7 @@ class mojo::StructTraits<remoting::mojom
};
template <>
-class mojo::StructTraits<remoting::mojom::TouchEventPointDataView,
+class StructTraits<remoting::mojom::TouchEventPointDataView,
::remoting::protocol::TouchEventPoint> {
public:
static uint32_t id(const ::remoting::protocol::TouchEventPoint& event) {
@@ -493,7 +493,7 @@ struct EnumTraits<remoting::mojom::Touch
};
template <>
-class mojo::StructTraits<remoting::mojom::TouchEventDataView,
+class StructTraits<remoting::mojom::TouchEventDataView,
::remoting::protocol::TouchEvent> {
public:
static ::remoting::protocol::TouchEvent::TouchEventType event_type(
@@ -553,7 +553,7 @@ struct EnumTraits<remoting::mojom::Trans
};
template <>
-class mojo::StructTraits<remoting::mojom::TransportRouteDataView,
+class StructTraits<remoting::mojom::TransportRouteDataView,
::remoting::protocol::TransportRoute> {
public:
static ::remoting::protocol::TransportRoute::RouteType type(

View file

@ -1,16 +0,0 @@
diff -up chromium-107.0.5304.121/media/BUILD.gn.me chromium-107.0.5304.121/media/BUILD.gn
--- chromium-107.0.5304.121/media/BUILD.gn.me 2022-12-17 12:35:44.546779129 +0100
+++ chromium-107.0.5304.121/media/BUILD.gn 2022-12-17 12:35:59.296047028 +0100
@@ -64,12 +64,6 @@ buildflag_header("media_buildflags") {
}
}
-if (proprietary_codecs && media_use_ffmpeg) {
- assert(
- ffmpeg_branding != "Chromium",
- "proprietary codecs and ffmpeg_branding set to Chromium are incompatible")
-}
-
# Common configuration for targets in the media directory; these must not be
# exported since things like USE_NEON and USE_CRAS have different meanings
# elsewhere in the code base.

View file

@ -1,12 +0,0 @@
diff -up chromium-108.0.5359.124/media/audio/audio_opus_encoder.h.me chromium-108.0.5359.124/media/audio/audio_opus_encoder.h
--- chromium-108.0.5359.124/media/audio/audio_opus_encoder.h.me 2022-12-31 09:49:17.100277502 +0100
+++ chromium-108.0.5359.124/media/audio/audio_opus_encoder.h 2022-12-31 09:49:57.101016710 +0100
@@ -12,7 +12,7 @@
#include "media/base/audio_converter.h"
#include "media/base/audio_encoder.h"
#include "media/base/audio_timestamp_helper.h"
-#include "third_party/opus/src/include/opus.h"
+#include <opus/opus.h>
namespace media {

View file

@ -1,16 +0,0 @@
diff -up chromium-115.0.5790.32/chrome/browser/first_run/first_run_internal_linux.cc.me chromium-115.0.5790.32/chrome/browser/first_run/first_run_internal_linux.cc
--- chromium-115.0.5790.32/chrome/browser/first_run/first_run_internal_linux.cc.me 2023-06-17 19:43:08.481952671 +0200
+++ chromium-115.0.5790.32/chrome/browser/first_run/first_run_internal_linux.cc 2023-06-17 19:44:26.165349772 +0200
@@ -20,10 +20,8 @@ bool IsOrganicFirstRun() {
base::FilePath InitialPrefsPath() {
// The standard location of the initial prefs is next to the chrome binary.
- base::FilePath dir_exe;
- if (!base::PathService::Get(base::DIR_EXE, &dir_exe)) {
- return base::FilePath();
- }
+ // ...but we patch it to use /etc/chromium
+ base::FilePath dir_exe = base::FilePath("/etc/chromium");
return installer::InitialPreferences::Path(dir_exe);
}

View file

@ -1,33 +0,0 @@
diff -up chromium-108.0.5359.124/chrome/common/chrome_paths.cc.widevine-other-locations chromium-108.0.5359.124/chrome/common/chrome_paths.cc
--- chromium-108.0.5359.124/chrome/common/chrome_paths.cc.widevine-other-locations 2023-01-02 11:10:03.951330305 +0100
+++ chromium-108.0.5359.124/chrome/common/chrome_paths.cc 2023-01-02 13:42:26.781022150 +0100
@@ -319,6 +319,16 @@ bool PathProvider(int key, base::FilePat
#if BUILDFLAG(ENABLE_WIDEVINE)
case chrome::DIR_BUNDLED_WIDEVINE_CDM:
+ base::PathService::Get(base::DIR_HOME, &cur);
+ cur = cur.Append(FILE_PATH_LITERAL(".config/chromium/WidevineCdm"));
+ if (base::PathExists(cur)) {
+ break;
+ }
+ // Yes, this has an arch hardcoded in the path, but at this time, it is the only place to find libwidevinecdm.so
+ if (base::PathExists(base::FilePath(FILE_PATH_LITERAL("/opt/google/chrome/WidevineCdm/_platform_specific/linux_x64/libwidevinecdm.so")))) {
+ cur = base::FilePath(FILE_PATH_LITERAL("/opt/google/chrome/WidevineCdm"));
+ break;
+ }
if (!GetComponentDirectory(&cur)) {
return false;
}
cur = cur.AppendASCII(kWidevineCdmBaseDirectory);
diff -up chromium-108.0.5359.124/third_party/widevine/cdm/BUILD.gn.widevine-other-locations chromium-108.0.5359.124/third_party/widevine/cdm/BUILD.gn
--- chromium-108.0.5359.124/third_party/widevine/cdm/BUILD.gn.widevine-other-locations 2023-01-02 11:10:45.953114153 +0100
+++ chromium-108.0.5359.124/third_party/widevine/cdm/BUILD.gn 2023-01-02 11:10:45.953114153 +0100
@@ -22,7 +22,7 @@ buildflag_header("buildflags") {
flags = [
"ENABLE_WIDEVINE=$enable_widevine",
- "BUNDLE_WIDEVINE_CDM=$bundle_widevine_cdm",
+ "BUNDLE_WIDEVINE_CDM=true",
"ENABLE_WIDEVINE_CDM_COMPONENT=$enable_widevine_cdm_component",
"ENABLE_MEDIA_FOUNDATION_WIDEVINE_CDM=$enable_media_foundation_widevine_cdm",
]

View file

@ -1,12 +0,0 @@
diff -up chromium-117.0.5938.132/build/config/arm.gni.me chromium-117.0.5938.132/build/config/arm.gni
--- chromium-117.0.5938.132/build/config/arm.gni.me 2023-09-29 15:37:18.281122162 +0200
+++ chromium-117.0.5938.132/build/config/arm.gni 2023-09-29 15:38:24.855369796 +0200
@@ -140,7 +140,7 @@ if (current_cpu == "arm" || v8_current_c
# target_cpu == "arm64" filters out some cases (e.g. the ChromeOS x64
# MSAN build) where the target platform is x64, but V8 is configured to
# use the arm64 simulator.
- arm_control_flow_integrity = "standard"
+ arm_control_flow_integrity = "pac"
}
}
assert(arm_control_flow_integrity == "none" ||

View file

@ -1,12 +0,0 @@
diff -up chromium-118.0.5993.32/ui/gfx/linux/dmabuf_uapi.h.me chromium-118.0.5993.32/ui/gfx/linux/dmabuf_uapi.h
--- chromium-118.0.5993.32/ui/gfx/linux/dmabuf_uapi.h.me 2023-10-04 22:18:44.259800011 +0200
+++ chromium-118.0.5993.32/ui/gfx/linux/dmabuf_uapi.h 2023-10-04 22:28:17.068756669 +0200
@@ -28,7 +28,7 @@ constexpr unsigned long DMA_BUF_IOCTL_SY
_IOW(DMA_BUF_BASE, 0, struct dma_buf_sync);
#endif
-#if LINUX_VERSION_CODE < KERNEL_VERSION(6, 0, 0)
+#if 0
struct dma_buf_export_sync_file {
__u32 flags;
__s32 fd;

View file

@ -1,16 +0,0 @@
fix tab crash with SIGTRAP when opening website like ge.globo.com
author: Than Ngo <than@redhat.com>
diff -up chromium-118.0.5993.70/media/filters/ffmpeg_glue.cc.me chromium-118.0.5993.70/media/filters/ffmpeg_glue.cc
--- chromium-118.0.5993.70/media/filters/ffmpeg_glue.cc.me 2023-10-16 12:52:01.716573884 +0200
+++ chromium-118.0.5993.70/media/filters/ffmpeg_glue.cc 2023-10-16 12:56:03.476075446 +0200
@@ -157,7 +157,7 @@ bool FFmpegGlue::OpenContext(bool is_loc
container_ = container_names::MediaContainerName::kContainerAVI;
// For a successfully opened file, we will get a container we've compiled in.
- CHECK_NE(container_, container_names::MediaContainerName::kContainerUnknown);
+ DCHECK_NE(container_, container_names::MediaContainerName::kContainerUnknown);
LogContainer(is_local_file, container_);
return true;

View file

@ -1,24 +0,0 @@
diff -up chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor.h.me chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor.h
--- chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor.h.me 2024-02-06 08:22:36.013021582 +0100
+++ chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor.h 2024-02-06 08:23:08.281607499 +0100
@@ -77,7 +77,7 @@ class XSLTProcessor final : public Scrip
void reset();
- static void ParseErrorFunc(void* user_data, const xmlError*);
+ static void ParseErrorFunc(void* user_data, xmlError*);
static void GenericErrorFunc(void* user_data, const char* msg, ...);
// Only for libXSLT callbacks
diff -up chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc.me chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc
--- chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc.me 2024-02-06 08:14:32.368066214 +0100
+++ chromium-121.0.6167.139/third_party/blink/renderer/core/xml/xslt_processor_libxslt.cc 2024-02-06 08:23:08.282607518 +0100
@@ -66,7 +66,7 @@ void XSLTProcessor::GenericErrorFunc(voi
// It would be nice to do something with this error message.
}
-void XSLTProcessor::ParseErrorFunc(void* user_data, const xmlError* error) {
+void XSLTProcessor::ParseErrorFunc(void* user_data, xmlError* error) {
FrameConsole* console = static_cast<FrameConsole*>(user_data);
if (!console)
return;

View file

@ -1,17 +0,0 @@
diff -up chromium-122.0.6261.57/build/config/compiler/BUILD.gn.me chromium-122.0.6261.57/build/config/compiler/BUILD.gn
--- chromium-122.0.6261.57/build/config/compiler/BUILD.gn.me 2024-02-23 12:32:11.248584653 +0100
+++ chromium-122.0.6261.57/build/config/compiler/BUILD.gn 2024-02-23 12:45:26.672302958 +0100
@@ -399,6 +399,13 @@ config("compiler") {
}
}
+ if (is_clang) {
+ cflags += [ "-ftrivial-auto-var-init=zero" ]
+ if (!is_ubsan && !is_ubsan_security) {
+ cflags += [ "-fwrapv" ]
+ }
+ }
+
# Linker warnings.
if (fatal_linker_warnings && !is_apple && current_os != "aix" &&
current_os != "zos") {

View file

@ -1,12 +0,0 @@
diff -up chromium-123.0.6312.46/build/config/compiler/BUILD.gn.fstack-protector-strong chromium-123.0.6312.46/build/config/compiler/BUILD.gn
--- chromium-123.0.6312.46/build/config/compiler/BUILD.gn.fstack-protector-strong 2024-03-15 11:46:34.542248116 +0100
+++ chromium-123.0.6312.46/build/config/compiler/BUILD.gn 2024-03-15 11:59:02.970849847 +0100
@@ -382,7 +382,7 @@ config("compiler") {
} else if ((is_posix && !is_chromeos && !is_nacl) || is_fuchsia) {
if (current_os != "aix") {
# Not available on aix.
- cflags += [ "-fstack-protector" ]
+ cflags += [ "-fstack-protector-strong" ]
}
}
}

View file

@ -1,13 +0,0 @@
diff -up chromium-123.0.6312.58/chrome/browser/component_updater/screen_ai_component_installer.cc.me chromium-123.0.6312.58/chrome/browser/component_updater/screen_ai_component_installer.cc
--- chromium-123.0.6312.58/chrome/browser/component_updater/screen_ai_component_installer.cc.me 2024-03-24 10:58:43.033885904 +0100
+++ chromium-123.0.6312.58/chrome/browser/component_updater/screen_ai_component_installer.cc 2024-03-24 11:00:38.861979740 +0100
@@ -143,8 +143,7 @@ void ScreenAIComponentInstallerPolicy::D
void ManageScreenAIComponentRegistration(ComponentUpdateService* cus,
PrefService* local_state) {
if (screen_ai::ScreenAIInstallState::ShouldInstall(local_state)) {
- RegisterScreenAIComponent(cus);
- return;
+ // don't register the screenn ai service
}
// Clean up.

View file

@ -1,13 +0,0 @@
diff -up chromium-124.0.6367.60/base/allocator/partition_allocator/partition_alloc.gni.me chromium-124.0.6367.60/base/allocator/partition_allocator/partition_alloc.gni
--- chromium-124.0.6367.60/base/allocator/partition_allocator/partition_alloc.gni.me 2024-04-18 15:12:34.007397489 +0200
+++ chromium-124.0.6367.60/base/allocator/partition_allocator/partition_alloc.gni 2024-04-18 15:13:06.166051954 +0200
@@ -32,8 +32,7 @@ if (is_nacl) {
# Increases the size of the empty slot span ring.
use_large_empty_slot_span_ring = is_mac
-has_memory_tagging =
- current_cpu == "arm64" && is_clang && !is_asan && (is_linux || is_android)
+has_memory_tagging = false
declare_args() {
# Causes all the allocations to be routed via allocator_shim.cc. Usually,

View file

@ -1,11 +0,0 @@
diff -up chromium-124.0.6367.155/ui/qt/BUILD.gn.me chromium-124.0.6367.155/ui/qt/BUILD.gn
--- chromium-124.0.6367.155/ui/qt/BUILD.gn.me 2024-05-08 18:15:34.178627040 +0200
+++ chromium-124.0.6367.155/ui/qt/BUILD.gn 2024-05-08 18:29:31.162513709 +0200
@@ -61,6 +61,7 @@ template("qt_shim") {
packages = [
"Qt" + invoker.qt_version + "Core",
"Qt" + invoker.qt_version + "Widgets",
+ "Qt" + invoker.qt_version + "Gui",
]
}

View file

@ -1,13 +0,0 @@
diff -up chromium-127.0.6533.72/sandbox/linux/syscall_broker/broker_process.cc.me chromium-127.0.6533.72/sandbox/linux/syscall_broker/broker_process.cc
--- chromium-127.0.6533.72/sandbox/linux/syscall_broker/broker_process.cc.me 2024-07-30 18:09:59.483141522 +0200
+++ chromium-127.0.6533.72/sandbox/linux/syscall_broker/broker_process.cc 2024-07-30 19:42:47.122708543 +0200
@@ -163,9 +163,6 @@ bool BrokerProcess::IsSyscallBrokerable(
case __NR_stat:
case __NR_lstat:
#endif
-#if defined(__NR_fstatat)
- case __NR_fstatat:
-#endif
#if defined(__NR_fstatat64)
case __NR_fstatat64:
#endif

View file

@ -1,15 +0,0 @@
diff -up chromium-127.0.6533.72/base/allocator/partition_allocator/src/partition_alloc/aarch64_support.h.me chromium-127.0.6533.72/base/allocator/partition_allocator/src/partition_alloc/aarch64_support.h
--- chromium-127.0.6533.72/base/allocator/partition_allocator/src/partition_alloc/aarch64_support.h.me 2024-07-25 23:58:19.751616508 +0200
+++ chromium-127.0.6533.72/base/allocator/partition_allocator/src/partition_alloc/aarch64_support.h 2024-07-26 00:01:46.391800969 +0200
@@ -10,9 +10,11 @@
#include "partition_alloc/build_config.h"
#include "partition_alloc/partition_alloc_buildflags.h"
+#if 0
#if PA_BUILDFLAG(IS_ANDROID) || PA_BUILDFLAG(IS_LINUX)
#define HAS_HW_CAPS
#endif
+#endif
#if PA_BUILDFLAG(PA_ARCH_CPU_ARM64) && defined(HAS_HW_CAPS)
#include <asm/hwcap.h>

View file

@ -1,21 +0,0 @@
diff -up chromium-130.0.6723.44/components/media_router/common/providers/cast/channel/enum_table.h.me chromium-130.0.6723.44/components/media_router/common/providers/cast/channel/enum_table.h
--- chromium-130.0.6723.44/components/media_router/common/providers/cast/channel/enum_table.h.me 2024-10-15 09:58:39.571798463 +0200
+++ chromium-130.0.6723.44/components/media_router/common/providers/cast/channel/enum_table.h 2024-10-15 09:59:46.209147226 +0200
@@ -12,7 +12,6 @@
#include <cstdint>
#include <cstring>
-#include <new>
#include <optional>
#include <ostream>
#include <string_view>
@@ -368,7 +367,8 @@ class EnumTable {
private:
#ifdef ARCH_CPU_64_BITS
- alignas(std::hardware_destructive_interference_size)
+ // Align the data on a cache line boundary.
+ alignas(64)
#endif
std::initializer_list<Entry> data_;
bool is_sorted_;

View file

@ -1,19 +0,0 @@
From b9075d0e1f687f9a5cf80a7778bde99cece9fdf7 Mon Sep 17 00:00:00 2001
From: Than Ngo <than@redhat.com>
Date: Sat, 23 Nov 2024 12:33:22 +0100
Subject: [PATCH] Enable qt-ui
diff -up chromium-131.0.6778.85/ui/qt/qt_shim.cc.me chromium-131.0.6778.85/ui/qt/qt_shim.cc
--- chromium-131.0.6778.85/ui/qt/qt_shim.cc.me 2024-11-23 10:04:16.789121846 +0100
+++ chromium-131.0.6778.85/ui/qt/qt_shim.cc 2024-11-23 11:40:02.905064702 +0100
@@ -265,7 +265,7 @@ FontRenderParams QtShim::GetFontRenderPa
FontDescription QtShim::GetFontDescription() const {
QFont font = app_.font();
return {
- .family = String(font.family().toStdString().c_str()),
+ .family = String(font.family().toUtf8().constData()),
.size_pixels = font.pixelSize(),
.size_points = font.pointSize(),
.is_italic = IsStyleItalic(font.style()),

View file

@ -1,32 +0,0 @@
commit 1ab1a14ad97394d384d8dc6de51bb229625e66d6
Author: Benoît Lizé <lizeb@chromium.org>
Date: Mon Sep 16 12:01:14 2024 +0200
[cppgc] Decommit pooled pages by default
This reduces committed memory by a large amount, which matters on
Windows. See the field trial results, which measure committed memory:
https://screenshot.googleplex.com/kEBAScqJSEXuRoy
Bug: chromium:326303884
Change-Id: I619257871bcdb7ed50a71f41af341d0df634428a
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/5864909
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Anton Bikineev <bikineev@chromium.org>
Commit-Queue: Anton Bikineev <bikineev@chromium.org>
Auto-Submit: Benoit Lize <lizeb@chromium.org>
Cr-Commit-Position: refs/heads/main@{#96107}
diff --git a/v8/src/flags/flag-definitions.h b/v8/src/flags/flag-definitions.h
index 69946faf5ed..85c4b68612e 100644
--- a/v8/src/flags/flag-definitions.h
+++ b/v8/src/flags/flag-definitions.h
@@ -821,7 +821,7 @@ DEFINE_BOOL(trace_block_coverage, false,
"trace collected block coverage information")
DEFINE_BOOL(trace_protector_invalidation, false,
"trace protector cell invalidations")
-DEFINE_BOOL(decommit_pooled_pages, false,
+DEFINE_BOOL(decommit_pooled_pages, true,
"decommit, rather than discard pooled pages")
#ifdef V8_MINORMS_STRING_SHORTCUTTING

View file

@ -1,11 +0,0 @@
diff -up chromium-132.0.6834.57/build/config/gcc/BUILD.gn.me chromium-132.0.6834.57/build/config/gcc/BUILD.gn
--- chromium-132.0.6834.57/build/config/gcc/BUILD.gn.me 2025-01-01 18:59:29.670002052 +0100
+++ chromium-132.0.6834.57/build/config/gcc/BUILD.gn 2025-01-01 20:51:11.798696436 +0100
@@ -32,7 +32,6 @@ declare_args() {
# See http://gcc.gnu.org/wiki/Visibility
config("symbol_visibility_hidden") {
cflags = [ "-fvisibility=hidden" ]
- rustflags = [ "-Zdefault-visibility=hidden" ]
# Visibility attribute is not supported on AIX.
if (current_os != "aix") {

View file

@ -1,12 +0,0 @@
diff -up chromium-133.0.6943.53/media/filters/ffmpeg_glue.cc.me chromium-133.0.6943.53/media/filters/ffmpeg_glue.cc
--- chromium-133.0.6943.53/media/filters/ffmpeg_glue.cc.me 2025-02-05 13:28:17.782881439 +0100
+++ chromium-133.0.6943.53/media/filters/ffmpeg_glue.cc 2025-02-05 13:33:15.256928027 +0100
@@ -111,7 +111,7 @@ FFmpegGlue::FFmpegGlue(FFmpegURLProtocol
// We don't allow H.264 parsing during demuxing since we have our own parser
// and the ffmpeg one increases memory usage unnecessarily.
- format_context_->flags |= AVFMT_FLAG_NOH264PARSE;
+ // 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.

View file

@ -1,34 +0,0 @@
diff -up chromium-133.0.6943.98/media/ffmpeg/ffmpeg_common.cc.than chromium-133.0.6943.98/media/ffmpeg/ffmpeg_common.cc
--- chromium-133.0.6943.98/media/ffmpeg/ffmpeg_common.cc.than 2025-02-13 11:59:31.035724118 +0100
+++ chromium-133.0.6943.98/media/ffmpeg/ffmpeg_common.cc 2025-02-14 10:39:07.825746076 +0100
@@ -76,6 +76,8 @@ const char* GetAllowedVideoDecoders() {
void ApplyCodecContextSecuritySettings(AVCodecContext* codec_context) {
// Future versions of ffmpeg may copy the allow list from the format
// context.
+ // Workaround for codec whitelist with system ffmpeg
+#if 0
if (!codec_context->codec_whitelist) {
// Note: FFmpeg will try to free this string, so we must duplicate it.
codec_context->codec_whitelist =
@@ -83,6 +85,7 @@ void ApplyCodecContextSecuritySettings(A
? GetAllowedAudioDecoders()
: GetAllowedVideoDecoders());
}
+#endif
// Note: This is security sensitive. FFmpeg may not always continue safely
// in the presence of errors. See https://crbug.com/379418979
diff -up chromium-133.0.6943.98/media/filters/ffmpeg_glue.cc.than chromium-133.0.6943.98/media/filters/ffmpeg_glue.cc
--- chromium-133.0.6943.98/media/filters/ffmpeg_glue.cc.than 2025-02-14 10:14:13.360398193 +0100
+++ chromium-133.0.6943.98/media/filters/ffmpeg_glue.cc 2025-02-14 10:36:46.762332912 +0100
@@ -131,8 +131,10 @@ FFmpegGlue::FFmpegGlue(FFmpegURLProtocol
// memory usage.
//
// Note: FFmpeg will try to free these strings, so we must duplicate them.
+#if 0
format_context_->codec_whitelist = av_strdup(GetAllowedAudioDecoders());
format_context_->format_whitelist = av_strdup(GetAllowedDemuxers());
+#endif
}
bool FFmpegGlue::OpenContext(bool is_local_file) {

File diff suppressed because it is too large Load diff

View file

@ -1,13 +0,0 @@
diff -up chromium-134.0.6998.23/base/containers/to_value_list.h.me chromium-134.0.6998.23/base/containers/to_value_list.h
--- chromium-134.0.6998.23/base/containers/to_value_list.h.me 2025-02-23 22:39:33.369668072 +0100
+++ chromium-134.0.6998.23/base/containers/to_value_list.h 2025-02-23 22:42:42.653990901 +0100
@@ -36,8 +36,7 @@ Value::List ToValueList(Range&& range, P
auto container = Value::List::with_capacity(std::ranges::size(range));
std::ranges::for_each(
std::forward<Range>(range),
- [&]<typename T>(T&& value) { container.Append(std::forward<T>(value)); },
- std::move(proj));
+ [&](auto&& value) { container.Append(std::invoke(proj, std::forward<decltype(*std::ranges::begin(range))>(value))); });
return container;
}

View file

@ -1,20 +0,0 @@
diff -up chromium-136.0.7103.33/third_party/node/node.gni.than chromium-136.0.7103.33/third_party/node/node.gni
--- chromium-136.0.7103.33/third_party/node/node.gni.than 2025-04-21 17:53:06.742517984 +0200
+++ chromium-136.0.7103.33/third_party/node/node.gni 2025-04-21 17:54:05.452645652 +0200
@@ -35,16 +35,5 @@ template("node") {
inputs += [ "//third_party/node/mac/node-darwin-x64/bin/node" ]
}
}
-
- # Automatically add a dependency to ":check_version" to ensure NodeJS is
- # always running the expected version, except when the ':check_version'
- # target itself is running in which case it shouldn't depend on itself.
- if (get_label_info(":" + target_name, "label_no_toolchain") !=
- "//third_party/node:check_version") {
- if (!defined(deps)) {
- deps = []
- }
- deps += [ "//third_party/node:check_version" ]
- }
}
}

View file

@ -1,12 +0,0 @@
diff -up chromium-136.0.7103.48/third_party/rust/chromium_crates_io/vendor/skrifa-0.29.2/src/glyph_name.rs.than chromium-136.0.7103.48/third_party/rust/chromium_crates_io/vendor/skrifa-0.29.2/src/glyph_name.rs
--- chromium-136.0.7103.48/third_party/rust/chromium_crates_io/vendor/skrifa-0.29.2/src/glyph_name.rs.than 2025-04-29 08:36:33.385071420 +0200
+++ chromium-136.0.7103.48/third_party/rust/chromium_crates_io/vendor/skrifa-0.29.2/src/glyph_name.rs 2025-04-29 08:42:21.465525421 +0200
@@ -94,7 +94,7 @@ impl<'a> GlyphNames<'a> {
_ => None,
};
// If name is empty string, synthesize it
- if name.as_ref().is_none_or(|s| s.is_empty()) {
+ if name.is_none() || name.as_ref().map_or(false, |s| s.is_empty()) {
return Some(GlyphName::synthesize(glyph_id));
}
Some(name.unwrap_or_else(|| GlyphName::synthesize(glyph_id)))

View file

@ -1,17 +0,0 @@
diff -up chromium-136.0.7103.48/build/config/compiler/BUILD.gn.than chromium-136.0.7103.48/build/config/compiler/BUILD.gn
--- chromium-136.0.7103.48/build/config/compiler/BUILD.gn.than 2025-04-28 15:44:08.883499599 +0200
+++ chromium-136.0.7103.48/build/config/compiler/BUILD.gn 2025-04-28 15:44:47.624639772 +0200
@@ -622,12 +622,6 @@ config("compiler") {
cflags += [ "-ffp-contract=off" ]
}
- # Enable ELF CREL (see crbug.com/357878242) for all platforms that use ELF
- # (excluding toolchains that use an older version of LLVM).
- if (is_linux && !llvm_android_mainline &&
- default_toolchain != "//build/toolchain/cros:target") {
- cflags += [ "-Wa,--crel,--allow-experimental-crel" ]
- }
}
# C11/C++11 compiler flags setup.
diff -up chromium-136.0.7103.48/tools/licenses/licenses.py.than chromium-136.0.7103.48/tools/licenses/licenses.py

View file

@ -1,23 +0,0 @@
diff -up chromium-138.0.7204.15/third_party/node/node.gni.me chromium-138.0.7204.15/third_party/node/node.gni
--- chromium-138.0.7204.15/third_party/node/node.gni.me 2025-06-03 23:20:09.000000000 +0200
+++ chromium-138.0.7204.15/third_party/node/node.gni 2025-06-09 09:59:21.788545159 +0200
@@ -44,7 +44,6 @@ template("node") {
if (!defined(deps)) {
deps = []
}
- deps += [ "//third_party/node:check_version" ]
}
}
}
diff -up chromium-138.0.7204.15/third_party/node/BUILD.gn.me chromium-138.0.7204.15/third_party/node/BUILD.gn
diff -up chromium-138.0.7204.15/third_party/protobuf/proto_library.gni.me chromium-138.0.7204.15/third_party/protobuf/proto_library.gni
--- chromium-138.0.7204.15/third_party/protobuf/proto_library.gni.me 2025-06-09 11:33:08.279645775 +0200
+++ chromium-138.0.7204.15/third_party/protobuf/proto_library.gni 2025-06-09 12:10:07.040045476 +0200
@@ -562,7 +562,6 @@ template("proto_library") {
_protoc_gen_ts_path,
"//tools/protoc_wrapper/protoc-gen-ts_proto.py",
] + _protoc_gen_ts_runtime_deps
- deps += [ "//third_party/node:check_version" ]
}
if (_generate_with_plugin) {

View file

@ -1,158 +0,0 @@
https://chromium-review.googlesource.com/c/chromium/src/+/6506529
Revert CL rolls ffmpeg for M138 as it breaks the build due to old ffmpeg version on EL9
diff -up chromium-138.0.7204.49/media/ffmpeg/ffmpeg_common.cc.me chromium-138.0.7204.49/media/ffmpeg/ffmpeg_common.cc
--- chromium-138.0.7204.49/media/ffmpeg/ffmpeg_common.cc.me 2025-06-23 23:34:26.000000000 +0200
+++ chromium-138.0.7204.49/media/ffmpeg/ffmpeg_common.cc 2025-06-25 15:13:17.958054182 +0200
@@ -263,22 +263,22 @@ AVCodecID VideoCodecToCodecID(VideoCodec
static VideoCodecProfile ProfileIDToVideoCodecProfile(int profile) {
// Clear out the CONSTRAINED & INTRA flags which are strict subsets of the
// corresponding profiles with which they're used.
- profile &= ~AV_PROFILE_H264_CONSTRAINED;
- profile &= ~AV_PROFILE_H264_INTRA;
+ profile &= ~FF_PROFILE_H264_CONSTRAINED;
+ profile &= ~FF_PROFILE_H264_INTRA;
switch (profile) {
- case AV_PROFILE_H264_BASELINE:
+ case FF_PROFILE_H264_BASELINE:
return H264PROFILE_BASELINE;
- case AV_PROFILE_H264_MAIN:
+ case FF_PROFILE_H264_MAIN:
return H264PROFILE_MAIN;
- case AV_PROFILE_H264_EXTENDED:
+ case FF_PROFILE_H264_EXTENDED:
return H264PROFILE_EXTENDED;
- case AV_PROFILE_H264_HIGH:
+ case FF_PROFILE_H264_HIGH:
return H264PROFILE_HIGH;
- case AV_PROFILE_H264_HIGH_10:
+ case FF_PROFILE_H264_HIGH_10:
return H264PROFILE_HIGH10PROFILE;
- case AV_PROFILE_H264_HIGH_422:
+ case FF_PROFILE_H264_HIGH_422:
return H264PROFILE_HIGH422PROFILE;
- case AV_PROFILE_H264_HIGH_444_PREDICTIVE:
+ case FF_PROFILE_H264_HIGH_444_PREDICTIVE:
return H264PROFILE_HIGH444PREDICTIVEPROFILE;
default:
DVLOG(1) << "Unknown profile id: " << profile;
@@ -289,23 +289,23 @@ static VideoCodecProfile ProfileIDToVide
static int VideoCodecProfileToProfileID(VideoCodecProfile profile) {
switch (profile) {
case H264PROFILE_BASELINE:
- return AV_PROFILE_H264_BASELINE;
+ return FF_PROFILE_H264_BASELINE;
case H264PROFILE_MAIN:
- return AV_PROFILE_H264_MAIN;
+ return FF_PROFILE_H264_MAIN;
case H264PROFILE_EXTENDED:
- return AV_PROFILE_H264_EXTENDED;
+ return FF_PROFILE_H264_EXTENDED;
case H264PROFILE_HIGH:
- return AV_PROFILE_H264_HIGH;
+ return FF_PROFILE_H264_HIGH;
case H264PROFILE_HIGH10PROFILE:
- return AV_PROFILE_H264_HIGH_10;
+ return FF_PROFILE_H264_HIGH_10;
case H264PROFILE_HIGH422PROFILE:
- return AV_PROFILE_H264_HIGH_422;
+ return FF_PROFILE_H264_HIGH_422;
case H264PROFILE_HIGH444PREDICTIVEPROFILE:
- return AV_PROFILE_H264_HIGH_444_PREDICTIVE;
+ return FF_PROFILE_H264_HIGH_444_PREDICTIVE;
default:
DVLOG(1) << "Unknown VideoCodecProfile: " << profile;
}
- return AV_PROFILE_UNKNOWN;
+ return FF_PROFILE_UNKNOWN;
}
SampleFormat AVSampleFormatToSampleFormat(AVSampleFormat sample_format,
@@ -441,7 +441,7 @@ bool AVCodecContextToAudioDecoderConfig(
// TODO(dalecurtis): Just use the profile from the codec context if ffmpeg
// ever starts supporting xHE-AAC.
// FFmpeg provides the (defined_profile - 1) for AVCodecContext::profile
- if (codec_context->profile == AV_PROFILE_UNKNOWN ||
+ if (codec_context->profile == FF_PROFILE_UNKNOWN ||
codec_context->profile == mp4::AAC::kXHeAAcType - 1) {
// Errors aren't fatal here, so just drop any MediaLog messages.
NullMediaLog media_log;
@@ -659,16 +659,16 @@ bool AVStreamToVideoDecoderConfig(const
break;
case VideoCodec::kVP9:
switch (codec_context->profile) {
- case AV_PROFILE_VP9_0:
+ case FF_PROFILE_VP9_0:
profile = VP9PROFILE_PROFILE0;
break;
- case AV_PROFILE_VP9_1:
+ case FF_PROFILE_VP9_1:
profile = VP9PROFILE_PROFILE1;
break;
- case AV_PROFILE_VP9_2:
+ case FF_PROFILE_VP9_2:
profile = VP9PROFILE_PROFILE2;
break;
- case AV_PROFILE_VP9_3:
+ case FF_PROFILE_VP9_3:
profile = VP9PROFILE_PROFILE3;
break;
default:
diff -up chromium-138.0.7204.49/media/filters/ffmpeg_aac_bitstream_converter.cc.me chromium-138.0.7204.49/media/filters/ffmpeg_aac_bitstream_converter.cc
--- chromium-138.0.7204.49/media/filters/ffmpeg_aac_bitstream_converter.cc.me 2025-06-23 23:34:26.000000000 +0200
+++ chromium-138.0.7204.49/media/filters/ffmpeg_aac_bitstream_converter.cc 2025-06-25 15:13:17.958541707 +0200
@@ -68,17 +68,17 @@ bool GenerateAdtsHeader(int codec,
hdr[1] |= 1;
switch (audio_profile) {
- case AV_PROFILE_AAC_MAIN:
+ case FF_PROFILE_AAC_MAIN:
break;
- case AV_PROFILE_AAC_HE:
- case AV_PROFILE_AAC_HE_V2:
- case AV_PROFILE_AAC_LOW:
+ case FF_PROFILE_AAC_HE:
+ case FF_PROFILE_AAC_HE_V2:
+ case FF_PROFILE_AAC_LOW:
hdr[2] |= (1 << 6);
break;
- case AV_PROFILE_AAC_SSR:
+ case FF_PROFILE_AAC_SSR:
hdr[2] |= (2 << 6);
break;
- case AV_PROFILE_AAC_LTP:
+ case FF_PROFILE_AAC_LTP:
hdr[2] |= (3 << 6);
break;
default:
diff -up chromium-138.0.7204.49/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc.me chromium-138.0.7204.49/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc
--- chromium-138.0.7204.49/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc.me 2025-06-23 23:34:26.000000000 +0200
+++ chromium-138.0.7204.49/media/filters/ffmpeg_aac_bitstream_converter_unittest.cc 2025-06-25 15:13:17.958839001 +0200
@@ -41,7 +41,7 @@ class FFmpegAACBitstreamConverterTest :
// Set up reasonable aac parameters
memset(&test_parameters_, 0, sizeof(AVCodecParameters));
test_parameters_.codec_id = AV_CODEC_ID_AAC;
- test_parameters_.profile = AV_PROFILE_AAC_MAIN;
+ test_parameters_.profile = FF_PROFILE_AAC_MAIN;
test_parameters_.ch_layout.nb_channels = 2;
test_parameters_.extradata = extradata_header_;
test_parameters_.extradata_size = sizeof(extradata_header_);
@@ -131,7 +131,7 @@ TEST_F(FFmpegAACBitstreamConverterTest,
EXPECT_EQ(profile, kAacMainProfile);
- test_parameters_.profile = AV_PROFILE_AAC_HE;
+ test_parameters_.profile = FF_PROFILE_AAC_HE;
FFmpegAACBitstreamConverter converter_he(&test_parameters_);
test_packet = ScopedAVPacket::Allocate();
@@ -143,7 +143,7 @@ TEST_F(FFmpegAACBitstreamConverterTest,
EXPECT_EQ(profile, kAacLowComplexityProfile);
- test_parameters_.profile = AV_PROFILE_AAC_ELD;
+ test_parameters_.profile = FF_PROFILE_AAC_ELD;
FFmpegAACBitstreamConverter converter_eld(&test_parameters_);
test_packet = ScopedAVPacket::Allocate();

View file

@ -1,13 +0,0 @@
diff -up chromium-139.0.7258.127/build/rust/cargo_crate.gni.than chromium-139.0.7258.127/build/rust/cargo_crate.gni
--- chromium-139.0.7258.127/build/rust/cargo_crate.gni.than 2025-08-14 09:44:51.783560032 +0200
+++ chromium-139.0.7258.127/build/rust/cargo_crate.gni 2025-08-14 09:48:37.407051268 +0200
@@ -310,6 +310,9 @@ template("cargo_crate") {
rustflags +=
[ "-Awarnings" ] # Suppress other warnings in 3rd-party crates.
+ rustflags +=
+ [ "--cap-lints=warn" ] # Suppress other warnings, causes FTBFS in Fedora build rhbz#2387446
+
if (!defined(build_native_rust_unit_tests)) {
build_native_rust_unit_tests = _crate_type != "proc-macro"
}

View file

@ -1,16 +0,0 @@
Fix ftbfs
v8/include/cppgc/visitor.h:440:19: error: invalid application of 'sizeof' to an incomplete type 'blink::CSSStyleSheet'
440 | static_assert(sizeof(T), "Pointee type must be fully defined.");
diff -up chromium-141.0.7390.37/third_party/blink/renderer/bindings/scripts/bind_gen/observable_array.py.ftbfs-csss_style_sheet chromium-141.0.7390.37/third_party/blink/renderer/bindings/scripts/bind_gen/observable_array.py
--- chromium-141.0.7390.37/third_party/blink/renderer/bindings/scripts/bind_gen/observable_array.py.ftbfs-csss_style_sheet 2025-09-23 22:21:14.000000000 +0200
+++ chromium-141.0.7390.37/third_party/blink/renderer/bindings/scripts/bind_gen/observable_array.py 2025-10-01 17:55:51.303926035 +0200
@@ -433,6 +433,7 @@ def generate_observable_array(observable
header_node.accumulator.add_include_headers([
component_export_header(api_component, for_testing),
"third_party/blink/renderer/bindings/core/v8/idl_types.h",
+ "third_party/blink/renderer/core/css/css_style_sheet.h",
"third_party/blink/renderer/platform/bindings/observable_array.h",
])
source_node.accumulator.add_include_headers([

View file

@ -1,29 +0,0 @@
Fix FTBFS
/usr/include/bits/siginfo-consts.h:219:3: error: expected identifier
219 | SYS_SECCOMP = 1, /* Seccomp triggered. */
| ^
../../sandbox/linux/system_headers/linux_seccomp.h:220:39: note: expanded from macro 'SYS_SECCOMP'
220 | #define SYS_SECCOMP 1
| ^
../../sandbox/linux/seccomp-bpf/trap.cc:159:46: error: use of undeclared identifier 'SYS_SECCOMP'
159 | if (nr != LINUX_SIGSYS || info->si_code != SYS_SECCOMP || !ctx ||
| ^~~~~~~~~~~
/usr/include/bits/siginfo-consts.h:220:23: note: expanded from macro 'SYS_SECCOMP'
220 | # define SYS_SECCOMP SYS_SECCOMP
diff -up chromium-141.0.7390.122/sandbox/linux/system_headers/linux_seccomp.h.me chromium-141.0.7390.122/sandbox/linux/system_headers/linux_seccomp.h
--- chromium-141.0.7390.122/sandbox/linux/system_headers/linux_seccomp.h.me 2025-10-28 10:05:44.970248151 +0100
+++ chromium-141.0.7390.122/sandbox/linux/system_headers/linux_seccomp.h 2025-10-28 10:05:52.291345772 +0100
@@ -214,8 +214,11 @@ struct seccomp_notif_addfd {
#define SECCOMP_RET_INVALID 0x00010000U // Illegal return value
#endif
+// check glibc version < 2.42
+#if (__GLIBC__ < 2) || (__GLIBC__ == 2 && __GLIBC_MINOR__ < 42)
#ifndef SYS_SECCOMP
#define SYS_SECCOMP 1
#endif
+#endif
#endif // SANDBOX_LINUX_SYSTEM_HEADERS_LINUX_SECCOMP_H_

View file

@ -1,28 +0,0 @@
Fix FTBFS
../../build/modules/linux-x64/module.modulemap:11:12: error: header '../../linux/debian_bullseye_amd64-sysroot/usr/include/alloca.h' not found
11 | header "../../linux/debian_bullseye_amd64-sysroot/usr/include/alloca.h"
| ^
1 error generated
diff -up chromium-141.0.7390.37/build/config/BUILDCONFIG.gn.me chromium-141.0.7390.37/build/config/BUILDCONFIG.gn
--- chromium-141.0.7390.37/build/config/BUILDCONFIG.gn.me 2025-10-01 17:39:47.242174153 +0200
+++ chromium-141.0.7390.37/build/config/BUILDCONFIG.gn 2025-10-01 17:49:54.736578295 +0200
@@ -557,6 +557,8 @@ foreach(_target_type,
]) {
template(_target_type) {
target(_target_type, target_name) {
+ use_libcxx_modules = false
+
forward_variables_from(invoker, "*", TESTONLY_AND_VISIBILITY)
forward_variables_from(invoker, TESTONLY_AND_VISIBILITY)
if (!defined(inputs)) {
@@ -660,6 +662,8 @@ foreach(_target_type,
# TODO(crbug.com/326584510): Reclient doesn't respect this variable, see
# rbe_bug_326584510_missing_inputs in //build/config/clang/clang.gni
_uses_cflags = false
+ use_libcxx_modules = false
+
if (defined(sources)) {
foreach(f, sources) {
if (string_replace(f + ".END", ".cc.END", "") != f + ".END" ||

View file

@ -1,13 +0,0 @@
diff -up chromium-142.0.7444.52/build/config/compiler/BUILD.gn.clang++-unsupported-argument chromium-142.0.7444.52/build/config/compiler/BUILD.gn
--- chromium-142.0.7444.52/build/config/compiler/BUILD.gn.clang++-unsupported-argument 2025-10-28 19:41:59.131433882 +0100
+++ chromium-142.0.7444.52/build/config/compiler/BUILD.gn 2025-10-28 19:42:51.792779638 +0100
@@ -2160,9 +2160,6 @@ config("default_warnings") {
# TODO(crbug.com/40284799): Fix and re-enable.
"-Wno-thread-safety-reference-return",
- # TODO(crbug.com/376641662): Fix and re-enable.
- "-Wno-nontrivial-memcall",
-
# TODO(crbug.com/432275627): Fix and re-enable.
"-Wno-uninitialized-const-pointer",
]

View file

@ -1,24 +0,0 @@
Workaround for FTBFS
error: cannot find attribute `sanitize` in this scope
--> ../../third_party/crabbyavif/src/src/capi/io.rs:210:41
|
210 | #[cfg_attr(feature = "disable_cfi", sanitize(cfi = "off"))]
diff -up chromium-142.0.7444.52/third_party/crabbyavif/BUILD.gn.me chromium-142.0.7444.52/third_party/crabbyavif/BUILD.gn
--- chromium-142.0.7444.52/third_party/crabbyavif/BUILD.gn.me 2025-10-27 10:40:59.373768499 +0100
+++ chromium-142.0.7444.52/third_party/crabbyavif/BUILD.gn 2025-10-27 10:45:12.142749942 +0100
@@ -197,12 +197,11 @@ rust_static_library("crabbyavif") {
"dav1d",
"libyuv",
"capi",
- "disable_cfi",
]
# Required for disable_cfi feature.
configs -= [ "//build/config/compiler:disallow_unstable_features" ]
- rustflags = [ "-Zallow-features=sanitize" ]
+ rustflags = [ "-Zallow-features=no_sanitize" ]
public_deps = [ ":header_files" ]
deps = [

View file

@ -1,136 +0,0 @@
diff -up chromium-142.0.7444.59/media/ffmpeg/ffmpeg_common.cc.el9-ffmpeg-5.1.x chromium-142.0.7444.59/media/ffmpeg/ffmpeg_common.cc
--- chromium-142.0.7444.59/media/ffmpeg/ffmpeg_common.cc.el9-ffmpeg-5.1.x 2025-11-01 22:14:10.116779876 +0100
+++ chromium-142.0.7444.59/media/ffmpeg/ffmpeg_common.cc 2025-11-01 22:14:10.134140132 +0100
@@ -800,8 +803,13 @@ bool AVStreamToVideoDecoderConfig(const
}
VideoTransformation video_transformation = VideoTransformation();
+#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(60, 31, 102)
+ for (int i = 0; i < stream->nb_side_data; i++) {
+ const auto& side_data = stream->side_data[i];
+#else
for (const auto& side_data :
AVCodecParametersCodedSideToSpan(stream->codecpar)) {
+#endif
switch (side_data.type) {
case AV_PKT_DATA_DISPLAYMATRIX: {
CHECK_EQ(side_data.size, sizeof(int32_t) * 3 * 3);
diff -up chromium-142.0.7444.59/media/ffmpeg/ffmpeg_common.h.el9-ffmpeg-5.1.x chromium-142.0.7444.59/media/ffmpeg/ffmpeg_common.h
--- chromium-142.0.7444.59/media/ffmpeg/ffmpeg_common.h.el9-ffmpeg-5.1.x 2025-10-24 18:42:30.000000000 +0200
+++ chromium-142.0.7444.59/media/ffmpeg/ffmpeg_common.h 2025-11-02 08:06:48.997329630 +0100
@@ -111,9 +111,13 @@ inline base::span<AVPacketSideData> AVCo
// https://ffmpeg.org/doxygen/trunk/structAVCodecParameters.html#a29643cfd94231e2d148a5d17b08d115b
// ffmpeg documentation: `nb_coded_side_data` is the amount of entries in
// `coded_side_data`.
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(60, 31, 102)
return UNSAFE_BUFFERS(
base::span(codecpar->coded_side_data,
base::checked_cast<size_t>(codecpar->nb_coded_side_data)));
+#else
+ return base::span<AVPacketSideData>();
+#endif
}
// Converts an int64_t timestamp in |time_base| units to a base::TimeDelta.
diff -up chromium-142.0.7444.59/media/filters/audio_video_metadata_extractor.cc.el9-ffmpeg-5.1.x chromium-142.0.7444.59/media/filters/audio_video_metadata_extractor.cc
--- chromium-142.0.7444.59/media/filters/audio_video_metadata_extractor.cc.el9-ffmpeg-5.1.x 2025-10-24 18:42:30.000000000 +0200
+++ chromium-142.0.7444.59/media/filters/audio_video_metadata_extractor.cc 2025-11-01 22:14:10.124748634 +0100
@@ -109,17 +109,33 @@ bool AudioVideoMetadataExtractor::Extrac
container_info.type = format_context->iformat->name;
ExtractDictionary(format_context->metadata, &container_info.tags);
+#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(60, 31, 102)
+ for (unsigned int i = 0; i < format_context->nb_streams; ++i) {
+ stream_infos_.push_back(StreamInfo());
+#else
base::span<AVStream*> format_context_span =
AVFormatContextToSpan(format_context);
std::ranges::for_each(format_context_span, [&](AVStream* stream) {
stream_infos_.emplace_back();
+#endif
StreamInfo& info = stream_infos_.back();
+#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(60, 31, 102)
+ AVStream* stream = format_context->streams[i];
+ if (!stream)
+ continue;
+#else
if (!stream) {
return;
}
+#endif
+#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(60, 31, 102)
+ for (int j = 0; j < stream->nb_side_data; j++) {
+ const AVPacketSideData& sd = stream->side_data[j];
+#else
for (const auto& sd : AVCodecParametersCodedSideToSpan(stream->codecpar)) {
+#endif
if (sd.type == AV_PKT_DATA_DISPLAYMATRIX) {
CHECK_EQ(sd.size, sizeof(int32_t) * 3 * 3);
rotation_ = VideoTransformation::FromFFmpegDisplayMatrix(
@@ -135,7 +151,11 @@ bool AudioVideoMetadataExtractor::Extrac
ExtractDictionary(stream->metadata, &info.tags);
if (!stream->codecpar) {
+#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(60, 31, 102)
+ continue;
+#else
return;
+#endif
}
info.type = avcodec_get_name(stream->codecpar->codec_id);
@@ -158,7 +178,11 @@ bool AudioVideoMetadataExtractor::Extrac
reinterpret_cast<const char*>(stream->attached_pic.data),
stream->attached_pic.size);
}
+#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(60, 31, 102)
+ }
+#else
});
+#endif
extracted_ = true;
return true;
diff -up chromium-142.0.7444.59/media/filters/media_file_checker.cc.el9-ffmpeg-5.1.x chromium-142.0.7444.59/media/filters/media_file_checker.cc
--- chromium-142.0.7444.59/media/filters/media_file_checker.cc.el9-ffmpeg-5.1.x 2025-10-24 18:42:30.000000000 +0200
+++ chromium-142.0.7444.59/media/filters/media_file_checker.cc 2025-11-01 22:14:10.125099595 +0100
@@ -64,6 +64,10 @@ bool MediaFileChecker::Start(base::TimeD
// Remember the codec context for any decodable audio or video streams.
bool found_streams = false;
std::vector<Decoder> stream_contexts(format_context->nb_streams);
+#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(60, 31, 102)
+ for (size_t i = 0; i < format_context->nb_streams; ++i) {
+ AVCodecParameters* cp = format_context->streams[i]->codecpar;
+#else
base::span<AVStream*> format_context_span =
AVFormatContextToSpan(format_context);
std::ranges::transform(
@@ -85,9 +89,26 @@ bool MediaFileChecker::Start(base::TimeD
}
}
+#endif
+#if LIBAVCODEC_VERSION_INT < AV_VERSION_INT(60, 31, 102)
+ if (cp->codec_type == AVMEDIA_TYPE_AUDIO ||
+ cp->codec_type == AVMEDIA_TYPE_VIDEO) {
+ auto context = AVStreamToAVCodecContext(format_context->streams[i]);
+ if (!context)
+ continue;
+ const AVCodec* codec = avcodec_find_decoder(cp->codec_id);
+ if (codec && avcodec_open2(context.get(), codec, nullptr) >= 0) {
+ auto loop = std::make_unique<FFmpegDecodingLoop>(context.get());
+ stream_contexts[i] = {std::move(context), std::move(loop)};
+ found_streams = true;
+ }
+ }
+ }
+#else
return Decoder{};
});
+#endif
if (!found_streams)
return false;

View file

@ -1,18 +0,0 @@
Fix FTBFS on EL9 due to old ffmpeg-5.x
diff -up chromium-142.0.7444.59/media/filters/legacy_audio_file_reader.cc.me chromium-142.0.7444.59/media/filters/legacy_audio_file_reader.cc
--- chromium-142.0.7444.59/media/filters/legacy_audio_file_reader.cc.me 2025-11-02 08:20:16.949092776 +0100
+++ chromium-142.0.7444.59/media/filters/legacy_audio_file_reader.cc 2025-11-02 08:22:01.331132435 +0100
@@ -273,10 +273,10 @@ bool LegacyAudioFileReader::OnNewFrame(
// silence from being output. In the case where we are also discarding some
// portion of the packet (as indicated by a negative pts), we further want to
// adjust the duration downward by however much exists before zero.
- if (audio_codec_ == AudioCodec::kAAC && frame->duration) {
+ if (audio_codec_ == AudioCodec::kAAC && frame->pkt_duration) {
const base::TimeDelta pkt_duration = ConvertFromTimeBase(
UNSAFE_TODO(glue_->format_context()->streams[stream_index_])->time_base,
- frame->duration + std::min(static_cast<int64_t>(0), frame->pts));
+ frame->pkt_duration + std::min(static_cast<int64_t>(0), frame->pts));
const base::TimeDelta frame_duration =
base::Seconds(frames_read / static_cast<double>(sample_rate_));

View file

@ -1,32 +0,0 @@
commit 069d424e41f42c6f4a4551334eafc7cfaed6e880
Author: Nathan Pratta Teodosio <nathan.teodosio@canonical.com>
Date: Mon Oct 13 02:29:29 2025 -0700
Add missing include for FormFieldData type completeness.
Bug: 450752866
Change-Id: I25b2d6cd627063e006014289de68d2ecc70a2db7
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7030724
Reviewed-by: Christoph Schwering <schwering@google.com>
Reviewed-by: Jihad Hanna <jihadghanna@google.com>
Commit-Queue: Jihad Hanna <jihadghanna@google.com>
Reviewed-by: Matthias Körber <koerber@google.com>
Cr-Commit-Position: refs/heads/main@{#1528799}
diff --git a/components/autofill/core/browser/form_parsing/autofill_scanner.h b/components/autofill/core/browser/form_parsing/autofill_scanner.h
index 844526a5f77..eab073266e8 100644
--- a/components/autofill/core/browser/form_parsing/autofill_scanner.h
+++ b/components/autofill/core/browser/form_parsing/autofill_scanner.h
@@ -10,11 +10,10 @@
#include "base/compiler_specific.h"
#include "base/containers/span.h"
#include "base/memory/raw_span.h"
+#include "components/autofill/core/common/form_field_data.h"
namespace autofill {
-class FormFieldData;
-
// A helper class for parsing a stream of |FormFieldData|'s with lookahead.
class AutofillScanner {
private:

View file

@ -1,26 +0,0 @@
diff -up chromium-142.0.7444.52/build/config/compiler/BUILD.gn.split-threshold-for-reg-with-hint chromium-142.0.7444.52/build/config/compiler/BUILD.gn
--- chromium-142.0.7444.52/build/config/compiler/BUILD.gn.split-threshold-for-reg-with-hint 2025-10-28 19:31:53.885979941 +0100
+++ chromium-142.0.7444.52/build/config/compiler/BUILD.gn 2025-10-28 19:39:50.279574752 +0100
@@ -680,22 +680,6 @@ config("compiler") {
}
}
- # TODO(crbug.com/40283598): This causes binary size growth and potentially
- # other problems.
- if (default_toolchain != "//build/toolchain/cros:target") {
- cflags += [
- "-mllvm",
- "-split-threshold-for-reg-with-hint=0",
- ]
- if (use_thin_lto && is_a_target_toolchain) {
- if (is_win) {
- ldflags += [ "-mllvm:-split-threshold-for-reg-with-hint=0" ]
- } else {
- ldflags += [ "-Wl,-mllvm,-split-threshold-for-reg-with-hint=0" ]
- }
- }
- }
-
# TODO(crbug.com/40192287): Investigate why/if this should be needed.
if (is_win) {
cflags += [ "/clang:-ffp-contract=off" ]

View file

@ -1,38 +0,0 @@
diff -up chromium-142.0.7444.52/net/filter/brotli_source_stream.cc.system-brotli chromium-142.0.7444.52/net/filter/brotli_source_stream.cc
--- chromium-142.0.7444.52/net/filter/brotli_source_stream.cc.system-brotli 2025-10-21 22:19:54.000000000 +0200
+++ chromium-142.0.7444.52/net/filter/brotli_source_stream.cc 2025-10-26 16:55:51.220605842 +0100
@@ -14,8 +14,8 @@
#include "base/metrics/histogram_macros.h"
#include "net/base/io_buffer.h"
#include "net/filter/source_stream_type.h"
-#include "third_party/brotli/include/brotli/decode.h"
-#include "third_party/brotli/include/brotli/shared_dictionary.h"
+#include <brotli/decode.h>
+#include <brotli/shared_dictionary.h>
namespace net {
diff -up chromium-142.0.7444.52/net/ssl/cert_compression.cc.system-brotli chromium-142.0.7444.52/net/ssl/cert_compression.cc
--- chromium-142.0.7444.52/net/ssl/cert_compression.cc.system-brotli 2025-10-21 22:19:54.000000000 +0200
+++ chromium-142.0.7444.52/net/ssl/cert_compression.cc 2025-10-26 16:55:51.220845216 +0100
@@ -9,7 +9,7 @@
#include "third_party/boringssl/src/include/openssl/ssl.h"
#if !defined(NET_DISABLE_BROTLI)
-#include "third_party/brotli/include/brotli/decode.h"
+#include <brotli/decode.h>
#endif
namespace net {
diff -up chromium-142.0.7444.52/ui/base/resource/resource_bundle.cc.system-brotli chromium-142.0.7444.52/ui/base/resource/resource_bundle.cc
--- chromium-142.0.7444.52/ui/base/resource/resource_bundle.cc.system-brotli 2025-10-21 22:19:54.000000000 +0200
+++ chromium-142.0.7444.52/ui/base/resource/resource_bundle.cc 2025-10-26 17:04:17.085726059 +0100
@@ -37,7 +37,7 @@
#include "build/build_config.h"
#include "net/filter/gzip_header.h"
#include "skia/ext/image_operations.h"
-#include "third_party/brotli/include/brotli/decode.h"
+#include <brotli/decode.h>
#include "third_party/skia/include/codec/SkPngRustDecoder.h"
#include "third_party/skia/include/core/SkBitmap.h"
#include "third_party/skia/include/core/SkColor.h"

View file

@ -1,26 +0,0 @@
Workaround auto darkmode issue, image are not inverted correctly in darkmode
diff -up chromium-143.0.7499.40/third_party/blink/renderer/platform/graphics/dark_mode_image_classifier.cc.than chromium-143.0.7499.40/third_party/blink/renderer/platform/graphics/dark_mode_image_classifier.cc
--- chromium-143.0.7499.40/third_party/blink/renderer/platform/graphics/dark_mode_image_classifier.cc.than 2025-12-09 12:28:52.592092242 +0100
+++ chromium-143.0.7499.40/third_party/blink/renderer/platform/graphics/dark_mode_image_classifier.cc 2025-12-09 12:42:57.776716951 +0100
@@ -276,16 +276,20 @@ DarkModeResult DarkModeImageClassifier::
float high_color_count_threshold =
kHighColorCountThreshold[features.is_colorful];
+#if 0
// Very few colors means it's not a photo, apply the filter.
if (features.color_buckets_ratio < low_color_count_threshold)
return DarkModeResult::kApplyFilter;
+#endif
// Too many colors means it's probably photorealistic, do not apply it.
if (features.color_buckets_ratio > high_color_count_threshold)
return DarkModeResult::kDoNotApplyFilter;
+#if 0
// In-between, decision tree cannot give a precise result.
return DarkModeResult::kNotClassified;
+#endif
}
} // namespace blink

View file

@ -1,22 +0,0 @@
Fix build errors:
error[E0428]: the name `__rust_alloc_error_handler_should_panic_v2` is defined multiple times
--> ../../build/rust/allocator/lib.rs:101:5
error: undefined symbol: __rust_no_alloc_shim_is_unstable
diff -up chromium-141.0.7390.37/build/rust/allocator/lib.rs.rust-no-alloc-shim-is-unstable chromium-141.0.7390.37/build/rust/allocator/lib.rs
--- chromium-141.0.7390.37/build/rust/allocator/lib.rs.rust-no-alloc-shim-is-unstable 2025-09-23 22:21:14.000000000 +0200
+++ chromium-141.0.7390.37/build/rust/allocator/lib.rs 2025-09-27 15:14:54.661952048 +0200
@@ -103,6 +103,11 @@ mod both_allocators {
#[linkage = "weak"]
static __rust_alloc_error_handler_should_panic: u8 = 0;
+ // Mangle the symbol name as rustc (1.84) expects on EL9
+ #[unsafe(no_mangle)]
+ #[linkage = "weak"]
+ static __rust_no_alloc_shim_is_unstable: u8 = 0;
+
// Mangle the symbol name as rustc expects.
#[rustc_std_internal_symbol]
#[allow(non_upper_case_globals)]

View file

@ -1,17 +0,0 @@
diff -up chromium-142.0.7444.162/build/rust/allocator/lib.rs.el9-rust_alloc_error_handler_should_panic chromium-142.0.7444.162/build/rust/allocator/lib.rs
--- chromium-142.0.7444.162/build/rust/allocator/lib.rs.el9-rust_alloc_error_handler_should_panic 2025-11-12 09:39:31.616713829 +0100
+++ chromium-142.0.7444.162/build/rust/allocator/lib.rs 2025-11-14 11:43:32.115426831 +0100
@@ -96,6 +96,13 @@ mod both_allocators {
0
}
+ // Mangle the symbol name as rustc (1.88) expects on EL9
+ #[rustc_std_internal_symbol]
+ #[linkage = "weak"]
+ fn __rust_alloc_error_handler_should_panic() -> u8 {
+ 0
+ }
+
// Mangle the symbol name as rustc (1.84) expects on EL9
#[unsafe(no_mangle)]
#[linkage = "weak"]

View file

@ -1,73 +0,0 @@
Author: <than@redhat.com>
Fix build error caused by python-3.9 on EL9
Traceback (most recent call last):
File "/builddir/build/BUILD/chromium-143.0.7499.40/out/Release/../../tools/metrics/histograms/generate_allowlist_from_histograms_file.py", line 10, in <module>
import extract_histograms
File "/builddir/build/BUILD/chromium-143.0.7499.40/tools/metrics/histograms/extract_histograms.py", line 24, in <module>
import xml_utils
File "/builddir/build/BUILD/chromium-143.0.7499.40/tools/metrics/histograms/../common/xml_utils.py", line 14, in <module>
DomTree = minidom.Element | minidom.Document
TypeError: unsupported operand type(s) for |: 'type' and 'type'
diff -up chromium-143.0.7499.40/tools/metrics/histograms/extract_histograms.py.python-3.9-ftbfs chromium-143.0.7499.40/tools/metrics/histograms/extract_histograms.py
--- chromium-143.0.7499.40/tools/metrics/histograms/extract_histograms.py.python-3.9-ftbfs 2025-11-19 22:40:05.000000000 +0100
+++ chromium-143.0.7499.40/tools/metrics/histograms/extract_histograms.py 2025-12-02 17:23:41.996802101 +0100
@@ -18,6 +18,7 @@ import re
import sys
from typing import TypedDict
import xml.dom.minidom
+from typing import Optional, Union
sys.path.append(os.path.join(os.path.dirname(__file__), '..', 'common'))
import xml_utils
@@ -84,7 +85,7 @@ class EnumDict(TypedDict, total=False):
"""A dict representing an enum."""
name: str
- type: str | None
+ type: Optional[str]
buckets: list[_BucketDict]
summary: str
@@ -108,7 +109,7 @@ def ExpandHistogramNameWithSuffixes(
suffix_name: str,
histogram_name: str,
histogram_suffixes_node: xml.dom.minidom.Element,
-) -> tuple[str | None, ExtractionErrors]:
+) -> tuple[Optional[str], ExtractionErrors]:
"""Creates a new histogram name based on a histogram suffix.
Args:
@@ -310,7 +311,7 @@ def _ExtractOwners(node: xml.dom.minidom
def _ExtractImprovementDirection(
histogram_node: xml.dom.minidom.Element,
-) -> tuple[str | None, ExtractionErrors]:
+) -> tuple[Union[str, None], ExtractionErrors]:
"""Extracts improvement direction from the given histogram element, if any.
Args:
@@ -644,7 +645,7 @@ def ExtractVariantsFromXmlTree(
return variants_dict, errors
-def _GetObsoleteReason(node: xml.dom.minidom.Element) -> str | None:
+def _GetObsoleteReason(node: xml.dom.minidom.Element) -> Optional[str]:
"""If the node's histogram is obsolete, returns a string explanation.
Otherwise, returns None.
diff -up chromium-143.0.7499.40/tools/metrics/common/xml_utils.py.than chromium-143.0.7499.40/tools/metrics/common/xml_utils.py
--- chromium-143.0.7499.40/tools/metrics/common/xml_utils.py.than 2025-12-04 17:48:11.924111675 +0100
+++ chromium-143.0.7499.40/tools/metrics/common/xml_utils.py 2025-12-04 17:49:42.451979769 +0100
@@ -11,7 +11,8 @@ from xml.dom import minidom
# The implementation of Node type is possible with extra runtime checks, however
# using a more specific type makes the intent clearer and avoids potential
# warnings about attributes like `tagName` not being present on all Node types.
-DomTree = minidom.Element | minidom.Document
+from typing import Union
+DomTree = Union[minidom.Element, minidom.Document]
_ELEMENT_NODE = minidom.Node.ELEMENT_NODE

View file

@ -1,137 +0,0 @@
commit 4f7637304eca894adf2e70078a55654a88224a30
Author: Lukasz Anforowicz <lukasza@chromium.org>
Date: Tue Sep 30 07:08:03 2025 -0700
[rust png] Reland: Reinforce `testonly`-ness of some users of `libpng`.
This reverts commit 7fa4c2d7ab42a48247ce8e0290cbb7e854990f1e and
effectively relands https://crrev.com/c/6976870. The reland is
attempted after using wildcards to cover extra gni-generated targets.
`Cq-Include-Trybots` directives in the CL description should verify
correctness of the reland. Original CL description follows:
This CL extracts a separate `third_party/libpng:libpng_for_testonly`
target which:
1) Is a `group` that proxies/forwards to the `libpng` target by listing
it as its `public_deps`
2) Has limited visibility (based on the new `libpng_testonly_visibility`
introduced in the refactored `third_party/libpng/visibility.gni`).
The new visibility is almost unchanged, except for explicitly
spelling out some targets instead of using wildcards
3) Is marked as `testonly`
Bug: 443128323
Change-Id: If7ba0d184324a5c662aaf2d52122994ea778d452
Cq-Include-Trybots: luci.chromium.try:ios-catalyst
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6991491
Auto-Submit: Łukasz Anforowicz <lukasza@chromium.org>
Commit-Queue: Łukasz Anforowicz <lukasza@chromium.org>
Reviewed-by: Nico Weber <thakis@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1522830}
diff --git a/chrome/test/BUILD.gn b/chrome/test/BUILD.gn
index a4703c3692d..2d70f7a5fe9 100644
--- a/chrome/test/BUILD.gn
+++ b/chrome/test/BUILD.gn
@@ -11152,7 +11152,7 @@ if (!is_android) {
"//testing/gtest",
"//third_party/hunspell",
"//third_party/icu",
- "//third_party/libpng",
+ "//third_party/libpng:libpng_for_testonly",
"//ui/base:test_support",
"//ui/events:test_support",
"//ui/ozone",
@@ -11512,7 +11512,7 @@ if (!is_android && !is_chromeos_device) {
"//testing/gtest",
"//third_party/hunspell",
"//third_party/icu",
- "//third_party/libpng",
+ "//third_party/libpng:libpng_for_testonly",
"//ui/base:base_interactive_ui_tests",
"//ui/base:ozone_buildflags",
"//ui/base:test_support",
@@ -12470,7 +12470,7 @@ if (!is_android) {
"//testing/gtest",
"//third_party/hunspell",
"//third_party/icu",
- "//third_party/libpng",
+ "//third_party/libpng:libpng_for_testonly",
"//ui/base:test_support",
"//ui/resources:ui_test_pak",
"//ui/views",
diff --git a/testing/libfuzzer/fuzzers/BUILD.gn b/testing/libfuzzer/fuzzers/BUILD.gn
index 7d242e177f0..1c67eee1598 100644
--- a/testing/libfuzzer/fuzzers/BUILD.gn
+++ b/testing/libfuzzer/fuzzers/BUILD.gn
@@ -104,7 +104,7 @@ fuzzer_test("libpng_progressive_read_fuzzer") {
sources = [ "libpng_read_fuzzer.cc" ]
deps = [
"//base",
- "//third_party/libpng",
+ "//third_party/libpng:libpng_for_testonly",
]
dict = "dicts/png.dict"
seed_corpuses = libpng_seed_corpuses
diff --git a/third_party/libpng/BUILD.gn b/third_party/libpng/BUILD.gn
index d4bdea1e33c..3e31348b94f 100644
--- a/third_party/libpng/BUILD.gn
+++ b/third_party/libpng/BUILD.gn
@@ -130,6 +130,14 @@ if (is_win) {
}
}
+group("libpng_for_testonly") {
+ testonly = true
+ public_deps = [ ":libpng" ]
+
+ visibility = []
+ visibility = libpng_testonly_visibility
+}
+
if (build_with_chromium) {
libpng_ossfuzz_seed_corpuses = [
"//components/test/data/viz",
diff --git a/tools/imagediff/BUILD.gn b/tools/imagediff/BUILD.gn
index d56651bedc7..2b5f3d38488 100644
--- a/tools/imagediff/BUILD.gn
+++ b/tools/imagediff/BUILD.gn
@@ -34,6 +34,7 @@ if (target_os == "win" && host_os != "win") {
# If the current toolchain is the test host toolchain, build the tool.
if (current_toolchain == imagediff_toolchain) {
executable("imagediff") {
+ testonly = true
output_name = "image_diff" # Different than dir name for historical
# reasons.
sources = [
@@ -47,7 +48,7 @@ if (current_toolchain == imagediff_toolchain) {
deps = [
"//base",
"//build/win:default_exe_manifest",
- "//third_party/libpng",
+ "//third_party/libpng:libpng_for_testonly",
"//third_party/zlib",
]
}
@@ -60,6 +61,7 @@ if (current_toolchain == imagediff_toolchain) {
} else if (current_toolchain == default_toolchain &&
default_toolchain != imagediff_toolchain) {
binary_symlink("imagediff") {
+ testonly = true
binary_label = ":$target_name($imagediff_toolchain)"
binary_output_name = "image_diff"
diff --git a/ui/gfx/BUILD.gn b/ui/gfx/BUILD.gn
index f6a40abfe99..83d8f55027a 100644
--- a/ui/gfx/BUILD.gn
+++ b/ui/gfx/BUILD.gn
@@ -906,7 +906,7 @@ test("gfx_unittests") {
"//skia:skcms",
"//testing/gtest",
"//third_party/icu:icuuc",
- "//third_party/libpng",
+ "//third_party/libpng:libpng_for_testonly",
"//third_party/zlib",
"//ui/base",
"//ui/gfx/animation",

View file

@ -1,12 +0,0 @@
diff -up chromium-143.0.7499.40/third_party/swiftshader/src/Reactor/BUILD.gn.llvm-16 chromium-143.0.7499.40/third_party/swiftshader/src/Reactor/BUILD.gn
--- chromium-143.0.7499.40/third_party/swiftshader/src/Reactor/BUILD.gn.llvm-16 2025-12-02 23:25:25.379315827 +0100
+++ chromium-143.0.7499.40/third_party/swiftshader/src/Reactor/BUILD.gn 2025-12-02 23:25:58.697291861 +0100
@@ -307,7 +307,7 @@ if (supports_subzero) {
if (supports_llvm) {
swiftshader_source_set("swiftshader_llvm_reactor") {
- llvm_dir = "../../third_party/llvm-10.0"
+ llvm_dir = "../../third_party/llvm-16.0"
deps = [
":swiftshader_reactor_base",

View file

@ -1,66 +0,0 @@
diff -up chromium-144.0.7559.31/build/config/clang/BUILD.gn.rust-clang_lib chromium-144.0.7559.31/build/config/clang/BUILD.gn
--- chromium-144.0.7559.31/build/config/clang/BUILD.gn.rust-clang_lib 2025-12-17 01:06:32.000000000 +0100
+++ chromium-144.0.7559.31/build/config/clang/BUILD.gn 2025-12-23 19:01:33.876897379 +0100
@@ -177,7 +177,21 @@ template("clang_lib") {
}
} else if (is_apple) {
_dir = "darwin"
- } else if (is_linux || is_chromeos) {
+ } else if (is_linux) {
+ if (current_cpu == "x64") {
+ _dir = "x86_64-redhat-linux-gnu"
+ } else if (current_cpu == "x86") {
+ _dir = "i386-redhat-linux-gnu"
+ } else if (current_cpu == "arm64") {
+ _dir = "aarch64-redhat-linux-gnu"
+ } else if (current_cpu == "arm") {
+ _dir = "armhf-redhat-linux-gnu"
+ } else if (current_cpu == "ppc64") {
+ _dir = "ppc64le-redhat-linux-gnu"
+ } else {
+ assert(false) # Unhandled cpu type
+ }
+ } else if (is_chromeos) {
if (current_cpu == "x64") {
_dir = "x86_64-unknown-linux-gnu"
} else if (current_cpu == "x86") {
diff -up chromium-144.0.7559.31/build/rust/rust_bindgen_generator.gni.rust-clang_lib chromium-144.0.7559.31/build/rust/rust_bindgen_generator.gni
--- chromium-144.0.7559.31/build/rust/rust_bindgen_generator.gni.rust-clang_lib 2025-12-17 01:06:32.000000000 +0100
+++ chromium-144.0.7559.31/build/rust/rust_bindgen_generator.gni 2025-12-23 19:21:34.335924481 +0100
@@ -26,14 +26,14 @@ if (!use_chromium_rust_toolchain &&
# On Windows, the libclang.dll is beside the bindgen.exe, otherwise it is in
# ../lib.
-_libclang_path = rust_bindgen_root
+_libclang_path = clang_base_path
if (!use_chromium_rust_toolchain &&
(host_cpu == "ppc64" || host_cpu == "s390x")) {
_libclang_path = rust_sysroot_absolute + "/lib64"
} else if (host_os == "win") {
_libclang_path += "/bin"
} else {
- _libclang_path += "/lib"
+ _libclang_path += "/lib64"
}
# Template to build Rust/C bindings with bindgen.
diff -up chromium-144.0.7559.31/build/rust/rust_bindgen.gni.rust-clang_lib chromium-144.0.7559.31/build/rust/rust_bindgen.gni
--- chromium-144.0.7559.31/build/rust/rust_bindgen.gni.rust-clang_lib 2025-12-17 01:06:32.000000000 +0100
+++ chromium-144.0.7559.31/build/rust/rust_bindgen.gni 2025-12-23 19:22:12.089755683 +0100
@@ -19,14 +19,14 @@ if (host_os == "win") {
# On Windows, the libclang.dll is beside the bindgen.exe, otherwise it is in
# ../lib.
-_libclang_path = rust_bindgen_root
+_libclang_path = clang_base_path
if (!use_chromium_rust_toolchain &&
(current_cpu == "ppc64" || current_cpu == "s390x")) {
_libclang_path = rust_sysroot_absolute + "/lib64"
} else if (host_os == "win") {
_libclang_path += "/bin"
} else {
- _libclang_path += "/lib"
+ _libclang_path += "/lib64"
}
# Template to build Rust/C bindings with bindgen.

View file

@ -1,16 +0,0 @@
diff -up chromium-144.0.7559.31/build/rust/std/BUILD.gn.than chromium-144.0.7559.31/build/rust/std/BUILD.gn
--- chromium-144.0.7559.31/build/rust/std/BUILD.gn.than 2025-12-26 15:06:36.274081861 +0100
+++ chromium-144.0.7559.31/build/rust/std/BUILD.gn 2025-12-26 16:11:45.697054423 +0100
@@ -55,11 +55,7 @@ if (toolchain_has_rust) {
"miniz_oxide",
"object",
]
- if (rustc_nightly_capability) {
- stdlib_files += [ "adler2" ]
- } else {
- stdlib_files += [ "adler" ]
- }
+ stdlib_files += [ "adler2" ]
}
if (toolchain_for_rust_host_build_tools) {

View file

@ -0,0 +1,22 @@
--- chromium-60.0.3112.40/build/linux/unbundle/ffmpeg.gn.ffmpeg-deprecation 2017-06-25 13:24:47.390218631 +0200
+++ chromium-60.0.3112.40/build/linux/unbundle/ffmpeg.gn 2017-06-25 13:32:48.528583949 +0200
@@ -19,6 +19,12 @@
flags = [ "USE_SYSTEM_FFMPEG=true" ]
}
+config("ffmpeg_deprecations") {
+ if (is_linux) {
+ cflags = [ "-Wno-error=deprecated-declarations" ]
+ }
+}
+
shim_headers("ffmpeg_shim") {
root_path = "."
headers = [
@@ -33,5 +39,5 @@
":ffmpeg_features",
":ffmpeg_shim",
]
- public_configs = [ ":system_ffmpeg" ]
+ public_configs = [ ":system_ffmpeg", ":ffmpeg_deprecations" ]
}

View file

@ -0,0 +1,19 @@
diff -up chromium-58.0.3029.96/ui/events/devices/x11/device_data_manager_x11.cc.revert chromium-58.0.3029.96/ui/events/devices/x11/device_data_manager_x11.cc
--- chromium-58.0.3029.96/ui/events/devices/x11/device_data_manager_x11.cc.revert 2017-05-08 14:58:11.767482431 -0400
+++ chromium-58.0.3029.96/ui/events/devices/x11/device_data_manager_x11.cc 2017-05-08 14:58:37.722960109 -0400
@@ -790,15 +790,6 @@ void DeviceDataManagerX11::UpdateScrollC
DCHECK(deviceid >= 0 && deviceid < kMaxDeviceNum);
ScrollInfo& info = scroll_data_[deviceid];
- bool legacy_scroll_available =
- (scroll_class_info->flags & XIScrollFlagNoEmulation) == 0;
- // If the device's highest resolution is lower than the resolution of xinput1
- // then use xinput1's events instead (ie. don't configure smooth scrolling).
- if (legacy_scroll_available &&
- std::abs(scroll_class_info->increment) <= 1.0) {
- return;
- }
-
switch (scroll_class_info->scroll_type) {
case XIScrollTypeVertical:
info.vertical.number = scroll_class_info->number;

View file

@ -0,0 +1,14 @@
diff -up chromium-60.0.3112.78/third_party/libjpeg_turbo/jpeglib.h.nomangle chromium-60.0.3112.78/third_party/libjpeg_turbo/jpeglib.h
--- chromium-60.0.3112.78/third_party/libjpeg_turbo/jpeglib.h.nomangle 2017-08-01 15:29:00.870759406 -0400
+++ chromium-60.0.3112.78/third_party/libjpeg_turbo/jpeglib.h 2017-08-01 15:29:09.326593414 -0400
@@ -18,10 +18,6 @@
#ifndef JPEGLIB_H
#define JPEGLIB_H
-/* Begin chromium edits */
-#include "jpeglibmangler.h"
-/* End chromium edits */
-
/*
* First we include the configuration files that record how this
* installation of the JPEG library is set up. jconfig.h can be

View file

@ -0,0 +1,17 @@
diff -up chromium-60.0.3112.78/third_party/libpng/pnglibconf.h.noprefix chromium-60.0.3112.78/third_party/libpng/pnglibconf.h
--- chromium-60.0.3112.78/third_party/libpng/pnglibconf.h.noprefix 2017-08-01 14:42:54.321986758 -0400
+++ chromium-60.0.3112.78/third_party/libpng/pnglibconf.h 2017-08-01 14:43:01.493845832 -0400
@@ -225,13 +225,4 @@
#define PNG_USER_CHUNK_MALLOC_MAX 4000000L
/* end of chromium settings */
-/* chromium prefixing */
-/*
- * This is necessary to build multiple copies of libpng. We need this while pdfium builds
- * its own copy of libpng.
- */
-#define PNG_PREFIX
-#include "pngprefix.h"
-/* end of chromium prefixing */
-
#endif /* PNGLCONF_H */

View file

@ -0,0 +1,208 @@
diff -up chromium-67.0.3396.62/build/linux/unbundle/libjpeg.gn.gnsystem chromium-67.0.3396.62/build/linux/unbundle/libjpeg.gn
diff -up chromium-67.0.3396.62/build/linux/unbundle/libusb.gn.gnsystem chromium-67.0.3396.62/build/linux/unbundle/libusb.gn
--- chromium-67.0.3396.62/build/linux/unbundle/libusb.gn.gnsystem 2018-05-30 12:18:36.949488683 -0400
+++ chromium-67.0.3396.62/build/linux/unbundle/libusb.gn 2018-05-30 12:18:36.949488683 -0400
@@ -0,0 +1,24 @@
+# Copyright 2016 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//build/config/linux/pkg_config.gni")
+import("//build/shim_headers.gni")
+
+pkg_config("system_libusb") {
+ packages = [ "libusb-1.0" ]
+}
+
+shim_headers("libusb_shim") {
+ root_path = "src/libusb"
+ headers = [
+ "libusb.h",
+ ]
+}
+
+source_set("libusb") {
+ deps = [
+ ":libusb_shim",
+ ]
+ public_configs = [ ":system_libusb" ]
+}
diff -up chromium-67.0.3396.62/build/linux/unbundle/opus.gn.gnsystem chromium-67.0.3396.62/build/linux/unbundle/opus.gn
--- chromium-67.0.3396.62/build/linux/unbundle/opus.gn.gnsystem 2018-05-30 04:43:03.000000000 -0400
+++ chromium-67.0.3396.62/build/linux/unbundle/opus.gn 2018-05-30 12:18:36.950488661 -0400
@@ -1,3 +1,164 @@
+# Copyright 2016 The Chromium Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+import("//build/config/linux/pkg_config.gni")
+import("//build/shim_headers.gni")
+import("//testing/test.gni")
+
+pkg_config("system_opus") {
+ packages = [ "opus" ]
+}
+
+shim_headers("opus_shim") {
+ root_path = "src/include"
+ headers = [
+ "opus_custom.h",
+ "opus_defines.h",
+ "opus_multistream.h",
+ "opus_types.h",
+ "opus.h",
+ ]
+}
+
+source_set("opus") {
+ deps = [
+ ":opus_shim",
+ ]
+ public_configs = [ ":system_opus" ]
+}
+
+config("opus_test_config") {
+ include_dirs = [
+ "src/celt",
+ "src/silk",
+ ]
+
+ if (is_win) {
+ defines = [ "inline=__inline" ]
+ }
+ if (is_android) {
+ libs = [ "log" ]
+ }
+ if (is_clang) {
+ cflags = [ "-Wno-absolute-value" ]
+ }
+}
+
+executable("opus_compare") {
+ sources = [
+ "src/src/opus_compare.c",
+ ]
+
+ configs -= [ "//build/config/compiler:chromium_code" ]
+ configs += [
+ "//build/config/compiler:no_chromium_code",
+ ":opus_test_config",
+ ]
+
+ deps = [
+ ":opus",
+ "//build/config/sanitizers:deps",
+ "//build/win:default_exe_manifest",
+ ]
+}
+
+executable("opus_demo") {
+ sources = [
+ "src/src/opus_demo.c",
+ ]
+
+ configs -= [ "//build/config/compiler:chromium_code" ]
+ configs += [
+ "//build/config/compiler:no_chromium_code",
+ ":opus_test_config",
+ ]
+
+ deps = [
+ ":opus",
+ "//build/config/sanitizers:deps",
+ "//build/win:default_exe_manifest",
+ ]
+}
+
+test("test_opus_api") {
+ sources = [
+ "src/tests/test_opus_api.c",
+ ]
+
+ configs -= [ "//build/config/compiler:chromium_code" ]
+ configs += [
+ "//build/config/compiler:no_chromium_code",
+ ":opus_test_config",
+ ]
+
+ deps = [
+ ":opus",
+ ]
+}
+
+test("test_opus_encode") {
+ sources = [
+ "src/tests/test_opus_encode.c",
+ ]
+
+ configs -= [ "//build/config/compiler:chromium_code" ]
+ configs += [
+ "//build/config/compiler:no_chromium_code",
+ ":opus_test_config",
+ ]
+
+ deps = [
+ ":opus",
+ ]
+}
+
+# GN orders flags on a target before flags from configs. The default config
+# adds -Wall, and this flag have to be after -Wall -- so they need to
+# come from a config and can't be on the target directly.
+config("test_opus_decode_config") {
+ # test_opus_decode passes a null pointer to opus_decode() for an argument
+ # marked as requiring a non-null value by the nonnull function attribute,
+ # and expects opus_decode() to fail. Disable the -Wnonnull option to avoid
+ # a compilation error if -Werror is specified.
+ if (is_posix) {
+ cflags = [ "-Wno-nonnull" ]
+ }
+}
+
+test("test_opus_decode") {
+ sources = [
+ "src/tests/test_opus_decode.c",
+ ]
+
+ configs -= [ "//build/config/compiler:chromium_code" ]
+ configs += [
+ "//build/config/compiler:no_chromium_code",
+ ":opus_test_config",
+ ":test_opus_decode_config",
+ ]
+
+ deps = [
+ ":opus",
+ ]
+}
+
+test("test_opus_padding") {
+ sources = [
+ "src/tests/test_opus_padding.c",
+ ]
+
+ configs -= [ "//build/config/compiler:chromium_code" ]
+ configs += [
+ "//build/config/compiler:no_chromium_code",
+ ":opus_test_config",
+ ]
+
+ deps = [
+ ":opus",
+ ]
+}
+
# Copyright 2017 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
diff -up chromium-67.0.3396.62/build/linux/unbundle/replace_gn_files.py.gnsystem chromium-67.0.3396.62/build/linux/unbundle/replace_gn_files.py
--- chromium-67.0.3396.62/build/linux/unbundle/replace_gn_files.py.gnsystem 2018-05-30 12:18:36.951488638 -0400
+++ chromium-67.0.3396.62/build/linux/unbundle/replace_gn_files.py 2018-05-30 12:20:02.542534270 -0400
@@ -27,6 +27,7 @@ REPLACEMENTS = {
'libevent': 'base/third_party/libevent/BUILD.gn',
'libjpeg': 'third_party/libjpeg.gni',
'libpng': 'third_party/libpng/BUILD.gn',
+ 'libusb': 'third_party/libusb/BUILD.gn',
'libvpx': 'third_party/libvpx/BUILD.gn',
'libwebp': 'third_party/libwebp/BUILD.gn',
'libxml': 'third_party/libxml/BUILD.gn',

View file

@ -0,0 +1,15 @@
diff -up chromium-68.0.3440.106/chrome/browser/first_run/first_run_internal_linux.cc.etc chromium-68.0.3440.106/chrome/browser/first_run/first_run_internal_linux.cc
--- chromium-68.0.3440.106/chrome/browser/first_run/first_run_internal_linux.cc.etc 2018-08-09 03:12:33.444705798 -0400
+++ chromium-68.0.3440.106/chrome/browser/first_run/first_run_internal_linux.cc 2018-08-09 03:14:46.275754910 -0400
@@ -19,9 +19,9 @@ bool IsOrganicFirstRun() {
base::FilePath MasterPrefsPath() {
// The standard location of the master prefs is next to the chrome binary.
+ // ...but we patch it to use /etc/chromium
base::FilePath master_prefs;
- if (!base::PathService::Get(base::DIR_EXE, &master_prefs))
- return base::FilePath();
+ master_prefs = base::FilePath("/etc/chromium");
return master_prefs.AppendASCII(installer::kDefaultMasterPrefs);
}

Some files were not shown because too many files have changed in this diff Show more