diff options
author | Jim Kingdon <jkingdon@engr.sgi.com> | 1995-03-17 00:41:40 +0000 |
---|---|---|
committer | Jim Kingdon <jkingdon@engr.sgi.com> | 1995-03-17 00:41:40 +0000 |
commit | 5cba5d26087c3d74be0df8ffad6cbf7c4b8c1add (patch) | |
tree | 8188aa8a16fc2bd576206d3b9cd374bcd4bcdde4 /gdb/xcoffread.c | |
parent | 3c727f729312f34b8cc3791eeb5f6079eda6d417 (diff) | |
download | ppe42-binutils-5cba5d26087c3d74be0df8ffad6cbf7c4b8c1add.tar.gz ppe42-binutils-5cba5d26087c3d74be0df8ffad6cbf7c4b8c1add.zip |
* xcoffread.c (process_linenos): Make sure filename we pass to
start_subfile will cause deduce_language_from_filename to return
the correct thing. Reindent function to GNU standards.
Diffstat (limited to 'gdb/xcoffread.c')
-rw-r--r-- | gdb/xcoffread.c | 197 |
1 files changed, 108 insertions, 89 deletions
diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c index 368f1c5159..7ee67940bd 100644 --- a/gdb/xcoffread.c +++ b/gdb/xcoffread.c @@ -529,17 +529,16 @@ process_linenos (start, end) char *pp; int offset, ii; - struct subfile main_subfile; /* subfile structure for the main - compilation unit. */ + /* subfile structure for the main compilation unit. */ + struct subfile main_subfile; - /* in the main source file, any time we see a function entry, we reset - this variable to function's absolute starting line number. All the - following line numbers in the function are relative to this, and - we record absolute line numbers in record_line(). */ + /* In the main source file, any time we see a function entry, we + reset this variable to function's absolute starting line number. + All the following line numbers in the function are relative to + this, and we record absolute line numbers in record_line(). */ int main_source_baseline = 0; - unsigned *firstLine; CORE_ADDR addr; @@ -555,126 +554,146 @@ process_linenos (start, end) enter_line_range (&main_subfile, offset, 0, start, end, &main_source_baseline); - /* else, there was source with line numbers in include files */ - else { - - main_source_baseline = 0; - for (ii=0; ii < inclIndx; ++ii) { - - struct subfile *tmpSubfile; + else + { + /* There was source with line numbers in include files. */ + main_source_baseline = 0; + for (ii=0; ii < inclIndx; ++ii) + { + struct subfile *tmpSubfile; - /* if there is main file source before include file, enter it. */ - if (offset < inclTable[ii].begin) { - enter_line_range - (&main_subfile, offset, inclTable[ii].begin - LINESZ, start, 0, - &main_source_baseline); - } + /* If there is main file source before include file, enter it. */ + if (offset < inclTable[ii].begin) + { + enter_line_range + (&main_subfile, offset, inclTable[ii].begin - LINESZ, + start, 0, &main_source_baseline); + } - /* Have a new subfile for the include file */ + /* Have a new subfile for the include file. */ - tmpSubfile = inclTable[ii].subfile = (struct subfile*) - xmalloc (sizeof (struct subfile)); + tmpSubfile = inclTable[ii].subfile = + (struct subfile *) xmalloc (sizeof (struct subfile)); - memset (tmpSubfile, '\0', sizeof (struct subfile)); - firstLine = &(inclTable[ii].funStartLine); + memset (tmpSubfile, '\0', sizeof (struct subfile)); + firstLine = &(inclTable[ii].funStartLine); - /* enter include file's lines now. */ - enter_line_range (tmpSubfile, inclTable[ii].begin, - inclTable[ii].end, start, 0, firstLine); + /* Enter include file's lines now. */ + enter_line_range (tmpSubfile, inclTable[ii].begin, + inclTable[ii].end, start, 0, firstLine); - offset = inclTable[ii].end + LINESZ; - } + offset = inclTable[ii].end + LINESZ; + } - /* all the include files' line have been processed at this point. Now, - enter remaining lines of the main file, if any left. */ - if (offset < (linetab_offset + linetab_size + 1 - LINESZ)) { - enter_line_range (&main_subfile, offset, 0, start, end, - &main_source_baseline); + /* All the include files' line have been processed at this point. Now, + enter remaining lines of the main file, if any left. */ + if (offset < (linetab_offset + linetab_size + 1 - LINESZ)) + { + enter_line_range (&main_subfile, offset, 0, start, end, + &main_source_baseline); + } } - } - /* Process main file's line numbers. */ - if (main_subfile.line_vector) { - struct linetable *lineTb, *lv; + /* Process main file's line numbers. */ + if (main_subfile.line_vector) + { + struct linetable *lineTb, *lv; - lv = main_subfile.line_vector; + lv = main_subfile.line_vector; - /* Line numbers are not necessarily ordered. xlc compilation will - put static function to the end. */ + /* Line numbers are not necessarily ordered. xlc compilation will + put static function to the end. */ - lineTb = arrange_linetable (lv); - if (lv == lineTb) { - current_subfile->line_vector = (struct linetable *) - xrealloc (lv, (sizeof (struct linetable) - + lv->nitems * sizeof (struct linetable_entry))); + lineTb = arrange_linetable (lv); + if (lv == lineTb) + { + current_subfile->line_vector = (struct linetable *) + xrealloc (lv, (sizeof (struct linetable) + + lv->nitems * sizeof (struct linetable_entry))); + } + else + { + free (lv); + current_subfile->line_vector = lineTb; + } + current_subfile->line_vector_length = + current_subfile->line_vector->nitems; } - else { - free (lv); - current_subfile->line_vector = lineTb; - } - - current_subfile->line_vector_length = - current_subfile->line_vector->nitems; - } - /* Now, process included files' line numbers. */ + /* Now, process included files' line numbers. */ - for (ii=0; ii < inclIndx; ++ii) { + for (ii=0; ii < inclIndx; ++ii) + { + if ((inclTable[ii].subfile)->line_vector) /* Useless if!!! FIXMEmgo */ + { + struct linetable *lineTb, *lv; - if ( (inclTable[ii].subfile)->line_vector) { /* Useless if!!! FIXMEmgo */ - struct linetable *lineTb, *lv; + lv = (inclTable[ii].subfile)->line_vector; - lv = (inclTable[ii].subfile)->line_vector; + /* Line numbers are not necessarily ordered. xlc compilation will + put static function to the end. */ - /* Line numbers are not necessarily ordered. xlc compilation will - put static function to the end. */ + lineTb = arrange_linetable (lv); - lineTb = arrange_linetable (lv); + push_subfile (); - push_subfile (); + /* For the same include file, we might want to have more than one + subfile. This happens if we have something like: - /* For the same include file, we might want to have more than one subfile. - This happens if we have something like: - ...... #include "foo.h" ...... #include "foo.h" ...... - while foo.h including code in it. (stupid but possible) - Since start_subfile() looks at the name and uses an existing one if finds, - we need to provide a fake name and fool it. */ + while foo.h including code in it. (stupid but possible) + Since start_subfile() looks at the name and uses an + existing one if finds, we need to provide a fake name and + fool it. */ -/* start_subfile (inclTable[ii].name, (char*)0); */ - start_subfile (" ?", (char*)0); - free (current_subfile->name); - current_subfile->name = strdup (inclTable[ii].name); +#if 0 + start_subfile (inclTable[ii].name, (char*)0); +#else + { + /* Pick a fake name that will produce the same results as this + one when passed to deduce_language_from_filename. Kludge on + top of kludge. */ + char *fakename = strrchr (inclTable[ii].name, '.'); + if (fakename == NULL) + fakename = " ?"; + start_subfile (fakename, (char*)0); + free (current_subfile->name); + } + current_subfile->name = strdup (inclTable[ii].name); +#endif - if (lv == lineTb) { - current_subfile->line_vector = (struct linetable *) - xrealloc (lv, (sizeof (struct linetable) + if (lv == lineTb) + { + current_subfile->line_vector = + (struct linetable *) xrealloc + (lv, (sizeof (struct linetable) + lv->nitems * sizeof (struct linetable_entry))); - } - else { - free (lv); - current_subfile->line_vector = lineTb; - } + } + else + { + free (lv); + current_subfile->line_vector = lineTb; + } - current_subfile->line_vector_length = - current_subfile->line_vector->nitems; - start_subfile (pop_subfile (), (char*)0); - } + current_subfile->line_vector_length = + current_subfile->line_vector->nitems; + start_subfile (pop_subfile (), (char*)0); + } } -return_after_cleanup: + return_after_cleanup: - /* We don't want to keep alloc/free'ing the global include file table. */ + /* We don't want to keep alloc/free'ing the global include file table. */ inclIndx = 0; - /* start with a fresh subfile structure for the next file. */ + /* Start with a fresh subfile structure for the next file. */ memset (&main_subfile, '\0', sizeof (struct subfile)); } |