Submitted By: Ken Moffat Date: 2021-05-04 Initial Package Version: From git 5.15 branch. Upstream Status: Ignored. Origin: upstream via gentoo, gentoo, Arch (originally from fedora), and Douglas. Description: Allows this to build and work on BLFS-10.1 Updated on 2021-05-04: add gentoo patch for gcc-11. First, a patch from gentoo to avoid the build from a git version requiring git, although the .git directories are still required. generate_gni.sh: update_readme() runs git at the end of process, prevent it. Thanks-to: Georgy Yakovlev --- a/src/3rdparty/chromium/third_party/libvpx/generate_gni.sh 2021-02-07 12:51:49.438514897 +0100 +++ b/src/3rdparty/chromium/third_party/libvpx/generate_gni.sh 2021-02-21 16:23:38.375724515 +0100 @@ -519,8 +519,3 @@ gn format --in-place $BASE_DIR/BUILD.gn gn format --in-place $BASE_DIR/libvpx_srcs.gni - -cd $BASE_DIR/$LIBVPX_SRC_DIR -update_readme - -cd $BASE_DIR Second, a patch to make some web pages render when glibc-2.33 is used. # Patch made by Kevin Kofler # https://bugzilla.redhat.com/show_bug.cgi?id=1904652 diff -ur qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc --- qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc 2020-11-07 02:22:36.000000000 +0100 +++ qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/baseline_policy.cc 2021-01-20 02:14:53.066223906 +0100 @@ -257,6 +257,18 @@ return RestrictKillTarget(current_pid, sysno); } +#if defined(__NR_newfstatat) + if (sysno == __NR_newfstatat) { + return RewriteFstatatSIGSYS(); + } +#endif + +#if defined(__NR_fstatat64) + if (sysno == __NR_fstatat64) { + return RewriteFstatatSIGSYS(); + } +#endif + if (SyscallSets::IsFileSystem(sysno) || SyscallSets::IsCurrentDirectory(sysno)) { return Error(fs_denied_errno); diff -ur qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc --- qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc 2020-11-07 02:22:36.000000000 +0100 +++ qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.cc 2021-01-22 19:02:55.651668257 +0100 @@ -6,6 +6,8 @@ #include "sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h" +#include +#include #include #include #include @@ -355,6 +357,35 @@ return -ENOSYS; } +intptr_t SIGSYSFstatatHandler(const struct arch_seccomp_data& args, + void* aux) { + switch (args.nr) { +#if defined(__NR_newfstatat) + case __NR_newfstatat: +#endif +#if defined(__NR_fstatat64) + case __NR_fstatat64: +#endif +#if defined(__NR_newfstatat) || defined(__NR_fstatat64) + if (*reinterpret_cast(args.args[1]) == '\0' + && args.args[3] == static_cast(AT_EMPTY_PATH)) { + return sandbox::sys_fstat64(static_cast(args.args[0]), + reinterpret_cast(args.args[2])); + } else { + errno = EACCES; + return -1; + } + break; +#endif + } + + CrashSIGSYS_Handler(args, aux); + + // Should never be reached. + RAW_CHECK(false); + return -ENOSYS; +} + bpf_dsl::ResultExpr CrashSIGSYS() { return bpf_dsl::Trap(CrashSIGSYS_Handler, NULL); } @@ -387,6 +418,10 @@ return bpf_dsl::Trap(SIGSYSSchedHandler, NULL); } +bpf_dsl::ResultExpr RewriteFstatatSIGSYS() { + return bpf_dsl::Trap(SIGSYSFstatatHandler, NULL); +} + void AllocateCrashKeys() { #if !defined(OS_NACL_NONSFI) if (seccomp_crash_key) diff -ur qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h --- qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h 2020-11-07 02:22:36.000000000 +0100 +++ qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/seccomp-bpf-helpers/sigsys_handlers.h 2021-01-20 02:11:04.583714199 +0100 @@ -62,6 +62,10 @@ // sched_setparam(), sched_setscheduler() SANDBOX_EXPORT intptr_t SIGSYSSchedHandler(const arch_seccomp_data& args, void* aux); +// If the fstatat syscall is actually a disguised fstat, calls the regular fstat +// syscall, otherwise, crashes in the same way as CrashSIGSYS_Handler. +SANDBOX_EXPORT intptr_t SIGSYSFstatatHandler(const struct arch_seccomp_data& args, + void* aux); // Variants of the above functions for use with bpf_dsl. SANDBOX_EXPORT bpf_dsl::ResultExpr CrashSIGSYS(); @@ -72,6 +76,7 @@ SANDBOX_EXPORT bpf_dsl::ResultExpr CrashSIGSYSFutex(); SANDBOX_EXPORT bpf_dsl::ResultExpr CrashSIGSYSPtrace(); SANDBOX_EXPORT bpf_dsl::ResultExpr RewriteSchedSIGSYS(); +SANDBOX_EXPORT bpf_dsl::ResultExpr RewriteFstatatSIGSYS(); // Allocates a crash key so that Seccomp information can be recorded. void AllocateCrashKeys(); diff -ur qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.cc qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.cc --- qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.cc 2020-11-07 02:22:36.000000000 +0100 +++ qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.cc 2021-01-20 02:41:12.033133269 +0100 @@ -261,4 +261,13 @@ #endif // defined(MEMORY_SANITIZER) +SANDBOX_EXPORT int sys_fstat64(int fd, struct stat64 *buf) +{ +#if defined(__NR_fstat64) + return syscall(__NR_fstat64, fd, buf); +#else + return syscall(__NR_fstat, fd, buf); +#endif +} + } // namespace sandbox diff -ur qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.h qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.h --- qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.h 2020-11-07 02:22:36.000000000 +0100 +++ qtwebengine-everywhere-src-5.15.2-#1904652/src/3rdparty/chromium/sandbox/linux/services/syscall_wrappers.h 2021-01-20 02:40:26.499827829 +0100 @@ -17,6 +17,7 @@ struct rlimit64; struct cap_hdr; struct cap_data; +struct stat64; namespace sandbox { @@ -84,6 +85,9 @@ const struct sigaction* act, struct sigaction* oldact); +// Recent glibc rewrites fstat to fstatat. +SANDBOX_EXPORT int sys_fstat64(int fd, struct stat64 *buf); + } // namespace sandbox #endif // SANDBOX_LINUX_SERVICES_SYSCALL_WRAPPERS_H_ Third, a patch from Douglas R. Reno (renodr at linuxfromscratch dot org) - 20210323: When building qtwebengine where libxml2 has been built before ICU has been installed, a build failure will occur because QtWebEngine will attempt to use it's internal version of libxml2, which *was not* patched against API changes in ICU-68.1+. These changes involved removing the TRUE and FALSE macros, and the official documentation states that developers should use 'true' and 'false' instead, of course making sure that 'stdbool.h' is included so that the compiler can actually find those boolean values. Since Chromium's internal version of ICU is older than ours, it's not a problem when building with the internal version of ICU. Users who have installed ICU before libxml2 are exempt from running into this issue. diff -Naurp qtwebengine-everywhere-src-5.15.2.orig/src/3rdparty/chromium/third_party/libxml/src/encoding.c qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/third_party/libxml/src/encoding.c --- qtwebengine-everywhere-src-5.15.2.orig/src/3rdparty/chromium/third_party/libxml/src/encoding.c 2020-11-06 19:22:36.000000000 -0600 +++ qtwebengine-everywhere-src-5.15.2/src/3rdparty/chromium/third_party/libxml/src/encoding.c 2020-12-08 19:39:00.607894718 -0600 @@ -44,7 +44,7 @@ #endif #include #include - +#include #include "buf.h" #include "enc.h" @@ -1893,7 +1893,7 @@ xmlUconvWrapper(uconv_t *cd, int toUnico *inlen = ucv_in - (const char*) in; *outlen = ucv_out - (char *) out; if (U_SUCCESS(err)) { - /* reset pivot buf if this is the last call for input (flush==TRUE) */ + /* reset pivot buf if this is the last call for input (flush==true) */ if (flush) cd->pivot_source = cd->pivot_target = cd->pivot_buf; return 0; @@ -1958,7 +1958,7 @@ xmlEncOutputChunk(xmlCharEncodingHandler #ifdef LIBXML_ICU_ENABLED else if (handler->uconv_out != NULL) { ret = xmlUconvWrapper(handler->uconv_out, 0, out, outlen, in, inlen, - TRUE); + true); } #endif /* LIBXML_ICU_ENABLED */ else { Fourth, patch from gentoo to allow it to build with gcc-11 where some less-used headers such as have been removed from the C++ standard library headers which used to include them, and must now be included where needed. [https://gcc.gnu.org/gcc-11/porting_to.html] diff --git a/src/3rdparty/chromium/third_party/angle/src/libANGLE/HandleAllocator.cpp b/src/3rdparty/chromium/third_party/angle/src/libANGLE/HandleAllocator.cpp index 013f1dfb2..3ce63c192 100644 --- a/src/3rdparty/chromium/third_party/angle/src/libANGLE/HandleAllocator.cpp +++ b/src/3rdparty/chromium/third_party/angle/src/libANGLE/HandleAllocator.cpp @@ -9,6 +9,7 @@ #include "libANGLE/HandleAllocator.h" +#include #include #include diff --git a/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/containers/string_pool.cc b/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/containers/string_pool.cc index fd651958f..1e8d0606c 100644 --- a/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/containers/string_pool.cc +++ b/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/containers/string_pool.cc @@ -14,9 +14,9 @@ * limitations under the License. */ +#include #include "src/trace_processor/containers/string_pool.h" -#include #include "perfetto/base/logging.h" #include "perfetto/ext/base/utils.h" diff --git a/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/db/column.cc b/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/db/column.cc index 00496b335..0dccfeb8a 100644 --- a/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/db/column.cc +++ b/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/db/column.cc @@ -14,6 +14,7 @@ * limitations under the License. */ +#include #include "src/trace_processor/db/column.h" #include "src/trace_processor/db/compare.h" diff --git a/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/types/variadic.cc b/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/types/variadic.cc index 837bfeba9..cdd56817d 100644 --- a/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/types/variadic.cc +++ b/src/3rdparty/chromium/third_party/perfetto/src/trace_processor/types/variadic.cc @@ -14,6 +14,7 @@ * limitations under the License. */ +#include #include "src/trace_processor/types/variadic.h" namespace perfetto { diff --git a/src/3rdparty/chromium/ui/accessibility/platform/ax_platform_atk_hyperlink.cc b/src/3rdparty/chromium/ui/accessibility/platform/ax_platform_atk_hyperlink.cc index be91def6b..73f202356 100644 --- a/src/3rdparty/chromium/ui/accessibility/platform/ax_platform_atk_hyperlink.cc +++ b/src/3rdparty/chromium/ui/accessibility/platform/ax_platform_atk_hyperlink.cc @@ -245,7 +245,7 @@ static void AXPlatformAtkHyperlinkInit(AXPlatformAtkHyperlink* self, gpointer) { } GType ax_platform_atk_hyperlink_get_type() { - static volatile gsize type_volatile = 0; + static gsize type_volatile = 0; AXPlatformNodeAuraLinux::EnsureGTypeInit(); diff --git a/src/3rdparty/chromium/ui/accessibility/platform/ax_platform_node_auralinux.cc b/src/3rdparty/chromium/ui/accessibility/platform/ax_platform_node_auralinux.cc index 04125c6fd..6c64e5d8e 100644 --- a/src/3rdparty/chromium/ui/accessibility/platform/ax_platform_node_auralinux.cc +++ b/src/3rdparty/chromium/ui/accessibility/platform/ax_platform_node_auralinux.cc @@ -2274,7 +2274,7 @@ void ClassInit(gpointer class_pointer, gpointer /* class_data */) { GType GetType() { AXPlatformNodeAuraLinux::EnsureGTypeInit(); - static volatile gsize type_volatile = 0; + static gsize type_volatile = 0; if (g_once_init_enter(&type_volatile)) { static const GTypeInfo type_info = { sizeof(AXPlatformNodeAuraLinuxClass), // class_size diff --git a/src/3rdparty/chromium/ui/gtk/gtk_key_bindings_handler.cc b/src/3rdparty/chromium/ui/gtk/gtk_key_bindings_handler.cc index c663a2074..38a342484 100644 --- a/src/3rdparty/chromium/ui/gtk/gtk_key_bindings_handler.cc +++ b/src/3rdparty/chromium/ui/gtk/gtk_key_bindings_handler.cc @@ -141,7 +141,7 @@ void GtkKeyBindingsHandler::HandlerClassInit(HandlerClass* klass) { } GType GtkKeyBindingsHandler::HandlerGetType() { - static volatile gsize type_id_volatile = 0; + static gsize type_id_volatile = 0; if (g_once_init_enter(&type_id_volatile)) { GType type_id = g_type_register_static_simple( GTK_TYPE_TEXT_VIEW, g_intern_static_string("GtkKeyBindingsHandler"), --- a/src/3rdparty/chromium/components/bookmarks/browser/bookmark_expanded_state_tracker.cc +++ b/src/3rdparty/chromium/components/bookmarks/browser/bookmark_expanded_state_tracker.cc @@ -2,6 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include #include "components/bookmarks/browser/bookmark_expanded_state_tracker.h" #include diff --git a/src/3rdparty/chromium/components/bookmarks/browser/base_bookmark_model_observer.cc b/src/3rdparty/chromium/components/bookmarks/browser/base_bookmark_model_observer.cc index 657a3c96b..ad641a082 100644 --- a/src/3rdparty/chromium/components/bookmarks/browser/base_bookmark_model_observer.cc +++ b/src/3rdparty/chromium/components/bookmarks/browser/base_bookmark_model_observer.cc @@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include + #include "components/bookmarks/browser/base_bookmark_model_observer.h" namespace bookmarks { diff --git a/src/3rdparty/chromium/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc b/src/3rdparty/chromium/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc index 19f9aab5b..27fec2168 100644 --- a/src/3rdparty/chromium/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +++ b/src/3rdparty/chromium/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc @@ -37,6 +37,7 @@ #include #include +#include #include "absl/base/internal/hide_ptr.h" #include "absl/base/internal/raw_logging.h" #include "absl/base/internal/spinlock.h"