gas/
authorMichael Matz <matz@suse.de>
Tue, 10 May 2005 15:10:08 +0000 (15:10 +0000)
committerMichael Matz <matz@suse.de>
Tue, 10 May 2005 15:10:08 +0000 (15:10 +0000)
        * frags.c (frag_grow): Don't be too greedy in allocating memory.
        * config/tc-hppa.c (pa_block): Check arguments to .block[z].

gas/testsuite/
        * gas/hppa/parse/block1.s: Use official limit (0x3fffffff) for
        .block.

gas/ChangeLog
gas/config/tc-hppa.c
gas/frags.c
gas/testsuite/ChangeLog
gas/testsuite/gas/hppa/parse/block1.s

index 41335983f4e8592cb9b0491869f23ca2d76fa628..86228db6f028443098295ef333f9b71408be66c0 100644 (file)
@@ -1,3 +1,9 @@
+2005-05-10  Michael Matz  <matz@suse.de>
+
+       * frags.c (frag_grow): Don't be too greedy in allocating memory.
+
+       * config/tc-hppa.c (pa_block): Check arguments to .block[z].
+
 2005-05-10  Hans-Peter Nilsson  <hp@bitrange.com>
 
        PR binutils/886
@@ -23,8 +29,8 @@
 
 2005-05-09  Jan Beulich  <jbeulich@novell.com>
 
-       * config/tc-i386.c (optimize_disp): Discard displacement entirely when zero and
-       not required by encoding constraints.
+       * config/tc-i386.c (optimize_disp): Discard displacement entirely
+       when zero and not required by encoding constraints.
 
 2005-05-09  H.J. Lu  <hongjiu.lu@intel.com>
 
index 7bac1eac3ced24cf8cd9d2f1426c1b875bba3b2d..57cc427ccb56db8eac1426b0004f44e25473530b 100644 (file)
@@ -5951,6 +5951,12 @@ pa_block (z)
 
   temp_size = get_absolute_expression ();
 
+  if (temp_size > 0x3FFFFFFF)
+    {
+      as_bad (_("Argument to .BLOCK/.BLOCKZ must be between 0 and 0x3fffffff"));
+      temp_size = 0;
+    }
+
   /* Always fill with zeros, that's what the HP assembler does.  */
   temp_fill = 0;
 
index 21fe26287d7d83115718a13f27773b0ef36a6248..6dae8bc9c2290ea395d22330677b5c8bac71369d 100644 (file)
@@ -91,7 +91,14 @@ frag_grow (unsigned int nchars)
       frag_wane (frag_now);
       frag_new (0);
       oldc = frchain_now->frch_obstack.chunk_size;
-      frchain_now->frch_obstack.chunk_size = 2 * nchars + SIZEOF_STRUCT_FRAG;
+      /* Try to allocate a bit more than needed right now.  But don't do
+         this if we would waste too much memory.  Especially necessary
+        for extremely big (like 2GB initialized) frags.  */
+      if (nchars < 0x10000)
+       frchain_now->frch_obstack.chunk_size = 2 * nchars;
+      else
+        frchain_now->frch_obstack.chunk_size = nchars + 0x10000;
+      frchain_now->frch_obstack.chunk_size += SIZEOF_STRUCT_FRAG;
       if (frchain_now->frch_obstack.chunk_size > 0)
        while ((n = obstack_room (&frchain_now->frch_obstack)) < nchars
               && (unsigned long) frchain_now->frch_obstack.chunk_size > nchars)
index 1a162c61c68cc9c495d52893bba98159bfeffc77..d2210458f0ef8c7ea702283902c0bec3cdca9d17 100644 (file)
@@ -1,3 +1,8 @@
+2005-05-10  Michael Matz  <matz@suse.de>
+
+       * gas/hppa/parse/block1.s: Use official limit (0x3fffffff) for
+       .block.
+
 2005-05-10  Hans-Peter Nilsson  <hp@bitrange.com>
 
        * gas/mmix/relax2.s: Drop ":" off label definitions.
index 4f12ab58952de21e75cd938a6d81cff7d484f737..a3ddafe3c5b4811870a8944624c94d5a6fc4acf3 100644 (file)
@@ -4,7 +4,7 @@
 foo:
        .block
 bar:
-       .block 0x7fffffff
+       .block 0x3fffffff
 com: