mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-09 23:00:07 +00:00
Update.
* elf/restest1.c: New file. Symbol resolution test. * elf/testobj1_1.c: New file. Module used in this test. * elf/Makefile: Add rules for restest1 generation and execution.
This commit is contained in:
parent
df4d289887
commit
6bd0638460
@ -1,5 +1,9 @@
|
||||
1999-01-19 Ulrich Drepper <drepper@cygnus.com>
|
||||
|
||||
* elf/restest1.c: New file. Symbol resolution test.
|
||||
* elf/testobj1_1.c: New file. Module used in this test.
|
||||
* elf/Makefile: Add rules for restest1 generation and execution.
|
||||
|
||||
* elf/dl-object.c (_dl_new_object): l_local_scope really gets
|
||||
assigned the local scope.
|
||||
|
||||
|
11
elf/Makefile
11
elf/Makefile
@ -75,7 +75,7 @@ others += ldconfig
|
||||
install-rootsbin += ldconfig
|
||||
endif
|
||||
|
||||
tests = loadtest
|
||||
tests = loadtest restest1
|
||||
|
||||
include ../Rules
|
||||
|
||||
@ -214,10 +214,12 @@ $(LINK.o) -shared -o $@ $(sysdep-LDFLAGS) $(config-LDFLAGS) \
|
||||
$(no-whole-archive) $(LDLIBS-$(@F:%.so=%).so)
|
||||
endef
|
||||
|
||||
modules-names = testobj1 testobj2 testobj3
|
||||
modules-names = testobj1 testobj2 testobj3 testobj1_1
|
||||
test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(modules-names)))
|
||||
generated += $(test-modules)
|
||||
|
||||
$(objpfx)testobj1_1.so: $(objpfx)testobj1.so
|
||||
LDLIBS-testobj1_1.so = $(objpfx)testobj1.so
|
||||
$(objpfx)testobj2.so: $(objpfx)testobj1.so
|
||||
LDLIBS-testobj2.so = $(objpfx)testobj1.so
|
||||
|
||||
@ -228,6 +230,11 @@ $(objpfx)loadtest: $(objpfx)libdl.so
|
||||
LDFLAGS-loadtest = -rdynamic
|
||||
|
||||
$(objpfx)loadtest.out: $(test-modules)
|
||||
|
||||
$(objpfx)restest1: $(objpfx)libdl.so
|
||||
LDFLAGS-restest1 = -rdynamic $(objpfx)testobj1.so $(objpfx)testobj1_1.so
|
||||
|
||||
$(objpfx)restest1.out: $(test-modules)
|
||||
|
||||
# muwahaha
|
||||
|
||||
|
48
elf/restest1.c
Normal file
48
elf/restest1.c
Normal file
@ -0,0 +1,48 @@
|
||||
#include <dlfcn.h>
|
||||
#include <error.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
int
|
||||
main (void)
|
||||
{
|
||||
void *h1;
|
||||
int (*fp1) (int);
|
||||
void *h2;
|
||||
int (*fp2) (int);
|
||||
int res1;
|
||||
int res2;
|
||||
|
||||
h1 = dlopen ("testobj1.so", RTLD_LAZY);
|
||||
if (h1 == NULL)
|
||||
error (EXIT_FAILURE, 0, "while loading `%s': %s", "testobj1.so",
|
||||
dlerror ());
|
||||
|
||||
h2 = dlopen ("testobj1_1.so", RTLD_LAZY);
|
||||
if (h1 == NULL)
|
||||
error (EXIT_FAILURE, 0, "while loading `%s': %s", "testobj1_1.so",
|
||||
dlerror ());
|
||||
|
||||
fp1 = dlsym (h1, "obj1func1");
|
||||
if (fp1 == NULL)
|
||||
error (EXIT_FAILURE, 0, "getting `obj1func1' in `%s': %s",
|
||||
"testobj1.so", dlerror ());
|
||||
|
||||
fp2 = dlsym (h2, "obj1func1");
|
||||
if (fp2 == NULL)
|
||||
error (EXIT_FAILURE, 0, "getting `obj1func1' in `%s': %s",
|
||||
"testobj1_1.so", dlerror ());
|
||||
|
||||
res1 = fp1 (10);
|
||||
res2 = fp2 (10);
|
||||
printf ("fp1(10) = %d\nfp2(10) = %d\n", res1, res2);
|
||||
|
||||
return res1 != 42 || res2 != 72;
|
||||
}
|
||||
|
||||
|
||||
int
|
||||
foo (int a)
|
||||
{
|
||||
return a + 10;
|
||||
}
|
5
elf/testobj1_1.c
Normal file
5
elf/testobj1_1.c
Normal file
@ -0,0 +1,5 @@
|
||||
int
|
||||
obj1func1 (int a)
|
||||
{
|
||||
return 42 + obj1func2 (a);
|
||||
}
|
Loading…
Reference in New Issue
Block a user