49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe/*
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowe Copyright (C) 2000,2004,2005 Silicon Graphics, Inc. All Rights Reserved.
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe This program is free software; you can redistribute it and/or modify it
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe under the terms of version 2.1 of the GNU Lesser General Public License
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe as published by the Free Software Foundation.
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe This program is distributed in the hope that it would be useful, but
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe WITHOUT ANY WARRANTY; without even the implied warranty of
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Further, this software is distributed without any warranty that it is
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe free of the rightful claim of any third person regarding infringement
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe or the like. Any license provided herein, whether implied or
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe otherwise, applies only to this software file. Patent licenses, if
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe any, provided herein do not apply to combinations of this program with
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe other software, or any other product whatsoever.
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowe You should have received a copy of the GNU Lesser General Public
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowe License along with this program; if not, write the Free Software
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowe Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston MA 02110-1301,
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe USA.
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowe Contact information: Silicon Graphics, Inc., 1500 Crittenden Lane,
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Mountain View, CA 94043, or:
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe http://www.sgi.com
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe For further information regarding this notice, see:
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe http://oss.sgi.com/projects/GenInfo/NoticeExplan
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe*/
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowetypedef struct Dwarf_Global_Context_s *Dwarf_Global_Context;
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe/*
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe This struct contains header information for a set of pubnames.
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Essentially, they contain the context for a set of pubnames
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe belonging to a compilation-unit.
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe This is also used for the sgi-specific
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe weaknames, typenames, varnames, funcnames data:
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe the structs for those are incomplete and
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe instances of this are used instead.
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowe Also used for DWARF3 .debug_pubtypes.
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe*/
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowestruct Dwarf_Global_Context_s {
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowe /* Length in .debug_pubnames (etc) of a set of names for a
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe compilation-unit. Dwarf_Word pu_length; The value is not made
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe available outside libdwarf and not used inside, so no need to
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe record it. */
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowe /* For this context, size of a length. 4 or 8 */
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe unsigned char pu_length_size;
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowe
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowe /* For this CU, size of the extension 0 except for dwarf2 extension
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe 64bit, in which case is 4. */
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe unsigned char pu_extension_size;
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe /*
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Offset into .debug_info of the compilation-unit header (not DIE)
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe for this set of pubnames. */
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Off pu_offset_of_cu_header;
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe /* Size of compilation-unit that these pubnames are in. */
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Unsigned pu_info_length;
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Debug pu_dbg;
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe};
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe/* This struct contains information for a single pubname. */
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowestruct Dwarf_Global_s {
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe /*
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Offset from the start of the corresponding compilation-unit of
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe the DIE for the given pubname CU. */
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Off gl_named_die_offset_within_cu;
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe /* Points to the given pubname. */
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Small *gl_name;
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe /* Context for this pubname. */
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Global_Context gl_context;
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe};
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Loweint _dwarf_internal_get_pubnames_like_data(Dwarf_Debug dbg,
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Small *
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe section_data_ptr,
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Unsigned
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe section_length,
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Global ** globals,
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Signed * return_count,
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Error * error,
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowe int context_code,
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowe int global_code,
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe int length_err_num,
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe int version_err_num);
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowe
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowevoid
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowe_dwarf_internal_globals_dealloc( Dwarf_Debug dbg, Dwarf_Global *dwgl,
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowe Dwarf_Signed count,
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowe int context_code,
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowe int global_code,
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowe int list_code);
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowe
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowe
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowe#ifdef __sgi /* __sgi should only be defined for IRIX/MIPS. */
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowevoid _dwarf_fix_up_offset_irix(Dwarf_Debug dbg,
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowe Dwarf_Unsigned *varp,
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowe char *caller_site_name);
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowe#define FIX_UP_OFFSET_IRIX_BUG(ldbg,var,name) _dwarf_fix_up_offset_irix(ldbg,&var,name)
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowe#else
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowe#define FIX_UP_OFFSET_IRIX_BUG(ldbg,var,name)
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowe#endif
07dc1947c362e187fb955d283b692f8769dd5defRichard Lowe