if (HAVE_GAS_SHF_MERGE) should be false for windows target. However,
it's definition is done by configure for _host_, and it ends up as true
in auto-host.h if you cross compile
This does not make sense as gcc_GAS_CHECK_FEATURE is used for other target features all over
configure.ac. Could you attach the config.log for your cross build?
Created attachment 9222 [details]
The config.log doesn't say much, unless you want a config.log from some other
I'm just reporting the analysis by Danny Smith.
Occurs with both my own cross build, and the cross build from
I wanted the config.log from the gcc directory, sorry.
Created attachment 9224 [details]
config.log.cross is the cross
config.log.wingcc is the mingw32
HAVE_GAS_SHF_MERGE is 0 in the cross, 1 in the mingw32 built by the cross.
So it is a candian cross and not really a cross which is causing this.
We are picking up the wrong as:
So that is the problem, could you figure out how to pick up the cross's as for candian cross.
I don't know how to do that with the current configure.
Build != Host
--build=i686-pc-linux-gnu --host=i686-pc-mingw32 --target=i686-pc-mingw32
# If build != host, and we aren't building gas in-tree, we identify a
# build->target assembler and hope that it will have the same features
# as the host->target assembler we'll be using.
(which is wrong in this case)
And configure.ac is using 'test -x' on environment variables $AS and
$AS_FOR_TARGET, which always have their paths stripped, so I can't set it
to "/home/gcc/build/crossgcc/bin/i686-pc-mingw32-as" or "i686-pc-mingw32-as"
and pass the "test -x" test, even though that is the $AS that will ultimately
be used to assemble.
Manually changing the "elif test -x "$AS_FOR_TARGET"; then" line in
gcc/configure to "-n" makes it use the env variable, and sets
HAVE_GAS_SHF_MERGE 0, which is what I want, but I doubt this is the right way
to do it.
(In reply to comment #7)
> I don't know how to do that with the current configure.
> Build != Host
> --build=i686-pc-linux-gnu --host=i686-pc-mingw32 --target=i686-pc-mingw32
> From configure.ac:
> # If build != host, and we aren't building gas in-tree, we identify a
> # build->target assembler and hope that it will have the same features
> # as the host->target assembler we'll be using.
> (which is wrong in this case)
Actually it better or there is something wrong as basicially you cannot really mix match the as versions
of a Candian cross.
I was able to "fix" this issue with an explicit --with-as=<full path to i686-pc-mingw32-as> and --with-ld=<full path to i686-pc-mingw32-ld>. The crossed native compiler passes the testcase that Rutger sent me.
Note that the correct term for the compiler we're referring to is "x-host-x, crossed native or crossed-built native" and not a Canadian cross. See http://gcc.gnu.org/onlinedocs/gcc-4.0.2/gccint/Configure-Terms.html
Closed as fixed as of the last comment.