public inbox for gcc@gcc.gnu.org
 help / color / mirror / Atom feed
From: Martin Pool <mbp@samba.org>
To: Neil Booth <neil@daikokuya.co.uk>
Cc: gcc@gcc.gnu.org, Zack Weinberg <zack@codesourcery.com>
Subject: Re: gcc-3.2 -MD -o misbehaviour
Date: Tue, 15 Oct 2002 01:29:00 -0000	[thread overview]
Message-ID: <20021015060504.GN14336@samba.org> (raw)
In-Reply-To: <20021014194429.GC32293@daikokuya.co.uk>

On 14 Oct 2002, Neil Booth <neil@daikokuya.co.uk> wrote:
> Martin Pool wrote:-
> 
> > The manual from Debian Sid's gcc-3.2 (3.2.1-0pre3) says
> > 
> >      If `-MD' is used in conjunction with `-E', any `-o' switch is
> >      understood to specify the dependency output file (but *note
> >      -MF::), but if used without `-E', each `-o' is understood to
> >      specify a target object file.
> > 
> > But this doesn't happen:
> > 
> >     !1169 15:18 /tmp/test% ls -l
> >     total 4
> >     -rw-r--r--    1 mbp      mbp            76 2002-10-02 14:44 hello.c
> >     !1171 15:18 /tmp/test% gcc-3.2 -MD -E -o hello.out hello.c
> >     !1172 15:18 /tmp/test% ls -la
> >     total 80
> >     drwxr-xr-x    2 mbp      mbp          4096 2002-10-02 15:18 .
> >     drwxrwxrwt   15 root     root        49152 2002-10-02 15:17 ..
> >     -rw-r--r--    1 mbp      mbp            76 2002-10-02 14:44 hello.c
> >     -rw-r--r--    1 mbp      mbp           536 2002-10-02 15:18 hello.d
> >     -rw-r--r--    1 mbp      mbp         18019 2002-10-02 15:18 hello.out
> > 
> > Actually I'm glad, this doesn't work.  Overriding -o to specify the
> > destination of dependency output seems needlessly complex since there
> > is already -MF.  Personally I'd prefer you pull this out of the
> > documentation rather than making -o actually specify the output file.
> 
> Yeah, it's a doc bug.  The behaviour of -M and -MD with or without -o
> and/or -E is kinda complicated and is different for almost each case; but
> I believe that gcc != 3.0.x all agree behaviour, and there is some kind
> of coherent underlying logic though it may not be obvious.  I spent ages
> with Chris Demetriou sorting this mess out.

I would very much like you to keep it working as it actually does in
3.2, rather than as documented.  

At the risk of flogging a dead horse, here are some reasons against
making -o specify the dependency output:

 - This breaks existing behaviour which distcc and possibly other
   programs or Makefiles depend upon.

 - Doing it that way denies a useful behaviour (producing both
   preprocessed source and dependencies), without adding anything
   useful in return.
 
 - The distcc client needs to generate both preprocessed source and
   dependencies, if the user wants dependencies.  If "-MD -E" causes
   preprocessed output to go nowhere, then apparently the only
   possibility is to call gcc twice, which is wasteful.  I think
   distcc is a useful program, and will be better in the
   future, so I hope the gcc team might pay a little attention to not
   breaking it.  (I realize it's not your most important customer.)

 - The "intention" of the -MD option, as far as I can see, is to turn
   on a side-effect of cpp, rather than changing the whole action of
   the compiler (as -E does).  To me (ignorant of the internals),
   generating dependencies as a side-effect makes a lot of sense.
   Interfering with -o changes the whole feeling of the thing.  Making
   it sometimes a sideeffect and sometimes not sounds crazy.

-- 
Martin					Discontent Provider
(please cc me on replies)

      reply	other threads:[~2002-10-15  6:07 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <2683.198.102.182.67.1033413284.squirrel@mercury.axian.com>
     [not found] ` <20020930220940.GA1213@toey.sourcefrog.net>
     [not found]   ` <4710.198.102.182.67.1033427430.squirrel@mercury.axian.com>
     [not found]     ` <20020930234356.GA14232@samba.org>
     [not found]       ` <62621.216.99.197.112.1033440272.squirrel@mercury.axian.com>
     [not found]         ` <20021001060338.GE14232@samba.org>
     [not found]           ` <2960.198.102.182.102.1033495681.squirrel@mercury.axian.com>
2002-10-01 22:56             ` Martin Pool
2002-10-14 13:09               ` Neil Booth
2002-10-15  1:29                 ` Martin Pool [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20021015060504.GN14336@samba.org \
    --to=mbp@samba.org \
    --cc=gcc@gcc.gnu.org \
    --cc=neil@daikokuya.co.uk \
    --cc=zack@codesourcery.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).