Bug 14760 - [3.4 regression]A bug in configure{,.in} prevents using both --program-suffix and --program-prefix
Summary: [3.4 regression]A bug in configure{,.in} prevents using both --program-suffix...
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: bootstrap (show other bugs)
Version: 3.4.0
: P2 normal
Target Milestone: 3.4.1
Assignee: Nathanael C. Nerode
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-03-28 14:57 UTC by Nikita V. Youshchenko
Modified: 2004-09-09 23:40 UTC (History)
3 users (show)

See Also:
Host:
Target:
Build:
Known to work: 4.0 3.3.3
Known to fail: 3.4.0
Last reconfirmed: 2004-04-04 06:09:35


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Nikita V. Youshchenko 2004-03-28 14:57:59 UTC
Hello. 
 
When options like --program-suffix and --program-prefix are passed to configure 
script, they are normally converted to a sed program and then discarded, so 
when configure is called to subdirs, these options are not passed. 
 
This logic is implemented by the following code from configure.in: 
 
cat <<\EOF_SED > conftestsed 
s/ --no[[^ ]]* / / 
s/ --c[[a-z-]]*[[= ]][[^ ]]* / / 
s/ --sr[[a-z-]]*[[= ]][[^ ]]* / / 
s/ --ho[[a-z-]]*[[= ]][[^ ]]* / / 
s/ --bu[[a-z-]]*[[= ]][[^ ]]* / / 
s/ --t[[a-z-]]*[[= ]][[^ ]]* / / 
s/ --program-[[pst]][[a-z-]]*[[= ]][[^ ]]* / / 
s/ -cache-file[[= ]][[^ ]]* / / 
s/ -srcdir[[= ]][[^ ]]* / / 
s/ -host[[= ]][[^ ]]* / / 
s/ -build[[= ]][[^ ]]* / / 
s/ -target[[= ]][[^ ]]* / / 
s/ -program-prefix[[= ]][[^ ]]* / / 
s/ -program-suffix[[= ]][[^ ]]* / / 
s/ -program-transform-name[[= ]][[^ ]]* / / 
s/ [[^' -][^ ]*] / / 
s/^ *//;s/ *$// 
s,\$,$$,g 
EOF_SED 
sed -f conftestsed <<EOF_SED > conftestsed.out 
 ${ac_configure_args} 
EOF_SED 
baseargs=`cat conftestsed.out` 
rm -f conftestsed conftestsed.out 
 
If both --program-prefix and --program-suffix will be given, the corresponding 
regilar expression ' --program-[[pst]][[a-z-]]*[[= ]][[^ ]]* ' will catch only 
first of two, not touching the second. Since not-discarded option is already 
converted to a sed program, lated this will result in either prefix of suffix 
(what happens to be second) added twice to program names. 
 
This could be fixed trivially - just add 'g' modifier to corresponding line of 
the above sed program: 
 
--- configure.in.orig   2004-02-06 10:03:08.000000000 +0300 
+++ configure.in        2004-03-10 00:39:05.000000000 +0300 
@@ -1778,7 +1778,7 @@ 
 s/ --ho[[a-z-]]*[[= ]][[^ ]]* / / 
 s/ --bu[[a-z-]]*[[= ]][[^ ]]* / / 
 s/ --t[[a-z-]]*[[= ]][[^ ]]* / / 
-s/ --program-[[pst]][[a-z-]]*[[= ]][[^ ]]* / / 
+s/ --program-[[pst]][[a-z-]]*[[= ]][[^ ]]* / /g 
 s/ -cache-file[[= ]][[^ ]]* / / 
 s/ -srcdir[[= ]][[^ ]]* / / 
 s/ -host[[= ]][[^ ]]* / / 
 
I faced this problem when I worked with Debian gcc-3.4 source package to make 
it build cross-compilers. So I am reporting this against 3.4. However, most 
likely the same buglet is also there in other gcc branches.
Comment 1 Andrew Pinski 2004-04-04 06:09:35 UTC
Confirmed, patches should be sent to gcc-patches@gcc.gnu.org ___after___ reading <
http://gcc.gnu.org/contribute.html>.
Comment 2 GCC Commits 2004-04-07 01:40:43 UTC
Subject: Bug 14760

CVSROOT:	/cvs/gcc
Module name:	gcc
Changes by:	neroden@gcc.gnu.org	2004-04-07 01:40:24

Modified files:
	.              : configure configure.in ChangeLog 

Log message:
	PR bootstrap/14760
	* configure.in: When computing baseargs, strip *all* copies of
	offending options.  Also, don't match/substitute the trailing space,
	so that this actually works when two similar options are separated by
	only one space.
	* configure: Regenerate.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/configure.diff?cvsroot=gcc&r1=1.141&r2=1.142
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/configure.in.diff?cvsroot=gcc&r1=1.281&r2=1.282
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/ChangeLog.diff?cvsroot=gcc&r1=1.904&r2=1.905

Comment 3 Nathanael C. Nerode 2004-04-07 01:50:07 UTC
I would like to add the same patch I added to mainline to 3.4 branch, after it 
reopens (the state of mainline and 3.4 branch was identical for this code).  
If this got in before 3.4, of course, that would be cool. 
 
This does not affect 3.3 branch. 
 
Comment 4 Mark Mitchell 2004-06-12 22:54:53 UTC
Nathanael, this is fine for 3.4.1.
Comment 5 Mark Mitchell 2004-06-19 00:03:10 UTC
Nathanel, would you please apply this patch ASAP?
Comment 6 GCC Commits 2004-06-25 21:33:39 UTC
Subject: Bug 14760

CVSROOT:	/cvs/gcc
Module name:	gcc
Branch: 	gcc-3_4-branch
Changes by:	mmitchel@gcc.gnu.org	2004-06-25 21:33:21

Modified files:
	.              : ChangeLog configure.in configure 

Log message:
	PR bootstrap/14760
	* configure.in: When computing baseargs, strip *all* copies of
	offending options.  Also, don't match/substitute the trailing space,
	so that this actually works when two similar options are separated by
	only one space.
	* configure: Regenerate.

Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.856.2.14&r2=1.856.2.15
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/configure.in.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.266.4.2&r2=1.266.4.3
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/configure.diff?cvsroot=gcc&only_with_tag=gcc-3_4-branch&r1=1.126.4.2&r2=1.126.4.3

Comment 7 Mark Mitchell 2004-06-25 21:33:50 UTC
I applied this patch.

Fixed in GCC 3.4.1.