diff options
author | Ian Lance Taylor <ian@airs.com> | 1995-07-06 20:39:31 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1995-07-06 20:39:31 +0000 |
commit | 85a961c6a12151673dd31463b66ab32f742242e9 (patch) | |
tree | 746d5de9d666ef652888f44adcb4cf2858814dd0 /gas/listing.c | |
parent | 1d5d75e90a9b5056199ad43a521c3a77bce6fc2a (diff) | |
download | gdb-85a961c6a12151673dd31463b66ab32f742242e9.zip gdb-85a961c6a12151673dd31463b66ab32f742242e9.tar.gz gdb-85a961c6a12151673dd31463b66ab32f742242e9.tar.bz2 |
Patches from Jerry Blakely <gerry_blakley@wellfleet.com>:
* as.c (listing_filename): New static variable.
(show_usage): Mention -a=file.
(parse_args): Support = option of -a to set name of listing file.
(main): Pass listing_filename to listing_print.
* listing.c (list_file): New static variable.
(various): Replace printf with fprintf to list_file.
(listing_print): If name argument is not NULL, open it as
list_file.
* doc/as.texinfo, doc/as.1: Document -a=file.
PR 6354.
Diffstat (limited to 'gas/listing.c')
-rw-r--r-- | gas/listing.c | 75 |
1 files changed, 45 insertions, 30 deletions
diff --git a/gas/listing.c b/gas/listing.c index 799223a..ba0e5fd 100644 --- a/gas/listing.c +++ b/gas/listing.c @@ -186,6 +186,8 @@ extern fragS *frag_now; static int paper_width = 200; static int paper_height = 60; +/* File to output listings to. */ +static FILE *list_file; /* this static array is used to keep the text of data to be printed before the start of the line. @@ -455,12 +457,12 @@ listing_page (list) if (page > 1) { - printf ("\f"); + fprintf (list_file, "\f"); } - printf ("%s %s \t\t\tpage %d\n", LISTING_HEADER, fn, page); - printf ("%s\n", title); - printf ("%s\n", subtitle); + fprintf (list_file, "%s %s \t\t\tpage %d\n", LISTING_HEADER, fn, page); + fprintf (list_file, "%s\n", title); + fprintf (list_file, "%s\n", subtitle); on_page = 3; eject = 0; } @@ -565,11 +567,11 @@ print_lines (list, string, address) /* Print the hex for the first line */ if (address == ~0) { - printf ("% 4d ", list->line); + fprintf (list_file, "% 4d ", list->line); for (idx = 0; idx < nchars; idx++) - printf (" "); + fprintf (list_file, " "); - printf ("\t%s\n", string ? string : ""); + fprintf (list_file, "\t%s\n", string ? string : ""); on_page++; listing_page (0); @@ -578,11 +580,11 @@ print_lines (list, string, address) { if (had_errors ()) { - printf ("% 4d ???? ", list->line); + fprintf (list_file, "% 4d ???? ", list->line); } else { - printf ("% 4d %04x ", list->line, address); + fprintf (list_file, "% 4d %04x ", list->line, address); } /* And the data to go along with it */ @@ -590,12 +592,12 @@ print_lines (list, string, address) while (*src && idx < nchars) { - printf ("%c%c", src[0], src[1]); + fprintf (list_file, "%c%c", src[0], src[1]); src += 2; byte_in_word++; if (byte_in_word == LISTING_WORD_SIZE) { - printf (" "); + fprintf (list_file, " "); idx++; byte_in_word = 0; } @@ -603,14 +605,14 @@ print_lines (list, string, address) } for (; idx < nchars; idx++) - printf (" "); + fprintf (list_file, " "); - printf ("\t%s\n", string ? string : ""); + fprintf (list_file, "\t%s\n", string ? string : ""); on_page++; listing_page (list); if (list->message) { - printf ("**** %s\n", list->message); + fprintf (list_file, "**** %s\n", list->message); listing_page (list); on_page++; } @@ -623,23 +625,23 @@ print_lines (list, string, address) nchars = ((LISTING_WORD_SIZE * 2) + 1) * LISTING_LHS_WIDTH_SECOND - 1; idx = 0; /* Print any more lines of data, but more compactly */ - printf ("% 4d ", list->line); + fprintf (list_file, "% 4d ", list->line); while (*src && idx < nchars) { - printf ("%c%c", src[0], src[1]); + fprintf (list_file, "%c%c", src[0], src[1]); src += 2; idx += 2; byte_in_word++; if (byte_in_word == LISTING_WORD_SIZE) { - printf (" "); + fprintf (list_file, " "); idx++; byte_in_word = 0; } } - printf ("\n"); + fprintf (list_file, "\n"); on_page++; listing_page (list); @@ -693,16 +695,16 @@ list_symbol_table () if (!got_some) { - printf ("DEFINED SYMBOLS\n"); + fprintf (list_file, "DEFINED SYMBOLS\n"); on_page++; got_some = 1; } - printf ("%20s:%-5d %s:%s %s\n", - ptr->sy_frag->line->file->filename, - ptr->sy_frag->line->line, - segment_name (S_GET_SEGMENT (ptr)), - buf, S_GET_NAME (ptr)); + fprintf (list_file, "%20s:%-5d %s:%s %s\n", + ptr->sy_frag->line->file->filename, + ptr->sy_frag->line->line, + segment_name (S_GET_SEGMENT (ptr)), + buf, S_GET_NAME (ptr)); on_page++; listing_page (0); @@ -712,10 +714,10 @@ list_symbol_table () } if (!got_some) { - printf ("NO DEFINED SYMBOLS\n"); + fprintf (list_file, "NO DEFINED SYMBOLS\n"); on_page++; } - printf ("\n"); + fprintf (list_file, "\n"); on_page++; listing_page (0); @@ -734,11 +736,11 @@ list_symbol_table () if (!got_some) { got_some = 1; - printf ("UNDEFINED SYMBOLS\n"); + fprintf (list_file, "UNDEFINED SYMBOLS\n"); on_page++; listing_page (0); } - printf ("%s\n", S_GET_NAME (ptr)); + fprintf (list_file, "%s\n", S_GET_NAME (ptr)); on_page++; listing_page (0); } @@ -746,7 +748,7 @@ list_symbol_table () } if (!got_some) { - printf ("NO UNDEFINED SYMBOLS\n"); + fprintf (list_file, "NO UNDEFINED SYMBOLS\n"); on_page++; listing_page (0); } @@ -765,7 +767,8 @@ print_source (current_file, list, buffer, width) && !current_file->at_end) { char *p = buffer_line (current_file, buffer, width); - printf ("%4d:%-13s **** %s\n", current_file->linenum, current_file->filename, p); + fprintf (list_file, "%4d:%-13s **** %s\n", current_file->linenum, + current_file->filename, p); on_page++; listing_page (list); } @@ -924,6 +927,18 @@ listing_print (name) title = ""; subtitle = ""; + if (name == NULL) + list_file = stdout; + else + { + list_file = fopen (name, "w"); + if (list_file == NULL) + { + as_perror ("can't open list file: %s", name); + list_file = stdout; + } + } + if (listing & LISTING_NOFORM) { paper_height = 0; |