Компиляция ядра AOSP с помощью KASAN - PullRequest
1 голос
/ 05 ноября 2019

Я пытаюсь скомпилировать ядро ​​Linux для использования в AOSP с включенным KASAN & KCOV. Затем я намереваюсь прошить его на Pixel 2 XL (таймень) и использовать syzkaller для его размытия.

Вот что я сделал:

1. Сборка неизмененного ядра (работает)

Моя ссылка: https://source.android.com/setup/build/building-kernels

  • Определить ветку ... android-msm-wahoo-4.4-pie-qpr2
  • $ repo init -u https://android.googlesource.com/kernel/manifest -b android-msm-wahoo-4.4-pie-qpr2
  • $ repo sync -j8 -c
  • $ build/build.sh -j8
  • Подключение телефона через USB
  • $ adb reboot bootloader
  • $ fastboot boot out/android-msm-wahoo-4.4/dist/Image.lz4-dtb (Работает нормально)

2. Сборка ядра с помощью KASAN & KCOV (ошибка)

  • Чтобы изменить символы конфигурации ядра, отредактируйте POST_DEFCONFIG_CMDS в build / build.config
POST_DEFCONFIG_CMDS="check_defconfig && update_debug_config"
function update_debug_config() {
    ${KERNEL_DIR}/scripts/config --file ${OUT_DIR}/.config \
         -d CONFIG_KERNEL_LZ4 \
         -e CONFIG_KASAN \
         -e CONFIG_KASAN_INLINE \
         -e CONFIG_KCOV \
         -e CONFIG_SLUB \
         -e CONFIG_SLUB_DEBUG \
         --set-val FRAME_WARN 0
    (cd ${OUT_DIR} && \
     make O=${OUT_DIR} $archsubarch CC=${CC} CROSS_COMPILE=${CROSS_COMPILE} olddefconfig)
}
  • $ build/build.sh -j8

Но после CHK include/generated/compile.h я получаю много неопределенных ошибок ссылок на различные символы асан, например undefined reference to __asan_alloca_poison.

Я провел некоторое исследование и прочитал о добавлении-fsantitize=address и -shared-libasan (или -shared-libsan) до CFLAGS И LDFLAGS. Я сделал это (для этого мне пришлось жестко закодировать его в build/build.sh, разве нет более удобного способа?), Но безрезультатно:

Я закончил с aarch64-linux-android-ld: -f may not be used without -shared.

Итак, я попытался прочитать флаг ld -shared и добавить его к LDFLAGS (больше похоже на предположение). В результате aarch64-linux-android-ld: -r and -shared may not be used together.

Неужели не знаете, куда идти дальше и что вообще не так?

Любая помощь действительно ценится!

...