Files
TheRock/rocm-systems/projects/rocprofiler-systems/external/dyninst/symtabAPI/doc/1-Intro.tex
T
derek.holloway 7502bf64a4
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
Flatten subprojects into a single base monorepo
2026-09-02 16:34:47 -07:00

39 lines
2.4 KiB
TeX

\section{Introduction}
\label{sec:intro}
SymtabAPI is a multi-platform library for parsing symbol tables,
object file headers and debug information. SymtabAPI currently
supports the ELF (IA-32, AMD-64, ARMv8-64, and POWER) and PE
(Windows) object file formats. In addition, it also supports the DWARF
debugging format.
The main goal of this API is to provide an abstract view of binaries and
libraries across multiple platforms. An abstract interface provides two
benefits: it simplifies the development of a tool since the complexity of a
particular file format is hidden, and it allows tools to be easily ported
between platforms. Each binary object file is represented in a canonical
platform independent manner by the API. The canonical format consists of four
components: a header block that contains general information about the object
(e.g., its name and location), a set of symbol lists that index symbols within
the object for fast lookup, debug information (type, line number and local
variable information) present in the object file and a set of additional data
that represents information that may be present in the object (e.g., relocation
or exception information). Adding a new format requires no changes to the
interface and hence will not affect any of the tools that use the SymtabAPI.
Our other design goal with SymtabAPI is to allow users and tool developers to
easily extend or add symbol or debug information to the library through a
platform-independent interface. Often times it is impossible to satify all the
requirements of a tool that uses SymtabAPI, as those requirements can vary from
tool to tool. So by providing extensible structures, SymtabAPI allows tools to
modify any structure to fit their own requirements. Also, tools frequently use
more sophisticated analyses to augment the information available from the binary
directly; it should be possible to make this extra information available to the
SymtabAPI library. An example of this is a tool operating on a stripped binary.
Although the symbols for the majority of functions in the binary may be missing,
many can be determined via more sophisticated analysis. In our model, the tool
would then inform the SymtabAPI library of the presence of these functions; this
information would be incorporated and available for subsequent analysis. Other
examples of such extensions might involve creating and adding new types or
adding new local variables to certain functions.