diff options
Diffstat (limited to 'gas/dwarf2dbg.c')
-rw-r--r-- | gas/dwarf2dbg.c | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/gas/dwarf2dbg.c b/gas/dwarf2dbg.c index 7384a17..1814013 100644 --- a/gas/dwarf2dbg.c +++ b/gas/dwarf2dbg.c @@ -794,17 +794,27 @@ dwarf2_directive_filename (void) } num = get_absolute_expression (); - filename = demand_copy_C_string (&filename_len); - if (filename == NULL) - return NULL; - demand_empty_rest_of_line (); - if ((offsetT) num < 1) + if ((offsetT) num < 1 && dwarf_level < 5) { as_bad (_("file number less than one")); + ignore_rest_of_line (); return NULL; } + if (num == 0) + { + demand_empty_rest_of_line (); + return NULL; + } + + filename = demand_copy_C_string (&filename_len); + if (filename == NULL) + /* demand_copy_C_string will have already generated an error message. */ + return NULL; + + demand_empty_rest_of_line (); + /* A .file directive implies compiler generated debug information is being supplied. Turn off gas generated debug info. */ debug_type = DEBUG_NONE; @@ -821,7 +831,7 @@ dwarf2_directive_filename (void) return NULL; } - get_filenum (filename, (unsigned int) num); + (void) get_filenum (filename, (unsigned int) num); return filename; } |