David Bremner writes:
> Matthew Flatt <mfl...@cs.utah.edu> writes: > >> At Fri, 17 Jan 2020 09:43:15 -0400, David Bremner wrote: >>> Matthew Flatt <mfl...@cs.utah.edu> writes: >>> > At Fri, 17 Jan 2020 08:31:22 -0400, David Bremner wrote: >>> >> => 0xb6ea3254 <+8>: stmdb sp!, {r4, r5, r6, r7, r8, r9, r10, r11, >>> >> lr} >>> >> 0xb6ea3258 <+12>: add r3, pc >>> > >>> > That certainly looks like a valid ARM instruction. Maybe the processor >>> > is expecting Thumb instructions. What does `print $cpsr` report? >>> >>> (gdb) print $cpsr >>> $3 = 196656 >> >> Since bit 5 is set, I think that means the processor was expecting >> Thumb instructions, which at least explains the error. >> >> To confirm that it's some bad jump or mismanagement of the mode by the >> Racket JIT, does changing "racket/src/lightning/arm/asm.h" to disable >> Thumb support allow the build to work? > > I'm not very sure I'm doing the right thing, but With the following > change, I get the same build failure. > > % diff -u asm.h~ asm.h > --- asm.h~ 2019-12-30 19:12:36.000000000 +0000 > +++ asm.h 2020-01-17 16:06:45.964573092 +0000 > @@ -2299,4 +2299,7 @@ > #define THUMB2_CLZ 0xfab0f080 > #define T2_CLZ(rd,rm) thumb2_orrr(THUMB2_CLZ,rd,rm,rm) > > +# undef JIT_ARM_THUMB > +# define JIT_ARM_THUMB 0 > + > #endif /* __lightning_asm_h */ Can you try to define that earlier? https://github.com/racket/racket/blob/5377d00c90480e73e0863203d35d7a1dc373195d/racket/src/racket/src/lightning/arm/asm.h#L150 Remove lines 150-152 and do the same: #undef JIT_ARM_THUMB #define JIT_ARM_THUMB 0 It looks like this header file assumes all armv7 have thumb2 support which is why its generating that instruction. (line 132) -- Paulo Matos