Lines Matching +full:- +full:- +full:add +full:- +full:architecture
13 .TH "LIBUNWIND\-DYNAMIC" "3" "16 August 2007" "Programming Library " "Programming Library "
15 libunwind\-dynamic
16 \-\- libunwind\-support for runtime\-generated code
24 of each frame in a call\-chain. The frame state
25 describes the subset of the machine\-state that consists of the
27 (typically the instruction\-pointer and the
28 stack\-pointer) and all callee\-saved registers (preserved registers).
31 which the current value is stored (callee\-saved registers).
34 emitting \fIunwind\-info\fP
36 information needed to reconstruct the frame\-state for each instruction
38 generator must use the dynamic unwind\-info interface provided by
47 procedure directly corresponds to a function in the source\-language
49 code\-generator could translate a given function into two separate
50 (discontiguous) procedures: one for frequently\-executed (hot) code and
51 one for rarely\-executed (cold) code. Similarly, simple
52 source\-language functions (usually leaf functions) may get translated
53 into code for which the default unwind\-conventions apply and for such
54 code, it is not strictly necessary to register dynamic unwind\-info.
64 can be empty. If non\-empty, the prologue sets up the frame state for
66 on the stack and save certain callee\-saved registers. The body
68 frame state in any way. If non\-empty, the epilogue restores the
74 are logically separate entities, optimizing code\-generators will
76 reason, the dynamic unwind\-info interface of libunwind
81 by the dynamic unwind\-info is the point at which the stack\-pointer
83 once the stack\-pointer is restored, all values saved in the
89 instructions which restore the contents of callee\-saved registers.
94 Exactly how this index is derived depends on the architecture. For
95 example, on RISC and EPIC\-style architecture, instructions have a
97 contrast, most CISC use variable\-length instruction encodings, so it
98 is usually necessary to use a byte\-offset as the index. Given the
101 that the instruction stores calle\-saved register r1
108 A runtime code\-generator registers the dynamic unwind\-info of a
127 The start\-address of the
129 contiguous pieces of code, so a single code\-range is sufficient).
132 The end\-address of the
133 instructions of the procedure (non\-inclusive, that is,
134 end_ip\-start_ip
139 The global\-pointer value in use
140 for this procedure. The exact meaing of the global\-pointer is
141 architecture\-specific and on some architecture, it is not used at
145 The format of the unwind\-info.
152 This union contains one sub\-member
153 structure for every possible unwind\-info format:
170 The format of these sub\-members is described in detail below.
173 .SS PROC\-INFO FORMAT
175 This is the preferred dynamic unwind\-info format and it is generally
176 the one used by full\-blown runtime code\-generators. In this format,
186 (human\-readable) name of the procedure or 0 if no such name is
187 available. If non\-zero, The string stored at this address must be
188 ASCII NUL terminated. For source languages that use name\-mangling
196 personality\-routine for this procedure. Personality\-routines are
198 (http://www.codesourcery.com/cxx\-abi/) for an overview and a
211 A NULL\-terminated
212 linked list of region\-descriptors. See section ``Region
215 .SS TABLE\-INFO FORMAT
218 derived from static code and the unwind\-info for the dynamic and the
220 when loading statically\-generated code into an address\-space in a
221 non\-standard fashion (i.e., through some means other than
230 (human\-readable) name of the procedure or 0 if no such name is
231 available. If non\-zero, The string stored at this address must be
232 ASCII NUL terminated. For source languages that use name\-mangling
239 The segment\-base value
240 that needs to be added to the segment\-relative values stored in the
241 unwind\-info. The exact meaning of this value is
242 architecture\-specific.
247 unwind\-info (table_data)
254 data encoding the unwind\-info. The exact format is
255 architecture\-specific (see architecture\-specific sections below).
257 .SS REMOTE TABLE\-INFO FORMAT
259 The remote table\-info format has the same basic purpose as the regular
260 table\-info format. The only difference is that when libunwind
261 uses the unwind\-info, it will keep the table data in the target
262 address\-space (which may be remote). Consequently, the type of the
267 will have to access the table\-data
268 via the address\-space\&'s access_mem()
269 call\-back, rather than
272 From the point of view of a runtime\-code generator, the remote
273 table\-info format offers no advantage and it is expected that such
274 generators will describe their procedures either with the proc\-info
275 format or the normal table\-info format. The main reason that the
276 remote table\-info format exists is to enable the
277 address\-space\-specific find_proc_info()
304 architecture\-specific sections for details). The value of
346 memory\-allocation request. To facilitate the allocation of a region
384 predicated architecturs such as IA\-64 or ARM, where the contents of
385 another (callee\-saved) register determines whether or not an
397 The region\-relative number of
422 but a runtime code\-generator should not go to extra lengths just to
432 and if the runtime code\-generator happens to generated sorted lists
447 region\-descriptor are ignored. This tag is guaranteed to have a
460 to a frame\-pointer\-relative location. The
461 frame\-pointer\-relative offset is given by the value stored in member
463 See the architecture\-specific sections for a description
470 to a stack\-pointer\-relative location. The
471 stack\-pointer\-relative offset is given by the value stored in member
473 See the architecture\-specific sections for a description
481 To add subtract
482 a constant value, store the two\&'s\-complement of the value in
485 is described in the architecture\-specific sections below.
511 .SH IA\-64 SPECIFICS
514 \- meaning of segbase member in table\-info/table\-remote\-info format
515 \- format of table_data in table\-info/table\-remote\-info format
516 \- instruction size: each bundle is counted as 3 instructions, regardless
518 \- describe stack\-frame layout, especially with regards to sp\-relative
519 and fp\-relative addressing
520 \- UNW_DYN_ADD can only add to ``sp\&'' (always a negative value); use
533 David Mosberger\-Tang