[PATCH 05/10] Remove __need macros from errno.h (__need_Emath, __need_error_t).

Florian Weimer fweimer@redhat.com
Wed May 10 07:31:00 GMT 2017


On 05/09/2017 11:38 PM, Joseph Myers wrote:
> On Tue, 9 May 2017, Zack Weinberg wrote:
> 
>> diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h
>> index 74f9a49b05..075c996f28 100644
>> --- a/misc/sys/cdefs.h
>> +++ b/misc/sys/cdefs.h
>> @@ -326,6 +326,13 @@
>>   # define __attribute_artificial__ /* Ignore */
>>   #endif
>>   
>> +/* Force use of the initial-exec TLS model.  */
>> +#if __GNUC_PREREQ (3,3)
>> +# define __attribute_tls_model_ie__ __attribute__ ((tls_model ("initial-exec")))
> 
> This is not namespace-clean for an installed header (needs to be
> __tls_model__).

The larger problem is that we need to error out if __GLIBC_USE 
(TLS_ERRNO) and the compiler does not support the initial-exec TLS model 
because it cannot produce the required ABI for the errno symbol.

In my opinion, we could just decide that the NaCl port, if resurrected, 
needs to implement __errno_location like the other ports.  Then you 
could drop the __GLIBC_USE (TLS_ERRNO) logic entirely, and you don't 
need __attribute_tls_model_ie__, either.

Thanks,
Florian



More information about the Libc-alpha mailing list