diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2018-03-08 06:31:32 -0800 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2018-03-08 06:31:52 -0800 |
commit | bd5dea8822e515faf305690ca5c5281132d95587 (patch) | |
tree | c4b59a27cd8a3344dd7d95a5a88c18a60a0dc76b /include | |
parent | 4ef0bef68cfc777e59156fce1563583c0ffb76d9 (diff) | |
download | gdb-bd5dea8822e515faf305690ca5c5281132d95587.zip gdb-bd5dea8822e515faf305690ca5c5281132d95587.tar.gz gdb-bd5dea8822e515faf305690ca5c5281132d95587.tar.bz2 |
x86: Remove support for old (<= 2.8.1) versions of gcc
Old (<= 2.8.1) versions of gcc generate broken fsubp, fsubrp, fdivp and
fdivrp instructions. Assembler translates them to correct ones with a
warning:
[hjl@gnu-cfl-1 gas]$ cat x.s
fsubp %st(3),%st
[hjl@gnu-cfl-1 gas]$ gcc -c x.s
x.s: Assembler messages:
x.s:1: Warning: translating to `fsubp %st,%st(3)'
[hjl@gnu-cfl-1 gas]$
This patch removes support for old (<= 2.8.1) versions of gcc:
[hjl@gnu-cfl-1 gas]$ ./as-new -o x.o x.s
x.s: Assembler messages:
x.s:1: Error: operand type mismatch for `fsubp'
[hjl@gnu-cfl-1 gas]$
gas/
* NEWS: Mention -mold-gcc removal.
* config/tc-i386.c (i386_error): Remove old_gcc_only.
(old_gcc): Removed.
(match_template): Remove old gcc support.
(OPTION_MOLD_GCC): Removed.
(OPTION_MRELAX_RELOCATIONS): Updated.
(md_longopts): Remove OPTION_MOLD_GCC.
(md_parse_option): Likewise.
(md_show_usage): Remove -mold-gcc.
* testsuite/gas/i386/general.s: Convert fsub/fdiv tests for old
(<= 2.8.1) versions of gcc.
* testsuite/gas/i386/intel.s: Likewise.
* testsuite/gas/i386/general.l: Updated.
* testsuite/gas/i386/intel-intel.d: Likewise.
* testsuite/gas/i386/intel.d: Likewise.
* testsuite/gas/i386/intel.e: Likewise.
* testsuite/gas/i386/i386.exp: Don't pass -mold-gcc to general.
include/
* opcode/i386 (OLDGCC_COMPAT): Removed.
opcodes/
* i386-gen.c (opcode_modifiers): Remove OldGcc.
* i386-opc.h (OldGcc): Removed.
(i386_opcode_modifier): Remove oldgcc.
* i386-opc.tbl: Remove fsubp, fsubrp, fdivp and fdivrp
instructions for old (<= 2.8.1) versions of gcc.
* i386-tbl.h: Regenerated.
Diffstat (limited to 'include')
-rw-r--r-- | include/ChangeLog | 4 | ||||
-rw-r--r-- | include/opcode/i386.h | 6 |
2 files changed, 4 insertions, 6 deletions
diff --git a/include/ChangeLog b/include/ChangeLog index b6f98bc..529f43c 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,7 @@ +2018-03-08 H.J. Lu <hongjiu.lu@intel.com> + + * opcode/i386 (OLDGCC_COMPAT): Removed. + 2018-02-27 Thomas Preud'homme <thomas.preudhomme@arm.com> * opcode/arm.h (ARM_FEATURE_COPY): Remove macro definition. diff --git a/include/opcode/i386.h b/include/opcode/i386.h index 3b127c4..4097275 100644 --- a/include/opcode/i386.h +++ b/include/opcode/i386.h @@ -43,12 +43,6 @@ compatible instructions. */ #define SYSV386_COMPAT 1 #endif -#ifndef OLDGCC_COMPAT -/* Set non-zero to cater for old (<= 2.8.1) versions of gcc that could - generate nonsense fsubp, fsubrp, fdivp and fdivrp with operands - reversed. */ -#define OLDGCC_COMPAT SYSV386_COMPAT -#endif #define MOV_AX_DISP32 0xa0 #define POP_SEG_SHORT 0x07 |