Do not insert more than MAX_MEM_FOR_RS_ALIGN_CODE bytes.
authorNick Clifton <nickc@redhat.com>
Sun, 6 May 2001 10:11:33 +0000 (10:11 +0000)
committerNick Clifton <nickc@redhat.com>
Sun, 6 May 2001 10:11:33 +0000 (10:11 +0000)
gas/ChangeLog
gas/config/tc-arm.c
gas/config/tc-arm.h

index 16ffc8010e2a28d6f1e0308302df34dac467a0e4..249070eeda5591219a1c2219ff287516fab33661 100644 (file)
@@ -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.
index 98fd04584a9072fed35d14171679b43919a9a3a4..59e8d71a44e5418e6df921f560e3063f1905ba9c 100644 (file)
@@ -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;
 }
index f955c44248325ef61a3424da98218e3ce5a3072c..8de5704efae8e8b866d4dc7fa0256aece4c3bfc2 100644 (file)
@@ -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.  */