On 17/06/2022 07:12, Paolo Bonzini wrote: > Hi Matheus, > > could you please test the tests-tcg-next branch at > https://gitlab.com/bonzini/qemu?
At be6090bcac10, it works if no BE toolchain is present. Otherwise, the script probes powerpc64-linux-gnu-gcc instead of the native tools for ppc64le-linux-user, and then do_compiler fails because the $target_cflags contains -mlittle-endian. > > On Thu, Jun 16, 2022 at 3:23 AM Alex Bennée <alex.ben...@linaro.org> wrote: >> >> >> Matheus Kowalczuk Ferst <matheus.fe...@eldorado.org.br> writes: >> >>> On 01/06/2022 15:05, Alex Bennée wrote: >>>> From: Paolo Bonzini <pbonz...@redhat.com> >>>> >>>> In preparation for handling more binaries than just cc, handle >>>> the case of "probe_target_compiler $cpu" directly in the function, >>>> setting the target_* variables based on the ones that are used to >>>> build QEMU. The clang check also needs to be moved after this >>>> fallback. >>>> >>>> Signed-off-by: Paolo Bonzini <pbonz...@redhat.com> >>>> Reviewed-by: Richard Henderson <richard.hender...@linaro.org> >>>> Message-Id: <20220517092616.1272238-10-pbonz...@redhat.com> >>>> Signed-off-by: Alex Bennée <alex.ben...@linaro.org> >>>> Message-Id: <20220527153603.887929-21-alex.ben...@linaro.org> >>> >>> Hi, >>> >>> After this patch, a clean build in ppc64le hosts will not build >>> ppc64{,le}-linux-user tests with "make check-tcg" >>> >>>> >>>> diff --git a/configure b/configure >>>> index fbf6d39f96..217c8b3cac 100755 >>>> --- a/configure >>>> +++ b/configure >>>> @@ -954,10 +954,6 @@ case $git_submodules_action in >>>> ;; >>>> esac >>>> >>>> -if eval test -z "\${cross_cc_$cpu}"; then >>>> - eval "cross_cc_${cpu}=\$cc" >>>> -fi >>>> - >>>> default_target_list="" >>>> mak_wilds="" >>>> >>>> @@ -2008,13 +2004,6 @@ probe_target_compiler() { >>>> if eval test -n "\"\${cross_cc_$1}\""; then >>>> if eval has "\"\${cross_cc_$1}\""; then >>>> eval "target_cc=\"\${cross_cc_$1}\"" >>>> - case $1 in >>>> - i386|x86_64) >>>> - if $target_cc --version | grep -qi "clang"; then >>>> - unset target_cc >>>> - fi >>>> - ;; >>>> - esac >>>> fi >>>> fi >>>> if eval test -n "\"\${cross_as_$1}\""; then >>>> @@ -2027,6 +2016,20 @@ probe_target_compiler() { >>>> eval "target_ld=\"\${cross_ld_$1}\"" >>>> fi >>>> fi >>>> + if test "$1" = $cpu; then > + : ${target_cc:=$cc} >>>> + : ${target_as:=$as} >>>> + : ${target_ld:=$ld} >>>> + fi >>> >>> $cpu is normalized[1] to ppc64 on little-endian hosts, so >>> ppc64le-linux-user will not have $target_{cc,as,ld} set, and >>> ppc64-linux-user will have them set to a toolchain that may not support >>> -mbig-endian. I suppose we have a similar problem with MIPS targets on >>> MIPS hosts. >> >> For now you can always explicitly tell configure about the host compiler >> with: >> >> --cross-cc-ppc64le=gcc >> >> but we should fix the broken detection. With this workaround we can run the tests on master. However, it works because linux-user tests only use CC. I wonder if the --cross-cc-* options will remain useful in the future; it seems that only --cross-prefix-* should be used now that more tools are exported in the config-<target>.mak >> It seems the var cpu has an >> overloaded meaning so I wonder if we just need an explicit host_cpu >> setting when we normalize cpu? >> AFAICT, $cpu is always host-related, but after the normalization it seems more like the architecture than the CPU name... Maybe we should call them $host_cpu and $host_arch? >>> >>> [1] >>> https://gitlab.com/qemu-project/qemu/-/blob/2ad60f6f8c12ca0acd8834fdd70e088361b8791f/configure#L611 >> >> >> -- >> Alex Bennée >> Thanks, Matheus K. Ferst Instituto de Pesquisas ELDORADO <http://www.eldorado.org.br/> Analista de Software Aviso Legal - Disclaimer <https://www.eldorado.org.br/disclaimer.html>