diff options
author | Alan Modra <amodra@gmail.com> | 2006-12-05 01:29:58 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2006-12-05 01:29:58 +0000 |
commit | 125c64931b973e11b1e60d3cff5cf21e0681da3e (patch) | |
tree | 3aa1c581503ee8dbe001f640e5ac9df3836851e9 /ld | |
parent | e611e605d161a1cdf2c149ccf767b1139a12fc5a (diff) | |
download | binutils-125c64931b973e11b1e60d3cff5cf21e0681da3e.tar.gz binutils-125c64931b973e11b1e60d3cff5cf21e0681da3e.tar.bz2 binutils-125c64931b973e11b1e60d3cff5cf21e0681da3e.zip |
* ld-elfvsb/sh1.c (overriddenvar, shlib_overriddencall2,
shared_data): If !SHARED, move to...
* ld-elfvsb/sh2.c: ... here.
* ld-elfvsb/elfvsb.exp: Add -DSHARED to compiler options when
building with $picflag.
Diffstat (limited to 'ld')
-rw-r--r-- | ld/testsuite/ChangeLog | 9 | ||||
-rw-r--r-- | ld/testsuite/ld-elfvsb/elfvsb.exp | 8 | ||||
-rw-r--r-- | ld/testsuite/ld-elfvsb/sh1.c | 14 | ||||
-rw-r--r-- | ld/testsuite/ld-elfvsb/sh2.c | 15 |
4 files changed, 42 insertions, 4 deletions
diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index b578008ab43..f5e90fb4379 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,12 @@ +2006-12-05 Jakub Jelinek <jakub@redhat.com> + Alan Modra <amodra@bigpond.net.au> + + * ld-elfvsb/sh1.c (overriddenvar, shlib_overriddencall2, + shared_data): If !SHARED, move to... + * ld-elfvsb/sh2.c: ... here. + * ld-elfvsb/elfvsb.exp: Add -DSHARED to compiler options when + building with $picflag. + 2006-12-04 Jan Beulich <jbeulich@novell.com> * ld-elf/eh-frame-hdr.d: New. diff --git a/ld/testsuite/ld-elfvsb/elfvsb.exp b/ld/testsuite/ld-elfvsb/elfvsb.exp index 41834f158bd..7976b9c5a1d 100644 --- a/ld/testsuite/ld-elfvsb/elfvsb.exp +++ b/ld/testsuite/ld-elfvsb/elfvsb.exp @@ -315,8 +315,8 @@ proc visibility_run {visibility} { # Now compile the code using -fpic. - if { ![ld_compile "$CC -g $CFLAGS $SHCFLAG $VSBCFLAG $picflag" $srcdir/$subdir/sh1.c $tmpdir/sh1p.o] - || ![ld_compile "$CC -g $CFLAGS $SHCFLAG $VSBCFLAG $picflag" $srcdir/$subdir/sh2.c $tmpdir/sh2p.o] } { + if { ![ld_compile "$CC -g $CFLAGS $SHCFLAG $VSBCFLAG -DSHARED $picflag" $srcdir/$subdir/sh1.c $tmpdir/sh1p.o] + || ![ld_compile "$CC -g $CFLAGS $SHCFLAG $VSBCFLAG -DSHARED $picflag" $srcdir/$subdir/sh2.c $tmpdir/sh2p.o] } { unresolved "visibility ($visibility)" } else { if { [ string match $visibility "protected" ] @@ -337,7 +337,7 @@ proc visibility_run {visibility} { } # Now do the same tests again, but this time compile main.c PIC. - if ![ld_compile "$CC -g $CFLAGS $SHCFLAG $VSBCFLAG $picflag" $srcdir/$subdir/main.c $tmpdir/mainp.o] { + if ![ld_compile "$CC -g $CFLAGS $SHCFLAG $VSBCFLAG -DSHARED $picflag" $srcdir/$subdir/main.c $tmpdir/mainp.o] { unresolved "visibility ($visibility) (PIC main, non PIC so)" unresolved "visibility ($visibility) (PIC main)" } else { @@ -446,7 +446,7 @@ if { ![ld_compile "$CC -g $CFLAGS" $srcdir/$subdir/common.c tmpdir/common.o] } { if { ![ld_compile "$CC -g $CFLAGS" $srcdir/$subdir/test.c tmpdir/test.o] } { unresolved "weak hidden symbol" } else { - if { ![ld_compile "$CC -g $CFLAGS $picflag" $srcdir/$subdir/sh3.c tmpdir/sh3.o] } { + if { ![ld_compile "$CC -g $CFLAGS -DSHARED $picflag" $srcdir/$subdir/sh3.c tmpdir/sh3.o] } { unresolved "weak hidden symbol" } else { if ![ld_simple_link $ld tmpdir/sh3.so "-shared tmpdir/sh3.o"] { diff --git a/ld/testsuite/ld-elfvsb/sh1.c b/ld/testsuite/ld-elfvsb/sh1.c index 8d9fcdbdcb3..b2754249af7 100644 --- a/ld/testsuite/ld-elfvsb/sh1.c +++ b/ld/testsuite/ld-elfvsb/sh1.c @@ -13,7 +13,15 @@ extern int mainvar; /* This variable is defined in the shared library, and overridden by the main program. */ #ifndef XCOFF_TEST +#ifdef SHARED +/* SHARED is defined if we are compiling with -fpic/-fPIC. */ int overriddenvar = -1; +#else +/* Without -fpic, newer versions of gcc assume that we are not + compiling for a shared library, and thus that overriddenvar is + local. */ +extern int overriddenvar; +#endif #endif /* This variable is defined in the shared library. */ @@ -76,12 +84,14 @@ shlib_shlibcall2 () return shlib_overriddencall2 (); } +#ifdef SHARED int shlib_overriddencall2 () { return 7; } #endif +#endif /* This function calls a function defined by the main program. */ @@ -385,7 +395,11 @@ shlib_visibility_checkweak () #endif #ifdef PROTECTED_TEST +#ifdef SHARED int shared_data = 100; +#else +extern int shared_data; +#endif int * shared_data_p () diff --git a/ld/testsuite/ld-elfvsb/sh2.c b/ld/testsuite/ld-elfvsb/sh2.c index ef6b2f16f61..e9a9687bcce 100644 --- a/ld/testsuite/ld-elfvsb/sh2.c +++ b/ld/testsuite/ld-elfvsb/sh2.c @@ -44,3 +44,18 @@ visibility_func_weak () return 2; } #endif + +#ifndef SHARED +# ifndef XCOFF_TEST +int overriddenvar = -1; + +int +shlib_overriddencall2 () +{ + return 7; +} +# endif +# ifdef PROTECTED_TEST +int shared_data = 100; +# endif +#endif |