Lines Matching full:description
102 .. _amdgpu-dwarf-allow-location-description-on-the-dwarf-evaluation-stack:
104 2.1 Allow Location Description on the DWARF Expression Stack
109 expression. However, by allowing a location description to be a first-class
118 location description. This can be extended to allow a default address space
119 memory location description to be implicitly converted back to its address
123 descriptions to any kind of location description.
130 of any kind of location description, and the ability to support objects located
147 the location description results. This gives confidence in backwards
156 2.2 Generalize CFI to Allow Any Location Description Kind
160 only allows a location description that is a register, memory address, or
161 implicit location description. AMDGPU optimized code may spill scalar registers
163 location description kind to be supported.
170 In DWARF Version 5 a location description is defined as a single location
171 description or a location list. A location list is defined as either
172 effectively an undefined location description or as one or more single
176 :ref:`amdgpu-dwarf-allow-location-description-on-the-dwarf-evaluation-stack`,
178 location description on the stack. Furthermore, debugger information entry
180 ``DW_AT_vtable_elem_location`` are defined as pushing a location description on
189 :ref:`amdgpu-dwarf-allow-location-description-on-the-dwarf-evaluation-stack`
194 the field of an object can be evaluated with a location description that has
195 multiple places and will result in a location description with multiple places.
203 See :ref:`amdgpu-dwarf-location-description`.
209 memory location description in the default target architecture specific address
211 description. This allows them to continue to be used to offset an address.
213 To generalize offsetting to any location description, including location
231 location description that may be in a register, or be an implicit value. The
233 without regard to what kind of location description was pushed.
236 :ref:`amdgpu-dwarf-allow-location-description-on-the-dwarf-evaluation-stack` has
242 computed offset of an arbitrary location description (such as a vector register)
244 to compute a location description on the stack.
252 to be a location description and the second operand to be an integral value
253 type, or vice versa, and return a location description. This complicates the
256 such a location description to the memory address value and then perform two's
258 description, it would be implicitly converted back to a default address space
259 memory location description. This is different to the overflow rules on location
261 description to an address integral type value would be required. Keeping a
262 separation of location description operations and arithmetic operations avoids
267 :ref:`amdgpu-dwarf-general-location-description-operations`.
273 description. Since
274 :ref:`amdgpu-dwarf-allow-location-description-on-the-dwarf-evaluation-stack`
276 an explicit way to specify an undefined location description.
280 operation takes more than one location description on the stack. Without this
285 :ref:`amdgpu-dwarf-undefined-location-description-operations`.
291 that indicates the end of the definition of a composite location description is
296 :ref:`amdgpu-dwarf-composite-location-description-operations`.
298 2.7 Generalize DWARF Base Objects to Allow Any Location Description Kind
307 required to generalize DWARF to allow any location description to be used. This
312 :ref:`amdgpu-dwarf-general-location-description-operations`.
351 memory location description. For example, a pointer to member value may want to
356 way to create a memory location description for an address in the non-default
361 :ref:`amdgpu-dwarf-memory-location-description-operations`) operation is defined
362 to create a memory location description from an address and address space. If
373 description was defined, then it would be limited to the size of the generic
382 :ref:`amdgpu-dwarf-memory-location-description-operations`) operation is added
387 (:ref:`amdgpu-dwarf-implicit-location-description-operations`) operation is
394 memory location description. This allows it to specify an address space which is
417 description and no extra information. The same set of operations can operate on
455 description, and not a value, as a debugger needs to change the value if the
462 description that is a vector of a single location is used.
465 location description, possibly using the DWARF operations for control flow to
472 To avoid these issues, a composite location description that can be created as a
474 location description that is a vector on another location description is needed.
475 These operations generate the composite location description using a single
484 :ref:`amdgpu-dwarf-composite-location-description-operations`.
500 :ref:`amdgpu-dwarf-allow-location-description-on-the-dwarf-evaluation-stack`
504 :ref:`amdgpu-dwarf-general-location-description-operations` and
545 :ref:`amdgpu-dwarf-composite-location-description-operations`.
645 2.20 DWARF Operation to Create Runtime Overlay Composite Location Description
666 The DWARF location description for the array needs to express that all elements
674 location description as an overlay of the first, positioned according to the
676 :ref:`amdgpu-dwarf-composite-location-description-operations`.
703 // 1. Memory location description of dst elements located in memory:
706 // 2. Register location description of element dst[i] is located in R2:
717 // 5. Make a composite location description for dst that is the memory #1 with
782 A.2 General Description
831 location description (see :ref:`amdgpu-dwarf-location-description`). When a
833 description is required as the result kind.
837 :ref:`amdgpu-dwarf-memory-location-description-operations` are performed if
847 descriptions having an undefined location description. Then operations that
848 encounter an evaluation error can return the undefined location description or
880 it can be a location description or a value.
988 the undefined location description (indicating the lane was not active on
1054 The location description of a program object.
1062 The result is undefined if the location description is invalid (see
1063 :ref:`amdgpu-dwarf-location-description`).
1076 :ref:`amdgpu-dwarf-location-description`).
1081 *A DWARF expression for a location description may be able to be evaluated
1134 .. _amdgpu-dwarf-location-description:
1136 A.2.5.3 DWARF Location Description
1153 A single location description specifies the location storage that holds a
1205 If a location description has more than one single location description, the
1207 description's position within the associated location storage is not the same
1210 *A location description that has more than one single location description can
1213 description that has more than one single location description. There are no
1214 operation expression operations that can directly create a location description
1215 with more than one single location description.*
1217 *A location description with more than one single location description can be
1227 *A consumer of a location description with more than one single location
1228 description can read the object's value from any of the single location
1233 location description. If such a location description is accessed, the storage it
1235 location description was created, which may differ from the context at the time
1238 *For example, creating a register location description requires the thread
1240 Creating a memory location description for an address space may required a
1244 If any of the context elements required to create a location description change,
1245 the location description becomes invalid and accessing it is undefined.
1247 *Examples of context that can invalidate a location description are:*
1261 *A DWARF expression can be used to compute a location description for an object.
1263 description as the object context or initial stack context to compute a
1265 description becomes invalid between the two expression evaluations.*
1267 A change of a thread's program location may not make a location description
1269 location description, or using it as the object context or initial stack context
1272 *For example, a location description may specify a register that no longer holds
1287 entry can hold either a value or a location description. Operations can act on
1291 :ref:`amdgpu-dwarf-memory-location-description-operations`), then the DWARF
1306 * If the current result kind specifies a location description, then:
1308 * If the stack is empty, the result is a location description with one
1309 undefined location description.
1312 explicit operation to create an undefined location description, and uses an
1315 * If the top stack entry is a location description, or can be converted
1316 to one (see :ref:`amdgpu-dwarf-memory-location-description-operations`),
1317 then the result is that, possibly converted, location description. Any other
1324 Could define this case as returning an implicit location description as
1330 :ref:`amdgpu-dwarf-memory-location-description-operations`), then the result
1338 * If the stack is empty, the result is a location description with one
1339 undefined location description.
1342 explicit operation to create an undefined location description, and uses an
1348 description is requested. However, GDB appears to report this as an error
1395 They allow the stack entries to be either a value or location description.
1398 location description (see
1399 :ref:`amdgpu-dwarf-composite-location-description-operations`), then the DWARF
1411 specified by the incomplete composite location description is also replicated
1413 location description can update the composite location storage they specify
1573 kind is a location description, the compilation unit is the one that
1574 contains D, and the initial stack is empty. The location description
1582 description for a variable or formal parameter which may use a location
1593 location description on the stack. Presumably the intent of using
1595 entry is to push just one location description on the stack. That
1596 location description may have more than one single location description.
1608 description on the stack for a variable or formal parameter, and also
1616 and pushes a location description (that may have multiple single
1631 return a location description. The producer then explicitly indicates
1647 except the result kind is a location description, the compilation unit
1649 description result is pushed on the stack.
1655 description for any variable or formal parameter regardless of whether the
1664 operation expression that results in a location description with one
1665 implicit location description. Then this rule would not be required.
1674 ``DW_OP_call*`` to get a location description for any non-\
1860 extensions allow a composite location description to be used to combine
1914 It pops one stack entry that must be a location description L.
1919 *If L, or the location description of any composite location description
1921 description, then any one of them can be selected as they are required to
1922 all have the same value. For any single location description SL, bits are
1924 specified by SL. For a composite location description, the retrieved bits
1933 description that has less than TS bits remaining in the register storage.
1958 location storage LS specified by any single location description SL of L.
1960 See :ref:`amdgpu-dwarf-implicit-location-description-operations` for special
2033 If the result of E is a location description L (see
2034 :ref:`amdgpu-dwarf-register-location-description-operations`), and the last
2068 .. _amdgpu-dwarf-location-description-operations:
2070 A.2.5.4.4 Location Description Operations
2076 .. _amdgpu-dwarf-general-location-description-operations:
2078 A.2.5.4.4.1 General Location Description Operations
2089 location description L.
2092 single location description SL of L, and pushes the updated L.
2120 a location description L.
2122 It adds the value of B to the bit offset of each single location description
2131 ``DW_OP_push_object_address`` pushes the location description L of the
2136 description may be determined from the variable's own debugging information
2143 location description of a structure prior to evaluation of a*
2148 This operation could be removed and the object location description
2179 It pushes a location description L that holds the value of register R on
2185 the undefined location description is pushed. If the register rule is* same
2186 value\ *, then a register location description for R is pushed.*
2188 .. _amdgpu-dwarf-undefined-location-description-operations:
2190 A.2.5.4.4.2 Undefined Location Description Operations
2201 An undefined location description specifies the undefined location storage.
2203 offset for an undefined location description. The ``DW_OP_LLVM_*offset``
2204 operations leave an undefined location description unchanged. The
2206 location description, allowing any size and offset to be specified, and results
2211 ``DW_OP_LLVM_undefined`` pushes a location description L that comprises one
2212 undefined location description SL.
2214 .. _amdgpu-dwarf-memory-location-description-operations:
2216 A.2.5.4.4.3 Memory Location Description Operations
2235 A memory location description specifies a memory location storage. The bit
2237 using a memory location description, access the corresponding target
2241 A memory location description that has a bit offset that is a multiple of 8 (the
2242 byte size) is defined to be a byte address memory location description. It has a
2245 A memory location description that does not have a bit offset that is a multiple
2246 of 8 (the byte size) is defined to be a bit field memory location description.
2250 The address space AS of a memory location description is defined to be the
2252 the memory location description.
2254 A location description that is comprised of one byte address memory location
2255 description SL is defined to be a memory byte address location description. It
2262 If a stack entry is required to be a location description, but it is a value V
2263 with the generic type, then it is implicitly converted to a location description
2264 L with one memory location description SL. SL specifies the memory location
2271 a memory location description in the target architecture default address
2274 If a stack entry is required to be a location description, but is a value V
2276 description L with a one memory location description SL. If the type size of
2290 If a stack entry is required to be a location description, but it is an implicit
2292 implicitly converted to a location description with one single location
2293 description specified by IPV. See
2294 :ref:`amdgpu-dwarf-implicit-location-description-operations`.
2302 If a stack entry is required to be a value, but it is a location description L
2303 with one memory location description SL in the target architecture default
2313 It pushes a location description L with one memory location description SL
2331 It pushes a location description L with one memory location description SL
2354 It pushes a location description L with one memory location description SL
2366 description was created is accessed, and not the location storage associated
2372 See :ref:`amdgpu-dwarf-implicit-location-description-operations` for special
2382 It pushes a location description L with one memory location description SL
2384 description that corresponds to the thread-local storage address TA.
2411 ``DW_OP_call_frame_cfa`` pushes the location description L of the Canonical
2429 The location description L for the *frame base* of the current subprogram is
2434 The location description L is updated as if the ``DW_OP_LLVM_offset_uconst
2459 They push a location description L comprising one memory location
2460 description LS on the stack. LS specifies the memory location storage that
2493 .. _amdgpu-dwarf-register-location-description-operations:
2495 A.2.5.4.4.4 Register Location Description Operations
2506 A register location description specifies a register location storage. The bit
2508 register location description access the corresponding target architecture
2525 description L that specifies one register location description SL on the
2531 location description that holds the register for the current call frame and
2533 description L is pushed.
2536 description may be register, memory, or undefined.*
2547 *on a register location description.*
2549 .. _amdgpu-dwarf-implicit-location-description-operations:
2551 A.2.5.4.4.5 Implicit Location Description Operations
2562 An implicit location description specifies an implicit location storage. The bit
2564 accessed using an implicit location description, access the corresponding
2576 It pushes location description L with one implicit location description SL
2586 It pushes a location description L with one implicit location description SL
2591 location description specifies the actual value of the object, rather than
2612 form, the location description specifies a debugging information entry that
2613 represents the actual location description of the object to which the
2639 It pushes a location description L that comprises one implicit location
2640 description SL on the stack. SL specifies LS with a bit offset of 0.
2643 description L', and retrieves S bits, such that any retrieved bits come from
2647 1. All retrieved bits come from an implicit location description that
2651 description, as L' may involve composite location descriptions.*
2665 If IPV is either implicitly converted to a location description (only done
2669 description RL is:
2673 that the result kind is a location description, the compilation unit is
2685 value. RL comprises one implicit location description SRL. SRL specifies
2692 location description, then this rule would not be required.
2700 then it pushes a location description that is the same as L.
2704 *The restrictions on how an implicit pointer location description created
2717 The location description L that is pushed on the stack is the same as for
2751 .. _amdgpu-dwarf-composite-location-description-operations:
2753 A.2.5.4.4.6 Composite Location Description Operations
2764 Each part has a part location description L and a part bit size S. L can have
2779 A composite location description specifies a composite location storage. The bit
2796 A composite location description that specifies a composite location storage
2797 that is incomplete is termed an incomplete composite location description. A
2798 composite location description that specifies a composite location storage that
2799 is complete is termed a complete composite location description.
2801 If the top stack entry is a location description that has one incomplete
2802 composite location description SL after the execution of an operation expression
2803 has completed, SL is converted to a complete composite location description.
2811 If a stack entry is required to be a location description L, but L has an
2812 incomplete composite location description, then the DWARF expression is
2814 creating a composite location description as described below.
2817 location descriptions from any other location description, including those that
2821 *The incremental composite location description operations are defined to be
2831 * If the stack is empty, then a location description L comprised of one
2832 incomplete composite location description SL is pushed on the stack.
2835 P. P specifies a location description PL and has a bit size of S scaled by
2836 8 (the byte size). PL is comprised of one undefined location description
2841 * Otherwise, if the top stack entry is a location description L comprised of
2842 one incomplete composite location description SL, then the incomplete
2844 part P. P specifies a location description PL and has a bit size of S
2846 description PSL. L is left on the stack.
2848 * Otherwise, if the top stack entry is a location description or can be
2850 description PL. Then:
2852 * If the top stack entry (after popping PL) is a location description L
2853 comprised of one incomplete composite location description SL, then the
2855 append a new part P. P specifies the location description PL and has a
2858 * Otherwise, a location description L comprised of one incomplete
2859 composite location description SL is pushed on the stack.
2862 part P. P specifies the location description PL and has a bit size of S
2874 *operation can be used to update the location description before using it as
2875 the part location description of a* ``DW_OP_piece`` *operation.*
2886 description. Not only would this be a simpler operation and avoid the
2898 has the bit size S, and the location description PL of any created part is
2904 description.*
2907 *operation can be used to update the location description before using it as
2908 the part location description of a* ``DW_OP_bit_piece`` *operation.*
2913 used on the part's location description.
2917 If the top stack entry is not a location description L comprised of one
2918 incomplete composite location description SL, then the DWARF expression is
2922 updated to be a complete composite location description with the same parts.
2930 It pops one stack entry that must be a location description and is treated
2931 as the part location description PL.
2933 A location description L comprised of one complete composite location
2934 description SL is pushed on the stack.
2950 represents a bit mask value M. The second must be a location description
2951 that represents the one-location description L1. The third must be a
2952 location description that represents the zero-location description L0.
2956 location description PL\ :sub:`N` and has a bit size of S.
2964 A location description L comprised of one complete composite location
2965 description SL is pushed on the stack. SL specifies LS with a bit offset of
2983 offset value O. The third must be a location description that represents the
2984 overlay location description OL. The fourth must be a location description
2985 that represents the base location description BL.
2996 value BO. The third must be a location description that represents the
2997 overlay location description OL. The fourth must be a location description
2998 that represents the base location description BL.
3004 specified by a single location description SL of L. The remaining bit
3006 minimum RBSS of each single location description SL of L.
3015 push a composite location description.
3017 *The composite location description is conceptually the base location
3018 description BL with the overlay location description OL positioned as an
3047 *Bounded location description*
3050 evaluates to the location description of an object that is valid over a
3059 There are several kinds of bounded location description entries which differ
3062 *Default location description*
3065 evaluates to the location description of an object that is valid when no
3066 bounded location description entry applies.
3069 within the range of any bounded location description entry.
3075 bounded location description entries. The applicable base address of a bounded
3076 location description entry is the address specified by the closest preceding
3089 The address ranges defined by the bounded location description entries of a
3095 defined, and there is no following default location description entry, it is
3113 description that comprises one undefined location description.
3117 description, the object is unspecified, and the initial stack is empty. The
3118 location list entry result is the location description returned by the
3121 The result is a location description that is comprised of the union of the
3122 single location descriptions of the location description result of each
3136 description that may originate from the evaluation of a location list
3351 has a result kind of a location description, an unspecified object, the
3355 description L of the place where the return address for the current call
3359 description for one of the target architecture specific address spaces.
3374 has a result kind of a location description, an unspecified object, the
3380 resulting location description L is not comprised of one single location
3381 description SL.
3383 If SL is a register location description for register R, then L is replaced
3385 computes the frame base memory location description in the target
3394 location description directly using ``DW_OP_call_frame_cfa``,
3399 description in any of the target architecture specific address spaces.
3428 has a result kind of a location description, an unspecified object, the
3432 description L of the *canonical frame address* (see
3438 description for one of the target architecture specific address spaces.
3486 has a result kind of a location description, an unspecified object, the
3491 The resulting location description L is for a lane count sized vector of
3496 description.
3499 description.
3505 *Typically, the result is a location description with one composite location
3506 description with each part being a location description with either one
3507 undefined location description or one memory location description.*
3518 description, an unspecified object, the compilation unit that contains E, an
3523 description SL.
3562 location description, an unspecified object, the compilation unit that
3565 if any. The DWARF is ill-formed if the result is not a location description
3566 comprised of one implicit location description, that when read as the
3582 which is a location description. This location description describes where
3607 description, an unspecified object, the compilation unit that contains E, an
3610 resulting location description L\ :sub:`2` is the location where the
3699 has a result kind of a location description, an unspecified object, the
3703 description of the base of the data object.
3710 Delete the description of how the ``DW_OP_call*`` operations evaluate a
3723 supporting evaluating the location description of an object, and using a
3736 implicit location description now that any location description can be
3738 to be used to push the location description of any variable regardless of
3754 a result kind of a location description, an unspecified object, the compilation
3757 focused, if any. The result of the evaluation is the location description of the
3839 with the current context except: the result kind is location description; the
3840 initial stack is empty; and the object is the location description of P.
3871 location description of the beginning of the containing entity. The
3872 result of the evaluation is the location description of the base of the
3880 with a context that has a result kind of a location description, an
3882 stack comprising the location description of the beginning of the
3885 any. The result of the evaluation is the location description of the
3891 description, including those with more than one single location
3892 description, and those with single location descriptions that are of any
3902 has a result kind of a location description, an unspecified object, the
3904 description of the object of the enclosing type, and other context elements
3906 is focused, if any. The result of the evaluation is the location description
3915 used to compute the location description of the member of the class to which
3918 *The method used to find the location description of a given member of a
3925 location description for a particular object of the given pointer to member
3929 has a result kind of a location description, an unspecified object, the
3934 the location description of the base of the entire class, structure, or
3936 result of the evaluation is the location description of the member of the
3952 computes the location description of the data for an object. When this
3953 attribute is omitted, the location description of the data is the same as
3954 the location description of the object.
3957 has a result kind of a location description, an object that is the location
3958 description of the data descriptor, the compilation unit that contains E, an
3961 result of the evaluation is the location description of the base of the
3966 description of the object which can then serve as a descriptor in subsequent
3981 location description of the object since the expression has to need it.
4120 location description, including those with composite and implicit location
4134 The previous value of this register is the undefined location description (see
4135 :ref:`amdgpu-dwarf-undefined-location-description-operations`).
4143 register is the location description L that specifies one register location
4144 description SL. SL specifies the register location storage that corresponds to
4148 register is the location description obtained using the call frame information
4157 location description computed as if the DWARF operation expression
4159 result kind is a location description, the compilation unit is unspecified,
4161 description of the current CFA (see
4166 byte address of the location description computed as if the DWARF operation
4168 except the result kind is a location description, the compilation unit is
4170 location description of the current CFA (see
4173 The DWARF is ill-formed if the CFA location description is not a memory byte
4174 address location description, or if the register size does not match the size
4175 of an address in the address space of the current CFA location description.
4177 *Since the CFA location description is required to be a memory byte address
4178 location description, the value of val_offset(N) will also be a memory byte
4179 address location description since it is offsetting the CFA location
4180 description by N bytes. Furthermore, the value of val_offset(N) will be a
4182 description.*
4201 The previous value of this register is the location description obtained using
4216 The previous value of this register is located at the location description
4221 description, the compilation unit is unspecified, the object is unspecified,
4222 and an initial stack comprising the location description of the current CFA
4227 description created from the value produced by evaluating the DWARF operation
4232 stack comprising the location description of the current CFA (see
4244 *expression(E)* can be used to create an implicit location description of
4259 two forms: a Common Information Entry (CIE) and a Frame Description Entry (FDE).
4265 Frame Description Entries (FDE). There is at least one CIE in every non-empty
4481 DW_OP_LLVM_aspace_bregx R, B`` as a location description.
4491 a location description.
4503 AS; DW_OP_LLVM_aspace_bregx R, B`` as a location description.
4517 description.
4531 location description. B and AS are the old CFA byte displacement and address
4543 DW_OP_LLVM_aspace_bregx R, B`` as a location description. R and AS are the
4555 data_alignment_factor`` as a location description. R and AS are the old CFA
4570 is a location description, the compilation unit is unspecified, the object
4577 address location description.
4666 *That is, E computes the location description where the register value can
5065 D.1 General Description Examples
5068 D.1.3 DWARF Location Description Examples
5073 location description of the base of the structure instance is assumed to be
5086 Figure D.4: Fortran array example: DWARF description
5092 ! Description for type of 'ap'
5246 Figure D.20: Ada example: DWARF description
5311 acting on a location description.