/* Interface to prologue value handling for GDB.
- Copyright 2003, 2004, 2005, 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2003-2015 Free Software Foundation, Inc.
This file is part of GDB.
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/>. */
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
#ifndef PROLOGUE_VALUE_H
#define PROLOGUE_VALUE_H
+/* What sort of value is this? This determines the interpretation
+ of subsequent fields. */
+enum prologue_value_kind
+{
+ /* We don't know anything about the value. This is also used for
+ values we could have kept track of, when doing so would have
+ been too complex and we don't want to bother. The bottom of
+ our lattice. */
+ pvk_unknown,
+
+ /* A known constant. K is its value. */
+ pvk_constant,
+
+ /* The value that register REG originally had *UPON ENTRY TO THE
+ FUNCTION*, plus K. If K is zero, this means, obviously, just
+ the value REG had upon entry to the function. REG is a GDB
+ register number. Before we start interpreting, we initialize
+ every register R to { pvk_register, R, 0 }. */
+ pvk_register,
+};
+
/* When we analyze a prologue, we're really doing 'abstract
interpretation' or 'pseudo-evaluation': running the function's code
in simulation, but using conservative approximations of the values
/* What sort of value is this? This determines the interpretation
of subsequent fields. */
- enum {
-
- /* We don't know anything about the value. This is also used for
- values we could have kept track of, when doing so would have
- been too complex and we don't want to bother. The bottom of
- our lattice. */
- pvk_unknown,
-
- /* A known constant. K is its value. */
- pvk_constant,
-
- /* The value that register REG originally had *UPON ENTRY TO THE
- FUNCTION*, plus K. If K is zero, this means, obviously, just
- the value REG had upon entry to the function. REG is a GDB
- register number. Before we start interpreting, we initialize
- every register R to { pvk_register, R, 0 }. */
- pvk_register,
-
- } kind;
+ enum prologue_value_kind kind;
/* The meanings of the following fields depend on 'kind'; see the
comments for the specific 'kind' values. */
Stores to constant addresses, unknown addresses, or to addresses
relative to registers other than BASE_REG will trash this area; see
- pv_area_store_would_trash. */
-struct pv_area *make_pv_area (int base_reg);
+ pv_area_store_would_trash.
+
+ To check whether a pointer refers to this area, only the low
+ ADDR_BIT bits will be compared. */
+struct pv_area *make_pv_area (int base_reg, int addr_bit);
/* Free AREA. */
void free_pv_area (struct pv_area *area);