diff options
Diffstat (limited to 'gdb/testsuite/gdb.base/print-file-var-main.c')
-rw-r--r-- | gdb/testsuite/gdb.base/print-file-var-main.c | 42 |
1 files changed, 35 insertions, 7 deletions
diff --git a/gdb/testsuite/gdb.base/print-file-var-main.c b/gdb/testsuite/gdb.base/print-file-var-main.c index ddc54f1..1472bd4 100644 --- a/gdb/testsuite/gdb.base/print-file-var-main.c +++ b/gdb/testsuite/gdb.base/print-file-var-main.c @@ -14,21 +14,49 @@ You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#ifdef SHLIB_NAME +# include <dlfcn.h> +#endif + +#include <assert.h> +#include <stddef.h> + +#include "print-file-var.h" + +START_EXTERN_C + extern int get_version_1 (void); extern int get_version_2 (void); +END_EXTERN_C + +#if VERSION_ID_MAIN +ATTRIBUTE_VISIBILITY int this_version_id = 55; +#endif + int main (void) { +#if VERSION_ID_MAIN + int vm = this_version_id; +#endif int v1 = get_version_1 (); - int v2 = get_version_2 (); + int v2; + +#ifdef SHLIB_NAME + { + void *handle = dlopen (SHLIB_NAME, RTLD_LAZY); + int (*getver2) (void); + + assert (handle != NULL); - if (v1 != 104) - return 1; - /* The value returned by get_version_2 depends on the target system. */ - if (v2 != 104 && v2 != 203) - return 2; + getver2 = (int (*)(void)) dlsym (handle, "get_version_2"); + + v2 = getver2 (); + } +#else + v2 = get_version_2 (); +#endif return 0; /* STOP */ } - |