From 023367e6cd41199521613674b44e9c703c8be1a1 Mon Sep 17 00:00:00 2001 From: Wolfgang Mauerer Date: Mon, 11 Jul 2011 14:57:43 +0200 Subject: [PATCH] vhost build fix for i386 vhost.c uses __sync_fetch_and_and(), which is only available for -march=i486 and above (see https://bugzilla.redhat.com/show_bug.cgi?id=624279). Signed-off-by: Wolfgang Mauerer Signed-off-by: Stefan Hajnoczi --- configure | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/configure b/configure index 38e3724f33..9bfe917c57 100755 --- a/configure +++ b/configure @@ -2509,6 +2509,29 @@ if test "$trace_backend" = "dtrace"; then fi fi +########################################## +# __sync_fetch_and_and requires at least -march=i486. Many toolchains +# use i686 as default anyway, but for those that don't, an explicit +# specification is necessary +if test $vhost_net = "yes" && test $cpu = "i386"; then + cat > $TMPC << EOF +int sfaa(unsigned *ptr) +{ + return __sync_fetch_and_and(ptr, 0); +} + +int main(int argc, char **argv) +{ + int val = 42; + sfaa(&val); + return val; +} +EOF + if ! compile_prog "" "" ; then + CFLAGS+="-march=i486" + fi +fi + ########################################## # End of CC checks # After here, no more $cc or $ld runs