qtscript/qtwebkit: disable thumb for armv4 and armv5 only to fix segfault on armv7

We have a simple application containing a QWebView which segfaulted during
loading a page on a CortexA9 (armv7 thumb2). After enabling debug information
for qtwebkit and remote debug session the point of segfault was detected in

Source/JavaScriptCore/llint/LowLevelInterpreter.asm:1082
  callSlowPath(_llint_slow_path_new_func_exp)

Further digging around lead to similar source in:

* qtwebkit: Source/JavaScriptCore/assembler/ARMv7Assembler.h
* qtscript: src/3rdparty/javascriptcore/JavaScriptCore/assembler/ARMv7Assembler.h

In these files a class ARMThumbImmediate is declared and used in many places.
This lead me to the suspicion that compiligng for armv7 expects thumb support.

The following tests were performed:

* our application is working fine again
* qtscript and qtwebkit were build with
  'ARM_INSTRUCTION_SET = "thumb"' => TUNE_FEATURES = "arm armv5 thumb dsp"
  for qemuarm without issues

This is a partial/rebased revert of:
commit 932b32c1c9
Author: Martin Jansa <Martin.Jansa@gmail.com>
Date:   Wed Apr 22 15:33:01 2015 +0200

    qtscript,qtwebking: disable thumb

    * qemuarm builds fail when thumb is enabled

    Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>

Signed-off-by: Andreas Müller <schnitzeltony@googlemail.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
This commit is contained in:
Andreas Müller
2016-01-04 11:04:16 +01:00
committed by Martin Jansa
parent d8b2426588
commit 511a376450
2 changed files with 4 additions and 2 deletions

View File

@@ -22,7 +22,8 @@ LIC_FILES_CHKSUM = " \
#{standard input}:23: Error: selected processor does not support Thumb mode `stmdb sp!,{r4-r8,lr}'
#{standard input}:30: Error: lo register required -- `ldmia sp!,{r4-r8,lr}'
#{standard input}:43: Error: lo register required -- `ldmia sp!,{r4-r8,lr}'
ARM_INSTRUCTION_SET = "arm"
ARM_INSTRUCTION_SET_armv4 = "arm"
ARM_INSTRUCTION_SET_armv5 = "arm"
DEPENDS += "qtbase"

View File

@@ -15,7 +15,8 @@ DEPENDS += "qtbase qtdeclarative icu ruby-native sqlite3 glib-2.0 libxslt"
# | {standard input}: Assembler messages:
# | {standard input}:106: Error: invalid immediate: 983040 is out of range
# | {standard input}:106: Error: value of 983040 too large for field of 2 bytes at 146
ARM_INSTRUCTION_SET = "arm"
ARM_INSTRUCTION_SET_armv4 = "arm"
ARM_INSTRUCTION_SET_armv5 = "arm"
SRC_URI += "\
file://0001-qtwebkit-fix-QA-issue-bad-RPATH.patch \