MFH: r497877
www/qt5-webengine: unbreak on aarch64 and armv7 after r496989 PR: 236855 Reported by: pkg-fallout Submitted by: Mikaël Urankar Approved by: kde (tcberner) Approved by: ports-secteam blanket
This commit is contained in:
parent
50a96ad211
commit
89dc5a1a54
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/branches/2019Q2/; revision=497980
@ -27,6 +27,20 @@
|
||||
cflags += [
|
||||
# TODO(hans): Remove this once Clang generates better optimized debug info
|
||||
# by default. https://crbug.com/765793
|
||||
@@ -747,11 +747,11 @@ config("compiler_cpu_abi") {
|
||||
]
|
||||
}
|
||||
} else if (current_cpu == "arm") {
|
||||
- if (is_clang && !is_android && !is_nacl) {
|
||||
+ if (is_clang && !is_android && !is_nacl && !is_bsd) {
|
||||
cflags += [ "--target=arm-linux-gnueabihf" ]
|
||||
ldflags += [ "--target=arm-linux-gnueabihf" ]
|
||||
}
|
||||
- if (!is_nacl) {
|
||||
+ if (!is_nacl && !is_bsd) {
|
||||
cflags += [
|
||||
"-march=$arm_arch",
|
||||
"-mfloat-abi=$arm_float_abi",
|
||||
@@ -761,7 +761,7 @@ config("compiler_cpu_abi") {
|
||||
cflags += [ "-mtune=$arm_tune" ]
|
||||
}
|
||||
|
@ -1,19 +1,35 @@
|
||||
--- src/3rdparty/chromium/third_party/crc32c/src/src/crc32c_arm64_linux_check.h.orig 2018-11-13 18:25:11 UTC
|
||||
--- src/3rdparty/chromium/third_party/crc32c/src/src/crc32c_arm64_linux_check.h.orig 2019-01-16 11:59:47 UTC
|
||||
+++ src/3rdparty/chromium/third_party/crc32c/src/src/crc32c_arm64_linux_check.h
|
||||
@@ -29,6 +29,8 @@ extern "C" unsigned long getauxval(unsigned long type)
|
||||
namespace crc32c {
|
||||
@@ -16,6 +16,24 @@
|
||||
|
||||
inline bool CanUseArm64Linux() {
|
||||
+return false;
|
||||
+#if 0
|
||||
#if HAVE_STRONG_GETAUXVAL || HAVE_WEAK_GETAUXVAL
|
||||
// From 'arch/arm64/include/uapi/asm/hwcap.h' in Linux kernel source code.
|
||||
constexpr unsigned long kHWCAP_PMULL = 1 << 4;
|
||||
@@ -39,6 +41,7 @@ inline bool CanUseArm64Linux() {
|
||||
#else
|
||||
return false;
|
||||
#endif // HAVE_STRONG_GETAUXVAL || HAVE_WEAK_GETAUXVAL
|
||||
+#endif
|
||||
}
|
||||
#if HAVE_ARM64_CRC32C
|
||||
|
||||
+#if defined(__FreeBSD__)
|
||||
+#include <machine/armreg.h>
|
||||
+#include <sys/types.h>
|
||||
+namespace crc32c {
|
||||
+
|
||||
+inline bool CanUseArm64Linux() {
|
||||
+ uint64_t id_aa64isar0;
|
||||
+
|
||||
+ id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1);
|
||||
+ if ((ID_AA64ISAR0_AES(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL) && \
|
||||
+ (ID_AA64ISAR0_CRC32(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE))
|
||||
+ return true;
|
||||
+ return false;
|
||||
+}
|
||||
+
|
||||
+} // namespace crc32c
|
||||
+
|
||||
+#elif defined(__linux__)
|
||||
#if HAVE_STRONG_GETAUXVAL
|
||||
#include <sys/auxv.h>
|
||||
#elif HAVE_WEAK_GETAUXVAL
|
||||
@@ -43,6 +61,7 @@ inline bool CanUseArm64Linux() {
|
||||
|
||||
} // namespace crc32c
|
||||
|
||||
+#endif
|
||||
#endif // HAVE_ARM64_CRC32C
|
||||
|
||||
#endif // CRC32C_CRC32C_ARM_LINUX_CHECK_H_
|
||||
|
@ -1,19 +1,36 @@
|
||||
--- src/3rdparty/chromium/third_party/skia/src/core/SkCpu.cpp.orig 2018-11-13 18:25:11 UTC
|
||||
--- src/3rdparty/chromium/third_party/skia/src/core/SkCpu.cpp.orig 2019-01-16 10:59:47 UTC
|
||||
+++ src/3rdparty/chromium/third_party/skia/src/core/SkCpu.cpp
|
||||
@@ -74,6 +74,8 @@
|
||||
#include <sys/auxv.h>
|
||||
|
||||
static uint32_t read_cpu_features() {
|
||||
+return 0;
|
||||
+#if 0
|
||||
const uint32_t kHWCAP_CRC32 = (1<< 7),
|
||||
kHWCAP_ASIMDHP = (1<<10);
|
||||
|
||||
@@ -82,6 +84,7 @@
|
||||
if (hwcaps & kHWCAP_CRC32 ) { features |= SkCpu::CRC32; }
|
||||
if (hwcaps & kHWCAP_ASIMDHP) { features |= SkCpu::ASIMDHP; }
|
||||
@@ -70,6 +70,20 @@
|
||||
return features;
|
||||
+#endif
|
||||
}
|
||||
|
||||
#elif defined(SK_CPU_ARM32) && __has_include(<sys/auxv.h>) && \
|
||||
+#elif defined(SK_CPU_ARM64) && defined(__FreeBSD__)
|
||||
+ #include <machine/armreg.h>
|
||||
+
|
||||
+ static uint32_t read_cpu_features() {
|
||||
+ uint32_t features = 0;
|
||||
+ uint64_t id_aa64isar0;
|
||||
+
|
||||
+ id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1);
|
||||
+ if (ID_AA64ISAR0_CRC32(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE) {
|
||||
+ features |= SkCpu::CRC32;
|
||||
+ }
|
||||
+ return features;
|
||||
+ }
|
||||
+
|
||||
#elif defined(SK_CPU_ARM64) && __has_include(<sys/auxv.h>)
|
||||
#include <sys/auxv.h>
|
||||
|
||||
@@ -95,7 +109,12 @@
|
||||
const uint32_t kHWCAP_VFPv4 = (1<<16);
|
||||
|
||||
uint32_t features = 0;
|
||||
+#if defined(__FreeBSD__)
|
||||
+ uint32_t hwcaps = 0;
|
||||
+ elf_aux_info(AT_HWCAP, &hwcaps, sizeof(hwcaps));
|
||||
+#else
|
||||
uint32_t hwcaps = getauxval(AT_HWCAP);
|
||||
+#endif
|
||||
if (hwcaps & kHWCAP_NEON ) {
|
||||
features |= SkCpu::NEON;
|
||||
if (hwcaps & kHWCAP_VFPv4) { features |= SkCpu::NEON_FMA|SkCpu::VFP_FP16; }
|
||||
|
@ -0,0 +1,26 @@
|
||||
--- src/3rdparty/chromium/third_party/skia/src/opts/SkRasterPipeline_opts.h.orig 2019-01-16 10:59:47 UTC
|
||||
+++ src/3rdparty/chromium/third_party/skia/src/opts/SkRasterPipeline_opts.h
|
||||
@@ -657,7 +657,10 @@ SI F approx_powf(F x, F y) {
|
||||
}
|
||||
|
||||
SI F from_half(U16 h) {
|
||||
-#if defined(__ARM_FP16_FORMAT_IEEE)
|
||||
+#if defined(__ARM_FP16_FORMAT_IEEE) && defined(__aarch64__)
|
||||
+ return vcvt_f32_f16(h);
|
||||
+
|
||||
+#elif defined(__ARM_FP16_FORMAT_IEEE)
|
||||
__fp16 fp16;
|
||||
memcpy(&fp16, &h, sizeof(U16));
|
||||
return float(fp16);
|
||||
@@ -679,7 +682,10 @@ SI F from_half(U16 h) {
|
||||
}
|
||||
|
||||
SI U16 to_half(F f) {
|
||||
-#if defined(__ARM_FP16_FORMAT_IEEE)
|
||||
+#if defined(__ARM_FP16_FORMAT_IEEE) && defined(__aarch64__)
|
||||
+ return vcvt_f16_f32(f);
|
||||
+
|
||||
+#elif defined(__ARM_FP16_FORMAT_IEEE)
|
||||
__fp16 fp16 = __fp16(f);
|
||||
U16 u16;
|
||||
memcpy(&u16, &fp16, sizeof(U16));
|
@ -1,29 +1,54 @@
|
||||
--- src/3rdparty/chromium/third_party/zlib/arm_features.c.orig 2018-11-13 18:25:11 UTC
|
||||
--- src/3rdparty/chromium/third_party/zlib/arm_features.c.orig 2019-01-16 11:59:47 UTC
|
||||
+++ src/3rdparty/chromium/third_party/zlib/arm_features.c
|
||||
@@ -16,12 +16,13 @@
|
||||
@@ -10,20 +10,33 @@
|
||||
#include <pthread.h>
|
||||
#include <stdint.h>
|
||||
|
||||
-#if defined(ARMV8_OS_ANDROID)
|
||||
+int ZLIB_INTERNAL arm_cpu_enable_crc32 = 0;
|
||||
+int ZLIB_INTERNAL arm_cpu_enable_pmull = 0;
|
||||
+
|
||||
+static pthread_once_t cpu_check_inited_once = PTHREAD_ONCE_INIT;
|
||||
+
|
||||
+#if defined (__FreeBSD__)
|
||||
+#include <machine/armreg.h>
|
||||
+#include <sys/types.h>
|
||||
+static void init_arm_features(void)
|
||||
+{
|
||||
+#if defined (__aarch64__)
|
||||
+ uint64_t id_aa64isar0;
|
||||
+
|
||||
+ id_aa64isar0 = READ_SPECIALREG(ID_AA64ISAR0_EL1);
|
||||
+ if (ID_AA64ISAR0_AES(id_aa64isar0) == ID_AA64ISAR0_AES_PMULL)
|
||||
+ arm_cpu_enable_pmull = 1;
|
||||
+ if (ID_AA64ISAR0_CRC32(id_aa64isar0) == ID_AA64ISAR0_CRC32_BASE)
|
||||
+ arm_cpu_enable_crc32 = 1;
|
||||
+#endif
|
||||
+}
|
||||
+#elif defined(ARMV8_OS_ANDROID)
|
||||
#include <cpu-features.h>
|
||||
#elif defined(ARMV8_OS_LINUX)
|
||||
#include <asm/hwcap.h>
|
||||
#include <sys/auxv.h>
|
||||
#else
|
||||
-#else
|
||||
-#error ### No ARM CPU features detection in your platform/OS
|
||||
+/* #error ### No ARM CPU features detection in your platform/OS */
|
||||
#endif
|
||||
-#endif
|
||||
|
||||
int ZLIB_INTERNAL arm_cpu_enable_crc32 = 0;
|
||||
int ZLIB_INTERNAL arm_cpu_enable_pmull = 0;
|
||||
|
||||
+#ifdef ARMV8_OS_LINUX
|
||||
static pthread_once_t cpu_check_inited_once = PTHREAD_ONCE_INIT;
|
||||
-int ZLIB_INTERNAL arm_cpu_enable_crc32 = 0;
|
||||
-int ZLIB_INTERNAL arm_cpu_enable_pmull = 0;
|
||||
|
||||
-static pthread_once_t cpu_check_inited_once = PTHREAD_ONCE_INIT;
|
||||
-
|
||||
static void init_arm_features(void)
|
||||
@@ -53,8 +54,11 @@ static void init_arm_features(void)
|
||||
{
|
||||
uint64_t flag_crc32 = 0, flag_pmull = 0, capabilities = 0;
|
||||
@@ -53,6 +66,9 @@ static void init_arm_features(void)
|
||||
if (capabilities & flag_pmull)
|
||||
arm_cpu_enable_pmull = 1;
|
||||
}
|
||||
+#else
|
||||
+#error ### No ARM CPU features detection in your platform/OS
|
||||
+#endif
|
||||
|
||||
void ZLIB_INTERNAL arm_check_features(void)
|
||||
{
|
||||
+#ifdef ARMV8_OS_LINUX
|
||||
pthread_once(&cpu_check_inited_once, init_arm_features);
|
||||
+#endif
|
||||
}
|
||||
|
@ -0,0 +1,22 @@
|
||||
--- src/3rdparty/chromium/v8/src/arm/cpu-arm.cc.orig 2019-01-16 10:59:47 UTC
|
||||
+++ src/3rdparty/chromium/v8/src/arm/cpu-arm.cc
|
||||
@@ -7,6 +7,9 @@
|
||||
#ifdef __QNXNTO__
|
||||
#include <sys/mman.h> // for cache flushing.
|
||||
#undef MAP_TYPE
|
||||
+#elif defined(__FreeBSD__)
|
||||
+#include <sys/types.h>
|
||||
+#include <machine/sysarch.h> // for cache flushing.
|
||||
#else
|
||||
#include <sys/syscall.h> // for cache flushing.
|
||||
#endif
|
||||
@@ -24,6 +27,9 @@ void CpuFeatures::FlushICache(void* start, size_t size
|
||||
#if !defined(USE_SIMULATOR)
|
||||
#if V8_OS_QNX
|
||||
msync(start, size, MS_SYNC | MS_INVALIDATE_ICACHE);
|
||||
+#elif defined(__FreeBSD__)
|
||||
+ struct arm_sync_icache_args args = { .addr = (uintptr_t)start, .len = size };
|
||||
+ sysarch(ARM_SYNC_ICACHE, (void *)&args);
|
||||
#else
|
||||
register uint32_t beg asm("r0") = reinterpret_cast<uint32_t>(start);
|
||||
register uint32_t end asm("r1") = beg + size;
|
@ -0,0 +1,50 @@
|
||||
--- src/3rdparty/chromium/v8/src/base/platform/platform-freebsd.cc.orig 2019-01-16 10:59:47 UTC
|
||||
+++ src/3rdparty/chromium/v8/src/base/platform/platform-freebsd.cc
|
||||
@@ -86,5 +86,47 @@ std::vector<OS::SharedLibraryAddress> OS::GetSharedLib
|
||||
|
||||
void OS::SignalCodeMovingGC() {}
|
||||
|
||||
+#ifdef __arm__
|
||||
+
|
||||
+bool OS::ArmUsingHardFloat() {
|
||||
+// GCC versions 4.6 and above define __ARM_PCS or __ARM_PCS_VFP to specify
|
||||
+// the Floating Point ABI used (PCS stands for Procedure Call Standard).
|
||||
+// We use these as well as a couple of other defines to statically determine
|
||||
+// what FP ABI used.
|
||||
+// GCC versions 4.4 and below don't support hard-fp.
|
||||
+// GCC versions 4.5 may support hard-fp without defining __ARM_PCS or
|
||||
+// __ARM_PCS_VFP.
|
||||
+
|
||||
+#define GCC_VERSION \
|
||||
+ (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
|
||||
+#if GCC_VERSION >= 40600 && !defined(__clang__)
|
||||
+#if defined(__ARM_PCS_VFP)
|
||||
+ return true;
|
||||
+#else
|
||||
+ return false;
|
||||
+#endif
|
||||
+
|
||||
+#elif GCC_VERSION < 40500 && !defined(__clang__)
|
||||
+ return false;
|
||||
+
|
||||
+#else
|
||||
+#if defined(__ARM_PCS_VFP)
|
||||
+ return true;
|
||||
+#elif defined(__ARM_PCS) || defined(__SOFTFP__) || defined(__SOFTFP) || \
|
||||
+ !defined(__VFP_FP__)
|
||||
+ return false;
|
||||
+#else
|
||||
+#error \
|
||||
+ "Your version of compiler does not report the FP ABI compiled for." \
|
||||
+ "Please report it on this issue" \
|
||||
+ "http://code.google.com/p/v8/issues/detail?id=2140"
|
||||
+
|
||||
+#endif
|
||||
+#endif
|
||||
+#undef GCC_VERSION
|
||||
+}
|
||||
+
|
||||
+#endif // def __arm__
|
||||
+
|
||||
} // namespace base
|
||||
} // namespace v8
|
@ -0,0 +1,15 @@
|
||||
--- src/3rdparty/chromium/v8/src/libsampler/sampler.cc.orig 2019-01-16 10:59:47 UTC
|
||||
+++ src/3rdparty/chromium/v8/src/libsampler/sampler.cc
|
||||
@@ -550,9 +550,9 @@ void SignalHandler::FillRegisterState(void* context, R
|
||||
state->sp = reinterpret_cast<void*>(mcontext.mc_rsp);
|
||||
state->fp = reinterpret_cast<void*>(mcontext.mc_rbp);
|
||||
#elif V8_HOST_ARCH_ARM
|
||||
- state->pc = reinterpret_cast<void*>(mcontext.mc_r15);
|
||||
- state->sp = reinterpret_cast<void*>(mcontext.mc_r13);
|
||||
- state->fp = reinterpret_cast<void*>(mcontext.mc_r11);
|
||||
+ state->pc = reinterpret_cast<void*>(mcontext.__gregs[_REG_PC]);
|
||||
+ state->sp = reinterpret_cast<void*>(mcontext.__gregs[_REG_SP]);
|
||||
+ state->fp = reinterpret_cast<void*>(mcontext.__gregs[_REG_FP]);
|
||||
#endif // V8_HOST_ARCH_*
|
||||
#elif V8_OS_NETBSD
|
||||
#if V8_HOST_ARCH_IA32
|
Loading…
Reference in New Issue
Block a user