Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
R
riscv-gcc-1
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
lvzhengyang
riscv-gcc-1
Commits
b2932ae5
Commit
b2932ae5
authored
Dec 10, 1996
by
Jason Merrill
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
x
From-SVN: r13259
parent
a94dbf2c
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
59 additions
and
57 deletions
+59
-57
gcc/dwarf2out.c
+59
-57
No files found.
gcc/dwarf2out.c
View file @
b2932ae5
...
...
@@ -3151,6 +3151,7 @@ static void
output_uleb128
(
value
)
register
unsigned
long
value
;
{
unsigned
long
save_value
=
value
;
fprintf
(
asm_out_file
,
"
\t
%s
\t
"
,
ASM_BYTE_OP
);
do
{
...
...
@@ -3168,6 +3169,8 @@ output_uleb128 (value)
}
}
while
(
value
!=
0
);
if
(
flag_verbose_asm
)
fprintf
(
asm_out_file
,
"
\t
%s ULEB128 0x%x"
,
ASM_COMMENT_START
,
save_value
);
}
/* Output an signed LEB128 quantity. */
...
...
@@ -3177,6 +3180,7 @@ output_sleb128 (value)
{
register
int
more
;
register
unsigned
byte
;
long
save_value
=
value
;
fprintf
(
asm_out_file
,
"
\t
%s
\t
"
,
ASM_BYTE_OP
);
do
{
...
...
@@ -3196,6 +3200,8 @@ output_sleb128 (value)
}
}
while
(
more
);
if
(
flag_verbose_asm
)
fprintf
(
asm_out_file
,
"
\t
%s SLEB128 %d"
,
ASM_COMMENT_START
,
save_value
);
}
/* Select the encoding of an attribute value. */
...
...
@@ -3258,10 +3264,7 @@ output_value_format (v)
enum
dwarf_form
form
=
value_format
(
v
);
output_uleb128
(
form
);
if
(
flag_verbose_asm
)
{
fprintf
(
asm_out_file
,
"
\t
%s %s"
,
ASM_COMMENT_START
,
dwarf_form_name
(
form
));
}
fprintf
(
asm_out_file
,
" (%s)"
,
dwarf_form_name
(
form
));
fputc
(
'\n'
,
asm_out_file
);
}
...
...
@@ -3277,17 +3280,12 @@ output_abbrev_section ()
register
dw_die_ref
abbrev
=
abbrev_die_table
[
abbrev_id
];
output_uleb128
(
abbrev_id
);
if
(
flag_verbose_asm
)
{
fprintf
(
asm_out_file
,
"
\t
%s abbrev code = %u"
,
ASM_COMMENT_START
,
abbrev_id
);
}
fprintf
(
asm_out_file
,
" (abbrev code)"
);
fputc
(
'\n'
,
asm_out_file
);
output_uleb128
(
abbrev
->
die_tag
);
if
(
flag_verbose_asm
)
{
fprintf
(
asm_out_file
,
"
\t
%s TAG: %s"
,
ASM_COMMENT_START
,
dwarf_tag_name
(
abbrev
->
die_tag
));
}
fprintf
(
asm_out_file
,
" (TAG: %s)"
,
dwarf_tag_name
(
abbrev
->
die_tag
));
fputc
(
'\n'
,
asm_out_file
);
fprintf
(
asm_out_file
,
"
\t
%s
\t
0x%x"
,
ASM_BYTE_OP
,
(
abbrev
->
die_child
!=
NULL
)
...
...
@@ -3305,11 +3303,8 @@ output_abbrev_section ()
{
output_uleb128
(
a_attr
->
dw_attr
);
if
(
flag_verbose_asm
)
{
fprintf
(
asm_out_file
,
"
\t
%s %s"
,
ASM_COMMENT_START
,
dwarf_attr_name
(
a_attr
->
dw_attr
));
}
fprintf
(
asm_out_file
,
" (%s)"
,
dwarf_attr_name
(
a_attr
->
dw_attr
));
fputc
(
'\n'
,
asm_out_file
);
output_value_format
(
&
a_attr
->
dw_attr_val
);
}
...
...
@@ -3357,7 +3352,7 @@ output_loc_operands (loc)
fputc
(
'\n'
,
asm_out_file
);
break
;
case
DW_OP_consts
:
output_sleb128
(
val1
->
v
.
val_
unsigned
);
output_sleb128
(
val1
->
v
.
val_
int
);
fputc
(
'\n'
,
asm_out_file
);
break
;
case
DW_OP_pick
:
...
...
@@ -3413,13 +3408,13 @@ output_loc_operands (loc)
fputc
(
'\n'
,
asm_out_file
);
break
;
case
DW_OP_fbreg
:
output_sleb128
(
val1
->
v
.
val_
unsigned
);
output_sleb128
(
val1
->
v
.
val_
int
);
fputc
(
'\n'
,
asm_out_file
);
break
;
case
DW_OP_bregx
:
output_uleb128
(
val1
->
v
.
val_unsigned
);
fputc
(
'\n'
,
asm_out_file
);
output_sleb128
(
val2
->
v
.
val_
unsigned
);
output_sleb128
(
val2
->
v
.
val_
int
);
fputc
(
'\n'
,
asm_out_file
);
break
;
case
DW_OP_piece
:
...
...
@@ -3466,12 +3461,8 @@ output_die (die)
register
dw_loc_descr_ref
loc
;
output_uleb128
(
die
->
die_abbrev
);
if
(
flag_verbose_asm
)
{
fprintf
(
asm_out_file
,
"
\t
%s DIE (0x%x) %s"
,
ASM_COMMENT_START
,
die
->
die_offset
,
dwarf_tag_name
(
die
->
die_tag
));
}
fprintf
(
asm_out_file
,
" (DIE (0x%x) %s)"
,
die
->
die_offset
,
dwarf_tag_name
(
die
->
die_tag
));
fputc
(
'\n'
,
asm_out_file
);
for
(
a
=
die
->
die_attr
;
a
!=
NULL
;
a
=
a
->
dw_attr_next
)
{
...
...
@@ -3598,6 +3589,9 @@ output_die (die)
{
/* Add null byte to terminate sibling list. */
ASM_OUTPUT_DWARF_DATA1
(
asm_out_file
,
0
);
if
(
flag_verbose_asm
)
fprintf
(
asm_out_file
,
"
\t
%s end of children of DIE 0x%x"
,
ASM_COMMENT_START
,
die
->
die_offset
);
fputc
(
'\n'
,
asm_out_file
);
}
}
...
...
@@ -4073,9 +4067,19 @@ output_call_frame_info ()
register
dw_cfi_ref
cfi
;
unsigned
long
fde_pad
;
/* Only output the info if it will be interesting. */
for
(
i
=
0
;
i
<
fde_table_in_use
;
++
i
)
if
(
fde_table
[
i
].
dw_fde_cfi
!=
NULL
)
break
;
if
(
i
==
fde_table_in_use
)
return
;
/* (re-)initialize the beginning FDE offset. */
next_fde_offset
=
DWARF_ROUND
(
cie_size
,
PTR_SIZE
);
fputc
(
'\n'
,
asm_out_file
);
ASM_OUTPUT_SECTION
(
asm_out_file
,
FRAME_SECTION
);
/* Output the CIE. */
ASM_OUTPUT_DWARF_DATA
(
asm_out_file
,
next_fde_offset
-
DWARF_OFFSET_SIZE
);
if
(
flag_verbose_asm
)
...
...
@@ -4112,17 +4116,11 @@ output_call_frame_info ()
fputc
(
'\n'
,
asm_out_file
);
output_uleb128
(
1
);
if
(
flag_verbose_asm
)
{
fprintf
(
asm_out_file
,
"
\t
%s CIE Code Alignment Factor"
,
ASM_COMMENT_START
);
}
fprintf
(
asm_out_file
,
" (CIE Code Alignment Factor)"
);
fputc
(
'\n'
,
asm_out_file
);
output_sleb128
(
DWARF_CIE_DATA_ALIGNMENT
);
if
(
flag_verbose_asm
)
{
fprintf
(
asm_out_file
,
"
\t
%s CIE Data Alignment Factor"
,
ASM_COMMENT_START
);
}
fprintf
(
asm_out_file
,
" (CIE Data Alignment Factor)"
);
fputc
(
'\n'
,
asm_out_file
);
ASM_OUTPUT_DWARF_DATA1
(
asm_out_file
,
DWARF_FRAME_RETURN_COLUMN
);
if
(
flag_verbose_asm
)
...
...
@@ -4152,6 +4150,8 @@ output_call_frame_info ()
for
(
i
=
0
;
i
<
fde_table_in_use
;
++
i
)
{
fde
=
&
fde_table
[
i
];
if
(
fde
->
dw_fde_cfi
==
NULL
)
continue
;
fde_size
=
size_of_fde
(
fde
,
&
fde_pad
);
ASM_OUTPUT_DWARF_DATA
(
asm_out_file
,
fde_size
-
DWARF_OFFSET_SIZE
);
if
(
flag_verbose_asm
)
...
...
@@ -4576,10 +4576,7 @@ output_line_info ()
fputc
(
'\n'
,
asm_out_file
);
output_uleb128
(
current_file
);
if
(
flag_verbose_asm
)
{
fprintf
(
asm_out_file
,
"
\t
%s
\"
%s
\"
"
,
ASM_COMMENT_START
,
file_table
[
current_file
]);
}
fprintf
(
asm_out_file
,
" (
\"
%s
\"
)"
,
file_table
[
current_file
]);
fputc
(
'\n'
,
asm_out_file
);
}
line_offset
=
line_info
->
dw_line_num
-
current_line
;
...
...
@@ -4683,10 +4680,7 @@ output_line_info ()
fputc
(
'\n'
,
asm_out_file
);
output_uleb128
(
current_file
);
if
(
flag_verbose_asm
)
{
fprintf
(
asm_out_file
,
"
\t
%s
\"
%s
\"
"
,
ASM_COMMENT_START
,
file_table
[
current_file
]);
}
fprintf
(
asm_out_file
,
" (
\"
%s
\"
)"
,
file_table
[
current_file
]);
fputc
(
'\n'
,
asm_out_file
);
}
if
(
line_info
->
dw_line_num
!=
current_line
)
...
...
@@ -5921,13 +5915,13 @@ add_byte_size_attribute (die, tree_node)
"containing object" for the bit-field to the highest order bit of the
bit-field itself.
For any given bit-field, the "containing object" is a hypothetical
object (of
some integral or enum type) within which the given bit-field lives. The
type of this hypothetical "containing object" is always the same a
s the
declared type of the individual bit-field itself.
The
determination of the exact location of the "containing object" for a
bit-field is rather complicated. It's handled by the
`field_byte_offset'
function (above).
For any given bit-field, the "containing object" is a hypothetical
object (of some integral or enum type) within which the given bit-field
lives. The type of this hypothetical "containing object" is alway
s the
same as the declared type of the individual bit-field itself. The
determination of the exact location of the "containing object" for a
bit-field is rather complicated. It's handled by the
`field_byte_offset'
function (above).
Note that it is the size (in bytes) of the hypothetical "containing object"
which will be given in the DW_AT_byte_size attribute for this bit-field.
...
...
@@ -6047,6 +6041,17 @@ add_pure_or_virtual_attribute (die, func_decl)
/********************* utility routines for DIEs *************************/
/* Add source coordinate attributes for the given decl. */
static
void
add_src_coords_attributes
(
die
,
decl
)
register
dw_die_ref
die
;
register
tree
decl
;
{
register
unsigned
file_index
=
lookup_filename
(
DECL_SOURCE_FILE
(
decl
));
add_AT_unsigned
(
die
,
DW_AT_decl_file
,
file_index
);
add_AT_unsigned
(
die
,
DW_AT_decl_line
,
DECL_SOURCE_LINE
(
decl
));
}
/* Add an DW_AT_name attribute and source coordinate attribute for the
given decl, but only if it actually has a name. */
static
void
...
...
@@ -6055,7 +6060,6 @@ add_name_and_src_coords_attributes (die, decl)
register
tree
decl
;
{
register
tree
decl_name
;
register
unsigned
file_index
;
if
(
TREE_CODE
(
decl
)
==
FUNCTION_DECL
||
TREE_CODE
(
decl
)
==
VAR_DECL
)
decl_name
=
DECL_ASSEMBLER_NAME
(
decl
);
else
...
...
@@ -6064,9 +6068,7 @@ add_name_and_src_coords_attributes (die, decl)
if
(
decl_name
&&
IDENTIFIER_POINTER
(
decl_name
))
{
add_name_attribute
(
die
,
IDENTIFIER_POINTER
(
decl_name
));
file_index
=
lookup_filename
(
DECL_SOURCE_FILE
(
decl
));
add_AT_unsigned
(
die
,
DW_AT_decl_file
,
file_index
);
add_AT_unsigned
(
die
,
DW_AT_decl_line
,
DECL_SOURCE_LINE
(
decl
));
add_src_coords_attributes
(
die
,
decl
);
}
}
...
...
@@ -6448,6 +6450,8 @@ gen_enumeration_type_die (type, context_die)
register
tree
link
;
TREE_ASM_WRITTEN
(
type
)
=
1
;
add_byte_size_attribute
(
type_die
,
type
);
if
(
type_tag
(
type
))
add_src_coords_attributes
(
type_die
,
TYPE_STUB_DECL
(
type
));
for
(
link
=
TYPE_FIELDS
(
type
);
link
!=
NULL
;
link
=
TREE_CHAIN
(
link
))
{
...
...
@@ -7263,6 +7267,8 @@ gen_struct_or_union_type_die (type, context_die)
this type is expressed in terms of this type itself. */
TREE_ASM_WRITTEN
(
type
)
=
1
;
add_byte_size_attribute
(
type_die
,
type
);
if
(
type_tag
(
type
))
add_src_coords_attributes
(
type_die
,
TYPE_STUB_DECL
(
type
));
push_decl_scope
(
type
);
gen_member_die
(
type
,
type_die
);
pop_decl_scope
();
...
...
@@ -8411,12 +8417,8 @@ dwarf2out_finish ()
if
(
fde_table_in_use
)
{
#ifdef MIPS_DEBUGGING_INFO
/* Not currently useful otherwise. */
/* Output call frame information. */
fputc
(
'\n'
,
asm_out_file
);
ASM_OUTPUT_SECTION
(
asm_out_file
,
FRAME_SECTION
);
output_call_frame_info
();
#endif
/* Output the address range information. */
fputc
(
'\n'
,
asm_out_file
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment