From 19cf43bed69d9952c39391f42f22114afb3a0d3f Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Fri, 17 Mar 2000 02:17:59 +0000 Subject: Update. 2000-03-16 Ulrich Drepper * elf/Makefile: Add rules to compile and rune constload1 test. * elf/constload1.c: New file. * elf/constload2.c: New file. * elf/constload3.c: New file. --- elf/Makefile | 10 +++++++--- elf/constload1.c | 20 ++++++++++++++++++++ elf/constload2.c | 24 ++++++++++++++++++++++++ elf/constload3.c | 7 +++++++ 4 files changed, 58 insertions(+), 3 deletions(-) create mode 100644 elf/constload1.c create mode 100644 elf/constload2.c create mode 100644 elf/constload3.c (limited to 'elf') diff --git a/elf/Makefile b/elf/Makefile index b262418..1244e23 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -1,4 +1,4 @@ -# Copyright (C) 1995, 1996, 1997, 1998, 1999 Free Software Foundation, Inc. +# Copyright (C) 1995-1999, 2000 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 @@ -79,10 +79,11 @@ vpath %.c ../locale/programs endif ifeq (yes,$(build-shared)) -tests = loadtest restest1 preloadtest loadfail multiload origtest resolvfail +tests = loadtest restest1 preloadtest loadfail multiload origtest resolvfail \ + constload1 endif modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \ - testobj1_1 failobj + testobj1_1 failobj constload2 constload3 extra-objs += $(modules-names:=.os) include ../Rules @@ -251,3 +252,6 @@ $(objpfx)resolvfail: $(libdl) $(shared-thread-library) else $(objpfx)resolvfail: $(libdl) endif + +$(objpfx)constload1: $(libdl) +$(objpfx)constload1.out: $(objpfx)constload2.so $(objpfx)constload3.so diff --git a/elf/constload1.c b/elf/constload1.c new file mode 100644 index 0000000..1435284 --- /dev/null +++ b/elf/constload1.c @@ -0,0 +1,20 @@ +#include +#include +#include +#include + +int +main (void) +{ + int (*foo) (void); + void *h; + int ret; + + h = dlopen ("constload2.so", RTLD_LAZY | RTLD_GLOBAL); + if (h == NULL) + error (EXIT_FAILURE, errno, "cannot load module \"constload2.so\""); + foo = dlsym (h, "foo"); + ret = foo (); + dlclose (h); + return ret; +} diff --git a/elf/constload2.c b/elf/constload2.c new file mode 100644 index 0000000..f109838 --- /dev/null +++ b/elf/constload2.c @@ -0,0 +1,24 @@ +#include + +extern int bar (void); + +void *h; + +int +foo (void) +{ + return 42 + bar (); +} + +int +baz (void) +{ + return -21; +} + +void +__attribute__ ((__constructor__)) +init (void) +{ + h = dlopen ("constload3.so", RTLD_GLOBAL | RTLD_LAZY); +} diff --git a/elf/constload3.c b/elf/constload3.c new file mode 100644 index 0000000..c9f94b8 --- /dev/null +++ b/elf/constload3.c @@ -0,0 +1,7 @@ +extern int baz (void); + +int +bar (void) +{ + return -21 + baz (); +} -- cgit v1.1