The following commit has been merged in the master branch: commit c43ba8d76c43514206e467211295d8532944a61f Author: Raphael Hertzog <hert...@debian.org> Date: Sat Jun 20 21:45:48 2009 +0200
dpkg-gensymbols: add new “ignore-blacklist” tag Add new tag "ignore-blacklist" to force-include symbols which are normally blacklisted. This can be useful for libgcc to include symbols that the toolchain allows to be shared but that are often static (and hence are blacklisted for this reason). Closes: #533642 diff --git a/debian/changelog b/debian/changelog index 56d93a5..eb19faa 100644 --- a/debian/changelog +++ b/debian/changelog @@ -27,6 +27,10 @@ dpkg (1.15.3) UNRELEASED; urgency=low packages. Closes: #526251 * Assume an implicit version of "Base" for all unversioned symbols that are merged into a SymbolFile. Closes: #533181 + * Add new tag "ignore-blacklist" to force-include symbols which are + normally blacklisted. This can be useful for libgcc to include symbols + that the toolchain allows to be shared but that are often static (and + hence are blacklisted for this reason). Closes: #533642 [ Updated dpkg translations ] * Simplified Chinese (Deng Xiyue). Closes: #531387 diff --git a/man/dpkg-gensymbols.1 b/man/dpkg-gensymbols.1 index 0aaa88d..ba2b81e 100644 --- a/man/dpkg-gensymbols.1 +++ b/man/dpkg-gensymbols.1 @@ -149,6 +149,14 @@ second one anywhere except on armel. (arch=alpha amd64 ia64)a_64bit_specific_sym...@base 1.0 (arch=!armel)symbol_armel_does_not_h...@base 1.0 +.TP +.B ignore\-blacklist +dpkg\-gensymbols has an internal blacklist of symbols that should not +appear in symbols files as they are usually only side-effects of +implementation details of the toolchain. If for some reason, you really +want one of those symbols to be included in the symbols file, you should +tag the symbol with \fBignore\-blacklist\fP. It can be necessary for +some low level toolchain libraries like libgcc. .SS Using includes .P When the set of exported symbols differ between architectures, it may become diff --git a/scripts/Dpkg/Shlibs/SymbolFile.pm b/scripts/Dpkg/Shlibs/SymbolFile.pm index aa888d2..f885166 100644 --- a/scripts/Dpkg/Shlibs/SymbolFile.pm +++ b/scripts/Dpkg/Shlibs/SymbolFile.pm @@ -262,12 +262,13 @@ sub merge_symbols { my $soname = $object->{SONAME} || error(_g("Can't merge symbols from objects without SONAME.")); my %dynsyms; foreach my $sym ($object->get_exported_dynamic_symbols()) { - next if exists $blacklist{$sym->{name}}; - if ($sym->{version}) { - $dynsyms{$sym->{name} . '@' . $sym->{version}} = $sym; - } else { - $dynsyms{$sym->{name} . '@Base' } = $sym; - } + my $name = $sym->{name} . '@' . + ($sym->{version} ? $sym->{version} : "Base"); + my $symobj = $self->lookup_symbol($name, [ $soname ]); + if (exists $blacklist{$sym->{name}}) { + next unless (defined $symobj and $symobj->has_tag("ignore-blacklist")); + } + $dynsyms{$name} = $sym; } unless (exists $self->{objects}{$soname}) { -- dpkg's main repository -- To UNSUBSCRIBE, email to debian-dpkg-cvs-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org