From 84ae135d3282dc362bed0a5c9a575319ef336884 Mon Sep 17 00:00:00 2001 From: Meador Inge Date: Thu, 21 Nov 2013 16:57:37 -0500 Subject: [PATCH] Use __glibc_block in public headers. As detailed in PR11157, the use of '__block' is known to interfere with keywords in some environments, such as the Clang -fblocks extension. Recently a similar issue was raised concerning the use of '__unused' and a '__glibc' prefix was proposed to create a glibc implementation namespace for these sorts of issues [1]. This patches takes that approach. [1] https://sourceware.org/ml/libc-alpha/2012-02/msg00047.html [2] http://lists.debian.org/debian-glibc/2013/11/msg00020.html --- ChangeLog | 8 ++++++++ NEWS | 22 +++++++++++----------- crypt/crypt.h | 5 +++-- malloc/obstack.h | 2 +- posix/unistd.h | 3 ++- 5 files changed, 25 insertions(+), 15 deletions(-) diff --git a/ChangeLog b/ChangeLog index a6a21a2bcf..6f8a0215cc 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2013-11-21 Meador Inge + + [BZ #11157] + * crypt/crypt.h (encrypt): Use __glibc_block instead of __block. + (encrypt_r): Likewise. + * malloc/obstack.h (obstack_free): Likewise. + * posix/unistd.h (encrypt): Likewise. + 2013-11-21 Guy Martin * sysdeps/generic/ldsodefs.h: Replace DL_DT_INIT_ADDRESS() and diff --git a/NEWS b/NEWS index f9837a66d6..0f70fc1be0 100644 --- a/NEWS +++ b/NEWS @@ -9,17 +9,17 @@ Version 2.19 * The following bugs are resolved with this release: - 156, 387, 431, 832, 2801, 7003, 9954, 10253, 10278, 11087, 13028, 13982, - 13985, 14029, 14143, 14155, 14547, 14699, 14752, 14876, 14910, 15048, - 15218, 15277, 15308, 15362, 15374, 15400, 15427, 15483, 15522, 15531, - 15532, 15601, 15608, 15609, 15610, 15632, 15640, 15670, 15672, 15680, - 15681, 15723, 15734, 15735, 15736, 15748, 15749, 15754, 15760, 15763, - 15764, 15797, 15799, 15825, 15844, 15847, 15849, 15855, 15856, 15857, - 15859, 15867, 15886, 15887, 15890, 15892, 15893, 15895, 15897, 15905, - 15909, 15917, 15919, 15921, 15923, 15939, 15948, 15963, 15966, 15985, - 15988, 15997, 16032, 16034, 16036, 16037, 16041, 16055, 16071, 16072, - 16074, 16078, 16103, 16112, 16143, 16144, 16146, 16150, 16151, 16153, - 16167, 16172. + 156, 387, 431, 832, 2801, 7003, 9954, 11157, 10253, 10278, 11087, 13028, + 13982, 13985, 14029, 14143, 14155, 14547, 14699, 14752, 14876, 14910, + 15048, 15218, 15277, 15308, 15362, 15374, 15400, 15427, 15483, 15522, + 15531, 15532, 15601, 15608, 15609, 15610, 15632, 15640, 15670, 15672, + 15680, 15681, 15723, 15734, 15735, 15736, 15748, 15749, 15754, 15760, + 15763, 15764, 15797, 15799, 15825, 15844, 15847, 15849, 15855, 15856, + 15857, 15859, 15867, 15886, 15887, 15890, 15892, 15893, 15895, 15897, + 15905, 15909, 15917, 15919, 15921, 15923, 15939, 15948, 15963, 15966, + 15985, 15988, 15997, 16032, 16034, 16036, 16037, 16041, 16055, 16071, + 16072, 16074, 16078, 16103, 16112, 16143, 16144, 16146, 16150, 16151, + 16153, 16167, 16172. * CVE-2012-4412 The strcoll implementation caches indices and rules for large collation sequences to optimize multiple passes. This cache diff --git a/crypt/crypt.h b/crypt/crypt.h index 985720bfd1..e0d37b5959 100644 --- a/crypt/crypt.h +++ b/crypt/crypt.h @@ -37,7 +37,8 @@ extern void setkey (const char *__key) __THROW __nonnull ((1)); /* Encrypt data in BLOCK in place if EDFLAG is zero; otherwise decrypt block in place. */ -extern void encrypt (char *__block, int __edflag) __THROW __nonnull ((1)); +extern void encrypt (char *__glibc_block, int __edflag) + __THROW __nonnull ((1)); #ifdef __USE_GNU /* Reentrant versions of the functions above. The additional argument @@ -64,7 +65,7 @@ extern void setkey_r (const char *__key, struct crypt_data * __restrict __data) __THROW __nonnull ((1, 2)); -extern void encrypt_r (char *__block, int __edflag, +extern void encrypt_r (char *__glibc_block, int __edflag, struct crypt_data * __restrict __data) __THROW __nonnull ((1, 3)); #endif diff --git a/malloc/obstack.h b/malloc/obstack.h index d2e056bf38..e786d1fef0 100644 --- a/malloc/obstack.h +++ b/malloc/obstack.h @@ -185,7 +185,7 @@ extern int _obstack_begin_1 (struct obstack *, int, int, void (*) (void *, void *), void *); extern int _obstack_memory_used (struct obstack *); -void obstack_free (struct obstack *__obstack, void *__block); +void obstack_free (struct obstack *__obstack, void *__glibc_block); /* Error handler called when `obstack_chunk_alloc' failed to allocate diff --git a/posix/unistd.h b/posix/unistd.h index 178223d755..d4eeaf1433 100644 --- a/posix/unistd.h +++ b/posix/unistd.h @@ -1144,7 +1144,8 @@ extern char *crypt (const char *__key, const char *__salt) /* Encrypt data in BLOCK in place if EDFLAG is zero; otherwise decrypt block in place. */ -extern void encrypt (char *__block, int __edflag) __THROW __nonnull ((1)); +extern void encrypt (char *__glibc_block, int __edflag) + __THROW __nonnull ((1)); /* Swab pairs bytes in the first N bytes of the area pointed to by