mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-23 05:20:06 +00:00
* dlfcn/Makefile: Add rules to build and run bug-atexit3.
* dlfcn/bug-atexit3.c: New file. * dlfcn/bug-atexit3-lib.cc: New file.
This commit is contained in:
parent
3a975ff576
commit
6de1f62588
@ -1,5 +1,9 @@
|
|||||||
2006-07-26 Ulrich Drepper <drepper@redhat.com>
|
2006-07-26 Ulrich Drepper <drepper@redhat.com>
|
||||||
|
|
||||||
|
* dlfcn/Makefile: Add rules to build and run bug-atexit3.
|
||||||
|
* dlfcn/bug-atexit3.c: New file.
|
||||||
|
* dlfcn/bug-atexit3-lib.cc: New file.
|
||||||
|
|
||||||
* dlfcn/dlmopen.c (dlmopen_doit): Don't allow RTLD_GLOBAL to be
|
* dlfcn/dlmopen.c (dlmopen_doit): Don't allow RTLD_GLOBAL to be
|
||||||
used when the namespace is not the base namespace.
|
used when the namespace is not the base namespace.
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Copyright (C) 1995-2002, 2003, 2004, 2005 Free Software Foundation, Inc.
|
# Copyright (C) 1995-2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
|
||||||
# This file is part of the GNU C Library.
|
# This file is part of the GNU C Library.
|
||||||
|
|
||||||
# The GNU C Library is free software; you can redistribute it and/or
|
# The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -40,7 +40,8 @@ endif
|
|||||||
|
|
||||||
ifeq (yes,$(build-shared))
|
ifeq (yes,$(build-shared))
|
||||||
tests = glrefmain failtest tst-dladdr default errmsg1 tstcxaatexit \
|
tests = glrefmain failtest tst-dladdr default errmsg1 tstcxaatexit \
|
||||||
bug-dlopen1 bug-dlsym1 tst-dlinfo bug-atexit1 bug-atexit2
|
bug-dlopen1 bug-dlsym1 tst-dlinfo bug-atexit1 bug-atexit2 \
|
||||||
|
bug-atexit3
|
||||||
ifeq (yes,$(have-protected))
|
ifeq (yes,$(have-protected))
|
||||||
tests += tstatexit
|
tests += tstatexit
|
||||||
endif
|
endif
|
||||||
@ -48,7 +49,7 @@ endif
|
|||||||
modules-names = glreflib1 glreflib2 failtestmod defaultmod1 defaultmod2 \
|
modules-names = glreflib1 glreflib2 failtestmod defaultmod1 defaultmod2 \
|
||||||
errmsg1mod modatexit modcxaatexit \
|
errmsg1mod modatexit modcxaatexit \
|
||||||
bug-dlsym1-lib1 bug-dlsym1-lib2 bug-atexit1-lib \
|
bug-dlsym1-lib1 bug-dlsym1-lib2 bug-atexit1-lib \
|
||||||
bug-atexit2-lib
|
bug-atexit2-lib bug-atexit3-lib
|
||||||
|
|
||||||
failtestmod.so-no-z-defs = yes
|
failtestmod.so-no-z-defs = yes
|
||||||
glreflib2.so-no-z-defs = yes
|
glreflib2.so-no-z-defs = yes
|
||||||
@ -135,6 +136,12 @@ $(objpfx)bug-atexit2.out: $(objpfx)bug-atexit2-lib.so
|
|||||||
$(objpfx)bug-atexit2-lib.so: $(common-objpfx)libc.so \
|
$(objpfx)bug-atexit2-lib.so: $(common-objpfx)libc.so \
|
||||||
$(common-objpfx)libc_nonshared.a
|
$(common-objpfx)libc_nonshared.a
|
||||||
|
|
||||||
|
LDFLAGS-bug-atexit3-lib.so = -lstdc++
|
||||||
|
$(objpfx)bug-atexit3: $(libdl)
|
||||||
|
$(objpfx)bug-atexit3.out: $(objpfx)bug-atexit3-lib.so
|
||||||
|
$(objpfx)bug-atexit3-lib.so: $(common-objpfx)libc.so \
|
||||||
|
$(common-objpfx)libc_nonshared.a
|
||||||
|
|
||||||
|
|
||||||
# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
|
# Depend on libc.so so a DT_NEEDED is generated in the shared objects.
|
||||||
# This ensures they will load libc.so for needed symbols if loaded by
|
# This ensures they will load libc.so for needed symbols if loaded by
|
||||||
|
23
dlfcn/bug-atexit3-lib.cc
Normal file
23
dlfcn/bug-atexit3-lib.cc
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
struct statclass
|
||||||
|
{
|
||||||
|
statclass()
|
||||||
|
{
|
||||||
|
write (1, "statclass\n", 10);
|
||||||
|
}
|
||||||
|
~statclass()
|
||||||
|
{
|
||||||
|
write (1, "~statclass\n", 11);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
struct extclass
|
||||||
|
{
|
||||||
|
~extclass()
|
||||||
|
{
|
||||||
|
static statclass var;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
extclass globvar;
|
18
dlfcn/bug-atexit3.c
Normal file
18
dlfcn/bug-atexit3.c
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#include <dlfcn.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
static int
|
||||||
|
do_test (void)
|
||||||
|
{
|
||||||
|
void *handle = dlopen ("$ORIGIN/bug-atexit3-lib.so", RTLD_LAZY);
|
||||||
|
if (handle == NULL)
|
||||||
|
{
|
||||||
|
printf ("dlopen failed: %s\n", dlerror ());
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
dlclose (handle);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define TEST_FUNCTION do_test ()
|
||||||
|
#include "../test-skeleton.c"
|
Loading…
Reference in New Issue
Block a user