У меня есть что-то вроде этого:
uint8_t *data = (uint8_t *) 3;
*data = 1;
, который покажет достаточно возврата
Object "/lib/libc.so.6", at 0xb6d07d33, in __libc_start_main
Object "./test_log", at 0xdbee3, in main
Object "/lib/libc.so.6", at 0xb6d1d9cf, in
но когда я использую memcpy вот так:
memcpy((void *) 3, 0, 3);
, который не будет показывать полезную обратную трассировку,
Object "/data/running_environment/debug2/libc.so.6", at 0xb57ab8b7, in
Object "/data/running_environment/debug2/libc.so.6", at 0xb577521f, in
Тем не менее, я перекомпилировал libc с флагами
../configure --host=arm-linux-gnueabihf --enable-stack-protector=strong --prefix=my_path/glibc-2.28/build/install CFLAGS="-O2 -g3 -funwind-tables -mapcs-frame -funwind-tables -rdynamic -funwind-tables "
И скомпилировал мой тест с флагами:
-O0 -g -Wall -std=c++14 -g3 -fexceptions -ffunction-sections -rdynamic -funwind-tables -fasynchronous-unwind-tables -mfpu=neon