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


https://wiki.edubuntu.org/GCC4.6
GCC4.6

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 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 

size_t does not name a type


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

Fix: #include 

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