* gcc-3.2 -MD -o misbehaviour [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 0 siblings, 1 reply; 3+ messages in thread From: Martin Pool @ 2002-10-01 22:56 UTC (permalink / raw) To: bje, gcc, Alexandre Oliva; +Cc: distcc 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. -- Martin ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: gcc-3.2 -MD -o misbehaviour 2002-10-01 22:56 ` gcc-3.2 -MD -o misbehaviour Martin Pool @ 2002-10-14 13:09 ` Neil Booth 2002-10-15 1:29 ` Martin Pool 0 siblings, 1 reply; 3+ messages in thread From: Neil Booth @ 2002-10-14 13:09 UTC (permalink / raw) To: Martin Pool; +Cc: gcc, Zack Weinberg 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. Zack, could you have a go at fixing this? I'm frozen out until I get paperwork through the system. Thanks, Neil. ^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: gcc-3.2 -MD -o misbehaviour 2002-10-14 13:09 ` Neil Booth @ 2002-10-15 1:29 ` Martin Pool 0 siblings, 0 replies; 3+ messages in thread From: Martin Pool @ 2002-10-15 1:29 UTC (permalink / raw) To: Neil Booth; +Cc: gcc, Zack Weinberg 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) ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2002-10-15 6:07 UTC | newest] Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- [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 ` gcc-3.2 -MD -o misbehaviour Martin Pool 2002-10-14 13:09 ` Neil Booth 2002-10-15 1:29 ` Martin Pool
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).