Index: gdb/testsuite/gdb.base/info-shared.c |
diff --git a/gdb/testsuite/gdb.cp/infcall-dlopen.cc b/gdb/testsuite/gdb.base/info-shared.c |
similarity index 59% |
copy from gdb/testsuite/gdb.cp/infcall-dlopen.cc |
copy to gdb/testsuite/gdb.base/info-shared.c |
index 024eb046c0dbd47a1e0015361f006961654e5376..194af22cb5d10267069a1841958fcf1238aa5af0 100644 |
--- a/gdb/testsuite/gdb.cp/infcall-dlopen.cc |
+++ b/gdb/testsuite/gdb.base/info-shared.c |
@@ -1,6 +1,4 @@ |
-/* This testcase is part of GDB, the GNU debugger. |
- |
- Copyright 2010-2012 Free Software Foundation, Inc. |
+/* Copyright 2012-2013 Free Software Foundation, Inc. |
This program is free software; you can redistribute it and/or modify |
it under the terms of the GNU General Public License as published by |
@@ -16,28 +14,39 @@ |
along with this program. If not, see <http://www.gnu.org/licenses/>. */ |
#include <dlfcn.h> |
+#include <assert.h> |
#include <stddef.h> |
-static int |
-openlib (const char *filename) |
+void |
+stop (void) |
{ |
- void *h = dlopen (filename, RTLD_LAZY); |
- |
- if (filename == NULL) |
- return 0; |
- |
- if (h == NULL) |
- return 0; |
- if (dlclose (h) != 0) |
- return 0; |
- return 1; |
} |
int |
main (void) |
{ |
- /* Dummy call to get the function always compiled in. */ |
- openlib (NULL); |
+ void *handle1, *handle2; |
+ void (*func)(int); |
+ |
+ handle1 = dlopen (SHLIB1_NAME, RTLD_LAZY); |
+ assert (handle1 != NULL); |
+ stop (); |
+ |
+ handle2 = dlopen (SHLIB2_NAME, RTLD_LAZY); |
+ assert (handle2 != NULL); |
+ stop (); |
+ |
+ func = (void (*)(int)) dlsym (handle1, "foo"); |
+ func (1); |
+ |
+ func = (void (*)(int)) dlsym (handle2, "bar"); |
+ func (2); |
+ |
+ dlclose (handle1); |
+ stop (); |
+ |
+ dlclose (handle2); |
+ stop (); |
return 0; |
} |