Fehler mit gcc 5 für varargs-Funktion: Suffix oder Operanden ungültig für movq

Beim Versuch, OpenMPI zu installieren, schlug das Feld .configure im Abschnitt zur Überprüfung der ISO C99-Fähigkeit des ausgewählten Compilers fehl.

Rätselhaft, da gcc natürlich sowohl die Option std = gnu99 als auch std = c99 hat. Ich beschneide die Konfigurationsdatei mit 20.000 Zeilen, um den fehlerhaften Abschnitt zu isolieren. Am Ende habe ich es auf gcc 5 zurückgeführt, das keine variablen Argumentfunktionen kompiliert.

Der folgende Code generiert den Fehler "Suffix oder Operanden ungültig für" movq "", der die Hauptursache für das Fehlschlagen der .configure-Datei ist.

(Die Schritt-für-Schritt-Installation für OpenMPI, die ich befolgt habe, ist hierhttps: //wiki.helsinki.fi/display/HUGG/Installing+Open+MPI+on+Mac+OS+)

Hat jemand dies gesehen und weiß, wie man es behebt?

//-----------------------------------------------------------------------------
// This fails to compile with gcc 5.3
//
// Command: gcc test4.c
//
// Error is: 
//  /var/folders/4s/gkkpz000gn/T//ccAraq59.s:47:suffix or operands invalid for `movq'
//  /var/folders/4s/gkg0r000gn/T//ccAraq59.s:52:suffix or operands invalid for `movq'
//
// gcc version is 5.3.0:
//
// $ gcc --version
// gcc (GCC) 5.3.0
// Copyright (C) 2015 Free Software Foundation, Inc.
// This is free software; see the source for copying conditions.  There is NO
// warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
//
//-----------------------------------------------------------------------------


// Check varargs
static void
test_varargs (const char *format, ...)
{
}


//--------------------------------------------------------------
//                         MAIN {}   
//--------------------------------------------------------------

 int
 main ()
 {

    //====================================================
    // Check varargs.
    // test_varargs ("s", "string");            //WORKS
    // test_varargs ("d' ", 65);                //WORKS
    // test_varargs ("s, d' ", "string", 65);   //WORKS

    test_varargs ("f .", 34.234);                       // FAILS!!!
    test_varargs ("s, d' f .", "string", 65, 34.234);   //ALSO FAILS
    //====================================================


   return 0;
 }

Antworten auf die Frage(2)

Ihre Antwort auf die Frage