elf_diff Logo ELF Binary Comparison

Overview

Binaries

old: ../../tests/x86_64/libelf_diff_test_debug_old.a (debug)

new: ../../tests/x86_64/libelf_diff_test_debug_new.a (debug)

Statistics

Program Storage

Old/bytesNew/bytesDelta/bytes
overall3293312
text3213232
data880

Static RAM

Old/bytesNew/bytesDelta/bytes
overall880
data880
bss000

Legend

textinstructions
datainitialized global or static variables
bssuninitialized global or static variables

Symbol Classes

ClassEntities
Old7
New7
Persisting3
Disappeared4
Appeared4
Similar10
Migrated3

Symbol Selection

Old BinaryNew Binary
Total77
Selected77
Dropped00
Selection Regex.*.*
Exclusion Regex

Symbols

Persisting Symbols

Symbol
Type
Old Size/bytes
New Size/bytes
Delta/bytes
persisting1(int) ⓘ T 18 18 0
persisting2(int) ⓘ T 18 18 0
var D 4 4 0

Columns

SymbolThe symbol name (possibly mangled)
TypeThe symbol type (see the documentation of binutils tool nm for more information)
Old SizeThe old symbol size either in RAM or program memory
New SizeThe new symbol size either in RAM or program memory
DeltaThe change to symbol size

Disappeared Symbols

Symbol
Type
Size/bytes
Test::g(float, float) ⓘ T 29
Test::f(int, int) ⓘ T 21
func(int) ⓘ T 18
Test::m_ D 4

Columns

SymbolThe symbol name (possibly demangled)
TypeThe symbol type (see the documentation of binutils tool nm for more information)
SizeThe symbol size either in RAM or program memory

New Symbols

Symbol
Type
Size/bytes
Test1::g(float, float) ⓘ T 29
Test1::f(int, int) ⓘ T 21
func(double) ⓘ T 20
Test1::m_ D 4

Columns

SymbolThe symbol name (possibly demangled)
TypeThe symbol type (see the documentation of binutils tool nm for more information)
SizeThe symbol size either in RAM or program memory

Similar Symbols

Id
Symbols
Types
Sizes/bytes
Deltas/bytes
Sig. Sim./%
Instr. Sim./%
0 ⓘ Test::f(int, int)
Test1::f(int, int)
T
T
21
21
0 88.9 100.0
1 ⓘ Test::g(float, float)
Test1::g(float, float)
T
T
29
29
0 88.9 100.0
2 Test::m_
Test1::m_
D
D
4
4
0 88.0 100.0
3 ⓘ func(int)
func(double)
T
T
18
20
2 87.5 93.1
4 Test::f(int, int)
Test1::m_
T
D
21
4
-17 69.2 0.0
5 Test::g(float, float)
Test1::m_
T
D
29
4
-25 69.2 0.0
6 ⓘ Test::f(int, int)
Test1::g(float, float)
T
T
21
29
8 66.7 81.4
7 ⓘ Test::g(float, float)
Test1::f(int, int)
T
T
29
21
-8 66.7 81.4
8 Test::m_
Test1::g(float, float)
D
T
4
29
25 61.5 0.0
9 Test::m_
Test1::f(int, int)
D
T
4
21
17 61.5 0.0

Columns

IDInteger id assigned to each symbol pair
SymbolsThe two similar symbol names (possibly mangled)
TypesThe symbol types (see the documentation of binutils tool nm for more information)
SizesThe sizes of the symbols either in RAM or program memory
DeltasThe difference in symbol size
Sig. Sim.Lexicographic symbol signature similarity
Instr. Sim.Instruction similarity of the symbols' assembly code

Migrated Symbols

Symbol
Old Source Location
New Source Location
persisting1(int) ⓘ /home/flo/Tmp/elf_diff/testing/src/old/test.cpp:42 /home/flo/Tmp/elf_diff/testing/src/new/test.cpp:42
persisting2(int) ⓘ /home/flo/Tmp/elf_diff/testing/src/old/test.cpp:43 /home/flo/Tmp/elf_diff/testing/src/new/test.cpp:43
var /home/flo/Tmp/elf_diff/testing/src/old/test.cpp:24 /home/flo/Tmp/elf_diff/testing/src/new/test.cpp:24

Please Note: Use the settings source_prefix, old_source_prefix or new_source_prefix to eliminate false positives by removing path prefix from source file paths.

Columns

SymbolThe symbol name (possibly mangled)
Old Source LocationThe old source file location [file:line]
New Source LocationThe new source file location [file:line]

Symbol Details

Persisting Symbols

Persisting symbol persisting1(int) : old size: 18 bytes, new size: 18 bytes, delta: 0 bytes

Old source: /home/flo/Tmp/elf_diff/testing/src/old/test.cpp:42
New source: /home/flo/Tmp/elf_diff/testing/src/new/test.cpp:42


Old
New
f1endbr64f1endbr64
2push   %rbp2push   %rbp
3mov    %rsp,%rbp3mov    %rsp,%rbp
4mov    %edi,-0x4(%rbp)4mov    %edi,-0x4(%rbp)
t5mov    $0x2b,%eaxt5mov    $0x2a,%eax
6pop    %rbp6pop    %rbp
7ret7ret
88

Persisting symbol persisting2(int) : old size: 18 bytes, new size: 18 bytes, delta: 0 bytes

Old source: /home/flo/Tmp/elf_diff/testing/src/old/test.cpp:43
New source: /home/flo/Tmp/elf_diff/testing/src/new/test.cpp:43


Old
New
f1endbr64f1endbr64
2push   %rbp2push   %rbp
3mov    %rsp,%rbp3mov    %rsp,%rbp
4mov    %edi,-0x4(%rbp)4mov    %edi,-0x4(%rbp)
t5mov    $0x2b,%eaxt5mov    $0x2a,%eax
6pop    %rbp6pop    %rbp
7ret7ret
88

Disappeared Symbols

Disappeared symbol func(int) : size: 18 bytes

Source: /home/flo/Tmp/elf_diff/testing/src/old/test.cpp:20

endbr64
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x4(%rbp)
mov    $0x2a,%eax
pop    %rbp
ret

Disappeared symbol Test::f(int, int) : size: 21 bytes

Source: /home/flo/Tmp/elf_diff/testing/src/old/test.cpp:37

endbr64
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    $0x2a,%eax
pop    %rbp
ret
nop

Disappeared symbol Test::g(float, float) : size: 29 bytes

Source: /home/flo/Tmp/elf_diff/testing/src/old/test.cpp:38

endbr64
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
movss  %xmm0,-0xc(%rbp)
movss  %xmm1,-0x10(%rbp)
mov    $0x1,%eax
pop    %rbp
ret

New Symbols

Appeared symbol func(double) : size: 20 bytes

Source: /home/flo/Tmp/elf_diff/testing/src/new/test.cpp:20

endbr64
push   %rbp
mov    %rsp,%rbp
movsd  %xmm0,-0x8(%rbp)
mov    $0x2a,%eax
pop    %rbp
ret

Appeared symbol Test1::f(int, int) : size: 21 bytes

Source: /home/flo/Tmp/elf_diff/testing/src/new/test.cpp:37

endbr64
push   %rbp
mov    %rsp,%rbp
mov    %edi,-0x4(%rbp)
mov    %esi,-0x8(%rbp)
mov    $0x2a,%eax
pop    %rbp
ret
nop

Appeared symbol Test1::g(float, float) : size: 29 bytes

Source: /home/flo/Tmp/elf_diff/testing/src/new/test.cpp:38

endbr64
push   %rbp
mov    %rsp,%rbp
mov    %rdi,-0x8(%rbp)
movss  %xmm0,-0xc(%rbp)
movss  %xmm1,-0x10(%rbp)
mov    $0x1,%eax
pop    %rbp
ret

Similar Symbols

Similar pair 0 : old size: 21 bytes, new size: 21 bytes, delta: 0 bytes, sig. sim.: 88.9 %, instr. sim.: 100.0 %

Old: Test::f(int, int) [/home/flo/Tmp/elf_diff/testing/src/old/test.cpp:37]
New: Test1::f(int, int) [/home/flo/Tmp/elf_diff/testing/src/new/test.cpp:37]

Instructions unchanged

Similar pair 1 : old size: 29 bytes, new size: 29 bytes, delta: 0 bytes, sig. sim.: 88.9 %, instr. sim.: 100.0 %

Old: Test::g(float, float) [/home/flo/Tmp/elf_diff/testing/src/old/test.cpp:38]
New: Test1::g(float, float) [/home/flo/Tmp/elf_diff/testing/src/new/test.cpp:38]

Instructions unchanged

Similar pair 3 : old size: 18 bytes, new size: 20 bytes, delta: 2 bytes, sig. sim.: 87.5 %, instr. sim.: 93.1 %

Old: func(int) [/home/flo/Tmp/elf_diff/testing/src/old/test.cpp:20]
New: func(double) [/home/flo/Tmp/elf_diff/testing/src/new/test.cpp:20]


Old
New
f1endbr64f1endbr64
2push   %rbp2push   %rbp
3mov    %rsp,%rbp3mov    %rsp,%rbp
t4mov    %edi,-0x4(%rbp)t4movsd  %xmm0,-0x8(%rbp)
5mov    $0x2a,%eax5mov    $0x2a,%eax
6pop    %rbp6pop    %rbp
7ret7ret
88

Similar pair 6 : old size: 21 bytes, new size: 29 bytes, delta: 8 bytes, sig. sim.: 66.7 %, instr. sim.: 81.4 %

Old: Test::f(int, int) [/home/flo/Tmp/elf_diff/testing/src/old/test.cpp:37]
New: Test1::g(float, float) [/home/flo/Tmp/elf_diff/testing/src/new/test.cpp:38]


Old
New
f1endbr64f1endbr64
2push   %rbp2push   %rbp
3mov    %rsp,%rbp3mov    %rsp,%rbp
n4mov    %edi,-0x4(%rbp)n4mov    %rdi,-0x8(%rbp)
5mov    %esi,-0x8(%rbp)5movss  %xmm0,-0xc(%rbp)
6movss  %xmm1,-0x10(%rbp)
6mov    $0x2a,%eax7mov    $0x1,%eax
7pop    %rbp8pop    %rbp
8ret9ret
t9nopt
1010

Similar pair 7 : old size: 29 bytes, new size: 21 bytes, delta: -8 bytes, sig. sim.: 66.7 %, instr. sim.: 81.4 %

Old: Test::g(float, float) [/home/flo/Tmp/elf_diff/testing/src/old/test.cpp:38]
New: Test1::f(int, int) [/home/flo/Tmp/elf_diff/testing/src/new/test.cpp:37]


Old
New
f1endbr64f1endbr64
2push   %rbp2push   %rbp
3mov    %rsp,%rbp3mov    %rsp,%rbp
n4mov    %rdi,-0x8(%rbp)n4mov    %edi,-0x4(%rbp)
5movss  %xmm0,-0xc(%rbp)5mov    %esi,-0x8(%rbp)
6movss  %xmm1,-0x10(%rbp)
7mov    $0x1,%eax6mov    $0x2a,%eax
8pop    %rbp7pop    %rbp
9ret8ret
tt9nop
1010

Migrated Symbols

Migrated symbol persisting1(int) : old size: 18 bytes, new size: 18 bytes, delta: 0 bytes

Old source: /home/flo/Tmp/elf_diff/testing/src/old/test.cpp:42
New source: /home/flo/Tmp/elf_diff/testing/src/new/test.cpp:42

Migrated symbol persisting2(int) : old size: 18 bytes, new size: 18 bytes, delta: 0 bytes

Old source: /home/flo/Tmp/elf_diff/testing/src/old/test.cpp:43
New source: /home/flo/Tmp/elf_diff/testing/src/new/test.cpp:43