Results of a test mass rebuild of rawhide-20090126 with gcc-4.4.0-0.9
Jon Ciesla
limb at jcomserv.net
Tue Feb 3 18:47:48 UTC 2009
Is it anticipated that there will be a rash of FTBFS bugs for packages
that still fail X days after gcc-4.4 hits rawhide?
I think I got all mine, but would appreciate the extra nagging if I didn't.
> Hi!
>
> In the past few days I've done a mass rebuild of rawhide-20090126
> in mock with gcc-4.4.0-0.9 (and corresponding libtool).
> 6228 packages were successfully built, for the rest I've tried
> to rebuild them also with gcc-4.3.2-7 (though I ran out of time,
> so a couple of packages weren't attempted with 4.3).
>
> Here are the most common causes of the regressions (fails to build
> with gcc-4.4.0-0.9, succeeds with gcc-4.3.2-7):
>
> - 142 failures
> C++ <string> (<bits/char_traits.h>) no longer includes <cstdio>.
> So does <ios>, <streambuf>, <iomanip>, <locale>.
> When you need anything from C stdio.h, such as EOF, *printf*,
> *scanf*, remove etc., add #include <cstdio> to all sources that
> need it.
> http://sunsite.mff.cuni.cz/rawhide20090126-gcc44/cstdio/
>
> - 22 failures
> G++ 4.4 rejects int main () { return main (); } or
> int main () { main (); return 0; },
> as main shouldn't be used within the program (see ISO C++
> [basic.start.main]/3).
> This breaks some configure scripts, e.g. AC_CHECK_LIB with second
> argument main as in
> AC_CHECK_LIB(stdc++,main,,AC_MSG_ERROR([libstdc++ not installed]))
> will now fail. As AC_CHECK_LIB isn't well suited for C++, which
> requires
> prototypes and AC_CHECK_LIB doesn't provide them, I guess
> AC_CHECK_LIB(stdc++,int,,AC_MSG_ERROR([libstdc|| not installed]))
> could be used instead. This results in int main () { return int (); }
> or int main () { int (); return 0; }
> Only packages that actually failed to build because of this
> are listed, there are many more that are affected by it though.
> Look for checking for main in -l... giving no, even for packages
> that succeeded.
> http://sunsite.mff.cuni.cz/rawhide20090126-gcc44/main/
>
> - 15 failures
> C++ <string> (<bits/postypes.h>) no longer includes <stdint.h>.
> Neither does <ios>. When you need uint32_t, uint8_t etc.,
> #include <stdint.h>.
> http://sunsite.mff.cuni.cz/rawhide20090126-gcc44/stdint/
>
> - 15 failures
> #elif argument is now evaluated even if earlier #if/#elif
> condition evaluated non-zero, to make sure they are valid
> constant expressions. See http://gcc.gnu.org/PR36320
> To fix this, either use #else when you want it instead of
> #elif (e.g. several packages use #elif without any argument
> at all), or use #else #if ... #endif.
> http://sunsite.mff.cuni.cz/rawhide20090126-gcc44/elif/
>
> - 8 failures
> glib2's gthread.h contains a couple of aliasing issues (e.g.
> in g_once_init_enter) and a bunch of programs get bitten by it
> when they inline it.
> This should be fixed in glib2.
> http://sunsite.mff.cuni.cz/rawhide20090126-gcc44/glib.aliasing/
>
> - 6 failures
> Other aliasing problem. In the GCC 4.3 -> 4.4 transition
> the most common problem is:
> char buf[NNN]; // or unsigned char or signed char
> ...
> ((struct somestruct *)buf)->somefield = 1
> While you can access any object through char, unsigned char or
> signed char pointer and modify parts/all of it, it is not the
> other way around. In this case you probably want a union of
> the buffer and struct somestruct.
> http://sunsite.mff.cuni.cz/rawhide20090126-gcc44/aliasing/
>
> - 2 failures
> GCC bugs that were already fixed in newer gcc 4.4 (4.4.0-0.13
> should work).
> http://sunsite.mff.cuni.cz/rawhide20090126-gcc44/already_fixed/
>
> - 1 failure
> Package built with -Werror, where one extra warning appeared.
> http://sunsite.mff.cuni.cz/rawhide20090126-gcc44/Werror/
>
> - 1 failure
> g++ now errors on:
> struct C { virtual ~C (); };
> struct B : public C { int i; };
> struct A { const B a; A () { bar (&a); } void bar (const B *); };
> while previously it only errored if C virtual wasn't involved.
> http://sunsite.mff.cuni.cz/rawhide20090126-gcc44/uninit/
>
> - 1 failure
> __builtin_stdarg_start has been removed. #include <stdarg.h>
> should be used, rather than writing stuff by hand, and if really
> necessary
> (why?), then at least it needs to use __builtin_va_start instead.
> http://sunsite.mff.cuni.cz/rawhide20090126-gcc44/stdarg/
>
> - 1 failure
> open with O_CREAT set in the second argument needs to have 3 arguments,
> not
> just 2.
> http://sunsite.mff.cuni.cz/rawhide20090126-gcc44/open2/
>
> - 1 failure
> free called with a pointer to non-heap allocated object.
> E.g.
> char buf[128], *bufp;
> ...
> bufp = buf;
> if (something)
> {
> bufp = malloc (somesize);
> ...
> }
> ...
> if (bufp != buf)
> free (buf); // Should have been bufp.
> http://sunsite.mff.cuni.cz/rawhide20090126-gcc44/nonheapfree/
>
> - 30 failures
> Unsorted stuff that succeeds to build with 4.3 and fails to build
> with 4.4. Only looked briefly at openbabel, in which case
> the bug is that it has locale.h in the include search path, which
> overrides the system <locale.h>.
> http://sunsite.mff.cuni.cz/rawhide20090126-gcc44/unsorted/
>
> - 31 failures
> Various mock related issues, packages failed at root.log stage,
> before starting to build. Some might be related to mock being used
> on RHEL5 instead of a recent fedora.
> http://sunsite.mff.cuni.cz/rawhide20090126-gcc44/deps/
>
> - 167 failures
> packages that failed to build both with gcc 4.3 and 4.4
> http://sunsite.mff.cuni.cz/rawhide20090126-gcc44/fails-even-with-43/
>
> - 117 failures
> unanalyzed packages with failed to build with 4.4, but 4.3 build wasn't
> performed (ran out of time), so either they fall into fails-even-with-43
> category, or into unsorted.
>
> Jakub
>
> --
> fedora-devel-list mailing list
> fedora-devel-list at redhat.com
> https://www.redhat.com/mailman/listinfo/fedora-devel-list
>
--
in your fear, speak only peace
in your fear, seek only love
-d. bowie
More information about the devel
mailing list