* attribute warn_unused_result @ 2011-02-03 14:57 Eli Zaretskii 2011-02-03 18:53 ` Stefan Monnier 0 siblings, 1 reply; 41+ messages in thread From: Eli Zaretskii @ 2011-02-03 14:57 UTC (permalink / raw) To: emacs-devel fencepost.gnu.org was upgraded to GCC 4.4.3-4ubuntu5 and glibc 2.11, and that combination causes GCC to emit several warnings like these while compiling Emacs: sysdep.c: In function 'sys_subshell': sysdep.c:550: warning: ignoring return value of 'chdir', declared with attribute warn_unused_result sysdep.c:581: warning: ignoring return value of 'write', declared with attribute warn_unused_result fileio.c: In function 'Fcopy_file': fileio.c:1968: warning: ignoring return value of 'fchown', declared with attribute warn_unused_result Do we care about these warnings? There's significant controversy about them (e.g., the warnings about `write' are when we write an error message to stderr, in which case there's nothing useful one can do with the return value), so I'm not sure we should care. If we do care about this, we should fix the code; if not, we should either add "-Wno-unused-result" to the compilation switches, or use `#pragma GCC diagnostic ignored "-Wunused-result"' in the affected source files. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-03 14:57 attribute warn_unused_result Eli Zaretskii @ 2011-02-03 18:53 ` Stefan Monnier 2011-02-03 19:33 ` Paul Eggert 2011-02-03 21:14 ` Eli Zaretskii 0 siblings, 2 replies; 41+ messages in thread From: Stefan Monnier @ 2011-02-03 18:53 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-devel > Do we care about these warnings? There's significant controversy > about them (e.g., the warnings about `write' are when we write an > error message to stderr, in which case there's nothing useful one can > do with the return value), so I'm not sure we should care. I think the right thing to do is to adjust the code so as to make it clear to the compiler that we thought about the issue and decided that we really do want to ignore the return value. So, for each such case, we should think about it and if we indeed want to ignore the return value, we should put an explicit cast to that effect (which should hopefully be understood by gcc to silence the warning). Stefan ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-03 18:53 ` Stefan Monnier @ 2011-02-03 19:33 ` Paul Eggert 2011-02-03 20:42 ` Chad Brown 2011-02-03 21:16 ` Eli Zaretskii 2011-02-03 21:14 ` Eli Zaretskii 1 sibling, 2 replies; 41+ messages in thread From: Paul Eggert @ 2011-02-03 19:33 UTC (permalink / raw) To: Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel On 02/03/11 10:53, Stefan Monnier wrote: > So, for each such case, we should think about it and if we indeed want > to ignore the return value, we should put an explicit cast to that > effect (which should hopefully be understood by gcc to silence the > warning). Gnulib's ignore-value module is designed for that. I installed the following: it suppresses the first warning in Eli's list that really ought to be suppressed. We can suppress the others as they come up. (I'm omitting auto-regenerated changes in this email.) === modified file 'ChangeLog' --- ChangeLog 2011-01-31 23:54:50 +0000 +++ ChangeLog 2011-02-03 19:26:58 +0000 @@ -1,3 +1,9 @@ +2011-02-03 Paul Eggert <eggert@cs.ucla.edu> + + allow C code to suppress warnings about ignored return values + * Makefile.in (GNULIB_MODULES): Add ignore-value. + * configure, lib/Makefile.in, lib/gnulib.mk, m4/gl-comp.m4: Regenerate. + 2011-01-31 Chong Yidong <cyd@stupidchicken.com> * configure.in: Test existence of xaw3d library, not just the === modified file 'Makefile.in' --- Makefile.in 2011-01-30 23:34:18 +0000 +++ Makefile.in 2011-02-03 19:14:20 +0000 @@ -330,7 +330,7 @@ # Update modules from gnulib, for maintainers, who should have it in # $(gnulib_srcdir) (relative to $(srcdir) and should have build tools # as per $(gnulib_srcdir)/DEPENDENCIES. -GNULIB_MODULES = dtoastr getopt-gnu mktime strftime +GNULIB_MODULES = dtoastr getopt-gnu ignore-value mktime strftime GNULIB_TOOL_FLAGS = \ --import --no-changelog --no-vc-files --makefile-name=gnulib.mk sync-from-gnulib: $(gnulib_srcdir) === modified file 'src/ChangeLog' --- src/ChangeLog 2011-02-03 13:46:03 +0000 +++ src/ChangeLog 2011-02-03 19:25:14 +0000 @@ -1,3 +1,16 @@ +2011-02-03 Paul Eggert <eggert@cs.ucla.edu> + + allow C code to suppress warnings about ignored return values + + We need to go through the code and for each such warning, either + fix the code to pay attention to the returned value, or tell GCC + that we really do want to ignore the returned value. Here is one + example of how to do the latter. + * sysdep.c: Include <ignore-value.h>. + (sys_subshell): Suppress an undesirable warning about not checking + the returned value of 'write', as there's nothing useful one can + do with that returned value. + 2011-02-03 Jan Djärv <jan.h.d@swipnet.se> * xterm.c (x_connection_closed): Remove all calls that calls === modified file 'src/sysdep.c' --- src/sysdep.c 2011-01-25 04:08:28 +0000 +++ src/sysdep.c 2011-02-03 19:16:45 +0000 @@ -31,6 +31,8 @@ #endif /* HAVE_LIMITS_H */ #include <unistd.h> +#include <ignore-value.h> + #include "lisp.h" #include "sysselect.h" #include "blockinput.h" @@ -263,7 +265,7 @@ init_baud_rate (int fd) { int emacs_ospeed; - + if (noninteractive) emacs_ospeed = 0; else @@ -578,7 +580,7 @@ write (1, "Can't execute subshell", 22); #else /* not WINDOWSNT */ execlp (sh, sh, (char *) 0); - write (1, "Can't execute subshell", 22); + ignore_value (write (1, "Can't execute subshell", 22)); _exit (1); #endif /* not WINDOWSNT */ #endif /* not MSDOS */ @@ -3058,4 +3060,3 @@ } #endif /* !defined (WINDOWSNT) */ - ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-03 19:33 ` Paul Eggert @ 2011-02-03 20:42 ` Chad Brown 2011-02-03 21:30 ` Eli Zaretskii ` (3 more replies) 2011-02-03 21:16 ` Eli Zaretskii 1 sibling, 4 replies; 41+ messages in thread From: Chad Brown @ 2011-02-03 20:42 UTC (permalink / raw) To: Emacs-Devel devel; +Cc: Paul Eggert [-- Attachment #1: Type: text/plain, Size: 682 bytes --] On Feb 3, 2011, at 11:33 AM, Paul Eggert wrote: > > Gnulib's ignore-value module is designed for that. I installed > the following: ..and it broke the W32 and nextstep builds (at least) again. I appreciate the ideas behind the gnulib inclusion, but it seems to be causing a lot more broken builds than we saw before. What can we do to fix this? I get the general impression via the 50+ message thread about DOS port compatibility that the gnulib people are mostly unwilling to make efforts to avoid breaking the emacs build. Is this the case, or are we simply seeing bad luck? So far, the features of gnulib have not seemed to be worth the trouble. *Chad [-- Attachment #2: Type: text/html, Size: 1101 bytes --] ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-03 20:42 ` Chad Brown @ 2011-02-03 21:30 ` Eli Zaretskii 2011-02-03 21:58 ` Paul Eggert 2011-02-03 21:40 ` Paul Eggert ` (2 subsequent siblings) 3 siblings, 1 reply; 41+ messages in thread From: Eli Zaretskii @ 2011-02-03 21:30 UTC (permalink / raw) To: Chad Brown; +Cc: eggert, emacs-devel > From: Chad Brown <yandros@MIT.EDU> > Date: Thu, 3 Feb 2011 12:42:35 -0800 > Cc: Paul Eggert <eggert@cs.ucla.edu> > > On Feb 3, 2011, at 11:33 AM, Paul Eggert wrote: > > > > Gnulib's ignore-value module is designed for that. I installed > > the following: > > ..and it broke the W32 and nextstep builds (at least) again. The GNU/Linux build is also broken. Paul, you didn't install the ignore-value.h header itself. OTOH, you did commit unrelated changes to texinfo.tex. Some bzr snafu? ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-03 21:30 ` Eli Zaretskii @ 2011-02-03 21:58 ` Paul Eggert 2011-02-04 0:17 ` Lennart Borgman 2011-02-04 8:18 ` Eli Zaretskii 0 siblings, 2 replies; 41+ messages in thread From: Paul Eggert @ 2011-02-03 21:58 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Chad Brown, emacs-devel On 02/03/11 13:30, Eli Zaretskii wrote: > Paul, you didn't install the ignore-value.h header itself. OTOH, you > did commit unrelated changes to texinfo.tex. Some bzr snafu? Those were two separate commits to my branch, that happened to be merged at the same time into the trunk. The changes weren't completely unrelated, as they both resulted from the same sync from gnulib. In the future I'll try to split these things up better. On 02/03/11 13:47, Lennart Borgman wrote: > So what is wrong here, Paul? Before, I was pretty cautious, and checked out everything separately, doing a complete build and "make dist" and so forth, before committing a change. However, I was told I was being overly conservative and inefficient, that this caution was getting in the way making it convenient to do the Windows port, and that it's better to just do a bzr merge without the final check. So I started doing that today; but I broke things because I forgot to do a "bzr add" before the merge. Perhaps I should go back to being cautious. :-) ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-03 21:58 ` Paul Eggert @ 2011-02-04 0:17 ` Lennart Borgman 2011-02-04 8:18 ` Eli Zaretskii 1 sibling, 0 replies; 41+ messages in thread From: Lennart Borgman @ 2011-02-04 0:17 UTC (permalink / raw) To: Paul Eggert; +Cc: Eli Zaretskii, Chad Brown, emacs-devel On Thu, Feb 3, 2011 at 10:58 PM, Paul Eggert <eggert@cs.ucla.edu> wrote: > > On 02/03/11 13:47, Lennart Borgman wrote: >> So what is wrong here, Paul? > > Before, I was pretty cautious, and checked out everything > separately, doing a complete build and "make dist" and so forth, > before committing a change. > > However, I was told I was being overly conservative > and inefficient, that this caution was getting in the way > making it convenient to do the Windows port, > and that it's better to just do a bzr merge > without the final check. So I started doing that today; > but I broke things because I forgot to do a "bzr add" > before the merge. > > Perhaps I should go back to being cautious. :-) My impression is that you have not been too cautious. Rather I believe you might have underestimated the problem with complexity. This is quite human. Experience help, but it can perhaps be best understood as a logical/mathematical problem. Could you please really consider the alternative of doing this things on a separate branch? It will be no big problem for me checking out such a branch and just compiling it. (And it is easy providing a script for others to use doing the same thing.) ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-03 21:58 ` Paul Eggert 2011-02-04 0:17 ` Lennart Borgman @ 2011-02-04 8:18 ` Eli Zaretskii 2011-02-05 16:30 ` Chong Yidong 1 sibling, 1 reply; 41+ messages in thread From: Eli Zaretskii @ 2011-02-04 8:18 UTC (permalink / raw) To: Paul Eggert; +Cc: yandros, emacs-devel > Date: Thu, 03 Feb 2011 13:58:40 -0800 > From: Paul Eggert <eggert@cs.ucla.edu> > CC: Chad Brown <yandros@MIT.EDU>, emacs-devel@gnu.org > > Before, I was pretty cautious, and checked out everything > separately, doing a complete build and "make dist" and so forth, > before committing a change. > > However, I was told I was being overly conservative > and inefficient, that this caution was getting in the way > making it convenient to do the Windows port, > and that it's better to just do a bzr merge > without the final check. So I started doing that today; > but I broke things because I forgot to do a "bzr add" > before the merge. > > Perhaps I should go back to being cautious. :-) Cautious, yes, but I don't think extreme measures such as "make dist" are required (and how would that tell you that texinfo.tex is being part of the merge commit, anyway?). Here's what I normally do after I finish development (and testing) of some change on a branch, and before I merge onto the trunk: . Run "bzr status". . Review every file marked "modified", "added", "removed", "renamed", and "kind changed", and make sure all of them are meant to be part of the changeset. . Review every file marked "unknown", and make sure none of them should be "bzr add"ed. . Make sure that every directory that has any of the above files has also a ChangeLog that is "modified" and is part of the changeset. . Run "bzr diff -rsubmit:", and review the diffs to make sure the changes I'm about to merge are what I expect. . If several local commits to the branch were done since the last merge, run "bzr log --line" to see their commit messages, and make sure all of them are indeed parts of a single changeset. . Merge, run "configure && make", test, and make sure everything builds and works on the trunk as well. This procedure takes only a few moments, and is very efficient in catching mistakes before they are propagated to the remote repository. In some rare cases, the remote repository gets commits while I build and test the merged code, and I need a "bzr up" before committing. But the changes are usually in unrelated places, so no additional testing is required, and I can proceed with an immediate commit of my own. (To eliminate almost all possible conflicts in ChangeLog files, I use the changelog_merge plugin.) IOW, it isn't about being over-cautious, it's about using efficiently the tools we have at hand. Granted, I wasn't born with the above knowledge; it took some time to learn and get used to these facilities. I post it here in the hope this procedure will be useful to others. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-04 8:18 ` Eli Zaretskii @ 2011-02-05 16:30 ` Chong Yidong 0 siblings, 0 replies; 41+ messages in thread From: Chong Yidong @ 2011-02-05 16:30 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Paul Eggert, yandros, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: > Here's what I normally do after I finish development (and testing) of > some change on a branch, and before I merge onto the trunk: > > . Run "bzr status". > > . Review every file marked "modified", "added", "removed", > "renamed", and "kind changed", and make sure all of them are meant > to be part of the changeset. > ... > > . Run "bzr diff -rsubmit:", and review the diffs to make sure the > changes I'm about to merge are what I expect. > ... Or, use VC-dir together with `C-x v D' (vc-root-diff). ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-03 20:42 ` Chad Brown 2011-02-03 21:30 ` Eli Zaretskii @ 2011-02-03 21:40 ` Paul Eggert 2011-02-04 8:41 ` Eli Zaretskii 2011-02-04 21:05 ` Stefan Monnier 2011-02-03 21:47 ` Lennart Borgman 2011-02-03 22:08 ` Andy Moreton 3 siblings, 2 replies; 41+ messages in thread From: Paul Eggert @ 2011-02-03 21:40 UTC (permalink / raw) To: Chad Brown; +Cc: Eli Zaretskii, Emacs-Devel devel On 02/03/11 12:42, Chad Brown wrote: > ..and it broke the W32 and nextstep builds (at least) again. Sorry, I forgot to add the new file lib/ignore-value.h. That should be fixed now. On 02/03/11 13:16, Eli Zaretskii wrote: > And is butt-ugly, IMO. I don't like ignore-value either. I'd rather that we simply tell GCC never to generate those bogus warnings anywhere. However, as I understand it, that's not so easily done. By the way, I forgot to say, I audited Emacs last month for every instance of these warnings under GNU/Linux, and fixed all the code where the warnings were legitimate. This was bzr commit 102952, dated January 23. All the remaining warnings (on GNU/Linux, anyway) were therefore bogus, in my opinion, though it wouldn't hurt to have other people check that. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-03 21:40 ` Paul Eggert @ 2011-02-04 8:41 ` Eli Zaretskii 2011-02-04 8:51 ` Paul Eggert 2011-02-04 21:05 ` Stefan Monnier 1 sibling, 1 reply; 41+ messages in thread From: Eli Zaretskii @ 2011-02-04 8:41 UTC (permalink / raw) To: Paul Eggert; +Cc: yandros, emacs-devel > Date: Thu, 03 Feb 2011 13:40:21 -0800 > From: Paul Eggert <eggert@cs.ucla.edu> > CC: Emacs-Devel devel <emacs-devel@gnu.org>, Eli Zaretskii <eliz@gnu.org> > > On 02/03/11 12:42, Chad Brown wrote: > > > ..and it broke the W32 and nextstep builds (at least) again. > > Sorry, I forgot to add the new file lib/ignore-value.h. > That should be fixed now. > > On 02/03/11 13:16, Eli Zaretskii wrote: > > > And is butt-ugly, IMO. > > I don't like ignore-value either. I'd rather that we simply > tell GCC never to generate those bogus warnings anywhere. > However, as I understand it, that's not so easily done. The -Wno-unused-result compiler options looks easy to me, and is IMO cleaner than using ignore-value.h. Heck, even the corresponding pragma in the affected source files looks cleaner. The only advantage of ignore-value.h is that it will work with compilers other than GCC (if some of them also insist on this warning). ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-04 8:41 ` Eli Zaretskii @ 2011-02-04 8:51 ` Paul Eggert 0 siblings, 0 replies; 41+ messages in thread From: Paul Eggert @ 2011-02-04 8:51 UTC (permalink / raw) To: Eli Zaretskii; +Cc: yandros, emacs-devel On 02/04/2011 12:41 AM, Eli Zaretskii wrote: > The -Wno-unused-result compiler options looks easy to me, and is IMO > cleaner than using ignore-value.h. Heck, even the corresponding > pragma in the affected source files looks cleaner. Unfortunately those approaches shut off all instances of the warnings, even the useful ones. I wouldn't have found the eight bugs fixed in BZR 102952 if I hadn't had those warnings. Like I said, though, I don't much like ignore_value, and either of the above approaches would also be fine with me. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-03 21:40 ` Paul Eggert 2011-02-04 8:41 ` Eli Zaretskii @ 2011-02-04 21:05 ` Stefan Monnier 2011-02-05 8:50 ` Eli Zaretskii 1 sibling, 1 reply; 41+ messages in thread From: Stefan Monnier @ 2011-02-04 21:05 UTC (permalink / raw) To: Paul Eggert; +Cc: Eli Zaretskii, Chad Brown, Emacs-Devel devel > I don't like ignore-value either. Shouldn't a cast to void be sufficient to tell gcc to not report a particular case? If so, there's no need to drag in gnulib's ignore_value. Stefan ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-04 21:05 ` Stefan Monnier @ 2011-02-05 8:50 ` Eli Zaretskii 0 siblings, 0 replies; 41+ messages in thread From: Eli Zaretskii @ 2011-02-05 8:50 UTC (permalink / raw) To: Stefan Monnier; +Cc: eggert, yandros, emacs-devel > From: Stefan Monnier <monnier@iro.umontreal.ca> > Cc: Chad Brown <yandros@MIT.EDU>, Eli Zaretskii <eliz@gnu.org>, Emacs-Devel devel <emacs-devel@gnu.org> > Date: Fri, 04 Feb 2011 16:05:18 -0500 > > > I don't like ignore-value either. > > Shouldn't a cast to void be sufficient to tell gcc to not report > a particular case? No, it isn't. The warning remains. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-03 20:42 ` Chad Brown 2011-02-03 21:30 ` Eli Zaretskii 2011-02-03 21:40 ` Paul Eggert @ 2011-02-03 21:47 ` Lennart Borgman 2011-02-04 21:08 ` Stefan Monnier 2011-02-03 22:08 ` Andy Moreton 3 siblings, 1 reply; 41+ messages in thread From: Lennart Borgman @ 2011-02-03 21:47 UTC (permalink / raw) To: Chad Brown; +Cc: Paul Eggert, Emacs-Devel devel On Thu, Feb 3, 2011 at 9:42 PM, Chad Brown <yandros@mit.edu> wrote: > > On Feb 3, 2011, at 11:33 AM, Paul Eggert wrote: > > Gnulib's ignore-value module is designed for that. I installed > the following: > > ..and it broke the W32 and nextstep builds (at least) again. So what is wrong here, Paul? We have suggested that you make a separate branch for this. Why don't you do that? ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-03 21:47 ` Lennart Borgman @ 2011-02-04 21:08 ` Stefan Monnier 2011-02-04 21:15 ` Lennart Borgman 2011-02-05 8:59 ` Eli Zaretskii 0 siblings, 2 replies; 41+ messages in thread From: Stefan Monnier @ 2011-02-04 21:08 UTC (permalink / raw) To: Lennart Borgman; +Cc: Chad Brown, Emacs-Devel devel, Paul Eggert >> Gnulib's ignore-value module is designed for that. I installed >> the following: >> ..and it broke the W32 and nextstep builds (at least) again. > So what is wrong here, Paul? We have suggested that you make a > separate branch for this. Why don't you do that? AFAIK this last change introduced a bug, just like any other commit can (and sometimes does) introduce a bug because some simple omission that's easily fixed. I.e. it's very different from the other cases where he knew before that his change was going to break the w32 build. IIUC people are reacting too strongly to this last problem because it just happens to follow the other ones, but really it's a completely different case. I myself break the build on a regular basis as well, as you all know too well. BTW, I'd still like to see someone setup a build farm that can be used to keep track of "the last revision that bootstraps", so people who don't want to bump into such problems can follow that branch instead of trunk. Stefan ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-04 21:08 ` Stefan Monnier @ 2011-02-04 21:15 ` Lennart Borgman 2011-02-05 9:03 ` Eli Zaretskii 2011-02-05 8:59 ` Eli Zaretskii 1 sibling, 1 reply; 41+ messages in thread From: Lennart Borgman @ 2011-02-04 21:15 UTC (permalink / raw) To: Stefan Monnier; +Cc: Chad Brown, Emacs-Devel devel, Paul Eggert On Fri, Feb 4, 2011 at 10:08 PM, Stefan Monnier <monnier@iro.umontreal.ca> wrote: >>> Gnulib's ignore-value module is designed for that. I installed >>> the following: >>> ..and it broke the W32 and nextstep builds (at least) again. >> So what is wrong here, Paul? We have suggested that you make a >> separate branch for this. Why don't you do that? > > AFAIK this last change introduced a bug, just like any other commit can > (and sometimes does) introduce a bug because some simple omission that's > easily fixed. I.e. it's very different from the other cases where he > knew before that his change was going to break the w32 build. > IIUC people are reacting too strongly to this last problem because it > just happens to follow the other ones, but really it's a completely > different case. I myself break the build on a regular basis as well, as > you all know too well. Yes, I realized that. A bit too late. It would have been much easier to realize that with a little bit more feedback. Mind reading is difficult face to face and even a little bit more difficult over the net. > BTW, I'd still like to see someone setup a build farm that can be used > to keep track of "the last revision that bootstraps", so people who > don't want to bump into such problems can follow that branch instead > of trunk. For me that would indeed be good especially when I need to test some patch (which happens too often, actually). ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-04 21:15 ` Lennart Borgman @ 2011-02-05 9:03 ` Eli Zaretskii 0 siblings, 0 replies; 41+ messages in thread From: Eli Zaretskii @ 2011-02-05 9:03 UTC (permalink / raw) To: Lennart Borgman; +Cc: eggert, yandros, monnier, emacs-devel > From: Lennart Borgman <lennart.borgman@gmail.com> > Date: Fri, 4 Feb 2011 22:15:36 +0100 > Cc: Chad Brown <yandros@mit.edu>, Emacs-Devel devel <emacs-devel@gnu.org>, > Paul Eggert <eggert@cs.ucla.edu> > > It would have been much easier to realize that with a little bit more > feedback. Mind reading is difficult face to face and even a little bit > more difficult over the net. I see no need for mind reading. If you looked at the report displayed by "bzr up" or "bzr log", you'd have realized that the file about which the compiler complained was not part of the commit, which should have told you what was the nature of the problem. IOW, before you make a decision, look at the facts at hand. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-04 21:08 ` Stefan Monnier 2011-02-04 21:15 ` Lennart Borgman @ 2011-02-05 8:59 ` Eli Zaretskii 1 sibling, 0 replies; 41+ messages in thread From: Eli Zaretskii @ 2011-02-05 8:59 UTC (permalink / raw) To: Stefan Monnier; +Cc: eggert, yandros, lennart.borgman, emacs-devel > From: Stefan Monnier <monnier@iro.umontreal.ca> > Date: Fri, 04 Feb 2011 16:08:55 -0500 > Cc: Chad Brown <yandros@mit.edu>, Emacs-Devel devel <emacs-devel@gnu.org>, > Paul Eggert <eggert@cs.ucla.edu> > > BTW, I'd still like to see someone setup a build farm that can be used > to keep track of "the last revision that bootstraps", so people who > don't want to bump into such problems can follow that branch instead > of trunk. +1 Joakim said he is going to set that up, but that it will take him some time. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-03 20:42 ` Chad Brown ` (2 preceding siblings ...) 2011-02-03 21:47 ` Lennart Borgman @ 2011-02-03 22:08 ` Andy Moreton 2011-02-03 23:00 ` Paul Eggert 3 siblings, 1 reply; 41+ messages in thread From: Andy Moreton @ 2011-02-03 22:08 UTC (permalink / raw) To: emacs-devel On Thu 03 Feb 2011, Chad Brown wrote: > On Feb 3, 2011, at 11:33 AM, Paul Eggert wrote: >> >> Gnulib's ignore-value module is designed for that. I installed the >> following: > > ..and it broke the W32 and nextstep builds (at least) again. > > I appreciate the ideas behind the gnulib inclusion, but it seems to be > causing a lot more broken builds than we saw before. What can we do > to fix this? 1) Prevail upon the developers in question to work in a more consensual style and publicise changes that will break non-POSIX builds *before* installing them. 2) Work on fixing the w32 build system so it is less hand-crafted and makes more use of the POSIX build machinery. Given the number of different environments and toolchains used to build for win32 targets, this is tricky. > I get the general impression via the 50+ message thread about DOS port > compatibility that the gnulib people are mostly unwilling to make > efforts to avoid breaking the emacs build. Is this the case, or are > we simply seeing bad luck? > > So far, the features of gnulib have not seemed to be worth the > trouble. As long as it does not restrict portability of emacs to platforms and toolchains that gnulib want to support then there is a little temporary pain and some longer term benefits. If the two projects have divergent views on which platforms and toolchains to support then that would indeed be a problem. AndyM ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-03 22:08 ` Andy Moreton @ 2011-02-03 23:00 ` Paul Eggert 0 siblings, 0 replies; 41+ messages in thread From: Paul Eggert @ 2011-02-03 23:00 UTC (permalink / raw) To: Andy Moreton; +Cc: emacs-devel On 02/03/11 14:08, Andy Moreton wrote: > If the two projects have divergent views on which platforms and > toolchains to support then that would indeed be a problem. So far, the only point of divergence that we've identified is over 8+3 file name support. The gnulib folks have made it reasonably clear that they don't want to be restricted to an 8+3 filename namespace for their source file names. Right now this is not a problem with gnulib and Emacs, since the file names imported from gnulib happen not to clash. It is a problem with some other files in the Emacs trunk, though. I've proposed to address this by modifying the MS-DOS build procedure rather than by renaming the files; see <http://lists.gnu.org/archive/html/emacs-devel/2011-01/msg01182.html>. The goal is to allow non-MS-DOS developers to stop worrying about the 8+3 problem, for names of files imported from gnulib and for other similar file names. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-03 19:33 ` Paul Eggert 2011-02-03 20:42 ` Chad Brown @ 2011-02-03 21:16 ` Eli Zaretskii 1 sibling, 0 replies; 41+ messages in thread From: Eli Zaretskii @ 2011-02-03 21:16 UTC (permalink / raw) To: Paul Eggert; +Cc: monnier, emacs-devel > Date: Thu, 03 Feb 2011 11:33:03 -0800 > From: Paul Eggert <eggert@cs.ucla.edu> > CC: Eli Zaretskii <eliz@gnu.org>, emacs-devel@gnu.org > > On 02/03/11 10:53, Stefan Monnier wrote: > > > So, for each such case, we should think about it and if we indeed want > > to ignore the return value, we should put an explicit cast to that > > effect (which should hopefully be understood by gcc to silence the > > warning). > > Gnulib's ignore-value module is designed for that. And is butt-ugly, IMO. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-03 18:53 ` Stefan Monnier 2011-02-03 19:33 ` Paul Eggert @ 2011-02-03 21:14 ` Eli Zaretskii 2011-02-04 0:57 ` Paul Eggert 1 sibling, 1 reply; 41+ messages in thread From: Eli Zaretskii @ 2011-02-03 21:14 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel > From: Stefan Monnier <monnier@iro.umontreal.ca> > Cc: emacs-devel@gnu.org > Date: Thu, 03 Feb 2011 13:53:25 -0500 > > > Do we care about these warnings? There's significant controversy > > about them (e.g., the warnings about `write' are when we write an > > error message to stderr, in which case there's nothing useful one can > > do with the return value), so I'm not sure we should care. > > I think the right thing to do is to adjust the code so as to make it > clear to the compiler that we thought about the issue and decided that > we really do want to ignore the return value. You can't do that, not with this warning. > So, for each such case, we should think about it and if we indeed want > to ignore the return value, we should put an explicit cast to that > effect (which should hopefully be understood by gcc to silence the > warning). It isn't. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-03 21:14 ` Eli Zaretskii @ 2011-02-04 0:57 ` Paul Eggert 2011-02-04 8:29 ` Eli Zaretskii 0 siblings, 1 reply; 41+ messages in thread From: Paul Eggert @ 2011-02-04 0:57 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Stefan Monnier, emacs-devel On 02/03/11 13:14, Eli Zaretskii wrote: >> From: Stefan Monnier <monnier@iro.umontreal.ca> >> I think the right thing to do is to adjust the code so as to make it >> clear to the compiler that we thought about the issue and decided that >> we really do want to ignore the return value. > > You can't do that, not with this warning. Actually, you can do it. In the current trunk, the warning is ignored for one particular case, documented by wrapping the call in question by ignore_value (CALL). This is in src/sysdep.c, line 583. We can wrap the other calls as needed. I did just one call for now, to illustrate the technique. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-04 0:57 ` Paul Eggert @ 2011-02-04 8:29 ` Eli Zaretskii 2011-02-04 15:50 ` Tom Tromey 2011-02-04 21:14 ` Stefan Monnier 0 siblings, 2 replies; 41+ messages in thread From: Eli Zaretskii @ 2011-02-04 8:29 UTC (permalink / raw) To: Paul Eggert; +Cc: monnier, emacs-devel > Date: Thu, 03 Feb 2011 16:57:14 -0800 > From: Paul Eggert <eggert@cs.ucla.edu> > CC: Stefan Monnier <monnier@iro.umontreal.ca>, emacs-devel@gnu.org > > On 02/03/11 13:14, Eli Zaretskii wrote: > >> From: Stefan Monnier <monnier@iro.umontreal.ca> > > >> I think the right thing to do is to adjust the code so as to make it > >> clear to the compiler that we thought about the issue and decided that > >> we really do want to ignore the return value. > > > > You can't do that, not with this warning. > > Actually, you can do it. In the current trunk, the warning is > ignored for one particular case, documented by wrapping the > call in question by ignore_value (CALL). This is in > src/sysdep.c, line 583. I know, but that's not what I meant, and I imagine that's not what Stefan meant, either. It is a truism that you can avoid the warning by adding a call to another function that is not declared with the warn_unused_result attribute. What I meant was that it seems to be impossible to tell the compiler not to emit this warning by the "usual" C technique of using a cast. Btw, isn't it ironic that gnulib, a GNU project, and all other GNU projects that use gnulib, need to jump through the hoops to work around misfeatures in glibc, one of the most important and core GNU projects? ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-04 8:29 ` Eli Zaretskii @ 2011-02-04 15:50 ` Tom Tromey 2011-02-04 16:38 ` Eli Zaretskii 2011-02-04 21:14 ` Stefan Monnier 1 sibling, 1 reply; 41+ messages in thread From: Tom Tromey @ 2011-02-04 15:50 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Paul Eggert, monnier, emacs-devel >>>>> "Eli" == Eli Zaretskii <eliz@gnu.org> writes: Eli> Btw, isn't it ironic that gnulib, a GNU project, and all other GNU Eli> projects that use gnulib, need to jump through the hoops to work Eli> around misfeatures in glibc, one of the most important and core GNU Eli> projects? I think this problem is caused by a change in Ubuntu. IIRC, it adds -D_FORTIFY_SOURCE=2 by default. With ordinary glibc and gcc, you must ask for this setting, it is not the default. See https://wiki.ubuntu.com/CompilerFlags. Tom ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-04 15:50 ` Tom Tromey @ 2011-02-04 16:38 ` Eli Zaretskii 2011-02-04 17:12 ` Tom Tromey 2011-02-05 0:11 ` Paul Eggert 0 siblings, 2 replies; 41+ messages in thread From: Eli Zaretskii @ 2011-02-04 16:38 UTC (permalink / raw) To: Tom Tromey; +Cc: eggert, monnier, emacs-devel > From: Tom Tromey <tromey@redhat.com> > Cc: Paul Eggert <eggert@cs.ucla.edu>, monnier@iro.umontreal.ca, > emacs-devel@gnu.org > Date: Fri, 04 Feb 2011 08:50:45 -0700 > > I think this problem is caused by a change in Ubuntu. IIRC, it adds > -D_FORTIFY_SOURCE=2 by default. Yep, looks like that, thanks. I see this in "gcc -dumpspecs": %{!D_FORTIFY_SOURCE:%{!D_FORTIFY_SOURCE=*:%{!U_FORTIFY_SOURCE:-D_FORTIFY_SOURCE=2}}} > With ordinary glibc and gcc, you must ask for this setting, it is > not the default. See https://wiki.ubuntu.com/CompilerFlags. Except that this page says -D_FORTIFY_SOURCE=2 is in effect with -O2 or higher, but I also see the warning with -O1. Only -O0 disables it. Anyway, am I the only one who uses this version of Ubuntu? If so, sorry for the noise, and please disregard. I will find some way to get rid of it. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-04 16:38 ` Eli Zaretskii @ 2011-02-04 17:12 ` Tom Tromey 2011-02-05 0:11 ` Paul Eggert 1 sibling, 0 replies; 41+ messages in thread From: Tom Tromey @ 2011-02-04 17:12 UTC (permalink / raw) To: Eli Zaretskii; +Cc: eggert, monnier, emacs-devel Eli> Except that this page says -D_FORTIFY_SOURCE=2 is in effect with -O2 Eli> or higher, but I also see the warning with -O1. Only -O0 disables it. I think that page is probably wrong. In my libc's features.h, I see: #if defined _FORTIFY_SOURCE && _FORTIFY_SOURCE > 0 \ && defined __OPTIMIZE__ && __OPTIMIZE__ > 0 [...] __OPTIMIZE__ is set to 1 if any optimization level > 0 is used. I don't think headers can distinguish the levels. It could probably be done in GCC specs, but I didn't look to see if the Ubuntu change attempts this. Tom ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-04 16:38 ` Eli Zaretskii 2011-02-04 17:12 ` Tom Tromey @ 2011-02-05 0:11 ` Paul Eggert 2011-02-05 9:18 ` Eli Zaretskii [not found] ` <yyxvd0yxwv1.fsf@fencepost.gnu.org> 1 sibling, 2 replies; 41+ messages in thread From: Paul Eggert @ 2011-02-05 0:11 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-devel On 02/04/11 08:38, Eli Zaretskii wrote: > Anyway, am I the only one who uses this version of Ubuntu? No, I have observed the problem when I built Emacs on Ubuntu, and it is a real annoyance. This was on Ubuntu 10.10, the current stable version. By the way, I just now looked at one of the remaining instances of this warning, a call to chdir whose return value is ignored, and I now think it's a bug. The bug is hard to trigger, but I'm pretty sure I can exploit it to (say) unexpectly remove files in one's home directory. Is there ever a good reason to ignore the return value from chdir? If not, we should do a sweep of the code and fix all of these. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-05 0:11 ` Paul Eggert @ 2011-02-05 9:18 ` Eli Zaretskii [not found] ` <yyxvd0yxwv1.fsf@fencepost.gnu.org> 1 sibling, 0 replies; 41+ messages in thread From: Eli Zaretskii @ 2011-02-05 9:18 UTC (permalink / raw) To: Paul Eggert; +Cc: emacs-devel > Date: Fri, 04 Feb 2011 16:11:36 -0800 > From: Paul Eggert <eggert@cs.ucla.edu> > CC: emacs-devel@gnu.org > > Is there ever a good reason to ignore the return value from > chdir? IMO, only if the chdir is part of handling a fatal error. ^ permalink raw reply [flat|nested] 41+ messages in thread
[parent not found: <yyxvd0yxwv1.fsf@fencepost.gnu.org>]
* Re: attribute warn_unused_result [not found] ` <yyxvd0yxwv1.fsf@fencepost.gnu.org> @ 2011-02-06 1:34 ` Paul Eggert 2011-02-06 4:07 ` Eli Zaretskii 0 siblings, 1 reply; 41+ messages in thread From: Paul Eggert @ 2011-02-06 1:34 UTC (permalink / raw) To: Chong Yidong; +Cc: emacs-devel On 02/05/2011 08:35 AM, Chong Yidong wrote: > If you fix this, please fix it in the emacs-23 branch (assuming the bug > exists there), so that it will be included in the 23.3 release. I could do that, but three things. First, I've never installed into the emacs-23 branch and am a bit worried about messing with that if it is about to be released. Second, I just now installed a fix for mainline platforms into the trunk (see below) but don't know how to fix similar problems on Windows, DOS, or NextStep. Third, the problem doesn't occur in normal operation on mainline platforms (on RHEL 5.5 I could reproduce it with temacs, but not with a normal dumped emacs), so it may not be urgent to put it into emacs-23. don't ignore chdir failure * sysdep.c (sys_subshell) [!defined DOS_NT]: Diagnose chdir failure and exit. (sys_subshell) [defined DOS_NT]: Mark with a FIXME the two remaining unchecked chdir calls in this function; some DOS/NT expert needs to fix them. * emacs.c (main): Mark with a FIXME the unchecked chdir calls in this function; some NextStep expert needs to fix them. === modified file 'src/emacs.c' --- src/emacs.c 2011-01-31 08:12:52 +0000 +++ src/emacs.c 2011-02-06 01:23:24 +0000 @@ -1296,6 +1296,8 @@ #ifdef NS_IMPL_COCOA if (skip_args < argc) { + /* FIXME: Do the right thing if getenv returns NULL, or if + chdir fails. */ if (!strncmp(argv[skip_args], "-psn", 4)) { skip_args += 1; === modified file 'src/sysdep.c' --- src/sysdep.c 2011-02-03 19:29:35 +0000 +++ src/sysdep.c 2011-02-06 01:23:24 +0000 @@ -548,8 +548,13 @@ sh = "sh"; /* Use our buffer's default directory for the subshell. */ - if (str) - chdir ((char *) str); + if (str && chdir ((char *) str) != 0) + { +#ifndef DOS_NT + ignore_value (write (1, "Can't chdir\n", 12)); + _exit (1); +#endif + } close_process_descs (); /* Close Emacs's pipes/ptys */ @@ -567,7 +572,7 @@ setenv ("PWD", str, 1); } st = system (sh); - chdir (oldwd); + chdir (oldwd); /* FIXME: Do the right thing on chdir failure. */ if (epwd) putenv (old_pwd); /* restore previous value */ } @@ -575,7 +580,7 @@ #ifdef WINDOWSNT /* Waits for process completion */ pid = _spawnlp (_P_WAIT, sh, sh, NULL); - chdir (oldwd); + chdir (oldwd); /* FIXME: Do the right thing on chdir failure. */ if (pid == -1) write (1, "Can't execute subshell", 22); #else /* not WINDOWSNT */ ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-06 1:34 ` Paul Eggert @ 2011-02-06 4:07 ` Eli Zaretskii 2011-02-06 7:04 ` Paul Eggert 0 siblings, 1 reply; 41+ messages in thread From: Eli Zaretskii @ 2011-02-06 4:07 UTC (permalink / raw) To: Paul Eggert; +Cc: cyd, emacs-devel > Date: Sat, 05 Feb 2011 17:34:49 -0800 > From: Paul Eggert <eggert@cs.ucla.edu> > Cc: emacs-devel@gnu.org > > On 02/05/2011 08:35 AM, Chong Yidong wrote: > > If you fix this, please fix it in the emacs-23 branch (assuming the bug > > exists there), so that it will be included in the 23.3 release. > > I could do that, but three things. First, I've never installed > into the emacs-23 branch and am a bit worried about messing with that > if it is about to be released. With bzr, each branch is in its own directory, preferably under the shared repository (i.e., under the same parent as the trunk directory and your feature branch). The same command "bzr branch" that you issued to clone the trunk will work for the branch, except that the URL is different: bzr+ssh://eliz@bzr.savannah.gnu.org/emacs/emacs-23/ > Second, I just now installed a fix for mainline platforms into the > trunk (see below) but don't know how to fix similar problems on > Windows, DOS, or NextStep. MS-DOS uses GCC, so it will work with lib/ignore-value.h. MS-Windows already works with lib/ignore-value.h (your change in sysdep.c already used it). So there's no need to use #ifndef DOS_NT in this case. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-06 4:07 ` Eli Zaretskii @ 2011-02-06 7:04 ` Paul Eggert 2011-02-06 10:21 ` Eli Zaretskii 0 siblings, 1 reply; 41+ messages in thread From: Paul Eggert @ 2011-02-06 7:04 UTC (permalink / raw) To: Eli Zaretskii; +Cc: cyd, emacs-devel On 02/05/2011 08:07 PM, Eli Zaretskii wrote: > MS-Windows already works with lib/ignore-value.h (your change in > sysdep.c already used it). So there's no need to use #ifndef DOS_NT > in this case. I don't see how the following patch could possibly work on Windows. Although it would compile, surely it would break things badly if the call to chdir () fails on Windows. Have you tested it for that case? === modified file 'src/sysdep.c' --- src/sysdep.c 2011-02-06 01:25:41 +0000 +++ src/sysdep.c 2011-02-06 06:57:13 +0000 @@ -550,10 +550,8 @@ sys_subshell (void) /* Use our buffer's default directory for the subshell. */ if (str && chdir ((char *) str) != 0) { -#ifndef DOS_NT ignore_value (write (1, "Can't chdir\n", 12)); _exit (1); -#endif } close_process_descs (); /* Close Emacs's pipes/ptys */ ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-06 7:04 ` Paul Eggert @ 2011-02-06 10:21 ` Eli Zaretskii 2011-02-06 18:58 ` Paul Eggert 0 siblings, 1 reply; 41+ messages in thread From: Eli Zaretskii @ 2011-02-06 10:21 UTC (permalink / raw) To: Paul Eggert; +Cc: cyd, emacs-devel > Date: Sat, 05 Feb 2011 23:04:04 -0800 > From: Paul Eggert <eggert@cs.ucla.edu> > CC: cyd@stupidchicken.com, emacs-devel@gnu.org > > On 02/05/2011 08:07 PM, Eli Zaretskii wrote: > > MS-Windows already works with lib/ignore-value.h (your change in > > sysdep.c already used it). So there's no need to use #ifndef DOS_NT > > in this case. > > I don't see how the following patch could possibly work on Windows. I don't see why not. > Although it would compile, surely it would break things badly if > the call to chdir () fails on Windows. I'm not sure what you mean. The only thing I could imagine is that perhaps the call to `_exit' should be avoided on DOS_NT. If that's not what you meant, could you please tell what problem(s) did you have in mind? Perhaps I'm missing something important here. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-06 10:21 ` Eli Zaretskii @ 2011-02-06 18:58 ` Paul Eggert 2011-02-06 19:27 ` Eli Zaretskii 0 siblings, 1 reply; 41+ messages in thread From: Paul Eggert @ 2011-02-06 18:58 UTC (permalink / raw) To: Eli Zaretskii; +Cc: cyd, emacs-devel On 02/06/2011 02:21 AM, Eli Zaretskii wrote: > perhaps the call to `_exit' should be avoided on DOS_NT. Yes, because it'll make the Emacs top level exit on Windows. The patch I installed does not change the behavior on Windows, so the Windows-related bugs in the resulting code are bugs that were already present. They can be fixed by someone with expertise in Windows and desire to fix it (I expect that's you :-) when time permits. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-06 18:58 ` Paul Eggert @ 2011-02-06 19:27 ` Eli Zaretskii 2011-02-06 20:11 ` Paul Eggert 0 siblings, 1 reply; 41+ messages in thread From: Eli Zaretskii @ 2011-02-06 19:27 UTC (permalink / raw) To: Paul Eggert; +Cc: cyd, emacs-devel > Date: Sun, 06 Feb 2011 10:58:59 -0800 > From: Paul Eggert <eggert@cs.ucla.edu> > CC: cyd@stupidchicken.com, emacs-devel@gnu.org > > The patch I installed does not change the behavior on > Windows, so the Windows-related bugs in the resulting > code are bugs that were already present. They can be > fixed by someone with expertise in Windows and desire to > fix it (I expect that's you :-) when time permits. I actually question the resulting behavior on Posix platforms: AFAIU, Emacs will (almost silently) do nothing. Is that a good UI? Should we perhaps signal an error instead? ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-06 19:27 ` Eli Zaretskii @ 2011-02-06 20:11 ` Paul Eggert 2011-02-06 21:26 ` Eli Zaretskii 0 siblings, 1 reply; 41+ messages in thread From: Paul Eggert @ 2011-02-06 20:11 UTC (permalink / raw) To: Eli Zaretskii; +Cc: cyd, emacs-devel On 02/06/2011 11:27 AM, Eli Zaretskii wrote: > I actually question the resulting behavior on Posix platforms: AFAIU, > Emacs will (almost silently) do nothing. Is that a good UI? Should > we perhaps signal an error instead? Emacs can't merely signal an error there, since it's in the child. My recent change causes Emacs to report chdir failure the same way it reports execlp failure. If the former behavior isn't right, the latter isn't either; and I expect that the latter behavior has been there for decades. For modern mainstream platforms the issue doesn't come up, as this code is exercised only on weird POSIXish platforms that can't suspend Emacs. I last used a platform like that in the 1980s, and I expect they're very low priority now. For Windows things may well be different, but that difference can be put into #ifdef DOS_NT code. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-06 20:11 ` Paul Eggert @ 2011-02-06 21:26 ` Eli Zaretskii 0 siblings, 0 replies; 41+ messages in thread From: Eli Zaretskii @ 2011-02-06 21:26 UTC (permalink / raw) To: Paul Eggert; +Cc: cyd, emacs-devel > Date: Sun, 06 Feb 2011 12:11:35 -0800 > From: Paul Eggert <eggert@cs.ucla.edu> > CC: cyd@stupidchicken.com, emacs-devel@gnu.org > > On 02/06/2011 11:27 AM, Eli Zaretskii wrote: > > I actually question the resulting behavior on Posix platforms: AFAIU, > > Emacs will (almost silently) do nothing. Is that a good UI? Should > > we perhaps signal an error instead? > > Emacs can't merely signal an error there, since it's in the child. It can if we decide that it's TRT. > My recent change causes Emacs to report chdir failure the same way > it reports execlp failure. If the former behavior isn't right, > the latter isn't either; and I expect that the latter behavior has > been there for decades. I guess the probability of chdir to fail is not very high. > For modern mainstream platforms the issue doesn't come up, as > this code is exercised only on weird POSIXish platforms that > can't suspend Emacs. I last used a platform like that in > the 1980s, and I expect they're very low priority now. If there are no such platforms, perhaps all that function should become DOS_NT only. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-04 8:29 ` Eli Zaretskii 2011-02-04 15:50 ` Tom Tromey @ 2011-02-04 21:14 ` Stefan Monnier 2011-02-05 8:57 ` Eli Zaretskii 1 sibling, 1 reply; 41+ messages in thread From: Stefan Monnier @ 2011-02-04 21:14 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Paul Eggert, emacs-devel > impossible to tell the compiler not to emit this warning by the > "usual" C technique of using a cast. Looks like a bug in gcc. I'd be surprised if they accept this qualification, but really what's the point of emitting a warning when the user explicitly put a cast to void? > Btw, isn't it ironic that gnulib, a GNU project, and all other GNU > projects that use gnulib, need to jump through the hoops to work > around misfeatures in glibc, one of the most important and core GNU > projects? I don't see how/why you'd consider it a misfeature of glibc. The warning comes from gcc, AFAICT, and is generally a good one, it's just that gcc should understand the standard way in C to say that you want to discard a value. Stefan ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-04 21:14 ` Stefan Monnier @ 2011-02-05 8:57 ` Eli Zaretskii 2011-02-05 16:01 ` Stefan Monnier 0 siblings, 1 reply; 41+ messages in thread From: Eli Zaretskii @ 2011-02-05 8:57 UTC (permalink / raw) To: Stefan Monnier; +Cc: eggert, emacs-devel > From: Stefan Monnier <monnier@iro.umontreal.ca> > Cc: Paul Eggert <eggert@cs.ucla.edu>, emacs-devel@gnu.org > Date: Fri, 04 Feb 2011 16:14:03 -0500 > > > impossible to tell the compiler not to emit this warning by the > > "usual" C technique of using a cast. > > Looks like a bug in gcc. I'd be surprised if they accept this > qualification, but really what's the point of emitting a warning when > the user explicitly put a cast to void? You can google about this: the GCC maintainers explicitly think this isn't a bug, but a feature. They say that the warning was provided to uncover the cases where lazy programmers cast function calls to void to avoid diagnostics, without considering the implications. They say that if you don't want this warning, you should not declare functions with this attribute. > I don't see how/why you'd consider it a misfeature of glibc. See above. It's glibc headers that declare the functions with this attribute. However, Tom pointed out that glibc only does that if the compiler is invoked with -D_FORTIFY_SOURCE=2 or higher, so it's an optional feature as far as glibc is concerned. Ubuntu turns this option on, because its specs for GCC include -D_FORTIFY_SOURCE=2, so it's actually an issue with Ubuntu, not with glibc. Personally, I think it's wrong to force _FORTIFY_SOURCE on all the users of a general-purpose system, but that's me. ^ permalink raw reply [flat|nested] 41+ messages in thread
* Re: attribute warn_unused_result 2011-02-05 8:57 ` Eli Zaretskii @ 2011-02-05 16:01 ` Stefan Monnier 0 siblings, 0 replies; 41+ messages in thread From: Stefan Monnier @ 2011-02-05 16:01 UTC (permalink / raw) To: Eli Zaretskii; +Cc: eggert, emacs-devel >> > impossible to tell the compiler not to emit this warning by the >> > "usual" C technique of using a cast. >> Looks like a bug in gcc. I'd be surprised if they accept this >> qualification, but really what's the point of emitting a warning when >> the user explicitly put a cast to void? > You can google about this: the GCC maintainers explicitly think this > isn't a bug, but a feature. They say that the warning was provided to > uncover the cases where lazy programmers cast function calls to void > to avoid diagnostics, without considering the implications. That's brain dead: lazy programmers don't bother to add a `void'. > They say that if you don't want this warning, you should not declare > functions with this attribute. That's also brain dead: declaring functions with this attribute is adding good information, so it should be done wherever possible and should not come with any negative consequences such as "when you really don't care about the result, then please obfuscate your code, oh and keep an eye on it, because a future gcc version may try and be even more clever in uncovering code obfuscation, so you'll have to obfuscate it even more to avoid the warning". Anyway... Richard, could you try and get the gcc people to their senses? >> I don't see how/why you'd consider it a misfeature of glibc. > See above. It's glibc headers that declare the functions with this > attribute. And it's a good thing they do. > Personally, I think it's wrong to force _FORTIFY_SOURCE on all the > users of a general-purpose system, but that's me. I think the wrong part is to force users to obfuscate their code. Stefan ^ permalink raw reply [flat|nested] 41+ messages in thread
end of thread, other threads:[~2011-02-06 21:26 UTC | newest] Thread overview: 41+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-02-03 14:57 attribute warn_unused_result Eli Zaretskii 2011-02-03 18:53 ` Stefan Monnier 2011-02-03 19:33 ` Paul Eggert 2011-02-03 20:42 ` Chad Brown 2011-02-03 21:30 ` Eli Zaretskii 2011-02-03 21:58 ` Paul Eggert 2011-02-04 0:17 ` Lennart Borgman 2011-02-04 8:18 ` Eli Zaretskii 2011-02-05 16:30 ` Chong Yidong 2011-02-03 21:40 ` Paul Eggert 2011-02-04 8:41 ` Eli Zaretskii 2011-02-04 8:51 ` Paul Eggert 2011-02-04 21:05 ` Stefan Monnier 2011-02-05 8:50 ` Eli Zaretskii 2011-02-03 21:47 ` Lennart Borgman 2011-02-04 21:08 ` Stefan Monnier 2011-02-04 21:15 ` Lennart Borgman 2011-02-05 9:03 ` Eli Zaretskii 2011-02-05 8:59 ` Eli Zaretskii 2011-02-03 22:08 ` Andy Moreton 2011-02-03 23:00 ` Paul Eggert 2011-02-03 21:16 ` Eli Zaretskii 2011-02-03 21:14 ` Eli Zaretskii 2011-02-04 0:57 ` Paul Eggert 2011-02-04 8:29 ` Eli Zaretskii 2011-02-04 15:50 ` Tom Tromey 2011-02-04 16:38 ` Eli Zaretskii 2011-02-04 17:12 ` Tom Tromey 2011-02-05 0:11 ` Paul Eggert 2011-02-05 9:18 ` Eli Zaretskii [not found] ` <yyxvd0yxwv1.fsf@fencepost.gnu.org> 2011-02-06 1:34 ` Paul Eggert 2011-02-06 4:07 ` Eli Zaretskii 2011-02-06 7:04 ` Paul Eggert 2011-02-06 10:21 ` Eli Zaretskii 2011-02-06 18:58 ` Paul Eggert 2011-02-06 19:27 ` Eli Zaretskii 2011-02-06 20:11 ` Paul Eggert 2011-02-06 21:26 ` Eli Zaretskii 2011-02-04 21:14 ` Stefan Monnier 2011-02-05 8:57 ` Eli Zaretskii 2011-02-05 16:01 ` Stefan Monnier
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).