From patchwork Tue Apr 21 06:35:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Matthias_M=C3=A4nnich?= X-Patchwork-Id: 39108 From: maennich@google.com (Matthias Maennich) Date: Tue, 21 Apr 2020 08:35:44 +0200 Subject: [PATCH v2 1/8] abg-dwarf-reader split: create abg-elf-helpers.{h, cc} and test case In-Reply-To: <20200421063551.222511-1-maennich@google.com> References: <20200420110846.218792-1-maennich@google.com> <20200421063551.222511-1-maennich@google.com> Message-ID: <20200421063551.222511-2-maennich@google.com> abg-elf-helpers.{h,cc} shall contain the ELF related parts of the abg-dwarf-reader. Create the stub files, an empty unit test and hook everything up in the make system. * src/Makefile.am: Add new source files abg-elf-helpers.{h,cc}. * src/abg-elf-helpers.cc: New source file. * src/abg-elf-helpers.h: New header file. * tests/.gitignore: Exclude runtestelfhelpers from being committed. * tests/Makefile.am: Add new test case runtestelfhelpers. * tests/test-elf-helpers.cc: New test source file. Reviewed-by: Giuliano Procida Signed-off-by: Matthias Maennich --- src/Makefile.am | 2 ++ src/abg-elf-helpers.cc | 34 ++++++++++++++++++++++++++++++++++ src/abg-elf-helpers.h | 37 +++++++++++++++++++++++++++++++++++++ tests/.gitignore | 1 + tests/Makefile.am | 6 +++++- tests/test-elf-helpers.cc | 30 ++++++++++++++++++++++++++++++ 6 files changed, 109 insertions(+), 1 deletion(-) create mode 100644 src/abg-elf-helpers.cc create mode 100644 src/abg-elf-helpers.h create mode 100644 tests/test-elf-helpers.cc diff --git a/src/Makefile.am b/src/Makefile.am index 1d0e2dcecdee..fafab853b520 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -39,6 +39,8 @@ abg-config.cc \ abg-ini.cc \ abg-workers.cc \ abg-tools-utils.cc \ +abg-elf-helpers.h \ +abg-elf-helpers.cc \ $(CXX11_SOURCES) libabigail_la_LIBADD = $(DEPS_LIBS) diff --git a/src/abg-elf-helpers.cc b/src/abg-elf-helpers.cc new file mode 100644 index 000000000000..e99fe4a5c306 --- /dev/null +++ b/src/abg-elf-helpers.cc @@ -0,0 +1,34 @@ +// -*- Mode: C++ -*- +// +// Copyright (C) 2020 Google, Inc. +// +// This file is part of the GNU Application Binary Interface Generic +// Analysis and Instrumentation Library (libabigail). This library is +// free software; you can redistribute it and/or modify it under the +// terms of the GNU Lesser General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) any +// later version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Lesser Public License for more details. + +// You should have received a copy of the GNU Lesser General Public +// License along with this program; see the file COPYING-LGPLV3. If +// not, see . + +/// @file +/// +/// This contains the definitions of the ELF utilities for the dwarf reader. + +#include "abg-elf-helpers.h" + +namespace abigail +{ + +namespace elf_helpers +{ + +} // end namespace elf_helpers +} // end namespace abigail diff --git a/src/abg-elf-helpers.h b/src/abg-elf-helpers.h new file mode 100644 index 000000000000..bffa46cc3c2d --- /dev/null +++ b/src/abg-elf-helpers.h @@ -0,0 +1,37 @@ +// -*- Mode: C++ -*- +// +// Copyright (C) 2020 Google, Inc. +// +// This file is part of the GNU Application Binary Interface Generic +// Analysis and Instrumentation Library (libabigail). This library is +// free software; you can redistribute it and/or modify it under the +// terms of the GNU Lesser General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) any +// later version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Lesser Public License for more details. + +// You should have received a copy of the GNU Lesser General Public +// License along with this program; see the file COPYING-LGPLV3. If +// not, see . + +/// @file +/// +/// This contains a set of ELF utilities used by the dwarf reader. + +#ifndef __ABG_ELF_HELPERS_H__ +#define __ABG_ELF_HELPERS_H__ + +namespace abigail +{ + +namespace elf_helpers +{ + +} // end namespace elf_helpers +} // end namespace abigail + +#endif // __ABG_ELF_HELPERS_H__ diff --git a/tests/.gitignore b/tests/.gitignore index f05e295db260..ebe7b9cc9e13 100644 --- a/tests/.gitignore +++ b/tests/.gitignore @@ -22,6 +22,7 @@ runtestdiffdwarfabixml runtestdifffilter runtestdiffpkg runtestdiffsuppr +runtestelfhelpers runtestini runtestkmiwhitelist runtestlookupsyms diff --git a/tests/Makefile.am b/tests/Makefile.am index 823e0db50c37..c1b187051377 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -46,6 +46,7 @@ runtestabidiffexit \ runtestini \ runtesttoolsutils \ runtestkmiwhitelist \ +runtestelfhelpers \ $(CXX11_TESTS) if ENABLE_RUNNING_TESTS_WITH_PY3 @@ -142,6 +143,9 @@ runtesttoolsutils_LDADD = libtestutils.la $(top_builddir)/src/libabigail.la runtestkmiwhitelist_SOURCES = test-kmi-whitelist.cc runtestkmiwhitelist_LDADD = libtestutils.la libcatch.la $(top_builddir)/src/libabigail.la +runtestelfhelpers_SOURCES = test-elf-helpers.cc +runtestelfhelpers_LDADD = libcatch.la $(top_builddir)/src/libabigail.la + runtestsvg_SOURCES=test-svg.cc runtestsvg_LDADD=$(top_builddir)/src/libabigail.la @@ -172,7 +176,7 @@ runtestfedabipkgdiffpy3.sh$(EXEEXT): runtestdefaultsupprspy3_sh_SOURCES = runtestdefaultsupprspy3.sh$(EXEEXT): -AM_CPPFLAGS=-I${abs_top_srcdir}/include \ +AM_CPPFLAGS=-I${abs_top_srcdir}/include -I${abs_top_srcdir}/src \ -I${abs_top_builddir}/include -I${abs_top_srcdir}/tools -fPIC clean-local: clean-local-check diff --git a/tests/test-elf-helpers.cc b/tests/test-elf-helpers.cc new file mode 100644 index 000000000000..1b36ee2f122a --- /dev/null +++ b/tests/test-elf-helpers.cc @@ -0,0 +1,30 @@ +// -*- Mode: C++ -*- +// +// Copyright (C) 2020 Google, Inc. +// +// This file is part of the GNU Application Binary Interface Generic +// Analysis and Instrumentation Library (libabigail). This library is +// free software; you can redistribute it and/or modify it under the +// terms of the GNU Lesser General Public License as published by the +// Free Software Foundation; either version 3, or (at your option) any +// later version. + +// This library is distributed in the hope that it will be useful, but +// WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +// General Lesser Public License for more details. + +// You should have received a copy of the GNU Lesser General Public +// License along with this program; see the file COPYING-LGPLV3. If +// not, see . + +// Author: Matthias Maennich + +/// @file +/// +/// This program tests libabigail's ELF helpers. + +#include "lib/catch.hpp" + +#include "abg-elf-helpers.h" +