105 lines
3.6 KiB
C
Vendored
105 lines
3.6 KiB
C
Vendored
#ifndef DWARF_STR_OFFSETS_H
|
|
#define DWARF_STR_OFFSETS_H
|
|
/*
|
|
Copyright (C) 2023 David Anderson
|
|
|
|
This program is free software; you can redistribute it
|
|
and/or modify it under the terms of version 2.1 of
|
|
the GNU Lesser General Public License
|
|
as published by the Free Software Foundation.
|
|
|
|
This program is distributed in the hope that it would be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
|
|
Further, this software is distributed without any warranty
|
|
that it is free of the rightful claim of any third person
|
|
regarding infringement or the like.
|
|
Any license provided herein, whether implied or
|
|
otherwise, applies only to this software file.
|
|
Patent licenses, if any, provided herein do not
|
|
apply to combinations of this program with
|
|
other software, or any other product whatsoever.
|
|
|
|
You should have received a copy of the GNU Lesser General Public
|
|
License along with this program; if not, write the Free Software
|
|
Foundation, Inc., 51 Franklin Street - Fifth Floor,
|
|
Boston MA 02110-1301,
|
|
USA.
|
|
|
|
*/
|
|
|
|
struct Dwarf_Str_Offsets_Table_s {
|
|
/* pointers are to dwarf-memory valid till Dwarf_Debug
|
|
is closed.. None are to be deallocated. */
|
|
Dwarf_Unsigned so_magic_value;
|
|
Dwarf_Debug so_dbg;
|
|
|
|
/* Section data. */
|
|
Dwarf_Small *so_section_start_ptr;
|
|
Dwarf_Small *so_section_end_ptr;
|
|
Dwarf_Unsigned so_section_size;
|
|
/* Overall data about wasted space in the section. */
|
|
Dwarf_Unsigned so_wasted_section_bytes;
|
|
/* The number of tables processed in the section. */
|
|
Dwarf_Unsigned so_table_count;
|
|
|
|
/* Used to iterate through the section getting
|
|
to each table */
|
|
Dwarf_Unsigned so_next_table_offset;
|
|
|
|
/* Per table (ie, a table is a
|
|
header and array of offsets) inside the section.
|
|
Offset to first byte of a table
|
|
Offset one past last byte of a table.
|
|
Offset from first byte of table to its array.
|
|
Count of entries in the array
|
|
Size of each enntry in the array. */
|
|
Dwarf_Unsigned so_table_start_offset;
|
|
Dwarf_Unsigned so_table_end_offset;
|
|
Dwarf_Unsigned so_lcl_offset_to_array;
|
|
Dwarf_Unsigned so_array_entry_count;
|
|
Dwarf_Half so_array_entry_size;
|
|
|
|
};
|
|
int _dwarf_extract_string_offset_via_str_offsets(Dwarf_Debug dbg,
|
|
Dwarf_Small *data_ptr,
|
|
Dwarf_Small *end_data_ptr,
|
|
Dwarf_Half attrform,
|
|
Dwarf_CU_Context cu_context,
|
|
Dwarf_Unsigned *str_sect_offset_out,
|
|
Dwarf_Error *error);
|
|
|
|
int
|
|
_dwarf_read_str_offsets_header(Dwarf_Str_Offsets_Table sot,
|
|
Dwarf_CU_Context cucontext,
|
|
/* Followed by return values/error */
|
|
Dwarf_Unsigned *length,
|
|
Dwarf_Half *offset_size_out,
|
|
Dwarf_Half *extension_size_out,
|
|
Dwarf_Half *version_out,
|
|
Dwarf_Half *padding_out,
|
|
Dwarf_Unsigned *local_offset_to_array_out,
|
|
Dwarf_Unsigned *total_table_length_out,
|
|
Dwarf_Error *error);
|
|
|
|
int _dwarf_trial_read_dwarf_five_hdr(Dwarf_Debug dbg,
|
|
Dwarf_Unsigned table_start_offset,
|
|
Dwarf_Unsigned secsize,
|
|
Dwarf_Unsigned *table_local_offset_of_array,
|
|
Dwarf_Unsigned *total_table_length,
|
|
/* length_out is the initial DWARF length value
|
|
from the table header. */
|
|
Dwarf_Unsigned *length_out,
|
|
Dwarf_Half *local_offset_size_out,
|
|
Dwarf_Half *local_extension_size_out,
|
|
Dwarf_Half *version_out,
|
|
Dwarf_Half *padding_out,
|
|
Dwarf_Error *error);
|
|
int
|
|
_dwarf_find_all_offsets_via_fission(Dwarf_Debug dbg,
|
|
Dwarf_CU_Context cu_context,
|
|
Dwarf_Error *error);
|
|
|
|
#endif /* DWARF_STR_OFFSETS_H */
|