[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#773590: g++-4.9: incorrectly compiles moc on sparc



Package: g++-4.9
Version: 4.9.2-8
Control: affects -1 src:qtbase-opensource-src

Dear gcc maintainers,

In qtbase-opensource-src 5.4.0+dfsg, src/tools/moc/main.cpp contains the following code:

    if (output.size()) { // output file specified
        out = fopen(QFile::encodeName(output).constData(), "w"); // create output file
        if (!out)
        {
            fprintf(stderr, "moc: Cannot create %s\n", QFile::encodeName(output).constData());
            return 1;
        }
    } else { // use stdout
        out = stdout;
    }

However, when moc is compiled, it behaves very strangely in this place:

* fopen does not seem to be called at all (at least there is no corresponding
  open syscall in strace output), so `out' remains a null pointer.
* Only the "%s\n" part is printed to stderr, without the "moc: Cannot create "
  part.

An example can be seen in qtbase-opensource-src/experimental build log.
A relevant part of it (simplified):

    ../bin/moc animation/qabstractanimation.h -o .moc/moc_qabstractanimation.cpp
    .moc/moc_qabstractanimation.cpp
    make[3]: *** [.moc/moc_qabstractanimation.cpp] Error 1

The last `write' call in strace output is:

    write(2, ".moc/moc_qabstractanimation.cpp\n", 32) = 32

This only happens on sparc architecture.

Unfortunately, I did not manage to reproduce this with a smaller example, but
I can reliably reproduce this with moc on smetana.debian.org.

--
Dmitry Shachnev

Attachment: signature.asc
Description: OpenPGP digital signature


Reply to: