diff options
author | Michael BrĂ¼ning <michael.bruning@qt.io> | 2024-01-14 23:48:08 +0100 |
---|---|---|
committer | Michael BrĂ¼ning <michael.bruning@qt.io> | 2024-01-16 11:50:54 +0000 |
commit | c8088aea77818f87d42f709ddcb743b907c38e9c (patch) | |
tree | 864e3341d63cb367c5203ba4c26e18cfdf86f937 | |
parent | 7c86b509394c7bb5fd9d664cc49c0a8ccf2b19af (diff) |
Fixup: [Backport] Security bug 1488199
Add register aliases following respective platform calling
conventions. Also fix a typo.
Change-Id: I8f844cd4db35393580f2a0adae6a4095584087a5
Reviewed-on: https://codereview.qt-project.org/c/qt/qtwebengine-chromium/+/530618
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
-rw-r--r-- | chromium/v8/src/codegen/arm/register-arm.h | 6 | ||||
-rw-r--r-- | chromium/v8/src/codegen/arm64/register-arm64.h | 6 | ||||
-rw-r--r-- | chromium/v8/src/codegen/mips64/register-mips64.h | 6 | ||||
-rw-r--r-- | chromium/v8/src/codegen/ppc/register-ppc.h | 6 | ||||
-rw-r--r-- | chromium/v8/src/codegen/s390/register-s390.h | 6 | ||||
-rw-r--r-- | chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.cc | 4 |
6 files changed, 32 insertions, 2 deletions
diff --git a/chromium/v8/src/codegen/arm/register-arm.h b/chromium/v8/src/codegen/arm/register-arm.h index 6cb6c602c25..8deddc5804b 100644 --- a/chromium/v8/src/codegen/arm/register-arm.h +++ b/chromium/v8/src/codegen/arm/register-arm.h @@ -119,6 +119,12 @@ GENERAL_REGISTERS(DECLARE_REGISTER) #undef DECLARE_REGISTER constexpr Register no_reg = Register::no_reg(); +// ARM calling convention +constexpr Register arg_reg_1 = r0; +constexpr Register arg_reg_2 = r1; +constexpr Register arg_reg_3 = r2; +constexpr Register arg_reg_4 = r3; + constexpr bool kPadArguments = false; constexpr bool kSimpleFPAliasing = false; constexpr bool kSimdMaskRegisters = false; diff --git a/chromium/v8/src/codegen/arm64/register-arm64.h b/chromium/v8/src/codegen/arm64/register-arm64.h index fbbb0a18dad..06026a065bb 100644 --- a/chromium/v8/src/codegen/arm64/register-arm64.h +++ b/chromium/v8/src/codegen/arm64/register-arm64.h @@ -482,6 +482,12 @@ ALIAS_REGISTER(VRegister, fp_scratch2, d31); #undef ALIAS_REGISTER +// Arm64 calling convention +constexpr Register arg_reg_1 = x0; +constexpr Register arg_reg_2 = x1; +constexpr Register arg_reg_3 = x2; +constexpr Register arg_reg_4 = x3; + // AreAliased returns true if any of the named registers overlap. Arguments set // to NoReg are ignored. The system stack pointer may be specified. V8_EXPORT_PRIVATE bool AreAliased( diff --git a/chromium/v8/src/codegen/mips64/register-mips64.h b/chromium/v8/src/codegen/mips64/register-mips64.h index d7b45eda383..05aba9fcbd2 100644 --- a/chromium/v8/src/codegen/mips64/register-mips64.h +++ b/chromium/v8/src/codegen/mips64/register-mips64.h @@ -362,6 +362,12 @@ DEFINE_REGISTER_NAMES(FPURegister, DOUBLE_REGISTERS) DEFINE_REGISTER_NAMES(MSARegister, SIMD128_REGISTERS) // Give alias names to registers for calling conventions. + +constexpr Register arg_reg_1 = a0; +constexpr Register arg_reg_2 = a1; +constexpr Register arg_reg_3 = a2; +constexpr Register arg_reg_4 = a3; + constexpr Register kReturnRegister0 = v0; constexpr Register kReturnRegister1 = v1; constexpr Register kReturnRegister2 = a0; diff --git a/chromium/v8/src/codegen/ppc/register-ppc.h b/chromium/v8/src/codegen/ppc/register-ppc.h index eded9622c4c..352b9519202 100644 --- a/chromium/v8/src/codegen/ppc/register-ppc.h +++ b/chromium/v8/src/codegen/ppc/register-ppc.h @@ -209,6 +209,12 @@ constexpr Register kConstantPoolRegister = r28; // Constant pool. constexpr Register kRootRegister = r29; // Roots array pointer. constexpr Register cp = r30; // JavaScript context pointer. +// PPC64 calling convention +constexpr Register arg_reg_1 = r3; +constexpr Register arg_reg_2 = r4; +constexpr Register arg_reg_3 = r5; +constexpr Register arg_reg_4 = r6; + constexpr bool kPadArguments = false; constexpr bool kSimpleFPAliasing = true; constexpr bool kSimdMaskRegisters = false; diff --git a/chromium/v8/src/codegen/s390/register-s390.h b/chromium/v8/src/codegen/s390/register-s390.h index 009248a65ca..6904802d015 100644 --- a/chromium/v8/src/codegen/s390/register-s390.h +++ b/chromium/v8/src/codegen/s390/register-s390.h @@ -167,6 +167,12 @@ constexpr Register no_reg = Register::no_reg(); constexpr Register kRootRegister = r10; // Roots array pointer. constexpr Register cp = r13; // JavaScript context pointer. +// s390x calling convention +constexpr Register arg_reg_1 = r2; +constexpr Register arg_reg_2 = r3; +constexpr Register arg_reg_3 = r4; +constexpr Register arg_reg_4 = r5; + constexpr bool kPadArguments = false; constexpr bool kSimpleFPAliasing = true; constexpr bool kSimdMaskRegisters = false; diff --git a/chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.cc b/chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.cc index 099fc62fa07..5580b24308a 100644 --- a/chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.cc +++ b/chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.cc @@ -1059,9 +1059,9 @@ void RegExpMacroAssemblerARM::CallCheckStackGuardState(Operand extra_space) { // Extra space for variables to consider in stack check. __ mov(arg_reg_4, extra_space); // RegExp code frame pointer. - __ mov(arg_reg3, frame_pointer()); + __ mov(arg_reg_3, frame_pointer()); // Code of self. - __ mov(arg_reg2, Operand(masm_->CodeObject())); + __ mov(arg_reg_2, Operand(masm_->CodeObject())); // We need to make room for the return address on the stack. int stack_alignment = base::OS::ActivationFrameAlignment(); |