diff options
author | Mike Pall <mike> | 2011-06-02 01:21:32 +0200 |
---|---|---|
committer | Mike Pall <mike> | 2011-06-02 01:21:32 +0200 |
commit | 9e153003b4edd0272fbf0355f7bd128b17fb3dfe (patch) | |
tree | bf33ff244950ccdd3cb4ac7049837595226aaede /src/buildvm_asm.c | |
parent | 8dd09d5041545f95cd946ebc1e94b397fd2f4811 (diff) | |
download | luajit-9e153003b4edd0272fbf0355f7bd128b17fb3dfe.tar.gz luajit-9e153003b4edd0272fbf0355f7bd128b17fb3dfe.tar.bz2 luajit-9e153003b4edd0272fbf0355f7bd128b17fb3dfe.zip |
ARM: Catch C++ exceptions in interpreter frames.
Diffstat (limited to 'src/buildvm_asm.c')
-rw-r--r-- | src/buildvm_asm.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/buildvm_asm.c b/src/buildvm_asm.c index 6468912c..35f413b9 100644 --- a/src/buildvm_asm.c +++ b/src/buildvm_asm.c | |||
@@ -191,6 +191,14 @@ void emit_asm(BuildCtx *ctx) | |||
191 | if (ctx->mode != BUILD_machasm) | 191 | if (ctx->mode != BUILD_machasm) |
192 | fprintf(ctx->fp, ".Lbegin:\n"); | 192 | fprintf(ctx->fp, ".Lbegin:\n"); |
193 | 193 | ||
194 | #if LJ_TARGET_ARM && defined(__GNUC__) | ||
195 | /* This should really be moved into buildvm_arm.dasc. */ | ||
196 | fprintf(ctx->fp, | ||
197 | ".fnstart\n" | ||
198 | ".save {r4, r5, r6, r7, r8, r9, r10, r11, lr}\n" | ||
199 | ".pad #28\n"); | ||
200 | #endif | ||
201 | |||
194 | for (i = rel = 0; i < ctx->nsym; i++) { | 202 | for (i = rel = 0; i < ctx->nsym; i++) { |
195 | int32_t ofs = ctx->sym[i].ofs; | 203 | int32_t ofs = ctx->sym[i].ofs; |
196 | int32_t next = ctx->sym[i+1].ofs; | 204 | int32_t next = ctx->sym[i+1].ofs; |
@@ -219,6 +227,13 @@ void emit_asm(BuildCtx *ctx) | |||
219 | #endif | 227 | #endif |
220 | } | 228 | } |
221 | 229 | ||
230 | #if LJ_TARGET_ARM && defined(__GNUC__) | ||
231 | fprintf(ctx->fp, | ||
232 | ".globl lj_err_unwind_arm\n" | ||
233 | ".personality lj_err_unwind_arm\n" | ||
234 | ".fnend\n"); | ||
235 | #endif | ||
236 | |||
222 | fprintf(ctx->fp, "\n"); | 237 | fprintf(ctx->fp, "\n"); |
223 | switch (ctx->mode) { | 238 | switch (ctx->mode) { |
224 | case BUILD_elfasm: | 239 | case BUILD_elfasm: |