Переполнение стека на QEMU с ядром с поддержкой MTE не вызывает ошибки

Я тестирую переполнение стека с помощью linux 5.10 и qemu 5.2.93. Он также не может обнаружить переполнение стека. Вот мой примерный пример

      #include <stdio.h>

int main(int argc, char** argv)
{
    volatile char pad[10];
    char s[10];
    for(int i=0; i<atoi(argv[1]); i++)
    {
        s[i] = i;
    }
    return 0;
}

Скомпилировал с помощью clang-13

clang -target aarch64-linux -march=armv8+memtag -fuse-ld=lld stack.c -o stack -fsanitize=memtag -static

Я запускаю qemu с простой файловой системой

      qemu-system-aarch64 -machine virt,mte=on -cpu max -kernel ./linux/arch/arm64/boot/Image -nographic -append "console=ttyAMA0" -m 1024 -initrd ./filesystem.cpio.gz -net nic -monitor /dev/null

а также

      ./stack 17

Ничего не случилось.

Или кто-нибудь может сказать мне, как запустить это на мониторе fvp. Я также использую ядро ​​с поддержкой MTE, fvp версии 11.8.37. И я включаю fvp mte с помощью -C cluster0.memory_tagging_support_level=2. После всего этого ничего не произошло с вышеуказанной программой переполнения стека.

0 ответов

Другие вопросы по тегам