(cited the wrong JBS issue, the correct one is
https://bugs.openjdk.java.net/browse/JDK-8284997)

On Fri, May 27, 2022 at 3:12 PM Thomas Stüfe <thomas.stu...@gmail.com>
wrote:

> Hi,
>
> I am investigating the arm-specific problem
> https://bugs.openjdk.java.net/browse/JDK-8283326. It looks like the
> error is caused by arm- and thumb-code interleaving: GCC-compiled code, in
> thumb mode, calls into a static assembler subroutine that has been compiled
> into arm mode, but the caller uses the wrong call instruction and we call
> into SafeFetch without switching into arm mode (gcc-generated code uses bl
> instead of blx).
>
> This problem only happens if the OpenJDK was built with a GCC that itself
> was built with --with-mode=thumb. Without that option, GCC defaults to arm
> code generation, and that hides the error I describe above.
>
> My question is: Is this by design? It seems strange to leave this decision
> up to whoever built the toolchain. Should we not fix the arm/thumb decision
> at build time with either one of -mthumb or -marm?
>
> Thanks, Thomas
>
> P.S. I found one possible solution for my particular problem was to add
> `.type function` to the static assembler routine. That caused gcc to use
> the correct jump instruction (blx instead of bl). But I am not sure this is
> the best solution, maybe best would be to just use the same mode for all
> hotspot compilation units.
>

Reply via email to