summaryrefslogtreecommitdiff
path: root/gcc/gcc.c
diff options
context:
space:
mode:
authoraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>2002-02-25 13:25:11 +0000
committeraoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4>2002-02-25 13:25:11 +0000
commit48285a3cb0ec5c5b49a5dcab274e355dd8863653 (patch)
tree29cb77e79aa665ff931f60954f69d12aa92ba88f /gcc/gcc.c
parent8d4084540ca1f6ef948b3d7e076419f632954726 (diff)
downloadgcc-48285a3cb0ec5c5b49a5dcab274e355dd8863653.tar.gz
* gcc.c (init_gcc_specs): Get -shared-libgcc along with -shared to
link with shared_name only. * doc/invoke.texi (Link Options): Document new behavior. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@50025 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/gcc.c')
-rw-r--r--gcc/gcc.c34
1 files changed, 13 insertions, 21 deletions
diff --git a/gcc/gcc.c b/gcc/gcc.c
index 1fcd8f32822..267bfa31957 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -1414,31 +1414,23 @@ init_gcc_specs (obstack, shared_name, static_name, eh_name)
const char *static_name;
const char *eh_name;
{
- char buffer[128];
- const char *p;
+ char *buf;
- /* If we see -shared-libgcc, then use the shared version. */
- sprintf (buffer, "%%{shared-libgcc:%s %s}", shared_name, static_name);
- obstack_grow (obstack, buffer, strlen (buffer));
- /* If we see -static-libgcc, then use the static version. */
- sprintf (buffer, "%%{static-libgcc:%s %s}", static_name, eh_name);
- obstack_grow (obstack, buffer, strlen (buffer));
- /* Otherwise, if we see -shared, then use the shared version
- if using EH registration routines or static version without
- exception handling routines otherwise. */
- p = "%{!shared-libgcc:%{!static-libgcc:%{shared:";
- obstack_grow (obstack, p, strlen (p));
+ buf = concat ("%{!shared:%{!shared-libgcc:", static_name, " ",
+ eh_name, "}%{shared-libgcc:", shared_name, " ",
+ static_name, "}}",
+ "%{shared:%{static-libgcc:", static_name, " ",
+ eh_name, "}%{!static-libgcc:",
#ifdef LINK_EH_SPEC
- sprintf (buffer, "%s}}}", static_name);
+ "%{shared-libgcc:", shared_name,
+ "}%{!shared-libgcc:", static_name, "}",
#else
- sprintf (buffer, "%s}}}", shared_name);
+ shared_name,
#endif
- obstack_grow (obstack, buffer, strlen (buffer));
- /* Otherwise, use the static version. */
- sprintf (buffer,
- "%%{!shared-libgcc:%%{!static-libgcc:%%{!shared:%s %s}}}",
- static_name, eh_name);
- obstack_grow (obstack, buffer, strlen (buffer));
+ "}}", NULL);
+
+ obstack_grow (obstack, buf, strlen (buf));
+ free (buf);
}
#endif /* ENABLE_SHARED_LIBGCC */