1e01aa904Sopenharmony_ci 2e01aa904Sopenharmony_ci====== 3e01aa904Sopenharmony_ciabidw 4e01aa904Sopenharmony_ci====== 5e01aa904Sopenharmony_ci 6e01aa904Sopenharmony_ciabidw reads a shared library in `ELF`_ format and emits an XML 7e01aa904Sopenharmony_cirepresentation of its ABI to standard output. The emitted 8e01aa904Sopenharmony_cirepresentation format, named ``ABIXML``, includes all the globally 9e01aa904Sopenharmony_cidefined functions and variables, along with a complete representation 10e01aa904Sopenharmony_ciof their types. It also includes a representation of the globally 11e01aa904Sopenharmony_cidefined ELF symbols of the file. 12e01aa904Sopenharmony_ci 13e01aa904Sopenharmony_ciWhen given the ``--linux-tree`` option, this program can also handle a 14e01aa904Sopenharmony_ci`Linux kernel`_ tree. That is, a directory tree that contains both 15e01aa904Sopenharmony_cithe vmlinux binary and `Linux Kernel`_ modules. It analyses those 16e01aa904Sopenharmony_ci`Linux Kernel`_ binaries and emits an XML representation of the 17e01aa904Sopenharmony_ciinterface between the kernel and its module, to standard output. In 18e01aa904Sopenharmony_cithis case, we don't call it an ABI, but a KMI (Kernel Module 19e01aa904Sopenharmony_ciInterface). The emitted KMI includes all the globally defined 20e01aa904Sopenharmony_cifunctions and variables, along with a complete representation of their 21e01aa904Sopenharmony_citypes. 22e01aa904Sopenharmony_ci 23e01aa904Sopenharmony_ciTo generate either ABI or KMI representation, by default ``abidw`` 24e01aa904Sopenharmony_ciuses debug information in `DWARF`_ format, if present, otherwise it 25e01aa904Sopenharmony_cilooks for debug information in `CTF`_ format, if present, finally, if 26e01aa904Sopenharmony_cineither is found, it uses only `ELF`_ symbols to report which of them 27e01aa904Sopenharmony_ciwere added or removed. 28e01aa904Sopenharmony_ci 29e01aa904Sopenharmony_ci.. include:: tools-use-libabigail.txt 30e01aa904Sopenharmony_ci 31e01aa904Sopenharmony_ci.. _abidiff_invocation_label: 32e01aa904Sopenharmony_ci 33e01aa904Sopenharmony_ciInvocation 34e01aa904Sopenharmony_ci========== 35e01aa904Sopenharmony_ci 36e01aa904Sopenharmony_ci:: 37e01aa904Sopenharmony_ci 38e01aa904Sopenharmony_ci abidw [options] [<path-to-elf-file>] 39e01aa904Sopenharmony_ci 40e01aa904Sopenharmony_ciOptions 41e01aa904Sopenharmony_ci======= 42e01aa904Sopenharmony_ci 43e01aa904Sopenharmony_ci * ``--help | -h`` 44e01aa904Sopenharmony_ci 45e01aa904Sopenharmony_ci Display a short help about the command and exit. 46e01aa904Sopenharmony_ci 47e01aa904Sopenharmony_ci * `--version | -v` 48e01aa904Sopenharmony_ci 49e01aa904Sopenharmony_ci Display the version of the program and exit. 50e01aa904Sopenharmony_ci 51e01aa904Sopenharmony_ci * `--abixml-version` 52e01aa904Sopenharmony_ci 53e01aa904Sopenharmony_ci Display the version of the ABIXML format emitted by this program and exit. 54e01aa904Sopenharmony_ci 55e01aa904Sopenharmony_ci * ``--debug-info-dir | -d`` <*dir-path*> 56e01aa904Sopenharmony_ci 57e01aa904Sopenharmony_ci In cases where the debug info for *path-to-elf-file* is in a 58e01aa904Sopenharmony_ci separate file that is located in a non-standard place, this tells 59e01aa904Sopenharmony_ci ``abidw`` where to look for that debug info file. 60e01aa904Sopenharmony_ci 61e01aa904Sopenharmony_ci Note that *dir-path* must point to the root directory under which 62e01aa904Sopenharmony_ci the debug information is arranged in a tree-like manner. Under 63e01aa904Sopenharmony_ci Red Hat based systems, that directory is usually 64e01aa904Sopenharmony_ci ``<root>/usr/lib/debug``. 65e01aa904Sopenharmony_ci 66e01aa904Sopenharmony_ci This option can be provided several times with different root 67e01aa904Sopenharmony_ci directories. In that case, ``abidw`` will potentially look into 68e01aa904Sopenharmony_ci all those root directories to find the split debug info for the 69e01aa904Sopenharmony_ci elf file. 70e01aa904Sopenharmony_ci 71e01aa904Sopenharmony_ci Note that this option is not mandatory for split debug information 72e01aa904Sopenharmony_ci installed by your system's package manager because then 73e01aa904Sopenharmony_ci ``abidw`` knows where to find it. 74e01aa904Sopenharmony_ci 75e01aa904Sopenharmony_ci * ``--out-file`` <*file-path*> 76e01aa904Sopenharmony_ci 77e01aa904Sopenharmony_ci This option instructs ``abidw`` to emit the XML representation of 78e01aa904Sopenharmony_ci *path-to-elf-file* into the file *file-path*, rather than emitting 79e01aa904Sopenharmony_ci it to its standard output. 80e01aa904Sopenharmony_ci 81e01aa904Sopenharmony_ci * ``--noout`` 82e01aa904Sopenharmony_ci 83e01aa904Sopenharmony_ci This option instructs ``abidw`` to not emit the XML representation 84e01aa904Sopenharmony_ci of the ABI. So it only reads the ELF and debug information, 85e01aa904Sopenharmony_ci builds the internal representation of the ABI and exits. This 86e01aa904Sopenharmony_ci option is usually useful for debugging purposes. 87e01aa904Sopenharmony_ci 88e01aa904Sopenharmony_ci * ``--no-corpus-path`` 89e01aa904Sopenharmony_ci 90e01aa904Sopenharmony_ci Do not emit the path attribute for the ABI corpus. 91e01aa904Sopenharmony_ci 92e01aa904Sopenharmony_ci * ``--suppressions | suppr`` <*path-to-suppression-specifications-file*> 93e01aa904Sopenharmony_ci 94e01aa904Sopenharmony_ci Use a :ref:`suppression specification <suppr_spec_label>` file 95e01aa904Sopenharmony_ci located at *path-to-suppression-specifications-file*. Note that 96e01aa904Sopenharmony_ci this option can appear multiple times on the command line. In 97e01aa904Sopenharmony_ci that case, all of the provided suppression specification files are 98e01aa904Sopenharmony_ci taken into account. ABI artifacts matched by the suppression 99e01aa904Sopenharmony_ci specifications are suppressed from the output of this tool. 100e01aa904Sopenharmony_ci 101e01aa904Sopenharmony_ci 102e01aa904Sopenharmony_ci * ``--kmi-whitelist | -kaw`` <*path-to-whitelist*> 103e01aa904Sopenharmony_ci 104e01aa904Sopenharmony_ci When analyzing a `Linux Kernel`_ binary, this option points to the 105e01aa904Sopenharmony_ci white list of names of ELF symbols of functions and variables 106e01aa904Sopenharmony_ci which ABI must be written out. That white list is called a " 107e01aa904Sopenharmony_ci Kernel Module Interface white list". This is because for the 108e01aa904Sopenharmony_ci Kernel, we don't talk about the ABI; we rather talk about the 109e01aa904Sopenharmony_ci interface between the Kernel and its module. Hence the term 110e01aa904Sopenharmony_ci ``KMI`` rather than ``ABI`` 111e01aa904Sopenharmony_ci 112e01aa904Sopenharmony_ci Any other function or variable which ELF symbol are not present in 113e01aa904Sopenharmony_ci that white list will not be considered by the KMI writing process. 114e01aa904Sopenharmony_ci 115e01aa904Sopenharmony_ci If this option is not provided -- thus if no white list is 116e01aa904Sopenharmony_ci provided -- then the entire KMI, that is, all publicly defined and 117e01aa904Sopenharmony_ci exported functions and global variables by the `Linux Kernel`_ 118e01aa904Sopenharmony_ci binaries is emitted. 119e01aa904Sopenharmony_ci 120e01aa904Sopenharmony_ci * ``--linux-tree | --lt`` 121e01aa904Sopenharmony_ci 122e01aa904Sopenharmony_ci Make ``abidw`` to consider the input path as a path to a directory 123e01aa904Sopenharmony_ci containing the vmlinux binary as several kernel modules binaries. 124e01aa904Sopenharmony_ci In that case, this program emits the representation of the Kernel 125e01aa904Sopenharmony_ci Module Interface (KMI) on the standard output. 126e01aa904Sopenharmony_ci 127e01aa904Sopenharmony_ci Below is an example of usage of ``abidw`` on a `Linux Kernel`_ 128e01aa904Sopenharmony_ci tree. 129e01aa904Sopenharmony_ci 130e01aa904Sopenharmony_ci First, checkout a `Linux Kernel`_ source tree and build it. Then 131e01aa904Sopenharmony_ci install the kernel modules in a directory somewhere. Copy the 132e01aa904Sopenharmony_ci vmlinux binary into that directory too. And then serialize the 133e01aa904Sopenharmony_ci KMI of that kernel to disk, using ``abidw``: :: 134e01aa904Sopenharmony_ci 135e01aa904Sopenharmony_ci $ git clone git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git 136e01aa904Sopenharmony_ci $ cd linux && git checkout v4.5 137e01aa904Sopenharmony_ci $ make allyesconfig all 138e01aa904Sopenharmony_ci $ mkdir build-output 139e01aa904Sopenharmony_ci $ make INSTALL_MOD_PATH=./build-output modules_install 140e01aa904Sopenharmony_ci $ cp vmlinux build-output/modules/4.5.0 141e01aa904Sopenharmony_ci $ abidw --linux-tree build-output/modules/4.5.0 > build-output/linux-4.5.0.kmi 142e01aa904Sopenharmony_ci 143e01aa904Sopenharmony_ci * ``--headers-dir | --hd`` <headers-directory-path-1> 144e01aa904Sopenharmony_ci 145e01aa904Sopenharmony_ci Specifies where to find the public headers of the binary that the 146e01aa904Sopenharmony_ci tool has to consider. The tool will thus filter out types that 147e01aa904Sopenharmony_ci are not defined in public headers. 148e01aa904Sopenharmony_ci 149e01aa904Sopenharmony_ci Note that several public header directories can be specified for 150e01aa904Sopenharmony_ci the binary to consider. In that case the ``--header-dir`` option 151e01aa904Sopenharmony_ci should be present several times on the command line, like in the 152e01aa904Sopenharmony_ci following example: :: 153e01aa904Sopenharmony_ci 154e01aa904Sopenharmony_ci $ abidw --header-dir /some/path \ 155e01aa904Sopenharmony_ci --header-dir /some/other/path \ 156e01aa904Sopenharmony_ci binary > binary.abi 157e01aa904Sopenharmony_ci 158e01aa904Sopenharmony_ci * ``--header-file | --hf`` <header-file-path> 159e01aa904Sopenharmony_ci 160e01aa904Sopenharmony_ci Specifies where to find one of the public headers of the abi file 161e01aa904Sopenharmony_ci that the tool has to consider. The tool will thus filter out 162e01aa904Sopenharmony_ci types that are not defined in public headers. 163e01aa904Sopenharmony_ci 164e01aa904Sopenharmony_ci * ``--drop-private-types`` 165e01aa904Sopenharmony_ci 166e01aa904Sopenharmony_ci This option is to be used with the ``--headers-dir`` and/or 167e01aa904Sopenharmony_ci ``header-file`` options. With this option, types that are *NOT* 168e01aa904Sopenharmony_ci defined in the headers are entirely dropped from the internal 169e01aa904Sopenharmony_ci representation build by Libabigail to represent the ABI and will 170e01aa904Sopenharmony_ci not end up in the abi XML file. 171e01aa904Sopenharmony_ci 172e01aa904Sopenharmony_ci * ``--no-elf-needed`` 173e01aa904Sopenharmony_ci 174e01aa904Sopenharmony_ci Do not include the list of DT_NEEDED dependency names in the 175e01aa904Sopenharmony_ci corpus. 176e01aa904Sopenharmony_ci 177e01aa904Sopenharmony_ci * ``--drop-undefined-syms`` 178e01aa904Sopenharmony_ci 179e01aa904Sopenharmony_ci With this option functions or variables for which the (exported) 180e01aa904Sopenharmony_ci ELF symbol is undefined are dropped from the internal 181e01aa904Sopenharmony_ci representation build by Libabigail to represent the ABI and will 182e01aa904Sopenharmony_ci not end up in the abi XML file. 183e01aa904Sopenharmony_ci 184e01aa904Sopenharmony_ci * ``--exported-interfaces-only`` 185e01aa904Sopenharmony_ci 186e01aa904Sopenharmony_ci By default, when looking at the debug information accompanying a 187e01aa904Sopenharmony_ci binary, this tool analyzes the descriptions of the types reachable 188e01aa904Sopenharmony_ci by the interfaces (functions and variables) that are visible 189e01aa904Sopenharmony_ci outside of their translation unit. Once that analysis is done, an 190e01aa904Sopenharmony_ci ABI corpus is constructed by only considering the subset of types 191e01aa904Sopenharmony_ci reachable from interfaces associated to `ELF`_ symbols that are 192e01aa904Sopenharmony_ci defined and exported by the binary. It's that final ABI corpus 193e01aa904Sopenharmony_ci which textual representation is saved as ``ABIXML``. 194e01aa904Sopenharmony_ci 195e01aa904Sopenharmony_ci The problem with that approach however is that analyzing all the 196e01aa904Sopenharmony_ci interfaces that are visible from outside their translation unit 197e01aa904Sopenharmony_ci can amount to a lot of data, especially when those binaries are 198e01aa904Sopenharmony_ci applications, as opposed to shared libraries. One example of such 199e01aa904Sopenharmony_ci applications is the `Linux Kernel`_. Analyzing massive ABI 200e01aa904Sopenharmony_ci corpora like these can be extremely slow. 201e01aa904Sopenharmony_ci 202e01aa904Sopenharmony_ci To mitigate that performance issue, this option allows libabigail 203e01aa904Sopenharmony_ci to only analyze types that are reachable from interfaces 204e01aa904Sopenharmony_ci associated with defined and exported `ELF`_ symbols. 205e01aa904Sopenharmony_ci 206e01aa904Sopenharmony_ci Note that this option is turned on by default when analyzing the 207e01aa904Sopenharmony_ci `Linux Kernel`_. Otherwise, it's turned off by default. 208e01aa904Sopenharmony_ci 209e01aa904Sopenharmony_ci * ``--allow-non-exported-interfaces`` 210e01aa904Sopenharmony_ci 211e01aa904Sopenharmony_ci When looking at the debug information accompanying a binary, this 212e01aa904Sopenharmony_ci tool analyzes the descriptions of the types reachable by the 213e01aa904Sopenharmony_ci interfaces (functions and variables) that are visible outside of 214e01aa904Sopenharmony_ci their translation unit. Once that analysis is done, an ABI corpus 215e01aa904Sopenharmony_ci is constructed by only considering the subset of types reachable 216e01aa904Sopenharmony_ci from interfaces associated to `ELF`_ symbols that are defined and 217e01aa904Sopenharmony_ci exported by the binary. It's that final ABI corpus which textual 218e01aa904Sopenharmony_ci representation is saved as ``ABIXML``. 219e01aa904Sopenharmony_ci 220e01aa904Sopenharmony_ci The problem with that approach however is that analyzing all the 221e01aa904Sopenharmony_ci interfaces that are visible from outside their translation unit 222e01aa904Sopenharmony_ci can amount to a lot of data, especially when those binaries are 223e01aa904Sopenharmony_ci applications, as opposed to shared libraries. One example of such 224e01aa904Sopenharmony_ci applications is the `Linux Kernel`_. Analyzing massive ABI 225e01aa904Sopenharmony_ci corpora like these can be extremely slow. 226e01aa904Sopenharmony_ci 227e01aa904Sopenharmony_ci In the presence of an "average sized" binary however one can 228e01aa904Sopenharmony_ci afford having libabigail analyze all interfaces that are visible 229e01aa904Sopenharmony_ci outside of their translation unit, using this option. 230e01aa904Sopenharmony_ci 231e01aa904Sopenharmony_ci Note that this option is turned on by default, unless we are in 232e01aa904Sopenharmony_ci the presence of the `Linux Kernel`_. 233e01aa904Sopenharmony_ci 234e01aa904Sopenharmony_ci * ``--no-linux-kernel-mode`` 235e01aa904Sopenharmony_ci 236e01aa904Sopenharmony_ci Without this option, if abipkgiff detects that the binaries it is 237e01aa904Sopenharmony_ci looking at are Linux Kernel binaries (either vmlinux or modules) 238e01aa904Sopenharmony_ci then it only considers functions and variables which ELF symbols 239e01aa904Sopenharmony_ci are listed in the __ksymtab and __ksymtab_gpl sections. 240e01aa904Sopenharmony_ci 241e01aa904Sopenharmony_ci With this option, abipkgdiff considers the binary as a non-special 242e01aa904Sopenharmony_ci ELF binary. It thus considers functions and variables which are 243e01aa904Sopenharmony_ci defined and exported in the ELF sense. 244e01aa904Sopenharmony_ci 245e01aa904Sopenharmony_ci * ``--check-alternate-debug-info`` <*elf-path*> 246e01aa904Sopenharmony_ci 247e01aa904Sopenharmony_ci If the debug info for the file *elf-path* contains a reference to 248e01aa904Sopenharmony_ci an `alternate debug info <alt-di-label>`_ file, ``abidw`` checks 249e01aa904Sopenharmony_ci that it can find that alternate debug info file. In that case, it 250e01aa904Sopenharmony_ci emits a meaningful success message mentioning the full path to the 251e01aa904Sopenharmony_ci alternate debug info file found. Otherwise, it emits an error 252e01aa904Sopenharmony_ci code. 253e01aa904Sopenharmony_ci 254e01aa904Sopenharmony_ci * ``--no-show-locs`` 255e01aa904Sopenharmony_ci 256e01aa904Sopenharmony_ci In the emitted ABI representation, do not show file, line or column 257e01aa904Sopenharmony_ci where ABI artifacts are defined. 258e01aa904Sopenharmony_ci 259e01aa904Sopenharmony_ci * ``--no-parameter-names`` 260e01aa904Sopenharmony_ci 261e01aa904Sopenharmony_ci In the emitted ABI representation, do not show names of function 262e01aa904Sopenharmony_ci parameters, just the types. 263e01aa904Sopenharmony_ci 264e01aa904Sopenharmony_ci * ``--no-write-default-sizes`` 265e01aa904Sopenharmony_ci 266e01aa904Sopenharmony_ci In the XML ABI representation, do not write the size-in-bits for 267e01aa904Sopenharmony_ci pointer type definitions, reference type definitions, function 268e01aa904Sopenharmony_ci declarations and function types when they are equal to the default 269e01aa904Sopenharmony_ci address size of the translation unit. Note that libabigail before 270e01aa904Sopenharmony_ci 1.8 will not set the default size and will interpret types without 271e01aa904Sopenharmony_ci a size-in-bits attribute as zero sized. 272e01aa904Sopenharmony_ci 273e01aa904Sopenharmony_ci * ``--type-id-style`` <``sequence``|``hash``> 274e01aa904Sopenharmony_ci 275e01aa904Sopenharmony_ci This option controls how types are idenfied in the generated XML 276e01aa904Sopenharmony_ci files. The default ``sequence`` style just numbers (with 277e01aa904Sopenharmony_ci ``type-id-`` as prefix) the types in the order they are 278e01aa904Sopenharmony_ci encountered. The ``hash`` style uses a (stable, portable) hash of 279e01aa904Sopenharmony_ci libabigail's internal type names and is intended to make the XML 280e01aa904Sopenharmony_ci files easier to diff. 281e01aa904Sopenharmony_ci 282e01aa904Sopenharmony_ci * ``--check-alternate-debug-info-base-name`` <*elf-path*> 283e01aa904Sopenharmony_ci 284e01aa904Sopenharmony_ci 285e01aa904Sopenharmony_ci Like ``--check-alternate-debug-info``, but in the success message, 286e01aa904Sopenharmony_ci only mention the base name of the debug info file; not its full path. 287e01aa904Sopenharmony_ci 288e01aa904Sopenharmony_ci * ``--load-all-types`` 289e01aa904Sopenharmony_ci 290e01aa904Sopenharmony_ci By default, ``libabigail`` (and thus ``abidw``) only loads types 291e01aa904Sopenharmony_ci that are reachable from functions and variables declarations that 292e01aa904Sopenharmony_ci are publicly defined and exported by the binary. So only those 293e01aa904Sopenharmony_ci types are present in the output of ``abidw``. This option however 294e01aa904Sopenharmony_ci makes ``abidw`` load *all* the types defined in the binaries, even 295e01aa904Sopenharmony_ci those that are not reachable from public declarations. 296e01aa904Sopenharmony_ci 297e01aa904Sopenharmony_ci * ``--abidiff`` 298e01aa904Sopenharmony_ci 299e01aa904Sopenharmony_ci Load the ABI of the ELF binary given in argument, save it in 300e01aa904Sopenharmony_ci libabigail's XML format in a temporary file; read the ABI from the 301e01aa904Sopenharmony_ci temporary XML file and compare the ABI that has been read back 302e01aa904Sopenharmony_ci against the ABI of the ELF binary given in argument. The ABIs 303e01aa904Sopenharmony_ci should compare equal. If they don't, the program emits a 304e01aa904Sopenharmony_ci diagnostic and exits with a non-zero code. 305e01aa904Sopenharmony_ci 306e01aa904Sopenharmony_ci This is a debugging and sanity check option. 307e01aa904Sopenharmony_ci 308e01aa904Sopenharmony_ci * ``--debug-abidiff`` 309e01aa904Sopenharmony_ci 310e01aa904Sopenharmony_ci Same as ``--abidiff`` but in debug mode. In this mode, error 311e01aa904Sopenharmony_ci messages are emitted for types which fail type canonicalization. 312e01aa904Sopenharmony_ci 313e01aa904Sopenharmony_ci This is an optional debugging and sanity check option. To enable 314e01aa904Sopenharmony_ci it the libabigail package needs to be configured with 315e01aa904Sopenharmony_ci the --enable-debug-self-comparison option. 316e01aa904Sopenharmony_ci 317e01aa904Sopenharmony_ci * ``--debug-type-canonicalization | --debug-tc`` 318e01aa904Sopenharmony_ci 319e01aa904Sopenharmony_ci Debug the type canonicalization process. This is done by using 320e01aa904Sopenharmony_ci structural and canonical equality when canonicalizing every single 321e01aa904Sopenharmony_ci type. Structural and canonical equality should yield the same 322e01aa904Sopenharmony_ci result. If they don't yield the same result for a given type, 323e01aa904Sopenharmony_ci then it means that the canonicalization of that type went wrong. 324e01aa904Sopenharmony_ci In that case, an error message is emitted and the execution of the 325e01aa904Sopenharmony_ci program is aborted. 326e01aa904Sopenharmony_ci 327e01aa904Sopenharmony_ci This option is available only if the package was configured with 328e01aa904Sopenharmony_ci the --enable-debug-type-canonicalization option. 329e01aa904Sopenharmony_ci 330e01aa904Sopenharmony_ci * ``--no-assume-odr-for-cplusplus`` 331e01aa904Sopenharmony_ci 332e01aa904Sopenharmony_ci When analysing a binary originating from C++ code using `DWARF`_ 333e01aa904Sopenharmony_ci debug information, libabigail assumes the `One Definition Rule`_ 334e01aa904Sopenharmony_ci to speed-up the analysis. In that case, when several types have 335e01aa904Sopenharmony_ci the same name in the binary, they are assumed to all be equal. 336e01aa904Sopenharmony_ci 337e01aa904Sopenharmony_ci This option disables that assumption and instructs libabigail to 338e01aa904Sopenharmony_ci actually actually compare the types to determine if they are 339e01aa904Sopenharmony_ci equal. 340e01aa904Sopenharmony_ci 341e01aa904Sopenharmony_ci * ``--no-leverage-dwarf-factorization`` 342e01aa904Sopenharmony_ci 343e01aa904Sopenharmony_ci When analysing a binary which `DWARF`_ debug information was 344e01aa904Sopenharmony_ci processed with the `DWZ`_ tool, the type information is supposed 345e01aa904Sopenharmony_ci to be already factorized. That context is used by libabigail to 346e01aa904Sopenharmony_ci perform some speed optimizations. 347e01aa904Sopenharmony_ci 348e01aa904Sopenharmony_ci This option disables those optimizations. 349e01aa904Sopenharmony_ci 350e01aa904Sopenharmony_ci * ``--ctf`` 351e01aa904Sopenharmony_ci 352e01aa904Sopenharmony_ci Extract ABI information from `CTF`_ debug information, if present in 353e01aa904Sopenharmony_ci the given object. 354e01aa904Sopenharmony_ci 355e01aa904Sopenharmony_ci * ``--annotate`` 356e01aa904Sopenharmony_ci 357e01aa904Sopenharmony_ci Annotate the ABIXML output with comments above most elements. The 358e01aa904Sopenharmony_ci comments are made of the pretty-printed form types, declaration or 359e01aa904Sopenharmony_ci even ELF symbols. The purpose is to make the ABIXML output more 360e01aa904Sopenharmony_ci human-readable for debugging or documenting purposes. 361e01aa904Sopenharmony_ci 362e01aa904Sopenharmony_ci * ``--stats`` 363e01aa904Sopenharmony_ci 364e01aa904Sopenharmony_ci Emit statistics about various internal things. 365e01aa904Sopenharmony_ci 366e01aa904Sopenharmony_ci * ``--verbose`` 367e01aa904Sopenharmony_ci 368e01aa904Sopenharmony_ci Emit verbose logs about the progress of miscellaneous internal 369e01aa904Sopenharmony_ci things. 370e01aa904Sopenharmony_ci 371e01aa904Sopenharmony_ciNotes 372e01aa904Sopenharmony_ci===== 373e01aa904Sopenharmony_ci 374e01aa904Sopenharmony_ci.. _alt-di-label: 375e01aa904Sopenharmony_ci 376e01aa904Sopenharmony_ciAlternate debug info files 377e01aa904Sopenharmony_ci-------------------------- 378e01aa904Sopenharmony_ci 379e01aa904Sopenharmony_ciAs of the version 4 of the DWARF specification, `Alternate debug 380e01aa904Sopenharmony_ciinformation <http://www.dwarfstd.org/ShowIssue.php?issue=120604.1>`_ 381e01aa904Sopenharmony_ciis a `GNU`_ extension to the DWARF specification. It has however been 382e01aa904Sopenharmony_ciproposed for inclusion into the upcoming version 5 of the DWARF 383e01aa904Sopenharmony_cistandard. You can read more about the GNU extensions to the DWARF 384e01aa904Sopenharmony_cistandard `here 385e01aa904Sopenharmony_ci<https://fedorahosted.org/elfutils/wiki/DwarfExtensions>`_. 386e01aa904Sopenharmony_ci 387e01aa904Sopenharmony_ci.. _ELF: http://en.wikipedia.org/wiki/Executable_and_Linkable_Format 388e01aa904Sopenharmony_ci.. _DWARF: http://www.dwarfstd.org 389e01aa904Sopenharmony_ci.. _GNU: http://www.gnu.org 390e01aa904Sopenharmony_ci.. _Linux Kernel: https://kernel.org/ 391e01aa904Sopenharmony_ci.. _CTF: https://raw.githubusercontent.com/wiki/oracle/binutils-gdb/files/ctf-spec.pdf 392e01aa904Sopenharmony_ci.. _ODR: https://en.wikipedia.org/wiki/One_Definition_Rule 393e01aa904Sopenharmony_ci.. _One Definition Rule: https://en.wikipedia.org/wiki/One_Definition_Rule 394e01aa904Sopenharmony_ci.. _DWZ: https://sourceware.org/dwz 395