Как санировать разделяемую библиотеку в AOSP - PullRequest
0 голосов
/ 03 апреля 2020

Мой HAL является общей библиотекой. Я хочу выполнить очистку адреса только для общей библиотеки. Я добавил следующие строки в файл (Android .mk), где мы строим HAL как общую библиотеку.

  1. LOCAL_SANITIZE: = адрес
  2. LOCAL_MODULE_RELATIVE_PATH: = asan

Затем я получил сообщение об ошибке типа " (SHARED_LIBRARIES android -x86_64) отсутствует libasan.vendor (STATIC_LIBRARIES android -x86_64) ". Поэтому я добавил флаг sanitize во все зависимые библиотеки stati c. Одна из библиотек имеет файл Android .bp вместо Android .mk, поэтому я добавил sanitize: {address: true}, затем через ошибку ( вариант модуля "libaudiohw_legacy" android_x86_64_silvermont_static_core ": зависит от отключения) модуль "libasan" )

В соответствии с документом (https://source.android.com/devices/tech/debug/asan) я читал так: благодаря тому, как работает ASan, библиотека, созданная с помощью ASan, может использоваться только исполняемый файл, созданный с помощью ASan. Поэтому я сделал исполняемый файл asan, добавив ниже две строки. Убраны все остальные изменения. LOCAL_SANITIZE: = адрес LOCAL_MODULE_RELATIVE_PATH: = asan Затем исполняемая и разделяемая библиотека, которая находится под исполняемым файлом, также помещает / system / lib / asan вместо / system / lib. Но при загрузке загрузочная библиотека будет искать бинарный файл в / system / lib, который не будет найден и тоже не загрузится.

Android версия ---- Oreo 8.1.0_r33

Если у кого-то есть необходимые шаги / документация для очистки общей библиотеки, пожалуйста, помогите мне.

...