aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNathan Sidwell <nathan@codesourcery.com>2001-02-12 14:06:22 +0000
committerNathan Sidwell <nathan@gcc.gnu.org>2001-02-12 14:06:22 +0000
commit48ce6bbbe6c22735efd1e8fe6b6fbf4d8453642e (patch)
tree484bc05f164378c9dbb5ea022669b86655e63b43
parent823a99190da6b3498f94ab042597b53dc44636b8 (diff)
downloadgcc-48ce6bbbe6c22735efd1e8fe6b6fbf4d8453642e.zip
gcc-48ce6bbbe6c22735efd1e8fe6b6fbf4d8453642e.tar.gz
gcc-48ce6bbbe6c22735efd1e8fe6b6fbf4d8453642e.tar.bz2
mkdeps.c (deps_add_default_target): Robustify.
* mkdeps.c (deps_add_default_target): Robustify. Add basename component only. * cpp.texi (-M): Describe how default target is generated. * invoke.texi (-M): Likewise. From-SVN: r39602
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/cpp.texi5
-rw-r--r--gcc/invoke.texi6
-rw-r--r--gcc/mkdeps.c21
4 files changed, 25 insertions, 14 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index c63b610..5838071 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2001-02-12 Nathan Sidwell <nathan@codesourcery.com>
+
+ * mkdeps.c (deps_add_default_target): Robustify. Add
+ basename component only.
+ * cpp.texi (-M): Describe how default target is generated.
+ * invoke.texi (-M): Likewise.
+
2001-02-12 Kazu Hirata <kazu@hxi.com>
* toplev.c (push_float_handler): Remove.
diff --git a/gcc/cpp.texi b/gcc/cpp.texi
index 363b84c..756f50a 100644
--- a/gcc/cpp.texi
+++ b/gcc/cpp.texi
@@ -3495,7 +3495,10 @@ suitable for @code{make} describing the dependencies of the main source
file. The preprocessor outputs one @code{make} rule containing the
object file name for that source file, a colon, and the names of all the
included files, including those coming from @samp{-include} or
-@samp{-imacros} command line options. If there are many included files
+@samp{-imacros} command line options. Unless specified explicitly (with
+@samp{-MT} or @samp{-MQ}), the object file name consists of the basename
+of the source file with any suffix replaced with object file suffix.
+If there are many included files
then the rule is split into several lines using @samp{\}-newline.
@item -MM
diff --git a/gcc/invoke.texi b/gcc/invoke.texi
index 8052be1..e77d4c7 100644
--- a/gcc/invoke.texi
+++ b/gcc/invoke.texi
@@ -3364,8 +3364,10 @@ Instead of outputting the result of preprocessing, output a rule
suitable for @code{make} describing the dependencies of the main source
file. The preprocessor outputs one @code{make} rule containing the
object file name for that source file, a colon, and the names of all the
-included files. If there are many included files then the rule is split
-into several lines using @samp{\}-newline.
+included files. Unless overridden explicitly, the object file name
+consists of the basename of the source file with any suffix replaced with
+object file suffix. If there are many included files then the
+rule is split into several lines using @samp{\}-newline.
@samp{-M} implies @samp{-E}.
diff --git a/gcc/mkdeps.c b/gcc/mkdeps.c
index b0c62c5..14935b3 100644
--- a/gcc/mkdeps.c
+++ b/gcc/mkdeps.c
@@ -180,8 +180,6 @@ deps_add_default_target (d, tgt)
struct deps *d;
const char *tgt;
{
- char *o, *suffix;
-
/* Only if we have no targets. */
if (d->ntargets)
return;
@@ -190,19 +188,20 @@ deps_add_default_target (d, tgt)
deps_add_target (d, "-", 1);
else
{
- o = (char *) alloca (strlen (tgt) + 8);
-
- strcpy (o, tgt);
- suffix = strrchr (o, '.');
-
#ifndef OBJECT_SUFFIX
# define OBJECT_SUFFIX ".o"
#endif
+ char *start = basename (tgt);
+ char *o = (char *) alloca (strlen (start) + strlen (OBJECT_SUFFIX) + 1);
+ char *suffix;
- if (suffix)
- strcpy (suffix, OBJECT_SUFFIX);
- else
- strcat (o, OBJECT_SUFFIX);
+ strcpy (o, start);
+
+ suffix = strrchr (o, '.');
+ if (!suffix)
+ suffix = o + strlen (o);
+ strcpy (suffix, OBJECT_SUFFIX);
+
deps_add_target (d, o, 1);
}
}