summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael BrĂ¼ning <michael.bruning@qt.io>2024-01-14 23:48:08 +0100
committerMichael BrĂ¼ning <michael.bruning@qt.io>2024-01-16 11:50:54 +0000
commitc8088aea77818f87d42f709ddcb743b907c38e9c (patch)
tree864e3341d63cb367c5203ba4c26e18cfdf86f937
parent7c86b509394c7bb5fd9d664cc49c0a8ccf2b19af (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.h6
-rw-r--r--chromium/v8/src/codegen/arm64/register-arm64.h6
-rw-r--r--chromium/v8/src/codegen/mips64/register-mips64.h6
-rw-r--r--chromium/v8/src/codegen/ppc/register-ppc.h6
-rw-r--r--chromium/v8/src/codegen/s390/register-s390.h6
-rw-r--r--chromium/v8/src/regexp/arm/regexp-macro-assembler-arm.cc4
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();