C++ links: interoperability - portability: libraries, ABI, name mangling
- Beautiful Native Libraries
- C++ compiler support - http://en.cppreference.com/w/cpp/compiler_support
- Compiler Dependencies - https://isocpp.org/wiki/faq/compiler-dependencies
- Creating and using shared libraries with different compilers on different operating systems
- GotW #100: Compilation Firewalls - https://herbsutter.com/gotw/_100/
- GotW #101: Compilation Firewalls, Part 2 - https://herbsutter.com/gotw/_101/
- How to Write Shared Libraries - Ulrich Drepper - http://www.akkadia.org/drepper/dsohowto.pdf
- Interoperability of Libraries Created by Different Compiler Brands
- libabc
- PImpl - http://en.cppreference.com/w/cpp/language/pimpl
- Program Library HOWTO
- This HOWTO for programmers discusses how to create and use program libraries on Linux. This includes static libraries, shared libraries, and dynamically loaded libraries.
- http://tldp.org/HOWTO/Program-Library-HOWTO/
- SEI CERT C Coding Standard
- Naivety of Creating Cross-Platform, Modern C++ Libraries: A Tour Of Our Challenges and Successes
- CppCon 2017; Jonathan Henson
- https://www.youtube.com/watch?v=JPdohAomZD8
- Intro to the C++ Object Model
- CppCon 2015; Richard Powell
- https://www.youtube.com/watch?v=iLiDezv_Frk&list=PLgpRclL8uN4xjpYqslYJlX2H1hRukN_Qr
- ABI Policy and Guidelines - The GNU C++ Library Manual
- ABIs, linkers and other animals - Stephen Kell (2014)
- Binary Compatibility Examples
- Binary Compatibility Issues With C++
- Binary Compatibility of Shared Libraries Implemented in C++ on GNU/Linux Systems
- SYRCoSE 2009; Pavel Shved, Denis Silakov
- http://syrcose.ispras.ru/2009/files/02_paper.pdf
- http://static.coldattic.info/restricted/science/syrcose09/cppbincomp.pdf
- Binary-compatible C++ Interfaces - https://chadaustin.me/cppinterface.html
- C++: Under the Hood (March 1994) by Jan Gray
- Calling conventions for different C++ compilers and operating systems
- Describing the MSVC ABI for Structure Return Types
- Itanium C++ ABI
- Some thoughts on binary compatibility - http://blog.qt.io/blog/2009/08/12/some-thoughts-on-binary-compatibility/
- Some thoughts on calling convention - http://blog.qt.io/blog/2009/08/15/some-thoughts-on-calling-convention/
- The Importance of Calling Conventions - http://blog.aaronballman.com/2011/04/the-importance-of-calling-conventions/
- The value of passing by value - https://www.macieira.org/blog/2012/02/the-value-of-passing-by-value/
- X86-64 System V Application Binary Interface
- ABI Compliance Checker (ABICC)
- A tool for checking backward API/ABI compatibility of a C/C++ library
- https://lvc.github.io/abi-compliance-checker/
- https://github.com/lvc/abi-compliance-checker
- http://ispras.linuxbase.org/index.php/ABI_compliance_checker
- How to check for ABI changes with abi compliance checker - https://fedoraproject.org/wiki/How_to_check_for_ABI_changes_with_abi_compliance_checker
- ABI Dumper
- A tool to dump ABI of an ELF object containing DWARF debug info
- https://github.com/lvc/abi-dumper
- ABIGAIL: Application Binary Interface Generic Analysis and Instrumentation Library
- abidiff - compares the Application Binary Interfaces (ABI) of two shared libraries in ELF format
- abidw - reads a shared library in ELF format and emits an XML representation of its ABI to standard output
- abicompat - checks that an application that links against a given shared library is still ABI compatible with a subsequent version of that library
- Comparing ABIs for Compatibility with libabigail – Part 1 - https://developers.redhat.com/blog/2014/10/23/comparing-abis-for-compatibility-with-libabigail-part-1/
- Comparing ABIs for Compatibility with libabigail – Part 2 - https://developers.redhat.com/blog/2014/10/28/comparing-abis-for-compatibility-libabigail-part-2/
- Pruning Dynamic Rebuilds With libabigail
- Talk: Libabigail: How semantic analysis of C and C++ ELF binaries can be used to analyze ABI changes (openSUSE Conference 2017)
- pexcheck: Pexcheck is a command-line tool for checking the binary compatibility of public interfaces.
- API & ABI versioning - Meeting C++ 2017 - Mathieu Ropert
- Binary compatibility for library developers - C++Now 2013 - Thiago Macieira:
- Easy Binary Compatible C++ Interfaces Across Compilers - C++Now 2013 - John Bandela
- https://www.youtube.com/watch?v=BbbqBJ94-_E
- PDF: https://github.com/boostcon/cppnow_presentations_2013/blob/master/tue/easy_binary_compat.pdf?raw=true
- PPT: https://github.com/boostcon/cppnow_presentations_2013/blob/master/tue/easy_binary_compat.ppt?raw=true
- https://jrb-programming.blogspot.com/2012/12/easy-binary-compatible-interfaces.html
- https://github.com/jbandela/cppcomponents
- https://github.com/jbandela/cross_compiler_call
- How to break an ABI and keep your users happy - CppCon 2017 - Gennadiy Rozental
- Reversing C++ - Black Hat USA 2007
- Paul Vincent Sabanal, Mark Vincent Yason
- https://www.blackhat.com/presentations/bh-dc-07/Sabanal_Yason/Presentation/bh-dc-07-Sabanal_Yason.pdf
- https://www.blackhat.com/presentations/bh-dc-07/Sabanal_Yason/Paper/bh-dc-07-Sabanal_Yason-WP.pdf
- Videos:
- https://archive.org/details/2007_BlackHat_Vegas-V72-Yason-Sabanal-Reversing_C
- https://www.youtube.com/watch?v=oJ3mOzD7rC8
- 00: https://www.youtube.com/watch?v=Vy0z1baCh8s
- 01: https://www.youtube.com/watch?v=1wZ615YlMFs
- 02: https://www.youtube.com/watch?v=dcoNjUn_ACI
- 03: https://www.youtube.com/watch?v=JZ8_QM-XM1k
- Measuring Mangled Name Ambiguity in Large C / C++ Projects
- SQAMIA 2017
- Richárd Szalay, Zoltán Porkoláb, Dániel Krupp
- https://www.researchgate.net/publication/320923382_Measuring_Mangled_Name_Ambiguity_in_Large_C_C_Projects
- http://ceur-ws.org/Vol-1938/paper-sza.pdf
- Towards Better Symbol Resolution for C/C++ Programs: A Cluster-Based Solution
- Source Code Analysis and Manipulation (SCAM) 2017
- Richárd Szalay, Zoltán Porkoláb, Dániel Krupp
- http://ieeexplore.ieee.org/document/8090143/
- https://www.researchgate.net/publication/320832497_Towards_Better_Symbol_Resolution_for_CC_Programs_A_Cluster-Based_Solution
- c++filtjs: c++filt in JavaScript with Emscripten
- C++ Itanium ABI demangler: C++ demangler in Python that converts the mangled name into an AST
- cppmangle: A library for demangling and mangling Visual Studio C++ names
- cpp_demangle: A crate for demangling C++ symbols
- Demangler: A C++ library and tools for demangling mangled C++ names
- demumble: A better c++filt and a better undname.exe, in one binary.
- demumble demangles both POSIX and Visual Studio symbols. It runs on both POSIX and Windows.
- https://github.com/nico/demumble
- GCC and MSVC C++ Demangler - http://demangler.com/
- C++ Weekly - Ep 8 C++ Name Demangling - https://www.youtube.com/watch?v=uX99t7GmuDc