On 10/21/18 4:21 PM, Peter Maydell wrote:
> On 21 October 2018 at 16:01, Peter Maydell <peter.mayd...@linaro.org> wrote:
>> Any idea what's going on here? tcg/tcg.h has a comment saying
>>  * The cmpxchg functions are only defined if HAVE_CMPXCHG128
>> so presumably the issue is that the helper-a64 code is
>> trying to refer to them anyway. There certainly doesn't
>> seem to be any kind of #defining around the listed functions
>> in helper-a64.c to stop them being compiled in this situation.
>>
>> NB: I build with --enable-debug in this tree -- are you
>> perhaps accidentally relying on the compiler's optimisation
>> to discard these functions if they're not needed?
> 
> Adding a #if HAVE_CMPXCHG128 around the helper-a64.c
> functions just pushes the link error back a step to the
> references to those helpers:
>   LINK    aarch64-softmmu/qemu-system-aarch64w.exe
> tcg/tcg.o:tcg.c:(.rdata+0x9810): undefined reference to
> `helper_paired_cmpxchg64_le_parallel'
> tcg/tcg.o:tcg.c:(.rdata+0x9830): undefined reference to
> `helper_paired_cmpxchg64_be_parallel'
> tcg/tcg.o:tcg.c:(.rdata+0x9840): undefined reference to
> `helper_casp_le_parallel'
> tcg/tcg.o:tcg.c:(.rdata+0x9850): undefined reference to
> `helper_casp_be_parallel'
> 
> which in turn I guess is because they're in the array
> of all helpers in tcg.c, so we need to also #if out the
> prototypes in helper-a64.h, which is awkward because
> there we don't have the HAVE_CMPXCHG128 defined...

I spoke with Peter in person today about this.  For the list, I've reproduced
the problem, and I'm calling it a mingw bug.  A patch against qemu/osdep.h to
fix this once and for all shortly.


r~

Reply via email to