aboutsummaryrefslogtreecommitdiff
path: root/gdb/dwarf2-frame.h
diff options
context:
space:
mode:
authorTom Tromey <tom@tromey.com>2020-02-08 13:40:54 -0700
committerTom Tromey <tom@tromey.com>2020-02-08 13:40:59 -0700
commit82ca895718becbd1be898a86e4a6d1217fa496c6 (patch)
tree9678baae2a5c7c9772cb39b917bc87114d3261fc /gdb/dwarf2-frame.h
parent9e35d4996169bc7fa833e8449585d517b8ccc5f8 (diff)
downloadgdb-82ca895718becbd1be898a86e4a6d1217fa496c6.zip
gdb-82ca895718becbd1be898a86e4a6d1217fa496c6.tar.gz
gdb-82ca895718becbd1be898a86e4a6d1217fa496c6.tar.bz2
Move DWARF code to dwarf2/ subdirectory
This moves all the remaining DWARF code to the new dwarf2 subdirectory. This is just a simple renaming, with updates to includes as needed. gdb/ChangeLog 2020-02-08 Tom Tromey <tom@tromey.com> * dwarf2/expr.c: Rename from dwarf2expr.c. * dwarf2/expr.h: Rename from dwarf2expr.h. * dwarf2/frame-tailcall.c: Rename from dwarf2-frame-tailcall.c. * dwarf2/frame-tailcall.h: Rename from dwarf2-frame-tailcall.h. * dwarf2/frame.c: Rename from dwarf2-frame.c. * dwarf2/frame.h: Rename from dwarf2-frame.h. * dwarf2/index-cache.c: Rename from dwarf-index-cache.c. * dwarf2/index-cache.h: Rename from dwarf-index-cache.h. * dwarf2/index-common.c: Rename from dwarf-index-common.c. * dwarf2/index-common.h: Rename from dwarf-index-common.h. * dwarf2/index-write.c: Rename from dwarf-index-write.c. * dwarf2/index-write.h: Rename from dwarf-index-write.h. * dwarf2/loc.c: Rename from dwarf2loc.c. * dwarf2/loc.h: Rename from dwarf2loc.h. * dwarf2/read.c: Rename from dwarf2read.c. * dwarf2/read.h: Rename from dwarf2read.h. * dwarf2/abbrev.c, aarch64-tdep.c, alpha-tdep.c, amd64-darwin-tdep.c, arc-tdep.c, arm-tdep.c, bfin-tdep.c, compile/compile-c-symbols.c, compile/compile-cplus-symbols.c, compile/compile-loc2c.c, cris-tdep.c, csky-tdep.c, findvar.c, gdbtypes.c, guile/scm-type.c, h8300-tdep.c, hppa-bsd-tdep.c, hppa-linux-tdep.c, i386-darwin-tdep.c, i386-linux-tdep.c, i386-tdep.c, iq2000-tdep.c, m32c-tdep.c, m68hc11-tdep.c, m68k-tdep.c, microblaze-tdep.c, mips-tdep.c, mn10300-tdep.c, msp430-tdep.c, nds32-tdep.c, nios2-tdep.c, or1k-tdep.c, riscv-tdep.c, rl78-tdep.c, rs6000-tdep.c, rx-tdep.c, s12z-tdep.c, s390-tdep.c, score-tdep.c, sh-tdep.c, sparc-linux-tdep.c, sparc-tdep.c, sparc64-linux-tdep.c, sparc64-tdep.c, tic6x-tdep.c, tilegx-tdep.c, v850-tdep.c, xstormy16-tdep.c, xtensa-tdep.c: Update. * Makefile.in (COMMON_SFILES): Update. (HFILES_NO_SRCDIR): Update. Change-Id: Ied9ce1436cd27ac4a4cffef10ec92e396f181928
Diffstat (limited to 'gdb/dwarf2-frame.h')
-rw-r--r--gdb/dwarf2-frame.h266
1 files changed, 0 insertions, 266 deletions
diff --git a/gdb/dwarf2-frame.h b/gdb/dwarf2-frame.h
deleted file mode 100644
index a0ec361..0000000
--- a/gdb/dwarf2-frame.h
+++ /dev/null
@@ -1,266 +0,0 @@
-/* Frame unwinder for frames with DWARF Call Frame Information.
-
- Copyright (C) 2003-2020 Free Software Foundation, Inc.
-
- Contributed by Mark Kettenis.
-
- This file is part of GDB.
-
- 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
- the Free Software Foundation; either version 3 of the License, or
- (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.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>. */
-
-#ifndef DWARF2_FRAME_H
-#define DWARF2_FRAME_H 1
-
-struct gdbarch;
-struct objfile;
-struct frame_info;
-struct dwarf2_per_cu_data;
-struct agent_expr;
-struct axs_value;
-
-/* Register rule. */
-
-enum dwarf2_frame_reg_rule
-{
- /* Make certain that 0 maps onto the correct enum value; the
- corresponding structure is being initialized using memset zero.
- This indicates that CFI didn't provide any information at all
- about a register, leaving how to obtain its value totally
- unspecified. */
- DWARF2_FRAME_REG_UNSPECIFIED = 0,
-
- /* The term "undefined" comes from the DWARF2 CFI spec which this
- code is modeling; it indicates that the register's value is
- "undefined". GCC uses the less formal term "unsaved". Its
- definition is a combination of REG_UNDEFINED and REG_UNSPECIFIED.
- The failure to differentiate the two helps explain a few problems
- with the CFI generated by GCC. */
- DWARF2_FRAME_REG_UNDEFINED,
- DWARF2_FRAME_REG_SAVED_OFFSET,
- DWARF2_FRAME_REG_SAVED_REG,
- DWARF2_FRAME_REG_SAVED_EXP,
- DWARF2_FRAME_REG_SAME_VALUE,
-
- /* These are defined in Dwarf3. */
- DWARF2_FRAME_REG_SAVED_VAL_OFFSET,
- DWARF2_FRAME_REG_SAVED_VAL_EXP,
-
- /* These aren't defined by the DWARF2 CFI specification, but are
- used internally by GDB. */
- DWARF2_FRAME_REG_FN, /* Call a registered function. */
- DWARF2_FRAME_REG_RA, /* Return Address. */
- DWARF2_FRAME_REG_RA_OFFSET, /* Return Address with offset. */
- DWARF2_FRAME_REG_CFA, /* Call Frame Address. */
- DWARF2_FRAME_REG_CFA_OFFSET /* Call Frame Address with offset. */
-};
-
-/* Register state. */
-
-struct dwarf2_frame_state_reg
-{
- /* Each register save state can be described in terms of a CFA slot,
- another register, or a location expression. */
- union {
- LONGEST offset;
- ULONGEST reg;
- struct
- {
- const gdb_byte *start;
- ULONGEST len;
- } exp;
- struct value *(*fn) (struct frame_info *this_frame, void **this_cache,
- int regnum);
- } loc;
- enum dwarf2_frame_reg_rule how;
-};
-
-enum cfa_how_kind
-{
- CFA_UNSET,
- CFA_REG_OFFSET,
- CFA_EXP
-};
-
-struct dwarf2_frame_state_reg_info
-{
- dwarf2_frame_state_reg_info () = default;
- ~dwarf2_frame_state_reg_info ()
- {
- delete prev;
- }
-
- /* Copy constructor. */
- dwarf2_frame_state_reg_info (const dwarf2_frame_state_reg_info &src)
- : reg (src.reg), cfa_offset (src.cfa_offset),
- cfa_reg (src.cfa_reg), cfa_how (src.cfa_how), cfa_exp (src.cfa_exp),
- prev (src.prev)
- {
- }
-
- /* Assignment operator for both move-assignment and copy-assignment. */
- dwarf2_frame_state_reg_info&
- operator= (dwarf2_frame_state_reg_info rhs)
- {
- swap (*this, rhs);
- return *this;
- }
-
- /* Move constructor. */
- dwarf2_frame_state_reg_info (dwarf2_frame_state_reg_info &&rhs) noexcept
- : reg (std::move (rhs.reg)), cfa_offset (rhs.cfa_offset),
- cfa_reg (rhs.cfa_reg), cfa_how (rhs.cfa_how), cfa_exp (rhs.cfa_exp),
- prev (rhs.prev)
- {
- rhs.prev = nullptr;
- }
-
- /* If necessary, enlarge the register set to hold NUM_REGS_REQUESTED
- registers. */
- void alloc_regs (int num_regs_requested)
- {
- gdb_assert (num_regs_requested > 0);
-
- if (num_regs_requested <= reg.size ())
- return;
-
- reg.resize (num_regs_requested);
- }
-
- std::vector<struct dwarf2_frame_state_reg> reg;
-
- LONGEST cfa_offset = 0;
- ULONGEST cfa_reg = 0;
- enum cfa_how_kind cfa_how = CFA_UNSET;
- const gdb_byte *cfa_exp = NULL;
-
- /* Used to implement DW_CFA_remember_state. */
- struct dwarf2_frame_state_reg_info *prev = NULL;
-
-private:
- friend void swap (dwarf2_frame_state_reg_info& lhs,
- dwarf2_frame_state_reg_info& rhs)
- {
- using std::swap;
-
- swap (lhs.reg, rhs.reg);
- swap (lhs.cfa_offset, rhs.cfa_offset);
- swap (lhs.cfa_reg, rhs.cfa_reg);
- swap (lhs.cfa_how, rhs.cfa_how);
- swap (lhs.cfa_exp, rhs.cfa_exp);
- swap (lhs.prev, rhs.prev);
- }
-};
-
-struct dwarf2_cie;
-
-/* Structure describing a frame state. */
-
-struct dwarf2_frame_state
-{
- dwarf2_frame_state (CORE_ADDR pc, struct dwarf2_cie *cie);
-
- /* Each register save state can be described in terms of a CFA slot,
- another register, or a location expression. */
- struct dwarf2_frame_state_reg_info regs {};
-
- /* The PC described by the current frame state. */
- CORE_ADDR pc;
-
- /* Initial register set from the CIE.
- Used to implement DW_CFA_restore. */
- struct dwarf2_frame_state_reg_info initial {};
-
- /* The information we care about from the CIE. */
- const LONGEST data_align;
- const ULONGEST code_align;
- const ULONGEST retaddr_column;
-
- /* Flags for known producer quirks. */
-
- /* The ARM compilers, in DWARF2 mode, assume that DW_CFA_def_cfa
- and DW_CFA_def_cfa_offset takes a factored offset. */
- bool armcc_cfa_offsets_sf = false;
-
- /* The ARM compilers, in DWARF2 or DWARF3 mode, may assume that
- the CFA is defined as REG - OFFSET rather than REG + OFFSET. */
- bool armcc_cfa_offsets_reversed = false;
-};
-
-/* When this is true the DWARF frame unwinders can be used if they are
- registered with the gdbarch. Not all architectures can or do use the
- DWARF unwinders. Setting this to true on a target that does not
- otherwise support the DWARF unwinders has no effect. */
-extern bool dwarf2_frame_unwinders_enabled_p;
-
-/* Set the architecture-specific register state initialization
- function for GDBARCH to INIT_REG. */
-
-extern void dwarf2_frame_set_init_reg (struct gdbarch *gdbarch,
- void (*init_reg) (struct gdbarch *, int,
- struct dwarf2_frame_state_reg *,
- struct frame_info *));
-
-/* Set the architecture-specific signal trampoline recognition
- function for GDBARCH to SIGNAL_FRAME_P. */
-
-extern void
- dwarf2_frame_set_signal_frame_p (struct gdbarch *gdbarch,
- int (*signal_frame_p) (struct gdbarch *,
- struct frame_info *));
-
-/* Set the architecture-specific adjustment of .eh_frame and .debug_frame
- register numbers. */
-
-extern void
- dwarf2_frame_set_adjust_regnum (struct gdbarch *gdbarch,
- int (*adjust_regnum) (struct gdbarch *,
- int, int));
-
-/* Append the DWARF-2 frame unwinders to GDBARCH's list. */
-
-void dwarf2_append_unwinders (struct gdbarch *gdbarch);
-
-/* Return the frame base methods for the function that contains PC, or
- NULL if it can't be handled by the DWARF CFI frame unwinder. */
-
-extern const struct frame_base *
- dwarf2_frame_base_sniffer (struct frame_info *this_frame);
-
-/* Compute the DWARF CFA for a frame. */
-
-CORE_ADDR dwarf2_frame_cfa (struct frame_info *this_frame);
-
-/* Find the CFA information for PC.
-
- Return 1 if a register is used for the CFA, or 0 if another
- expression is used. Throw an exception on error.
-
- GDBARCH is the architecture to use.
- DATA is the per-CU data.
-
- REGNUM_OUT is an out parameter that is set to the register number.
- OFFSET_OUT is the offset to use from this register.
- These are only filled in when 1 is returned.
-
- TEXT_OFFSET_OUT, CFA_START_OUT, and CFA_END_OUT describe the CFA
- in other cases. These are only used when 0 is returned. */
-
-extern int dwarf2_fetch_cfa_info (struct gdbarch *gdbarch, CORE_ADDR pc,
- struct dwarf2_per_cu_data *data,
- int *regnum_out, LONGEST *offset_out,
- CORE_ADDR *text_offset_out,
- const gdb_byte **cfa_start_out,
- const gdb_byte **cfa_end_out);
-
-#endif /* dwarf2-frame.h */