LVU: as installed after Nick's adjustments

This commit is contained in:
Alexandre Oliva
2017-07-21 10:09:06 +01:00
parent 8f4ae1a633
commit 72b6ce4b69
34 changed files with 168 additions and 90 deletions

View File

@@ -431,7 +431,7 @@ typedef struct State_Machine_Registers
int basic_block; int basic_block;
unsigned char op_index; unsigned char op_index;
unsigned char end_sequence; unsigned char end_sequence;
/* This variable hold the number of the last entry seen /* This variable hold the number of the last entry seen
in the File Table. */ in the File Table. */
unsigned int last_file_entry; unsigned int last_file_entry;
} SMR; } SMR;
@@ -3397,8 +3397,8 @@ display_debug_lines_raw (struct dwarf_section *section,
= ((state_machine_regs.op_index + uladv) = ((state_machine_regs.op_index + uladv)
/ linfo.li_max_ops_per_insn) / linfo.li_max_ops_per_insn)
* linfo.li_min_insn_length; * linfo.li_min_insn_length;
state_machine_regs.address
+= addrdelta; state_machine_regs.address += addrdelta;
state_machine_regs.op_index state_machine_regs.op_index
= (state_machine_regs.op_index + uladv) = (state_machine_regs.op_index + uladv)
% linfo.li_max_ops_per_insn; % linfo.li_max_ops_per_insn;

View File

@@ -1,5 +1,7 @@
-*- text -*- -*- text -*-
* Add support for loaction views in DWARF debug line information.
Changes in 2.29: Changes in 2.29:
* Add support for ELF SHF_GNU_MBIND. * Add support for ELF SHF_GNU_MBIND.

View File

@@ -162,7 +162,8 @@
#define TC_PARSE_CONS_RETURN_NONE BFD_RELOC_NONE #define TC_PARSE_CONS_RETURN_NONE BFD_RELOC_NONE
#endif #endif
struct line_entry { struct line_entry
{
struct line_entry *next; struct line_entry *next;
symbolS *label; symbolS *label;
struct dwarf2_line_info loc; struct dwarf2_line_info loc;
@@ -173,7 +174,8 @@ struct line_entry {
static char unused[offsetof(struct line_entry, next) ? -1 : 1] static char unused[offsetof(struct line_entry, next) ? -1 : 1]
ATTRIBUTE_UNUSED; ATTRIBUTE_UNUSED;
struct line_subseg { struct line_subseg
{
struct line_subseg *next; struct line_subseg *next;
subsegT subseg; subsegT subseg;
struct line_entry *head; struct line_entry *head;
@@ -181,7 +183,8 @@ struct line_subseg {
struct line_entry **pmove_tail; struct line_entry **pmove_tail;
}; };
struct line_seg { struct line_seg
{
struct line_seg *next; struct line_seg *next;
segT seg; segT seg;
struct line_subseg *head; struct line_subseg *head;
@@ -193,7 +196,8 @@ struct line_seg {
static struct line_seg *all_segs; static struct line_seg *all_segs;
static struct line_seg **last_seg_ptr; static struct line_seg **last_seg_ptr;
struct file_entry { struct file_entry
{
const char *filename; const char *filename;
unsigned int dir; unsigned int dir;
}; };
@@ -217,7 +221,8 @@ bfd_boolean dwarf2_loc_directive_seen;
bfd_boolean dwarf2_loc_mark_labels; bfd_boolean dwarf2_loc_mark_labels;
/* Current location as indicated by the most recent .loc directive. */ /* Current location as indicated by the most recent .loc directive. */
static struct dwarf2_line_info current = { static struct dwarf2_line_info current =
{
1, 1, 0, 0, 1, 1, 0, 0,
DWARF2_LINE_DEFAULT_IS_STMT ? DWARF2_FLAG_IS_STMT : 0, DWARF2_LINE_DEFAULT_IS_STMT ? DWARF2_FLAG_IS_STMT : 0,
0, NULL 0, NULL
@@ -302,6 +307,7 @@ static struct line_entry *
reverse_line_entry_list (struct line_entry *h) reverse_line_entry_list (struct line_entry *h)
{ {
struct line_entry *p = NULL, *e, *n; struct line_entry *p = NULL, *e, *n;
for (e = h; e; e = n) for (e = h; e; e = n)
{ {
n = e->next; n = e->next;
@@ -314,14 +320,14 @@ reverse_line_entry_list (struct line_entry *h)
/* Compute the view for E based on the previous entry P. If we /* Compute the view for E based on the previous entry P. If we
introduce an (undefined) view symbol for P, and H is given (P must introduce an (undefined) view symbol for P, and H is given (P must
be the tail in this case), introduce view symbols for earlier list be the tail in this case), introduce view symbols for earlier list
entries as well, until one of them is constant. entries as well, until one of them is constant. */
*/
static void static void
set_or_check_view (struct line_entry *e, struct line_entry *p, set_or_check_view (struct line_entry *e, struct line_entry *p,
struct line_entry *h) struct line_entry *h)
{ {
expressionS viewx; expressionS viewx;
memset (&viewx, 0, sizeof (viewx)); memset (&viewx, 0, sizeof (viewx));
viewx.X_unsigned = 1; viewx.X_unsigned = 1;
@@ -387,13 +393,14 @@ set_or_check_view (struct line_entry *e, struct line_entry *p,
if (viewx.X_op != O_constant || viewx.X_add_number) if (viewx.X_op != O_constant || viewx.X_add_number)
{ {
expressionS incv;
if (!p->loc.view) if (!p->loc.view)
{ {
p->loc.view = symbol_temp_make (); p->loc.view = symbol_temp_make ();
gas_assert (!S_IS_DEFINED (p->loc.view)); gas_assert (!S_IS_DEFINED (p->loc.view));
} }
expressionS incv;
memset (&incv, 0, sizeof (incv)); memset (&incv, 0, sizeof (incv));
incv.X_unsigned = 1; incv.X_unsigned = 1;
incv.X_op = O_symbol; incv.X_op = O_symbol;
@@ -425,18 +432,22 @@ set_or_check_view (struct line_entry *e, struct line_entry *p,
compute E's. */ compute E's. */
if (h && p && p->loc.view && !S_IS_DEFINED (p->loc.view)) if (h && p && p->loc.view && !S_IS_DEFINED (p->loc.view))
{ {
struct line_entry *h2;
/* Reverse the list to avoid quadratic behavior going backwards /* Reverse the list to avoid quadratic behavior going backwards
in a single-linked list. */ in a single-linked list. */
struct line_entry *r = reverse_line_entry_list (h); struct line_entry *r = reverse_line_entry_list (h);
gas_assert (r == p); gas_assert (r == p);
/* Set or check views until we find a defined or absent view. */ /* Set or check views until we find a defined or absent view. */
do do
set_or_check_view (r, r->next, NULL); set_or_check_view (r, r->next, NULL);
while (r->next && r->next->loc.view && !S_IS_DEFINED (r->next->loc.view) while (r->next && r->next->loc.view && !S_IS_DEFINED (r->next->loc.view)
&& (r = r->next)); && (r = r->next));
/* Unreverse the list, so that we can go forward again. */ /* Unreverse the list, so that we can go forward again. */
struct line_entry *h2 = reverse_line_entry_list (p); h2 = reverse_line_entry_list (p);
gas_assert (h2 == h); gas_assert (h2 == h);
/* Starting from the last view we just defined, attempt to /* Starting from the last view we just defined, attempt to
simplify the view expressions, until we do so to P. */ simplify the view expressions, until we do so to P. */
do do
@@ -525,8 +536,10 @@ dwarf2_where (struct dwarf2_line_info *line)
{ {
if (debug_type == DEBUG_DWARF2) if (debug_type == DEBUG_DWARF2)
{ {
const char *filename;
memset (line, 0, sizeof (*line)); memset (line, 0, sizeof (*line));
const char *filename = as_where (&line->line); filename = as_where (&line->line);
line->filenum = get_filenum (filename, 0); line->filenum = get_filenum (filename, 0);
line->column = 0; line->column = 0;
line->flags = DWARF2_FLAG_IS_STMT; line->flags = DWARF2_FLAG_IS_STMT;
@@ -902,13 +915,16 @@ dwarf2_directive_loc (int dummy ATTRIBUTE_UNUSED)
} }
else if (strcmp (p, "view") == 0) else if (strcmp (p, "view") == 0)
{ {
(void) restore_line_pointer (c);
symbolS *sym; symbolS *sym;
(void) restore_line_pointer (c);
SKIP_WHITESPACE (); SKIP_WHITESPACE ();
if (ISDIGIT (*input_line_pointer) if (ISDIGIT (*input_line_pointer)
|| *input_line_pointer == '-') || *input_line_pointer == '-')
{ {
bfd_boolean force_reset = *input_line_pointer == '-'; bfd_boolean force_reset = *input_line_pointer == '-';
value = get_absolute_expression (); value = get_absolute_expression ();
if (value != 0) if (value != 0)
{ {
@@ -928,6 +944,7 @@ dwarf2_directive_loc (int dummy ATTRIBUTE_UNUSED)
else else
{ {
char *name = read_symbol_name (); char *name = read_symbol_name ();
if (!name) if (!name)
return; return;
sym = symbol_find_or_make (name); sym = symbol_find_or_make (name);
@@ -1591,8 +1608,8 @@ process_entries (segT seg, struct line_entry *e)
if (last_frag == NULL if (last_frag == NULL
|| (e->loc.view == force_reset_view && force_reset_view || (e->loc.view == force_reset_view && force_reset_view
/* If we're to reset the view, but we know we're /* If we're going to reset the view, but we know we're
advancing PC, we don't have to force with advancing the PC, we don't have to force with
set_address. We know we do when we're at the same set_address. We know we do when we're at the same
address of the same frag, and we know we might when address of the same frag, and we know we might when
we're in the beginning of a frag, and we were at the we're in the beginning of a frag, and we were at the
@@ -2226,10 +2243,14 @@ dwarf2dbg_final_check (void)
holding the check value in X_op_symbol. */ holding the check value in X_op_symbol. */
while (view_assert_failed) while (view_assert_failed)
{ {
expressionS *expr;
symbolS *sym;
offsetT failed;
gas_assert (!symbol_resolved_p (view_assert_failed)); gas_assert (!symbol_resolved_p (view_assert_failed));
expressionS *expr = symbol_get_value_expression (view_assert_failed); expr = symbol_get_value_expression (view_assert_failed);
symbolS *sym = view_assert_failed; sym = view_assert_failed;
/* If view_assert_failed looks like a compound check in the /* If view_assert_failed looks like a compound check in the
chain, break it up. */ chain, break it up. */
@@ -2241,7 +2262,7 @@ dwarf2dbg_final_check (void)
else else
view_assert_failed = NULL; view_assert_failed = NULL;
offsetT failed = resolve_symbol_value (sym); failed = resolve_symbol_value (sym);
if (!symbol_resolved_p (sym) || failed) if (!symbol_resolved_p (sym) || failed)
{ {
as_bad (_("view number mismatch")); as_bad (_("view number mismatch"));

View File

@@ -28,7 +28,8 @@
#define DWARF2_FLAG_PROLOGUE_END (1 << 2) #define DWARF2_FLAG_PROLOGUE_END (1 << 2)
#define DWARF2_FLAG_EPILOGUE_BEGIN (1 << 3) #define DWARF2_FLAG_EPILOGUE_BEGIN (1 << 3)
struct dwarf2_line_info { struct dwarf2_line_info
{
unsigned int filenum; unsigned int filenum;
unsigned int line; unsigned int line;
unsigned int column; unsigned int column;
@@ -41,7 +42,7 @@ struct dwarf2_line_info {
/* Implements the .file FILENO "FILENAME" directive. FILENO can be 0 /* Implements the .file FILENO "FILENAME" directive. FILENO can be 0
to indicate that no file number has been assigned. All real file to indicate that no file number has been assigned. All real file
number must be >0. */ number must be >0. */
extern char *dwarf2_directive_file (int dummy); extern char *dwarf2_directive_file (int);
/* Implements the .loc FILENO LINENO [COLUMN] directive. FILENO is /* Implements the .loc FILENO LINENO [COLUMN] directive. FILENO is
the file number, LINENO the line number and the (optional) COLUMN the file number, LINENO the line number and the (optional) COLUMN
@@ -49,27 +50,27 @@ extern char *dwarf2_directive_file (int dummy);
corresponds to. FILENO can be 0 to indicate that the filename corresponds to. FILENO can be 0 to indicate that the filename
specified by the textually most recent .file directive should be specified by the textually most recent .file directive should be
used. */ used. */
extern void dwarf2_directive_loc (int dummy); extern void dwarf2_directive_loc (int);
/* Implements the .loc_mark_labels {0,1} directive. */ /* Implements the .loc_mark_labels {0,1} directive. */
extern void dwarf2_directive_loc_mark_labels (int dummy); extern void dwarf2_directive_loc_mark_labels (int);
/* Returns the current source information. If .file directives have /* Returns the current source information. If .file directives have
been encountered, the info for the corresponding source file is been encountered, the info for the corresponding source file is
returned. Otherwise, the info for the assembly source file is returned. Otherwise, the info for the assembly source file is
returned. */ returned. */
extern void dwarf2_where (struct dwarf2_line_info *l); extern void dwarf2_where (struct dwarf2_line_info *);
/* A hook to allow the target backend to inform the line number state /* A hook to allow the target backend to inform the line number state
machine of isa changes when assembler debug info is enabled. */ machine of isa changes when assembler debug info is enabled. */
extern void dwarf2_set_isa (unsigned int isa); extern void dwarf2_set_isa (unsigned int);
/* This function generates .debug_line info based on the address and /* This function generates .debug_line info based on the address and
source information passed in the arguments. ADDR should be the source information passed in the arguments. ADDR should be the
frag-relative offset of the instruction the information is for and frag-relative offset of the instruction the information is for and
L is the source information that should be associated with that L is the source information that should be associated with that
address. */ address. */
extern void dwarf2_gen_line_info (addressT addr, struct dwarf2_line_info *l); extern void dwarf2_gen_line_info (addressT, struct dwarf2_line_info *);
/* Must be called for each generated instruction. */ /* Must be called for each generated instruction. */
extern void dwarf2_emit_insn (int); extern void dwarf2_emit_insn (int);
@@ -104,7 +105,8 @@ extern void dwarf2dbg_final_check (void);
/* An enumeration which describes the sizes of offsets (to DWARF sections) /* An enumeration which describes the sizes of offsets (to DWARF sections)
and the mechanism by which the size is indicated. */ and the mechanism by which the size is indicated. */
enum dwarf2_format { enum dwarf2_format
{
/* 32-bit format: the initial length field is 4 bytes long. */ /* 32-bit format: the initial length field is 4 bytes long. */
dwarf2_format_32bit, dwarf2_format_32bit,
/* DWARF3 64-bit format: the representation of the initial length /* DWARF3 64-bit format: the representation of the initial length

View File

@@ -1,4 +1,5 @@
#name: undefined symbols in sleb128 directive #name: undefined symbols in sleb128 directive
#source: sleb128-9.s #source: sleb128-9.s
#error-output: sleb128-9.l #error-output: sleb128-9.l
#target: *-*-* #not-target: riscv*-*

View File

@@ -9,7 +9,7 @@
Decoded dump of debug contents of section \.debug_line: Decoded dump of debug contents of section \.debug_line:
CU: large-debug-line-table\.c: CU: large-debug-line-table\.c:
File name Line number Starting address File name Line number Starting address.*
large-debug-line-table\.c 1 0 large-debug-line-table\.c 1 0
#... #...

View File

@@ -1,3 +1,6 @@
#as: #as:
#name: DWARF2 10 #name: DWARF2 10
#error-output: dwarf2-10.l #error-output: dwarf2-10.l
# The mep target tries to relay code sections which breaks symbolic view computations.
# The tile targets require 8-byte instructions, but the test only simulates 4-byte instructions.
#not-target: mep-* tile*-*

View File

@@ -1,6 +1,10 @@
#as: #as:
#readelf: -wL #readelf: -wL
#name: DWARF2 11 #name: DWARF2 11
# The am3 avr cr16 crx mn10 msp430 nds32 pru rl78 and xtensa targets do not evaluate the subtraction of symbols at assembly time
# The riscv targets do not support the subtraction of symbols.
# The tile targets require 8-byte instructions, but the test only simulates 4-byte instructions.
#not-target: am3-* avr-* cr16-* crx-* m32c-* mn10*-* msp430-* nds32*-* pru-* riscv*-* rl78-* tile*-* xtensa-*
Decoded dump of debug contents of section \.debug_line: Decoded dump of debug contents of section \.debug_line:

View File

@@ -21,7 +21,7 @@
.globl _start .globl _start
_start: _start:
.file 1 "dwarf2-11.c" .file 1 "dwarf2-11.c"
.int 0 .dc.l 0
.loc 1 1 view 0 .loc 1 1 view 0
.balign 8 .balign 8
.loc 1 2 view 0 .loc 1 2 view 0

View File

@@ -1,6 +1,11 @@
#as: #as:
#readelf: -x.rodata -wL #readelf: -x.rodata -wL
#name: DWARF2 12 #name: DWARF2 12
# The am3 avr cr16 crx mn10 msp430 nds32 pru rl78 and xtensa targets do not evaluate the subtraction of symbols at assembly time
# The riscv targets do not support the subtraction of symbols.
# The tile targets require 8-byte instructions, but the test only simulates 4-byte instructions.
#not-target: am3-* avr-* cr16-* crx-* mn10*-* msp430-* nds32*-* pru-* riscv*-* rl78-* tile*-* xtensa-*
Hex dump of section '\.rodata': Hex dump of section '\.rodata':
0x00000000 01 *.* 0x00000000 01 *.*

View File

@@ -24,7 +24,7 @@ _start:
.loc 1 1 view 0 .loc 1 1 view 0
.loc 1 2 view -0 .loc 1 2 view -0
.loc 1 3 view .L1 .loc 1 3 view .L1
.int 0 .dc.l 0
.size _start, .-_start .size _start, .-_start
.section .rodata .section .rodata

View File

@@ -1,6 +1,10 @@
#as: #as:
#readelf: -x.rodata -wL #readelf: -x.rodata -wL
#name: DWARF2 13 #name: DWARF2 13
# The am3 avr cr16 crx mn10 msp430 nds32 pru rl78 and xtensa targets do not evaluate the subtraction of symbols at assembly time
# The riscv targets do not support the subtraction of symbols.
# The tile targets require 8-byte instructions, but the test only simulates 4-byte instructions.
#not-target: am3-* avr-* cr16-* crx-* mn10*-* msp430-* nds32*-* pru-* riscv*-* rl78-* tile*-* xtensa-*
Hex dump of section '\.rodata': Hex dump of section '\.rodata':
0x00000000 01 *.* 0x00000000 01 *.*

View File

@@ -21,12 +21,12 @@
.globl _start .globl _start
_start: _start:
.file 1 "dwarf2-13.c" .file 1 "dwarf2-13.c"
.int 0 .dc.l 0
.loc 1 1 view 0 .loc 1 1 view 0
.balign 8 .balign 8
.loc 1 2 view -0 .loc 1 2 view -0
.loc 1 3 view .L1 .loc 1 3 view .L1
.int 0 .dc.l 0
.size _start, .-_start .size _start, .-_start
.section .rodata .section .rodata

View File

@@ -1,6 +1,10 @@
#as: #as:
#readelf: -x.rodata -wL #readelf: -x.rodata -wL
#name: DWARF2 14 #name: DWARF2 14
# The am3 avr cr16 crx mn10 msp430 nds32 pru rl78 and xtensa targets do not evaluate the subtraction of symbols at assembly time
# The riscv targets do not support the subtraction of symbols.
# The tile targets require 8-byte instructions, but the test only simulates 4-byte instructions.
#not-target: am3-* avr-* cr16-* crx-* mn10*-* msp430-* nds32*-* pru-* riscv*-* rl78-* tile*-* xtensa-*
Hex dump of section '\.rodata': Hex dump of section '\.rodata':
0x00000000 01 *.* 0x00000000 01 *.*

View File

@@ -25,7 +25,7 @@ _start:
.balign 4 .balign 4
.loc 1 2 view -0 .loc 1 2 view -0
.loc 1 3 view .L1 .loc 1 3 view .L1
.int 0 .dc.l 0
.size _start, .-_start .size _start, .-_start
.section .rodata .section .rodata

View File

@@ -1,6 +1,10 @@
#as: #as:
#readelf: -x.rodata -wL #readelf: -x.rodata -wL
#name: DWARF2 15 #name: DWARF2 15
# The am3 avr cr16 crx mn10 msp430 nds32 pru rl78 and xtensa targets do not evaluate the subtraction of symbols at assembly time
# The riscv targets do not support the subtraction of symbols.
# The tile targets require 8-byte instructions, but the test only simulates 4-byte instructions.
#not-target: am3-* avr-* cr16-* crx-* mn10*-* msp430-* nds32*-* pru-* riscv*-* rl78-* tile*-* xtensa-*
Hex dump of section '\.rodata': Hex dump of section '\.rodata':
0x00000000 01 *.* 0x00000000 01 *.*

View File

@@ -22,10 +22,10 @@
_start: _start:
.file 1 "dwarf2-15.c" .file 1 "dwarf2-15.c"
.loc 1 1 view 0 .loc 1 1 view 0
.int 0 .dc.l 0
.loc 1 2 view -0 .loc 1 2 view -0
.loc 1 3 view .L1 .loc 1 3 view .L1
.int 0 .dc.l 0
.size _start, .-_start .size _start, .-_start
.section .rodata .section .rodata

View File

@@ -1,6 +1,11 @@
#as: #as:
#readelf: -x.rodata -wL #readelf: -x.rodata -wL
#name: DWARF2 16 #name: DWARF2 16
# The am3 avr cr16 crx mn10 msp430 nds32 pru rl78 and xtensa targets do not evaluate the subtraction of symbols at assembly time
# The mep target tries to relay code sections which breaks symbolic view computations.
# The riscv targets do not support the subtraction of symbols.
# The tile targets require 8-byte instructions, but the test only simulates 4-byte instructions.
#not-target: am3-* avr-* cr16-* crx-* mep-* mn10*-* msp430-* nds32*-* pru-* riscv*-* rl78-* tile*-* xtensa-*
Hex dump of section '\.rodata': Hex dump of section '\.rodata':
0x00000000 01 *.* 0x00000000 01 *.*

View File

@@ -22,11 +22,11 @@
_start: _start:
.file 1 "dwarf2-16.c" .file 1 "dwarf2-16.c"
.loc 1 1 view 0 .loc 1 1 view 0
.int 0 .dc.l 0
.loc 1 2 view 0 .loc 1 2 view 0
.balign 4 .balign 4
.loc 1 3 view .L1 .loc 1 3 view .L1
.int 0 .dc.l 0
.size _start, .-_start .size _start, .-_start
.section .rodata .section .rodata

View File

@@ -1,6 +1,11 @@
#as: #as:
#readelf: -x.rodata -wL #readelf: -x.rodata -wL
#name: DWARF2 17 #name: DWARF2 17
# The am3 avr cr16 crx mn10 msp430 nds32 pru rl78 and xtensa targets do not evaluate the subtraction of symbols at assembly time
# The mep target tries to relay code sections which breaks symbolic view computations.
# The riscv targets do not support the subtraction of symbols.
# The tile targets require 8-byte instructions, but the test only simulates 4-byte instructions.
#not-target: am3-* avr-* cr16-* crx-* mep-* mn10*-* msp430-* nds32*-* pru-* riscv*-* rl78-* tile*-* xtensa-*
Hex dump of section '\.rodata': Hex dump of section '\.rodata':
0x00000000 00 *.* 0x00000000 00 *.*

View File

@@ -22,11 +22,11 @@
_start: _start:
.file 1 "dwarf2-17.c" .file 1 "dwarf2-17.c"
.loc 1 1 view 0 .loc 1 1 view 0
.int 0 .dc.l 0
.loc 1 2 view 0 .loc 1 2 view 0
.balign 8 .balign 8
.loc 1 3 view .L1 .loc 1 3 view .L1
.int 0 .dc.l 0
.size _start, .-_start .size _start, .-_start
.section .rodata .section .rodata

View File

@@ -1,6 +1,10 @@
#as: #as:
#readelf: -x.rodata -wL #readelf: -x.rodata -wL
#name: DWARF2 18 #name: DWARF2 18
# The am3 avr cr16 crx mn10 msp430 nds32 pru rl78 and xtensa targets do not evaluate the subtraction of symbols at assembly time
# The riscv targets do not support the subtraction of symbols.
# The tile targets require 8-byte instructions, but the test only simulates 4-byte instructions.
#not-target: am3-* avr-* cr16-* crx-* mn10*-* msp430-* nds32*-* pru-* riscv*-* rl78-* tile*-* xtensa-*
Hex dump of section '\.rodata': Hex dump of section '\.rodata':
0x00000000 0100 *.* 0x00000000 0100 *.*

View File

@@ -23,9 +23,9 @@ _start:
.file 1 "dwarf2-18.c" .file 1 "dwarf2-18.c"
.loc 1 1 .loc 1 1
.loc 1 2 view .L1 .loc 1 2 view .L1
.int 0 .dc.l 0
.loc 1 3 view .L2 .loc 1 3 view .L2
.int 0 .dc.l 0
.size _start, .-_start .size _start, .-_start
.section .rodata .section .rodata

View File

@@ -1,11 +1,16 @@
#as: #as:
#readelf: -x.rodata -wlL #readelf: -x.rodata -wlL
#name: DWARF2 5 #name: DWARF2 5
# The am3 avr cr16 crx mn10 msp430 nds32 pru rl78 rx and xtensa targets do not evaluate the subtraction of symbols at assembly time
# The mep target tries to relay code sections which breaks symbolic view computations.
# The riscv targets do not support the subtraction of symbols.
# The tile targets require 8-byte instructions, but the test only simulates 4-byte instructions.
#not-target: am3-* avr-* cr16-* crx-* mep-* mn10*-* msp430-* nds32*-* pru-* riscv*-* rl78-* rx-* tile*-* xtensa-*
Hex dump of section '\.rodata': Hex dump of section '\.rodata':
0x00000000 01010201 010203 *.* 0x00000000 01010201 010203 *.*
Raw dump of debug contents of section .debug_line: Raw dump of debug contents of section \.debug_line:
Offset: 0x0 Offset: 0x0
Length: [0-9]* Length: [0-9]*

View File

@@ -23,7 +23,7 @@ _start:
.file 1 "dwarf2-5.c" .file 1 "dwarf2-5.c"
.loc 1 1 view 0 .loc 1 1 view 0
.loc 1 2 view .L2 .loc 1 2 view .L2
.int 0 .dc.l 0
.loc 1 3 view 0 .loc 1 3 view 0
.balign 4 .balign 4
.loc 1 4 view .L4 .loc 1 4 view .L4
@@ -31,21 +31,21 @@ _start:
.org .+1 .org .+1
.balign 4 .balign 4
.loc 1 6 view 0 .loc 1 6 view 0
.int 0 .dc.l 0
.text .text
.globl func .globl func
.type func, %function .type func, %function
func: func:
.loc 1 7 view 0 .loc 1 7 view 0
.loc 1 8 view .L8 .loc 1 8 view .L8
.int 0 .dc.l 0
.loc 1 9 view 0 .loc 1 9 view 0
.loc 1 10 view .L10 .loc 1 10 view .L10
.pushsection .text .pushsection .text
.loc 1 11 view .L11 .loc 1 11 view .L11
.popsection .popsection
.loc 1 12 view .L12 .loc 1 12 view .L12
.int 0 .dc.l 0
.size func, .-func .size func, .-func
.section .rodata .section .rodata

View File

@@ -1,6 +1,8 @@
#as: #as:
#readelf: -wlL #readelf: -wlL
#name: DWARF2 6 #name: DWARF2 6
# These targets either do not support or do not evaluate the subtraction of symbols at assembly time
#not-target: am3-* avr-* cr16-* crx-* mn10*-* msp430-* nds32*-* pru-* riscv*-* rl78-* xtensa-*
Raw dump of debug contents of section .debug_line: Raw dump of debug contents of section .debug_line:

View File

@@ -1,6 +1,10 @@
#as: #as:
#readelf: -x.rodata -wL #readelf: -x.rodata -wL
#name: DWARF2 7 #name: DWARF2 7
# The am3 avr cr16 crx mn10 msp430 nds32 pru rl78 and xtensa targets do not evaluate the subtraction of symbols at assembly time
# The riscv targets do not support the subtraction of symbols.
# The tile targets require 8-byte instructions, but the test only simulates 4-byte instructions.
#not-target: am3-* avr-* cr16-* crx-* mn10*-* msp430-* nds32*-* pru-* riscv*-* rl78-* tile*-* xtensa-*
Hex dump of section '\.rodata': Hex dump of section '\.rodata':
0x00000000 01 *.* 0x00000000 01 *.*
@@ -12,4 +16,4 @@ File name *Line number *Starting address *View
dwarf2-7\.c *1 *0 dwarf2-7\.c *1 *0
dwarf2-7\.c *2 *0 dwarf2-7\.c *2 *0
dwarf2-7\.c *3 *0 *1 dwarf2-7\.c *3 *0 *1
dwarf2-7\.c *3 *0x4 dwarf2-7\.c *3 *0x.

View File

@@ -32,5 +32,5 @@ _start:
func: func:
.loc 1 2 view -0 .loc 1 2 view -0
.loc 1 3 view .L1 .loc 1 3 view .L1
.int 0 .dc.l 0
.size func, .-func .size func, .-func

View File

@@ -1,3 +1,5 @@
#as: #as:
#name: DWARF2 8 #name: DWARF2 8
#error-output: dwarf2-8.l #error-output: dwarf2-8.l
# The tile targets require 8-byte instructions, but the test only simulates 4-byte instructions.
#not-target: tile*-*

View File

@@ -1,3 +1,5 @@
#as: #as:
#name: DWARF2 9 #name: DWARF2 9
#error-output: dwarf2-9.l #error-output: dwarf2-9.l
# The tile targets require 8-byte instructions, but the test only simulates 4-byte instructions.
#not-target: tile*-*

View File

@@ -1,2 +1,2 @@
[^:]*: Assembler messages: [^:]*: Assembler messages:
[^:]*:30: Error: view number mismatch [^:]*.* Error: view number mismatch

View File

@@ -7,37 +7,37 @@ Raw dump of debug contents of section \.debug_line:
#... #...
Line Number Statements: Line Number Statements:
\[0x.*\] Extended opcode 2: set Address to .* \[0x.*\] Extended opcode 2: set Address to .*
\[0x.*\] Copy \[0x.*\] Copy( \(view 1\)|)
\[0x.*\] Set column to 3 \[0x.*\] Set column to 3
\[0x.*\] Advance Line by 1 to 2 \[0x.*\] Advance Line by 1 to 2
\[0x.*\] Advance PC by fixed size amount .* to .* \[0x.*\] Advance PC by fixed size amount .* to .*
\[0x.*\] Copy \[0x.*\] Copy( \(view 1\)|)
\[0x.*\] Set prologue_end to true \[0x.*\] Set prologue_end to true
\[0x.*\] Advance Line by 1 to 3 \[0x.*\] Advance Line by 1 to 3
\[0x.*\] Advance PC by fixed size amount .* to .* \[0x.*\] Advance PC by fixed size amount .* to .*
\[0x.*\] Copy \[0x.*\] Copy( \(view 2\)|)
\[0x.*\] Set column to 0 \[0x.*\] Set column to 0
\[0x.*\] Set epilogue_begin to true \[0x.*\] Set epilogue_begin to true
\[0x.*\] Advance Line by 1 to 4 \[0x.*\] Advance Line by 1 to 4
\[0x.*\] Advance PC by fixed size amount .* to .* \[0x.*\] Advance PC by fixed size amount .* to .*
\[0x.*\] Copy \[0x.*\] Copy( \(view 3\)|)
\[0x.*\] Set ISA to 1 \[0x.*\] Set ISA to 1
\[0x.*\] Set basic block \[0x.*\] Set basic block
\[0x.*\] Advance Line by 1 to 5 \[0x.*\] Advance Line by 1 to 5
\[0x.*\] Advance PC by fixed size amount .* to .* \[0x.*\] Advance PC by fixed size amount .* to .*
\[0x.*\] Copy \[0x.*\] Copy( \(view 4\)|)
\[0x.*\] Set is_stmt to 0 \[0x.*\] Set is_stmt to 0
\[0x.*\] Advance Line by 1 to 6 \[0x.*\] Advance Line by 1 to 6
\[0x.*\] Advance PC by fixed size amount .* to .* \[0x.*\] Advance PC by fixed size amount .* to .*
\[0x.*\] Copy \[0x.*\] Copy( \(view 5\)|)
\[0x.*\] Set is_stmt to 1 \[0x.*\] Set is_stmt to 1
\[0x.*\] Advance Line by 1 to 7 \[0x.*\] Advance Line by 1 to 7
\[0x.*\] Advance PC by fixed size amount .* to .* \[0x.*\] Advance PC by fixed size amount .* to .*
\[0x.*\] Copy \[0x.*\] Copy( \(view 6\)|)
\[0x.*\] Extended opcode 4: set Discriminator to 1 \[0x.*\] Extended opcode 4: set Discriminator to 1
\[0x.*\] Advance Line by 0 to 7 \[0x.*\] Advance Line by 0 to 7
\[0x.*\] Advance PC by fixed size amount .* to .* \[0x.*\] Advance PC by fixed size amount .* to .*
\[0x.*\] Copy \[0x.*\] Copy( \(view 7\)|)
\[0x.*\] Advance PC by fixed size amount .* to .* \[0x.*\] Advance PC by fixed size amount .* to .*
\[0x.*\] Extended opcode 1: End of Sequence \[0x.*\] Extended opcode 1: End of Sequence
#... #...

View File

@@ -6,5 +6,5 @@ Raw dump of debug contents of section \.z?debug_line:
\[0x.*\] Extended opcode 2: set Address to .* \[0x.*\] Extended opcode 2: set Address to .*
\[0x.*\] Copy \[0x.*\] Copy
\[0x.*\] Set basic block \[0x.*\] Set basic block
\[0x.*\] .* by 1 to 2 \(view 1\) \[0x.*\] .* by 1 to 2( \(view 1\)|)
#pass #pass

View File

@@ -10,61 +10,60 @@
Decoded dump of debug contents of section .debug_line: Decoded dump of debug contents of section .debug_line:
.*: .*:
File name Line number Starting address File name Line number Starting address View
per-function-debugline.s 39 0 per-function-debugline.s 39 0
per-function-debugline.s 40 0x2 per-function-debugline.s 40 0x2 1
per-function-debugline.s 41 0x4 per-function-debugline.s 41 0x4 2
per-function-debugline.s 42 0x6 per-function-debugline.s 42 0x6 3
per-function-debugline.s 47 0x8 per-function-debugline.s 47 0x8 4
per-function-debugline.s 48 0xc per-function-debugline.s 48 0xc 5
per-function-debugline.s 49 0x10 per-function-debugline.s 49 0x10 6
per-function-debugline.s 50 0x12 per-function-debugline.s 50 0x12 7
per-function-debugline.s 51 0x16 per-function-debugline.s 51 0x16 8
per-function-debugline.s 52 0x1a per-function-debugline.s 52 0x1a 9
per-function-debugline.s 54 0x1c per-function-debugline.s 54 0x1c 10
per-function-debugline.s 55 0x1e per-function-debugline.s 55 0x1e 11
per-function-debugline.s 56 0x20 per-function-debugline.s 56 0x20 12
per-function-debugline.s 56 0x22 13
per-function-debugline.s 62 0x22 per-function-debugline.s 62 0x22
per-function-debugline.s 63 0x24 per-function-debugline.s 63 0x24 1
per-function-debugline.s 64 0x26 per-function-debugline.s 64 0x26 2
per-function-debugline.s 65 0x28 per-function-debugline.s 65 0x28 3
per-function-debugline.s 70 0x2a per-function-debugline.s 70 0x2a 4
per-function-debugline.s 71 0x2e per-function-debugline.s 71 0x2e 5
per-function-debugline.s 72 0x32 per-function-debugline.s 72 0x32 6
per-function-debugline.s 73 0x36 per-function-debugline.s 73 0x36 7
per-function-debugline.s 74 0x38 per-function-debugline.s 74 0x38 8
per-function-debugline.s 75 0x3c per-function-debugline.s 75 0x3c 9
per-function-debugline.s 76 0x40 per-function-debugline.s 76 0x40 10
per-function-debugline.s 77 0x44 per-function-debugline.s 77 0x44 11
per-function-debugline.s 79 0x48
per-function-debugline.s 80 0x4a
per-function-debugline.s 81 0x4c
per-function-debugline.s 79 0x48 12
per-function-debugline.s 80 0x4a 13
#pass