Common issues with GCC-4.6 / G++-4.6

GCC-4.6 is again more strict, introduces new warnings, and lets packages fail to build, which did succeed to build with earlier GCC versions.

Warnings

Warning format

Every warning has the option which did produce the warning appended to the warnings, e.g.

FAILURE: warning diffs:  1c1
< #warning undefining SECOND due to option name conflict [-Wcpp]
---
> #warning undefining SECOND due to option name conflict
FAIL: cond.test

New warning -Wunused-but-set-variable

This triggers a lot:

uuid_gen_unix.c:62:20: error: variable 'tv' set but not used [-Werror=unused-but-set-variable]

Either fix it, or if the package is built with -Werror, add as a workaround: -Wno-error=unused-but-set-variable

C++

NULL not defined

../build/include/apt-pkg/weakptr.h:58:26: error: 'NULL' was not declared in this scope

Fix: #include <cstdlib> is missing.

ptrdiff_t does not name a type

/usr/include/sigc++-2.0/sigc++/signal.h:38:11: error: 'ptrdiff_t' does not name a type

Fix: #include <cstddef>

size_t does not name a type

djvulibre:

GSmartPointer.h:497:30: error: 'size_t' does not name a type

Fix: #include <cstddef>

Linker

-z syms unknown

ld.gold doesn't know about -z syms.

d-conf:

  CCLD   libdconfsettings.so
gcc: error: unrecognized option '-avoid-version'

gcc kerneloops.o submit.o dmesg.o configfile.o -Wl,--as-needed `pkg-config --libs glib-2.0 dbus-glib-1` `curl-config --libs` -Wl,"-z relro" -Wl,"-z now"  -o kerneloops
/usr/bin/ld.gold:  relro: unknown -z option
/usr/bin/ld.gold: use the --help option for usage information
collect2: ld returned 1 exit status

GCC4.6 (last edited 2011-01-19 17:03:57 by lopresti)