diff options
author | Nick Clifton <nickc@redhat.com> | 2020-03-06 17:13:22 +0000 |
---|---|---|
committer | Nick Clifton <nickc@redhat.com> | 2020-03-06 17:13:22 +0000 |
commit | 84d9ab33f3dc542c5f20abb9026240cfd48ccd97 (patch) | |
tree | cbdd933a1952a9f71c90f3e43e0265cb96390995 /gas | |
parent | 436b5e99c8eef55433f2c1de35d8f960425aa4c1 (diff) | |
download | gdb-84d9ab33f3dc542c5f20abb9026240cfd48ccd97.zip gdb-84d9ab33f3dc542c5f20abb9026240cfd48ccd97.tar.gz gdb-84d9ab33f3dc542c5f20abb9026240cfd48ccd97.tar.bz2 |
Add support for a ".file 0" directive if supporting DWARF 5 or higher.
PR 25614
* dwarf2dbg.c (dwarf2_directive_filename): Allow a file number of
0 if the dwarf_level is 5 or more. Complain if a filename follows
a file 0.
* testsuite/gas/elf/dwarf-5-file0.s: New test.
* testsuite/gas/elf/dwarf-5-file0.d: New test driver.
* testsuite/gas/elf/elf.exp: Run the new test.
PR 25612
* config/tc-ia64.h (DWARF2_VERISION): Fix typo.
* doc/as.texi: Fix another typo.
Diffstat (limited to 'gas')
-rw-r--r-- | gas/ChangeLog | 14 | ||||
-rw-r--r-- | gas/config/tc-ia64.h | 2 | ||||
-rw-r--r-- | gas/doc/as.texi | 2 | ||||
-rw-r--r-- | gas/dwarf2dbg.c | 22 | ||||
-rw-r--r-- | gas/testsuite/gas/elf/dwarf-5-file0.d | 6 | ||||
-rw-r--r-- | gas/testsuite/gas/elf/dwarf-5-file0.s | 18 | ||||
-rw-r--r-- | gas/testsuite/gas/elf/elf.exp | 1 |
7 files changed, 57 insertions, 8 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 1b377fd..c6a8a4f 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,5 +1,19 @@ 2020-03-06 Nick Clifton <nickc@redhat.com> + PR 25614 + * dwarf2dbg.c (dwarf2_directive_filename): Allow a file number of + 0 if the dwarf_level is 5 or more. Complain if a filename follows + a file 0. + * testsuite/gas/elf/dwarf-5-file0.s: New test. + * testsuite/gas/elf/dwarf-5-file0.d: New test driver. + * testsuite/gas/elf/elf.exp: Run the new test. + + PR 25612 + * config/tc-ia64.h (DWARF2_VERISION): Fix typo. + * doc/as.texi: Fix another typo. + +2020-03-06 Nick Clifton <nickc@redhat.com> + PR 25612 * as.c (dwarf_level): Define. (show_usage): Add --gdwarf-3, --gdwarf-4 and --gdwarf-5. diff --git a/gas/config/tc-ia64.h b/gas/config/tc-ia64.h index 3a50f86..e982e57 100644 --- a/gas/config/tc-ia64.h +++ b/gas/config/tc-ia64.h @@ -325,5 +325,5 @@ typedef struct unwind_record /* VMS backtraces expect dwarf version 3. */ #ifdef TE_VMS -#define DWARF2_VERSION (dwarf_level < 3 ? 3 : debug_level) +#define DWARF2_VERSION (dwarf_level < 3 ? 3 : dwarf_level) #endif diff --git a/gas/doc/as.texi b/gas/doc/as.texi index ff0ef63..711578f 100644 --- a/gas/doc/as.texi +++ b/gas/doc/as.texi @@ -780,7 +780,7 @@ per target basis. @item --gdwarf-5 This option is the same as the @option{--gdwarf-2} option, except that it allows for the possibility of the generation of extra debug information as per -version 4 of the DWARF specification. Note - enabling this option does not +version 5 of the DWARF specification. Note - enabling this option does not guarantee the generation of any extra infortmation, the choice to do so is on a per target basis. 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; } diff --git a/gas/testsuite/gas/elf/dwarf-5-file0.d b/gas/testsuite/gas/elf/dwarf-5-file0.d new file mode 100644 index 0000000..a3d1fdf --- /dev/null +++ b/gas/testsuite/gas/elf/dwarf-5-file0.d @@ -0,0 +1,6 @@ +#as: --gdwarf-5 +#name: DWARF5 .line 0 +#readelf: -wl + +#pass + diff --git a/gas/testsuite/gas/elf/dwarf-5-file0.s b/gas/testsuite/gas/elf/dwarf-5-file0.s new file mode 100644 index 0000000..c00ec5e --- /dev/null +++ b/gas/testsuite/gas/elf/dwarf-5-file0.s @@ -0,0 +1,18 @@ + .text + +.file 0 +.line 1 + .long 3 + +.file 1 "asdf" +.line 2 + .long 5 + +.file 0 +.line 4 + .long 3 + +.file 2 "def" +.line 5 + .long 3 + diff --git a/gas/testsuite/gas/elf/elf.exp b/gas/testsuite/gas/elf/elf.exp index b0522af..c80175c 100644 --- a/gas/testsuite/gas/elf/elf.exp +++ b/gas/testsuite/gas/elf/elf.exp @@ -272,6 +272,7 @@ if { [is_elf_format] } then { run_dump_test "dwarf2-17" $dump_opts run_dump_test "dwarf2-18" $dump_opts run_dump_test "dwarf2-19" $dump_opts + run_dump_test "dwarf-5-file0" $dump_opts run_dump_test "bss" run_dump_test "bad-bss" run_dump_test "bad-section-flag" |