* ld-elfvsb/sh1.c (overriddenvar, shlib_overriddencall2,
authorAlan Modra <amodra@gmail.com>
Tue, 5 Dec 2006 01:29:58 +0000 (01:29 +0000)
committerAlan Modra <amodra@gmail.com>
Tue, 5 Dec 2006 01:29:58 +0000 (01:29 +0000)
shared_data): If !SHARED, move to...
* ld-elfvsb/sh2.c: ... here.
* ld-elfvsb/elfvsb.exp: Add -DSHARED to compiler options when
building with $picflag.

ld/testsuite/ChangeLog
ld/testsuite/ld-elfvsb/elfvsb.exp
ld/testsuite/ld-elfvsb/sh1.c
ld/testsuite/ld-elfvsb/sh2.c

index b578008..f5e90fb 100644 (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>
 
        * ld-elf/eh-frame-hdr.d: New.
index 41834f1..7976b9c 100644 (file)
@@ -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"] {
index 8d9fcdb..b275424 100644 (file)
@@ -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 ()
index ef6b2f1..e9a9687 100644 (file)
@@ -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