qemu --static user build fails with fedora rawhide glibc-2.30.9000

Bug #1852115 reported by Cole Robinson
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
QEMU
Fix Released
Undecided
Unassigned

Bug Description

Building qemu latest git 654efcb511d on fedora rawhide fails with this configure line:

./configure \
 --static \
 --disable-system \
 --enable-linux-user \
 --disable-werror \
 --disable-tools \
 --disable-capstone

make fails with:

/usr/bin/ld: linux-user/syscall.o: in function `do_syscall1':
/root/qemu.git/linux-user/syscall.c:7769: undefined reference to `stime'
collect2: error: ld returned 1 exit status

Seems related to this glibc change: https://sourceware.org/git/?p=glibc.git;a=commit;h=12cbde1dae6fa4a9a792b64564c7e0debf7544cc

...

+* The obsolete function stime is no longer available to newly linked
+ binaries and it has been removed from <time.h> header. This function
+ has been deprecated in favor of clock_settime.
+

# rpm -q glibc
glibc-2.30.9000-17.fc32.x86_64

FWIW there's some other messages but I don't think they are fatal:

/usr/bin/ld: /usr/lib/gcc/x86_64-redhat-linux/9/../../../../lib64/libglib-2.0.a(gutils.c.o): in function `g_get_user_database_entry':
(.text+0x267): warning: Using 'getpwuid' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/bin/ld: (.text+0xe0): warning: Using 'getpwnam_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
/usr/bin/ld: (.text+0x11e): warning: Using 'getpwuid_r' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking

Also, --disable-capstone is required to avoid this error, but it is pre-existing, not sure if it's a bug, if so I can file a separate one:

  LINK aarch64-linux-user/qemu-aarch64
/usr/bin/ld: cannot find -lcapstone
collect2: error: ld returned 1 exit status

Revision history for this message
Peter Maydell (pmaydell) wrote :

We use stime() to implement the target stime syscall. We should probably switch to using clock_settime(CLOCK_REALTIME, ...) instead, as that's what glibc uses internally now to implement its stime():

https://sourceware.org/git/?p=glibc.git;a=blob;f=time/stime.c;h=6ea3b6dcc1a393b57b69ca24fbfe8023d9095837;hb=12cbde1dae6fa4a9a792b64564c7e0debf7544cc

Changed in qemu:
status: New → Confirmed
Revision history for this message
Laurent Vivier (laurent-vivier) wrote :

Fixed by 0f1f2d4596ae ("linux-user: remove host stime() syscall")

Changed in qemu:
status: Confirmed → Fix Committed
Thomas Huth (th-huth)
Changed in qemu:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.