gas: Rename .nop directive to .nops

Since directives of NO_PSEUDO_DOT targets don't have the leading '.'
and "nop" can be a valid instruction, rename .nop directive to .nops
to avoid conflict.

	* NEWS: Rename .nop to .nops.
	* doc/as.texinfo: Likewise.
	* read.c (potable): Add "nops".  Remove "nop".
	(s_nop): Renamed to ...
	(s_nops): This.
	* read.h (s_nop): Renamed to ...
	(s_nops): This.
	* write.c (cvt_frag_to_fill): Rename .nop to .nops.
	(md_generate_nops): Likewise.
	(relax_segment): Likewise.
	* testsuite/gas/i386/nop-1.d: Updated.
	* testsuite/gas/i386/nop-1.s: Likewise.
	* testsuite/gas/i386/nop-2.d: Likewise.
	* testsuite/gas/i386/nop-2.s: Likewise.
	* testsuite/gas/i386/nop-3.d: Likewise.
	* testsuite/gas/i386/nop-3.s: Likewise.
	* testsuite/gas/i386/nop-4.d: Likewise.
	* testsuite/gas/i386/nop-4.s: Likewise.
	* testsuite/gas/i386/nop-5.d: Likewise.
	* testsuite/gas/i386/nop-5.s: Likewise.
	* testsuite/gas/i386/nop-6.d: Likewise.
	* testsuite/gas/i386/nop-6.s: Likewise.
	* testsuite/gas/i386/nop-bad-1.l: Likewise.
	* testsuite/gas/i386/nop-bad-1.s: Likewise.
	* testsuite/gas/i386/x86-64-nop-1.d: Likewise.
	* testsuite/gas/i386/x86-64-nop-2.d: Likewise.
	* testsuite/gas/i386/x86-64-nop-3.d: Likewise.
	* testsuite/gas/i386/x86-64-nop-4.d: Likewise.
	* testsuite/gas/i386/x86-64-nop-5.d: Likewise.
	* testsuite/gas/i386/x86-64-nop-6.d: Likewise.
This commit is contained in:
H.J. Lu
2018-02-27 14:45:48 -08:00
parent e05cac70d8
commit 8f065d3b4a
26 changed files with 77 additions and 44 deletions

View File

@ -1,3 +1,36 @@
2018-02-27 H.J. Lu <hongjiu.lu@intel.com>
* NEWS: Rename .nop to .nops.
* doc/as.texinfo: Likewise.
* read.c (potable): Add "nops". Remove "nop".
(s_nop): Renamed to ...
(s_nops): This.
* read.h (s_nop): Renamed to ...
(s_nops): This.
* write.c (cvt_frag_to_fill): Rename .nop to .nops.
(md_generate_nops): Likewise.
(relax_segment): Likewise.
* testsuite/gas/i386/nop-1.d: Updated.
* testsuite/gas/i386/nop-1.s: Likewise.
* testsuite/gas/i386/nop-2.d: Likewise.
* testsuite/gas/i386/nop-2.s: Likewise.
* testsuite/gas/i386/nop-3.d: Likewise.
* testsuite/gas/i386/nop-3.s: Likewise.
* testsuite/gas/i386/nop-4.d: Likewise.
* testsuite/gas/i386/nop-4.s: Likewise.
* testsuite/gas/i386/nop-5.d: Likewise.
* testsuite/gas/i386/nop-5.s: Likewise.
* testsuite/gas/i386/nop-6.d: Likewise.
* testsuite/gas/i386/nop-6.s: Likewise.
* testsuite/gas/i386/nop-bad-1.l: Likewise.
* testsuite/gas/i386/nop-bad-1.s: Likewise.
* testsuite/gas/i386/x86-64-nop-1.d: Likewise.
* testsuite/gas/i386/x86-64-nop-2.d: Likewise.
* testsuite/gas/i386/x86-64-nop-3.d: Likewise.
* testsuite/gas/i386/x86-64-nop-4.d: Likewise.
* testsuite/gas/i386/x86-64-nop-5.d: Likewise.
* testsuite/gas/i386/x86-64-nop-6.d: Likewise.
2018-02-27 H.J. Lu <hongjiu.lu@intel.com> 2018-02-27 H.J. Lu <hongjiu.lu@intel.com>
PR gas/22871 PR gas/22871

View File

@ -3,7 +3,7 @@
* Add -O[2|s] command-line options to x86 assembler to enable alternate * Add -O[2|s] command-line options to x86 assembler to enable alternate
shorter instruction encoding. shorter instruction encoding.
* Add support for .nop directive. It is currently supported only for * Add support for .nops directive. It is currently supported only for
x86 targets. x86 targets.
Changes in 2.30: Changes in 2.30:

View File

@ -4482,7 +4482,7 @@ Some machine configurations provide additional directives.
* MRI:: @code{.mri @var{val}} * MRI:: @code{.mri @var{val}}
* Noaltmacro:: @code{.noaltmacro} * Noaltmacro:: @code{.noaltmacro}
* Nolist:: @code{.nolist} * Nolist:: @code{.nolist}
* Nop:: @code{.nop @var{size}[, @var{control}]} * Nops:: @code{.nops @var{size}[, @var{control}]}
* Octa:: @code{.octa @var{bignums}} * Octa:: @code{.octa @var{bignums}}
* Offset:: @code{.offset @var{loc}} * Offset:: @code{.offset @var{loc}}
* Org:: @code{.org @var{new-lc}, @var{fill}} * Org:: @code{.org @var{new-lc}, @var{fill}}
@ -6199,10 +6199,10 @@ internal counter (which is zero initially). @code{.list} increments the
counter, and @code{.nolist} decrements it. Assembly listings are counter, and @code{.nolist} decrements it. Assembly listings are
generated whenever the counter is greater than zero. generated whenever the counter is greater than zero.
@node Nop @node Nops
@section @code{.nop @var{size}[, @var{control}]} @section @code{.nops @var{size}[, @var{control}]}
@cindex @code{nop} directive @cindex @code{nops} directive
@cindex filling memory with no-op instructions @cindex filling memory with no-op instructions
This directive emits @var{size} bytes filled with no-op instructions. This directive emits @var{size} bytes filled with no-op instructions.
@var{size} is absolute expression, which must be a positve value. @var{size} is absolute expression, which must be a positve value.

View File

@ -417,6 +417,7 @@ static const pseudo_typeS potable[] = {
{"noformat", s_ignore, 0}, {"noformat", s_ignore, 0},
{"nolist", listing_list, 0}, /* Turn listing off. */ {"nolist", listing_list, 0}, /* Turn listing off. */
{"nopage", listing_nopage, 0}, {"nopage", listing_nopage, 0},
{"nops", s_nops, 0},
{"octa", cons, 16}, {"octa", cons, 16},
{"offset", s_struct, 0}, {"offset", s_struct, 0},
{"org", s_org, 0}, {"org", s_org, 0},
@ -442,7 +443,6 @@ static const pseudo_typeS potable[] = {
/* size */ /* size */
{"space", s_space, 0}, {"space", s_space, 0},
{"skip", s_space, 0}, {"skip", s_space, 0},
{"nop", s_nop, 0},
{"sleb128", s_leb128, 1}, {"sleb128", s_leb128, 1},
{"spc", s_ignore, 0}, {"spc", s_ignore, 0},
{"stabd", s_stab, 'd'}, {"stabd", s_stab, 'd'},
@ -3510,7 +3510,7 @@ s_space (int mult)
} }
void void
s_nop (int ignore ATTRIBUTE_UNUSED) s_nops (int ignore ATTRIBUTE_UNUSED)
{ {
expressionS exp; expressionS exp;
expressionS val; expressionS val;
@ -3556,7 +3556,7 @@ s_nop (int ignore ATTRIBUTE_UNUSED)
} }
} }
else else
as_bad (_("unsupported variable nop control in .nop directive")); as_bad (_("unsupported variable nop control in .nops directive"));
demand_empty_rest_of_line (); demand_empty_rest_of_line ();
} }

View File

@ -206,7 +206,7 @@ extern void s_purgem (int);
extern void s_rept (int); extern void s_rept (int);
extern void s_set (int); extern void s_set (int);
extern void s_space (int mult); extern void s_space (int mult);
extern void s_nop (int); extern void s_nops (int);
extern void s_stab (int what); extern void s_stab (int what);
extern void s_struct (int); extern void s_struct (int);
extern void s_text (int); extern void s_text (int);

View File

@ -1,5 +1,5 @@
#objdump: -drw #objdump: -drw
#name: i386 .nop 1 #name: i386 .nops 1
.*: +file format .* .*: +file format .*

View File

@ -1,21 +1,21 @@
.text .text
single: single:
.nop 0 .nops 0
nop nop
pseudo_1: pseudo_1:
.nop 1 .nops 1
pseudo_8: pseudo_8:
.nop 8 .nops 8
pseudo_8_4: pseudo_8_4:
.nop 8, 4 .nops 8, 4
pseudo_20: pseudo_20:
.nop 20 .nops 20
pseudo_30: pseudo_30:
.nop 30 .nops 30
xor %eax, %eax xor %eax, %eax

View File

@ -1,5 +1,5 @@
#objdump: -drw -Mi8086 #objdump: -drw -Mi8086
#name: i386 .nop 2 #name: i386 .nops 2
.*: +file format .* .*: +file format .*

View File

@ -1,22 +1,22 @@
.text .text
.code16 .code16
single: single:
.nop 0 .nops 0
nop nop
pseudo_1: pseudo_1:
.nop 1 .nops 1
pseudo_8: pseudo_8:
.nop 8 .nops 8
pseudo_8_4: pseudo_8_4:
.nop 8, 4 .nops 8, 4
pseudo_20: pseudo_20:
.nop 20 .nops 20
pseudo_30: pseudo_30:
.nop 30 .nops 30
xor %eax, %eax xor %eax, %eax

View File

@ -1,5 +1,5 @@
#objdump: -drw #objdump: -drw
#name: i386 .nop 3 #name: i386 .nops 3
.*: +file format .* .*: +file format .*

View File

@ -4,7 +4,7 @@ _start:
140: 140:
testl %eax, %eax testl %eax, %eax
141: 141:
.nop -(((144f-143f)-(141b-140b)) > 0)*((144f-143f)-(141b-140b)),7 .nops -(((144f-143f)-(141b-140b)) > 0)*((144f-143f)-(141b-140b)),7
142: 142:
xor %eax, %eax xor %eax, %eax
.pushsection .altinstr_replacement,"ax" .pushsection .altinstr_replacement,"ax"

View File

@ -1,5 +1,5 @@
#objdump: -drw #objdump: -drw
#name: i386 .nop 4 #name: i386 .nops 4
.*: +file format .* .*: +file format .*

View File

@ -4,7 +4,7 @@ _start:
140: 140:
testl %eax, %eax testl %eax, %eax
141: 141:
.nop -(((144f-143f)-(141b-140b)) > 0)*((144f-143f)-(141b-140b)) .nops -(((144f-143f)-(141b-140b)) > 0)*((144f-143f)-(141b-140b))
142: 142:
xor %eax, %eax xor %eax, %eax
.pushsection .altinstr_replacement,"ax" .pushsection .altinstr_replacement,"ax"

View File

@ -1,5 +1,5 @@
#objdump: -drw #objdump: -drw
#name: i386 .nop 5 #name: i386 .nops 5
.*: +file format .* .*: +file format .*

View File

@ -4,7 +4,7 @@ _start:
140: 140:
testl %eax, %eax testl %eax, %eax
141: 141:
.nop -(((144f-143f)-(141b-140b)) > 0)*((144f-143f)-(141b-140b)),6 .nops -(((144f-143f)-(141b-140b)) > 0)*((144f-143f)-(141b-140b)),6
142: 142:
xor %eax, %eax xor %eax, %eax
.pushsection .altinstr_replacement,"ax" .pushsection .altinstr_replacement,"ax"

View File

@ -1,5 +1,5 @@
#objdump: -drw #objdump: -drw
#name: i386 .nop 6 #name: i386 .nops 6
.*: +file format .* .*: +file format .*

View File

@ -1,5 +1,5 @@
.macro mknops nr_bytes .macro mknops nr_bytes
.nop \nr_bytes, 9 .nops \nr_bytes, 9
.endm .endm
.macro ALTERNATIVE .macro ALTERNATIVE

View File

@ -1,4 +1,4 @@
.*: Assembler messages: .*: Assembler messages:
.*:2: Warning: negative nop control byte, ignored .*:2: Warning: negative nop control byte, ignored
.*:4: Warning: \.space, \.nop or \.fill with negative value, ignored .*:4: Warning: \.space, \.nops or \.fill with negative value, ignored
.*:3: Error: invalide single nop size: 20 \(expect within \[0, [0-9]+\]\) .*:3: Error: invalide single nop size: 20 \(expect within \[0, [0-9]+\]\)

View File

@ -1,4 +1,4 @@
.text .text
.nop 100, -2 .nops 100, -2
.nop 100, 20 .nops 100, 20
.nop -1 .nops -1

View File

@ -1,6 +1,6 @@
#source: nop-1.s #source: nop-1.s
#objdump: -drw #objdump: -drw
#name: x86-64 .nop 1 #name: x86-64 .nops 1
.*: +file format .* .*: +file format .*

View File

@ -1,6 +1,6 @@
#source: nop-2.s #source: nop-2.s
#objdump: -drw -Mi8086 #objdump: -drw -Mi8086
#name: x86-64 .nop 2 #name: x86-64 .nops 2
.*: +file format .* .*: +file format .*

View File

@ -1,6 +1,6 @@
#source: nop-3.s #source: nop-3.s
#objdump: -drw #objdump: -drw
#name: x86-64 .nop 3 #name: x86-64 .nops 3
.*: +file format .* .*: +file format .*

View File

@ -1,6 +1,6 @@
#source: nop-4.s #source: nop-4.s
#objdump: -drw #objdump: -drw
#name: x86-64 .nop 4 #name: x86-64 .nops 4
.*: +file format .* .*: +file format .*

View File

@ -1,6 +1,6 @@
#source: nop-5.s #source: nop-5.s
#objdump: -drw #objdump: -drw
#name: x86-64 .nop 5 #name: x86-64 .nops 5
.*: +file format .* .*: +file format .*

View File

@ -1,6 +1,6 @@
#source: nop-6.s #source: nop-6.s
#objdump: -drw #objdump: -drw
#name: x86-64 .nop 6 #name: x86-64 .nops 6
.*: +file format .* .*: +file format .*

View File

@ -453,7 +453,7 @@ skip_align:
if (fragP->fr_offset < 0) if (fragP->fr_offset < 0)
{ {
as_bad_where (fragP->fr_file, fragP->fr_line, as_bad_where (fragP->fr_file, fragP->fr_line,
_("attempt to .org/.space/.nop backwards? (%ld)"), _("attempt to .org/.space/.nops backwards? (%ld)"),
(long) fragP->fr_offset); (long) fragP->fr_offset);
fragP->fr_offset = 0; fragP->fr_offset = 0;
} }
@ -1587,7 +1587,7 @@ md_generate_nops (fragS *f ATTRIBUTE_UNUSED,
offsetT count ATTRIBUTE_UNUSED, offsetT count ATTRIBUTE_UNUSED,
int control ATTRIBUTE_UNUSED) int control ATTRIBUTE_UNUSED)
{ {
as_bad (_("unimplemented .nop directive")); as_bad (_("unimplemented .nops directive"));
} }
#endif #endif
@ -2840,7 +2840,7 @@ relax_segment (struct frag *segment_frag_root, segT segment, int pass)
} }
as_warn_where (fragP->fr_file, fragP->fr_line, as_warn_where (fragP->fr_file, fragP->fr_line,
_(".space, .nop or .fill with negative value, ignored")); _(".space, .nops or .fill with negative value, ignored"));
fragP->fr_symbol = 0; fragP->fr_symbol = 0;
} }
else else