summaryrefslogtreecommitdiff
path: root/gcc/collect2.c
diff options
context:
space:
mode:
authormerrill <merrill@138bc75d-0d04-0410-961f-82ee72b054a4>1995-01-24 02:52:44 +0000
committermerrill <merrill@138bc75d-0d04-0410-961f-82ee72b054a4>1995-01-24 02:52:44 +0000
commitc45f936d8416745731e5d1c6c1f45e5f219343a3 (patch)
treeab10d48bf9d3e30c783cdeb6f692fef21e3005aa /gcc/collect2.c
parent7f002481b539b4cf9f4e92d20492fafed05b000a (diff)
downloadgcc-c45f936d8416745731e5d1c6c1f45e5f219343a3.tar.gz
Improve PA shlib support
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@8792 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/collect2.c')
-rw-r--r--gcc/collect2.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/gcc/collect2.c b/gcc/collect2.c
index e46b9fa6c7b..be28cc64529 100644
--- a/gcc/collect2.c
+++ b/gcc/collect2.c
@@ -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 */