chromium/tools/android/elf_compression/test/library_opener.cc

// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// This binary opens the provided library and calls get_sum method from it.
//
// It is used solely for testing purposes to validate that the library is
// still working after applying the compression_script on it.

#include <dlfcn.h>
#include <iostream>

using TestFunction = int (*)();

int main(int argc, char** argv) {
  if (argc < 2) {
    std::cerr << "Library name not provided" << std::endl;
    return 1;
  }
  char* name = argv[1];
  void* handle = dlopen(name, RTLD_NOW);
  if (handle == nullptr) {
    std::cerr << dlerror() << std::endl;
    return 1;
  }

  TestFunction get_sum =
      reinterpret_cast<TestFunction>(dlsym(handle, "GetSum"));
  if (get_sum == nullptr) {
    std::cerr << "GetSum method not found" << std::endl;
    return 1;
  }

  std::cout << get_sum() << std::endl;
  return 0;
}