* listing.c (MAX_BYTES): Use listing variables not constants.
authorRichard Henderson <rth@redhat.com>
Tue, 27 Jan 1998 14:56:15 +0000 (14:56 +0000)
committerRichard Henderson <rth@redhat.com>
Tue, 27 Jan 1998 14:56:15 +0000 (14:56 +0000)
(data_buffer): No longer an array, but a pointer.
(calc_hex): sizeof(data_buffer) -> MAX_BYTES.
(listing_listing): Allocate data_buffer.

gas/ChangeLog
gas/listing.c

index 8379fe70798985dd89e8b7d5229293abc77a7492..5a95a62fa1f2bd6811ff44c4f9d88f8274180e7b 100644 (file)
@@ -1,3 +1,10 @@
+Tue Jan 27 06:51:59 1998  Richard Henderson  <rth@cygnus.com>
+
+       * listing.c (MAX_BYTES): Use listing variables not constants.
+       (data_buffer): No longer an array, but a pointer.
+       (calc_hex): sizeof(data_buffer) -> MAX_BYTES.
+       (listing_listing): Allocate data_buffer.
+
 Tue Jan 27 06:38:35 1998  Richard Henderson  <rth@cygnus.com>
 
        * as.c (parse_args): Add --listing-lhs-width, --listing-lhs-width2,
index 5e23e6629432d44e278bce75b3582159e419806b..c37c7433f92c095e76bee9324f469b1465f3ec8c 100644 (file)
@@ -194,12 +194,12 @@ static FILE *list_file;
    before the start of the line.  */
 
 #define MAX_BYTES                                                      \
-  (((LISTING_WORD_SIZE * 2) + 1) * LISTING_LHS_WIDTH                   \
-   + ((((LISTING_WORD_SIZE * 2) + 1) * LISTING_LHS_WIDTH_SECOND)       \
-      * LISTING_LHS_CONT_LINES)                                                \
+  (((LISTING_WORD_SIZE * 2) + 1) * listing_lhs_width                   \
+   + ((((LISTING_WORD_SIZE * 2) + 1) * listing_lhs_width_second)       \
+      * listing_lhs_cont_lines)                                                \
    + 20)
 
-static char data_buffer[MAX_BYTES];
+static char *data_buffer;
 
 /* Prototypes.  */
 static void listing_message PARAMS ((const char *name, const char *message));
@@ -562,7 +562,7 @@ calc_hex (list)
       /* Print as many bytes from the fixed part as is sensible */
       byte_in_frag = 0;
       while (byte_in_frag < frag_ptr->fr_fix
-            && data_buffer_size < sizeof (data_buffer) - 3)
+            && data_buffer_size < MAX_BYTES - 3)
        {
          if (address == ~0)
            {
@@ -582,7 +582,7 @@ calc_hex (list)
        /* Print as many bytes from the variable part as is sensible */
        while ((byte_in_frag
                < frag_ptr->fr_fix + frag_ptr->fr_var * frag_ptr->fr_offset)
-              && data_buffer_size < sizeof (data_buffer) - 3)
+              && data_buffer_size < MAX_BYTES - 3)
          {
            if (address == ~0)
              {
@@ -924,6 +924,7 @@ listing_listing (name)
   unsigned int width;
 
   buffer = xmalloc (listing_rhs_width);
+  data_buffer = xmalloc (MAX_BYTES);
   eject = 1;
   list = head;
 
@@ -1029,7 +1030,10 @@ listing_listing (name)
 
       list = list->next;
     }
+
   free (buffer);
+  free (data_buffer);
+  data_buffer = NULL;
 }
 
 void