2004-04-20 H.J. Lu <hongjiu.lu@intel.com>

* ld-elfweak/elfweak.exp: Add an undefined weak size change
	test.

	* ld-elfweak/size.dat: New file.
	* ld-elfweak/size_bar.c: Likewise.
	* ld-elfweak/size_foo.c: Likewise.
	* ld-elfweak/size_main.c: Likewise.
This commit is contained in:
H.J. Lu 2004-04-20 14:50:22 +00:00
parent 6482c264f4
commit a664545d53
6 changed files with 69 additions and 1 deletions

View File

@ -1,3 +1,13 @@
2004-04-20 H.J. Lu <hongjiu.lu@intel.com>
* ld-elfweak/elfweak.exp: Add an undefined weak size change
test.
* ld-elfweak/size.dat: New file.
* ld-elfweak/size_bar.c: Likewise.
* ld-elfweak/size_foo.c: Likewise.
* ld-elfweak/size_main.c: Likewise.
2004-04-14 Brian Ford <ford@vss.fsi.com>
DJ Delorie <dj@redhat.com>

View File

@ -287,7 +287,8 @@ proc build_lib {test libname objs dynsymexp} {
return
}
if {![objdump_dynsymstuff $objdump $tmpdir/$libname.so $srcdir/$subdir/$dynsymexp]} {
if {![string match "" $dynsymexp] \
&& ![objdump_dynsymstuff $objdump $tmpdir/$libname.so $srcdir/$subdir/$dynsymexp]} {
fail $test
return
}
@ -465,3 +466,30 @@ build_exec "ELF weak data first DSO" foo "main1.o libbar1a.so libfoo1a.so" "-Wl,
build_exec "ELF weak data last DSO" foo "libfoo1a.so main1.o libbar1a.so" "-Wl,-rpath,." weakdata weakdata.dsym ""
build_exec "ELF weak data first DSO common" foo "main1.o libbar1a.so libfoo1b.so" "-Wl,-rpath,." weakdata weakdata.dsym ""
build_exec "ELF weak data last DSO common" foo "libfoo1b.so main1.o libbar1a.so" "-Wl,-rpath,." weakdata weakdata.dsym ""
if ![ld_compile "$CC $CFLAGS $picflag" $srcdir/$subdir/size_foo.c $tmpdir/size_foo.o] {
unresolved "ELF weak (size)"
return
}
if ![ld_compile "$CC $CFLAGS $picflag" $srcdir/$subdir/size_bar.c $tmpdir/size_bar.o] {
unresolved "ELF weak (size)"
return
}
build_lib "ELF DSO small bar (size)" libsize_bar "size_bar.o" ""
build_lib "ELF DSO foo with small bar (size)" libsize_foo "size_foo.o libsize_bar.so" ""
if ![ld_compile "$CC $CFLAGS $picflag -DSIZE_BIG" $srcdir/$subdir/size_bar.c $tmpdir/size_bar.o] {
unresolved "ELF weak (size)"
return
}
build_lib "ELF DSO big bar (size)" libsize_bar "size_bar.o" ""
if ![ld_compile "$CC $CFLAGS" $srcdir/$subdir/size_main.c $tmpdir/size_main.o] {
unresolved "ELF weak (size)"
return
}
build_exec "ELF weak size" size_main "size_main.o libsize_foo.so libsize_bar.so" "-Wl,-rpath,." size "" ""

View File

@ -0,0 +1,3 @@
1
2
3

View File

@ -0,0 +1,11 @@
#include <stdio.h>
void
bar ()
{
#ifdef SIZE_BIG
printf ("1\n");
printf ("2\n");
printf ("3\n");
#endif
}

View File

@ -0,0 +1,8 @@
#pragma weak bar
extern void bar ();
foo ()
{
bar ();
}

View File

@ -0,0 +1,8 @@
extern void foo ();
int
main ()
{
foo ();
return 0;
}