[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

# 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"
    ) < "$TMPFILE2" 1>&2
    cat "$TMPFILE1"               # print stdout stuff
    cat "$TMPFILE2" 1>&2          # print stderr stuff first
    printerror "$TMPFILE1"        # print stdout next
  if [ "$exitStatus" != 0 ]; then
    alldone $exitStatus;

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.

Attachment: output_145.txt
Description: Text document

Attachment: 145.zip
Description: Zip compressed data

reply via email to

[Prev in Thread] Current Thread [Next in Thread]