aboutsummaryrefslogtreecommitdiff
path: root/gas/config/tc-aarch64.h
diff options
context:
space:
mode:
authorDr Philipp Tomsich <philipp.tomsich@theobroma-systems.com>2014-10-30 10:53:09 +0000
committerNick Clifton <nickc@redhat.com>2014-10-30 10:53:09 +0000
commitf803aa8eadb24ea7152057584c47648fb02e4716 (patch)
tree21f2c7a08b5e6faa1dac08dc88eb14e89ef4ea2e /gas/config/tc-aarch64.h
parent76ca31c09f629e670ffd57e79c0604db7ddecc9e (diff)
downloadgdb-f803aa8eadb24ea7152057584c47648fb02e4716.zip
gdb-f803aa8eadb24ea7152057584c47648fb02e4716.tar.gz
gdb-f803aa8eadb24ea7152057584c47648fb02e4716.tar.bz2
Remove the artificial limit on code alignment through the use of the
fixed part of a fragment for output generation only, which required MAX_MEM_FOR_RS_ALIGN_CODE to be large enough to hold the maximum pad. * config/tc-aarch64.h (MAX_MEM_FOR_RS_ALIGN_CODE): Define to 7. * config/tc-aarch64.c (aarch64_handle_align): Rewrite to handle large alignments with a constant fragment size of MAX_MEM_FOR_RS_ALIGN_CODE.
Diffstat (limited to 'gas/config/tc-aarch64.h')
-rw-r--r--gas/config/tc-aarch64.h7
1 files changed, 4 insertions, 3 deletions
diff --git a/gas/config/tc-aarch64.h b/gas/config/tc-aarch64.h
index 3d4ffc5..1fad6ce 100644
--- a/gas/config/tc-aarch64.h
+++ b/gas/config/tc-aarch64.h
@@ -116,8 +116,9 @@ void aarch64_copy_symbol_attributes (symbolS *, symbolS *);
#define TC_CONS_FIX_NEW(f,w,s,e,r) cons_fix_new_aarch64 ((f), (w), (s), (e))
-/* Max code alignment is 32 bytes */
-#define MAX_MEM_FOR_RS_ALIGN_CODE 31
+/* Max space for a rs_align_code fragment is 3 unaligned bytes
+ (fr_fix) plus 4 bytes to contain the repeating NOP (fr_var). */
+#define MAX_MEM_FOR_RS_ALIGN_CODE 7
/* For frags in code sections we need to record whether they contain
code or data. */
@@ -141,7 +142,7 @@ struct aarch64_frag_type
#define md_do_align(N, FILL, LEN, MAX, LABEL) \
if (FILL == NULL && (N) != 0 && ! need_pass_2 && subseg_text_p (now_seg)) \
{ \
- aarch64_frag_align_code (N, MAX); \
+ frag_align_code (N, MAX); \
goto LABEL; \
}