libc: Do not refer to _DefaultRuneLocale in ctype inlines

Referring to _DefaultRuneLocale causes this >4KB structure to be copied to
all executables that use <ctype.h> inlines (except PIE executables).

This only affects the case where thread local storage is available.

_CurrentRuneLocale cannot be NULL, so the check can be removed entirely.

_DefaultRuneLocale needs to remain available for now since libc++ uses it.
The __isctype inline in include/_ctype.h also refers to _DefaultRuneLocale
and remains available because it may still be used by third party software.

Reviewed by:	bdrewery, theraven
Differential Revision:	https://reviews.freebsd.org/D10363
This commit is contained in:
jilles 2017-10-22 20:01:07 +00:00
parent 4abe1e1eaa
commit f22cf85ee1

View File

@ -95,9 +95,7 @@ static __inline const _RuneLocale *__getCurrentRuneLocale(void)
if (_ThreadRuneLocale)
return _ThreadRuneLocale;
if (_CurrentRuneLocale)
return _CurrentRuneLocale;
return &_DefaultRuneLocale;
return _CurrentRuneLocale;
}
#endif /* __NO_TLS || __RUNETYPE_INTERNAL */
#define _CurrentRuneLocale (__getCurrentRuneLocale())