Add doc for INLINE and INLINE_ORIGIN records in symbol file
Change-Id: Iacf98d4e1a6f4c75e552eaa879f330be7976547e Reviewed-on: https://chromium-review.googlesource.com/c/breakpad/breakpad/+/3268351 Reviewed-by: Joshua Peraza <jperaza@chromium.org>
This commit is contained in:
parent
622a582fa6
commit
42d2475617
1 changed files with 59 additions and 0 deletions
|
@ -105,6 +105,22 @@ which other records (line records, in particular) can use to refer to that file
|
||||||
name. The _number_ field is a decimal number. The _name_ field is the name of
|
name. The _number_ field is a decimal number. The _name_ field is the name of
|
||||||
the file; it may contain spaces.
|
the file; it may contain spaces.
|
||||||
|
|
||||||
|
# `INLINE_ORIGIN` records
|
||||||
|
|
||||||
|
An `INLINE_ORIGIN` record holds an inline function name for `INLINE` records to
|
||||||
|
refer to. It has the form:
|
||||||
|
|
||||||
|
> `INLINE_ORIGIN` _number_ _name_
|
||||||
|
|
||||||
|
For example: `INLINE_ORIGIN 2 nsQueryInterfaceWithError::operator()(nsID const&,
|
||||||
|
void**) const
|
||||||
|
`
|
||||||
|
|
||||||
|
An `INLINE_ORIGIN` record provides the name of an inline function, and assigns
|
||||||
|
it a number which other records (`INLINE` records, in particular) can use to
|
||||||
|
refer to that function name. The _number_ field is a decimal number. The _name_
|
||||||
|
field is the name of the inline function; it may contain spaces.
|
||||||
|
|
||||||
# `FUNC` records
|
# `FUNC` records
|
||||||
|
|
||||||
A `FUNC` record describes a source-language function. It has the form:
|
A `FUNC` record describes a source-language function. It has the form:
|
||||||
|
@ -136,6 +152,49 @@ The _name_ field is the name of the function. In languages that use linker
|
||||||
symbol name mangling like C++, this should be the source language name (the
|
symbol name mangling like C++, this should be the source language name (the
|
||||||
"unmangled" form). This field may contain spaces.
|
"unmangled" form). This field may contain spaces.
|
||||||
|
|
||||||
|
# `INLINE` records
|
||||||
|
|
||||||
|
An `INLINE` record describes the inline function's nest level, call site line
|
||||||
|
and call site source file to which the given ranges of machine code should be
|
||||||
|
attributed. It has the form:
|
||||||
|
|
||||||
|
> `INLINE` _inline_nest_level_ _call_site_line_ _call_site_file_num_
|
||||||
|
> _origin_num_ [_address_ _size_]+
|
||||||
|
|
||||||
|
For example: `INLINE 0 10 3 4 d30 2a fa1 b
|
||||||
|
`
|
||||||
|
|
||||||
|
The _inline_nest_level_ field is a decimal number that means it's inlined at the
|
||||||
|
function described by a previous `INLINE` record which has _inline_nest_level_
|
||||||
|
one less than its. In the example below, first and third `INLINE` records have
|
||||||
|
_inline_nest_level_ 0, which means they are inlined inside the function
|
||||||
|
described by the `FUNC` record. The second `INLINE` record has
|
||||||
|
_inline_nest_level_ 1 means that it's inlined at the inline function described
|
||||||
|
by first `INLINE` record.
|
||||||
|
```
|
||||||
|
FUNC ...
|
||||||
|
INLINE 0 ...
|
||||||
|
INLINE 1 ...
|
||||||
|
INLINE 0 ...
|
||||||
|
```
|
||||||
|
|
||||||
|
The _call_site_line_ and _call_site_file_num_ fields are decimal numbers
|
||||||
|
indicating where this inline function being called at.
|
||||||
|
|
||||||
|
The _origin_num_ field refers to an `INLINE_ORIGIN` record that has the name
|
||||||
|
of the inline function.
|
||||||
|
|
||||||
|
The _address_ and _size_ fields are hexadecimal numbers indicating the start
|
||||||
|
address and length in bytes of the machine code. The address is relative to the
|
||||||
|
module's load address. There could be more than one [_address_ _size_] range
|
||||||
|
pair, since inline functions could have discontinuous address ranges. The ranges
|
||||||
|
of an `INLINE` record are always inside the ranges described by its parent
|
||||||
|
record (a `FUNC` record or an `INLINE` record).
|
||||||
|
|
||||||
|
The `INLINE` record is assumed to belong to the function described by the last
|
||||||
|
preceding `FUNC` record. `INLINE` records may not appear before the first `FUNC`
|
||||||
|
record.
|
||||||
|
|
||||||
# Line records
|
# Line records
|
||||||
|
|
||||||
A line record describes the source file and line number to which a given range
|
A line record describes the source file and line number to which a given range
|
||||||
|
|
Loading…
Reference in a new issue