Разница malloc_default_zone между macOS Monterey и Ventura ⇐ C++
Разница malloc_default_zone между macOS Monterey и Ventura
Я запускаю этот код в Монтерее, скомпилированный с помощью Apple clang 14.0.0, и там вызывается пользовательская функция my_malloc. Когда я запускаю тот же код в Ventura, скомпилированный с помощью Apple clang 14.0.3, my_malloc не вызывается.
#include #include #include void *(*system_malloc)(malloc_zone_t *zone, size_t size); void *my_malloc(malloc_zone_t *zone, size_t size) { убить (0, СИГАБРТ); вернуть 0; } недействительный setup_intercept () { malloc_zone_t *zone = malloc_default_zone(); system_malloc = зона->malloc; зона->malloc = my_malloc; } недействительный обратный_перехват () { malloc_zone_t *zone = malloc_default_zone(); зона->malloc = system_malloc; } int main(int argc, char* argv[]) { setup_intercept(); void* v = malloc(42); обратный_перехват(); вернуть 0; } В чем здесь разница? Я вижу, что исходная версия LLVM Clang изменилась с 14 на 15 между этими версиями Apple Clang.
В Compiler Explorer сборка выглядит немного иначе. В Clang 14 достаточно вызова malloc. В Clang 15 есть вызов malloc@PLT. Однако я не уверен, связано ли это с проблемой с malloc_default_zone.
Я запускаю этот код в Монтерее, скомпилированный с помощью Apple clang 14.0.0, и там вызывается пользовательская функция my_malloc. Когда я запускаю тот же код в Ventura, скомпилированный с помощью Apple clang 14.0.3, my_malloc не вызывается.
#include #include #include void *(*system_malloc)(malloc_zone_t *zone, size_t size); void *my_malloc(malloc_zone_t *zone, size_t size) { убить (0, СИГАБРТ); вернуть 0; } недействительный setup_intercept () { malloc_zone_t *zone = malloc_default_zone(); system_malloc = зона->malloc; зона->malloc = my_malloc; } недействительный обратный_перехват () { malloc_zone_t *zone = malloc_default_zone(); зона->malloc = system_malloc; } int main(int argc, char* argv[]) { setup_intercept(); void* v = malloc(42); обратный_перехват(); вернуть 0; } В чем здесь разница? Я вижу, что исходная версия LLVM Clang изменилась с 14 на 15 между этими версиями Apple Clang.
В Compiler Explorer сборка выглядит немного иначе. В Clang 14 достаточно вызова malloc. В Clang 15 есть вызов malloc@PLT. Однако я не уверен, связано ли это с проблемой с malloc_default_zone.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Пустой вывод ssh-keygen с subprocess.run и os.system в python3.10 на macOS Ventura 13.1
Anonymous » » в форуме Python - 0 Ответы
- 34 Просмотры
-
Последнее сообщение Anonymous
-