Reputation: 102205
I'm trying to track down the problem that's producing an assembler error "", line 1 : Illegal flag (-)
on Solaris 11.3 (x64) under Sun Studio 12.3. The Sun Studio compiler is a special kind of hell.
$ echo $CXX
/opt/solarisstudio12.3/bin/CC
$ cat test.cxx
#include <iostream>
int main(int argc, char* argv[])
{
std::cout << argc << std::endl;
return 0;
}
$ $CXX -DNDEBUG -xO2 -native -template=no%extdef -m64 -Kpic -Wa,--divide -c test.cxx
Assembler:
"", line 1 : Illegal flag (-)
CC: fbe failed for test.cxx
Systematically removing -xO2
, -native
, -m64
, -Kpic
, etc ... does not resolve it. I found a similar report over at Mozilla, but dropping the debugging symbols did not resolve it.
The first line of the assembler file is .file ...
(shown below), so its not clear to me where the illegal flags is coming from.
Why am I experiencing "", line 1 : Illegal flag (-)
, and how do I fix it?
Adding -v
and -keeptmp
results in the following.
$ $CXX -v -keeptmp -DNDEBUG -xO2 -native -template=no%extdef -m64 -Kpic -Wa,--divide -c test.cxx
### CC: Note: NLSPATH = /opt/solarisstudio12.3/prod/bin/../lib/locale/%L/LC_MESSAGES/%N.cat:/opt/solarisstudio12.3/prod/bin/../../lib/locale/%L/LC_MESSAGES/%N.cat
### command line files and options (expanded):
### -v -keeptmp -DNDEBUG -xO2 -xchip=core2 -xcache=32/64/8:4096/64/16 -xarch=ssse3 -template=%none -m64 -xcode=pic13 -Qoption fbe --divide -c test.cxx
/opt/solarisstudio12.3/prod/bin/ccfe -xarch=amd64 -D__SunOS_5_11 -D__SUNPRO_CC=0x5120 -D__unix -D__SVR4 -D__sun -D__SunOS -D__x86_64 -D__x86_64__ -D__amd64 -D__amd64__ -D_LP64 -D__LP64__ -D__BUILTIN_VA_STRUCT -Dunix -Dsun -D__SUN_PREFETCH -D__SUNPRO_CC_COMPAT=5 -I-xbuiltin -I/opt/solarisstudio12.3/prod/include/CC/Cstd -I/opt/solarisstudio12.3/prod/include/CC -I/opt/solarisstudio12.3/prod/include/cc -DNDEBUG -ptf /tmp/ccfe.1465350303.23421.04.%1.%2 -template=%none -ptx /opt/solarisstudio12.3/prod/bin/CC -ptk "-v -keeptmp -DNDEBUG -xO2 -xtarget=native -template=no%extdef -m64 -xcode=pic13 -c " -compat=5 -instlib=/opt/solarisstudio12.3/prod/lib/amd64/libCstd.a -xdbggen=no%stabs+dwarf2+usedonly -xF=%none -xbuiltin=%default -pic -xldscope=global -xivdep=loop -O2 test.cxx -o /tmp/ccfe.1465350303.23421.01.ir -s /tmp/ccfe.1465350303.23421.02.sd 2> /tmp/ccfe.1465350303.23421.03.err
/opt/solarisstudio12.3/prod/bin/iropt -Qy -O2 -fstore -xarch=ssse3 -m64 -xchip=core2 "-xcache=32/64/8:4096/64/16" -fsimple=0 -fstore -k -xbuiltin=%default -I -xprefetch=auto,explicit -xprefetch_auto_type=no%indirect_array_access -xvector=no%lib,simd -F -o /tmp/iropt.1465350303.23421.05.ir -is /tmp/ccfe.1465350303.23421.02.sd /tmp/ccfe.1465350303.23421.01.ir 2> /tmp/iropt.1465350303.23421.06.err
/opt/solarisstudio12.3/prod/bin/ir2hf -Qy -O2 -xbuiltin=%default -m64 /tmp/iropt.1465350303.23421.05.ir /tmp/ccfe.1465350303.23421.02.sd /tmp/ir2hf.1465350303.23421.07.hf
/opt/solarisstudio12.3/prod/bin/ube -Qy -verbose -iropt -O2 -fstore -comdat -m64 -xarch=ssse3 -xchip=core2 "-xcache=32/64/8:4096/64/16" -xannotate=yes -fsimple=0 -ZW -fstore -pic -xbuiltin=%default -xprefetch=auto,explicit -xthreadvar=dynamic -fbe /opt/solarisstudio12.3/prod/bin/fbe -ipo test.o -S /tmp/ube.1465350303.23421.08.s /tmp/ir2hf.1465350303.23421.07.hf
/opt/solarisstudio12.3/prod/bin/fbe -Qy -xarch=amd64 -xchip=core2 -warn=%none --divide -o test.o /tmp/ube.1465350303.23421.08.s
Assembler:
"", line 1 : Illegal flag (-)
CC: fbe failed for test.cxx
$ cat /tmp/ube.1465350303.23421.08.s
.file "test.cxx"
.code64
.set .simple_nop, 0x90
.globl main
.type main, @function
.globl __1cDstdNbasic_ostream4Ccn0ALchar_traits4Cc___2l6Mi_r1_
.type __1cDstdNbasic_ostream4Ccn0ALchar_traits4Cc___2l6Mi_r1_, @function
.symbolic __1cDstdEendl4Ccn0ALchar_traits4Cc___6Frn0ANbasic_ostream3CTACTB___4_
.globl __1cDstdEendl4Ccn0ALchar_traits4Cc___6Frn0ANbasic_ostream3CTACTB___4_
.type __1cDstdEendl4Ccn0ALchar_traits4Cc___6Frn0ANbasic_ostream3CTACTB___4_, @function
.globl __1cDstdNbasic_ostream4Ccn0ALchar_traits4Cc___2l6MpFr1_2_2_
.type __1cDstdNbasic_ostream4Ccn0ALchar_traits4Cc___2l6MpFr1_2_2_, @function
.globl __1cDstdNbasic_ostream4Ccn0ALchar_traits4Cc___Dput6Mc_r1_
.type __1cDstdNbasic_ostream4Ccn0ALchar_traits4Cc___Dput6Mc_r1_, @function
.globl __1cDstdNbasic_ostream4Ccn0ALchar_traits4Cc___Fflush6M_r1_
.type __1cDstdNbasic_ostream4Ccn0ALchar_traits4Cc___Fflush6M_r1_, @function
.local Dlrodata.lrodata
.local Dldata.ldata
.globl __fsr_init_value
__fsr_init_value = 0
.weak __SUNW_ABI2_cpp_personality
.ident "iropt: Sun Compiler Common 12.3 SunOS_i386 2011/11/16"
.ident "ir2hf: Sun Compiler Common 12.3 SunOS_i386 2011/11/16"
.ident "ube: Sun Compiler Common 12.3 SunOS_i386 2011/11/16"
.section .text,"ax"
.align 16,.simple_nop
main:
.CG2:
.CG3:
push %rbp
.CG4:
movq %rsp,%rbp
.CG5:
movl %edi,%esi
movq __1cDstdEcout_@GOTPCREL(%rip),%rdi
.CG6: call __1cDstdNbasic_ostream4Ccn0ALchar_traits4Cc___2l6Mi_r1_@PLT
movq __1cDstdEendl4Ccn0ALchar_traits4Cc___6Frn0ANbasic_ostream3CTACTB___4_@GOTPCREL(%rip),%rsi
movq %rax,%rdi
.CG7: call __1cDstdNbasic_ostream4Ccn0ALchar_traits4Cc___2l6MpFr1_2_2_@PLT
xorl %eax,%eax
leave
ret
.CG8:
.size main, . - main
.CG9:
.CGA:
.CGB:
.group __1cDstdEendl4Ccn0ALchar_traits4Cc___6Frn0ANbasic_ostream3CTACTB___4_,.text%__1cDstdEendl4Ccn0ALchar_traits4Cc___6Frn0ANbasic_ostream3CTACTB___4_,#comdat
.section .text%__1cDstdEendl4Ccn0ALchar_traits4Cc___6Frn0ANbasic_ostream3CTACTB___4_,"ax"
.align 16,.simple_nop
__1cDstdEendl4Ccn0ALchar_traits4Cc___6Frn0ANbasic_ostream3CTACTB___4_:
.CGE:
.CGF:
push %rbp
.CG10:
movq %rsp,%rbp
.CG11:
push %rbx
.CG12:
subq $8,%rsp
movq %rdi,%rbx
movl $10,%esi
.CG13: call __1cDstdNbasic_ostream4Ccn0ALchar_traits4Cc___Dput6Mc_r1_@PLT
movq %rbx,%rdi
.CG14: call __1cDstdNbasic_ostream4Ccn0ALchar_traits4Cc___Fflush6M_r1_@PLT
movq %rbx,%rax
addq $8,%rsp
pop %rbx
leave
ret
.CG15:
.size __1cDstdEendl4Ccn0ALchar_traits4Cc___6Frn0ANbasic_ostream3CTACTB___4_, . - __1cDstdEendl4Ccn0ALchar_traits4Cc___6Frn0ANbasic_ostream3CTACTB___4_
.CG16:
.CG17:
.CG18:
.section .data,"aw"
Ddata.data: / Offset 0
.section .bss,"aw"
Bbss.bss:
.section .bssf,"aw"
.section .rodata,"a"
Drodata.rodata: / Offset 0
.section .picdata,"aw"
Dpicdata.picdata: / Offset 0
.section .lbss,"awh"
.type Blbss.lbss, @object
Blbss.lbss:
.section .ldata,"awh"
Dldata.ldata: / Offset 0
.type Dldata.ldata, @object
.section .lrodata,"ah"
Dlrodata.lrodata: / Offset 0
.type Dlrodata.lrodata, @object
.group __1cDstdEendl4Ccn0ALchar_traits4Cc___6Frn0ANbasic_ostream3CTACTB___4_,.eh_frame%__1cDstdEendl4Ccn0ALchar_traits4Cc___6Frn0ANbasic_ostream3CTACTB___4_,#comdat
.section .eh_frame%__1cDstdEendl4Ccn0ALchar_traits4Cc___6Frn0ANbasic_ostream3CTACTB___4_,"aL",link=.text%__1cDstdEendl4Ccn0ALchar_traits4Cc___6Frn0ANbasic_ostream3CTACTB___4_,@unwind
.Lframe1:
.long .LECIE1-.LBCIE1
.LBCIE1:
.long 0x0
.byte 0x1
.string "zPR"
.uleb128 0x1
.sleb128 -8
.byte 0x10
.uleb128 6
.byte 0x1b
.long __SUNW_ABI2_cpp_personality@plt
.byte 0x1b
.byte 0xc
.uleb128 0x7
.uleb128 0x8
.byte 0x90
.uleb128 0x1
.byte 0x8
.byte 0xc
.byte 0x8
.byte 0xd
.byte 0x8
.byte 0xe
.byte 0x8
.byte 0xf
.align 8
.LECIE1:
.long .LEFDE0-.LBFDE0
.LBFDE0:
.long .LBFDE0-.Lframe1
.long .CGF@rel
.long .CG15-.CGF
.uleb128 0x0
.cfa_advance_loc .CG10-.CGF
.byte 0xe
.uleb128 0x10
.byte 0x86
.uleb128 0x2
.cfa_advance_loc .CG11-.CG10
.byte 0xd
.uleb128 0x6
.cfa_advance_loc .CG12-.CG11
.byte 0x83
.uleb128 0x3
.align 8
.LEFDE0:
.section .eh_frame,"aL",link=.text,@unwind
.Lframe2:
.long .LECIE2-.LBCIE2
.LBCIE2:
.long 0x0
.byte 0x1
.string "zPR"
.uleb128 0x1
.sleb128 -8
.byte 0x10
.uleb128 6
.byte 0x1b
.long __SUNW_ABI2_cpp_personality@plt
.byte 0x1b
.byte 0xc
.uleb128 0x7
.uleb128 0x8
.byte 0x90
.uleb128 0x1
.byte 0x8
.byte 0xc
.byte 0x8
.byte 0xd
.byte 0x8
.byte 0xe
.byte 0x8
.byte 0xf
.align 8
.LECIE2:
.long .LEFDE1-.LBFDE1
.LBFDE1:
.long .LBFDE1-.Lframe2
.long .CG3@rel
.long .CG8-.CG3
.uleb128 0x0
.cfa_advance_loc .CG4-.CG3
.byte 0xe
.uleb128 0x10
.byte 0x86
.uleb128 0x2
.cfa_advance_loc .CG5-.CG4
.byte 0xd
.uleb128 0x6
.align 8
.LEFDE1:
.section .annotate
/ ANNOTATION: Header
.string "anotate"
.4byte 6
.4byte 0
.8byte .CG1 - .CG0
.CG0:
/ ANNOTATION: Module
.4byte 0
.4byte .CG1A - .CG19
.CG19:
.8byte .text
.8byte .CGB - .text
.CG1A:
/ ANNOTATION: Function
.4byte 1
.4byte .CG1C - .CG1B
.CG1B:
.8byte .CG2
.8byte .CGB - .CG2
.4byte -2145086976
.4byte 0
.CG1C:
.CG1:
/ ANNOTATION: End
.group __1cDstdEendl4Ccn0ALchar_traits4Cc___6Frn0ANbasic_ostream3CTACTB___4_,.annotate%__1cDstdEendl4Ccn0ALchar_traits4Cc___6Frn0ANbasic_ostream3CTACTB___4_,#comdat
.section .annotate%__1cDstdEendl4Ccn0ALchar_traits4Cc___6Frn0ANbasic_ostream3CTACTB___4_
/ ANNOTATION: Header
.string "anotate"
.4byte 6
.4byte 0
.8byte .CGD - .CGC
.CGC:
/ ANNOTATION: Module
.4byte 0
.4byte .CG1E - .CG1D
.CG1D:
.8byte .text%__1cDstdEendl4Ccn0ALchar_traits4Cc___6Frn0ANbasic_ostream3CTACTB___4_
.8byte .CG18 - .text%__1cDstdEendl4Ccn0ALchar_traits4Cc___6Frn0ANbasic_ostream3CTACTB___4_
.CG1E:
/ ANNOTATION: Function
.4byte 1
.4byte .CG20 - .CG1F
.CG1F:
.8byte .CGE
.8byte .CG18 - .CGE
.4byte -2145089020
.4byte 0
.CG20:
.CGD:
/ ANNOTATION: End
/ Begin sdCreateSection : .debug_info
/ Section Info: link_name/strtab=, entsize=0x1, adralign=0x1, flags=0x0
/ Section Data Blocks:
/ reloc[0]: knd=2, off=14, siz=8, lab1=.debug_abbrev, lab2=, loff=0
/ reloc[1]: knd=2, off=301, siz=8, lab1=.debug_line, lab2=, loff=0
.section .debug_info
.byte 0xff,0xff,0xff,0xff,0x2a,0x01,0x00,0x00
.byte 0x00,0x00,0x00,0x00,0x02,0x00
.8byte .debug_abbrev
.byte 0x08,0x01
.ascii "test.cxx\0"
.byte 0x04
.ascii "/export/home/jwalton/cryptopp/\0"
.ascii " /opt/solarisstudio12.3/prod/bin/CC -v -keeptmp -DNDEBUG -xO2 -xtarget=native -template=no%extdef -m64 -xcode=pic13 -c test.cxx\0"
.ascii "ptf;ptx;ptk;pic;s;;O;R=5.11<<Sun C++ 5.12 SunOS_i386 2011/11/16 (ccfe)>>;A=2;backend;raw;cd;\0"
.ascii "DBG_GEN 5.3.3\0"
.8byte .debug_line
.byte 0x00
/ End sdCreateSection
/ Begin sdCreateSection : .debug_line
/ Section Info: link_name/strtab=, entsize=0x1, adralign=0x1, flags=0x0
/ Section Data Blocks:
.section .debug_line
.byte 0xff,0xff,0xff,0xff,0x26,0x00,0x00,0x00
.byte 0x00,0x00,0x00,0x00,0x02,0x00,0x1c,0x00
.byte 0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x00
.byte 0xff,0x04,0x0a,0x00,0x01,0x01,0x01,0x01
.byte 0x00,0x00,0x00,0x01,0x00,0x74,0x65,0x73
.byte 0x74,0x2e,0x63,0x78,0x78,0x00,0x00,0x00
.byte 0x00,0x00
/ End sdCreateSection
/ Begin sdCreateSection : .debug_abbrev
/ Section Info: link_name/strtab=, entsize=0x1, adralign=0x1, flags=0x0
/ Section Data Blocks:
.section .debug_abbrev
.byte 0x01,0x11,0x00,0x03,0x08,0x13,0x0b,0x1b
.byte 0x08,0x85,0x44,0x08,0x87,0x44,0x08,0x25
.byte 0x08,0x10,0x07,0x00,0x00,0x00
/ End sdCreateSection
Upvotes: 0
Views: 263
Reputation: 96233
Your problem is -Wa,--divide
which according to multiple sources --divide
is not a valid parameter to the assembler. For example see https://docs.oracle.com/cd/E37069_01/html/E54439/fbe-1.html for accepted parameters.
To arrive at this conclusion I started with your -v
output. The key lines I saw were that it failed right after running fbe, and that the error was Assembler: "", line 1 : Illegal flag (-)
. I was pretty sure the line 1 part was a red herring so I went straight to the Illegal flag (-)
part, because that's exactly the error you'd get if --divide
was actually interpreted as -- -d -i -v -i -d -e
which is a totally common way that unix programs interpret their arguments. So then I just googled "fbe command line arguments" (or something similar) to see if that was a valid parameter.
Upvotes: 5