mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-24 20:28:28 +08:00
This patch introduces support for specifing views in .loc directives, so that the compiler can use the assembler to generate line number information and have the assembler determine view numbers to multiple views at the same program counter.
binutils* dwarf.c (struct State_Machine_Registers): Add view field. (reset_state_machine): Reset view. (process_extended_line_op): Reset view when appropriate. (display_debug_lines_raw): Increment or reset view when appropriate. Print nonzero views. Support print view resets, disabled by default. (display_debug_lines_decoded): Likewise. Disambiguate op_code tests, enabling printing of end_sequence. * testsuite/binutils-all/dw2-1.W: Add nonzero views. * testsuite/binutils-all/dw2-3.W: Likewise. * testsuite/binutils-all/dw2-3gabi.W: Likewise. * testsuite/binutils-all/dw5.W: Add end sequence lines. * testsuite/binutils-all/i386/compressed-1a.d: Add nonzero views. * testsuite/binutils-all/libdw2-compressedgabi.out: Likewise. * testsuite/binutils-all/objdump.W: Likewise. * testsuite/binutils-all/objdump.WL: Add end sequence lines. * testsuite/binutils-all/x86-64/compressed-1a.d: Add nonzero views. gas * doc/as.texinfo (.loc): Document view support. * dwarf2dbg.c (unused): Check offset of next in struct line_entry. (current): Initialize view. (force_reset_view, view_assert_failed): New variables. (reverse_line_entry_list): New function. (set_or_check_view): Likewise. (dwarf2_gen_line_info_1): Call it. (dwarf2_where): Set view to NULL. (dwarf2_emit_insn): Return early when called before first file. (dwarf2_directive_loc): Add view support. Emit insn immediately when view option is given. (process_entries): Avoid set_address to reset view when a known address change already implies the view reset. (dwarf2dbg_final_check): New function. * dwarf2dbg.h (struct dwarf2_line_info): Add view. (dwarf2dbg_final_check): Declare. * read.c (s_leb128): Parse expression as deferred. * testsuite/gas/all/gas.exp: Run sleb128-9. * testsuite/gas/all/sleb128-9.d: New. * testsuite/gas/all/sleb128-9.l: New. * testsuite/gas/all/sleb128-9.s: New. * testsuite/gas/elf/dwarf2-1.d: Add nonzero views. * testsuite/gas/elf/dwarf2-2.d: Likewise. * testsuite/gas/elf/dwarf2-5.d: New. * testsuite/gas/elf/dwarf2-5.s: New. * testsuite/gas/elf/dwarf2-6.d: New. * testsuite/gas/elf/dwarf2-6.s: New. * testsuite/gas/elf/dwarf2-7.d: New. * testsuite/gas/elf/dwarf2-7.s: New. * testsuite/gas/elf/dwarf2-8.d: New. * testsuite/gas/elf/dwarf2-8.l: New. * testsuite/gas/elf/dwarf2-8.s: New. * testsuite/gas/elf/dwarf2-9.d: New. * testsuite/gas/elf/dwarf2-9.l: New. * testsuite/gas/elf/dwarf2-9.s: New. * testsuite/gas/elf/dwarf2-10.d: New. * testsuite/gas/elf/dwarf2-10.l: New. * testsuite/gas/elf/dwarf2-10.s: New. * testsuite/gas/elf/dwarf2-11.d: New. * testsuite/gas/elf/dwarf2-11.s: New. * testsuite/gas/elf/dwarf2-12.d: New. * testsuite/gas/elf/dwarf2-12.s: New. * testsuite/gas/elf/dwarf2-13.d: New. * testsuite/gas/elf/dwarf2-13.s: New. * testsuite/gas/elf/dwarf2-14.d: New. * testsuite/gas/elf/dwarf2-14.s: New. * testsuite/gas/elf/dwarf2-15.d: New. * testsuite/gas/elf/dwarf2-15.s: New. * testsuite/gas/elf/dwarf2-16.d: New. * testsuite/gas/elf/dwarf2-16.s: New. * testsuite/gas/elf/dwarf2-17.d: New. * testsuite/gas/elf/dwarf2-17.s: New. * testsuite/gas/elf/dwarf2-18.d: New. * testsuite/gas/elf/dwarf2-18.s: New. * testsuite/gas/elf/elf.exp: Run dwarf2-5..18 tests. * testsuite/gas/i386/dw2-compress-1.d: Add nonzero views. * testsuite/gas/i386/dw2-compressed-1.d: Likewise. * testsuite/gas/i386/ilp32/lns/lns-duplicate.d: Likewise. * testsuite/gas/lns/lns-big-delta.d: Likewise. * testsuite/gas/lns/lns-duplicate.d: Likewise. * testsuite/gas/mips/loc-swap-2.d: Likewise. * testsuite/gas/mips/loc-swap-3.d: Likewise. * testsuite/gas/mips/loc-swap.d: Likewise. * testsuite/gas/mips/micromips@loc-swap-2.d: Likewise. * testsuite/gas/mips/micromips@loc-swap.d: Likewise. * testsuite/gas/mips/mips16@loc-swap-2.d: Likewise. * testsuite/gas/mips/mips16@loc-swap.d: Likewise. * testsuite/gas/mips/mips16e@loc-swap.d: Likewise. * write.c (write_object_file): Check pending view asserts. (cvt_frag_to_fill): Complain about undefined leb128 operand.
This commit is contained in:

committed by
Nick Clifton

parent
47826cdbec
commit
ba8826a82a
@ -69,7 +69,7 @@ Raw dump of debug contents of section .z?debug_line:
|
||||
\[0x.*\] Extended opcode 2: set Address to 0x4
|
||||
\[0x.*\] Advance Line by 3 to 4
|
||||
\[0x.*\] Copy
|
||||
\[0x.*\] Copy
|
||||
\[0x.*\] Copy \(view 1\)
|
||||
\[0x.*\] Extended opcode 2: set Address to 0x8
|
||||
\[0x.*\] Extended opcode 1: End of Sequence
|
||||
|
||||
|
@ -149,7 +149,7 @@ Raw dump of debug contents of section .z?debug_line:
|
||||
\[0x0000002d\] Extended opcode 2: set Address to 0x0
|
||||
\[0x00000034\] Advance Line by 3 to 4
|
||||
\[0x00000036\] Copy
|
||||
\[0x00000037\] Copy
|
||||
\[0x00000037\] Copy \(view 1\)
|
||||
\[0x00000038\] Extended opcode 2: set Address to 0x4
|
||||
\[0x0000003f\] Extended opcode 1: End of Sequence
|
||||
|
||||
|
@ -149,7 +149,7 @@ Raw dump of debug contents of section .debug_line:
|
||||
\[0x0000002d\] Extended opcode 2: set Address to 0x0
|
||||
\[0x00000034\] Advance Line by 3 to 4
|
||||
\[0x00000036\] Copy
|
||||
\[0x00000037\] Copy
|
||||
\[0x00000037\] Copy \(view 1\)
|
||||
\[0x00000038\] Extended opcode 2: set Address to 0x4
|
||||
\[0x0000003f\] Extended opcode 1: End of Sequence
|
||||
|
||||
|
@ -345,11 +345,13 @@ Raw dump of debug contents of section .debug_line:
|
||||
Decoded dump of debug contents of section .debug_line:
|
||||
|
||||
CU: ./main.c:
|
||||
File name Line number Starting address
|
||||
File name Line number Starting address View
|
||||
main.c 6 0x1234
|
||||
main.c 6 0x12346
|
||||
main.c 6 0x1234
|
||||
|
||||
main.c 5 0x1234
|
||||
main.c 5 0x1234
|
||||
main.c 5 0x1234
|
||||
|
||||
|
||||
|
@ -96,7 +96,7 @@ Raw dump of debug contents of section .[z]?debug_line:
|
||||
\[0x.*\] Extended opcode 2: set Address to 0x0
|
||||
\[0x.*\] Advance Line by 10 to 11
|
||||
\[0x.*\] Copy
|
||||
\[0x.*\] Special opcode 6: advance Address by 0 to 0x0 and Line by 1 to 12
|
||||
\[0x.*\] Special opcode 6: advance Address by 0 to 0x0 and Line by 1 to 12 \(view 1\)
|
||||
\[0x.*\] Advance Line by -7 to 5
|
||||
\[0x.*\] Special opcode 229: advance Address by 16 to 0x10 and Line by 0 to 5
|
||||
\[0x.*\] Special opcode 49: advance Address by 3 to 0x13 and Line by 2 to 7
|
||||
|
@ -70,7 +70,7 @@ Raw dump of debug contents of section .debug_line:
|
||||
\[0x.*\] Extended opcode 2: set Address to 0x4
|
||||
\[0x.*\] Advance Line by 3 to 4
|
||||
\[0x.*\] Copy
|
||||
\[0x.*\] Copy
|
||||
\[0x.*\] Copy \(view 1\)
|
||||
\[0x.*\] Extended opcode 2: set Address to 0x8
|
||||
\[0x.*\] Extended opcode 1: End of Sequence
|
||||
|
||||
@ -172,7 +172,7 @@ Raw dump of debug contents of section .debug_line:
|
||||
\[0x0000002d\] Extended opcode 2: set Address to 0x0
|
||||
\[0x00000034\] Advance Line by 3 to 4
|
||||
\[0x00000036\] Copy
|
||||
\[0x00000037\] Copy
|
||||
\[0x00000037\] Copy \(view 1\)
|
||||
\[0x00000038\] Extended opcode 2: set Address to 0x4
|
||||
\[0x0000003f\] Extended opcode 1: End of Sequence
|
||||
|
||||
@ -355,7 +355,7 @@ Raw dump of debug contents of section .debug_line:
|
||||
\[0x0000002d\] Extended opcode 2: set Address to 0x0
|
||||
\[0x00000034\] Advance Line by 3 to 4
|
||||
\[0x00000036\] Copy
|
||||
\[0x00000037\] Copy
|
||||
\[0x00000037\] Copy \(view 1\)
|
||||
\[0x00000038\] Extended opcode 2: set Address to 0x4
|
||||
\[0x0000003f\] Extended opcode 1: End of Sequence
|
||||
|
||||
|
@ -69,7 +69,7 @@ Raw dump of debug contents of section .z?debug_line:
|
||||
\[0x.*\] Extended opcode 2: set Address to .*
|
||||
\[0x.*\] Advance Line by 3 to 4
|
||||
\[0x.*\] Copy
|
||||
\[0x.*\] Copy
|
||||
\[0x.*\] Copy \(view 1\)
|
||||
\[0x.*\] Extended opcode 2: set Address to .*
|
||||
\[0x.*\] Extended opcode 1: End of Sequence
|
||||
|
||||
|
@ -4,7 +4,7 @@
|
||||
Decoded dump of debug contents of section \.debug_line:
|
||||
|
||||
CU: \./dw2-decodedline\.c:
|
||||
File name Line number Starting address
|
||||
File name Line number Starting address View
|
||||
|
||||
directory/file1\.c:
|
||||
file1\.c 1 .*
|
||||
@ -12,4 +12,5 @@ file1\.c 1 .*
|
||||
|
||||
\./dw2-decodedline\.c:\[\+\+\]
|
||||
dw2-decodedline\.c 2 .*
|
||||
dw2-decodedline\.c 2 .*
|
||||
|
||||
|
@ -96,10 +96,10 @@ Raw dump of debug contents of section .[z]?debug_line:
|
||||
\[0x.*\] Extended opcode 2: set Address to 0x0
|
||||
\[0x.*\] Advance Line by 10 to 11
|
||||
\[0x.*\] Copy
|
||||
\[0x.*\] Special opcode 6: advance Address by 0 to 0x0 and Line by 1 to 12
|
||||
\[0x.*\] Special opcode 6: advance Address by 0 to 0x0 and Line by 1 to 12 \(view 1\)
|
||||
\[0x.*\] Advance Line by -7 to 5
|
||||
\[0x.*\] Special opcode 229: advance Address by 16 to 0x10 and Line by 0 to 5
|
||||
\[0x.*\] Special opcode 6: advance Address by 0 to 0x10 and Line by 1 to 6
|
||||
\[0x.*\] Special opcode 6: advance Address by 0 to 0x10 and Line by 1 to 6 \(view 1\)
|
||||
\[0x.*\] Advance PC by 5 to 0x15
|
||||
\[0x.*\] Extended opcode 1: End of Sequence
|
||||
|
||||
|
Reference in New Issue
Block a user