IDA SDK
|
Modules | |
Argument location types | |
Standard C-language models for x86 | |
Classes | |
struct | rrel_t |
Register-relative argument location. More... | |
struct | custloc_desc_t |
Description of a custom argloc. More... | |
class | argloc_t |
Describes an argument location. More... | |
struct | argpart_t |
Subsection of an argument location. More... | |
class | scattered_aloc_t |
Used to manage arguments that are described by multiple locations (also see ALOC_DIST) More... | |
struct | aloc_visitor_t |
Visit all argument locations. More... | |
struct | const_aloc_visitor_t |
Same as aloc_visitor_t, but may not modify the argloc. More... | |
Macros | |
#define | PRALOC_VERIFY 0x01 |
interr if illegal argloc | |
#define | PRALOC_STKOFF 0x02 |
print stack offsets | |
Typedefs | |
typedef int | argloc_type_t |
Specifies the location type of a function argument or a debugger variable - see Argument location types. | |
typedef qvector< argloc_t > | arglocs_t |
vector of argument locations | |
typedef qvector< argpart_t > | argpartvec_t |
Enumerations | |
enum | argreg_policy_t { ARGREGS_POLICY_UNDEFINED , ARGREGS_GP_ONLY , ARGREGS_INDEPENDENT , ARGREGS_BY_SLOTS , ARGREGS_FP_MASKS_GP , ARGREGS_MIPS_O32 , ARGREGS_RISCV } |
Function argument passing: how GP & FP registers cooperate with each other. More... | |
Functions | |
idaman int ida_export | install_custom_argloc (const custloc_desc_t *custloc) |
Save a custom argloc. | |
idaman bool ida_export | remove_custom_argloc (int idx) |
Delete the custom argloc at the given index. | |
idaman const custloc_desc_t *ida_export | retrieve_custom_argloc (int idx) |
Retrieve the custom argloc at the given index. | |
idaman int ida_export | verify_argloc (const argloc_t &vloc, int size, const rangeset_t *gaps) |
Verify argloc_t. More... | |
idaman bool ida_export | optimize_argloc (argloc_t *vloc, int size, const rangeset_t *gaps) |
Verify and optimize scattered argloc into simple form. More... | |
idaman size_t ida_export | print_argloc (char *buf, size_t bufsize, const argloc_t &vloc, int size=0, int vflags=0) |
Convert an argloc to human readable form. | |
idaman int ida_export | for_all_arglocs (aloc_visitor_t &vv, argloc_t &vloc, int size, int off=0) |
Compress larger argloc types and initiate the aloc visitor. | |
int idaapi | for_all_const_arglocs (const_aloc_visitor_t &vv, const argloc_t &vloc, int size, int off=0) |
See for_all_arglocs() | |
constexpr THREAD_SAFE cm_t | get_cc (cm_t cm) |
Get the calling convention. | |
cm_t | get_effective_cc (cm_t cm) |
Get effective calling convention (with respect to default CC) | |
constexpr THREAD_SAFE bool | is_user_cc (cm_t cm) |
Does the calling convention specify argument locations explicitly? | |
constexpr THREAD_SAFE bool | is_vararg_cc (cm_t cm) |
Does the calling convention use ellipsis? | |
constexpr THREAD_SAFE bool | is_purging_cc (cm_t cm) |
Does the calling convention clean the stack arguments upon return?. More... | |
constexpr bool | is_golang_cc (cm_t cc) |
GO language calling convention (return value in stack)? | |
constexpr bool | is_swift_cc (cm_t cc) |
Swift calling convention (arguments and return values in registers)? | |
enum argreg_policy_t |
Function argument passing: how GP & FP registers cooperate with each other.
idaman int ida_export verify_argloc | ( | const argloc_t & | vloc, |
int | size, | ||
const rangeset_t * | gaps | ||
) |
Verify argloc_t.
vloc | argloc to verify |
size | total size of the variable |
gaps | if not nullptr, specifies gaps in structure definition. these gaps should not map to any argloc, but everything else must be covered |
idaman bool ida_export optimize_argloc | ( | argloc_t * | vloc, |
int | size, | ||
const rangeset_t * | gaps | ||
) |
Verify and optimize scattered argloc into simple form.
All new arglocs must be processed by this function.
true | success |
false | the input argloc was illegal |
|
inlineconstexpr |
Does the calling convention clean the stack arguments upon return?.