aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2013-07-19 16:07:07 +0200
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-07-23 13:00:36 +0200
commit713a4c5b1d601f57d538fdbb1e8f6bc05ce07275 (patch)
tree5524437eb3da9e67739947b30ef9b94382b1263a /tools
parentb17f57df9d7d261c3e0739f2b589258cd2374d56 (diff)
Fix FDE generation on Intel 32-bit
Make the generated FDE program reflect that ESI and EDI are callee saved registers. For some reason the program we've had in qv4unwindhelper_p-dw.h for 32-bit was already correct, but the generator was broken (and even mixed up the registers). Change-Id: Id8132580d20636c8ea17f8460d161547227c95fc Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
Diffstat (limited to 'tools')
-rw-r--r--tools/fdegen/main.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/tools/fdegen/main.cpp b/tools/fdegen/main.cpp
index 313be40351..8c24fb88af 100644
--- a/tools/fdegen/main.cpp
+++ b/tools/fdegen/main.cpp
@@ -87,10 +87,10 @@ enum DwarfRegs {
EDX = 1,
ECX = 2,
EBX = 3,
- ESI = 4,
- EDI = 5,
- EBP = 6,
- ESP = 7,
+ ESP = 4,
+ EBP = 5,
+ ESI = 6,
+ EDI = 7,
EIP = 8,
InstructionPointerRegister = EIP,
@@ -105,6 +105,9 @@ static const DwarfRegs calleeSavedRegisters[] = {
#if defined(Q_PROCESSOR_X86_64)
R12,
R14
+#elif defined(Q_PROCESSOR_X86)
+ ESI,
+ EDI
#endif
};
static const int calleeSavedRegisterCount = sizeof(calleeSavedRegisters) / sizeof(calleeSavedRegisters[0]);