]> sourceware.org Git - libabigail.git/commit
symtab-reader: Remove an over-agressive assertion
authorDodji Seketeli <dodji@redhat.com>
Mon, 7 Feb 2022 09:42:32 +0000 (10:42 +0100)
committerDodji Seketeli <dodji@redhat.com>
Mon, 7 Feb 2022 16:47:32 +0000 (17:47 +0100)
commit07f494aa460f86622a8796e072aff9ec4c6e39fb
treea81cc16f8974d8841e092da977dd5fb9156f75af
parent11987989859520541d785c0b3129b562b6672d4c
symtab-reader: Remove an over-agressive assertion

In symtab::load, the symtab reader walks the symbol table and records
each relation "symbol <-> address".
So, the relation "foo <-> address-of-foo" is going to be recorded.
The relation "foo.cfi <-> address-of-foo.cfi" is going to be recorded
as well.

But then, because the symbol foo.cfi has a special meaning, in the
realm of "control flow integrity", the relation "foo.cfi <->
address-of-foo.cfi" (as well as all the *.cfi <-> address-of*.cfi
relations) is going to be recorded (again but) in a particular way by
calling symtab::add_alternative_address_lookups.

The problem is that in, symtab::add_alternative_address_lookups there
is an assert that (wrongly) assumes that the relation foo.cfi <->
address-of-foo.cfi is being seen for the first time.  This is wrong
because the loop in symtab::load that records all the "symbol <->
address" relations has seen and recorded this foo.cfi <->
address-of-foo.cfi relation once already.

This patch removes that assert so that the kernel referred to in the bug
report of PR26646, as mentioned in
https://sourceware.org/bugzilla/show_bug.cgi?id=26646#c5, can be
processed by abidw without crashing.

* src/abg-symtab-reader.cc
(symtab::add_alternative_address_lookups): Remove over-aggressive
assert.

Signed-off-by: Dodji Seketeli <dodji@redhat.com>
Reviewed-by: Giuliano Procida <gprocida@google.com>
src/abg-symtab-reader.cc
This page took 0.031877 seconds and 5 git commands to generate.