1e01aa904Sopenharmony_ci/*! 2e01aa904Sopenharmony_ci 3e01aa904Sopenharmony_ci\mainpage The ABI Generic Analysis and Instrumentation Library 4e01aa904Sopenharmony_ci 5e01aa904Sopenharmony_ci\tableofcontents 6e01aa904Sopenharmony_ci 7e01aa904Sopenharmony_ci\section presentation Presentation 8e01aa904Sopenharmony_ci 9e01aa904Sopenharmony_ciThis project aims at providing a C++ library for constructing, 10e01aa904Sopenharmony_cimanipulating, serializing and de-serializing ABI-relevant artifacts. 11e01aa904Sopenharmony_ciThe set of artifacts that we are interested in is made of 12e01aa904Sopenharmony_ciconstructions like types, variables, functions and declarations of a 13e01aa904Sopenharmony_cigiven library or program. For a given program or library, this set of 14e01aa904Sopenharmony_ciconstructions is called an ABI corpus. 15e01aa904Sopenharmony_ci 16e01aa904Sopenharmony_ciThus the project aims at providing a library to manipulate ABI 17e01aa904Sopenharmony_cicorpora, compare them, provide detailed information about their 18e01aa904Sopenharmony_cidifferences and help build tools to infer interesting conclusions 19e01aa904Sopenharmony_ciabout these differences. 20e01aa904Sopenharmony_ci 21e01aa904Sopenharmony_ci\section documentation Documentation 22e01aa904Sopenharmony_ci 23e01aa904Sopenharmony_ciThe documentations of the libabigail tools is available online <a 24e01aa904Sopenharmony_cihref="http://sourceware.org/libabigail/manual">here</a>. 25e01aa904Sopenharmony_ci 26e01aa904Sopenharmony_ciThe html documentation of the API of the library itself is available 27e01aa904Sopenharmony_cionline <a href="http://sourceware.org/libabigail/apidoc">here</a>. 28e01aa904Sopenharmony_ci 29e01aa904Sopenharmony_ci\section communication IRC and Mailing lists 30e01aa904Sopenharmony_ci 31e01aa904Sopenharmony_ciTo hang out with libabigail developers and users, you can chat with us 32e01aa904Sopenharmony_civia <a href="http://en.wikipedia.org/wiki/Wikipedia:IRC">IRC</a> at 33e01aa904Sopenharmony_ci<em>irc://irc.oftc.net\#libabigail</em>. 34e01aa904Sopenharmony_ci 35e01aa904Sopenharmony_ciTo send us patches or just drop by to say Hi, please send an email to 36e01aa904Sopenharmony_ciour mailing list at the address 'libabigail <at> sourceware <dot> 37e01aa904Sopenharmony_ciorg'. The archives of the mailing list can be read <a 38e01aa904Sopenharmony_cihref="https://sourceware.org/ml/libabigail">online</a>. To send us an 39e01aa904Sopenharmony_ciemail, you first need to register to the mailing list by feeling 40e01aa904Sopenharmony_ci<a href="https://sourceware.org/mailman/listinfo/libabigail">this 41e01aa904Sopenharmony_ciform</a>. 42e01aa904Sopenharmony_ci 43e01aa904Sopenharmony_ci\section bugs Bug reports 44e01aa904Sopenharmony_ci 45e01aa904Sopenharmony_ciBug reports are to be filed into our <a 46e01aa904Sopenharmony_cihref="http://sourceware.org/bugzilla/enter_bug.cgi?product=libabigail">Bugzilla 47e01aa904Sopenharmony_cidatabase</a>. 48e01aa904Sopenharmony_ci 49e01aa904Sopenharmony_ci\section license License 50e01aa904Sopenharmony_ci 51e01aa904Sopenharmony_ciThe source code of the library is under the <a href="https://spdx.org/licenses/Apache-2.0.html">Apache version 2 license</a> with the <a href="https://spdx.org/licenses/LLVM-exception.html">LLVM exception</a>. 52e01aa904Sopenharmony_ci 53e01aa904Sopenharmony_ci\section source Getting the source code 54e01aa904Sopenharmony_ci 55e01aa904Sopenharmony_ciYou can download compressed tarballs containing the source code of 56e01aa904Sopenharmony_ciLibabigail at http://mirrors.kernel.org/sourceware/libabigail. The 57e01aa904Sopenharmony_cilatest released version of is source code is 58e01aa904Sopenharmony_cihttp://mirrors.kernel.org/sourceware/libabigail/libabigail-2.1.tar.gz. 59e01aa904Sopenharmony_ci 60e01aa904Sopenharmony_ciYou can also get the source code in a read-only manner from our <a 61e01aa904Sopenharmony_cihref="http://sourceware.org/git/gitweb.cgi?p=libabigail.git">Git 62e01aa904Sopenharmony_cirepository</a> by doing: 63e01aa904Sopenharmony_ci 64e01aa904Sopenharmony_ci\code 65e01aa904Sopenharmony_ci git clone git://sourceware.org/git/libabigail.git 66e01aa904Sopenharmony_ci\endcode 67e01aa904Sopenharmony_ci 68e01aa904Sopenharmony_ciIf you have write access on sourceware.org, you can check the source 69e01aa904Sopenharmony_ciout in read-write by doing: 70e01aa904Sopenharmony_ci 71e01aa904Sopenharmony_ci\code 72e01aa904Sopenharmony_ci git clone ssh://sourceware.org/git/libabigail.git 73e01aa904Sopenharmony_ci\endcode 74e01aa904Sopenharmony_ci 75e01aa904Sopenharmony_ci\section compile Compiling the source code 76e01aa904Sopenharmony_ci 77e01aa904Sopenharmony_ciTo compile libabigail, you first need to install its dependencies. At 78e01aa904Sopenharmony_cithe moment the dependencies are the following Free Software packages: 79e01aa904Sopenharmony_ci 80e01aa904Sopenharmony_ci \li <a href="http://www.gnu.org/software/autoconf/">autoconf</a> 81e01aa904Sopenharmony_ci \li <a href="http://www.gnu.org/software/automake/">automake</a> 82e01aa904Sopenharmony_ci \li <a href="http://www.gnu.org/software/libtool/">libtool</a> 83e01aa904Sopenharmony_ci \li <a href="http://www.freedesktop.org/wiki/Software/pkg-config/">pkg-config</a> 84e01aa904Sopenharmony_ci \li <a href="http://www.xmlsoft.org">libxml2</a> 85e01aa904Sopenharmony_ci \li <a href="https://fedorahosted.org/elfutils/">elfutils</a> 86e01aa904Sopenharmony_ci \li <a href="http://www.stack.nl/~dimitri/doxygen/download.html">doxygen</a> 87e01aa904Sopenharmony_ci \li <a href="http://www.sphinx-doc.org/en/stable/">python-sphinx</a> 88e01aa904Sopenharmony_ci 89e01aa904Sopenharmony_ci\subsection compile-from-tarball Compiling the code from the tarball 90e01aa904Sopenharmony_ci 91e01aa904Sopenharmony_ciOnce you've downloaded the tarball, please extract its content to a 92e01aa904Sopenharmony_cidirectory of your choice. To extract the tarball on GNU/Linux, please 93e01aa904Sopenharmony_citype: 94e01aa904Sopenharmony_ci 95e01aa904Sopenharmony_ci\code 96e01aa904Sopenharmony_ci tar -xvf libabigail-<version>.tar.gz 97e01aa904Sopenharmony_ci\endcode 98e01aa904Sopenharmony_ci 99e01aa904Sopenharmony_ciThis should create a directory <em>libabigail-<version></em>. 100e01aa904Sopenharmony_ci 101e01aa904Sopenharmony_ciThen go to that directory and run the commands: 102e01aa904Sopenharmony_ci 103e01aa904Sopenharmony_ci\code 104e01aa904Sopenharmony_ci mkdir build 105e01aa904Sopenharmony_ci cd build 106e01aa904Sopenharmony_ci ../configure --prefix=/where/you/want/to/install/libabigail 107e01aa904Sopenharmony_ci make all install 108e01aa904Sopenharmony_ci\endcode 109e01aa904Sopenharmony_ci 110e01aa904Sopenharmony_ciMake sure the directory <em>/where/you/want/to/install/libabigail</em> 111e01aa904Sopenharmony_ciexists and is writeable by you. 112e01aa904Sopenharmony_ci 113e01aa904Sopenharmony_ciThe commands above should have built libabigail and its associated 114e01aa904Sopenharmony_citools, and installed them under 115e01aa904Sopenharmony_ci<em>/where/you/want/to/install/libabigail</em>. Note that built 116e01aa904Sopenharmony_ciobjects are under the <em>build</em> sub-directory of the source tree 117e01aa904Sopenharmony_ciof Libabigail which you extracted from the tarball. 118e01aa904Sopenharmony_ci 119e01aa904Sopenharmony_ci\subsection compile-from-git Compiling the code retrieved via the source code repository 120e01aa904Sopenharmony_ci 121e01aa904Sopenharmony_ciGo to your local libabigail.git directory where the source code 122e01aa904Sopenharmony_ciyou've checked out lies and create a 'build' directory that will 123e01aa904Sopenharmony_cireceive the binaries resulting from the compilation: 124e01aa904Sopenharmony_ci 125e01aa904Sopenharmony_ci\code 126e01aa904Sopenharmony_ci cd libabigail 127e01aa904Sopenharmony_ci mkdir build 128e01aa904Sopenharmony_ci\endcode 129e01aa904Sopenharmony_ci 130e01aa904Sopenharmony_ciGenerate the relevant build-system-related information needed to 131e01aa904Sopenharmony_ciconfigure the package for compilation, by typing: 132e01aa904Sopenharmony_ci 133e01aa904Sopenharmony_ci\code 134e01aa904Sopenharmony_ci autoreconf -i 135e01aa904Sopenharmony_ci\endcode 136e01aa904Sopenharmony_ci 137e01aa904Sopenharmony_ciThen configure the package: 138e01aa904Sopenharmony_ci 139e01aa904Sopenharmony_ci\code 140e01aa904Sopenharmony_ci cd build 141e01aa904Sopenharmony_ci ../configure --prefix=<absolute-path-of-where-you-want-the-binaries-to-be-installed> 142e01aa904Sopenharmony_ci\endcode 143e01aa904Sopenharmony_ci 144e01aa904Sopenharmony_ciThen build the package 145e01aa904Sopenharmony_ci 146e01aa904Sopenharmony_ci\code 147e01aa904Sopenharmony_ci make 148e01aa904Sopenharmony_ci\endcode 149e01aa904Sopenharmony_ci 150e01aa904Sopenharmony_ciAnd then install its resulting binaries and documentation: 151e01aa904Sopenharmony_ci 152e01aa904Sopenharmony_ci\code 153e01aa904Sopenharmony_ci make install 154e01aa904Sopenharmony_ci\endcode 155e01aa904Sopenharmony_ci 156e01aa904Sopenharmony_ci 157e01aa904Sopenharmony_ci*/ 158