From d2129ad4570455d418b3ca34eeffd0505df088ea Mon Sep 17 00:00:00 2001 From: Samuel Thibault Date: Sun, 20 Mar 2016 17:56:47 +0100 Subject: [PATCH] hurd: Do not hide rtld symbols which need to be preempted * sysdeps/generic/dl-fcntl.h: New file, adds attribute_hidden to __open and __fcntl. * sysdeps/mach/hurd/dl-fcntl.h: New file, adds attribute_hidden to __fcntl only. * include/fcntl.h [IS_IN (rtld)]: Include instead of adding attribute_hidden to __open and __fcntl. --- ChangeLog | 9 +++++++++ include/fcntl.h | 3 +-- sysdeps/generic/dl-fcntl.h | 21 +++++++++++++++++++++ sysdeps/mach/hurd/dl-fcntl.h | 22 ++++++++++++++++++++++ 4 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 sysdeps/generic/dl-fcntl.h create mode 100644 sysdeps/mach/hurd/dl-fcntl.h diff --git a/ChangeLog b/ChangeLog index e1ec8e8cb0..db408c729e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2016-03-20 Samuel Thibault : + + * sysdeps/generic/dl-fcntl.h: New file, adds attribute_hidden to __open + and __fcntl. + * sysdeps/mach/hurd/dl-fcntl.h: New file, adds attribute_hidden to + __fcntl only. + * include/fcntl.h [IS_IN (rtld)]: Include instead of + adding attribute_hidden to __open and __fcntl. + 2016-03-20 Samuel Thibault * sysdeps/mach/hurd/Makefile ($(common-objpfx)errnos.d): Strip diff --git a/include/fcntl.h b/include/fcntl.h index 4168ee429f..3b2c887146 100644 --- a/include/fcntl.h +++ b/include/fcntl.h @@ -31,8 +31,7 @@ extern int __openat64_2 (int __fd, const char *__path, int __oflag); #if IS_IN (rtld) -extern __typeof (__open) __open attribute_hidden; -extern __typeof (__fcntl) __fcntl attribute_hidden; +# include #endif /* Flag determining whether the *at system calls are available. */ diff --git a/sysdeps/generic/dl-fcntl.h b/sysdeps/generic/dl-fcntl.h new file mode 100644 index 0000000000..ee3c49c203 --- /dev/null +++ b/sysdeps/generic/dl-fcntl.h @@ -0,0 +1,21 @@ +/* Functions with hidden attribute internal to ld.so, which are declared + in include/fcntl.h. Generic version. + Copyright (C) 2016 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +extern __typeof (__open) __open attribute_hidden; +extern __typeof (__fcntl) __fcntl attribute_hidden; diff --git a/sysdeps/mach/hurd/dl-fcntl.h b/sysdeps/mach/hurd/dl-fcntl.h new file mode 100644 index 0000000000..c34bf12eb1 --- /dev/null +++ b/sysdeps/mach/hurd/dl-fcntl.h @@ -0,0 +1,22 @@ +/* Functions with hidden attribute internal to ld.so, which are declared + in include/fcntl.h. Hurd version. + Copyright (C) 2016 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + . */ + +/* __open can't be hidden in ld.so on Hurd since it will be preempted by the + one in libc.so after bootstrap. */ +extern __typeof (__fcntl) __fcntl attribute_hidden;