* Re: There is no returning [not found] ` <E1VfQ9I-0000qc-QO@stenn.ntp.org> @ 2013-11-10 19:31 ` Bruce Korb 2013-11-10 20:41 ` Paul Eggert 0 siblings, 1 reply; 19+ messages in thread From: Bruce Korb @ 2013-11-10 19:31 UTC (permalink / raw) To: Harlan Stenn, Andreas Metzler, bug-gnulib List, guile-devel Development On 11/10/13 00:13, Harlan Stenn wrote: > Bruce, > > I'm seeing build errors on psp-fb1 with the guile headers as well, and autogen-5.18.2. Errors like this: > /usr/bin/gcc-4.6 -std=gnu99 -DHAVE_CONFIG_H -I. -I.. -I.. -I../autoopts \ > -g -O2 -MT autogen-ag.o -MD -MP -MF .deps/autogen-ag.Tpo -c -o autogen-ag.o \ >`test -f 'ag.c' || echo './'`ag.c > In file included from /usr/include/libguile.h:40:0, > from autogen.h:60, > from ag.c:7: > /usr/include/libguile/error.h:39:24: error: expected ')' before '__attribute__' > /usr/include/libguile/error.h:39:24: error: expected ',' or ';' before ')' token The cause seems to be a bad interaction between gnulib's stdnoreturn module and the Guile headers. I'm chasing that now. > # 28 "/usr/include/libguile/error.h" 3 4 > extern SCM scm_system_error_key; > extern SCM scm_num_overflow_key; > extern SCM scm_out_of_range_key; > extern SCM scm_args_number_key; > extern SCM scm_arg_type_key; > extern SCM scm_memory_alloc_key; > extern SCM scm_misc_error_key; > > > > extern void scm_error (SCM key, const char *subr, const char *message, > SCM args, SCM rest) __attribute__ ((__attribute__ ((__noreturn__)))); from the generated stdnoreturn.h: > /* The definition of _Noreturn is copied here. */ > #if !defined _Noreturn && __STDC_VERSION__ < 201112 > # if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \ > || 0x5110 <= __SUNPRO_C) > # define _Noreturn __attribute__ ((__noreturn__)) > # elif 1200 <= _MSC_VER > # define _Noreturn __declspec (noreturn) > # else > # define _Noreturn > # endif > #endif [...] > # define noreturn _Noreturn And looking into Guile sources: > $ find /usr/include/libguile -type f|xargs grep -Ei '^#define.*noreturn' > /usr/include/libguile/__scm.h:#define SCM_NORETURN __attribute__ ((noreturn)) So "noreturn" gets #define-d to: __attribute__ ((__noreturn__)) and SCM_NORETURN is: __attribute__ ((noreturn)) Too clever by way more than half. The correct fix is not obvious to me. It seems like the correct attribute spelling is: __attribute__ ((__noreturn__)) but the Guile code spells it in a way whereby gnulib "fixes" the thing. No way out. ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: There is no returning 2013-11-10 19:31 ` There is no returning Bruce Korb @ 2013-11-10 20:41 ` Paul Eggert 2013-11-10 20:25 ` Bruce Korb 2013-11-17 21:18 ` Ludovic Courtès 0 siblings, 2 replies; 19+ messages in thread From: Paul Eggert @ 2013-11-10 20:41 UTC (permalink / raw) To: Bruce Korb, Harlan Stenn, Andreas Metzler, bug-gnulib List, guile-devel Development A better solution, if you want to be portable to MSVC, is to use _Noreturn instead of noreturn. This is for reasons described in stdnoreturn.in.h. '_Noreturn' is a bit ugly; if you don't care about MSVC, then __attribute__((__noreturn__)) is a good way to go. ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: There is no returning 2013-11-10 20:41 ` Paul Eggert @ 2013-11-10 20:25 ` Bruce Korb 2013-11-10 20:54 ` Bruce Korb 2013-11-14 7:52 ` Mark H Weaver 2013-11-17 21:18 ` Ludovic Courtès 1 sibling, 2 replies; 19+ messages in thread From: Bruce Korb @ 2013-11-10 20:25 UTC (permalink / raw) To: Paul Eggert Cc: Harlan Stenn, bug-gnulib List, guile-devel Development, Andreas Metzler On 11/10/13 12:41, Paul Eggert wrote: > A better solution, if you want to be portable to > MSVC, is to use _Noreturn instead of noreturn. > This is for reasons described in stdnoreturn.in.h. > > '_Noreturn' is a bit ugly; if you don't care about > MSVC, then __attribute__((__noreturn__)) is > a good way to go. Hi Paul, Thanks. As mentioned in the GCC pages, using the prefix/suffix of "__" is the right way to go -- for Guile. For me, I control neither the gnulib variation on stdnoreturn.h nor the libguile/__scm.h headers. So rather than unwinding "noreturn" attributes for functions that do not return, I'll hack up some really ugly stuff: This: > if GL_GENERATE_STDNORETURN_H > $(STDNORETURN_H) : libguile/__scm.h > libguile/__scm.h : > $(SHELL) $(srcdir)/fix-guile.sh $(LIBGUILE_CFLAGS) > endif Plus this: > guile_scm_h= > > while test $# -gt 0 > do > case "$1" in > -I ) > test -f $2/libguile/__scm.h && { > guile_scm_h=$2/libguile/__scm.h > break > } > ;; > -I* ) > f=${1#-I} > test -f $f/libguile/__scm.h && { > guile_scm_h=$f/libguile/__scm.h > break > } > ;; > esac > shift > done > > test -z "$guile_scm_h" && { > guile_scm_h=/usr/include/libguile/__scm.h > test -f $guile_scm_h || { > echo "The Guile header __scm.h cannot be found" > exit 1 > } 1>&2 > } > > test -d libguile || mkdir libguile || { > echo "cannot make libguile directory" > exit 1 > } 1>&2 > > sed $'/^#define[ \t]SCM_NORETURN/s/RETURN..*/RETURN _Noreturn/' \ > $guile_scm_h > libguile/__scm.h ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: There is no returning 2013-11-10 20:25 ` Bruce Korb @ 2013-11-10 20:54 ` Bruce Korb 2013-11-11 2:07 ` Harlan Stenn 2013-11-11 18:54 ` Andreas Metzler 2013-11-14 7:52 ` Mark H Weaver 1 sibling, 2 replies; 19+ messages in thread From: Bruce Korb @ 2013-11-10 20:54 UTC (permalink / raw) To: Harlan Stenn, Andreas Metzler; +Cc: Paul Eggert, guile-devel Development On 11/10/13 12:25, Bruce Korb wrote: > headers. So rather than unwinding "noreturn" attributes for > functions that do not return, I'll hack up some really ugly stuff: That almost works -- I have to make my own copy of libguile.h, too, to trick the compiler into seeing my __scm.h before Guile's. Harlan, Andreas, without fixes from Guile, I do not see any way out except to create my own copies of libguile.h and __scm.h, fixing the latter. The latest "pre" will do this. Please see if it works for you. Thanks! Regards, Bruce http://autogen.sourceforge.net/data/autogen-5.18.3pre4.tar.xz ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: There is no returning 2013-11-10 20:54 ` Bruce Korb @ 2013-11-11 2:07 ` Harlan Stenn 2013-11-11 18:07 ` Andreas Metzler 2013-11-11 18:54 ` Andreas Metzler 1 sibling, 1 reply; 19+ messages in thread From: Harlan Stenn @ 2013-11-11 2:07 UTC (permalink / raw) To: Bruce Korb Cc: Harlan Stenn, Paul Eggert, guile-devel Development, Andreas Metzler Bruce, Thanks a bunch! First, I don't understand what's going on with libguile.h and __scm.h, but it seems really strange/wrong to me that the ones that get installed need *any* tweaking to work. Second, I tried the latest autogen 'pre' and it built and 'make check' went fine on freebsd and debian, and it built fine under Solaris but we had two "check" failures - I'll send those to you later. H ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: There is no returning 2013-11-11 2:07 ` Harlan Stenn @ 2013-11-11 18:07 ` Andreas Metzler 2013-11-11 23:05 ` Harlan Stenn 0 siblings, 1 reply; 19+ messages in thread From: Andreas Metzler @ 2013-11-11 18:07 UTC (permalink / raw) To: Harlan Stenn; +Cc: Paul Eggert, Bruce Korb, guile-devel Development On 2013-11-11 Harlan Stenn <stenn@ntp.org> wrote: [...] > Second, I tried the latest autogen 'pre' and it built and 'make check' > went fine on freebsd and debian, and it built fine under Solaris but we > had two "check" failures - I'll send those to you later. Hello, Which compiler did you use for building? You'll only see the problem if the system provides no stdnoreturn.h. Therefore you' won't see the problem with gcc >= 4.7. cu Andreas -- `What a good friend you are to him, Dr. Maturin. His other friends are so grateful to you.' `I sew his ears on from time to time, sure' ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: There is no returning 2013-11-11 18:07 ` Andreas Metzler @ 2013-11-11 23:05 ` Harlan Stenn 0 siblings, 0 replies; 19+ messages in thread From: Harlan Stenn @ 2013-11-11 23:05 UTC (permalink / raw) To: Andreas Metzler Cc: Harlan Stenn, Paul Eggert, Bruce Korb, guile-devel Development Hi Andreas, Andreas Metzler writes: > On 2013-11-11 Harlan Stenn <stenn@ntp.org> wrote: > [...] > > Second, I tried the latest autogen 'pre' and it built and 'make check' > > went fine on freebsd and debian, and it built fine under Solaris but we > > had two "check" failures - I'll send those to you later. > > Hello, > Which compiler did you use for building? You'll only see the problem if > the system provides no stdnoreturn.h. Therefore you' won't see the > problem with gcc >= 4.7. On one solaris box, gcc-4.2.0. On another solaris box, gcc-4.3.3. On the debian box, gcc-4.7.2. On the FreeBSD box, gcc-3.4.6. All boxes had compile problems in the same area before Bruce's fix. H ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: There is no returning 2013-11-10 20:54 ` Bruce Korb 2013-11-11 2:07 ` Harlan Stenn @ 2013-11-11 18:54 ` Andreas Metzler 1 sibling, 0 replies; 19+ messages in thread From: Andreas Metzler @ 2013-11-11 18:54 UTC (permalink / raw) To: Bruce Korb; +Cc: Harlan Stenn, Paul Eggert, guile-devel Development On 2013-11-10 Bruce Korb <bkorb@gnu.org> wrote: [...] > Harlan, Andreas, without fixes from Guile, I do not see any way > out except to create my own copies of libguile.h and __scm.h, > fixing the latter. The latest "pre" will do this. Please > see if it works for you. > Thanks! Regards, Bruce Hello, I quick check on my local system seems to have worked. I have uploaed to Debian/experimental to get some more exposure. cu Andreas -- `What a good friend you are to him, Dr. Maturin. His other friends are so grateful to you.' `I sew his ears on from time to time, sure' ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: There is no returning 2013-11-10 20:25 ` Bruce Korb 2013-11-10 20:54 ` Bruce Korb @ 2013-11-14 7:52 ` Mark H Weaver 2013-11-14 17:48 ` Bruce Korb 1 sibling, 1 reply; 19+ messages in thread From: Mark H Weaver @ 2013-11-14 7:52 UTC (permalink / raw) To: Bruce Korb Cc: Harlan Stenn, Paul Eggert, bug-gnulib List, guile-devel Development, Andreas Metzler Bruce Korb <bkorb@gnu.org> writes: > On 11/10/13 12:41, Paul Eggert wrote: >> A better solution, if you want to be portable to >> MSVC, is to use _Noreturn instead of noreturn. >> This is for reasons described in stdnoreturn.in.h. >> >> '_Noreturn' is a bit ugly; if you don't care about >> MSVC, then __attribute__((__noreturn__)) is >> a good way to go. > > Hi Paul, > > Thanks. As mentioned in the GCC pages, using the prefix/suffix > of "__" is the right way to go -- for Guile. FYI, I recently made precisely that change to the stable-2.0 branch, which will become Guile 2.0.10: http://git.savannah.gnu.org/gitweb/?p=guile.git;a=commitdiff;h=36c40440078c005cd5e239cca487d29f6f60007d;hp=b1fe20c24ccb380420ea1ffdc7f249224072dcdc Regards, Mark ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: There is no returning 2013-11-14 7:52 ` Mark H Weaver @ 2013-11-14 17:48 ` Bruce Korb 2013-11-14 23:43 ` Mark H Weaver 0 siblings, 1 reply; 19+ messages in thread From: Bruce Korb @ 2013-11-14 17:48 UTC (permalink / raw) To: Mark H Weaver Cc: Harlan Stenn, Paul Eggert, guile-devel Development, Andreas Metzler On 11/13/13 23:52, Mark H Weaver wrote: >>> '_Noreturn' is a bit ugly; if you don't care about >>> MSVC, then __attribute__((__noreturn__)) is >>> a good way to go. >> >> Hi Paul, >> >> Thanks. As mentioned in the GCC pages, using the prefix/suffix >> of "__" is the right way to go -- for Guile. > > FYI, I recently made precisely that change to the stable-2.0 branch, > which will become Guile 2.0.10: > > http://git.savannah.gnu.org/gitweb/?p=guile.git;a=commitdiff;h=36c40440078c005cd5e239cca487d29f6f60007d;hp=b1fe20c24ccb380420ea1ffdc7f249224072dcdc Thank you, Mark! Would you be willing to also do it for 1.8.x? Many "stable" distros will take _years_ to advance to 2.x, but for me I guess does not matter. I have to copy and edit Guile headers in order to build at all. My technique is to blindly replace anything after "SCM_NORETURN" with "_Noreturn" on any line #define-ing SCM_NORETURN. This is _always_ done when GL_GENERATE_STDNORETURN_H is defined at "configure" time. That means I will be doing this in perpetuity, unless I can get clear instructions about how to detect that it is no longer necessary. I think a better patch would be for Guile to defer to _Noreturn whenever that is #define-d and _otherwise_ do what you do. That way, if gnulib is in the mix, it is a gnulib job to figure out the right value for SCM_NORETURN/_Noreturn. The token "_Noreturn" is in the reserved-for-the-implementation name space, so conforming applications should not be defining that on their own. Regards, Bruce ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: There is no returning 2013-11-14 17:48 ` Bruce Korb @ 2013-11-14 23:43 ` Mark H Weaver 2013-11-14 23:53 ` Paul Eggert 0 siblings, 1 reply; 19+ messages in thread From: Mark H Weaver @ 2013-11-14 23:43 UTC (permalink / raw) To: Bruce Korb; +Cc: Harlan Stenn, Paul Eggert, guile-devel, Andreas Metzler Bruce Korb <bkorb@gnu.org> writes: > On 11/13/13 23:52, Mark H Weaver wrote: >> FYI, I recently made precisely that change to the stable-2.0 branch, >> which will become Guile 2.0.10: >> >> http://git.savannah.gnu.org/gitweb/?p=guile.git;a=commitdiff;h=36c40440078c005cd5e239cca487d29f6f60007d;hp=b1fe20c24ccb380420ea1ffdc7f249224072dcdc > > Thank you, Mark! Would you be willing to also do it for 1.8.x? I'm sorry, but 1.8.x is long dead. The last release was nearly 3 years ago, and almost no work has been done on it since then. In the meantime, probably on the order of hundreds of bug fixes have been applied to 2.0 and never backported to 1.8. At this point, it would be a major effort to produce a new 1.8.x release that we wouldn't be ashamed of. No one has volunteered to do that work. There are many far more important things to work on, and not enough people to do it all. Guile 2.0 was released over 2.5 years ago, and is now in all the major distros, including Debian stable, the last few Ubuntu and Fedora releases, etc. Please, let's move on. > Many "stable" distros will take _years_ to advance to 2.x, I guess you mean the enterprise distros like RHEL, CentOS, etc. Do you think many users of those distros will want to use the latest autogen release? > MY technique is to blindly replace anything after "SCM_NORETURN" > with "_Noreturn" on any line #define-ing SCM_NORETURN. Looking at C11, it appears that _Noreturn belongs before the function return type, whereas __attribute__ (__noreturn__) and SCM_NORETURN goes after the formal parameter list. So I don't see how your proposed workaround can work properly. Am I missing something? Regards, Mark ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: There is no returning 2013-11-14 23:43 ` Mark H Weaver @ 2013-11-14 23:53 ` Paul Eggert 2013-11-15 0:13 ` Mark H Weaver 0 siblings, 1 reply; 19+ messages in thread From: Paul Eggert @ 2013-11-14 23:53 UTC (permalink / raw) To: Mark H Weaver, Bruce Korb; +Cc: Harlan Stenn, guile-devel, Andreas Metzler Mark H Weaver wrote: > Looking at C11, it appears that _Noreturn belongs before the function > return type, whereas __attribute__ (__noreturn__) and SCM_NORETURN goes > after the formal parameter list. So I don't see how your proposed > workaround can work properly. __attribute__ (__noreturn__) can be at the start of a declaration. So, for example, Gnulib does this, and it seems to work well in practice: #if ! (defined _Noreturn \ || (defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__)) # if (3 <= __GNUC__ || (__GNUC__ == 2 && 8 <= __GNUC_MINOR__) \ || 0x5110 <= __SUNPRO_C) # define _Noreturn __attribute__ ((__noreturn__)) # elif defined _MSC_VER && 1200 <= _MSC_VER # define _Noreturn __declspec (noreturn) # else # define _Noreturn # endif #endif ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: There is no returning 2013-11-14 23:53 ` Paul Eggert @ 2013-11-15 0:13 ` Mark H Weaver 2013-11-15 0:46 ` Paul Eggert 0 siblings, 1 reply; 19+ messages in thread From: Mark H Weaver @ 2013-11-15 0:13 UTC (permalink / raw) To: Paul Eggert; +Cc: Harlan Stenn, Bruce Korb, guile-devel, Andreas Metzler Paul Eggert <eggert@cs.ucla.edu> writes: > Mark H Weaver wrote: >> Looking at C11, it appears that _Noreturn belongs before the function >> return type, whereas __attribute__ (__noreturn__) and SCM_NORETURN goes >> after the formal parameter list. So I don't see how your proposed >> workaround can work properly. > > __attribute__ (__noreturn__) can be at the start of a declaration. Ah, that's good! So perhaps we should just import the relevant gnulib module and convert all existing uses of SCM_NORETURN to use _Noreturn instead. What do you think? However, it should be noted that in all existing Guile releases, uses of SCM_NORETURN are always placed after the formal parameter list, so Bruce's proposed workaround would effectively put _Noreturn after the formal parameter list as well. I guess it would work if _Noreturn happens to be defined as __attribute__ ((__noreturn__)), but not in the general case. Thanks, Mark ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: There is no returning 2013-11-15 0:13 ` Mark H Weaver @ 2013-11-15 0:46 ` Paul Eggert 2013-11-16 17:16 ` Bruce Korb 0 siblings, 1 reply; 19+ messages in thread From: Paul Eggert @ 2013-11-15 0:46 UTC (permalink / raw) To: Mark H Weaver; +Cc: Harlan Stenn, Bruce Korb, guile-devel, Andreas Metzler Mark H Weaver wrote: > Ah, that's good! So perhaps we should just import the relevant gnulib > module and convert all existing uses of SCM_NORETURN to use _Noreturn > instead. What do you think? I think it'll work; at least, _Noreturn has worked for Gnulib fairly well since we introduced it in summer 2011. > Bruce's proposed workaround would effectively put _Noreturn after the > formal parameter list as well. I guess it would work if _Noreturn > happens to be defined as __attribute__ ((__noreturn__)), but not in the > general case. Yes, that sounds right. If user code employs SCM_NORETURN in that position and you therefore you can't change SCM_NORETURNto mean _Noreturn, it might be simpler to keep SCM_NORETURN the way it is for backwards compatibility. But you can change all its uses in Guile to be _Noreturn at the start of the declaration, where _Noreturn is defined the Gnulib way. ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: There is no returning 2013-11-15 0:46 ` Paul Eggert @ 2013-11-16 17:16 ` Bruce Korb 0 siblings, 0 replies; 19+ messages in thread From: Bruce Korb @ 2013-11-16 17:16 UTC (permalink / raw) To: Paul Eggert; +Cc: Mark H Weaver, guile-devel, Harlan Stenn [-- Attachment #1: Type: text/plain, Size: 1966 bytes --] On 11/14/13 16:46, Paul Eggert wrote: > Yes, that sounds right. If user code employs SCM_NORETURN in that position > and you therefore you can't change SCM_NORETURN to mean _Noreturn, it might be simpler > to keep SCM_NORETURN the way it is for backwards compatibility. But you > can change all its uses in Guile to be _Noreturn at the start of the declaration, > where _Noreturn is defined the Gnulib way. Actually, internally to Guile I do not care in the slightest what gets used. The problem I face is that the Guile headers were written with the presumption that the token "noreturn" is not #defined to something else. I seriously doubt there are a lot of developers out there writing Guile call out functions with the SCM_NORETURN attribute, so fretting a lot about it is unlikely to be especially useful. What is crucial is fixing the headers so they do not break. That's been done. I do think it is also important to know that stable distributions do not jump on the next major release until it has proven to be stable. And, yes, often times current releases of other tools get built for "stable" platforms. That means my current stuff needs to build against the 1.8.x releases of Guile. In fact, it gets built against 1.6.x releases of Guile. That's why I have hundreds of lines of Guile compatibility cruft -- just to cope with changes. Attached is a shell script that I think I can distribute and forget about. My hope is that I can distribute the thing for the next decade while the "__attribute__ ((__noreturn__))" variation propagates everywhere. It gets invoked from the Makefile.am thus: diff --git a/autoopts/Makefile.am b/autoopts/Makefile.am index 3f2f3ad..137ec51 100644 --- a/autoopts/Makefile.am +++ b/autoopts/Makefile.am @@ -164,4 +164,10 @@ install-data-hook: .NOTPARALLEL: +if GL_GENERATE_STDNORETURN_H +$(STDNORETURN_H) : libguile/__scm.h +libguile/__scm.h : + $(SHELL) $(srcdir)/fix-guile.sh $(LIBGUILE_CFLAGS) +endif + [-- Attachment #2: fix-guile.sh --] [-- Type: application/x-shellscript, Size: 912 bytes --] ^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: There is no returning 2013-11-10 20:41 ` Paul Eggert 2013-11-10 20:25 ` Bruce Korb @ 2013-11-17 21:18 ` Ludovic Courtès 2013-11-17 20:31 ` Bruce Korb 2013-11-18 0:16 ` Paul Eggert 1 sibling, 2 replies; 19+ messages in thread From: Ludovic Courtès @ 2013-11-17 21:18 UTC (permalink / raw) To: Paul Eggert Cc: Harlan Stenn, bug-gnulib List, Bruce Korb, guile-devel Development, Andreas Metzler Paul Eggert <eggert@cs.ucla.edu> skribis: > A better solution, if you want to be portable to > MSVC, is to use _Noreturn instead of noreturn. > This is for reasons described in stdnoreturn.in.h. > > '_Noreturn' is a bit ugly; if you don't care about > MSVC, then __attribute__((__noreturn__)) is > a good way to go. Not sure what you mean by “ugly”, but ‘_Noreturn’ has the huge advantage of being a reserved identifier per POSIX (info "(libc) Reserved Names"), while ‘noreturn’ is not. What would you think of sticking to the standard and less problematic ‘_Noreturn’ identifier in Gnulib? (I also agree that it’s better for Guile’s public headers to use ‘__noreturn__’, but using ‘noreturn’ was not completely silly either.) Thanks, Ludo’. ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: There is no returning 2013-11-17 21:18 ` Ludovic Courtès @ 2013-11-17 20:31 ` Bruce Korb 2013-11-17 21:41 ` Ludovic Courtès 2013-11-18 0:16 ` Paul Eggert 1 sibling, 1 reply; 19+ messages in thread From: Bruce Korb @ 2013-11-17 20:31 UTC (permalink / raw) To: Ludovic Courtès Cc: Harlan Stenn, Paul Eggert, bug-gnulib List, guile-devel Development, Andreas Metzler On 11/17/13 13:18, Ludovic Courtès wrote: > What would you think of sticking to the standard and less problematic > ‘_Noreturn’ identifier in Gnulib? > > (I also agree that it’s better for Guile’s public headers to use > ‘__noreturn__’, but using ‘noreturn’ was not completely silly either.) "noreturn" is a C11 keyword and does not need #define-ing, except as a C11 compatibility thing. When you #include <stdnoreturn.h>, that token should work as expected. gnulib makes that available. ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: There is no returning 2013-11-17 20:31 ` Bruce Korb @ 2013-11-17 21:41 ` Ludovic Courtès 0 siblings, 0 replies; 19+ messages in thread From: Ludovic Courtès @ 2013-11-17 21:41 UTC (permalink / raw) To: Bruce Korb Cc: Harlan Stenn, Paul Eggert, bug-gnulib List, guile-devel Development, Andreas Metzler Bruce Korb <bkorb@gnu.org> skribis: > On 11/17/13 13:18, Ludovic Courtès wrote: >> What would you think of sticking to the standard and less problematic >> ‘_Noreturn’ identifier in Gnulib? >> >> (I also agree that it’s better for Guile’s public headers to use >> ‘__noreturn__’, but using ‘noreturn’ was not completely silly either.) > > "noreturn" is a C11 keyword Well it’s a macro from <stdnoreturn.h>, but the keyword is _Noreturn. As ugly as it may look, ‘_Noreturn’ was chose to avoid name clashes. > When you #include <stdnoreturn.h>, that token should work as expected. > gnulib makes that available. Right, I had overlooked the standardization of <stdnoreturn.h>. Sorry for the noise! Ludo’. ^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: There is no returning 2013-11-17 21:18 ` Ludovic Courtès 2013-11-17 20:31 ` Bruce Korb @ 2013-11-18 0:16 ` Paul Eggert 1 sibling, 0 replies; 19+ messages in thread From: Paul Eggert @ 2013-11-18 0:16 UTC (permalink / raw) To: Ludovic Courtès Cc: Harlan Stenn, bug-gnulib List, guile-devel Development, Andreas Metzler Ludovic Courtès wrote: > What would you think of sticking to the standard and less problematic > ‘_Noreturn’ identifier in Gnulib? That's what Gnulib does already. Other than the stdnoreturn module itself, Gnulib modules always use _Noreturn rather than noreturn. This is not merely because of namespace issues; it's also because noreturn doesn't work well with MSVC (the Gnulib workaround for this turns 'noreturn' into a no-op). ^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2013-11-18 0:16 UTC | newest] Thread overview: 19+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- [not found] <E1VdzNu-0005pm-JL@stenn.ntp.org> [not found] ` <527A836E.4050100@gnu.org> [not found] ` <E1VfQ9I-0000qc-QO@stenn.ntp.org> 2013-11-10 19:31 ` There is no returning Bruce Korb 2013-11-10 20:41 ` Paul Eggert 2013-11-10 20:25 ` Bruce Korb 2013-11-10 20:54 ` Bruce Korb 2013-11-11 2:07 ` Harlan Stenn 2013-11-11 18:07 ` Andreas Metzler 2013-11-11 23:05 ` Harlan Stenn 2013-11-11 18:54 ` Andreas Metzler 2013-11-14 7:52 ` Mark H Weaver 2013-11-14 17:48 ` Bruce Korb 2013-11-14 23:43 ` Mark H Weaver 2013-11-14 23:53 ` Paul Eggert 2013-11-15 0:13 ` Mark H Weaver 2013-11-15 0:46 ` Paul Eggert 2013-11-16 17:16 ` Bruce Korb 2013-11-17 21:18 ` Ludovic Courtès 2013-11-17 20:31 ` Bruce Korb 2013-11-17 21:41 ` Ludovic Courtès 2013-11-18 0:16 ` Paul Eggert
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).