summaryrefslogtreecommitdiff
path: root/gcc/collect2.c
diff options
context:
space:
mode:
authorsandra <sandra@138bc75d-0d04-0410-961f-82ee72b054a4>2011-07-24 23:22:41 +0000
committersandra <sandra@138bc75d-0d04-0410-961f-82ee72b054a4>2011-07-24 23:22:41 +0000
commit73caa9f351c46568e1f9c444c3d5d70c9461cc13 (patch)
treeff68b0982803322915f57a7bfc275d261083dd9d /gcc/collect2.c
parent797deefc85baba67cfdb1b36da06931be9f18e23 (diff)
downloadgcc-73caa9f351c46568e1f9c444c3d5d70c9461cc13.tar.gz
2011-07-24 Sandra Loosemore <sandra@codesourcery.com>
gcc/ * configure.ac (demangler_in_ld): Default to yes. * configure: Regenerated. * collect2.c (main): When HAVE_LD_DEMANGLE is defined, don't mess with COLLECT_NO_DEMANGLE, and just pass --demangle and --no-demangle options straight through to ld. When HAVE_LD_DEMANGLE is not defined, set COLLECT_NO_DEMANGLE in a way that has the intended effect on Windows. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@176720 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/collect2.c')
-rw-r--r--gcc/collect2.c18
1 files changed, 7 insertions, 11 deletions
diff --git a/gcc/collect2.c b/gcc/collect2.c
index dadf82d34b1..cd0fad792e2 100644
--- a/gcc/collect2.c
+++ b/gcc/collect2.c
@@ -1112,10 +1112,12 @@ main (int argc, char **argv)
num_c_args = argc + 9;
+#ifndef HAVE_LD_DEMANGLE
no_demangle = !! getenv ("COLLECT_NO_DEMANGLE");
/* Suppress demangling by the real linker, which may be broken. */
- putenv (xstrdup ("COLLECT_NO_DEMANGLE="));
+ putenv (xstrdup ("COLLECT_NO_DEMANGLE=1"));
+#endif
#if defined (COLLECT2_HOST_INITIALIZATION)
/* Perform system dependent initialization, if necessary. */
@@ -1405,12 +1407,6 @@ main (int argc, char **argv)
/* After the first file, put in the c++ rt0. */
first_file = 1;
-#ifdef HAVE_LD_DEMANGLE
- if (!demangle_flag && !no_demangle)
- demangle_flag = "--demangle";
- if (demangle_flag)
- *ld1++ = *ld2++ = demangle_flag;
-#endif
while ((arg = *++argv) != (char *) 0)
{
*ld1++ = *ld2++ = arg;
@@ -1514,16 +1510,16 @@ main (int argc, char **argv)
case '-':
if (strcmp (arg, "--no-demangle") == 0)
{
- demangle_flag = arg;
+#ifndef HAVE_LD_DEMANGLE
no_demangle = 1;
ld1--;
ld2--;
+#endif
}
else if (strncmp (arg, "--demangle", 10) == 0)
{
- demangle_flag = arg;
- no_demangle = 0;
#ifndef HAVE_LD_DEMANGLE
+ no_demangle = 0;
if (arg[10] == '=')
{
enum demangling_styles style
@@ -1533,9 +1529,9 @@ main (int argc, char **argv)
else
current_demangling_style = style;
}
-#endif
ld1--;
ld2--;
+#endif
}
else if (strncmp (arg, "--sysroot=", 10) == 0)
target_system_root = arg + 10;