Hi!

On Tue, Feb 08, 2011 at 06:23:57PM -0600, Dennis Gilmore wrote:
> so the mass rebuild is 24 hours in we have completed ~45% of the builds and 
> are at 365 packages failed to build the total number of builds in the mass 
> rebuild is 10404 we are churning along nicely. i expect to complete the first 
> pass sometime in the next 24 hours. so far i think its going pretty well
> 
> some web pages to look at http://ausil.fedorapeople.org/rebuild.html and 
> http://ausil.fedorapeople.org/failed.html these 2 pages are updated ~ every 
> 10 
> minutes. Please drop into #fedora-devel on freenode if you have any questions.

I went through the failed.html list from shortly after you mailed this,
looking for errors related to GCC 4.6 (and sometimes even 4.5).

Here are some common errors.  Please try to fix the issues rather than
adding workaround flags like -fpermissive, -Wno-unused-but-set-variable etc.
Benjamin, do you plan to write http://gcc.gnu.org/gcc-4.6/porting_to.html?
This could serve as partial source for that page.

-Werror=unused-but-set-variable
        void fn (void)
        {
          int foo;
          foo = bar ();
          /* foo is never used.  */
        }
        This is a new warning, which warns about variables that are only
        ever set, but never otherwise used.  Usually such variables useless
        and often even the value assigned to them is computed needlessly,
        sometimes expensively.  In such cases you should just drop the
        vars and initializers.  Sometimes functions called during the
        initialization have important side-effects for the program,
        so you really need to read the source.  So sometimes you want
        to drop the unuse variables, but keep some function calls from
        their initialization in the code.  In some cases (often from
        macro expansion) you just want to keep such unused variables
        around.  You can in that case just cast them to void,
        or add __attribute__((__unused__)) to them.  As this is just
        a warning, it is usually just a nice to fix thing, but for packages
        that are compiled with -Werror it is a must fix.

STL headers not including <cstddef> any longer
        If you see errors like

        'ptrdiff_t' does not name a type
        'size_t' does not name a type
        'NULL' was not declared in this scope
        'size_t' has not been declared
        'offsetof' was not declared in this scope
        there are no arguments to 'offsetof' that depend on a template 
parameter, so a declaration of 'offsetof' must be available

        or warnings like

        perhaps the 'offsetof' macro was used incorrectly

        then most likely you have C++ code that includes some
        STL headers and relied on them bringing in <stddef.h>
        and is using ::ptrdiff_t, ::size_t, offsetof or NULL
        macros.  The STL headers now just declare std::ptrdiff_t
        and std::size_t itself when needed, and no longer bring
        in <stddef.h>, so if you use the global namespace types
        from stddef.h or offsetof/NULL, just include <cstddef>
        explicitly.

uninitialized const
        struct A { int a; A (); };
        struct B : public A { };
        const B b;

        now gets an error:
        error: uninitialized const ‘b’ [-fpermissive]
        note: ‘const struct B’ has no user-provided default constructor

        This is related to http://gcc.gnu.org/PR43890, B above doesn't
        have a user provided default ctor, so either an initializer
        needs to be provided, or the default ctor needs to be added.

reference ‘...’ cannot be declared ‘mutable’
        struct A { mutable int &p; int q; A () : p(q) {} };

        http://gcc.gnu.org/PR33558
        Just remove mutable keyword from references.

taking address of temporary
        struct S { S (); int i; };
        void bar (S *);
        void foo () { bar (&S ()); }

        http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=164704
        http://gcc.gnu.org/ml/gcc-patches/2010-09/msg02144.html

        This used to be just a warning, now it is an error (unless
        -fpermissive).  Please don't add -fpermissive, instead just
        add a variable and pass address of the variable if at all
        possible.

duplicate member
        struct A { int *a; union { struct { int *a; }; }; };

        used to be diagnosed just by C++ FE, now since
        http://gcc.gnu.org/PR4784 it is diagnosed also by C.
        Because of the anonymous unions/structs there is ambiguity
        about what .a actually refers to, one of the fields needs
        to be renamed.

unrecognized option '-combine'
        The -combine option has been removed, it has been very buggy and has
        been superceeded by -flto.  Either drop it, or build with -flto.

-export-dynamic
        Some packages are passing -export-dynamic to gcc/g++ drivers,
        when they should be using -Wl,-export-dynamic or -rdynamic or
        -Wl,-E.  See http://gcc.gnu.org/PR47390, it is unclear yet
        whether gcc 4.6 will handle it for backwards compatibility when
        it has never been documented it would work this way.

--export-dynamic
--no-undefined
        gcc/g++ drivers in 4.4/4.5 didn't accept these options either,
        so I guess this is some libtool issue.  Some packages are also
        using -Wl, --export-dynamic (note the space in between -Wl,
        and the option).  That's wrong, but didn't work previously either.

cannot call constructor directly
        struct A { A (); A (int); int i; };
        A::A (int x) { A::A (); i = x; }

        This used to be accepted in 4.4, but already 4.5 rejects it
        (so 4.5 porting_to.html material).  http://gcc.gnu.org/PR42415

storage size of '...' isn't constant
        void foo (void) { static char buffers[2][(int)(sizeof(int)*3.32)+3]; }

        This used to be accepted in C until 4.4, but isn't any longer,
        since floating point multiplication there makes it no longer
        a valid constant expression.  In this case just multiply by 4
        instead (but even sizeof(...)*3 +3 would work for "%llu" or "HEAD").
        Again, 4.5 porting_to.html material.

names the constructor, not the type
        struct S { S (); };
        void foo () { S::S s; }

        This used to be accepted until 4.4, but isn't any longer,
        ::S should be dropped.  http://gcc.gnu.org/PR9050
        4.5 porting_to.html material.

internal compiler error
        If you see this, please do a build in local mock and file a
        bugreport with the attached /tmp/cc*.out file from the buildroot
        about which the gcc/g++ error talked about.  If none has been
        prepared and it is still reproduceable (shouldn't happen), then
        please preprocess it manually, verify it reproduces with the
        preprocessed file and file it.
        
GCC bugs:
        http://gcc.gnu.org/PR47662 - -fno-operator-names no longer works with 
STL
        http://gcc.gnu.org/PR47665 - ICE in trunc_int_for_mode on SSE2 code
        http://gcc.gnu.org/PR47666 - ICE in dfs_walk_once


        Jakub
-- 
devel mailing list
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel

Reply via email to