Improve PA shlib support
authorJason Merrill <merrill@gnu.org>
Tue, 24 Jan 1995 02:52:44 +0000 (02:52 +0000)
committerJason Merrill <merrill@gnu.org>
Tue, 24 Jan 1995 02:52:44 +0000 (02:52 +0000)
From-SVN: r8792

gcc/collect2.c
gcc/config/pa/pa.h

index e46b9fa6c7bc9a3ee5218fa0a01ddc27f48f8c5d..be28cc64529e3f71878ac220ff2c109194d56f1b 100644 (file)
@@ -1182,16 +1182,18 @@ main (argc, argv)
        p = q;
       }
 
-#ifdef LD_INIT_SWITCH
   /* Tell the linker that we have initializer and finalizer functions.  */
   if (shared_obj)
     {
+#ifdef LD_INIT_SWITCH
       *ld2++ = LD_INIT_SWITCH;
       *ld2++ = "_GLOBAL__DI";
+#endif
+#ifdef LD_FINI_SWITCH
       *ld2++ = LD_FINI_SWITCH;
       *ld2++ = "_GLOBAL__DD";
-    }
 #endif
+    }
 
   *c_ptr++ = c_file;
   *c_ptr = *ld1 = *ld2 = (char *)0;
@@ -1777,13 +1779,17 @@ scan_prog_file (prog_name, which_pass)
        case 3:
          if (which_pass != PASS_LIB)
            fatal ("init function found in object %s", prog_name);
+#ifndef LD_INIT_SWITCH
          add_to_list (&constructors, name);
+#endif
          break;
 
        case 4:
          if (which_pass != PASS_LIB)
-           fatal ("init function found in object %s", prog_name);
+           fatal ("fini function found in object %s", prog_name);
+#ifndef LD_FINI_SWITCH
          add_to_list (&destructors, name);
+#endif
          break;
 
        default:                /* not a constructor or destructor */
index 26a0ce7bebec1ffe11e81a5f13cd2eae20f4459f..5ac0477ad22dbd2de8e1bc7858015f4c0ec7ca18 100644 (file)
@@ -252,6 +252,8 @@ do {                                                                \
   else                                                         \
     PTR = 0;                                                   \
 } while (0)
+
+#define LD_INIT_SWITCH "+I"
 \f
 /* target machine storage layout */