2004-10-13 19:07:11 +00:00
|
|
|
/* This testcase is part of GDB, the GNU debugger.
|
|
|
|
|
2012-01-04 08:17:56 +00:00
|
|
|
Copyright 2004, 2007-2012 Free Software Foundation, Inc.
|
2004-10-13 19:07:11 +00:00
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
|
|
it under the terms of the GNU General Public License as published by
|
2007-08-23 18:14:19 +00:00
|
|
|
the Free Software Foundation; either version 3 of the License, or
|
2004-10-13 19:07:11 +00:00
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
GNU General Public License for more details.
|
2007-08-23 18:14:19 +00:00
|
|
|
|
2004-10-13 19:07:11 +00:00
|
|
|
You should have received a copy of the GNU General Public License
|
2007-08-23 18:14:19 +00:00
|
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
2004-10-13 19:07:11 +00:00
|
|
|
|
|
|
|
/* Test a minimal file containing DWARF-2 information. This test also
|
|
|
|
serves as a skeleton for other DWARF-2 tests. Most other tests will
|
|
|
|
not be this extensively itemized and commented... */
|
|
|
|
|
|
|
|
/* Dummy function to provide debug information for. */
|
|
|
|
|
|
|
|
.text
|
|
|
|
.Lbegin_text1:
|
|
|
|
.globl func_cu1
|
|
|
|
.type func_cu1, %function
|
|
|
|
func_cu1:
|
|
|
|
.Lbegin_func_cu1:
|
|
|
|
.int 0
|
|
|
|
.Lend_func_cu1:
|
|
|
|
.size func_cu1, .-func_cu1
|
|
|
|
.Lend_text1:
|
|
|
|
|
|
|
|
/* Debug information */
|
|
|
|
|
|
|
|
.section .debug_info
|
|
|
|
.Lcu1_begin:
|
|
|
|
/* CU header */
|
2007-01-27 11:09:35 +00:00
|
|
|
.4byte .Lcu1_end - .Lcu1_start /* Length of Compilation Unit */
|
2004-10-13 19:07:11 +00:00
|
|
|
.Lcu1_start:
|
2007-01-27 11:09:35 +00:00
|
|
|
.2byte 2 /* DWARF Version */
|
|
|
|
.4byte .Labbrev1_begin /* Offset into abbrev section */
|
2004-10-13 19:07:11 +00:00
|
|
|
.byte 4 /* Pointer size */
|
|
|
|
|
|
|
|
/* CU die */
|
|
|
|
.uleb128 1 /* Abbrev: DW_TAG_compile_unit */
|
2007-01-27 11:09:35 +00:00
|
|
|
.4byte .Lline1_begin /* DW_AT_stmt_list */
|
|
|
|
.4byte .Lend_text1 /* DW_AT_high_pc */
|
|
|
|
.4byte .Lbegin_text1 /* DW_AT_low_pc */
|
2004-10-13 19:07:11 +00:00
|
|
|
.ascii "file1.txt\0" /* DW_AT_name */
|
|
|
|
.ascii "GNU C 3.3.3\0" /* DW_AT_producer */
|
|
|
|
.byte 1 /* DW_AT_language (C) */
|
|
|
|
|
|
|
|
/* func_cu1 */
|
|
|
|
.uleb128 2 /* Abbrev: DW_TAG_subprogram */
|
|
|
|
.byte 1 /* DW_AT_external */
|
|
|
|
.byte 1 /* DW_AT_decl_file */
|
|
|
|
.byte 2 /* DW_AT_decl_line */
|
|
|
|
.ascii "func_cu1\0" /* DW_AT_name */
|
Initial support for Fission. http://gcc.gnu.org/wiki/DebugFission
* symfile.c (default_symfile_relocate): Use sectp->owner instead of
objfile->obfd.
* symfile.h (dwarf2_debug_sections): New member addr.
* dwarf2expr.c (execute_stack_op): New case DW_OP_GNU_addr_index.
(ctx_no_get_addr_index): New function.
* dwarf2expr.h (dwarf_expr_context_funcs): New member get_addr_index.
(ctx_no_get_addr_index): Declare.
* dwarf2-frame.c (dwarf2_frame_ctx_funcs): Update.
* dwarf2loc.c (dwarf_expr_get_addr_index): New function.
(dwarf_expr_ctx_funcs): Update.
(needs_get_addr_index): New function.
(needs_frame_ctx_funcs): Update.
* dwarf2loc.h (dwarf2_read_addr_index): Declare.
* dwarf2read.c: #include "gdbcore.h".
(dwarf2_per_objfile): New members addr, dwo_files.
(dwarf2_elf_names): Add entry for addr.
(struct dwo_section_names): New type.
(dwo_section_names): New static global.
(dwarf2_cu): New members dwo_unit, addr_base, have_addr_base.
(dwarf2_per_cu_data): New member is_debug_types, all boolean uses of
old debug_types_section member updated to use this.
Rename member debug_types_section to info_or_types_section,
all uses updated.
(signatured_type): Rename member type_offset to type_offset_in_tu,
all uses updated. New member type_offset_in_section.
(struct dwo_sections): New type.
(struct dwo_unit): New type.
(struct dwo_file): New type.
(die_reader_specs): New member dwo_file.
(dwarf2_locate_sections): Watch for .debug_addr.
(zlib_decompress_section): Use sectp->owner instead of objfile->obfd.
(dwarf2_read_section): Get bfd of section from bfd's asection,
instead of objfile.
(create_cus_from_index): Initialize the_cu->info_or_types_section.
(create_signatured_type_table_from_index): Initialize
sig_type->info_or_types_section.
(dw2_get_file_names): Statement lists for type units with DWO files
live in the DWO file.
(create_debug_types_hash_table): New function.
(create_all_type_units): Rewrite.
(init_cu_die_reader): New arg dwo_file, all callers updated.
(init_and_read_dies_worker): Get section from
this_cu->info_or_types_section. Set sig_type->type_offset_in_section.
Watch for DW_AT_GNU_dwo_name and if present lookup the file and
continue reading the CU/TU from there.
(init_cutu_and_read_dies_no_follow): New arg dwo_file, all callers
updated. Get section from this_cu->info_or_types_section.
(create_all_comp_units): Initialize this_cu->info_or_types_section.
(skip_one_die): New cases DW_FORM_GNU_addr_index,
DW_FORM_GNU_str_index.
(hash_dwo_file, eq_dwo_file): New functions.
(allocate_dwo_file_hash_table): New function.
(hash_dwo_unit, eq_dwo_unit): New functions.
(allocate_dwo_unit_table): New function.
(dwarf2_locate_dwo_sections): New function.
(struct create_dwo_info_table_data): New type.
(create_debug_info_hash_table_reader): New function.
(create_debug_info_hash_table): New function.
(try_open_dwo_file, open_dwo_file, init_dwo_file): New function.
(lookup_dwo_file): New function.
(lookup_dwo_comp_unit, lookup_dwo_type_unit): New functions.
(free_dwo_file, free_dwo_file_cleanup): New functions.
(free_dwo_file_from_slot, free_dwo_files): New functions.
(dwarf2_get_pc_bounds): Handle DW_FORM_GNU_addr_index.
(dwarf2_record_block_ranges): Ditto.
(read_partial_die): Ditto.
(process_enumeration_scope): Update to use type_offset_in_section.
(read_full_die_1): New function.
(read_full_die): Rewrite.
(read_attribute_value): New cases DW_FORM_GNU_addr_index,
DW_FORM_GNU_str_index.
(read_addr_index_1, read_addr_index): New functions.
(read_addr_index_from_leb128): New function.
(struct dwarf2_read_addr_index_data): New type.
(dwarf2_read_addr_index_reader): New function.
(dwarf2_read_addr_index): New function.
(read_str_index): New function.
(leb128_size): New function.
(dwarf_decode_line_header): Delete arg abfd, all callers updated.
If processing a type unit from a DWO file, get the line section
from the DWO file.
(var_decode_location): Watch for DW_OP_GNU_addr_index.
(dwarf2_const_value_attr): New cases DW_FORM_GNU_addr_index,
DW_FORM_GNU_str_index.
(lookup_die_type): Check whether section offset of type's die is
known before looking it up. Remove assert. Condition can
legimately happen for inter-cu type references.
(dwarf_attr_name): Handle Fission attributes.
(dwarf_form_name): Handle Fission forms.
(dump_die_shallow): New cases DW_FORM_GNU_addr_index,
DW_FORM_GNU_str_index.
(follow_die_sig): Update to use type_offset_in_section.
(decode_locdesc): New case DW_OP_GNU_addr_index.
(skip_form_bytes): New cases DW_FORM_GNU_addr_index,
DW_FORM_GNU_str_index.
(cu_debug_loc_section): New function.
(fill_in_loclist_baton, dwarf2_symbol_mark_computed): Call it.
(dwarf2_per_objfile_free): Unmap .debug_addr section.
Free DWO files if present.
* xcoffread.c (dwarf2_xcoff_names): Add .debug_addr.
testsuite/
* gdb.dwarf2/dw2-intercu.S (.Ltype_int2_in_cu2): Renamed from
.Ltype_int_in_cu2. Use name "int2" instead of "int".
All uses updated.
* gdb.dwarf2/dw2-intercu.exp: Add "ptype int2" ahead of
"ptype func_cu1" to expand cu2 before cu1.
2012-04-28 23:22:14 +00:00
|
|
|
.4byte .Ltype_int2_in_cu2 /* DW_AT_type */
|
2007-01-27 11:09:35 +00:00
|
|
|
.4byte .Lbegin_func_cu1 /* DW_AT_low_pc */
|
|
|
|
.4byte .Lend_func_cu1 /* DW_AT_high_pc */
|
2004-10-13 19:07:11 +00:00
|
|
|
.byte 1 /* DW_AT_frame_base: length */
|
|
|
|
.byte 0x55 /* DW_AT_frame_base: DW_OP_reg5 */
|
|
|
|
|
|
|
|
.byte 0 /* End of children of CU */
|
|
|
|
|
|
|
|
.Lcu1_end:
|
|
|
|
|
|
|
|
/* Second compilation unit. */
|
|
|
|
.Lcu2_begin:
|
|
|
|
/* CU header */
|
2007-01-27 11:09:35 +00:00
|
|
|
.4byte .Lcu2_end - .Lcu2_start /* Length of Compilation Unit */
|
2004-10-13 19:07:11 +00:00
|
|
|
.Lcu2_start:
|
2007-01-27 11:09:35 +00:00
|
|
|
.2byte 2 /* DWARF Version */
|
|
|
|
.4byte .Labbrev2_begin /* Offset into abbrev section */
|
2004-10-13 19:07:11 +00:00
|
|
|
.byte 4 /* Pointer size */
|
|
|
|
|
|
|
|
/* CU die */
|
|
|
|
.uleb128 1 /* Abbrev: DW_TAG_compile_unit */
|
|
|
|
.ascii "file1.txt\0" /* DW_AT_name */
|
|
|
|
.ascii "GNU C 3.3.3\0" /* DW_AT_producer */
|
|
|
|
.byte 1 /* DW_AT_language (C) */
|
|
|
|
|
Initial support for Fission. http://gcc.gnu.org/wiki/DebugFission
* symfile.c (default_symfile_relocate): Use sectp->owner instead of
objfile->obfd.
* symfile.h (dwarf2_debug_sections): New member addr.
* dwarf2expr.c (execute_stack_op): New case DW_OP_GNU_addr_index.
(ctx_no_get_addr_index): New function.
* dwarf2expr.h (dwarf_expr_context_funcs): New member get_addr_index.
(ctx_no_get_addr_index): Declare.
* dwarf2-frame.c (dwarf2_frame_ctx_funcs): Update.
* dwarf2loc.c (dwarf_expr_get_addr_index): New function.
(dwarf_expr_ctx_funcs): Update.
(needs_get_addr_index): New function.
(needs_frame_ctx_funcs): Update.
* dwarf2loc.h (dwarf2_read_addr_index): Declare.
* dwarf2read.c: #include "gdbcore.h".
(dwarf2_per_objfile): New members addr, dwo_files.
(dwarf2_elf_names): Add entry for addr.
(struct dwo_section_names): New type.
(dwo_section_names): New static global.
(dwarf2_cu): New members dwo_unit, addr_base, have_addr_base.
(dwarf2_per_cu_data): New member is_debug_types, all boolean uses of
old debug_types_section member updated to use this.
Rename member debug_types_section to info_or_types_section,
all uses updated.
(signatured_type): Rename member type_offset to type_offset_in_tu,
all uses updated. New member type_offset_in_section.
(struct dwo_sections): New type.
(struct dwo_unit): New type.
(struct dwo_file): New type.
(die_reader_specs): New member dwo_file.
(dwarf2_locate_sections): Watch for .debug_addr.
(zlib_decompress_section): Use sectp->owner instead of objfile->obfd.
(dwarf2_read_section): Get bfd of section from bfd's asection,
instead of objfile.
(create_cus_from_index): Initialize the_cu->info_or_types_section.
(create_signatured_type_table_from_index): Initialize
sig_type->info_or_types_section.
(dw2_get_file_names): Statement lists for type units with DWO files
live in the DWO file.
(create_debug_types_hash_table): New function.
(create_all_type_units): Rewrite.
(init_cu_die_reader): New arg dwo_file, all callers updated.
(init_and_read_dies_worker): Get section from
this_cu->info_or_types_section. Set sig_type->type_offset_in_section.
Watch for DW_AT_GNU_dwo_name and if present lookup the file and
continue reading the CU/TU from there.
(init_cutu_and_read_dies_no_follow): New arg dwo_file, all callers
updated. Get section from this_cu->info_or_types_section.
(create_all_comp_units): Initialize this_cu->info_or_types_section.
(skip_one_die): New cases DW_FORM_GNU_addr_index,
DW_FORM_GNU_str_index.
(hash_dwo_file, eq_dwo_file): New functions.
(allocate_dwo_file_hash_table): New function.
(hash_dwo_unit, eq_dwo_unit): New functions.
(allocate_dwo_unit_table): New function.
(dwarf2_locate_dwo_sections): New function.
(struct create_dwo_info_table_data): New type.
(create_debug_info_hash_table_reader): New function.
(create_debug_info_hash_table): New function.
(try_open_dwo_file, open_dwo_file, init_dwo_file): New function.
(lookup_dwo_file): New function.
(lookup_dwo_comp_unit, lookup_dwo_type_unit): New functions.
(free_dwo_file, free_dwo_file_cleanup): New functions.
(free_dwo_file_from_slot, free_dwo_files): New functions.
(dwarf2_get_pc_bounds): Handle DW_FORM_GNU_addr_index.
(dwarf2_record_block_ranges): Ditto.
(read_partial_die): Ditto.
(process_enumeration_scope): Update to use type_offset_in_section.
(read_full_die_1): New function.
(read_full_die): Rewrite.
(read_attribute_value): New cases DW_FORM_GNU_addr_index,
DW_FORM_GNU_str_index.
(read_addr_index_1, read_addr_index): New functions.
(read_addr_index_from_leb128): New function.
(struct dwarf2_read_addr_index_data): New type.
(dwarf2_read_addr_index_reader): New function.
(dwarf2_read_addr_index): New function.
(read_str_index): New function.
(leb128_size): New function.
(dwarf_decode_line_header): Delete arg abfd, all callers updated.
If processing a type unit from a DWO file, get the line section
from the DWO file.
(var_decode_location): Watch for DW_OP_GNU_addr_index.
(dwarf2_const_value_attr): New cases DW_FORM_GNU_addr_index,
DW_FORM_GNU_str_index.
(lookup_die_type): Check whether section offset of type's die is
known before looking it up. Remove assert. Condition can
legimately happen for inter-cu type references.
(dwarf_attr_name): Handle Fission attributes.
(dwarf_form_name): Handle Fission forms.
(dump_die_shallow): New cases DW_FORM_GNU_addr_index,
DW_FORM_GNU_str_index.
(follow_die_sig): Update to use type_offset_in_section.
(decode_locdesc): New case DW_OP_GNU_addr_index.
(skip_form_bytes): New cases DW_FORM_GNU_addr_index,
DW_FORM_GNU_str_index.
(cu_debug_loc_section): New function.
(fill_in_loclist_baton, dwarf2_symbol_mark_computed): Call it.
(dwarf2_per_objfile_free): Unmap .debug_addr section.
Free DWO files if present.
* xcoffread.c (dwarf2_xcoff_names): Add .debug_addr.
testsuite/
* gdb.dwarf2/dw2-intercu.S (.Ltype_int2_in_cu2): Renamed from
.Ltype_int_in_cu2. Use name "int2" instead of "int".
All uses updated.
* gdb.dwarf2/dw2-intercu.exp: Add "ptype int2" ahead of
"ptype func_cu1" to expand cu2 before cu1.
2012-04-28 23:22:14 +00:00
|
|
|
/* This type is named "int2" and not "int" to ensure it is unique,
|
|
|
|
and thus we can easily ensure we expand this CU and not some
|
|
|
|
other CU with "int". */
|
|
|
|
.Ltype_int2_in_cu2:
|
2004-10-13 19:07:11 +00:00
|
|
|
.uleb128 2 /* Abbrev: DW_TAG_base_type */
|
Initial support for Fission. http://gcc.gnu.org/wiki/DebugFission
* symfile.c (default_symfile_relocate): Use sectp->owner instead of
objfile->obfd.
* symfile.h (dwarf2_debug_sections): New member addr.
* dwarf2expr.c (execute_stack_op): New case DW_OP_GNU_addr_index.
(ctx_no_get_addr_index): New function.
* dwarf2expr.h (dwarf_expr_context_funcs): New member get_addr_index.
(ctx_no_get_addr_index): Declare.
* dwarf2-frame.c (dwarf2_frame_ctx_funcs): Update.
* dwarf2loc.c (dwarf_expr_get_addr_index): New function.
(dwarf_expr_ctx_funcs): Update.
(needs_get_addr_index): New function.
(needs_frame_ctx_funcs): Update.
* dwarf2loc.h (dwarf2_read_addr_index): Declare.
* dwarf2read.c: #include "gdbcore.h".
(dwarf2_per_objfile): New members addr, dwo_files.
(dwarf2_elf_names): Add entry for addr.
(struct dwo_section_names): New type.
(dwo_section_names): New static global.
(dwarf2_cu): New members dwo_unit, addr_base, have_addr_base.
(dwarf2_per_cu_data): New member is_debug_types, all boolean uses of
old debug_types_section member updated to use this.
Rename member debug_types_section to info_or_types_section,
all uses updated.
(signatured_type): Rename member type_offset to type_offset_in_tu,
all uses updated. New member type_offset_in_section.
(struct dwo_sections): New type.
(struct dwo_unit): New type.
(struct dwo_file): New type.
(die_reader_specs): New member dwo_file.
(dwarf2_locate_sections): Watch for .debug_addr.
(zlib_decompress_section): Use sectp->owner instead of objfile->obfd.
(dwarf2_read_section): Get bfd of section from bfd's asection,
instead of objfile.
(create_cus_from_index): Initialize the_cu->info_or_types_section.
(create_signatured_type_table_from_index): Initialize
sig_type->info_or_types_section.
(dw2_get_file_names): Statement lists for type units with DWO files
live in the DWO file.
(create_debug_types_hash_table): New function.
(create_all_type_units): Rewrite.
(init_cu_die_reader): New arg dwo_file, all callers updated.
(init_and_read_dies_worker): Get section from
this_cu->info_or_types_section. Set sig_type->type_offset_in_section.
Watch for DW_AT_GNU_dwo_name and if present lookup the file and
continue reading the CU/TU from there.
(init_cutu_and_read_dies_no_follow): New arg dwo_file, all callers
updated. Get section from this_cu->info_or_types_section.
(create_all_comp_units): Initialize this_cu->info_or_types_section.
(skip_one_die): New cases DW_FORM_GNU_addr_index,
DW_FORM_GNU_str_index.
(hash_dwo_file, eq_dwo_file): New functions.
(allocate_dwo_file_hash_table): New function.
(hash_dwo_unit, eq_dwo_unit): New functions.
(allocate_dwo_unit_table): New function.
(dwarf2_locate_dwo_sections): New function.
(struct create_dwo_info_table_data): New type.
(create_debug_info_hash_table_reader): New function.
(create_debug_info_hash_table): New function.
(try_open_dwo_file, open_dwo_file, init_dwo_file): New function.
(lookup_dwo_file): New function.
(lookup_dwo_comp_unit, lookup_dwo_type_unit): New functions.
(free_dwo_file, free_dwo_file_cleanup): New functions.
(free_dwo_file_from_slot, free_dwo_files): New functions.
(dwarf2_get_pc_bounds): Handle DW_FORM_GNU_addr_index.
(dwarf2_record_block_ranges): Ditto.
(read_partial_die): Ditto.
(process_enumeration_scope): Update to use type_offset_in_section.
(read_full_die_1): New function.
(read_full_die): Rewrite.
(read_attribute_value): New cases DW_FORM_GNU_addr_index,
DW_FORM_GNU_str_index.
(read_addr_index_1, read_addr_index): New functions.
(read_addr_index_from_leb128): New function.
(struct dwarf2_read_addr_index_data): New type.
(dwarf2_read_addr_index_reader): New function.
(dwarf2_read_addr_index): New function.
(read_str_index): New function.
(leb128_size): New function.
(dwarf_decode_line_header): Delete arg abfd, all callers updated.
If processing a type unit from a DWO file, get the line section
from the DWO file.
(var_decode_location): Watch for DW_OP_GNU_addr_index.
(dwarf2_const_value_attr): New cases DW_FORM_GNU_addr_index,
DW_FORM_GNU_str_index.
(lookup_die_type): Check whether section offset of type's die is
known before looking it up. Remove assert. Condition can
legimately happen for inter-cu type references.
(dwarf_attr_name): Handle Fission attributes.
(dwarf_form_name): Handle Fission forms.
(dump_die_shallow): New cases DW_FORM_GNU_addr_index,
DW_FORM_GNU_str_index.
(follow_die_sig): Update to use type_offset_in_section.
(decode_locdesc): New case DW_OP_GNU_addr_index.
(skip_form_bytes): New cases DW_FORM_GNU_addr_index,
DW_FORM_GNU_str_index.
(cu_debug_loc_section): New function.
(fill_in_loclist_baton, dwarf2_symbol_mark_computed): Call it.
(dwarf2_per_objfile_free): Unmap .debug_addr section.
Free DWO files if present.
* xcoffread.c (dwarf2_xcoff_names): Add .debug_addr.
testsuite/
* gdb.dwarf2/dw2-intercu.S (.Ltype_int2_in_cu2): Renamed from
.Ltype_int_in_cu2. Use name "int2" instead of "int".
All uses updated.
* gdb.dwarf2/dw2-intercu.exp: Add "ptype int2" ahead of
"ptype func_cu1" to expand cu2 before cu1.
2012-04-28 23:22:14 +00:00
|
|
|
.ascii "int2\0" /* DW_AT_name */
|
2004-10-13 19:07:11 +00:00
|
|
|
.byte 4 /* DW_AT_byte_size */
|
|
|
|
.byte 5 /* DW_AT_encoding */
|
|
|
|
|
|
|
|
.byte 0 /* End of children of CU */
|
|
|
|
|
|
|
|
.Lcu2_end:
|
|
|
|
|
|
|
|
/* Abbrev table */
|
|
|
|
.section .debug_abbrev
|
|
|
|
.Labbrev1_begin:
|
|
|
|
.uleb128 1 /* Abbrev code */
|
|
|
|
.uleb128 0x11 /* DW_TAG_compile_unit */
|
|
|
|
.byte 1 /* has_children */
|
|
|
|
.uleb128 0x10 /* DW_AT_stmt_list */
|
|
|
|
.uleb128 0x6 /* DW_FORM_data4 */
|
|
|
|
.uleb128 0x12 /* DW_AT_high_pc */
|
|
|
|
.uleb128 0x1 /* DW_FORM_addr */
|
|
|
|
.uleb128 0x11 /* DW_AT_low_pc */
|
|
|
|
.uleb128 0x1 /* DW_FORM_addr */
|
|
|
|
.uleb128 0x3 /* DW_AT_name */
|
|
|
|
.uleb128 0x8 /* DW_FORM_string */
|
|
|
|
.uleb128 0x25 /* DW_AT_producer */
|
|
|
|
.uleb128 0x8 /* DW_FORM_string */
|
|
|
|
.uleb128 0x13 /* DW_AT_language */
|
|
|
|
.uleb128 0xb /* DW_FORM_data1 */
|
|
|
|
.byte 0x0 /* Terminator */
|
|
|
|
.byte 0x0 /* Terminator */
|
|
|
|
|
|
|
|
.uleb128 2 /* Abbrev code */
|
|
|
|
.uleb128 0x2e /* DW_TAG_subprogram */
|
|
|
|
.byte 0 /* has_children */
|
|
|
|
.uleb128 0x3f /* DW_AT_external */
|
|
|
|
.uleb128 0xc /* DW_FORM_flag */
|
|
|
|
.uleb128 0x3a /* DW_AT_decl_file */
|
|
|
|
.uleb128 0xb /* DW_FORM_data1 */
|
|
|
|
.uleb128 0x3b /* DW_AT_decl_line */
|
|
|
|
.uleb128 0xb /* DW_FORM_data1 */
|
|
|
|
.uleb128 0x3 /* DW_AT_name */
|
|
|
|
.uleb128 0x8 /* DW_FORM_string */
|
|
|
|
.uleb128 0x49 /* DW_AT_type */
|
|
|
|
.uleb128 0x10 /* DW_FORM_ref_addr */
|
|
|
|
.uleb128 0x11 /* DW_AT_low_pc */
|
|
|
|
.uleb128 0x1 /* DW_FORM_addr */
|
|
|
|
.uleb128 0x12 /* DW_AT_high_pc */
|
|
|
|
.uleb128 0x1 /* DW_FORM_addr */
|
|
|
|
.uleb128 0x40 /* DW_AT_frame_base */
|
|
|
|
.uleb128 0xa /* DW_FORM_block1 */
|
|
|
|
.byte 0x0 /* Terminator */
|
|
|
|
.byte 0x0 /* Terminator */
|
|
|
|
|
|
|
|
.byte 0x0 /* Terminator */
|
|
|
|
.byte 0x0 /* Terminator */
|
|
|
|
|
|
|
|
.Labbrev2_begin:
|
|
|
|
.uleb128 1 /* Abbrev code */
|
|
|
|
.uleb128 0x11 /* DW_TAG_compile_unit */
|
|
|
|
.byte 1 /* has_children */
|
|
|
|
.uleb128 0x3 /* DW_AT_name */
|
|
|
|
.uleb128 0x8 /* DW_FORM_string */
|
|
|
|
.uleb128 0x25 /* DW_AT_producer */
|
|
|
|
.uleb128 0x8 /* DW_FORM_string */
|
|
|
|
.uleb128 0x13 /* DW_AT_language */
|
|
|
|
.uleb128 0xb /* DW_FORM_data1 */
|
|
|
|
.byte 0x0 /* Terminator */
|
|
|
|
.byte 0x0 /* Terminator */
|
|
|
|
|
|
|
|
.uleb128 2 /* Abbrev code */
|
|
|
|
.uleb128 0x24 /* DW_TAG_base_type */
|
|
|
|
.byte 0 /* has_children */
|
|
|
|
.uleb128 0x3 /* DW_AT_name */
|
|
|
|
.uleb128 0x8 /* DW_FORM_string */
|
|
|
|
.uleb128 0xb /* DW_AT_byte_size */
|
|
|
|
.uleb128 0xb /* DW_FORM_data1 */
|
|
|
|
.uleb128 0x3e /* DW_AT_encoding */
|
|
|
|
.uleb128 0xb /* DW_FORM_data1 */
|
|
|
|
.byte 0x0 /* Terminator */
|
|
|
|
.byte 0x0 /* Terminator */
|
|
|
|
|
|
|
|
.byte 0x0 /* Terminator */
|
|
|
|
.byte 0x0 /* Terminator */
|
|
|
|
|
|
|
|
/* Line table */
|
|
|
|
.section .debug_line
|
|
|
|
.Lline1_begin:
|
2007-01-27 11:09:35 +00:00
|
|
|
.4byte .Lline1_end - .Lline1_start /* Initial length */
|
2004-10-13 19:07:11 +00:00
|
|
|
.Lline1_start:
|
2007-01-27 11:09:35 +00:00
|
|
|
.2byte 2 /* Version */
|
|
|
|
.4byte .Lline1_lines - .Lline1_hdr /* header_length */
|
2004-10-13 19:07:11 +00:00
|
|
|
.Lline1_hdr:
|
|
|
|
.byte 1 /* Minimum insn length */
|
|
|
|
.byte 1 /* default_is_stmt */
|
|
|
|
.byte 1 /* line_base */
|
|
|
|
.byte 1 /* line_range */
|
|
|
|
.byte 0x10 /* opcode_base */
|
|
|
|
|
|
|
|
/* Standard lengths */
|
|
|
|
.byte 0
|
|
|
|
.byte 1
|
|
|
|
.byte 1
|
|
|
|
.byte 1
|
|
|
|
.byte 1
|
|
|
|
.byte 0
|
|
|
|
.byte 0
|
|
|
|
.byte 0
|
|
|
|
.byte 1
|
|
|
|
.byte 0
|
|
|
|
.byte 0
|
|
|
|
.byte 1
|
|
|
|
.byte 0
|
|
|
|
.byte 0
|
|
|
|
.byte 0
|
|
|
|
|
|
|
|
/* Include directories */
|
|
|
|
.byte 0
|
|
|
|
|
|
|
|
/* File names */
|
|
|
|
.ascii "file1.txt\0"
|
|
|
|
.uleb128 0
|
|
|
|
.uleb128 0
|
|
|
|
.uleb128 0
|
|
|
|
|
|
|
|
.byte 0
|
|
|
|
|
|
|
|
.Lline1_lines:
|
|
|
|
.byte 0 /* DW_LNE_set_address */
|
|
|
|
.uleb128 5
|
|
|
|
.byte 2
|
2007-01-27 11:09:35 +00:00
|
|
|
.4byte .Lbegin_func_cu1
|
2004-10-13 19:07:11 +00:00
|
|
|
|
|
|
|
.byte 3 /* DW_LNS_advance_line */
|
|
|
|
.sleb128 3 /* ... to 4 */
|
|
|
|
|
|
|
|
.byte 1 /* DW_LNS_copy */
|
|
|
|
|
|
|
|
.byte 1 /* DW_LNS_copy (second time as an end-of-prologue marker) */
|
|
|
|
|
|
|
|
.byte 0 /* DW_LNE_set_address */
|
|
|
|
.uleb128 5
|
|
|
|
.byte 2
|
2007-01-27 11:09:35 +00:00
|
|
|
.4byte .Lend_func_cu1
|
2004-10-13 19:07:11 +00:00
|
|
|
|
|
|
|
.byte 0 /* DW_LNE_end_of_sequence */
|
|
|
|
.uleb128 1
|
|
|
|
.byte 1
|
|
|
|
|
|
|
|
.Lline1_end:
|