* 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.
This commit is contained in:
Alan Modra 2006-12-05 01:29:58 +00:00
parent e611e605d1
commit 125c64931b
4 changed files with 42 additions and 4 deletions

View File

@ -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> 2006-12-04 Jan Beulich <jbeulich@novell.com>
* ld-elf/eh-frame-hdr.d: New. * ld-elf/eh-frame-hdr.d: New.

View File

@ -315,8 +315,8 @@ proc visibility_run {visibility} {
# Now compile the code using -fpic. # Now compile the code using -fpic.
if { ![ld_compile "$CC -g $CFLAGS $SHCFLAG $VSBCFLAG $picflag" $srcdir/$subdir/sh1.c $tmpdir/sh1p.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 $picflag" $srcdir/$subdir/sh2.c $tmpdir/sh2p.o] } { || ![ld_compile "$CC -g $CFLAGS $SHCFLAG $VSBCFLAG -DSHARED $picflag" $srcdir/$subdir/sh2.c $tmpdir/sh2p.o] } {
unresolved "visibility ($visibility)" unresolved "visibility ($visibility)"
} else { } else {
if { [ string match $visibility "protected" ] 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. # 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, non PIC so)"
unresolved "visibility ($visibility) (PIC main)" unresolved "visibility ($visibility) (PIC main)"
} else { } 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] } { if { ![ld_compile "$CC -g $CFLAGS" $srcdir/$subdir/test.c tmpdir/test.o] } {
unresolved "weak hidden symbol" unresolved "weak hidden symbol"
} else { } 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" unresolved "weak hidden symbol"
} else { } else {
if ![ld_simple_link $ld tmpdir/sh3.so "-shared tmpdir/sh3.o"] { if ![ld_simple_link $ld tmpdir/sh3.so "-shared tmpdir/sh3.o"] {

View File

@ -13,7 +13,15 @@ extern int mainvar;
/* This variable is defined in the shared library, and overridden by /* This variable is defined in the shared library, and overridden by
the main program. */ the main program. */
#ifndef XCOFF_TEST #ifndef XCOFF_TEST
#ifdef SHARED
/* SHARED is defined if we are compiling with -fpic/-fPIC. */
int overriddenvar = -1; 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 #endif
/* This variable is defined in the shared library. */ /* This variable is defined in the shared library. */
@ -76,12 +84,14 @@ shlib_shlibcall2 ()
return shlib_overriddencall2 (); return shlib_overriddencall2 ();
} }
#ifdef SHARED
int int
shlib_overriddencall2 () shlib_overriddencall2 ()
{ {
return 7; return 7;
} }
#endif #endif
#endif
/* This function calls a function defined by the main program. */ /* This function calls a function defined by the main program. */
@ -385,7 +395,11 @@ shlib_visibility_checkweak ()
#endif #endif
#ifdef PROTECTED_TEST #ifdef PROTECTED_TEST
#ifdef SHARED
int shared_data = 100; int shared_data = 100;
#else
extern int shared_data;
#endif
int * int *
shared_data_p () shared_data_p ()

View File

@ -44,3 +44,18 @@ visibility_func_weak ()
return 2; return 2;
} }
#endif #endif
#ifndef SHARED
# ifndef XCOFF_TEST
int overriddenvar = -1;
int
shlib_overriddencall2 ()
{
return 7;
}
# endif
# ifdef PROTECTED_TEST
int shared_data = 100;
# endif
#endif