diff options
author | Simon Hausmann <simon.hausmann@digia.com> | 2013-10-01 15:10:33 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-10-03 09:24:32 +0200 |
commit | 8abf7f5876a48c0879bce628597533c7b6eca9a0 (patch) | |
tree | f01dd867b10affb44cefbe050a1f4fcb1a9dfcd1 /src/qml/jsruntime/jsruntime.pri | |
parent | a8796a84fe45aa78123c661aab912f900f2ca0bc (diff) |
Change v4 exceptions to use the common C++ ABIs foreign exceptions
On platforms where we use the common C++ ABI, throw the exception not using a
dummy C++ exception structure and the throw keyboard, but instead use the
lower-level _Unwind_RaiseException to throw a foreign exception. It is caught
with the existing "catch (...)" and re-throw is implemented similarly, by
grabbing the current exception from the globals (a standardized data structure)
and re-throwing it.
On platforms such as ARM that lack hooks for supplying our unwind tables to the
system run-time, this patch will make it possible to link the unwinder
statically into libQtQml (libgcc or libunwind) and thus force it to use our
unwind tables, because throwing or re-throwing will always go through our
statically linked code through direct calls to _Unwind_RaiseException (instead
of libstdc++).
Change-Id: Ic2ac056fc7ed9e93fb51e30ab45f35b260487c5f
Reviewed-by: Lars Knoll <lars.knoll@digia.com>
Diffstat (limited to 'src/qml/jsruntime/jsruntime.pri')
-rw-r--r-- | src/qml/jsruntime/jsruntime.pri | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/src/qml/jsruntime/jsruntime.pri b/src/qml/jsruntime/jsruntime.pri index 1739765009..88cd3a99b0 100644 --- a/src/qml/jsruntime/jsruntime.pri +++ b/src/qml/jsruntime/jsruntime.pri @@ -112,12 +112,11 @@ linux*|mac { LIBS += -ldl } -# Only on Android/ARM at the moment, because only there we have issues -# replacing __gnu_Unwind_Find_exidx with our own implementation, -# and thus require static libgcc linkage. -android:equals(QT_ARCH, "arm"):*g++* { - static_libgcc = $$system($$QMAKE_CXX -print-file-name=libgcc.a) - LIBS += $$static_libgcc +!win32:!ios { + *g++*:equals(QT_ARCH, "arm") { + static_libgcc = $$system($$QMAKE_CXX -print-file-name=libgcc.a) + LIBS += $$static_libgcc + } SOURCES += $$PWD/qv4exception_gcc.cpp DEFINES += V4_CXX_ABI_EXCEPTION } |