]> sourceware.org Git - libabigail.git/commit
Consider default symbol versions when computing added/removed fns/vars
authorDodji Seketeli <dodji@redhat.com>
Fri, 24 Jul 2015 12:04:11 +0000 (14:04 +0200)
committerDodji Seketeli <dodji@redhat.com>
Fri, 24 Jul 2015 12:04:11 +0000 (14:04 +0200)
commite5cf9d1f600f3314ae915a6ba3e60529ba647589
tree0e69c55b157716ca1bd9f46ec4fc340958f18ab8
parentbf6b1924c4b45ece0b8585b698747258de79a011
Consider default symbol versions when computing added/removed fns/vars

When computing the set of added function or variable symbols, if a
symbol S with no version symbol was present in a given corpus and that
symbol gained a *DEFAULT* version V in the second corpus, we should
not consider that a new symbol S was added (and that the former S was
removed) because:

  1/ S was already present in the first corpus
  2/ applications linked to the first corpus and that were using S
  (with no version) there, will automatically use the S with version V
  in the second corpus, without needing any re-linking; the
  power of symbol versioning!

Rather, it's just that S gained a default symbol version.

This patch implements that.

* include/abg-corpus.h (corpus::{lookup_function_symbol,
lookup_variable_symbol}): Take a elf_symbol::version object,
rather than a string representing the version.  Add an overload
that takes an elf_symbol.
* src/abg-corpus.cc (find_symbol_by_version): New static function.
(corpus::{lookup_function_symbol, lookup_variable_symbol}): Take a
elf_symbol::version object, rather than a string representing the
version.  Add an overload that takes an elf_symbol.  If the looked
up symbol has no version and if the corpus contains a symbol with
the same name and with a default version, then return that latter
symbol if the corpus doesn't contain a symbol with the same name
and empty version.
* src/abg-comparison.cc
(class_diff::ensure_lookup_tables_populated): Adjust.
(corpus_diff::priv::ensure_lookup_tables_populated): Before
deciding that a symbol has been added, if the symbol has a default
version, make sure no symbol with the same name and without
version was present in the former corpus.  Similarly, before
deciding that a symbol has been removed, if the symbol has no
version, make sure the latter corpus has no symbol with the same
name and with a default version.
* tests/data/test-diff-dwarf/test12-report.txt: Adjust.  The
function should not be considered as added, because its symbol
(and version) was already present in the former DSO.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>
include/abg-corpus.h
src/abg-comparison.cc
src/abg-corpus.cc
tests/data/test-diff-dwarf/test12-report.txt
This page took 0.039985 seconds and 5 git commands to generate.