Я пытаюсь отключить встраивание при компиляции ядра Linux 4.18.
Для этого я обновил Makefile в соответствии с: https://elinux.org/Kernel_dynamic_memory_analysis#Obpting_accurate_call_sites_.28or_The_painstaking_task_of_wrestling_against_gcc.29
Но при компиляции я получаю следующую ошибку:
error: call to ‘__compiletime_assert_1094’ declared with attribute error: BUILD_BUG_ON failed: p4d_large(*p4d)
Как мне избавиться от ошибки при отключении встраивания во время сборки ядра?
BUILD_BUG_ON()
требует постоянного выражения. Иногда ему передаются вызовы встроенных функций. GCC может оптимизировать некоторые встроенные функции до константных выражений, чтобы заставить его работать. Отключение встраивания предотвратит это, нарушив сборку. (В некоторых случаях это также проблема для Clang, который выполняет семантический анализ перед встраиванием.)
Вам, вероятно, придется изменить довольно много кода, чтобы иметь возможность собрать ядро с отключенным встраиванием. Страница, на которую вы ссылаетесь, довольно старая; по-видимому, тогда это не было проблемой.