diff options
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 10 | ||||
-rw-r--r-- | gas/as.h | 1 | ||||
-rw-r--r-- | gas/input-scrub.c | 32 | ||||
-rw-r--r-- | gas/listing.c | 8 |
4 files changed, 38 insertions, 13 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 95932c2..67b789d 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,13 @@ +2017-10-11 Nick Clifton <nickc@redhat.com> + + PR 21977 + * listing.c (listing_newline): Use the name of the current + physical input file, rather than the current logical input file, + unless including high level source in the listing. + * input-scrub.c (as_where_physical): New function. Returns the + name of the current physical input file. + * as.h: Add prototype for as_where_physical. + 2017-10-09 Andreas Krebbel <krebbel@linux.vnet.ibm.com> * testsuite/gas/s390/zarch-arch12.d (prno, tpei, irbm): New @@ -486,6 +486,7 @@ void cond_exit_macro (int); int seen_at_least_1_file (void); void app_pop (char *); const char * as_where (unsigned int *); +const char * as_where_physical (unsigned int *); void bump_line_counters (void); void do_scrub_begin (int); void input_scrub_begin (void); diff --git a/gas/input-scrub.c b/gas/input-scrub.c index 5e57c2c..6222154 100644 --- a/gas/input-scrub.c +++ b/gas/input-scrub.c @@ -487,6 +487,23 @@ new_logical_line (const char *fname, int line_number) } +/* Return the current physical input file name and line number, if known */ + +const char * +as_where_physical (unsigned int *linep) +{ + if (physical_input_file != NULL) + { + if (linep != NULL) + *linep = physical_input_line; + return physical_input_file; + } + + if (linep != NULL) + *linep = 0; + return NULL; +} + /* Return the current file name and line number. */ const char * @@ -499,16 +516,7 @@ as_where (unsigned int *linep) *linep = logical_input_line; return logical_input_file; } - else if (physical_input_file != NULL) - { - if (linep != NULL) - *linep = physical_input_line; - return physical_input_file; - } - else - { - if (linep != NULL) - *linep = 0; - return NULL; - } + + return as_where_physical (linep); } + diff --git a/gas/listing.c b/gas/listing.c index 18c6e3b..31eae98 100644 --- a/gas/listing.c +++ b/gas/listing.c @@ -324,7 +324,13 @@ listing_newline (char *ps) } #endif - file = as_where (&line); + /* PR 21977 - use the physical file name not the logical one unless high + level source files are being included in the listing. */ + if (listing & LISTING_HLL) + file = as_where (&line); + else + file = as_where_physical (&line); + if (ps == NULL) { if (line == last_line |