Don't ignore options when diffing translation units (.bi files).

There was an inconsistency in the way the diff context was used for
different file types. This change eliminates this and so .bi files now
have all the command line options applied to their diffs.

	* tests/data/Makefile.am: Add test case files.
	* tests/data/test-abidiff-exit/test-loc-*: New test cases.
	* tests/test-abidiff-exit.cc (in_out_specs): Add new test cases.
	* tools/abidiff.cc (main): Use populated ctxt for translation unit
	diff.

Signed-off-by: Giuliano Procida <gprocida@google.com>
Signed-off-by: Dodji Seketeli <dodji@redhat.com>
This commit is contained in:
Giuliano Procida 2020-02-03 12:04:39 +00:00 committed by Dodji Seketeli
parent dbed2ad67d
commit 95535d8f6f
7 changed files with 73 additions and 2 deletions

View File

@ -103,6 +103,10 @@ test-abidiff-exit/test2-filtered-removed-fns-v1.c \
test-abidiff-exit/test2-filtered-removed-fns-v0.o \
test-abidiff-exit/test2-filtered-removed-fns-v1.o \
test-abidiff-exit/test2-filtered-removed-fns.abignore \
test-abidiff-exit/test-loc-v0.bi \
test-abidiff-exit/test-loc-v1.bi \
test-abidiff-exit/test-loc-with-locs-report.txt \
test-abidiff-exit/test-loc-without-locs-report.txt \
\
test-diff-dwarf/test0-v0.cc \
test-diff-dwarf/test0-v0.o \

View File

@ -0,0 +1,13 @@
<abi-corpus path='test-loc-v0.o' architecture='elf-amd-x86_64'>
<elf-function-symbols>
<elf-symbol name='x' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
</elf-function-symbols>
<abi-instr version='1.0' address-size='64' path='test-loc-v0.c' comp-dir-path='/tmp' language='LANG_C99'>
<type-decl name='unsigned char' size-in-bits='8' id='type-id-1'/>
<type-decl name='void' id='type-id-2'/>
<function-decl name='x' mangled-name='x' filepath='test-loc-v0.c' line='1' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='x'>
<parameter type-id='type-id-1' name='y' filepath='test-loc-v0.c' line='1' column='1'/>
<return type-id='type-id-2'/>
</function-decl>
</abi-instr>
</abi-corpus>

View File

@ -0,0 +1,13 @@
<abi-corpus path='test-loc-v1.o' architecture='elf-amd-x86_64'>
<elf-function-symbols>
<elf-symbol name='x' type='func-type' binding='global-binding' visibility='default-visibility' is-defined='yes'/>
</elf-function-symbols>
<abi-instr version='1.0' address-size='64' path='test-loc-v1.c' comp-dir-path='/tmp' language='LANG_C99'>
<type-decl name='signed char' size-in-bits='8' id='type-id-1'/>
<type-decl name='void' id='type-id-2'/>
<function-decl name='x' mangled-name='x' filepath='test-loc-v1.c' line='1' column='1' visibility='default' binding='global' size-in-bits='64' elf-symbol-id='x'>
<parameter type-id='type-id-1' name='y' filepath='test-loc-v1.c' line='1' column='1'/>
<return type-id='type-id-2'/>
</function-decl>
</abi-instr>
</abi-corpus>

View File

@ -0,0 +1,12 @@
Functions changes summary: 0 Removed, 1 Changed, 0 Added function
Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
1 function with some indirect sub-type change:
[C]'function void x(unsigned char)' at test-loc-v1.c:1:1 has some indirect sub-type changes:
parameter 1 of type 'unsigned char' changed:
type name changed from 'unsigned char' to 'signed char'
type size hasn't changed

View File

@ -0,0 +1,12 @@
Functions changes summary: 0 Removed, 1 Changed, 0 Added function
Variables changes summary: 0 Removed, 0 Changed, 0 Added variable
1 function with some indirect sub-type change:
[C]'function void x(unsigned char)' has some indirect sub-type changes:
parameter 1 of type 'unsigned char' changed:
type name changed from 'unsigned char' to 'signed char'
type size hasn't changed

View File

@ -93,6 +93,24 @@ InOutSpec in_out_specs[] =
"data/test-abidiff-exit/test2-filtered-removed-fns-report1.txt",
"output/test-abidiff-exit/test2-filtered-removed-fns-report1.txt"
},
{
"data/test-abidiff-exit/test-loc-v0.bi",
"data/test-abidiff-exit/test-loc-v1.bi",
"",
"",
abigail::tools_utils::ABIDIFF_ABI_CHANGE,
"data/test-abidiff-exit/test-loc-with-locs-report.txt",
"output/test-abidiff-exit/test-loc-with-locs-report.txt"
},
{
"data/test-abidiff-exit/test-loc-v0.bi",
"data/test-abidiff-exit/test-loc-v1.bi",
"",
"--no-show-locs",
abigail::tools_utils::ABIDIFF_ABI_CHANGE,
"data/test-abidiff-exit/test-loc-without-locs-report.txt",
"output/test-abidiff-exit/test-loc-without-locs-report.txt"
},
{0, 0, 0 ,0, abigail::tools_utils::ABIDIFF_OK, 0, 0}
};

View File

@ -1243,8 +1243,7 @@ main(int argc, char* argv[])
if (t1)
{
diff_context_sptr diff_ctxt(new diff_context);
translation_unit_diff_sptr diff = compute_diff(t1, t2, diff_ctxt);
translation_unit_diff_sptr diff = compute_diff(t1, t2, ctxt);
if (diff->has_changes())
diff->report(cout);
}