Skip to content

Commit

Permalink
Add common/VariableLocation.h
Browse files Browse the repository at this point in the history
  • Loading branch information
hainest committed Apr 3, 2024
1 parent 14efa63 commit c4a8710
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 35 deletions.
18 changes: 0 additions & 18 deletions common/h/VariableLocation.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,14 +37,6 @@

namespace Dyninst {

/*
* storageClass: Encodes how a variable is stored.
*
* storageAddr - Absolute address of variable.
* storageReg - Register which holds variable value.
* storageRegOffset - Address of variable = $reg + address.
*/

typedef enum {
storageUnset,
storageAddr,
Expand All @@ -54,12 +46,6 @@ typedef enum {

COMMON_EXPORT const char *storageClass2Str(storageClass sc);

/*
* storageRefClass: Encodes if a variable can be accessed through a register/address.
*
* storageRef - There is a pointer to variable.
* storageNoRef - No reference. Value can be obtained using storageClass.
*/
typedef enum {
storageRefUnset,
storageRef,
Expand All @@ -68,10 +54,6 @@ typedef enum {

COMMON_EXPORT const char *storageRefClass2Str(storageRefClass sc);

//location for a variable
//Use mr_reg instead of reg for new code. reg left in for backwards
// compatibility.

class VariableLocation {
public:
storageClass stClass;
Expand Down
47 changes: 30 additions & 17 deletions docs/common/public/VariableLocation.h.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ VariableLocation.h

.. cpp:class:: VariableLocation

An encoding of the location of a variable in memory or registers.
**Encoding of the location of a variable in memory or registers**

A VariableLocation is valid within the address range represented by :cpp:member:`lowPC`
and :cpp:member:`hiPC`. If these are 0 and -1, respectively, it is always valid.
Expand All @@ -20,33 +20,46 @@ VariableLocation.h
.. cpp:member:: Address lowPC
.. cpp:member:: Address hiPC

.. cpp:enum:: storageClass
.. cpp:enum:: storageClass

Encodes how a variable is stored.
Encodes how a variable is stored.

.. cpp:enumerator:: storageClass::storageUnset
.. cpp:enumerator:: storageClass::storageAddr
.. cpp:enumerator:: storageClass::storageUnset

Absolute address of variable.
Default state.

.. cpp:enumerator:: storageClass::storageReg
.. cpp:enumerator:: storageClass::storageAddr

Register which holds variable value.
Absolute address of variable.

.. cpp:enumerator:: storageClass::storageRegOffset
.. cpp:enumerator:: storageClass::storageReg

Address of variable = $reg + address.
Register which holds variable value.

.. cpp:enum:: storageRefClass
.. cpp:enumerator:: storageClass::storageRegOffset

Encodes if a variable can be accessed through a register/address.
Address of variable = $reg + address.

.. cpp:enumerator:: storageRefClass::storageRefUnset
.. cpp:enumerator:: storageRefClass::storageRef
.. cpp:function:: const char *storageClass2Str(storageClass sc)

There is a pointer to variable.
Returns a string representation of ``sc``.

.. cpp:enumerator:: storageRefClass::storageNoRef
.. cpp:enum:: storageRefClass

No reference. Value can be obtained using storageClass.
Encodes if a variable can be accessed through a register/address.

.. cpp:enumerator:: storageRefClass::storageRefUnset

Default state.

.. cpp:enumerator:: storageRefClass::storageRef

There is a pointer to variable.

.. cpp:enumerator:: storageRefClass::storageNoRef

No reference. Value can be obtained using storageClass.

.. cpp:function:: const char *storageRefClass2Str(storageRefClass sc)

Returns a string representation of ``sc``.

0 comments on commit c4a8710

Please sign in to comment.