diff options
author | aoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-02-25 13:25:11 +0000 |
---|---|---|
committer | aoliva <aoliva@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-02-25 13:25:11 +0000 |
commit | 48285a3cb0ec5c5b49a5dcab274e355dd8863653 (patch) | |
tree | 29cb77e79aa665ff931f60954f69d12aa92ba88f /gcc/gcc.c | |
parent | 8d4084540ca1f6ef948b3d7e076419f632954726 (diff) | |
download | gcc-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.c | 34 |
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 */ |