Latest available version: IDA and decompilers v8.4.240320sp1 see all releases
Hex-Rays logo State-of-the-art binary code analysis tools
email icon
problems.hpp File Reference

Functions that deal with the list of problems. More...

Typedefs

typedef uchar problist_id_t
 see Processor feature bits
 

Functions

idaman ssize_t ida_export get_problem_desc (qstring *buf, problist_id_t t, ea_t ea)
 Get the human-friendly description of the problem, if one was provided to remember_problem. More...
 
idaman void ida_export remember_problem (problist_id_t type, ea_t ea, const char *msg=nullptr)
 Insert an address to a list of problems. More...
 
idaman ea_t ida_export get_problem (problist_id_t type, ea_t lowea)
 Get an address from the specified problem list. More...
 
idaman bool ida_export forget_problem (problist_id_t type, ea_t ea)
 Remove an address from a problem list. More...
 
idaman const char *ida_export get_problem_name (problist_id_t type, bool longname=true)
 Get problem list description.
 
idaman bool ida_export is_problem_present (problist_id_t t, ea_t ea)
 Check if the specified address is present in the problem list.
 
bool was_ida_decision (ea_t ea)
 

Variables

const problist_id_t PR_NOBASE = 1
 Can't find offset base.
 
const problist_id_t PR_NONAME = 2
 Can't find name.
 
const problist_id_t PR_NOFOP = 3
 Can't find forced op (not used anymore)
 
const problist_id_t PR_NOCMT = 4
 Can't find comment (not used anymore)
 
const problist_id_t PR_NOXREFS = 5
 Can't find references.
 
const problist_id_t PR_JUMP = 6
 Jump by table !!!! ignored.
 
const problist_id_t PR_DISASM = 7
 Can't disasm.
 
const problist_id_t PR_HEAD = 8
 Already head.
 
const problist_id_t PR_ILLADDR = 9
 Exec flows beyond limits.
 
const problist_id_t PR_MANYLINES = 10
 Too many lines.
 
const problist_id_t PR_BADSTACK = 11
 Failed to trace the value of the stack pointer.
 
const problist_id_t PR_ATTN = 12
 Attention! Probably erroneous situation.
 
const problist_id_t PR_FINAL = 13
 Decision to convert to instruction/data is made by IDA.
 
const problist_id_t PR_ROLLED = 14
 The decision made by IDA was wrong and rolled back.
 
const problist_id_t PR_COLLISION = 15
 FLAIR collision: the function with the given name already exists.
 
const problist_id_t PR_DECIMP = 16
 FLAIR match indecision: the patterns matched, but not the function(s) being referenced.
 
const problist_id_t PR_END = 17
 Number of problem types.
 

Detailed Description

Functions that deal with the list of problems.

There are several problem lists. An address may be inserted to any list. The kernel simply maintains these lists, no additional processing is done.

The problem lists are accessible for the user from the View->Subviews->Problems menu item.

Addresses in the lists are kept sorted. In general IDA just maintains these lists without using them during analysis (except PR_ROLLED).

Function Documentation

◆ get_problem_desc()

idaman ssize_t ida_export get_problem_desc ( qstring buf,
problist_id_t  t,
ea_t  ea 
)

Get the human-friendly description of the problem, if one was provided to remember_problem.

Parameters
bufa buffer to store the message into.
tproblem list type.
ealinear address.
Returns
the message length or -1 if none

◆ remember_problem()

idaman void ida_export remember_problem ( problist_id_t  type,
ea_t  ea,
const char *  msg = nullptr 
)

Insert an address to a list of problems.

Display a message saying about the problem (except of PR_ATTN,PR_FINAL) PR_JUMP is temporarily ignored.

Parameters
typeproblem list type
ealinear address
msga user-friendly message to be displayed instead of the default more generic one associated with the type of problem. Defaults to nullptr.

◆ get_problem()

idaman ea_t ida_export get_problem ( problist_id_t  type,
ea_t  lowea 
)

Get an address from the specified problem list.

The address is not removed from the list.

Parameters
typeproblem list type
loweathe returned address will be higher or equal than the specified address
Returns
linear address or BADADDR

◆ forget_problem()

idaman bool ida_export forget_problem ( problist_id_t  type,
ea_t  ea 
)

Remove an address from a problem list.

Parameters
typeproblem list type
ealinear address
Returns
success