| IDA SDK

Functions | Typedefs | Variables
problems.hpp File Reference

## 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).

## 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)

## Typedefs
typedef uchar | problist_id_t
| see Processor feature bits

## 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.

## 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

  buf | a buffer to store the message into.
  t | problem list type.
  ea | linear 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

  type | problem list type
  ea | linear address
  msg | a 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

  type | problem list type
  lowea | the 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

  type | problem list type
  ea | linear address

Returns
  success