[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
RE: Interix cc compiler suddenly fails tests in new 64bit SUA 6.1 RC1
From: |
Jerker Bäck |
Subject: |
RE: Interix cc compiler suddenly fails tests in new 64bit SUA 6.1 RC1 |
Date: |
Fri, 4 Jan 2008 11:55:14 +0100 |
Hello Paul,
Thanks for answering
> It looks like your compiler is generating a .o file even when it
> is invoked with the -E option. Perhaps you can track it down
> by debugging the "configure" script. Try running this:
No, the compiler never emits an object file when invoked with -E or -P
However, I have suspected that the cause of the failure is related to
preprocessing. It seems to me that the compiler pass the feature tested, but
somehow fails to complete the test. Could it be the way stdin, stdout and
stderr are handled?
I attach the test 145 shell output and the test 145 directory
I would be really, really pleased if this issue could go away.
Thanks Jerker
As a reference:
================================================
The cc Korn shell script is about 1800 lines.
Here are preprocessing part:
# redirect output to a file for 2 reasons:
# 1) to work around 'pipe' problems with win32 executable programs.
# 2) to ensure we remove the 1st line that cl.exe emits
# (This is the filename) which we don't want to see
# (GNU configure doesn't expect it)
#
# redirect input from /dev/null because:
# If this is a pipe, and $cmd is a Win32 program, then
# Interix will 'pump' all the data in stdin to the Win32 program.
# This is how Win32 pipe's work.
# By redirecting stdin before the call we avoid
# this problem.
#
# execute cmd, redirect output to TMPFILE1 and messages to TMPFILE2
"address@hidden" > "$TMPFILE1" 2> "$TMPFILE2" < /dev/null
exitStatus=$?
# get rid of trailing ^M characters
flip -bu "$TMPFILE1" "$TMPFILE2"
# If we are only invoking cpp, ...
if [ "$preprocess" = true ]; then
# TMPFILE1 should now contain what we want
# print stderr stuff first
# NOTE: for "CL /E", CL puts the filename in stderr (TMPFILE2),
# not to stdout like other cases.
(
# first remove the file name that CL emits to stderr.
read -r line; [ "$filename" != "$line" ] && print -r "$line";
# now read the rest of the file
while read -r line; do
print -r "$line"
done
) < "$TMPFILE2" 1>&2
cat "$TMPFILE1" # print stdout stuff
else
cat "$TMPFILE2" 1>&2 # print stderr stuff first
printerror "$TMPFILE1" # print stdout next
fi
if [ "$exitStatus" != 0 ]; then
alldone $exitStatus;
fi
Note: $TMPFILE* are temporary files in $TMPDIR
$cmd is a formatted compiler command line with options and operands
BTW: Sorry for the huge attachment in last post.
output_145.txt
Description: Text document
145.zip
Description: Zip compressed data