+2020-11-12 Nick Clifton <nickc@redhat.com>
+
+ PR 26850
+ * dwarf2dbg.c
+ * testsuite/gas/elf/dwarf2-20.s: New test.
+ * testsuite/gas/elf/dwarf2-20.d: New test driver.
+ * testsuite/gas/elf/elf.exp: Run the new test.
+ * testsuite/gas/elf/warn-2.s
+
2020-11-11 Przemyslaw Wirkus <przemyslaw.wirkus@arm.com>
* testsuite/gas/aarch64/ls64.s: Update test.
{
struct line_subseg *lss;
struct line_entry *e;
+ flagword need_flags = SEC_ALLOC | SEC_LOAD | SEC_CODE;
+
+ /* PR 26850: Do not record LOCs in non-executable, non-allocated,
+ or non-loaded sections. */
+ if ((now_seg->flags & need_flags) != need_flags)
+ {
+ if (! SEG_NORMAL (now_seg))
+ /* FIXME: Add code to suppress multiple warnings ? */
+ as_warn ("dwarf line number information for %s ignored",
+ segment_name (now_seg));
+ return;
+ }
e = XNEW (struct line_entry);
e->next = NULL;
/* For each section, emit a statement program. */
for (s = all_segs; s; s = s->next)
+ /* Paranoia - this check should have already have
+ been handled in dwarf2_gen_line_info_1(). */
if (SEG_NORMAL (s->seg))
process_entries (s->seg, s->head->head);
- else
- as_warn ("dwarf line number information for %s ignored",
- segment_name (s->seg));
if (flag_dwarf_sections)
/* We have to switch to the special .debug_line_end section
flag_dwarf_cie_version = 1;
}
-
/* Finish the dwarf2 debug sections. We emit .debug.line if there
were any .file/.loc directives, or --gdwarf2 was given, and if the
file has a non-empty .debug_info section and an empty .debug_line
--- /dev/null
+#as: -gdwarf-3
+#readelf: -wr
+#name: DWARF2_20: debug ranges ignore non-code sections
+# The mn10200 target has a pointer size of 3, but it does not use segment selectors. This confuses DWARF and readelf will complain.
+#xfail: mn102*-*
+
+Contents of the .debug_aranges section:
+
+[ ]+Length:[ ]+(16|28|44)
+[ ]+Version:.*
+[ ]+Offset into .debug_info:[ ]+0x0
+[ ]+Pointer Size:[ ]+(2|4|8)
+[ ]+Segment Size:[ ]+0
+
+[ ]+Address[ ]+Length
+[ ]+0+000 0+00.
+[ ]+0+000 0+000
+#pass
--- /dev/null
+ .section .alloc0,"a"
+ .nop
+ .section .alloc1,"a"
+ .nop
+ .section .nonalloc,""
+ .nop
+ .section .allocexec,"ax"
+ .nop
+ .section .nonallocexec,"x"
+ .nop
run_dump_test "dwarf2-17" $dump_opts
run_dump_test "dwarf2-18" $dump_opts
run_dump_test "dwarf2-19" $dump_opts
+ run_dump_test "dwarf2-20" $dump_opts
run_dump_test "dwarf-5-file0" $dump_opts
run_dump_test "dwarf-4-cu" $dump_opts
run_dump_test "dwarf-5-cu" $dump_opts
;# { dg-do assemble }
-;# { dg-options "--gdwarf2 --defsym nop_type=0" }
-;# { dg-options "--gdwarf2 --defsym nop_type=1" { target ia64-*-* } }
-;# { dg-options "--gdwarf2 --defsym nop_type=2" { target or1k*-*-* } }
+;# { dg-options "--gdwarf2" }
.offset 40
-
- .ifeq nop_type - 1
- nop 0
- .else
- .ifeq nop_type - 2
- l.nop 0
- .else
- nop
- .endif
- .endif
+ .nop
;# { dg-warning "Warning: dwarf line number information for .* ignored" "" { xfail v850*-*-* } 0 }