aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2001-05-06 10:11:33 +0000
committerNick Clifton <nickc@redhat.com>2001-05-06 10:11:33 +0000
commitd8708f403e7d1df1165e12d4141506a804698666 (patch)
tree5417fe83ae70f750b42369bec30635b2fdd37d9e
parenta7fdf62f9b557077e66b322619c584c5031b03a2 (diff)
downloadgdb-d8708f403e7d1df1165e12d4141506a804698666.zip
gdb-d8708f403e7d1df1165e12d4141506a804698666.tar.gz
gdb-d8708f403e7d1df1165e12d4141506a804698666.tar.bz2
Do not insert more than MAX_MEM_FOR_RS_ALIGN_CODE bytes.
-rw-r--r--gas/ChangeLog7
-rw-r--r--gas/config/tc-arm.c29
-rw-r--r--gas/config/tc-arm.h2
3 files changed, 25 insertions, 13 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 16ffc80..249070e 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,10 @@
+2001-05-06 Nick Clifton <nickc@cambridge.redhat.com>
+
+ * config/tc-arm.h (MAX_MEM_FOR_RS_ALIGN_CODE): Define.
+ * config/tc-arm.c (arm_handle_align): Do not insert more than
+ MAX_MEM_FOR_RS_ALIGN_CODE bytes.
+ (arm_frag_align_code): Use MAX_MEM_FOR_RS_ALIGN_CODE.
+
2001-05-03 Thiemo Seufer <seufer@csv.ica.uni-stuttgart.de>
* Makefile.am (TARG_ENV_HFILES): Add te-hppa64.h and te-hppalinux64.h.
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c
index 98fd045..59e8d71 100644
--- a/gas/config/tc-arm.c
+++ b/gas/config/tc-arm.c
@@ -8796,8 +8796,8 @@ s_arm_elf_cons (nbytes)
of an rs_align_code fragment. */
void
-arm_handle_align (fragp)
- fragS *fragp;
+arm_handle_align (fragP)
+ fragS *fragP;
{
static char const arm_noop[4] = { 0x00, 0x00, 0xa0, 0xe1 };
static char const thumb_noop[2] = { 0xc0, 0x46 };
@@ -8808,14 +8808,17 @@ arm_handle_align (fragp)
char * p;
const char * noop;
- if (fragp->fr_type != rs_align_code)
+ if (fragP->fr_type != rs_align_code)
return;
- bytes = fragp->fr_next->fr_address - fragp->fr_address - fragp->fr_fix;
- p = fragp->fr_literal + fragp->fr_fix;
+ bytes = fragP->fr_next->fr_address - fragP->fr_address - fragP->fr_fix;
+ p = fragP->fr_literal + fragP->fr_fix;
fix = 0;
- if (fragp->tc_frag_data)
+ if (bytes > MAX_MEM_FOR_RS_ALIGN_CODE)
+ bytes = MAX_MEM_FOR_RS_ALIGN_CODE;
+
+ if (fragP->tc_frag_data)
{
if (target_big_endian)
noop = thumb_bigend_noop;
@@ -8848,8 +8851,8 @@ arm_handle_align (fragp)
fix += noop_size;
}
- fragp->fr_fix += fix;
- fragp->fr_var = noop_size;
+ fragP->fr_fix += fix;
+ fragP->fr_var = noop_size;
}
/* Called from md_do_align. Used to create an alignment
@@ -8864,11 +8867,11 @@ arm_frag_align_code (n, max)
/* We assume that there will never be a requirment
to support alignments greater than 32 bytes. */
- if (max > 31)
+ if (max > MAX_MEM_FOR_RS_ALIGN_CODE)
as_fatal (_("alignments greater than 32 bytes not supported in .text sections."));
p = frag_var (rs_align_code,
- 31,
+ MAX_MEM_FOR_RS_ALIGN_CODE,
1,
(relax_substateT) max,
(symbolS *) NULL,
@@ -8881,9 +8884,9 @@ arm_frag_align_code (n, max)
/* Perform target specific initialisation of a frag. */
void
-arm_init_frag (fragp)
- fragS *fragp;
+arm_init_frag (fragP)
+ fragS *fragP;
{
/* Record whether this frag is in an ARM or a THUMB area. */
- fragp->tc_frag_data = thumb_mode;
+ fragP->tc_frag_data = thumb_mode;
}
diff --git a/gas/config/tc-arm.h b/gas/config/tc-arm.h
index f955c44..8de5704 100644
--- a/gas/config/tc-arm.h
+++ b/gas/config/tc-arm.h
@@ -215,6 +215,8 @@ void armelf_frob_symbol PARAMS ((symbolS *, int *));
#define DWARF2_LINE_MIN_INSN_LENGTH 2
#endif
+#define MAX_MEM_FOR_RS_ALIGN_CODE 31
+
/* For frags in code sections we need to record whether they contain
ARM code or THUMB code. This is that if they have to be aligned,
they can contain the correct type of no-op instruction. */