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
17
.gitignore
vendored
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||
|
|
@ -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
|
|
@ -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 = ®s;
|
||||
@@ -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
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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
|
|
@ -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",
|
||||
]
|
||||
}
|
||||
|
||||
|
|
@ -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>
|
||||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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
|
|
@ -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
|
||||
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||
|
|
@ -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),
|
||||
567
7ae60470cdb0bea4548a0f5e8271b359f9450c79.patch
Normal file
567
7ae60470cdb0bea4548a0f5e8271b359f9450c79.patch
Normal 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
BIN
GardinerModBug.ttf
Normal file
Binary file not shown.
BIN
GardinerModCat.ttf
Normal file
BIN
GardinerModCat.ttf
Normal file
Binary file not shown.
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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.
|
||||
|
|
@ -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.
|
||||
|
|
@ -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
|
||||
|
|
@ -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
|
||||
|
|
@ -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."}
|
||||
]
|
||||
},
|
||||
{
|
||||
|
|
@ -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)
|
||||
14
chrome-remote-desktop@.service
Normal file
14
chrome-remote-desktop@.service
Normal 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
|
||||
92
chromium-100-GLImplementationParts-constexpr.patch
Normal file
92
chromium-100-GLImplementationParts-constexpr.patch
Normal 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
|
||||
|
||||
97
chromium-100-InMilliseconds-constexpr.patch
Normal file
97
chromium-100-InMilliseconds-constexpr.patch
Normal 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
|
||||
|
||||
35
chromium-100-SCTHashdanceMetadata-move.patch
Normal file
35
chromium-100-SCTHashdanceMetadata-move.patch
Normal 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
|
||||
29
chromium-100-macro-typo.patch
Normal file
29
chromium-100-macro-typo.patch
Normal 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
|
||||
|
||||
|
|
@ -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>
|
||||
20
chromium-100.0.4896.60-widevine-other-locations.patch
Normal file
20
chromium-100.0.4896.60-widevine-other-locations.patch
Normal 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);
|
||||
11
chromium-100.0.4896.75-missing-include-tuple.patch
Normal file
11
chromium-100.0.4896.75-missing-include-tuple.patch
Normal 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>
|
||||
|
||||
11
chromium-100.0.4896.75-missing-include-vector.patch
Normal file
11
chromium-100.0.4896.75-missing-include-vector.patch
Normal 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"
|
||||
49
chromium-100.0.4896.75-old-xkb.patch
Normal file
49
chromium-100.0.4896.75-old-xkb.patch
Normal 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()) {
|
||||
147
chromium-100.0.4896.75-remoting-extra-qualification.patch
Normal file
147
chromium-100.0.4896.75-remoting-extra-qualification.patch
Normal 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(
|
||||
|
|
@ -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.
|
||||
|
|
@ -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 {
|
||||
|
||||
|
|
@ -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);
|
||||
}
|
||||
|
|
@ -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",
|
||||
]
|
||||
|
|
@ -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" ||
|
||||
|
|
@ -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;
|
||||
|
|
@ -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;
|
||||
|
|
@ -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;
|
||||
|
|
@ -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") {
|
||||
|
|
@ -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" ]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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.
|
||||
|
|
@ -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,
|
||||
|
|
@ -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",
|
||||
]
|
||||
}
|
||||
|
||||
|
|
@ -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
|
||||
|
|
@ -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>
|
||||
|
|
@ -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_;
|
||||
|
|
@ -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()),
|
||||
|
||||
|
|
@ -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
|
||||
|
|
@ -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") {
|
||||
|
|
@ -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.
|
||||
|
|
@ -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
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
@ -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" ]
|
||||
- }
|
||||
}
|
||||
}
|
||||
|
|
@ -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)))
|
||||
|
|
@ -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
|
||||
|
|
@ -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) {
|
||||
|
|
@ -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();
|
||||
|
|
@ -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"
|
||||
}
|
||||
|
|
@ -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([
|
||||
|
|
@ -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_
|
||||
|
|
@ -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" ||
|
||||
|
|
@ -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",
|
||||
]
|
||||
|
|
@ -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 = [
|
||||
|
|
@ -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;
|
||||
|
||||
|
|
@ -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_));
|
||||
|
||||
|
|
@ -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:
|
||||
|
|
@ -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" ]
|
||||
|
|
@ -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"
|
||||
|
|
@ -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
|
||||
|
|
@ -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)]
|
||||
|
|
@ -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"]
|
||||
|
|
@ -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
|
||||
|
||||
|
|
@ -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",
|
||||
|
|
@ -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",
|
||||
|
|
@ -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.
|
||||
|
|
@ -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) {
|
||||
22
chromium-53-ffmpeg-no-deprecation-errors.patch
Normal file
22
chromium-53-ffmpeg-no-deprecation-errors.patch
Normal 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" ]
|
||||
}
|
||||
|
|
@ -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;
|
||||
14
chromium-60.0.3112.78-jpeg-nomangle.patch
Normal file
14
chromium-60.0.3112.78-jpeg-nomangle.patch
Normal 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
|
||||
17
chromium-60.0.3112.78-no-libpng-prefix.patch
Normal file
17
chromium-60.0.3112.78-no-libpng-prefix.patch
Normal 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 */
|
||||
208
chromium-67.0.3396.62-gn-system.patch
Normal file
208
chromium-67.0.3396.62-gn-system.patch
Normal 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',
|
||||
15
chromium-68.0.3440.106-master-prefs-path.patch
Normal file
15
chromium-68.0.3440.106-master-prefs-path.patch
Normal 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
Loading…
Add table
Add a link
Reference in a new issue