Files
third_party_elfutils/README_OpenHarmony.md
T
zhanghaibo 2b01d42bd6 update README_OpenHarmony.md
Signed-off-by: zhanghaibo <zhanghaibo0@huawei.com>
2023-03-03 09:23:38 +08:00

2.9 KiB
Raw Blame History

elfutils

仓库包含第三方开源软件elfutils,elfutils是一个用于读取、创建和修改ELF二进制文件,查找和处理GNU/Linux上进程和核心文件的DWARF调试数据、符号、线程状态和堆栈跟踪的工具和库的集合。libabigail软件依赖了elfutils。

目录结构

backends/      不同平台的后端实现
doc/           文档
lib/           公共库源码
libasm/        asm相关库源码
libcpu/        cpu相关库源码
libdw/         dw相关库源码
libdwelf/      dwelf相关库源码
libdwfl/       dwfl相关库源码
libebl/        ebl相关库源码
libelf/        elf相关库源码
src/           源文件
tests/         测试目录
COPYING        证书文件
COPYING-GPLV2  证书文件
COPYING-LGPLV3 证书文件
README         README说明

OpenHarmony如何使用elfutils

OpenHarmony上elfutils是用作libabigail的依赖软件,libabigail在生成ABI特征文件的时候,需要通过elfutils读取二进制库内的DWARF调试数据。

OpenHarmony如何集成elfutils

libabigail的编译依赖了elfutilselfutils被集成到libabigail工具中。

1.elfutils的编译

elfutils的编译入口在其根目录下的BUILD.gn中。简单示意如下:

# Build libelf
ohos_static_library("libelf_static") {
  configs = [ ":elfutils_defaults" ]

  sources = sources_libelf
  include_dirs = [
    "//third_party/elfutils",
    "//third_party/elfutils/lib",
    "//third_party/elfutils/libelf",
  ]
  deps = [ "//third_party/zlib:libz" ]

  subsystem_name = "thirdparty"
  part_name = "elfutils"
}

# Build libdw
ohos_static_library("libdw_static") {
  configs = [ ":elfutils_defaults" ]

  sources = sources_backends
  sources += sources_libcpu
  sources += sources_libdw
  sources += sources_libdwelf
  sources += sources_libdwfl
  sources += sources_libebl

  include_dirs = [
    "//third_party/elfutils",
    "//third_party/elfutils/lib",
    "//third_party/elfutils/libasm",
    "//third_party/elfutils/libelf",
    "//third_party/elfutils/libcpu",
    "//third_party/elfutils/libdw",
    "//third_party/elfutils/libdwelf",
    "//third_party/elfutils/libdwfl",
    "//third_party/elfutils/libebl",
  ]
  deps = [ ":libelf_static" ]

  subsystem_name = "thirdparty"
  part_name = "elfutils"
}

2.使用elfutils

libabigail的编译依赖了elfutils。简单示意如下:

ohos_static_library("libabigail_static") {
  configs = [ "//third_party/libabigail:libabigail_defaults" ]

  sources = [
    ......
  ]

  include_dirs = [
    ......
  ]

  external_deps = [
    "//third_party/elfutils:libdw_static",
  ]

  subsystem_name = "thirdparty"
  part_name = "libabigail"
}

elfutils相关内容

elfutils官网

License

  • LGPL V3.0

  • GPL V2.0

  • GPL V3.0

风险提示

elfutils是LGPLV3和GPLV3协议类型的三方开源软件,请谨慎使用,使用时须履行相应的开源义务。