diff options
Diffstat (limited to 'gas')
-rw-r--r-- | gas/as.c | 20 | ||||
-rw-r--r-- | gas/read.c | 4 | ||||
-rw-r--r-- | gas/subsegs.c | 2 |
3 files changed, 15 insertions, 11 deletions
@@ -588,7 +588,7 @@ parse_args (int * pargc, char *** pargv) old_argv = *pargv; /* Initialize a new argv that contains no options. */ - new_argv = XNEWVEC (char *, old_argc + 1); + new_argv = notes_alloc (sizeof (char *) * (old_argc + 1)); new_argv[0] = old_argv[0]; new_argc = 1; new_argv[new_argc] = NULL; @@ -996,7 +996,7 @@ This program has absolutely no warranty.\n")); case OPTION_AL: listing |= LISTING_LISTING; if (optarg) - listing_filename = xstrdup (optarg); + listing_filename = notes_strdup (optarg); break; case OPTION_ALTERNATE: @@ -1050,7 +1050,7 @@ This program has absolutely no warranty.\n")); listing |= LISTING_SYMBOLS; break; case '=': - listing_filename = xstrdup (optarg + 1); + listing_filename = notes_strdup (optarg + 1); optarg += strlen (listing_filename); break; default: @@ -1076,14 +1076,14 @@ This program has absolutely no warranty.\n")); case 'I': { /* Include file directory. */ - char *temp = xstrdup (optarg); + char *temp = notes_strdup (optarg); add_include_dir (temp); break; } case 'o': - out_file_name = xstrdup (optarg); + out_file_name = notes_strdup (optarg); break; case 'w': @@ -1231,7 +1231,12 @@ perform_an_assembly_pass (int argc, char ** argv) if (!saw_a_file) read_a_source_file (""); } - + +static void +free_notes (void) +{ + _obstack_free (¬es, NULL); +} int main (int argc, char ** argv) @@ -1280,6 +1285,9 @@ main (int argc, char ** argv) select_emulation_mode (argc, argv); #endif + obstack_begin (¬es, chunksize); + xatexit (free_notes); + PROGRESS (1); /* Call parse_args before any of the init/begin functions so that switches like --hash-size can be honored. */ @@ -261,9 +261,6 @@ read_begin (void) pobegin (); obj_read_begin_hook (); - /* Something close -- but not too close -- to a multiple of 1024. - The debugging malloc I'm using has 24 bytes of overhead. */ - obstack_begin (¬es, chunksize); obstack_begin (&cond_obstack, chunksize); #ifndef tc_line_separator_chars @@ -282,6 +279,7 @@ void read_end (void) { poend (); + _obstack_free (&cond_obstack, NULL); } #ifndef TC_ADDRESS_BYTES diff --git a/gas/subsegs.c b/gas/subsegs.c index 1776511..b1a85d3 100644 --- a/gas/subsegs.c +++ b/gas/subsegs.c @@ -50,8 +50,6 @@ subsegs_end (struct obstack **obs) for (; *obs; obs++) _obstack_free (*obs, NULL); _obstack_free (&frchains, NULL); - _obstack_free (&cond_obstack, NULL); - _obstack_free (¬es, NULL); } static void |