1
0
mirror of https://sourceware.org/git/glibc.git synced 2025-08-08 17:42:12 +03:00

[BZ #15897] dlfcn: do not mark dlopen/dlclose as leaf functions

Since the dlopen funcs might invoke a constructor that calls a func
that is in the same compilation unit as the caller, we cannot mark
them as leaf funcs.

Similarly, dlclose might invoke a destructor that calls a func that
is in the same compilation unit as the caller.

URL: https://sourceware.org/bugzilla/show_bug.cgi?id=15897
Reportedy-by: Fabrice Bauzac <libnoon@gmail.com>
Signed-off-by: Mike Frysinger <vapier@gentoo.org>
This commit is contained in:
Mike Frysinger
2013-08-26 00:21:26 -04:00
parent 7f9d003410
commit 3b813b2965
7 changed files with 160 additions and 6 deletions

25
dlfcn/bug-dl-leaf.c Normal file
View File

@@ -0,0 +1,25 @@
/* Make sure dlopen/dlclose are not marked as leaf functions.
See bug-dl-leaf-lib.c for details.
Copyright (C) 2013 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Mike Frysinger <vapier@gentoo.org>
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
<http://www.gnu.org/licenses/>. */
#define TEST_FUNCTION lib_main ()
extern int lib_main (void);
#include "../test-skeleton.c"