Message ID | 20200326134316.36059-1-roger.pau@citrix.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | qemu-user: fix build with LLVM lld 10 | expand |
On 3/26/20 6:43 AM, Roger Pau Monne wrote: > lld 10.0.0 introduced a new linker option --image-base equivalent to > the GNU -Ttext-segment one, hence use it when available. > > This fixes the build of QEMU on systems using lld 10 or greater. > > Signed-off-by: Dimitry Andric <dim@FreeBSD.org> > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> > --- > Cc: Laurent Vivier <laurent@vivier.eu> > Cc: Richard Henderson <richard.henderson@linaro.org> > Cc: "Philippe Mathieu-Daudé" <philmd@redhat.com> > Cc: Paolo Bonzini <pbonzini@redhat.com> > Cc: "Daniel P. Berrangé" <berrange@redhat.com> > --- The Plan is still to drop this whole section of code. However, it's still blocked on getting the x86_64 vsyscall patches upstream. r~
On Thu, Mar 26, 2020 at 09:56:38AM -0700, Richard Henderson wrote: > On 3/26/20 6:43 AM, Roger Pau Monne wrote: > > lld 10.0.0 introduced a new linker option --image-base equivalent to > > the GNU -Ttext-segment one, hence use it when available. > > > > This fixes the build of QEMU on systems using lld 10 or greater. > > > > Signed-off-by: Dimitry Andric <dim@FreeBSD.org> > > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> > > --- > > Cc: Laurent Vivier <laurent@vivier.eu> > > Cc: Richard Henderson <richard.henderson@linaro.org> > > Cc: "Philippe Mathieu-Daudé" <philmd@redhat.com> > > Cc: Paolo Bonzini <pbonzini@redhat.com> > > Cc: "Daniel P. Berrangé" <berrange@redhat.com> > > --- > > The Plan is still to drop this whole section of code. > > However, it's still blocked on getting the x86_64 vsyscall patches upstream. While this doesn't materialize, could it be possible to get this patch accepted? This is currently blocking the build of QEMU on FreeBSD HEAD, which has already switched to LLVM 10.0.0. Thanks, Roger.
Le 26/03/2020 à 17:56, Richard Henderson a écrit : > On 3/26/20 6:43 AM, Roger Pau Monne wrote: >> lld 10.0.0 introduced a new linker option --image-base equivalent to >> the GNU -Ttext-segment one, hence use it when available. >> >> This fixes the build of QEMU on systems using lld 10 or greater. >> >> Signed-off-by: Dimitry Andric <dim@FreeBSD.org> >> Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> >> --- >> Cc: Laurent Vivier <laurent@vivier.eu> >> Cc: Richard Henderson <richard.henderson@linaro.org> >> Cc: "Philippe Mathieu-Daudé" <philmd@redhat.com> >> Cc: Paolo Bonzini <pbonzini@redhat.com> >> Cc: "Daniel P. Berrangé" <berrange@redhat.com> >> --- > > The Plan is still to drop this whole section of code. > > However, it's still blocked on getting the x86_64 vsyscall patches upstream. Richard, will you propose another fix to fix build with LLVM lld 10? Thanks, Laurent
Roger Pau Monné <roger.pau@citrix.com> writes: > On Thu, Mar 26, 2020 at 09:56:38AM -0700, Richard Henderson wrote: >> On 3/26/20 6:43 AM, Roger Pau Monne wrote: >> > lld 10.0.0 introduced a new linker option --image-base equivalent to >> > the GNU -Ttext-segment one, hence use it when available. >> > >> > This fixes the build of QEMU on systems using lld 10 or greater. >> > >> > Signed-off-by: Dimitry Andric <dim@FreeBSD.org> >> > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> >> > --- >> > Cc: Laurent Vivier <laurent@vivier.eu> >> > Cc: Richard Henderson <richard.henderson@linaro.org> >> > Cc: "Philippe Mathieu-Daudé" <philmd@redhat.com> >> > Cc: Paolo Bonzini <pbonzini@redhat.com> >> > Cc: "Daniel P. Berrangé" <berrange@redhat.com> >> > --- >> >> The Plan is still to drop this whole section of code. >> >> However, it's still blocked on getting the x86_64 vsyscall patches upstream. > > While this doesn't materialize, could it be possible to get this patch > accepted? > > This is currently blocking the build of QEMU on FreeBSD HEAD, which > has already switched to LLVM 10.0.0. I think the vsyscall patch has just been merged, however way I don't think targeting HEAD of a OS release during the rc phase is appropriate.
On Fri, Mar 27, 2020 at 11:28:04AM +0000, Alex Bennée wrote: > > Roger Pau Monné <roger.pau@citrix.com> writes: > > > On Thu, Mar 26, 2020 at 09:56:38AM -0700, Richard Henderson wrote: > >> On 3/26/20 6:43 AM, Roger Pau Monne wrote: > >> > lld 10.0.0 introduced a new linker option --image-base equivalent to > >> > the GNU -Ttext-segment one, hence use it when available. > >> > > >> > This fixes the build of QEMU on systems using lld 10 or greater. > >> > > >> > Signed-off-by: Dimitry Andric <dim@FreeBSD.org> > >> > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> > >> > --- > >> > Cc: Laurent Vivier <laurent@vivier.eu> > >> > Cc: Richard Henderson <richard.henderson@linaro.org> > >> > Cc: "Philippe Mathieu-Daudé" <philmd@redhat.com> > >> > Cc: Paolo Bonzini <pbonzini@redhat.com> > >> > Cc: "Daniel P. Berrangé" <berrange@redhat.com> > >> > --- > >> > >> The Plan is still to drop this whole section of code. > >> > >> However, it's still blocked on getting the x86_64 vsyscall patches upstream. > > > > While this doesn't materialize, could it be possible to get this patch > > accepted? > > > > This is currently blocking the build of QEMU on FreeBSD HEAD, which > > has already switched to LLVM 10.0.0. > > I think the vsyscall patch has just been merged, however way I don't > think targeting HEAD of a OS release during the rc phase is appropriate. I'm not sure I understand what you mean. If QEMU doesn't build on FreeBSD HEAD it won't build on the next release. Also the LLVM toolchain used is not a development version AFAIK, but the actual 10.0.0 release, which QEMU should aim to support? Can this be applied to stable branches then please if QEMU master doesn't have that chunk in configure anymore? FWIW, I've just looked at configure from git master branch and it still has that exact same linker detection chunk that this patch is trying to fix. Thanks, Roger.
Roger Pau Monné <roger.pau@citrix.com> writes: > On Fri, Mar 27, 2020 at 11:28:04AM +0000, Alex Bennée wrote: >> >> Roger Pau Monné <roger.pau@citrix.com> writes: >> >> > On Thu, Mar 26, 2020 at 09:56:38AM -0700, Richard Henderson wrote: >> >> On 3/26/20 6:43 AM, Roger Pau Monne wrote: >> >> > lld 10.0.0 introduced a new linker option --image-base equivalent to >> >> > the GNU -Ttext-segment one, hence use it when available. >> >> > >> >> > This fixes the build of QEMU on systems using lld 10 or greater. >> >> > >> >> > Signed-off-by: Dimitry Andric <dim@FreeBSD.org> >> >> > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> >> >> > --- >> >> > Cc: Laurent Vivier <laurent@vivier.eu> >> >> > Cc: Richard Henderson <richard.henderson@linaro.org> >> >> > Cc: "Philippe Mathieu-Daudé" <philmd@redhat.com> >> >> > Cc: Paolo Bonzini <pbonzini@redhat.com> >> >> > Cc: "Daniel P. Berrangé" <berrange@redhat.com> >> >> > --- >> >> >> >> The Plan is still to drop this whole section of code. >> >> >> >> However, it's still blocked on getting the x86_64 vsyscall patches upstream. >> > >> > While this doesn't materialize, could it be possible to get this patch >> > accepted? >> > >> > This is currently blocking the build of QEMU on FreeBSD HEAD, which >> > has already switched to LLVM 10.0.0. >> >> I think the vsyscall patch has just been merged, however way I don't >> think targeting HEAD of a OS release during the rc phase is appropriate. > > I'm not sure I understand what you mean. If QEMU doesn't build on > FreeBSD HEAD it won't build on the next release. Also the LLVM > toolchain used is not a development version AFAIK, but the actual > 10.0.0 release, which QEMU should aim to support? QEMU's supported build platforms are based on what is currently shipping as stable versions: https://www.qemu.org/docs/master/system/build-platforms.html > Can this be applied to stable branches then please if QEMU master > doesn't have that chunk in configure anymore? Usually platforms released after a given QEMU release will just carry their own patches in the local packaging. When is the current HEAD due to be cut as the next release? The schedule for QEMU's release is documented on out planning pages: https://wiki.qemu.org/Planning/5.0 > FWIW, I've just looked at configure from git master branch and it > still has that exact same linker detection chunk that this patch is > trying to fix. Now the vsyscalls patch is in this can be cleaned up I think. Richard?
On Fri, Mar 27, 2020 at 03:44:47PM +0000, Alex Bennée wrote: > > Roger Pau Monné <roger.pau@citrix.com> writes: > > > On Fri, Mar 27, 2020 at 11:28:04AM +0000, Alex Bennée wrote: > >> > >> Roger Pau Monné <roger.pau@citrix.com> writes: > >> > >> > On Thu, Mar 26, 2020 at 09:56:38AM -0700, Richard Henderson wrote: > >> >> On 3/26/20 6:43 AM, Roger Pau Monne wrote: > >> >> > lld 10.0.0 introduced a new linker option --image-base equivalent to > >> >> > the GNU -Ttext-segment one, hence use it when available. > >> >> > > >> >> > This fixes the build of QEMU on systems using lld 10 or greater. > >> >> > > >> >> > Signed-off-by: Dimitry Andric <dim@FreeBSD.org> > >> >> > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> > >> >> > --- > >> >> > Cc: Laurent Vivier <laurent@vivier.eu> > >> >> > Cc: Richard Henderson <richard.henderson@linaro.org> > >> >> > Cc: "Philippe Mathieu-Daudé" <philmd@redhat.com> > >> >> > Cc: Paolo Bonzini <pbonzini@redhat.com> > >> >> > Cc: "Daniel P. Berrangé" <berrange@redhat.com> > >> >> > --- > >> >> > >> >> The Plan is still to drop this whole section of code. > >> >> > >> >> However, it's still blocked on getting the x86_64 vsyscall patches upstream. > >> > > >> > While this doesn't materialize, could it be possible to get this patch > >> > accepted? > >> > > >> > This is currently blocking the build of QEMU on FreeBSD HEAD, which > >> > has already switched to LLVM 10.0.0. > >> > >> I think the vsyscall patch has just been merged, however way I don't > >> think targeting HEAD of a OS release during the rc phase is appropriate. > > > > I'm not sure I understand what you mean. If QEMU doesn't build on > > FreeBSD HEAD it won't build on the next release. Also the LLVM > > toolchain used is not a development version AFAIK, but the actual > > 10.0.0 release, which QEMU should aim to support? > > QEMU's supported build platforms are based on what is currently shipping > as stable versions: > > https://www.qemu.org/docs/master/system/build-platforms.html FWIW, when I wrote that my intention was *not* to exclude the bleeding edge distro development branches. Obviously we can break on those distros at any time as they're moving targets, but IMHO we should treat bugs as we would for any other released distros and aim to fix them promptly when bugs occurr. Regards, Daniel
Daniel P. Berrangé <berrange@redhat.com> writes: > On Fri, Mar 27, 2020 at 03:44:47PM +0000, Alex Bennée wrote: >> >> Roger Pau Monné <roger.pau@citrix.com> writes: >> >> > On Fri, Mar 27, 2020 at 11:28:04AM +0000, Alex Bennée wrote: >> >> >> >> Roger Pau Monné <roger.pau@citrix.com> writes: >> >> >> >> > On Thu, Mar 26, 2020 at 09:56:38AM -0700, Richard Henderson wrote: >> >> >> On 3/26/20 6:43 AM, Roger Pau Monne wrote: >> >> >> > lld 10.0.0 introduced a new linker option --image-base equivalent to >> >> >> > the GNU -Ttext-segment one, hence use it when available. >> >> >> > >> >> >> > This fixes the build of QEMU on systems using lld 10 or greater. >> >> >> > >> >> >> > Signed-off-by: Dimitry Andric <dim@FreeBSD.org> >> >> >> > Signed-off-by: Roger Pau Monné <roger.pau@citrix.com> >> >> >> > --- >> >> >> > Cc: Laurent Vivier <laurent@vivier.eu> >> >> >> > Cc: Richard Henderson <richard.henderson@linaro.org> >> >> >> > Cc: "Philippe Mathieu-Daudé" <philmd@redhat.com> >> >> >> > Cc: Paolo Bonzini <pbonzini@redhat.com> >> >> >> > Cc: "Daniel P. Berrangé" <berrange@redhat.com> >> >> >> > --- >> >> >> >> >> >> The Plan is still to drop this whole section of code. >> >> >> >> >> >> However, it's still blocked on getting the x86_64 vsyscall patches upstream. >> >> > >> >> > While this doesn't materialize, could it be possible to get this patch >> >> > accepted? >> >> > >> >> > This is currently blocking the build of QEMU on FreeBSD HEAD, which >> >> > has already switched to LLVM 10.0.0. >> >> >> >> I think the vsyscall patch has just been merged, however way I don't >> >> think targeting HEAD of a OS release during the rc phase is appropriate. >> > >> > I'm not sure I understand what you mean. If QEMU doesn't build on >> > FreeBSD HEAD it won't build on the next release. Also the LLVM >> > toolchain used is not a development version AFAIK, but the actual >> > 10.0.0 release, which QEMU should aim to support? >> >> QEMU's supported build platforms are based on what is currently shipping >> as stable versions: >> >> https://www.qemu.org/docs/master/system/build-platforms.html > > FWIW, when I wrote that my intention was *not* to exclude the bleeding > edge distro development branches. > > Obviously we can break on those distros at any time as they're moving > targets, but IMHO we should treat bugs as we would for any other > released distros and aim to fix them promptly when bugs occurr. Sure - I think there are now patches incoming from Richard to delete the linker code which should meet the criteria for an RC fix, especially if they solve the LLVM 10.0 problem as well.
On 3/27/20 3:51 AM, Laurent Vivier wrote: >> The Plan is still to drop this whole section of code. >> >> However, it's still blocked on getting the x86_64 vsyscall patches upstream. > > Richard, > > will you propose another fix to fix build with LLVM lld 10? Sent. r~
diff --git a/configure b/configure index da09c35895..92d57d84fa 100755 --- a/configure +++ b/configure @@ -6514,27 +6514,31 @@ if ( [ "$linux_user" = yes ] || [ "$bsd_user" = yes ] ) && [ "$pie" = no ]; then cat > $TMPC <<EOF int main(void) { return 0; } EOF - textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr" + # Test with image-base first, which appeared in lld 10.0.0 + textseg_ldflags="-Wl,--image-base=$textseg_addr" if ! compile_prog "" "$textseg_ldflags"; then - # In case ld does not support -Ttext-segment, edit the default linker - # script via sed to set the .text start addr. This is needed on FreeBSD - # at least. - if ! $ld --verbose >/dev/null 2>&1; then - error_exit \ - "We need to link the QEMU user mode binaries at a" \ - "specific text address. Unfortunately your linker" \ - "doesn't support either the -Ttext-segment option or" \ - "printing the default linker script with --verbose." \ - "If you don't want the user mode binaries, pass the" \ - "--disable-user option to configure." - fi + textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr" + if ! compile_prog "" "$textseg_ldflags"; then + # In case ld does not support -Ttext-segment, edit the default linker + # script via sed to set the .text start addr. This is needed on FreeBSD + # at least. + if ! $ld --verbose >/dev/null 2>&1; then + error_exit \ + "We need to link the QEMU user mode binaries at a" \ + "specific text address. Unfortunately your linker" \ + "doesn't support either the --image-base or -Ttext-segment" \ + "options or printing the default linker script with" \ + "--verbose. If you don't want the user mode binaries," \ + "pass the --disable-user option to configure." + fi - $ld --verbose | sed \ - -e '1,/==================================================/d' \ - -e '/==================================================/,$d' \ - -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \ - -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld - textseg_ldflags="-Wl,-T../config-host.ld" + $ld --verbose | sed \ + -e '1,/==================================================/d' \ + -e '/==================================================/,$d' \ + -e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \ + -e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld + textseg_ldflags="-Wl,-T../config-host.ld" + fi fi fi fi