2000-03-16  Ulrich Drepper  <drepper@redhat.com>

	* 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.
This commit is contained in:
Ulrich Drepper 2000-03-17 02:17:59 +00:00
parent 13a836048c
commit 19cf43bed6
5 changed files with 65 additions and 3 deletions

View File

@ -1,3 +1,10 @@
2000-03-16 Ulrich Drepper <drepper@redhat.com>
* 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.
2000-03-15 Ulrich Drepper <drepper@redhat.com>
* sysdeps/posix/open64.c: Make __open64 weak alias.

View File

@ -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

20
elf/constload1.c Normal file
View File

@ -0,0 +1,20 @@
#include <dlfcn.h>
#include <errno.h>
#include <error.h>
#include <stdlib.h>
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;
}

24
elf/constload2.c Normal file
View File

@ -0,0 +1,24 @@
#include <dlfcn.h>
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);
}

7
elf/constload3.c Normal file
View File

@ -0,0 +1,7 @@
extern int baz (void);
int
bar (void)
{
return -21 + baz ();
}