diff options
author | merrill <merrill@138bc75d-0d04-0410-961f-82ee72b054a4> | 1995-01-24 02:52:44 +0000 |
---|---|---|
committer | merrill <merrill@138bc75d-0d04-0410-961f-82ee72b054a4> | 1995-01-24 02:52:44 +0000 |
commit | c45f936d8416745731e5d1c6c1f45e5f219343a3 (patch) | |
tree | ab10d48bf9d3e30c783cdeb6f692fef21e3005aa /gcc/collect2.c | |
parent | 7f002481b539b4cf9f4e92d20492fafed05b000a (diff) | |
download | gcc-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.c | 12 |
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 */ |