Bugzilla – Bug 883
Optimized build fails at perf-io.cc - debug build completes without error
Last modified: 2010-04-19 13:48:32 UTC
At least after latest "hg pull && hg update", the optimized build fails at following: [ 947/1170] cxx: src/contrib/topology-read/topology-reader.cc -> build/optimized/src/contrib/topology-read/topology-reader_1.o [ 948/1170] cxx: src/contrib/topology-read/inet-topology-reader.cc -> build/optimized/src/contrib/topology-read/inet-topology-reader_1.o [ 949/1170] cxx: src/contrib/topology-read/orbis-topology-reader.cc -> build/optimized/src/contrib/topology-read/orbis-topology-reader_1.o [ 950/1170] cxx: src/test/perf/perf-io.cc -> build/optimized/src/test/perf/perf-io_3.o cc1plus: warnings being treated as errors ../src/test/perf/perf-io.cc: In function 'void PerfFile(FILE*, uint32_t, const char*, uint32_t)': ../src/test/perf/perf-io.cc:53: error: ignoring return value of 'size_t fwrite(const void*, size_t, size_t, FILE*)', declared with attribute warn_unused_result Waf: Leaving directory `/home/zarhan/VirtISP/repos/ns-3-allinone/ns-3-dev/build' Build failed -> task failed (err #1): {task: cxx perf-io.cc -> perf-io_3.o} However, debug build builds just fine. I've run distclean between builds due to bug #855.
Mine fails here using optimized build: [ 968/1203] cxx: utils/test-runner.cc -> build/optimized/utils/test-runner_1.o cc1plus: warnings being treated as errors ../utils/test-runner.cc: In function ‘std::string BaseDir()’: ../utils/test-runner.cc:110: error: ignoring return value of ‘char* getcwd(char*, size_t)’, declared with attribute warn_unused_result
I'm unable to reproduce this on Fedora 12 (gcc 4.4.3) or Ubuntu 8.04 (gcc 4.2.4). What systems/compilers are you using? Have you changd anything recently? I'm a bit surprised at this since perf-io.cc hasn't changed in almost three months and has been happily building since then on our build farm. I'm not sure what changed that could suddenly start flagging these instances. A fix is simple enough, but it would be good to know why your compilers suddenly started complaining.
My gcc is 4.3.4, using Gentoo.
(In reply to comment #3) > My gcc is 4.3.4, using Gentoo. Oh, and I have no previous reference really since this is first time I have been (doing an attempt in) running optimized build.
I've got the same error as Josh: [ 956/1151] cxx: utils/test-runner.cc -> build/optimized/utils/test-runner_1.o cc1plus: warnings being treated as errors ../utils/test-runner.cc: In function ‘std::string BaseDir()’: ../utils/test-runner.cc:110: error: ignoring return value of ‘char* getcwd(char*, size_t)’, declared with attribute warn_unused_result I'm on Ubuntu 9.10 with gcc/g++ 4.4.1.
Created attachment 834 [details] patch I know this is a silly hack, but it builds after this. Attaching the patch.
It turns out that this is due to library writers deciding what is best for us lowly users. At least on Ubuntu, -D_FORTIFY_SOURCE was turned on with version 8.10 (Karmic). This enabled library functions with attribute warn_unused_result. In Jaunty, they decided to turn off that attribute for fwrite (presumably due to the outcry). It seems that some of us have libraries with warn_unused_result and some not, some of us have FORTIFY_SOURCE on and some not. Unfortunately, the people assigning attributes have decided that they know best and there is no way to selectively turn this attribute off. You must either globally change FORTIFY_SOURCE or reduce your optimization level. So the error Antii observes (fwrite) goes away on the next library update, but the error Josh apparently won't go away. The better part of valor seems to be to just check the results and abort, even though we really don't care in one case, and the other case "can't happen." Should be fixed with changeset 3ccf4cea2480. Can one of you (Antii or Josh) please confirm and close if satisfied.
fixed with changeset 3ccf4cea2480, thanks Craig!