gcc output from remote machine shows up strange on cygwin xterm

Russ Lewis webmaster@villagersonline.com
Tue Oct 10 23:41:00 GMT 2006


I ssh from my local Cygwin installation to a remote Linux box (Fedora 
Core 5 on AMD64). When I run gcc on the remote machine, certain parts of 
various error messages show up strangely; things between single quotes 
show up as the character â.

However, when the terminal application is run from a Linux box, I get 
the full error message. For instance, if I ssh from Cygwin to the remote 
machine, then run a (remote) xterm (passed back to Cygwin through X 
forwarding), then run make in that xterm, I get the normal error 
strings. Likewise, the error strings show up if I run make locally on 
the Linux box. It also works when I ssh from an ancient Linux box to my 
build machine (that is, when the xterm application is running on an 
ancient Linux box).

I finally tracked it down to the fact that gcc is ouputting three-byte 
sequences for each single quote; apparently Cygwin is having trouble 
displaying them.

If I run 'make' locally on the Linux box, I get stuff like this:
g++ -g -c -o main.o main.C
main.C:1557:1: error: unterminated argument list invoking macro "assert"
main.C:675: error: field ‘stall_logic’ has incomplete type
but when I ssh in from Cygwin, I see:
g++ -g -c -o main.o main.C
main.C:1557:1: error: unterminated argument list invoking macro "assert"
main.C:675: error: field â has incomplete type
note the change in the 3rd line.

So I did
make 2>&1 | tee foo
and then "cat -v foo" shows:
g++ -g -c -o main.o main.C
main.C:1557:1: error: unterminated argument list invoking macro "assert"
main.C:675: error: field M-bM-^@M-^Xstall_logicM-bM-^@M-^Y has 
incomplete type
or, if you prefer, hexdump -C shows:
00000000 67 2b 2b 20 20 2d 67 20 20 2d 63 20 2d 6f 20 6d |g++ -g -c -o m|
00000010 61 69 6e 2e 6f 20 6d 61 69 6e 2e 43 0a 6d 61 69 |ain.o main.C.mai|
00000020 6e 2e 43 3a 31 35 35 37 3a 31 3a 20 65 72 72 6f |n.C:1557:1: erro|
00000030 72 3a 20 75 6e 74 65 72 6d 69 6e 61 74 65 64 20 |r: unterminated |
00000040 61 72 67 75 6d 65 6e 74 20 6c 69 73 74 20 69 6e |argument list in|
00000050 76 6f 6b 69 6e 67 20 6d 61 63 72 6f 20 22 61 73 |voking macro "as|
00000060 73 65 72 74 22 0a 6d 61 69 6e 2e 43 3a 36 37 35 |sert".main.C:675|
00000070 3a 20 65 72 72 6f 72 3a 20 66 69 65 6c 64 20 e2 |: error: field .|
00000080 80 98 73 74 61 6c 6c 5f 6c 6f 67 69 63 e2 80 99 |..stall_logic...|
00000090 20 68 61 73 20 69 6e 63 6f 6d 70 6c 65 74 65 20 | has incomplete |
000000a0 74 79 70 65 0a 6d 61 69 6e 2e 43 3a 31 31 39 32 |type.main.C:1192|

Looks like gcc is sending the sequences 0xe2 0x80 0x98 and 0xe2 0x80 
0x99 as the starting and ending single quotes, respectively.

Any ideas how to get Cygwin to display this properly?

Thanks!
Russ Lewis

--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Problem reports:       http://cygwin.com/problems.html
Documentation:         http://x.cygwin.com/docs/
FAQ:                   http://x.cygwin.com/docs/faq/



More information about the Cygwin-xfree mailing list