From: Nathan Sidwell Date: Mon, 12 Feb 2001 14:06:22 +0000 (+0000) Subject: mkdeps.c (deps_add_default_target): Robustify. X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=48ce6bbbe6c22735efd1e8fe6b6fbf4d8453642e;p=platform%2Fupstream%2Fgcc.git 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 --- 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 + + * 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 * 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); } }