Bug 647751

Summary: Error: junk at end of line, first unrecognized character is `@' on ppc64
Product: Red Hat Enterprise Linux 6 Reporter: Jan Horak <jhorak>
Component: gccAssignee: Jakub Jelinek <jakub>
Status: CLOSED WORKSFORME QA Contact: qe-baseos-tools-bugs
Severity: urgent Docs Contact:
Priority: low    
Version: 6.0CC: tpelka
Target Milestone: rc   
Target Release: ---   
Hardware: ppc64   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2010-11-02 07:45:17 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
reproducer: xptcstubs_ppc64_linux_postrp.cpp
none
assembler file generated by gcc -S
none
xptcinvoke_asm_ppc64_linux.s none

Description Jan Horak 2010-10-29 10:31:02 UTC
Created attachment 456430 [details]
reproducer: xptcstubs_ppc64_linux_postrp.cpp

Description of problem:
Xulrunner TPS test fail on ppc64 due to many: Error: junk at end of line, first unrecognized character is `@'


Version-Release number of selected component:
gcc-4.4.4-13.el6.ppc64
binutils-2.20.51.0.2-5.11.el6.ppc64
xulrunner-1.9.2.12

How reproducible:


Steps to Reproduce:
compile xptcstubs_ppc64_linux_postpr.cpp by:
c++ -o xptcstubs_ppc64_linux_done.o -c -fvisibility=hidden -DMOZILLA_INTERNAL_API -DOSTYPE=\"Linux2.6.32-71.el6\" -DOSARCH=Linux -DEXPORT_XPTC_API -D_IMPL_NS_COM -fPIC -fno-rtti -fno-exceptions -O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -fno-strict-aliasing -fshort-wchar -pthread -pipe -DNDEBUG -DTRIMMED -Os -freorder-blocks -fno-reorder-functions -DMOZILLA_CLIENT -Wp,-MD,.deps/xptcstubs_ppc64_linux.pp xptcstubs_ppc64_linux_postrp.cpp 

 
Actual results:
{standard input}: Assembler messages:
{standard input}:25: Error: junk at end of line, first unrecognized character is `@'
{standard input}:64: Error: junk at end of line, first unrecognized character is `@'
{standard input}:103: Error: junk at end of line, first unrecognized character is `@'
{standard input}:142: Error: junk at end of line, first unrecognized character is `@'
{standard input}:181: Error: junk at end of line, first unrecognized character is `@'

Additional info:
Can be reproduce at stable machine: ppcp-6s-m1.ss.eng.bos.redhat.com

Comment 1 Jan Horak 2010-10-29 10:32:19 UTC
Created attachment 456431 [details]
assembler file generated by gcc -S

Comment 3 Tomas Pelka 2010-10-29 14:37:48 UTC
I met similar problem also on x86_64 when compiling i686 packages (same as in #0, ergo xulrunner):

ptcinvoke_x86_64_unix.cpp: In function 'nsresult NS_InvokeByIndex_P(nsISupports*, PRUint32, PRUint32, nsXPTCVariant*)':
xptcinvoke_x86_64_unix.cpp:152: error: invalid register name for 'd0'
xptcinvoke_x86_64_unix.cpp:153: error: invalid register name for 'd1' xptcinvoke_x86_64_unix.cpp:154: error: invalid register name for 'd2'
xptcinvoke_x86_64_unix.cpp:155: error: invalid register name for 'd3' 
xptcinvoke_x86_64_unix.cpp:156: error: invalid register name for 'd4' 
xptcinvoke_x86_64_unix.cpp:157: error: invalid register name for 'd5' 
xptcinvoke_x86_64_unix.cpp:158: error: invalid register name for 'd6' 
xptcinvoke_x86_64_unix.cpp:159: error: invalid register name for 'd7' 
xptcinvoke_x86_64_unix.cpp:181: error: invalid register name for 'a4' 
xptcinvoke_x86_64_unix.cpp:182: error: invalid register name for 'a5' make[9]: 
*** [xptcinvoke_x86_64_unix.o] Error 1 make[9]: *** 
Waiting for unfinished jobs.... 
{standard input}: Assembler messages: 
{standard input}:15: Error: bad register name `%rbp' 
{standard input}:16: Error: bad register name `%rsp' 
{standard input}:17: Error: bad register name `%rsp' 
{standard input}:18: Error: bad register name `%rdi' 
{standard input}:19: Error: bad register name `%rsi' 
{standard input}:20: Error: bad register name `%rdx' 
{standard input}:21: Error: bad register name `%rcx' 
{standard input}:22: Error: bad register name `%r8' 
{standard input}:23: Error: bad register name `%r9' 
{standard input}:24: Error: bad register name `%rbp)' 
{standard input}:25: Error: bad register name `%rbp)' 
{standard input}:26: Error: bad register name `%rbp)' 
{standard input}:27: Error: bad register name `%rbp)' 
{standard input}:28: Error: bad register name `%rbp)' 
{standard input}:29: Error: bad register name `%rbp)' 
{standard input}:30: Error: bad register name `%rbp)' 
{standard input}:31: Error: bad register name `%rbp)' 
{standard input}:32: Error: bad register name `%rbp)' 
{standard input}:33: Error: bad register name `%rbp)' 
{standard input}:35: Error: bad register name `%rbp)' make[9]: *** [xptcstubs_x86_64_linux.o] Error 1

Comment 4 Tomas Pelka 2010-10-29 14:40:25 UTC
And also on s390x (also compiling s390 packages on s390x -- xulrunner), but here I'm not fully sure if it is same kind off failure:

xptcinvoke_linux_s390x.cpp: In function 'nsresult NS_InvokeByIndex_P(nsISupports*, PRUint32, PRUint32, nsXPTCVariant*)': 
xptcinvoke_linux_s390x.cpp:248: error: can't find a register in class 'ADDR_REGS' while reloading 'asm' 
xptcinvoke_linux_s390x.cpp:248: error: 'asm' operand has impossible constraints 
make[9]: *** [xptcinvoke_linux_s390x.o] Error 1

Comment 5 Jakub Jelinek 2010-11-01 09:00:57 UTC
Looks like user error.
You are compiling on ppc64 with -m32 code that is partly for 32-bit ppc (e.g. size_t definition etc. is clearly for 32-bit code), but partly for 64-bit ppc
(e.g. the inline asm in dist/include/xptcstubsdef.inc are clearly 64-bit ppc assembly rather than 32-bit).

Comment 6 Tomas Pelka 2010-11-01 13:39:30 UTC
OK setarch works for ppc packages on ppc64, also for s390 packages on s390x and also for i686 packages on x86_64.

But still getting similar error ("junk at end of line, ...") on ppc64 when building ppc64 package. See logs.  

http://nest.test.redhat.com/mnt/qa/scratch/ppcp-6s-m1/2010:10114/tps/stdout.log
http://nest.test.redhat.com/mnt/qa/scratch/ppcp-6s-m1/2010:10114/tps/err.log

Comment 7 Jakub Jelinek 2010-11-01 13:46:52 UTC
Please attach xptcinvoke_asm_ppc64_linux.ii and xptcinvoke_asm_ppc64_linux.s
I'll have a look.

Comment 8 Tomas Pelka 2010-11-01 14:10:54 UTC
Created attachment 456874 [details]
xptcinvoke_asm_ppc64_linux.s

Comment 9 Tomas Pelka 2010-11-01 14:14:22 UTC
Sorry cant find xptcinvoke_asm_ppc64_linux.ii.

Comment 10 Jakub Jelinek 2010-11-01 14:21:53 UTC
The .ii file would be produced by -save-temps (or -E).
Anyway, the attached xptcinvoke_asm_ppc64_linux.s assembles just fine for me on RHEL6/ ppc32.

Comment 11 Tomas Pelka 2010-11-01 14:47:23 UTC
(In reply to comment #10)
> The .ii file would be produced by -save-temps (or -E).
> Anyway, the attached xptcinvoke_asm_ppc64_linux.s assembles just fine for me on
> RHEL6/ ppc32.

It appears when building ppc64 on ppc64, not ppc on ppc64 just like i said in #c6.

Comment 12 Jakub Jelinek 2010-11-01 15:10:08 UTC
But that's exactly what I'm doing too:
$ rpm -q gcc-c++ gcc binutils; which gcc; gcc -c -x assembler-with-cpp -o \
xptcinvoke_asm_ppc64_linux.o -fPIC -c xptcinvoke_asm_ppc64_linux.s; echo $?
gcc-c++-4.4.4-13.el6.ppc64
gcc-4.4.4-13.el6.ppc64
binutils-2.20.51.0.2-5.11.el6.ppc64
/usr/bin/gcc
0
$

Comment 13 Tomas Pelka 2010-11-01 16:17:11 UTC
Seems that yum reinstall gcc\* helped.

Comment 14 Tomas Pelka 2010-11-02 07:45:17 UTC
Really, reinstalling gcc helped, closing as WORKSFORME.