[RFC] * bits/confname.h: Define _CS_POSIX_V7_THREADS_CFLAGS, _CS_POSIX_V7_THREADS_LDFLAGS

Message ID 20201026233303.16034-1-ericonr@disroot.org
State Changes Requested, archived
Headers
Series [RFC] * bits/confname.h: Define _CS_POSIX_V7_THREADS_CFLAGS, _CS_POSIX_V7_THREADS_LDFLAGS |

Commit Message

Érico Nogueira Oct. 26, 2020, 11:33 p.m. UTC
  From: Érico Rolim <ericonr@disroot.org>

I would like to add these enums in order to conform to the POSIX
specification: https://www.man7.org/linux/man-pages/man0/unistd.h.0p.html

This change also helps musl-libc, since they want to have these defines
with the same values as glibc.

I tried to add them for the bits/confname.h and
conform/data/unistd.h-data files following the example of the other
values, but didn't know how to plug them into the confstr / __sysconf
implementations.
 
 bits/confname.h            | 7 ++++++-
 conform/data/unistd.h-data | 2 ++
 2 files changed, 8 insertions(+), 1 deletion(-)
  

Comments

Siddhesh Poyarekar Dec. 21, 2020, 5:26 a.m. UTC | #1
On 10/27/20 5:03 AM, Érico Nogueira via Libc-alpha wrote:
> From: Érico Rolim <ericonr@disroot.org>
> 
> I would like to add these enums in order to conform to the POSIX
> specification: https://www.man7.org/linux/man-pages/man0/unistd.h.0p.html
> 
> This change also helps musl-libc, since they want to have these defines
> with the same values as glibc.
> 
> I tried to add them for the bits/confname.h and
> conform/data/unistd.h-data files following the example of the other
> values, but didn't know how to plug them into the confstr / __sysconf
> implementations.

It's been a while since I touched this code, but IIRC you need to add 
your new variables to posix/posix-conf-vars.list.

That said, could you please let me know if you have a copyright 
assignment agreement with the FSF?  I suppose this change may be OK 
given that it is under 20 lines but one of the stewards could confirm 
for sure.

Thanks,
Siddhesh

>   
>   bits/confname.h            | 7 ++++++-
>   conform/data/unistd.h-data | 2 ++
>   2 files changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/bits/confname.h b/bits/confname.h
> index 5dc8215093..fdc5403697 100644
> --- a/bits/confname.h
> +++ b/bits/confname.h
> @@ -670,6 +670,11 @@ enum
>   
>       _CS_V6_ENV,
>   #define _CS_V6_ENV			_CS_V6_ENV
> -    _CS_V7_ENV
> +    _CS_V7_ENV,
>   #define _CS_V7_ENV			_CS_V7_ENV
> +
> +    _CS_POSIX_V7_THREADS_CFLAGS,
> +#define _CS_POSIX_V7_THREADS_CFLAGS _CS_POSIX_V7_THREADS_CFLAGS
> +    _CS_POSIX_V7_THREADS_LDFLAGS
> +#define _CS_POSIX_V7_THREADS_LDFLAGS _CS_POSIX_V7_THREADS_LDFLAGS
>     };
> diff --git a/conform/data/unistd.h-data b/conform/data/unistd.h-data
> index aa070528e8..6c4b52a733 100644
> --- a/conform/data/unistd.h-data
> +++ b/conform/data/unistd.h-data
> @@ -367,6 +367,8 @@ constant _CS_POSIX_V7_LP64_OFF64_LIBS
>   constant _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS
>   constant _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS
>   constant _CS_POSIX_V7_LPBIG_OFFBIG_LIBS
> +constant _CS_POSIX_V7_THREADS_CFLAGS
> +constant _CS_POSIX_V7_THREADS_LDFLAGS
>   constant _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS
>   constant _CS_V7_ENV
>   # endif
>
  
Adhemerval Zanella Netto March 8, 2022, 4:29 p.m. UTC | #2
On 26/10/2020 20:33, Érico Nogueira via Libc-alpha wrote:
> From: Érico Rolim <ericonr@disroot.org>
> 
> I would like to add these enums in order to conform to the POSIX
> specification: https://www.man7.org/linux/man-pages/man0/unistd.h.0p.html
> 
> This change also helps musl-libc, since they want to have these defines
> with the same values as glibc.
> 
> I tried to add them for the bits/confname.h and
> conform/data/unistd.h-data files following the example of the other
> values, but didn't know how to plug them into the confstr / __sysconf
> implementations.

I think since we do not export _SC_POSIX_THREADS and now that libpthread
symbols were all moved to libc, there is no need return the libpthread
for LDFLAGS.  However it requires to be handled on confstr and getconf:

diff --git a/posix/confstr.c b/posix/confstr.c
index 6e3c264462..95fb0f6abc 100644
--- a/posix/confstr.c
+++ b/posix/confstr.c
@@ -249,6 +249,11 @@ __confstr (int name, char *buf, size_t len)
       /* GNU libc does not require special actions to use LFS functions.  */
       break;
 
+    case _CS_POSIX_V7_THREADS_CFLAGS:
+    case _CS_POSIX_V7_THREADS_LDFLAGS:
+      /* GNU libc does not require special actions to use thread functions.  */
+      break;
+
     case _CS_GNU_LIBC_VERSION:
       string = "glibc " VERSION;
       string_len = sizeof ("glibc " VERSION);
diff --git a/posix/getconf.c b/posix/getconf.c
index a1adbc4b50..6a5363ad49 100644
--- a/posix/getconf.c
+++ b/posix/getconf.c
@@ -310,6 +310,8 @@ static const struct conf vars[] =
     { "POSIX_V7_LPBIG_OFFBIG_LDFLAGS", _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS, CONFSTR },
     { "POSIX_V7_LPBIG_OFFBIG_LIBS", _CS_POSIX_V7_LPBIG_OFFBIG_LIBS, CONFSTR },
     { "POSIX_V7_LPBIG_OFFBIG_LINTFLAGS", _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS, CONFSTR },
+    { "POSIX_V7_THREADS_CFLAGS", _CS_POSIX_V7_THREADS_CFLAGS, CONFSTR },
+    { "POSIX_V7_THREADS_LDFLAGS", _CS_POSIX_V7_THREADS_LDFLAGS, CONFSTR },
 
     { "_POSIX_ADVISORY_INFO", _SC_ADVISORY_INFO, SYSCONF },
     { "_POSIX_BARRIERS", _SC_BARRIERS, SYSCONF },

Also now that we do not require a copyright assignment, you just need to add 
a sign-off on the email submission.

>  
>  bits/confname.h            | 7 ++++++-
>  conform/data/unistd.h-data | 2 ++
>  2 files changed, 8 insertions(+), 1 deletion(-)
> 
> diff --git a/bits/confname.h b/bits/confname.h
> index 5dc8215093..fdc5403697 100644
> --- a/bits/confname.h
> +++ b/bits/confname.h
> @@ -670,6 +670,11 @@ enum
>  
>      _CS_V6_ENV,
>  #define _CS_V6_ENV			_CS_V6_ENV
> -    _CS_V7_ENV
> +    _CS_V7_ENV,
>  #define _CS_V7_ENV			_CS_V7_ENV
> +
> +    _CS_POSIX_V7_THREADS_CFLAGS,
> +#define _CS_POSIX_V7_THREADS_CFLAGS _CS_POSIX_V7_THREADS_CFLAGS
> +    _CS_POSIX_V7_THREADS_LDFLAGS
> +#define _CS_POSIX_V7_THREADS_LDFLAGS _CS_POSIX_V7_THREADS_LDFLAGS
>    };
> diff --git a/conform/data/unistd.h-data b/conform/data/unistd.h-data
> index aa070528e8..6c4b52a733 100644
> --- a/conform/data/unistd.h-data
> +++ b/conform/data/unistd.h-data
> @@ -367,6 +367,8 @@ constant _CS_POSIX_V7_LP64_OFF64_LIBS
>  constant _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS
>  constant _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS
>  constant _CS_POSIX_V7_LPBIG_OFFBIG_LIBS
> +constant _CS_POSIX_V7_THREADS_CFLAGS
> +constant _CS_POSIX_V7_THREADS_LDFLAGS
>  constant _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS
>  constant _CS_V7_ENV
>  # endif
  
Adhemerval Zanella Netto March 8, 2022, 4:31 p.m. UTC | #3
On 08/03/2022 13:29, Adhemerval Zanella wrote:
> 
> 
> On 26/10/2020 20:33, Érico Nogueira via Libc-alpha wrote:
>> From: Érico Rolim <ericonr@disroot.org>
>>
>> I would like to add these enums in order to conform to the POSIX
>> specification: https://www.man7.org/linux/man-pages/man0/unistd.h.0p.html
>>
>> This change also helps musl-libc, since they want to have these defines
>> with the same values as glibc.
>>
>> I tried to add them for the bits/confname.h and
>> conform/data/unistd.h-data files following the example of the other
>> values, but didn't know how to plug them into the confstr / __sysconf
>> implementations.
> 
> I think since we do not export _SC_POSIX_THREADS and now that libpthread
> symbols were all moved to libc, there is no need return the libpthread
> for LDFLAGS.  However it requires to be handled on confstr and getconf:
> 
> diff --git a/posix/confstr.c b/posix/confstr.c
> index 6e3c264462..95fb0f6abc 100644
> --- a/posix/confstr.c
> +++ b/posix/confstr.c
> @@ -249,6 +249,11 @@ __confstr (int name, char *buf, size_t len)
>        /* GNU libc does not require special actions to use LFS functions.  */
>        break;
>  
> +    case _CS_POSIX_V7_THREADS_CFLAGS:
> +    case _CS_POSIX_V7_THREADS_LDFLAGS:
> +      /* GNU libc does not require special actions to use thread functions.  */
> +      break;
> +
>      case _CS_GNU_LIBC_VERSION:
>        string = "glibc " VERSION;
>        string_len = sizeof ("glibc " VERSION);
> diff --git a/posix/getconf.c b/posix/getconf.c
> index a1adbc4b50..6a5363ad49 100644
> --- a/posix/getconf.c
> +++ b/posix/getconf.c
> @@ -310,6 +310,8 @@ static const struct conf vars[] =
>      { "POSIX_V7_LPBIG_OFFBIG_LDFLAGS", _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS, CONFSTR },
>      { "POSIX_V7_LPBIG_OFFBIG_LIBS", _CS_POSIX_V7_LPBIG_OFFBIG_LIBS, CONFSTR },
>      { "POSIX_V7_LPBIG_OFFBIG_LINTFLAGS", _CS_POSIX_V7_LPBIG_OFFBIG_LINTFLAGS, CONFSTR },
> +    { "POSIX_V7_THREADS_CFLAGS", _CS_POSIX_V7_THREADS_CFLAGS, CONFSTR },
> +    { "POSIX_V7_THREADS_LDFLAGS", _CS_POSIX_V7_THREADS_LDFLAGS, CONFSTR },
>  
>      { "_POSIX_ADVISORY_INFO", _SC_ADVISORY_INFO, SYSCONF },
>      { "_POSIX_BARRIERS", _SC_BARRIERS, SYSCONF },
> 
> Also now that we do not require a copyright assignment, you just need to add 
> a sign-off on the email submission.
> 

Also, reference the BZ#25003 [1] on title.

https://sourceware.org/bugzilla/show_bug.cgi?id=25003
  

Patch

diff --git a/bits/confname.h b/bits/confname.h
index 5dc8215093..fdc5403697 100644
--- a/bits/confname.h
+++ b/bits/confname.h
@@ -670,6 +670,11 @@  enum
 
     _CS_V6_ENV,
 #define _CS_V6_ENV			_CS_V6_ENV
-    _CS_V7_ENV
+    _CS_V7_ENV,
 #define _CS_V7_ENV			_CS_V7_ENV
+
+    _CS_POSIX_V7_THREADS_CFLAGS,
+#define _CS_POSIX_V7_THREADS_CFLAGS _CS_POSIX_V7_THREADS_CFLAGS
+    _CS_POSIX_V7_THREADS_LDFLAGS
+#define _CS_POSIX_V7_THREADS_LDFLAGS _CS_POSIX_V7_THREADS_LDFLAGS
   };
diff --git a/conform/data/unistd.h-data b/conform/data/unistd.h-data
index aa070528e8..6c4b52a733 100644
--- a/conform/data/unistd.h-data
+++ b/conform/data/unistd.h-data
@@ -367,6 +367,8 @@  constant _CS_POSIX_V7_LP64_OFF64_LIBS
 constant _CS_POSIX_V7_LPBIG_OFFBIG_CFLAGS
 constant _CS_POSIX_V7_LPBIG_OFFBIG_LDFLAGS
 constant _CS_POSIX_V7_LPBIG_OFFBIG_LIBS
+constant _CS_POSIX_V7_THREADS_CFLAGS
+constant _CS_POSIX_V7_THREADS_LDFLAGS
 constant _CS_POSIX_V7_WIDTH_RESTRICTED_ENVS
 constant _CS_V7_ENV
 # endif