This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH 1/3] Mark __libc_multiple_libcs with attribute_hidden [BZ #18822]
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: Florian Weimer <fw at deneb dot enyo dot de>
- Cc: GNU C Library <libc-alpha at sourceware dot org>
- Date: Sun, 20 Aug 2017 07:12:35 -0700
- Subject: Re: [PATCH 1/3] Mark __libc_multiple_libcs with attribute_hidden [BZ #18822]
- Authentication-results: sourceware.org; auth=none
- References: <20170818203021.GA15188@gmail.com> <87mv6uoes1.fsf@mid.deneb.enyo.de>
On Sun, Aug 20, 2017 at 09:54:22AM +0200, Florian Weimer wrote:
> * H. J. Lu:
>
> > [BZ #18822]
> > * csu/libc-start.c (__libc_multiple_libcs): Add attribute_hidden.
> > * elf/dl-open.c (__libc_multiple_libcs): Likewise.
>
> Please put a hidden declaration into a header file instead.
Done. Here is the updated patch. OK for master?
H.J.
---
Since __libc_multiple_libcs is defined as hidden symbol in init-first.c,
it should be always marked with attribute_hidden.
[BZ #18822]
* csu/libc-start.c (__libc_multiple_libcs): Removed.
* elf/dl-open.c: Include <libc-internal.h>.
(__libc_multiple_libcs): Removed.
* elf/dl-sysdep.c: Include <libc-internal.h> instead of
<hp-timing.h>.
* include/libc-internal.h (__libc_multiple_libcs): New.
* misc/sbrk.c: Include <libc-internal.h>.
(__libc_multiple_libcs): Removed.
---
csu/libc-start.c | 2 --
elf/dl-open.c | 3 +--
elf/dl-sysdep.c | 2 +-
include/libc-internal.h | 4 ++++
misc/sbrk.c | 4 +---
5 files changed, 7 insertions(+), 8 deletions(-)
diff --git a/csu/libc-start.c b/csu/libc-start.c
index 6720617188..24c63be02f 100644
--- a/csu/libc-start.c
+++ b/csu/libc-start.c
@@ -27,8 +27,6 @@
extern void __libc_init_first (int argc, char **argv, char **envp);
-extern int __libc_multiple_libcs;
-
#include <tls.h>
#ifndef SHARED
# include <dl-osinfo.h>
diff --git a/elf/dl-open.c b/elf/dl-open.c
index 2d8948aab1..c539f10cf3 100644
--- a/elf/dl-open.c
+++ b/elf/dl-open.c
@@ -33,12 +33,11 @@
#include <tls.h>
#include <stap-probe.h>
#include <atomic.h>
+#include <libc-internal.h>
#include <dl-dst.h>
-extern int __libc_multiple_libcs; /* Defined in init-first.c. */
-
/* We must be careful not to leave us in an inconsistent state. Thus we
catch any error and re-raise it after cleaning up. */
diff --git a/elf/dl-sysdep.c b/elf/dl-sysdep.c
index 4053ff3c07..c4ff8b2937 100644
--- a/elf/dl-sysdep.c
+++ b/elf/dl-sysdep.c
@@ -41,7 +41,7 @@
#include <dl-machine.h>
#include <dl-procinfo.h>
#include <dl-osinfo.h>
-#include <hp-timing.h>
+#include <libc-internal.h>
#include <tls.h>
#include <dl-tunables.h>
diff --git a/include/libc-internal.h b/include/libc-internal.h
index cd2f2622ed..252d7d80c3 100644
--- a/include/libc-internal.h
+++ b/include/libc-internal.h
@@ -53,4 +53,8 @@ extern void __init_misc (int, char **, char **);
extern __typeof (__profile_frequency) __profile_frequency attribute_hidden;
# endif
+/* Set nonzero if we have to be prepared for more than one libc being
+ used in the process. */
+extern int __libc_multiple_libcs attribute_hidden;
+
#endif /* _LIBC_INTERNAL */
diff --git a/misc/sbrk.c b/misc/sbrk.c
index 965c0ef879..158399d2ed 100644
--- a/misc/sbrk.c
+++ b/misc/sbrk.c
@@ -18,14 +18,12 @@
#include <errno.h>
#include <stdint.h>
#include <unistd.h>
+#include <libc-internal.h>
/* Defined in brk.c. */
extern void *__curbrk;
extern int __brk (void *addr);
-/* Defined in init-first.c. */
-extern int __libc_multiple_libcs attribute_hidden;
-
/* Extend the process's data space by INCREMENT.
If INCREMENT is negative, shrink data space by - INCREMENT.
Return start of new space allocated, or -1 for errors. */
--
2.13.5