CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
68 lines
1.9 KiB
TeX
68 lines
1.9 KiB
TeX
\subsection{Class ParseCallback}
|
|
|
|
\definedin{ParseCallback.h}
|
|
|
|
The ParseCallback class allows ParseAPI users to be notified of various events
|
|
during parsing. For most users this notification is unnecessary, and an
|
|
instantiation of the default ParseCallback can be passed to the CodeObject during initialization. Users who wish to be notified must implement a class that inherits from ParseCallback, and implement one or more of the methods described below to receive notification of those events.
|
|
|
|
\begin{apient}
|
|
struct default_details {
|
|
default_details(unsigned char * b,size_t s, bool ib);
|
|
unsigned char * ibuf;
|
|
size_t isize;
|
|
bool isbranch;
|
|
}
|
|
\end{apient}
|
|
\apidesc{Details used in the \code{unresolved\_cf} and \code{abruptEnd\_cf}
|
|
callbacks.}
|
|
|
|
\begin{apient}
|
|
virtual void instruction_cb(Function *,
|
|
Block *,
|
|
Address,
|
|
insn_details *)
|
|
\end{apient}
|
|
\apidesc{Invoked for each instruction decoded during parsing. Implementing this callback may incur significant overhead.}
|
|
|
|
\begin{apient}
|
|
struct insn_details {
|
|
InsnAdapter::InstructionAdapter * insn;
|
|
}
|
|
\end{apient}
|
|
|
|
\begin{apient}
|
|
void interproc_cf(Function *,
|
|
Address,
|
|
interproc_details *)
|
|
\end{apient}
|
|
\apidesc{Invoked for each interprocedural control flow instruction.}
|
|
|
|
\begin{apient}
|
|
struct interproc_details {
|
|
typedef enum {
|
|
ret,
|
|
call,
|
|
branch_interproc, // tail calls, branches to plts
|
|
syscall
|
|
} type_t;
|
|
unsigned char * ibuf;
|
|
size_t isize;
|
|
type_t type;
|
|
union {
|
|
struct {
|
|
Address target;
|
|
bool absolute_address;
|
|
bool dynamic_call;
|
|
} call;
|
|
} data;
|
|
}
|
|
\end{apient}
|
|
\apidesc{Details used in the \code{interproc\_cf} callback.}
|
|
|
|
\begin{apient}
|
|
void overlapping_blocks(Block *,
|
|
Block *)
|
|
\end{apient}
|
|
\apidesc{Noification of inconsistent parse data (overlapping blocks).}
|