mailing list of musl libc
 help / color / mirror / Atom feed
* [musl] [PATCH 1/2] define __STDC_UTF_{16,32}__ macros
@ 2021-04-16  0:35 Érico Nogueira
  2021-04-16  0:35 ` [musl] [PATCH 2/2] include <stdc-predef.h> in <features.h> Érico Nogueira
  0 siblings, 1 reply; 8+ messages in thread
From: Érico Nogueira @ 2021-04-16  0:35 UTC (permalink / raw)
  To: musl; +Cc: Érico Nogueira

these macros are used to indicate that the implementation uses,
respectively, utf-16 and utf-32 encoding for char16_t and char32_t.
---
 include/stdc-predef.h | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/include/stdc-predef.h b/include/stdc-predef.h
index f8cd4b89..af1a2799 100644
--- a/include/stdc-predef.h
+++ b/include/stdc-predef.h
@@ -7,4 +7,7 @@
 #define __STDC_IEC_559__ 1
 #endif
 
+#define __STDC_UTF_16__ 1
+#define __STDC_UTF_32__ 1
+
 #endif
-- 
2.31.1


^ permalink raw reply	[flat|nested] 8+ messages in thread

* [musl] [PATCH 2/2] include <stdc-predef.h> in <features.h>
  2021-04-16  0:35 [musl] [PATCH 1/2] define __STDC_UTF_{16,32}__ macros Érico Nogueira
@ 2021-04-16  0:35 ` Érico Nogueira
  2021-04-16 14:26   ` Rich Felker
  0 siblings, 1 reply; 8+ messages in thread
From: Érico Nogueira @ 2021-04-16  0:35 UTC (permalink / raw)
  To: musl; +Cc: Érico Nogueira

GCC source code does contain a function to pre-include the
<stdc-predef.h> header for glibc targets, but even so glibc still
includes it in their own <features.h> header. furthermore, even if GCC
implemented this for musl targets, it is still necessary for other
compilers or previous versions of GCC.
---
 include/features.h | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/features.h b/include/features.h
index 85cfb72a..f3d53cbe 100644
--- a/include/features.h
+++ b/include/features.h
@@ -1,6 +1,8 @@
 #ifndef _FEATURES_H
 #define _FEATURES_H
 
+#include <stdc-predef.h>
+
 #if defined(_ALL_SOURCE) && !defined(_GNU_SOURCE)
 #define _GNU_SOURCE 1
 #endif
-- 
2.31.1


^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [musl] [PATCH 2/2] include <stdc-predef.h> in <features.h>
  2021-04-16  0:35 ` [musl] [PATCH 2/2] include <stdc-predef.h> in <features.h> Érico Nogueira
@ 2021-04-16 14:26   ` Rich Felker
  2021-04-16 17:57     ` Érico Nogueira
  0 siblings, 1 reply; 8+ messages in thread
From: Rich Felker @ 2021-04-16 14:26 UTC (permalink / raw)
  To: Érico Nogueira; +Cc: musl

On Thu, Apr 15, 2021 at 09:35:21PM -0300, Érico Nogueira wrote:
> GCC source code does contain a function to pre-include the
> <stdc-predef.h> header for glibc targets, but even so glibc still
> includes it in their own <features.h> header. furthermore, even if GCC
> implemented this for musl targets, it is still necessary for other
> compilers or previous versions of GCC.
> ---
>  include/features.h | 2 ++
>  1 file changed, 2 insertions(+)
> 
> diff --git a/include/features.h b/include/features.h
> index 85cfb72a..f3d53cbe 100644
> --- a/include/features.h
> +++ b/include/features.h
> @@ -1,6 +1,8 @@
>  #ifndef _FEATURES_H
>  #define _FEATURES_H
>  
> +#include <stdc-predef.h>
> +
>  #if defined(_ALL_SOURCE) && !defined(_GNU_SOURCE)
>  #define _GNU_SOURCE 1
>  #endif
> -- 
> 2.31.1

I've hesitated to do this because features.h is not consistently
included from all standard headers (only if it's needed), and the
result would be inconsistent exposure of these macros. (Also
inconsistent if they're checked before any standard headers are
included, which is unfixable.) I think it makes more sense to just add
"-include stdc-predef.h" to the compiler specfile or equivalent if it
doesn't auto-include it, so that you get behavior that actually
matches the spec.

Rich

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [musl] [PATCH 2/2] include <stdc-predef.h> in <features.h>
  2021-04-16 14:26   ` Rich Felker
@ 2021-04-16 17:57     ` Érico Nogueira
  2021-04-16 18:51       ` Rich Felker
  0 siblings, 1 reply; 8+ messages in thread
From: Érico Nogueira @ 2021-04-16 17:57 UTC (permalink / raw)
  To: Rich Felker; +Cc: musl

Em 16/04/2021 11:26, Rich Felker escreveu:
> On Thu, Apr 15, 2021 at 09:35:21PM -0300, Érico Nogueira wrote:
>> GCC source code does contain a function to pre-include the
>> <stdc-predef.h> header for glibc targets, but even so glibc still

I seem to have been mistaken about the feature being glibc specific; using

     echo "" | cc -xc - -E

it seems the file does end up being included automatically.

However, when using clang instead of gcc, it isn't included 
automatically. I don't know if this is something that clang ought to 
fix, is there some sort of standard about <stdc-predef.h>? Michael 
Forney's cproc compiler doesn't seem to touch it either.

>> includes it in their own <features.h> header. furthermore, even if GCC
>> implemented this for musl targets, it is still necessary for other
>> compilers or previous versions of GCC.
>> ---
>>   include/features.h | 2 ++
>>   1 file changed, 2 insertions(+)
>>
>> diff --git a/include/features.h b/include/features.h
>> index 85cfb72a..f3d53cbe 100644
>> --- a/include/features.h
>> +++ b/include/features.h
>> @@ -1,6 +1,8 @@
>>   #ifndef _FEATURES_H
>>   #define _FEATURES_H
>>   
>> +#include <stdc-predef.h>
>> +
>>   #if defined(_ALL_SOURCE) && !defined(_GNU_SOURCE)
>>   #define _GNU_SOURCE 1
>>   #endif
>> -- 
>> 2.31.1
> 
> I've hesitated to do this because features.h is not consistently
> included from all standard headers (only if it's needed), and the
> result would be inconsistent exposure of these macros. (Also
> inconsistent if they're checked before any standard headers are
> included, which is unfixable.) I think it makes more sense to just add
> "-include stdc-predef.h" to the compiler specfile or equivalent if it
> doesn't auto-include it, so that you get behavior that actually
> matches the spec.

Do you know if clang can use the specfile? That would make it worth it 
adding the entry, since GCC has the expected behavior already.

> 
> Rich
> 

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [musl] [PATCH 2/2] include <stdc-predef.h> in <features.h>
  2021-04-16 17:57     ` Érico Nogueira
@ 2021-04-16 18:51       ` Rich Felker
  2021-04-16 22:12         ` James Y Knight
  0 siblings, 1 reply; 8+ messages in thread
From: Rich Felker @ 2021-04-16 18:51 UTC (permalink / raw)
  To: Érico Nogueira; +Cc: musl

On Fri, Apr 16, 2021 at 02:57:21PM -0300, Érico Nogueira wrote:
> Em 16/04/2021 11:26, Rich Felker escreveu:
> >On Thu, Apr 15, 2021 at 09:35:21PM -0300, Érico Nogueira wrote:
> >>GCC source code does contain a function to pre-include the
> >><stdc-predef.h> header for glibc targets, but even so glibc still
> 
> I seem to have been mistaken about the feature being glibc specific; using
> 
>     echo "" | cc -xc - -E
> 
> it seems the file does end up being included automatically.
> 
> However, when using clang instead of gcc, it isn't included
> automatically. I don't know if this is something that clang ought to
> fix, is there some sort of standard about <stdc-predef.h>? Michael
> Forney's cproc compiler doesn't seem to touch it either.

It's not a standard, but given that it's established I don't see any
reasonable argument for other compilers not to just do the same. You
can always fix them manually with CC="clang -include stdc-predef.h" or
similar though.

> >>includes it in their own <features.h> header. furthermore, even if GCC
> >>implemented this for musl targets, it is still necessary for other
> >>compilers or previous versions of GCC.
> >>---
> >>  include/features.h | 2 ++
> >>  1 file changed, 2 insertions(+)
> >>
> >>diff --git a/include/features.h b/include/features.h
> >>index 85cfb72a..f3d53cbe 100644
> >>--- a/include/features.h
> >>+++ b/include/features.h
> >>@@ -1,6 +1,8 @@
> >>  #ifndef _FEATURES_H
> >>  #define _FEATURES_H
> >>+#include <stdc-predef.h>
> >>+
> >>  #if defined(_ALL_SOURCE) && !defined(_GNU_SOURCE)
> >>  #define _GNU_SOURCE 1
> >>  #endif
> >>-- 
> >>2.31.1
> >
> >I've hesitated to do this because features.h is not consistently
> >included from all standard headers (only if it's needed), and the
> >result would be inconsistent exposure of these macros. (Also
> >inconsistent if they're checked before any standard headers are
> >included, which is unfixable.) I think it makes more sense to just add
> >"-include stdc-predef.h" to the compiler specfile or equivalent if it
> >doesn't auto-include it, so that you get behavior that actually
> >matches the spec.
> 
> Do you know if clang can use the specfile? That would make it worth
> it adding the entry, since GCC has the expected behavior already.

No; specfiles are highly tied to GCC's compiler driver architecture.
clang might have some other equivalent mechanism though.

Rich

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [musl] [PATCH 2/2] include <stdc-predef.h> in <features.h>
  2021-04-16 18:51       ` Rich Felker
@ 2021-04-16 22:12         ` James Y Knight
  2021-04-17  0:00           ` Rich Felker
  0 siblings, 1 reply; 8+ messages in thread
From: James Y Knight @ 2021-04-16 22:12 UTC (permalink / raw)
  To: musl; +Cc: Érico Nogueira

[-- Attachment #1: Type: text/plain, Size: 2911 bytes --]

Ugh, I thought Clang had added support for this years ago. But it looks
like the change (https://reviews.llvm.org/D34158) never actually made it
in; it ran into some test failures after being committed and was
reverted, and then never reapplied. :(


On Fri, Apr 16, 2021 at 2:51 PM Rich Felker <dalias@libc.org> wrote:

> On Fri, Apr 16, 2021 at 02:57:21PM -0300, Érico Nogueira wrote:
> > Em 16/04/2021 11:26, Rich Felker escreveu:
> > >On Thu, Apr 15, 2021 at 09:35:21PM -0300, Érico Nogueira wrote:
> > >>GCC source code does contain a function to pre-include the
> > >><stdc-predef.h> header for glibc targets, but even so glibc still
> >
> > I seem to have been mistaken about the feature being glibc specific;
> using
> >
> >     echo "" | cc -xc - -E
> >
> > it seems the file does end up being included automatically.
> >
> > However, when using clang instead of gcc, it isn't included
> > automatically. I don't know if this is something that clang ought to
> > fix, is there some sort of standard about <stdc-predef.h>? Michael
> > Forney's cproc compiler doesn't seem to touch it either.
>
> It's not a standard, but given that it's established I don't see any
> reasonable argument for other compilers not to just do the same. You
> can always fix them manually with CC="clang -include stdc-predef.h" or
> similar though.
>
> > >>includes it in their own <features.h> header. furthermore, even if GCC
> > >>implemented this for musl targets, it is still necessary for other
> > >>compilers or previous versions of GCC.
> > >>---
> > >>  include/features.h | 2 ++
> > >>  1 file changed, 2 insertions(+)
> > >>
> > >>diff --git a/include/features.h b/include/features.h
> > >>index 85cfb72a..f3d53cbe 100644
> > >>--- a/include/features.h
> > >>+++ b/include/features.h
> > >>@@ -1,6 +1,8 @@
> > >>  #ifndef _FEATURES_H
> > >>  #define _FEATURES_H
> > >>+#include <stdc-predef.h>
> > >>+
> > >>  #if defined(_ALL_SOURCE) && !defined(_GNU_SOURCE)
> > >>  #define _GNU_SOURCE 1
> > >>  #endif
> > >>--
> > >>2.31.1
> > >
> > >I've hesitated to do this because features.h is not consistently
> > >included from all standard headers (only if it's needed), and the
> > >result would be inconsistent exposure of these macros. (Also
> > >inconsistent if they're checked before any standard headers are
> > >included, which is unfixable.) I think it makes more sense to just add
> > >"-include stdc-predef.h" to the compiler specfile or equivalent if it
> > >doesn't auto-include it, so that you get behavior that actually
> > >matches the spec.
> >
> > Do you know if clang can use the specfile? That would make it worth
> > it adding the entry, since GCC has the expected behavior already.
>
> No; specfiles are highly tied to GCC's compiler driver architecture.
> clang might have some other equivalent mechanism though.
>
> Rich
>

[-- Attachment #2: Type: text/html, Size: 3813 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [musl] [PATCH 2/2] include <stdc-predef.h> in <features.h>
  2021-04-16 22:12         ` James Y Knight
@ 2021-04-17  0:00           ` Rich Felker
  2021-04-17  1:56             ` James Y Knight
  0 siblings, 1 reply; 8+ messages in thread
From: Rich Felker @ 2021-04-17  0:00 UTC (permalink / raw)
  To: James Y Knight; +Cc: musl, Érico Nogueira

On Fri, Apr 16, 2021 at 06:12:52PM -0400, James Y Knight wrote:
> Ugh, I thought Clang had added support for this years ago. But it looks
> like the change (https://reviews.llvm.org/D34158) never actually made it
> in; it ran into some test failures after being committed and was
> reverted, and then never reapplied. :(

The story of LLVM.. Random junk getting committed and kept, actually
important and correct changes getting reverted because of bogus tests.

Rich

> On Fri, Apr 16, 2021 at 2:51 PM Rich Felker <dalias@libc.org> wrote:
> 
> > On Fri, Apr 16, 2021 at 02:57:21PM -0300, Érico Nogueira wrote:
> > > Em 16/04/2021 11:26, Rich Felker escreveu:
> > > >On Thu, Apr 15, 2021 at 09:35:21PM -0300, Érico Nogueira wrote:
> > > >>GCC source code does contain a function to pre-include the
> > > >><stdc-predef.h> header for glibc targets, but even so glibc still
> > >
> > > I seem to have been mistaken about the feature being glibc specific;
> > using
> > >
> > >     echo "" | cc -xc - -E
> > >
> > > it seems the file does end up being included automatically.
> > >
> > > However, when using clang instead of gcc, it isn't included
> > > automatically. I don't know if this is something that clang ought to
> > > fix, is there some sort of standard about <stdc-predef.h>? Michael
> > > Forney's cproc compiler doesn't seem to touch it either.
> >
> > It's not a standard, but given that it's established I don't see any
> > reasonable argument for other compilers not to just do the same. You
> > can always fix them manually with CC="clang -include stdc-predef.h" or
> > similar though.
> >
> > > >>includes it in their own <features.h> header. furthermore, even if GCC
> > > >>implemented this for musl targets, it is still necessary for other
> > > >>compilers or previous versions of GCC.
> > > >>---
> > > >>  include/features.h | 2 ++
> > > >>  1 file changed, 2 insertions(+)
> > > >>
> > > >>diff --git a/include/features.h b/include/features.h
> > > >>index 85cfb72a..f3d53cbe 100644
> > > >>--- a/include/features.h
> > > >>+++ b/include/features.h
> > > >>@@ -1,6 +1,8 @@
> > > >>  #ifndef _FEATURES_H
> > > >>  #define _FEATURES_H
> > > >>+#include <stdc-predef.h>
> > > >>+
> > > >>  #if defined(_ALL_SOURCE) && !defined(_GNU_SOURCE)
> > > >>  #define _GNU_SOURCE 1
> > > >>  #endif
> > > >>--
> > > >>2.31.1
> > > >
> > > >I've hesitated to do this because features.h is not consistently
> > > >included from all standard headers (only if it's needed), and the
> > > >result would be inconsistent exposure of these macros. (Also
> > > >inconsistent if they're checked before any standard headers are
> > > >included, which is unfixable.) I think it makes more sense to just add
> > > >"-include stdc-predef.h" to the compiler specfile or equivalent if it
> > > >doesn't auto-include it, so that you get behavior that actually
> > > >matches the spec.
> > >
> > > Do you know if clang can use the specfile? That would make it worth
> > > it adding the entry, since GCC has the expected behavior already.
> >
> > No; specfiles are highly tied to GCC's compiler driver architecture.
> > clang might have some other equivalent mechanism though.
> >
> > Rich
> >

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: [musl] [PATCH 2/2] include <stdc-predef.h> in <features.h>
  2021-04-17  0:00           ` Rich Felker
@ 2021-04-17  1:56             ` James Y Knight
  0 siblings, 0 replies; 8+ messages in thread
From: James Y Knight @ 2021-04-17  1:56 UTC (permalink / raw)
  To: Rich Felker; +Cc: musl, Érico Nogueira

[-- Attachment #1: Type: text/plain, Size: 3523 bytes --]

Super unnecessary snarkiness.

On Fri, Apr 16, 2021, 8:00 PM Rich Felker <dalias@libc.org> wrote:

> On Fri, Apr 16, 2021 at 06:12:52PM -0400, James Y Knight wrote:
> > Ugh, I thought Clang had added support for this years ago. But it looks
> > like the change (https://reviews.llvm.org/D34158) never actually made it
> > in; it ran into some test failures after being committed and was
> > reverted, and then never reapplied. :(
>
> The story of LLVM.. Random junk getting committed and kept, actually
> important and correct changes getting reverted because of bogus tests.
>
> Rich
>
> > On Fri, Apr 16, 2021 at 2:51 PM Rich Felker <dalias@libc.org> wrote:
> >
> > > On Fri, Apr 16, 2021 at 02:57:21PM -0300, Érico Nogueira wrote:
> > > > Em 16/04/2021 11:26, Rich Felker escreveu:
> > > > >On Thu, Apr 15, 2021 at 09:35:21PM -0300, Érico Nogueira wrote:
> > > > >>GCC source code does contain a function to pre-include the
> > > > >><stdc-predef.h> header for glibc targets, but even so glibc still
> > > >
> > > > I seem to have been mistaken about the feature being glibc specific;
> > > using
> > > >
> > > >     echo "" | cc -xc - -E
> > > >
> > > > it seems the file does end up being included automatically.
> > > >
> > > > However, when using clang instead of gcc, it isn't included
> > > > automatically. I don't know if this is something that clang ought to
> > > > fix, is there some sort of standard about <stdc-predef.h>? Michael
> > > > Forney's cproc compiler doesn't seem to touch it either.
> > >
> > > It's not a standard, but given that it's established I don't see any
> > > reasonable argument for other compilers not to just do the same. You
> > > can always fix them manually with CC="clang -include stdc-predef.h" or
> > > similar though.
> > >
> > > > >>includes it in their own <features.h> header. furthermore, even if
> GCC
> > > > >>implemented this for musl targets, it is still necessary for other
> > > > >>compilers or previous versions of GCC.
> > > > >>---
> > > > >>  include/features.h | 2 ++
> > > > >>  1 file changed, 2 insertions(+)
> > > > >>
> > > > >>diff --git a/include/features.h b/include/features.h
> > > > >>index 85cfb72a..f3d53cbe 100644
> > > > >>--- a/include/features.h
> > > > >>+++ b/include/features.h
> > > > >>@@ -1,6 +1,8 @@
> > > > >>  #ifndef _FEATURES_H
> > > > >>  #define _FEATURES_H
> > > > >>+#include <stdc-predef.h>
> > > > >>+
> > > > >>  #if defined(_ALL_SOURCE) && !defined(_GNU_SOURCE)
> > > > >>  #define _GNU_SOURCE 1
> > > > >>  #endif
> > > > >>--
> > > > >>2.31.1
> > > > >
> > > > >I've hesitated to do this because features.h is not consistently
> > > > >included from all standard headers (only if it's needed), and the
> > > > >result would be inconsistent exposure of these macros. (Also
> > > > >inconsistent if they're checked before any standard headers are
> > > > >included, which is unfixable.) I think it makes more sense to just
> add
> > > > >"-include stdc-predef.h" to the compiler specfile or equivalent if
> it
> > > > >doesn't auto-include it, so that you get behavior that actually
> > > > >matches the spec.
> > > >
> > > > Do you know if clang can use the specfile? That would make it worth
> > > > it adding the entry, since GCC has the expected behavior already.
> > >
> > > No; specfiles are highly tied to GCC's compiler driver architecture.
> > > clang might have some other equivalent mechanism though.
> > >
> > > Rich
> > >
>

[-- Attachment #2: Type: text/html, Size: 4906 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-04-17  1:56 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-04-16  0:35 [musl] [PATCH 1/2] define __STDC_UTF_{16,32}__ macros Érico Nogueira
2021-04-16  0:35 ` [musl] [PATCH 2/2] include <stdc-predef.h> in <features.h> Érico Nogueira
2021-04-16 14:26   ` Rich Felker
2021-04-16 17:57     ` Érico Nogueira
2021-04-16 18:51       ` Rich Felker
2021-04-16 22:12         ` James Y Knight
2021-04-17  0:00           ` Rich Felker
2021-04-17  1:56             ` James Y Knight

mailing list of musl libc

This inbox may be cloned and mirrored by anyone:

	git clone --mirror http://inbox.vuxu.org/musl

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V1 musl musl/ http://inbox.vuxu.org/musl \
		musl@inbox.vuxu.org
	public-inbox-index musl

Example config snippet for mirrors.
Newsgroup available over NNTP:
	nntp://inbox.vuxu.org/vuxu.archive.musl


code repositories for the project(s) associated with this inbox:

	https://git.vuxu.org/mirror/musl/

AGPL code for this site: git clone https://public-inbox.org/public-inbox.git