diff options
author | Ian Lance Taylor <ian@airs.com> | 1993-09-10 16:01:07 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 1993-09-10 16:01:07 +0000 |
commit | 58d4951d00478086d83aa397f03944f9a5233270 (patch) | |
tree | 6c79a9a7f3dab39dba5d1390d0508ff6b6ccdf1b /gas/listing.c | |
parent | 941ffd19606475d07bf1713d05ff191b87f18883 (diff) | |
download | gdb-58d4951d00478086d83aa397f03944f9a5233270.zip gdb-58d4951d00478086d83aa397f03944f9a5233270.tar.gz gdb-58d4951d00478086d83aa397f03944f9a5233270.tar.bz2 |
gcc lint. See ChangeLog for details. Also:
* config/obj-elf.h (S_SET_SIZE): Actually set the size.
Diffstat (limited to 'gas/listing.c')
-rw-r--r-- | gas/listing.c | 1211 |
1 files changed, 626 insertions, 585 deletions
diff --git a/gas/listing.c b/gas/listing.c index ef88c0d..44247e2 100644 --- a/gas/listing.c +++ b/gas/listing.c @@ -23,7 +23,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ A listing page looks like: - + LISTING_HEADER sourcefilename pagenumber TITLE LINE SUBTITLE LINE @@ -34,8 +34,8 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ If not overridden, the listing commands are: - .title "stuff" - Put "stuff" onto the title line + .title "stuff" + Put "stuff" onto the title line .sbttl "stuff" Put stuff onto the subtitle line @@ -53,7 +53,7 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ Set the paper size to X wide and Y high. Setting a psize Y of zero will suppress form feeds except where demanded by .eject - If the counter goes below zero, listing is suppressed. + If the counter goes below zero, listing is suppressed. Listings are a maintained by read calling various listing_<foo> @@ -91,12 +91,11 @@ the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ on a line */ +#include <ctype.h> + #include "as.h" #include <obstack.h> #include "input-file.h" -#include "targ-cpu.h" - -char *malloc(); #ifndef NO_LISTING #ifndef LISTING_HEADER @@ -114,7 +113,7 @@ char *malloc(); #ifndef LISTING_RHS_WIDTH #define LISTING_RHS_WIDTH 100 #endif -#ifndef LISTING_LHS_CONT_LINES +#ifndef LISTING_LHS_CONT_LINES #define LISTING_LHS_CONT_LINES 4 #endif @@ -122,17 +121,19 @@ char *malloc(); /* This structure remembers which .s were used */ -typedef struct file_info_struct +typedef struct file_info_struct { char *filename; int linenum; FILE *file; struct file_info_struct *next; int end_pending; - -} file_info_type ; - +} + +file_info_type; + + /* this structure rememebrs which line from which file goes into which frag */ typedef struct list_info_struct @@ -152,32 +153,34 @@ typedef struct list_info_struct /* Pointer to the file info struct for the high level language source line that belongs here */ file_info_type *hll_file; - + /* High level language source line */ int hll_line; - + /* Pointer to any error message associated with this line */ char *message; - - enum - { - EDICT_NONE, - EDICT_SBTTL, - EDICT_TITLE, - EDICT_NOLIST, - EDICT_LIST, - EDICT_EJECT - } edict; + + enum + { + EDICT_NONE, + EDICT_SBTTL, + EDICT_TITLE, + EDICT_NOLIST, + EDICT_LIST, + EDICT_EJECT + } edict; char *edict_arg; - -} list_info_type; + +} + +list_info_type; static struct list_info_struct *head; struct list_info_struct *listing_tail; extern int listing; -extern unsigned int physical_input_line; +extern unsigned int physical_input_line; extern fragS *frag_now; @@ -194,38 +197,58 @@ static int paper_height = 60; static char data_buffer[100]; static unsigned int data_buffer_size; - + +/* Prototypes. */ +static void listing_message PARAMS ((const char *name, const char *message)); +static file_info_type *file_info PARAMS ((const char *file_name)); +static void new_frag PARAMS ((void)); +static char *buffer_line PARAMS ((file_info_type *file, + char *line, unsigned int size)); +static void listing_page PARAMS ((list_info_type *list)); +static unsigned int calc_hex PARAMS ((list_info_type *list)); +static void print_lines PARAMS ((list_info_type *list, + char *string, + unsigned int address)); +static void list_symbol_table PARAMS ((void)); +static void print_source PARAMS ((file_info_type *current_file, + list_info_type *list, + char *buffer, + unsigned int width)); +static int debugging_pseudo PARAMS ((char *line)); +static void listing_listing PARAMS ((char *name)); + + static void -DEFUN(listing_message,(name, message), - char *name AND - char *message) +listing_message (name, message) + const char *name; + const char *message; { - unsigned int l = strlen(name) + strlen(message)+1; - char *n = (char*)malloc(l); - strcpy(n,name); - strcat(n,message); - if(listing_tail != (list_info_type *)NULL) - { - listing_tail->message = n; - } - + unsigned int l = strlen (name) + strlen (message) + 1; + char *n = (char *) xmalloc (l); + strcpy (n, name); + strcat (n, message); + if (listing_tail != (list_info_type *) NULL) + { + listing_tail->message = n; + } + } -void -DEFUN(listing_warning,(message), - char *message) +void +listing_warning (message) + const char *message; { - listing_message("Warning:", message); + listing_message ("Warning:", message); } -void -DEFUN(listing_error,(message), - char *message) +void +listing_error (message) + const char *message; { - listing_message("Error:", message); + listing_message ("Error:", message); } @@ -234,272 +257,268 @@ DEFUN(listing_error,(message), static file_info_type *file_info_head; static file_info_type * -DEFUN(file_info, (file_name), - char *file_name) +file_info (file_name) + const char *file_name; { /* Find an entry with this file name */ file_info_type *p = file_info_head; - - while (p != (file_info_type *)NULL) - { - if (strcmp(p->filename, file_name) == 0) - return p; - p = p->next; - } + + while (p != (file_info_type *) NULL) + { + if (strcmp (p->filename, file_name) == 0) + return p; + p = p->next; + } /* Make new entry */ - p = (file_info_type *)xmalloc(sizeof(file_info_type)); + p = (file_info_type *) xmalloc (sizeof (file_info_type)); p->next = file_info_head; file_info_head = p; - p->filename = xmalloc(strlen(file_name)+1); - strcpy(p->filename, file_name); + p->filename = xmalloc (strlen (file_name) + 1); + strcpy (p->filename, file_name); p->linenum = 0; p->end_pending = 0; - - p->file = fopen(p->filename,"rb"); -if (p->file) fgetc(p->file); - + p->file = fopen (p->filename, "rb"); + if (p->file) + fgetc (p->file); return p; - } -static void -DEFUN_VOID(new_frag) +static void +new_frag () { - - frag_wane(frag_now); - frag_new(0); + + frag_wane (frag_now); + frag_new (0); } -void -DEFUN(listing_newline,(ps), - char *ps) +void +listing_newline (ps) + char *ps; { - char *s = ps; extern char *file_name; - static unsigned int last_line =0xffff ; + static unsigned int last_line = 0xffff; + - list_info_type *new; - if (physical_input_line != last_line) - { - last_line = physical_input_line; - new_frag(); - - new = (list_info_type *)malloc(sizeof(list_info_type)); - new->frag = frag_now; - new->line = physical_input_line ; - new->file = file_info(file_name); - - if (listing_tail) - { - listing_tail->next = new; - } - else + if (physical_input_line != last_line) { - head = new; + last_line = physical_input_line; + new_frag (); + + new = (list_info_type *) xmalloc (sizeof (list_info_type)); + new->frag = frag_now; + new->line = physical_input_line; + new->file = file_info (file_name); + + if (listing_tail) + { + listing_tail->next = new; + } + else + { + head = new; + } + listing_tail = new; + new->next = (list_info_type *) NULL; + new->message = (char *) NULL; + new->edict = EDICT_NONE; + new->hll_file = (file_info_type *) NULL; + new->hll_line = 0; + new_frag (); } - listing_tail = new; - new->next = (list_info_type *)NULL; - new->message = (char *)NULL; - new->edict = EDICT_NONE; - new->hll_file = (file_info_type*)NULL; - new->hll_line = 0; - new_frag(); - } } -/* +/* This function returns the next source line from the file supplied, truncated to size. It appends a fake line to the end of each input file to make */ static char * -DEFUN(buffer_line,(file, line, size), - file_info_type *file AND - char *line AND - unsigned int size) +buffer_line (file, line, size) + file_info_type * file; + char *line; + unsigned int size; { unsigned int count = 0; int c; - + char *p = line; /* If we couldn't open the file, return an empty line */ - if (file->file == (FILE*)NULL) - { - return ""; - } + if (file->file == (FILE *) NULL) + { + return ""; + } if (file->linenum == 0) - rewind(file->file); + rewind (file->file); - if (file->end_pending == 10) { - *p ++ = '\n'; - fseek(file->file, 0,0 ); + if (file->end_pending == 10) + { + *p++ = '\n'; + fseek (file->file, 0, 0); file->linenum = 0; file->end_pending = 0; - } - c = fgetc(file->file); + } + c = fgetc (file->file); + - size -= 1; /* leave room for null */ - while (c != EOF && c != '\n') - { - if (count < size) - *p++ = c; - count++; - - c= fgetc(file->file); - - } - if (c == EOF) - { - file->end_pending ++; - *p++ = '.'; - *p++ = '.'; - *p++ = '.'; - } - file->linenum++; + while (c != EOF && c != '\n') + { + if (count < size) + *p++ = c; + count++; + + c = fgetc (file->file); + + } + if (c == EOF) + { + file->end_pending++; + *p++ = '.'; + *p++ = '.'; + *p++ = '.'; + } + file->linenum++; *p++ = 0; return line; } -static char *fn; +static const char *fn; static unsigned int eject; /* Eject pending */ -static unsigned int page; /* Current page number */ -static char *title; /* current title */ +static unsigned int page; /* Current page number */ +static char *title; /* current title */ static char *subtitle; /* current subtitle */ -static unsigned int on_page; /* number of lines printed on current page */ +static unsigned int on_page; /* number of lines printed on current page */ static void -DEFUN(listing_page,(list), - list_info_type *list) +listing_page (list) + list_info_type *list; { /* Grope around, see if we can see a title or subtitle edict coming up soon (we look down 10 lines of the page and see if it's there)*/ - if ((eject || (on_page >= paper_height)) && paper_height != 0) - { - unsigned int c = 10; - int had_title = 0; - int had_subtitle = 0; - - page++; - - while (c != 0 && list) + if ((eject || (on_page >= paper_height)) && paper_height != 0) { - if (list->edict == EDICT_SBTTL && !had_subtitle) - { - had_subtitle = 1; - subtitle = list->edict_arg; - } - if (list->edict == EDICT_TITLE && !had_title) - { - had_title = 1; - title = list->edict_arg; - } - list = list->next; - c--; - } - + unsigned int c = 10; + int had_title = 0; + int had_subtitle = 0; - if (page > 1) - { - printf("\f"); + page++; + + while (c != 0 && list) + { + if (list->edict == EDICT_SBTTL && !had_subtitle) + { + had_subtitle = 1; + subtitle = list->edict_arg; + } + if (list->edict == EDICT_TITLE && !had_title) + { + had_title = 1; + title = list->edict_arg; + } + list = list->next; + c--; + } + + + if (page > 1) + { + printf ("\f"); + } + + printf ("%s %s \t\t\tpage %d\n", LISTING_HEADER, fn, page); + printf ("%s\n", title); + printf ("%s\n", subtitle); + on_page = 3; + eject = 0; } - - printf("%s %s \t\t\tpage %d\n", LISTING_HEADER, fn, page); - printf("%s\n", title); - printf("%s\n", subtitle); - on_page = 3; - eject = 0; - } } -static unsigned int -DEFUN(calc_hex,(list), - list_info_type *list) +static unsigned int +calc_hex (list) + list_info_type * list; { list_info_type *first = list; - list_info_type *last = first; unsigned int address = ~0; - + fragS *frag; fragS *frag_ptr; - unsigned int byte_in_frag = 0; - - int anything = 0; + unsigned int byte_in_frag = 0; + /* Find first frag which says it belongs to this line */ - frag = list->frag; - while (frag && frag->line != list) - frag = frag->fr_next; + frag = list->frag; + while (frag && frag->line != list) + frag = frag->fr_next; frag_ptr = frag; data_buffer_size = 0; - + /* Dump all the frags which belong to this line */ - while (frag_ptr != (fragS *)NULL && frag_ptr->line == first) - { - /* Print as many bytes from the fixed part as is sensible */ - while(byte_in_frag < frag_ptr->fr_fix && data_buffer_size < sizeof(data_buffer)-10) - { - if (address == ~0) - { - address = frag_ptr->fr_address; - } - - sprintf(data_buffer + data_buffer_size, - "%02X", - (frag_ptr->fr_literal[byte_in_frag]) & 0xff); - data_buffer_size += 2; - byte_in_frag++; - } - { - unsigned int var_rep_max = byte_in_frag; - unsigned int var_rep_idx = byte_in_frag; - - /* Print as many bytes from the variable part as is sensible */ - while (byte_in_frag < frag_ptr->fr_var * frag_ptr->fr_offset - && data_buffer_size < sizeof(data_buffer)-10) + while (frag_ptr != (fragS *) NULL && frag_ptr->line == first) { - if (address == ~0) + /* Print as many bytes from the fixed part as is sensible */ + while (byte_in_frag < frag_ptr->fr_fix && data_buffer_size < sizeof (data_buffer) - 10) + { + if (address == ~0) + { + address = frag_ptr->fr_address; + } + + sprintf (data_buffer + data_buffer_size, + "%02X", + (frag_ptr->fr_literal[byte_in_frag]) & 0xff); + data_buffer_size += 2; + byte_in_frag++; + } { - address = frag_ptr->fr_address; - } -sprintf(data_buffer + data_buffer_size, - "%02X", - (frag_ptr->fr_literal[var_rep_idx]) & 0xff); -#if 0 - data_buffer[data_buffer_size++] = '*'; - data_buffer[data_buffer_size++] = '*'; + unsigned int var_rep_max = byte_in_frag; + unsigned int var_rep_idx = byte_in_frag; + + /* Print as many bytes from the variable part as is sensible */ + while (byte_in_frag < frag_ptr->fr_var * frag_ptr->fr_offset + && data_buffer_size < sizeof (data_buffer) - 10) + { + if (address == ~0) + { + address = frag_ptr->fr_address; + } + sprintf (data_buffer + data_buffer_size, + "%02X", + (frag_ptr->fr_literal[var_rep_idx]) & 0xff); +#if 0 + data_buffer[data_buffer_size++] = '*'; + data_buffer[data_buffer_size++] = '*'; #endif - data_buffer_size +=2; - - var_rep_idx ++; - byte_in_frag++; - - if (var_rep_idx >= frag_ptr->fr_var) - var_rep_idx = var_rep_max; + data_buffer_size += 2; + + var_rep_idx++; + byte_in_frag++; + + if (var_rep_idx >= frag_ptr->fr_var) + var_rep_idx = var_rep_max; + } + } + + frag_ptr = frag_ptr->fr_next; } - } - - frag_ptr = frag_ptr->fr_next; - } data_buffer[data_buffer_size++] = 0; return address; } @@ -510,512 +529,534 @@ sprintf(data_buffer + data_buffer_size, static void -DEFUN(print_lines,(list, string, address), -list_info_type *list AND -char *string AND -unsigned int address) +print_lines (list, string, address) + list_info_type *list; + char *string; + unsigned int address; { unsigned int idx; unsigned int nchars; unsigned int lines; - unsigned int byte_in_word =0; + unsigned int byte_in_word = 0; char *src = data_buffer; - + /* Print the stuff on the first line */ - listing_page(list); - nchars = (LISTING_WORD_SIZE*2 +1) * LISTING_LHS_WIDTH ; + listing_page (list); + nchars = (LISTING_WORD_SIZE * 2 + 1) * LISTING_LHS_WIDTH; /* Print the hex for the first line */ - if (address == ~0) - { - printf("% 4d ", list->line); - for (idx = 0; idx < nchars; idx++) - printf(" "); - - printf("\t%s\n", string ? string : ""); - on_page++; - listing_page(0); - - } - else - { - if (had_errors()) - { - printf("% 4d ???? ", list->line); - } - else + if (address == ~0) { - printf("% 4d %04x ", list->line, address); - } - - /* And the data to go along with it */ - idx = 0; - - while (*src && idx < nchars) - { - printf("%c%c", src[0], src[1]); - src += 2; - byte_in_word++; - if (byte_in_word == LISTING_WORD_SIZE) - { - printf(" "); - idx++; - byte_in_word = 0; - } - idx+=2; - } - - for (;idx < nchars; idx++) - printf(" "); - - printf("\t%s\n", string ? string : ""); - on_page++; - listing_page(list); - if (list->message) - { - printf("**** %s\n",list->message); - listing_page(list); + printf ("% 4d ", list->line); + for (idx = 0; idx < nchars; idx++) + printf (" "); + + printf ("\t%s\n", string ? string : ""); on_page++; + listing_page (0); + } + else + { + if (had_errors ()) + { + printf ("% 4d ???? ", list->line); + } + else + { + printf ("% 4d %04x ", list->line, address); + } - for (lines = 0; - lines < LISTING_LHS_CONT_LINES - && *src; - lines++) { - 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); - - while (*src && idx < nchars) + /* And the data to go along with it */ + idx = 0; + + while (*src && idx < nchars) { - printf("%c%c", src[0], src[1]); - src+=2; - idx+=2; + printf ("%c%c", src[0], src[1]); + src += 2; byte_in_word++; - if (byte_in_word == LISTING_WORD_SIZE) - { - printf(" "); - idx++; - byte_in_word = 0; - } + if (byte_in_word == LISTING_WORD_SIZE) + { + printf (" "); + idx++; + byte_in_word = 0; + } + idx += 2; } - - printf("\n"); - on_page++; - listing_page(list); - - } - - } -} + for (; idx < nchars; idx++) + printf (" "); + + printf ("\t%s\n", string ? string : ""); + on_page++; + listing_page (list); + if (list->message) + { + printf ("**** %s\n", list->message); + listing_page (list); + on_page++; + } - - - + for (lines = 0; + lines < LISTING_LHS_CONT_LINES + && *src; + lines++) + { + 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); + + while (*src && idx < nchars) + { + printf ("%c%c", src[0], src[1]); + src += 2; + idx += 2; + byte_in_word++; + if (byte_in_word == LISTING_WORD_SIZE) + { + printf (" "); + idx++; + byte_in_word = 0; + } + } + + printf ("\n"); + on_page++; + listing_page (list); + + } + + + } +} static void -DEFUN_VOID(list_symbol_table) +list_symbol_table () { extern symbolS *symbol_rootP; - - symbolS *ptr ; + + symbolS *ptr; eject = 1; - listing_page(0); - printf("DEFINED SYMBOLS\n"); + listing_page (0); + printf ("DEFINED SYMBOLS\n"); on_page++; - - for (ptr = symbol_rootP; ptr != (symbolS*)NULL; ptr = symbol_next(ptr)) - { - if (ptr->sy_frag->line) + + for (ptr = symbol_rootP; ptr != (symbolS *) NULL; ptr = symbol_next (ptr)) { - if (S_GET_NAME(ptr)) - { - - if (strlen(S_GET_NAME(ptr))) - { - printf("%20s:%-5d %2d:%08x %s \n", - ptr->sy_frag->line->file->filename, - ptr->sy_frag->line->line, - S_GET_SEGMENT(ptr), - S_GET_VALUE(ptr), - S_GET_NAME(ptr)); - } - - else - { - printf("%20s:%-5d %2d:%08x\n", - ptr->sy_frag->line->file->filename, - ptr->sy_frag->line->line, - S_GET_SEGMENT(ptr), - S_GET_VALUE(ptr)); - + if (ptr->sy_frag->line) + { + if (S_GET_NAME (ptr)) + { + char buf[30]; + valueT val = S_GET_VALUE (ptr); + + /* @@ Note that this is dependent on the compilation options, + not solely on the target characteristics. */ + if (sizeof (val) == 4 && sizeof (int) == 4) + sprintf (buf, "%08lx", (unsigned long) val); +#if defined (BFD_ASSEMBLER) && defined (BFD64) + else if (sizeof (val) > 4) + { + char buf1[30]; + sprintf_vma (buf1, val); + strcpy (buf, "00000000"); + strcpy (buf + 8 - strlen (buf1), buf1); + } +#endif + else + abort (); + + 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)); + + on_page++; + listing_page (0); + } + } - } - - on_page++; - listing_page(0); - } } - - } - printf("\n"); + printf ("\n"); on_page++; - listing_page(0); - printf("UNDEFINED SYMBOLS\n"); + listing_page (0); + printf ("UNDEFINED SYMBOLS\n"); on_page++; - listing_page(0); - - for (ptr = symbol_rootP; ptr != (symbolS*)NULL; ptr = symbol_next(ptr)) - { - if (S_GET_NAME(ptr) && strlen(S_GET_NAME(ptr)) != 0) + listing_page (0); + + for (ptr = symbol_rootP; ptr != (symbolS *) NULL; ptr = symbol_next (ptr)) { - if (ptr->sy_frag->line == 0) - { - printf("%s\n", S_GET_NAME(ptr)); - on_page++; - listing_page(0); - } + if (S_GET_NAME (ptr) && strlen (S_GET_NAME (ptr)) != 0) + { + if (ptr->sy_frag->line == 0) + { + printf ("%s\n", S_GET_NAME (ptr)); + on_page++; + listing_page (0); + } + } } - } } -void -DEFUN(print_source,(current_file, list, buffer, width), - file_info_type *current_file AND - list_info_type *list AND - char *buffer AND - unsigned int width) +static void +print_source (current_file, list, buffer, width) + file_info_type *current_file; + list_info_type *list; + char *buffer; + unsigned int width; { - if (current_file->file) { + if (current_file->file) + { while (current_file->linenum < list->hll_line) - { - char * p = buffer_line(current_file, buffer, width); - printf("%4d:%-13s **** %s\n", current_file->linenum, current_file->filename, p); - on_page++; - listing_page(list); - } + { + char *p = buffer_line (current_file, buffer, width); + printf ("%4d:%-13s **** %s\n", current_file->linenum, current_file->filename, p); + on_page++; + listing_page (list); + } } } /* Sometimes the user doesn't want to be bothered by the debugging - records inserted by the compiler, see if the line is suspicioous */ + records inserted by the compiler, see if the line is suspicious */ static int -DEFUN(debugging_pseudo,(line), - char *line) +debugging_pseudo (line) + char *line; { - while (isspace(*line)) - line++; + while (isspace (*line)) + line++; + + if (*line != '.') + return 0; - if(*line != '.') return 0; - line++; - if (strncmp(line, "def",3) == 0) return 1; - if (strncmp(line, "val",3) == 0) return 1; - if (strncmp(line, "scl",3) == 0) return 1; - if (strncmp(line, "line",4) == 0) return 1; - if (strncmp(line, "endef",5) == 0) return 1; - if (strncmp(line, "ln",2) ==0) return 1; - if (strncmp(line, "type",4) ==0) return 1; - if (strncmp(line, "size",4) == 0) return 1; - if (strncmp(line, "dim",3) ==0) return 1; - if (strncmp(line, "tag",3) == 0) return 1; - + if (strncmp (line, "def", 3) == 0) + return 1; + if (strncmp (line, "val", 3) == 0) + return 1; + if (strncmp (line, "scl", 3) == 0) + return 1; + if (strncmp (line, "line", 4) == 0) + return 1; + if (strncmp (line, "endef", 5) == 0) + return 1; + if (strncmp (line, "ln", 2) == 0) + return 1; + if (strncmp (line, "type", 4) == 0) + return 1; + if (strncmp (line, "size", 4) == 0) + return 1; + if (strncmp (line, "dim", 3) == 0) + return 1; + if (strncmp (line, "tag", 3) == 0) + return 1; + + if (strncmp (line, "stabs", 5) == 0) + return 1; + if (strncmp (line, "stabn", 5) == 0) + return 1; + return 0; } -void -DEFUN(listing_listing,(name), - char *name) +static void +listing_listing (name) + char *name; { list_info_type *list = head; - file_info_type *current_hll_file = (file_info_type *)NULL; - - unsigned int page= 1; - unsigned int prev = 0; + file_info_type *current_hll_file = (file_info_type *) NULL; char *message; char *buffer; char *p; - unsigned int addr = 0; - int on_page = 0; int show_listing = 1; unsigned int width; - - buffer = malloc(LISTING_RHS_WIDTH); + + buffer = xmalloc (LISTING_RHS_WIDTH); eject = 1; list = head; - while (list != (list_info_type *)NULL && 0) - { - if (list->next) - list->frag = list->next->frag; - list = list->next; + while (list != (list_info_type *) NULL && 0) + { + if (list->next) + list->frag = list->next->frag; + list = list->next; + + } - } - list = head->next; - while ( list) - { - width = LISTING_RHS_WIDTH > paper_width ? paper_width : - LISTING_RHS_WIDTH; - - switch (list->edict) { - case EDICT_LIST: - show_listing++; - break; - case EDICT_NOLIST: - show_listing--; - break; - case EDICT_EJECT: - break; - case EDICT_NONE: - break; - case EDICT_TITLE: - title = list->edict_arg; - break; - case EDICT_SBTTL: - subtitle = list->edict_arg; - break; - default: - abort(); - } - - if (show_listing > 0) + while (list) { - /* Scan down the list and print all the stuff which can be done - with this line (or lines) */ - message = 0; + width = LISTING_RHS_WIDTH > paper_width ? paper_width : + LISTING_RHS_WIDTH; - if (list->hll_file) - { - current_hll_file = list->hll_file; - } + switch (list->edict) + { + case EDICT_LIST: + show_listing++; + break; + case EDICT_NOLIST: + show_listing--; + break; + case EDICT_EJECT: + break; + case EDICT_NONE: + break; + case EDICT_TITLE: + title = list->edict_arg; + break; + case EDICT_SBTTL: + subtitle = list->edict_arg; + break; + default: + abort (); + } - if (current_hll_file && list->hll_line && listing & LISTING_HLL) - { - print_source(current_hll_file, list, buffer, width); - } - - p = buffer_line(list->file, buffer, width); + if (show_listing > 0) + { + /* Scan down the list and print all the stuff which can be done + with this line (or lines). */ + message = 0; + + if (list->hll_file) + { + current_hll_file = list->hll_file; + } + + if (current_hll_file && list->hll_line && listing & LISTING_HLL) + { + print_source (current_hll_file, list, buffer, width); + } + + p = buffer_line (list->file, buffer, width); + + if (!((listing & LISTING_NODEBUG) && debugging_pseudo (p))) + { + print_lines (list, p, calc_hex (list)); + } + + if (list->edict == EDICT_EJECT) + { + eject = 1; + } + } + else + { - if (! ((listing & LISTING_NODEBUG) && debugging_pseudo(p))) - { - print_lines(list, p, calc_hex(list)); - } + p = buffer_line (list->file, buffer, width); + } - if (list->edict == EDICT_EJECT) - { - eject = 1; - } - } - else - { - - p = buffer_line(list->file, buffer, width); + list = list->next; } - - list = list->next; - } - free(buffer); + free (buffer); } -void -DEFUN(listing_print,(name), - char *name) +void +listing_print (name) + char *name; { title = ""; - subtitle = ""; - - if (listing & LISTING_NOFORM) - { - paper_height = 0; - } - - if (listing & LISTING_LISTING) - { - listing_listing(name); - - } - if (listing & LISTING_SYMBOLS) - { - list_symbol_table(); - } -} + subtitle = ""; + + if (listing & LISTING_NOFORM) + { + paper_height = 0; + } + + if (listing & LISTING_LISTING) + { + listing_listing (name); + + } + if (listing & LISTING_SYMBOLS) + { + list_symbol_table (); + } +} void -DEFUN(listing_file,(name), -char *name) +listing_file (name) + const char *name; { - fn = name; + fn = name; } -void -DEFUN_VOID(listing_eject) +void +listing_eject () { - listing_tail->edict = EDICT_EJECT; + listing_tail->edict = EDICT_EJECT; } void -DEFUN_VOID(listing_flags) +listing_flags () { - while ( (*input_line_pointer++) && (*input_line_pointer != '\n') ) - input_line_pointer++; - + while ((*input_line_pointer++) && (*input_line_pointer != '\n')) + input_line_pointer++; + } + void -DEFUN(listing_list,(on), - unsigned int on) +listing_list (on) + unsigned int on; { listing_tail->edict = on ? EDICT_LIST : EDICT_NOLIST; } void -DEFUN_VOID(listing_psize) +listing_psize () { - paper_height = get_absolute_expression(); + paper_height = get_absolute_expression (); - if (paper_height < 0 || paper_height > 1000) - { - paper_height = 0; - as_warn("strange paper height, set to no form"); - } - if (*input_line_pointer == ',') - { - input_line_pointer++; - paper_width = get_absolute_expression(); - } + if (paper_height < 0 || paper_height > 1000) + { + paper_height = 0; + as_warn ("strange paper height, set to no form"); + } + if (*input_line_pointer == ',') + { + input_line_pointer++; + paper_width = get_absolute_expression (); + } } void -DEFUN(listing_title,(depth), - unsigned int depth) +listing_title (depth) + unsigned int depth; { char *start; char *title; unsigned int length; - - SKIP_WHITESPACE(); - if (*input_line_pointer=='\"') { + + SKIP_WHITESPACE (); + if (*input_line_pointer == '\"') + { input_line_pointer++; start = input_line_pointer; - - while (*input_line_pointer) - { - if (*input_line_pointer == '\"') - { - length = input_line_pointer - start; - title = malloc(length + 1); - memcpy(title, start, length); - title[length] = 0; - listing_tail->edict = depth ? EDICT_SBTTL : EDICT_TITLE; - listing_tail->edict_arg = title; - input_line_pointer++; - demand_empty_rest_of_line(); - return; - } - else if (*input_line_pointer == '\n') - { - as_bad("New line in title"); - demand_empty_rest_of_line(); - return; - } - else + + while (*input_line_pointer) { - input_line_pointer++; + if (*input_line_pointer == '\"') + { + length = input_line_pointer - start; + title = xmalloc (length + 1); + memcpy (title, start, length); + title[length] = 0; + listing_tail->edict = depth ? EDICT_SBTTL : EDICT_TITLE; + listing_tail->edict_arg = title; + input_line_pointer++; + demand_empty_rest_of_line (); + return; + } + else if (*input_line_pointer == '\n') + { + as_bad ("New line in title"); + demand_empty_rest_of_line (); + return; + } + else + { + input_line_pointer++; + } } - } } - else - { - as_bad("expecting title in quotes"); - } + else + { + as_bad ("expecting title in quotes"); + } } void -DEFUN(listing_source_line,(line), - unsigned int line) +listing_source_line (line) + unsigned int line; { - new_frag(); + new_frag (); listing_tail->hll_line = line; - new_frag(); - + new_frag (); + } void -DEFUN(listing_source_file,(file), - char *file) +listing_source_file (file) + const char *file; { - listing_tail->hll_file = file_info(file); + listing_tail->hll_file = file_info (file); } - + #else /* Dummy functions for when compiled without listing enabled */ -void -DEFUN_VOID(listing_flags) +void +listing_flags () { - s_ignore(); + s_ignore (0); } -void DEFUN_VOID(listing_list) +void +listing_list (on) + unsigned int on; { - s_ignore(); + s_ignore (0); } -void DEFUN_VOID(listing_eject) +void +listing_eject () { - s_ignore(); + s_ignore (0); } -void DEFUN_VOID(listing_psize) + +void +listing_psize () { - s_ignore(); + s_ignore (0); } -void DEFUN(listing_title, (depth), -unsigned int depth) +void +listing_title (depth) + unsigned int depth; { - s_ignore(); + s_ignore (0); } + void -DEFUN(listing_file,(name), -char *name) +listing_file (name) + const char *name; { } -void DEFUN(listing_newline,(name), -char *name) +void +listing_newline (name) + char *name; { - + } -void DEFUN(listing_source_line,(n), -unsigned int n) +void +listing_source_line (n) + unsigned int n; { - + } -void DEFUN(listing_source_file, (n), -char *n) +void +listing_source_file (n) + const char *n; { - -} - +} #endif - |