emulators/qemu: qemu ports failing due to compiler error on 12-CURRENT
ohartmann at walstatt.org
Thu Dec 29 16:30:07 UTC 2016
Am Wed, 7 Dec 2016 23:31:01 +0100
Dimitry Andric <dim at FreeBSD.org> schrieb:
> On 07 Dec 2016, at 10:42, O. Hartmann <ohartmann at walstatt.org> wrote:
> > I try my first steps in cross compiling ports with poudriere and therefore I try to
> > setup an appropriate jail and QEMU environment.
> > Well, I'm failing at the jail setup due to the non-exitence of any suitable QEMU
> > environment and for that I tried to figure out to find some proper HOWTO.
> > Searching via google ave some hints, but in questions which QEMU from ports should be
> > used, all leave me alone, so I tried
> > emulators/qemu
> > emulators/qemu-devel
> > emulators/qemu-static
> > emulators/qemu is known for me to fail since months and the days of 11-CURRENT, there
> > is a compiler error spit out with clang 3.8 and now 3.9. The very same for qemu-devel
> > (both ports used with standard options, no extras). See also Bug 214873
> > (https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=214873) and Bug 215100
> > (https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=215100).
> I couldn't reproduce the compilation errors, it builds fine for me until
> the link phase.
Well, I face this in poudriere on the most recent 12-CURRENT, too as well as 12-CURRENT
On the host I'd like to run qemu for testing aarch64 binaries for a Odroid-C2 project, I
use a customized /etc/src.conf - but on poudriere, there is no such customisation but
the failing is identical.
> > I tried also emulators/qemu-static, but it also fails compiling on most recent
> > 12-CURRENT (as the others, too, also my poudriere environment, which has also CURRENT
> > jails) with
> > [...]
> > /usr/bin/ld:../config-host.ld:14: syntax error
> > c++: error: linker command failed with exit code 1 (use -v to see invocation)
> > [...]
> But this I *can* reproduce. It appears qemu wants to set the text
> segment start address, using the -Ttext-segment=0x60000000 option to ld.
> However, our base ld does not yet support this option, and then the
> configure script tries to patch the default linker script using the
> following construct:
> $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/" >
> Unfortunately, it seems to run /usr/local/bin/ld in this case, and this
> results in the following busted linker script line, which cannot be
> PROVIDE (__executable_start = 0x60000000SEGMENT_START("text-segment", 0x08048000)); .
> = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS;
> If it would use /usr/bin/ld instead, the patching would succeed, and
> the line would become:
> PROVIDE (__executable_start = 0x60000000); . = 0x60000000 + SIZEOF_HEADERS;
> which is probably what was intended.
> Probably, the configure script needs to be patched to run base ld,
> or use the same ld invocation for both checking the -Ttext-segment
> option support and patching the linker script.
Since for now all three QEMU ports are incapacitated, I start to float like a dead man in
the water. I do not know where to start looking for possible sources for the
miscompilations and I'm wondering why others running 12-CURRENT do not see the problem. I
tried on different 12-CURRENT systems I have access to and its everwhere the same.
Either, a mysterious configuration issue that finds its way also into poudriere - over
clang 3.8 as well as 3.9.0 and 3.9.1 (I think it is 3.9.1 the most recent one I used).
Ich widerspreche der Nutzung oder Übermittlung meiner Daten für
Werbezwecke oder für die Markt- oder Meinungsforschung (§ 28 Abs. 4 BDSG).
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Size: 313 bytes
Desc: OpenPGP digital signature
More information about the freebsd-ports