elf_diff Logo ELF Binary Comparison

Overview

Binaries

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

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

Statistics

Program Storage

Old/bytesNew/bytesDelta/bytes
overall43945011
text40341411
data36360

Static RAM

Old/bytesNew/bytesDelta/bytes
overall36360
data36360
bss000

Legend

textinstructions
datainitialized global or static variables
bssuninitialized global or static variables

Symbol Classes

ClassEntities
Old17
New17
Persisting11
Disappeared6
Appeared6
Similar16
Migrated5

Symbol Selection

Old BinaryNew Binary
Total1717
Selected1717
Dropped00
Selection Regex.*.*
Exclusion Regex

Symbols

Persisting Symbols

Symbol
Type
Old Size/bytes
New Size/bytes
Delta/bytes
implementationChanged(int) ⓘ T 98 106 8
g() ⓘ T 11 11 0
fIStay(double) ⓘ T 30 30 0
cIStayButDiffer r 4 4 0
cIStay r 4 4 0
Test::smvIStayButDiffer D 4 4 0
Test::smvIStay D 4 4 0
g()::lsvIStayButDiffer d 4 4 0
g()::lsvIStay d 4 4 0
vIStay D 4 4 0
vIStayButDiffer 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
fIStayButDiffer(float) ⓘ T 20
fIAmGone(int) ⓘ T 16
cIAmGone r 4
Test::smvIAmGone D 4
g()::lsvIAmGone d 4
vIAmGone 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
fIAmNew(short) ⓘ T 20
fIStayButDiffer(char) ⓘ T 19
cIAmNew r 4
Test::smvIAmNew D 4
g()::lsvIAmNew d 4
vIAmNew 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 ⓘ fIStayButDiffer(float)
fIStayButDiffer(char)
T
T
20
19
-1 95.0 84.3
1 fIStayButDiffer(float)
cIStayButDiffer
T
r
20
4
-16 90.0 0.0
2 Test::smvIAmGone
Test::smvIAmNew
D
D
4
4
0 80.0 100.0
3 fIStayButDiffer(float)
vIStayButDiffer
T
D
20
4
-16 80.0 0.0
4 g()::lsvIAmGone
g()::lsvIAmNew
d
d
4
4
0 77.8 100.0
5 fIStayButDiffer(float)
g()::lsvIStayButDiffer
T
d
20
4
-16 73.9 0.0
6 fIStayButDiffer(float)
Test::smvIStayButDiffer
T
D
20
4
-16 70.8 0.0
7 cIAmGone
cIAmNew
r
r
4
4
0 69.6 100.0
8 Test::smvIAmGone
Test::smvIStay
D
D
4
4
0 66.7 100.0
9 vIAmGone
vIAmNew
D
D
4
4
0 66.7 100.0
10 g()::lsvIAmGone
g()::lsvIStay
d
d
4
4
0 62.9 100.0
11 Test::smvIAmGone
Test::smvIStayButDiffer
D
D
4
4
0 61.2 100.0
12 ⓘ fIAmGone(int)
fIAmNew(short)
T
T
16
20
4 60.9 89.7
13 g()::lsvIAmGone
g()::lsvIStayButDiffer
d
d
4
4
0 57.8 100.0
14 cIAmGone
fIAmNew(short)
r
T
4
20
16 52.2 0.0
15 fIAmGone(int)
cIAmNew
T
r
16
4
-12 52.2 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
g() ⓘ old/test2.cpp:32(/home/flo/Documents/elf_diff/tests/src/old/test2.cpp) new/test2.cpp:32(/home/flo/Documents/elf_diff/tests/src/new/test2.cpp)
fIStay(double) ⓘ old/test2.cpp:21(/home/flo/Documents/elf_diff/tests/src/old/test2.cpp) new/test2.cpp:20(/home/flo/Documents/elf_diff/tests/src/new/test2.cpp)
vIStay old/test2.cpp:25(/home/flo/Documents/elf_diff/tests/src/old/test2.cpp) new/test2.cpp:24(/home/flo/Documents/elf_diff/tests/src/new/test2.cpp)
vIStayButDiffer old/test2.cpp:26(/home/flo/Documents/elf_diff/tests/src/old/test2.cpp) new/test2.cpp:25(/home/flo/Documents/elf_diff/tests/src/new/test2.cpp)
implementationChanged(int) ⓘ old/test2.cpp:68(/home/flo/Documents/elf_diff/tests/src/old/test2.cpp) new/test2.cpp:68(/home/flo/Documents/elf_diff/tests/src/new/test2.cpp)

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 g() : old size: 11 bytes, new size: 11 bytes, delta: 0 bytes

Old source: old/test2.cpp:32(/home/flo/Documents/elf_diff/tests/src/old/test2.cpp)
New source: new/test2.cpp:32(/home/flo/Documents/elf_diff/tests/src/new/test2.cpp)

Instructions unchanged

Persisting symbol implementationChanged(int) : old size: 98 bytes, new size: 106 bytes, delta: 8 bytes

Old source: old/test2.cpp:68(/home/flo/Documents/elf_diff/tests/src/old/test2.cpp)
New source: new/test2.cpp:68(/home/flo/Documents/elf_diff/tests/src/new/test2.cpp)


Old
New
f1endbr64f1endbr64
2push   %rbp2push   %rbp
3mov    %rsp,%rbp3mov    %rsp,%rbp
4mov    %edi,-0x14(%rbp)4mov    %edi,-0x14(%rbp)
5mov    -0x14(%rbp),%eax5mov    -0x14(%rbp),%eax
nn6lea    0x1(%rax),%edx
7mov    %edx,%eax
6add    %eax,%eax8add    %eax,%eax
n7add    $0x3,%eaxn9add    %edx,%eax
8mov    %eax,-0x8(%rbp)10mov    %eax,-0x8(%rbp)
9movl   $0x0,-0x4(%rbp)11movl   $0x0,-0x4(%rbp)
10mov    -0x4(%rbp),%eax12mov    -0x4(%rbp),%eax
11cmp    -0x14(%rbp),%eax13cmp    -0x14(%rbp),%eax
n12jge    aa <_Z21implementationChangedi+0x5d>n14jge    b1 <_Z21implementationChangedi+0x61>
13mov    -0x8(%rbp),%edx15mov    -0x8(%rbp),%eax
14mov    -0x4(%rbp),%eax16sub    -0x4(%rbp),%eax
15add    %edx,%eax
16movslq %eax,%rdx17movslq %eax,%rdx
n17imul   $0x78787879,%rdx,%rdxn18imul   $0xffffffff88888889,%rdx,%rdx
18shr    $0x20,%rdx19shr    $0x20,%rdx
nn20add    %eax,%edx
19sar    $0x3,%edx21sar    $0x3,%edx
20mov    %eax,%ecx22mov    %eax,%ecx
21sar    $0x1f,%ecx23sar    $0x1f,%ecx
22sub    %ecx,%edx24sub    %ecx,%edx
23mov    %edx,-0x8(%rbp)25mov    %edx,-0x8(%rbp)
24mov    -0x8(%rbp),%ecx26mov    -0x8(%rbp),%ecx
25mov    %ecx,%edx27mov    %ecx,%edx
26shl    $0x4,%edx28shl    $0x4,%edx
n27add    %ecx,%edxn29sub    %ecx,%edx
28sub    %edx,%eax30sub    %edx,%eax
29mov    %eax,-0x8(%rbp)31mov    %eax,-0x8(%rbp)
30addl   $0x1,-0x4(%rbp)32addl   $0x1,-0x4(%rbp)
t31jmp    6a <_Z21implementationChangedi+0x1d>t33jmp    71 <_Z21implementationChangedi+0x21>
34addl   $0x1,-0x8(%rbp)
32mov    -0x8(%rbp),%eax35mov    -0x8(%rbp),%eax
33pop    %rbp36pop    %rbp
34ret37ret
3538

Persisting symbol fIStay(double) : old size: 30 bytes, new size: 30 bytes, delta: 0 bytes

Old source: old/test2.cpp:21(/home/flo/Documents/elf_diff/tests/src/old/test2.cpp)
New source: new/test2.cpp:20(/home/flo/Documents/elf_diff/tests/src/new/test2.cpp)

Instructions unchanged

Disappeared Symbols

Disappeared symbol fIStayButDiffer(float) : size: 20 bytes

Source: old/test2.cpp:22(/home/flo/Documents/elf_diff/tests/src/old/test2.cpp)

endbr64
push   %rbp
mov    %rsp,%rbp
movss  %xmm0,-0x4(%rbp)
movss  -0x4(%rbp),%xmm0
pop    %rbp
ret

Disappeared symbol fIAmGone(int) : size: 16 bytes

Source: old/test2.cpp:20(/home/flo/Documents/elf_diff/tests/src/old/test2.cpp)

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

New Symbols

Appeared symbol fIStayButDiffer(char) : size: 19 bytes

Source: new/test2.cpp:21(/home/flo/Documents/elf_diff/tests/src/new/test2.cpp)

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

Appeared symbol fIAmNew(short) : size: 20 bytes

Source: new/test2.cpp:22(/home/flo/Documents/elf_diff/tests/src/new/test2.cpp)

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

Similar Symbols

Similar pair 0 : old size: 20 bytes, new size: 19 bytes, delta: -1 bytes, sig. sim.: 95.0 %, instr. sim.: 84.3 %

Old: fIStayButDiffer(float) [old/test2.cpp:22(/home/flo/Documents/elf_diff/tests/src/old/test2.cpp)]
New: fIStayButDiffer(char) [new/test2.cpp:21(/home/flo/Documents/elf_diff/tests/src/new/test2.cpp)]


Old
New
f1endbr64f1endbr64
2push   %rbp2push   %rbp
3mov    %rsp,%rbp3mov    %rsp,%rbp
tt4mov    %edi,%eax
4movss  %xmm0,-0x4(%rbp)5mov    %al,-0x4(%rbp)
5movss  -0x4(%rbp),%xmm06movzbl -0x4(%rbp),%eax
6pop    %rbp7pop    %rbp
7ret8ret
89

Similar pair 12 : old size: 16 bytes, new size: 20 bytes, delta: 4 bytes, sig. sim.: 60.9 %, instr. sim.: 89.7 %

Old: fIAmGone(int) [old/test2.cpp:20(/home/flo/Documents/elf_diff/tests/src/old/test2.cpp)]
New: fIAmNew(short) [new/test2.cpp:22(/home/flo/Documents/elf_diff/tests/src/new/test2.cpp)]


Old
New
f1endbr64f1endbr64
2push   %rbp2push   %rbp
3mov    %rsp,%rbp3mov    %rsp,%rbp
tt4mov    %edi,%eax
4mov    %edi,-0x4(%rbp)5mov    %ax,-0x4(%rbp)
5mov    -0x4(%rbp),%eax6movzwl -0x4(%rbp),%eax
6pop    %rbp7pop    %rbp
7ret8ret
89

Migrated Symbols

Migrated symbol g() : old size: 11 bytes, new size: 11 bytes, delta: 0 bytes

Old source: old/test2.cpp:32(/home/flo/Documents/elf_diff/tests/src/old/test2.cpp)
New source: new/test2.cpp:32(/home/flo/Documents/elf_diff/tests/src/new/test2.cpp)

Migrated symbol implementationChanged(int) : old size: 98 bytes, new size: 106 bytes, delta: 8 bytes

Old source: old/test2.cpp:68(/home/flo/Documents/elf_diff/tests/src/old/test2.cpp)
New source: new/test2.cpp:68(/home/flo/Documents/elf_diff/tests/src/new/test2.cpp)

Migrated symbol fIStay(double) : old size: 30 bytes, new size: 30 bytes, delta: 0 bytes

Old source: old/test2.cpp:21(/home/flo/Documents/elf_diff/tests/src/old/test2.cpp)
New source: new/test2.cpp:20(/home/flo/Documents/elf_diff/tests/src/new/test2.cpp)