_get_previous_fp broken on bsd with llvm-gcc

Daniel D. Daugherty daniel.daugherty at oracle.com
Thu Feb 2 09:03:43 PST 2012


You will likely see the fix more quickly if you push it yourself
into hotspot-comp.

Going thru hotspot-rt would mean waiting for hotspot-rt -> hotspot-main
and then getting it on the next sync from hotspot-main -> hotspot-comp.
Since it is already Thursday, I don't think the fix would make this
week's hotspot-rt -> hotspot-main push so it wouldn't be in hotspot-main
until sometime next week...

Please put me on the interest list for the bug.

Dan


On 2/2/12 9:10 AM, Christian Thalinger wrote:
> While working on a bug on my Mac I noticed that _get_previous_fp is broken with LLVM-GCC.  The GCC version I am currently using is:
>
> gcc version 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2335.15.00)
>
> The fix is to use the __clang__ implementation (as is the case for os::current_stack_pointer):
>
> diff --git a/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp b/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp
> --- a/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp
> +++ b/src/os_cpu/bsd_x86/vm/os_bsd_x86.cpp
> @@ -362,7 +362,7 @@ frame os::get_sender_for_C_frame(frame*
>   }
>
>   intptr_t* _get_previous_fp() {
> -#if defined(SPARC_WORKS) || defined(__clang__)
> +#if defined(SPARC_WORKS) || defined(__clang__) || defined(__llvm__)
>     register intptr_t **ebp;
>     __asm__("mov %%"SPELL_REG_FP", %0":"=r"(ebp));
>   #else
>
> Can someone of you guys fix this or should I file a bug and push it into hotspot-comp?
>
> -- Chris


More information about the hotspot-runtime-dev mailing list