From 7b7bdb760e34dbe3f692423a237a6201a8f2530d Mon Sep 17 00:00:00 2001 From: Logan Chien Date: Thu, 9 Feb 2017 11:29:17 +0800 Subject: [PATCH 1/3] vtable-dumper: Rename to vndk-vtable-dumper. This commit renames llvm-figure-out-vtables to vndk-vtable-dumper. Test: ./tests/test_vndk_vtable_dumper.py Change-Id: I614a1fb0e8ddc89b32a8245322b0f198a363f6a0 --- vndk/tools/Android.bp | 2 +- vndk/tools/abides/Android.bp | 19 ----------------- .../vtable => vtable-dumper}/Android.bp | 21 +++++++------------ .../elf_handling.cpp} | 2 +- .../elf_handling.h} | 1 - .../tests}/expected/arm/libtest.so.txt | 0 .../tests}/expected/arm64/libtest.so.txt | 0 .../tests}/expected/mips/libtest.so.txt | 0 .../tests}/expected/mips64/libtest.so.txt | 0 .../tests}/expected/x86/libtest.so.txt | 0 .../tests}/expected/x86_64/libtest.so.txt | 0 .../test => vtable-dumper/tests}/test1.cpp | 0 .../tests/test_vndk_vtable_dumper.py} | 6 +++--- .../vndk_vtable_dumper.cpp} | 4 ++-- 14 files changed, 14 insertions(+), 41 deletions(-) delete mode 100644 vndk/tools/abides/Android.bp rename vndk/tools/{abides/vtable => vtable-dumper}/Android.bp (80%) rename vndk/tools/{abides/vtable/llvm_elf_handling.cpp => vtable-dumper/elf_handling.cpp} (99%) rename vndk/tools/{abides/vtable/llvm_elf_handling.h => vtable-dumper/elf_handling.h} (99%) rename vndk/tools/{abides/vtable/test => vtable-dumper/tests}/expected/arm/libtest.so.txt (100%) rename vndk/tools/{abides/vtable/test => vtable-dumper/tests}/expected/arm64/libtest.so.txt (100%) rename vndk/tools/{abides/vtable/test => vtable-dumper/tests}/expected/mips/libtest.so.txt (100%) rename vndk/tools/{abides/vtable/test => vtable-dumper/tests}/expected/mips64/libtest.so.txt (100%) rename vndk/tools/{abides/vtable/test => vtable-dumper/tests}/expected/x86/libtest.so.txt (100%) rename vndk/tools/{abides/vtable/test => vtable-dumper/tests}/expected/x86_64/libtest.so.txt (100%) rename vndk/tools/{abides/vtable/test => vtable-dumper/tests}/test1.cpp (100%) rename vndk/tools/{abides/vtable/test/test_vtable.py => vtable-dumper/tests/test_vndk_vtable_dumper.py} (98%) rename vndk/tools/{abides/vtable/llvm_vtable_dump.cpp => vtable-dumper/vndk_vtable_dumper.cpp} (94%) diff --git a/vndk/tools/Android.bp b/vndk/tools/Android.bp index d008503fa..9ba43917d 100644 --- a/vndk/tools/Android.bp +++ b/vndk/tools/Android.bp @@ -15,6 +15,6 @@ // subdirs = [ - "abides", "header-checker", + "vtable-dumper", ] diff --git a/vndk/tools/abides/Android.bp b/vndk/tools/abides/Android.bp deleted file mode 100644 index cf4c24f72..000000000 --- a/vndk/tools/abides/Android.bp +++ /dev/null @@ -1,19 +0,0 @@ -// -// Copyright (C) 2017 The Android Open Source Project -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. -// - -subdirs = [ - "vtable", -] diff --git a/vndk/tools/abides/vtable/Android.bp b/vndk/tools/vtable-dumper/Android.bp similarity index 80% rename from vndk/tools/abides/vtable/Android.bp rename to vndk/tools/vtable-dumper/Android.bp index 6e0f7956b..dbf052465 100644 --- a/vndk/tools/abides/vtable/Android.bp +++ b/vndk/tools/vtable-dumper/Android.bp @@ -14,15 +14,16 @@ // limitations under the License. // -cc_defaults { - name: "vndk-vtable-defaults", +cc_binary_host { + name: "vndk-vtable-dumper", defaults: [ "clang-defaults", ], - shared_libs: [ - "libLLVM", + srcs: [ + "elf_handling.cpp", + "vndk_vtable_dumper.cpp", ], cflags: [ @@ -30,16 +31,8 @@ cc_defaults { "-Werror", "-std=c++11", ], -} -cc_binary_host { - name: "llvm-figure-out-vtables", - - defaults: [ - "vndk-vtable-defaults" + shared_libs: [ + "libLLVM", ], - - srcs: [ - "llvm_elf_handling.cpp", - "llvm_vtable_dump.cpp"], } diff --git a/vndk/tools/abides/vtable/llvm_elf_handling.cpp b/vndk/tools/vtable-dumper/elf_handling.cpp similarity index 99% rename from vndk/tools/abides/vtable/llvm_elf_handling.cpp rename to vndk/tools/vtable-dumper/elf_handling.cpp index e7adfc3ed..635b09edd 100644 --- a/vndk/tools/abides/vtable/llvm_elf_handling.cpp +++ b/vndk/tools/vtable-dumper/elf_handling.cpp @@ -14,7 +14,7 @@ * limitations under the License. */ -#include "llvm_elf_handling.h" +#include "elf_handling.h" #include diff --git a/vndk/tools/abides/vtable/llvm_elf_handling.h b/vndk/tools/vtable-dumper/elf_handling.h similarity index 99% rename from vndk/tools/abides/vtable/llvm_elf_handling.h rename to vndk/tools/vtable-dumper/elf_handling.h index 25ee6cafa..2237c2165 100644 --- a/vndk/tools/abides/vtable/llvm_elf_handling.h +++ b/vndk/tools/vtable-dumper/elf_handling.h @@ -167,4 +167,3 @@ static inline T UnWrap(llvm::Expected ValueOrError) { #endif // ELF_HANDLING_H_ - diff --git a/vndk/tools/abides/vtable/test/expected/arm/libtest.so.txt b/vndk/tools/vtable-dumper/tests/expected/arm/libtest.so.txt similarity index 100% rename from vndk/tools/abides/vtable/test/expected/arm/libtest.so.txt rename to vndk/tools/vtable-dumper/tests/expected/arm/libtest.so.txt diff --git a/vndk/tools/abides/vtable/test/expected/arm64/libtest.so.txt b/vndk/tools/vtable-dumper/tests/expected/arm64/libtest.so.txt similarity index 100% rename from vndk/tools/abides/vtable/test/expected/arm64/libtest.so.txt rename to vndk/tools/vtable-dumper/tests/expected/arm64/libtest.so.txt diff --git a/vndk/tools/abides/vtable/test/expected/mips/libtest.so.txt b/vndk/tools/vtable-dumper/tests/expected/mips/libtest.so.txt similarity index 100% rename from vndk/tools/abides/vtable/test/expected/mips/libtest.so.txt rename to vndk/tools/vtable-dumper/tests/expected/mips/libtest.so.txt diff --git a/vndk/tools/abides/vtable/test/expected/mips64/libtest.so.txt b/vndk/tools/vtable-dumper/tests/expected/mips64/libtest.so.txt similarity index 100% rename from vndk/tools/abides/vtable/test/expected/mips64/libtest.so.txt rename to vndk/tools/vtable-dumper/tests/expected/mips64/libtest.so.txt diff --git a/vndk/tools/abides/vtable/test/expected/x86/libtest.so.txt b/vndk/tools/vtable-dumper/tests/expected/x86/libtest.so.txt similarity index 100% rename from vndk/tools/abides/vtable/test/expected/x86/libtest.so.txt rename to vndk/tools/vtable-dumper/tests/expected/x86/libtest.so.txt diff --git a/vndk/tools/abides/vtable/test/expected/x86_64/libtest.so.txt b/vndk/tools/vtable-dumper/tests/expected/x86_64/libtest.so.txt similarity index 100% rename from vndk/tools/abides/vtable/test/expected/x86_64/libtest.so.txt rename to vndk/tools/vtable-dumper/tests/expected/x86_64/libtest.so.txt diff --git a/vndk/tools/abides/vtable/test/test1.cpp b/vndk/tools/vtable-dumper/tests/test1.cpp similarity index 100% rename from vndk/tools/abides/vtable/test/test1.cpp rename to vndk/tools/vtable-dumper/tests/test1.cpp diff --git a/vndk/tools/abides/vtable/test/test_vtable.py b/vndk/tools/vtable-dumper/tests/test_vndk_vtable_dumper.py similarity index 98% rename from vndk/tools/abides/vtable/test/test_vtable.py rename to vndk/tools/vtable-dumper/tests/test_vndk_vtable_dumper.py index 048e8fac4..37848ee44 100755 --- a/vndk/tools/abides/vtable/test/test_vtable.py +++ b/vndk/tools/vtable-dumper/tests/test_vndk_vtable_dumper.py @@ -28,7 +28,7 @@ NDK_VERSION = 'r11' API_LEVEL = 'android-24' SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) -VNDK_VTABLE_DUMP = os.path.join('llvm-figure-out-vtables') +VNDK_VTABLE_DUMPER = 'vndk-vtable-dumper' def get_dirnames(path, n): """Get directory, n directories before path""" @@ -77,7 +77,7 @@ def run_output(cmd, verbose=False): def run_vtable_dump(path, verbose=False): """Run vndk vtable dumper""" - return run_output([VNDK_VTABLE_DUMP, path], verbose) + return run_output([VNDK_VTABLE_DUMPER, path], verbose) class Target(object): @@ -235,7 +235,7 @@ def main(): if args.android_build_top: android_build_top = args.android_build_top else: - android_build_top = get_dirnames(SCRIPT_DIR, 6) + android_build_top = get_dirnames(SCRIPT_DIR, 5) # Find expected output directory. if args.expected_dir: diff --git a/vndk/tools/abides/vtable/llvm_vtable_dump.cpp b/vndk/tools/vtable-dumper/vndk_vtable_dumper.cpp similarity index 94% rename from vndk/tools/abides/vtable/llvm_vtable_dump.cpp rename to vndk/tools/vtable-dumper/vndk_vtable_dumper.cpp index fcbf79386..68623e48f 100644 --- a/vndk/tools/abides/vtable/llvm_vtable_dump.cpp +++ b/vndk/tools/vtable-dumper/vndk_vtable_dumper.cpp @@ -14,7 +14,7 @@ * limitations under the License. */ -#include "llvm_elf_handling.h" +#include "elf_handling.h" using llvm::Expected; using llvm::StringRef; @@ -26,7 +26,7 @@ using llvm::outs; int main (int argc, char **argv) { if (argc != 2) { - outs() << "usage: figure-out-vtables path \n"; + outs() << "usage: vndk-vtable-dumper path \n"; return 1; } Expected> Binary = From 698178012ca44217d4def611db3ceebec67d9411 Mon Sep 17 00:00:00 2001 From: Logan Chien Date: Thu, 9 Feb 2017 14:39:10 +0800 Subject: [PATCH 2/3] vtable-dumper: Use command line library. This commit uses the command line library to parse the command line options passed to vndk-vtable-dumper. Test: ./tests/test_vndk_vtable_dumper.py Change-Id: I9c4ff49a541f330173a2264d8b9124e0ed0ad99d --- .../vtable-dumper/vndk_vtable_dumper.cpp | 50 ++++++++++++++++--- 1 file changed, 43 insertions(+), 7 deletions(-) diff --git a/vndk/tools/vtable-dumper/vndk_vtable_dumper.cpp b/vndk/tools/vtable-dumper/vndk_vtable_dumper.cpp index 68623e48f..2ce2b161e 100644 --- a/vndk/tools/vtable-dumper/vndk_vtable_dumper.cpp +++ b/vndk/tools/vtable-dumper/vndk_vtable_dumper.cpp @@ -16,21 +16,57 @@ #include "elf_handling.h" +#include + using llvm::Expected; -using llvm::StringRef; +using llvm::StringMapEntry; +using llvm::cl::Hidden; +using llvm::cl::Option; +using llvm::cl::OptionCategory; +using llvm::cl::ParseCommandLineOptions; +using llvm::cl::Positional; +using llvm::cl::Required; +using llvm::cl::SetVersionPrinter; +using llvm::cl::cat; +using llvm::cl::desc; +using llvm::cl::getRegisteredOptions; +using llvm::cl::opt; using llvm::dyn_cast; using llvm::object::ObjectFile; using llvm::object::OwningBinary; using llvm::outs; -int main (int argc, char **argv) -{ - if (argc != 2) { - outs() << "usage: vndk-vtable-dumper path \n"; - return 1; +OptionCategory VTableDumperCategory("vndk-vtable-dumper options"); + +opt FilePath( + Positional, Required, cat(VTableDumperCategory), + desc("shared_library.so")); + +static void HideIrrelevantCommandLineOptions() { + for (StringMapEntry