Libabigail & ABI compatibility
Taming the runtime linking problem
Libabigail & ABI compatibility Taming the runtime linking - - PowerPoint PPT Presentation
Libabigail & ABI compatibility Taming the runtime linking problem Ben Woodard Consulting Engineer Dodji Seketeli Tools Engineer Aug 2016 Problems due to ABI Compatibility There are several problems cause by ABI compatibility problems
Taming the runtime linking problem
INSERT DESIGNATOR, IF NEEDED
2
○ Unforeseen problem at runtime ○ Need to compile libs for all compilers
○ Match library version with application ○ Match compiler
INSERT DESIGNATOR, IF NEEDED
3
INSERT DESIGNATOR, IF NEEDED
4
○ 4.4.7, 4.7.2, 4.8.2, 4.9.2, 5.3, 6.1.0
○ 9.1, 1[0-4].[01], 1[56]
○ 7.[01], [89].0, 10.[2,9], 11.{1,10}, 12.[18], 13.{1,2,6,10}, 14.{3,7,10}, 15.
○ ???
○ 3.[4-8]
INSERT DESIGNATOR, IF NEEDED
5
○ This does work to some extent with system libraries ○ Other libraries may hit corner cases especially C++
○ API directly affects this.
INSERT DESIGNATOR, IF NEEDED
6
INSERT DESIGNATOR, IF NEEDED
7
INSERT DESIGNATOR, IF NEEDED
8
○ Other formats theoretically possible e.g. Mach-O or Windows ○ Not just DWARF to DWARF comparison ■ Allows comparison between compilers ■
○ Compare saved ABI to ELF, DWARF for new object ■ Used to maintain ABI stability ■ No need to keep old objects around.
INSERT DESIGNATOR, IF NEEDED
9
○ Used to save copies ABI ○ “abidw --abidiff elfobject.so” compares an object to itself. Used to test
○ Compare two objects or saved ABI XML files. ○ “abidiff elffile1.so elffile2.so ○ “abidiff saved.abixml elffile.so
INSERT DESIGNATOR, IF NEEDED
10
○ If the only changed functions and variables are not used the program,
○ Does not detect functional changes
INSERT DESIGNATOR, IF NEEDED
11
INSERT DESIGNATOR, IF NEEDED
12
INSERT DESIGNATOR, IF NEEDED
13
INSERT DESIGNATOR, IF NEEDED
14
plus.google.com/+RedHat linkedin.com/company/red-hat youtube.com/user/RedHatVideos facebook.com/redhatinc twitter.com/RedHatNews
INSERT DESIGNATOR, IF NEEDED
Type code snippet here 16