From 9f21696b100aee891659bb39d4850295f7877912 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Mon, 13 Feb 1995 20:21:44 +0000 Subject: Fix collecting under AIX From-SVN: r8933 --- gcc/collect2.c | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) (limited to 'gcc/collect2.c') diff --git a/gcc/collect2.c b/gcc/collect2.c index be28cc6..c47a167 100644 --- a/gcc/collect2.c +++ b/gcc/collect2.c @@ -824,6 +824,8 @@ main (argc, argv) char **ld1 = ld1_argv; char **ld2_argv = (char **) xcalloc (sizeof (char *), argc+5); char **ld2 = ld2_argv; + char **object_lst = (char **) xcalloc (sizeof (char *), argc); + char **object = object_lst; int first_file; int num_c_args = argc+7; @@ -1154,15 +1156,19 @@ main (argc, argv) break; } } - else if (first_file - && (p = rindex (arg, '.')) != (char *)0 + else if ((p = rindex (arg, '.')) != (char *)0 && (strcmp (p, ".o") == 0 || strcmp (p, ".a") == 0)) { - first_file = 0; - /* place o_file BEFORE this argument! */ - ld2--; - *ld2++ = o_file; - *ld2++ = arg; + if (first_file) + { + first_file = 0; + /* place o_file BEFORE this argument! */ + ld2--; + *ld2++ = o_file; + *ld2++ = arg; + } + if (p[1] == 'o') + *object++ = arg; } } @@ -1261,6 +1267,13 @@ main (argc, argv) if (rflag) return 0; +#ifdef COLLECT_SCAN_OBJECTS + /* The AIX linker will discard static constructors in object files if + nothing else in the file is referenced, so look at them first. */ + while (object_lst < object) + scan_prog_file (*object_lst++, PASS_FIRST); +#endif + scan_prog_file (output_file, PASS_FIRST); #ifdef SCAN_LIBRARIES -- cgit v1.1