(mips) Функция Cacheflush на arm / arm64

в рамках проекта я пытаюсь скомпилировать файл .c для Android10 (Pixel 3) для arm64 с помощью системы сборки ninja. Этот файл .c является частью PoC, который уже успешно использовался (так что он должен как-то работать).

Проблема теперь в следующем: этот файл содержит ссылку на функцию cacheflush, которая хорошо определена для bionic / MIPS, но не для arm64. Сообщение об ошибке: error: use of undeclared identifier 'cacheflush'

Как я уже сказал, пример приведен для работы. Я уже установил android ndk / sdk и другие зависимости, которые были указаны в проекте. Я также тестировал, включая различные файлы заголовков (например, cacheflush.h и unistd.h)

Может ли кто-нибудь помочь мне заставить эту функцию работать? Большое спасибо!


person MajorasKid    schedule 29.07.2020    source источник


Ответы (1)


Я также использую cacheflush для poc, если вы наберете man cacheflush в дистрибутивах на основе Linux, вы можете увидеть подобные заметки в синопсисе:

Примечание. На некоторых архитектурах для этого системного вызова нет оболочки glibc; см. ПРИМЕЧАНИЯ.

Поэтому я думаю, что в архитектуре ARM нет функции очистки кеша.

Вы можете найти в справочнике по набору инструкций ARM инструкции, которые выполняют ту же работу (например, clflush в x86).

person ben liu    schedule 15.04.2021