diff options
author | Renlin Li <renlin.li@arm.com> | 2016-02-16 10:00:29 +0000 |
---|---|---|
committer | Renlin Li <renlin.li@arm.com> | 2016-02-16 10:04:41 +0000 |
commit | 671eeb286f0523f13ee8a16a9a1900bb656496ca (patch) | |
tree | 6db2e94bab199ff179b1bcfcd5c14cd43be72e46 /gas | |
parent | 64bfc2584c013e7c60caceeffbad8250558e3cd2 (diff) | |
download | gdb-671eeb286f0523f13ee8a16a9a1900bb656496ca.zip gdb-671eeb286f0523f13ee8a16a9a1900bb656496ca.tar.gz gdb-671eeb286f0523f13ee8a16a9a1900bb656496ca.tar.bz2 |
[PR19620][GAS][AArch64]Remove mov[z,k,n] relocation symbol name restriction.
In AArch64 gas, register name or string starts with valid register name
is not allowed as symbol name for mov[z,k,n] instruction.
This patch removes the restriction.
gas/
PR gas/19620
* config/tc-aarch64.c (parse_half): Remove restrictions on symbol name.
* testsuite/gas/aarch64/movw_label.d: New.
* testsuite/gas/aarch64/movw_label.s: New.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 7 | ||||
-rw-r--r-- | gas/config/tc-aarch64.c | 10 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/movw_label.d | 22 | ||||
-rw-r--r-- | gas/testsuite/gas/aarch64/movw_label.s | 10 |
4 files changed, 40 insertions, 9 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index c4bd331..f018268 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,10 @@ +2016-02-16 Renlin Li <renlin.li@arm.com> + + PR gas/19620 + * config/tc-aarch64.c (parse_half): Remove restrictions on symbol name. + * testsuite/gas/aarch64/movw_label.d: New. + * testsuite/gas/aarch64/movw_label.s: New. + 2016-02-15 Vinay Kumar G. <Vinay.G@kpit.com> PR gas/19556 diff --git a/gas/config/tc-aarch64.c b/gas/config/tc-aarch64.c index 5cb9ab5..dfcbd52 100644 --- a/gas/config/tc-aarch64.c +++ b/gas/config/tc-aarch64.c @@ -3473,10 +3473,8 @@ parse_address_reloc (char **str, aarch64_opnd_info *operand) static bfd_boolean parse_half (char **str, int *internal_fixup_p) { - char *p, *saved; - int dummy; + char *p = *str; - p = *str; skip_past_char (&p, '#'); gas_assert (internal_fixup_p); @@ -3506,12 +3504,6 @@ parse_half (char **str, int *internal_fixup_p) else *internal_fixup_p = 1; - /* Avoid parsing a register as a general symbol. */ - saved = p; - if (aarch64_reg_parse_32_64 (&p, 0, 0, &dummy, &dummy) != PARSE_FAIL) - return FALSE; - p = saved; - if (! my_get_expression (&inst.reloc.exp, &p, GE_NO_PREFIX, 1)) return FALSE; diff --git a/gas/testsuite/gas/aarch64/movw_label.d b/gas/testsuite/gas/aarch64/movw_label.d new file mode 100644 index 0000000..78ef63f --- /dev/null +++ b/gas/testsuite/gas/aarch64/movw_label.d @@ -0,0 +1,22 @@ +#objdump: -dr +#name: movw relocation symbol name + +.*: file format .* + +Disassembly of section \.text: + +0000000000000000 <.*>: + 0: f2800002 movk x2, #0x0 + 0: R_AARCH64_MOVW_UABS_G0_NC x3.22 + 4: f2800002 movk x2, #0x0 + 4: R_AARCH64_MOVW_UABS_G0_NC x8 + 8: f2800002 movk x2, #0x0 + 8: R_AARCH64_MOVW_UABS_G0_NC w3 + c: f2800002 movk x2, #0x0 + c: R_AARCH64_MOVW_UABS_G0_NC w8.22 + 10: f2800002 movk x2, #0x0 + 10: R_AARCH64_MOVW_UABS_G0_NC sp + 14: f2800002 movk x2, #0x0 + 14: R_AARCH64_MOVW_UABS_G0_NC wzr + 18: f2800002 movk x2, #0x0 + 18: R_AARCH64_MOVW_UABS_G0_NC xzr diff --git a/gas/testsuite/gas/aarch64/movw_label.s b/gas/testsuite/gas/aarch64/movw_label.s new file mode 100644 index 0000000..6e7bae5 --- /dev/null +++ b/gas/testsuite/gas/aarch64/movw_label.s @@ -0,0 +1,10 @@ + .text + movk x2, #:abs_g0_nc: x3.22 + movk x2, #:abs_g0_nc: x8 + + movk x2, #:abs_g0_nc: w3 + movk x2, #:abs_g0_nc: w8.22 + + movk x2, #:abs_g0_nc: sp + movk x2, #:abs_g0_nc: wzr + movk x2, #:abs_g0_nc: xzr |