aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/cp/ChangeLog5
-rw-r--r--gcc/cp/g++spec.c11
2 files changed, 15 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 43ba649..09f6718 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2004-08-05 Geoffrey Keating <geoffk@apple.com>
+
+ * g++spec.c (lang_specific_driver): An -Xlinker or -Wl, option
+ means that libstdc++ is needed.
+
2004-08-05 Nathan Sidwell <nathan@codesourcery.com>
* cvt.c (cp_convert_to_pointer): Adjust force_fit_type call.
diff --git a/gcc/cp/g++spec.c b/gcc/cp/g++spec.c
index 286134b..ec31d81 100644
--- a/gcc/cp/g++spec.c
+++ b/gcc/cp/g++spec.c
@@ -164,9 +164,18 @@ lang_specific_driver (int *in_argc, const char *const **in_argv,
}
saw_speclang = 1;
}
+ /* Arguments that go directly to the linker might be .o files,
+ or something, and so might cause libstdc++ to be needed. */
+ else if (strcmp (argv[i], "-Xlinker") == 0)
+ {
+ quote = argv[i];
+ if (library == 0)
+ library = 1;
+ }
+ else if (strncmp (argv[i], "-Wl,", 4) == 0)
+ library = (library == 0) ? 1 : library;
else if (((argv[i][2] == '\0'
&& strchr ("bBVDUoeTuIYmLiA", argv[i][1]) != NULL)
- || strcmp (argv[i], "-Xlinker") == 0
|| strcmp (argv[i], "-Tdata") == 0))
quote = argv[i];
else if ((argv[i][2] == '\0'