dwarf_line.h revision 49d3bc91e27cd871b950d56c01398fa2f2e12ab4
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe/*
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Copyright (C) 2000 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
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe You should have received a copy of the GNU Lesser General Public
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe License along with this program; if not, write the Free Software
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Foundation, Inc., 59 Temple Place - Suite 330, Boston MA 02111-1307,
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe USA.
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pky,
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#define DW_EXTENDED_OPCODE 0
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe/*
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe This is used as the starting value for an algorithm
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe to get the minimum difference between 2 values.
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe UINT_MAX is used as our approximation to infinity.
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe*/
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe#define MAX_LINE_DIFF UINT_MAX
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe/*
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe This structure is used to build a list of all the
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe files that are used in the current compilation unit.
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe All of the fields execpt fi_next have meanings that
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe are obvious from section 6.2.4 of the Libdwarf Doc.
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe*/
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowestruct Dwarf_File_Entry_s {
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe /* Points to string naming the file. */
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Small *fi_file_name;
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe /*
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Index into the list of directories of the directory in which
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe this file exits. */
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Sword fi_dir_index;
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe /* Time of last modification of the file. */
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Unsigned fi_time_last_mod;
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe /* Length in bytes of the file. */
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Unsigned fi_file_length;
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe /* Pointer for chaining file entries. */
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_File_Entry fi_next;
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe};
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowetypedef struct Dwarf_Line_Context_s *Dwarf_Line_Context;
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe/*
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe This structure provides the context in which the fields of
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe a Dwarf_Line structure are interpreted. They come from the
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe statement program prologue. **Updated by dwarf_srclines in
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe dwarf_line.c.
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe*/
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowestruct Dwarf_Line_Context_s {
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe /*
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Points to a chain of entries providing info about source files
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe for the current set of Dwarf_Line structures. */
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_File_Entry lc_file_entries;
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe /*
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Count of number of source files for this set of Dwarf_Line
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe structures. */
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Sword lc_file_entry_count;
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe /*
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Points to the portion of .debug_line section that contains a
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe list of strings naming the included directories. */
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Small *lc_include_directories;
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe /* Count of the number of included directories. */
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Sword lc_include_directories_count;
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe /* Count of the number of lines for this cu. */
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Sword lc_line_count;
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe /* Points to name of compilation directory. */
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Small *lc_compilation_directory;
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Debug lc_dbg;
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe};
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe/*
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe This structure defines a row of the line table.
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe All of the fields except li_offset have the exact
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe same meaning that is defined in Section 6.2.2
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe of the Libdwarf Document.
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe li_offset is used by _dwarf_addr_finder() which is called
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe by rqs(1), an sgi utility for 'moving' shared libraries
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe as if the static linker (ld) had linked the shared library
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe at the newly-specified address. Most libdwarf-using
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe apps will ignore li_offset and _dwarf_addr_finder().
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe*/
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowestruct Dwarf_Line_s {
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Addr li_address; /* pc value of machine instr */
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe union addr_or_line_s {
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe struct li_inner_s {
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Sword li_file; /* int identifying src file */
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Sword li_line; /* source file line number. */
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Half li_column; /* source file column number */
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Small li_is_stmt; /* indicate start of stmt */
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Small li_basic_block; /* indicate start basic block */
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Small li_end_sequence; /* first post sequence
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe instr */
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe } li_l_data;
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Off li_offset; /* for rqs */
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe } li_addr_line;
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Line_Context li_context; /* assoc Dwarf_Line_Context_s */
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe};
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Loweint
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe _dwarf_line_address_offsets(Dwarf_Debug dbg,
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Die die,
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Addr ** addrs,
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Off ** offs,
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Unsigned * returncount,
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Error * err);
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe/* The LOP, WHAT_IS_OPCODE stuff is here so it can
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe be reused in 3 places. Seemed hard to keep
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe the 3 places the same without an inline func or
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe a macro.
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Handling the line section where the header and the
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe file being process do not match (unusual, but
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe planned for in the design of .debug_line)
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe is too tricky to recode this several times and keep
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe it right.
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe*/
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe#define LOP_EXTENDED 1
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe#define LOP_DISCARD 2
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe#define LOP_STANDARD 3
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe#define LOP_SPECIAL 4
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe#define HIGHEST_STANDARD_OPCODE DW_LNS_fixed_advance_pc
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe#define WHAT_IS_OPCODE(type,opcode,base,opcode_length,line_ptr) \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe if( opcode < base ) { \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe /* we know we must treat as a standard op \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe or a special case. \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe */ \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe if(opcode == DW_EXTENDED_OPCODE) { \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe type = LOP_EXTENDED; \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe } else if( (HIGHEST_STANDARD_OPCODE+1) >= \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe base) { \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe /* == Standard case: compile of \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe dwarf_line.c and object \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe have same standard op codes set. \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe > Special case: compile of dwarf_line.c\
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe has things in standard op codes list \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe in dwarf.h header not \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe in the object: handle this as a standard\
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe op code in switch below. \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe The header special ops overlap the \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe object standard ops. \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe The new standard op codes will not \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe appear in the object. \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe */ \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe type = LOP_STANDARD; \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe } else { \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe /* These are standard opcodes in the object\
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe ** that were not defined in the header \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe ** at the time dwarf_line.c \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe ** was compiled. Provides the ability of \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe ** out-of-date dwarf reader to read newer \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe ** line table data transparently. \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe */ \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe int opcnt = opcode_length[opcode]; \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe int oc; \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe for(oc = 0; oc < opcnt; oc++) \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe { \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe /* \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe ** Read and discard operands we don't \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe ** understand. \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe ** arbitrary choice of unsigned read. \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe ** signed read would work as well. \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe */ \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe Dwarf_Unsigned utmp2; \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe DECODE_LEB128_UWORD(line_ptr, utmp2) \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe } \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe /* Done processing this, do not \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe do the switch , nor do \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe special op code processing. \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe */ \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe type = LOP_DISCARD; \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe } \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe } else { \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe /* Is a special op code. \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe */ \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe type = LOP_SPECIAL; \
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe }
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe/* The following is from the dwarf definition of 'ubyte'
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe and is specifically mentioned in section 6.2.5.1, page 54
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe of the Rev 2.0.0 dwarf specification.
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe*/
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe
49d3bc91e27cd871b950d56c01398fa2f2e12ab4Richard Lowe#define MAX_LINE_OP_CODE 255