public inbox for libabigail@sourceware.org
 help / color / mirror / Atom feed
* [PATCH 0/2, v2] Make front-ends be first class in the libabigail framework
@ 2022-11-16 17:19 Dodji Seketeli
  2022-11-16 17:28 ` [PATCH 1/2] Use environment by reference Dodji Seketeli
                   ` (2 more replies)
  0 siblings, 3 replies; 6+ messages in thread
From: Dodji Seketeli @ 2022-11-16 17:19 UTC (permalink / raw)
  To: gprocida, woodard, guillermo.e.martinez, jose.marchesi; +Cc: dodji, libabigail

Hello,

Following the feedback after the v1, here is an updated version of this
change set.

The main topic of this update was to split the initial patch in two
patches.

The first one is an introductory patch.  It makes the internal
representation access the environment by reference, as opposed to by
pointer like it was previously.  The cool thing about that change is
that the environment can now by instantiated on the stack and passed by
reference to the functions that create the DWARF and CTF readers.  The
drawback is that it's a lot of (almost) mechanical changes.

The second patch is the real meat of the change, which is twofold.

First, it's to improve the integration and maintenance of the new CTF
front-end in the libabigail framework.  Today, the code of the CTF
front-end is guarded by #ifdef WITH_CTF pre-processor macro
invocations.  Ideally, the amount code guarded by that macro should be
minimal (and ideally be zero in the future), especially in the
libabigail tools (abidw, abidiff, abipkgdiff, etc) that use the
library.

Second, it's to allow and ease the inclusion new front-ends in the
future, for instance, to support other ELF-based debug info formats.

The idea is to provide new abstractions in the libabigail framework to
represent a front-end and to share code between similar front-ends.
For instance, front-ends that are ELF-based (DWARF/CTF) would share
the code to access generic ELF properties.

Tools would thus be better equipped to analyze a binary and depending
on its kind, instantiate the appropriate front-end for its ABI
analysis and use it accordingly.

This thread contains the change proposal to implement this "feature".

In any case, the change can be access from the Git repository in the
"front-end" branch, which can be browsed from
https://sourceware.org/git/?p=libabigail.git;a=shortlog;h=refs/heads/users/dodji/front-end

Please, find the summary log of the change below.

Dodji Seketeli (2):
  Use environment by reference.
  Make Front Ends first class citizens

 include/Makefile.am                        |    4 +-
 include/abg-corpus.h                       |   25 +-
 include/abg-ctf-reader.h                   |   35 +-
 include/abg-dwarf-reader.h                 |  134 +-
 include/abg-elf-based-reader.h             |   63 +
 include/abg-elf-reader-common.h            |   70 -
 include/abg-elf-reader.h                   |  161 +
 include/abg-fe-iface.h                     |  166 +
 include/abg-fwd.h                          |    7 +-
 include/abg-ir.h                           |  154 +-
 include/abg-reader.h                       |   62 +-
 include/abg-suppression.h                  |   67 +
 include/abg-tools-utils.h                  |   13 +-
 include/abg-writer.h                       |    2 +-
 src/Makefile.am                            |    4 +-
 src/abg-comparison.cc                      |   67 +-
 src/abg-corpus-priv.h                      |   18 +-
 src/abg-corpus.cc                          |   73 +-
 src/abg-ctf-reader.cc                      | 1546 ++++----
 src/abg-dwarf-reader.cc                    | 3896 +++++++-------------
 src/abg-elf-based-reader.cc                |  102 +
 src/abg-elf-helpers.cc                     |  183 +-
 src/abg-elf-helpers.h                      |   38 +
 src/abg-elf-reader-common.cc               |   90 -
 src/abg-elf-reader.cc                      |  954 +++++
 src/abg-fe-iface.cc                        |  411 +++
 src/abg-ir-priv.h                          |   57 +-
 src/abg-ir.cc                              |  845 ++---
 src/abg-reader.cc                          | 1974 +++++-----
 src/abg-suppression-priv.h                 |  179 -
 src/abg-suppression.cc                     |  479 ++-
 src/abg-symtab-reader.cc                   |    5 +-
 src/abg-symtab-reader.h                    |    6 +-
 src/abg-tools-utils.cc                     |  163 +-
 src/abg-writer.cc                          |   39 +-
 tests/data/test-read-ctf/test0.abi         |    3 +
 tests/data/test-read-ctf/test0.hash.abi    |    3 +
 tests/data/test-read-ctf/test1.so.abi      |    3 +
 tests/data/test-read-ctf/test1.so.hash.abi |    3 +
 tests/data/test-read-ctf/test2.so.abi      |    3 +
 tests/data/test-read-ctf/test2.so.hash.abi |    3 +
 tests/data/test-read-ctf/test3.so.abi      |    5 +-
 tests/data/test-read-ctf/test3.so.hash.abi |    5 +-
 tests/data/test-read-ctf/test4.so.abi      |    3 +
 tests/data/test-read-ctf/test4.so.hash.abi |    3 +
 tests/print-diff-tree.cc                   |   21 +-
 tests/test-abidiff.cc                      |   23 +-
 tests/test-diff-dwarf.cc                   |   25 +-
 tests/test-ir-walker.cc                    |   13 +-
 tests/test-read-ctf.cc                     |   21 +-
 tests/test-read-dwarf.cc                   |    6 +-
 tests/test-read-write.cc                   |    3 -
 tests/test-symtab.cc                       |   41 +-
 tools/Makefile.am                          |   13 +-
 tools/abicompat.cc                         |   70 +-
 tools/abidiff.cc                           |  228 +-
 tools/abidw.cc                             |  177 +-
 tools/abilint.cc                           |  127 +-
 tools/abipkgdiff.cc                        |  218 +-
 tools/abisym.cc                            |    7 +-
 tools/kmidiff.cc                           |   15 +-
 61 files changed, 6497 insertions(+), 6637 deletions(-)
 create mode 100644 include/abg-elf-based-reader.h
 delete mode 100644 include/abg-elf-reader-common.h
 create mode 100644 include/abg-elf-reader.h
 create mode 100644 include/abg-fe-iface.h
 create mode 100644 src/abg-elf-based-reader.cc
 delete mode 100644 src/abg-elf-reader-common.cc
 create mode 100644 src/abg-elf-reader.cc
 create mode 100644 src/abg-fe-iface.cc

-- 
2.38.0


-- 
		Dodji


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-11-18 17:19 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-16 17:19 [PATCH 0/2, v2] Make front-ends be first class in the libabigail framework Dodji Seketeli
2022-11-16 17:28 ` [PATCH 1/2] Use environment by reference Dodji Seketeli
2022-11-17 14:17   ` Giuliano Procida
2022-11-17 15:35     ` Dodji Seketeli
2022-11-16 17:29 ` [PATCH 2/2] Make Front Ends first class citizens Dodji Seketeli
2022-11-18 17:19 ` [PATCH 0/2, v2] Make front-ends be first class in the libabigail framework Dodji Seketeli

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).