https://sourceware.org/bugzilla/show_bug.cgi?id=23013
Peter Bergner <bergner at vnet dot ibm.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Last reconfirmed| |2018-03-29 Ever confirmed|0 |1 --- Comment #1 from Peter Bergner <bergner at vnet dot ibm.com> --- Maybe Alan can let us know the history of this, but the default cpu gas assembles for is much more conservative (ie, older) than the default cpu objdump disassembles for. This looks to be on purpose. The 3 operand dcbt instruction (on Power server systems) is new with power4, so you can assemble the 3 operand form just fine if you use the -mpower4 (or newer) assembler option: bergner@genoa:~/binutils/BUGS/PR23013$ cat bug.s lab_1: dcbt 0,10,8 bergner@genoa:~/binutils/BUGS/PR23013$ /home/bergner/binutils/build/binutils-pr23013-debug/gas/as-new bug.s -o bug.o bug.s: Assembler messages: bug.s:2: Error: junk at end of line: `8' bergner@genoa:~/binutils/BUGS/PR23013$ /home/bergner/binutils/build/binutils-pr23013-debug/gas/as-new -mpower4 bug.s -o bug.o bergner@genoa:~/binutils/BUGS/PR23013$ /home/bergner/binutils/build/binutils-pr23013-debug/binutils/objdump -d bug.o [snip] 0000000000000000 <lab_1>: 0: 2c 52 00 7d dcbt 0,r10,8 That said, 64-bit LE is only supported on power8 and later hardware, so if we're targeting powerpc64le-*, we might as well set a more reasonable default cpu (ie, power8). The following patch accomplishes that: diff --git a/gas/config/tc-ppc.c b/gas/config/tc-ppc.c index ff76221..e3d5d84 100644 --- a/gas/config/tc-ppc.c +++ b/gas/config/tc-ppc.c @@ -1403,7 +1403,14 @@ ppc_set_cpu (void) if ((ppc_cpu & ~(ppc_cpu_t) PPC_OPCODE_ANY) == 0) { if (ppc_obj64) - ppc_cpu |= PPC_OPCODE_PPC | PPC_OPCODE_64; + if (target_big_endian) + ppc_cpu |= PPC_OPCODE_PPC | PPC_OPCODE_64; + else + /* The minimum supported cpu for 64-bit little-endian is power8. */ + ppc_cpu |= PPC_OPCODE_PPC | PPC_OPCODE_ISEL | PPC_OPCODE_64 + | PPC_OPCODE_POWER4 | PPC_OPCODE_POWER5 | PPC_OPCODE_POWER6 + | PPC_OPCODE_POWER7 | PPC_OPCODE_POWER8 + | PPC_OPCODE_ALTIVEC | PPC_OPCODE_VSX; else if (strncmp (default_os, "aix", 3) == 0 && default_os[3] >= '4' && default_os[3] <= '9') ppc_cpu |= PPC_OPCODE_COMMON; With that patch, we now get (on LE, BE would still need -mpower4): bergner@genoa:~/binutils/BUGS/PR23013$ cat bug.s lab_1: dcbt 0,10,8 bergner@genoa:~/binutils/BUGS/PR23013$ /home/bergner/binutils/build/binutils-pr23013-debug/gas/as-new bug.s -o bug.o bergner@genoa:~/binutils/BUGS/PR23013$ /home/bergner/binutils/build/binutils-pr23013-debug/binutils/objdump -d bug.o [snip] 0000000000000000 <lab_1>: 0: 2c 52 00 7d dcbt 0,r10,8 -- You are receiving this mail because: You are on the CC list for the bug. _______________________________________________ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils