vak: (Default)
Serge Vakulenko ([personal profile] vak) wrote2024-12-14 11:11 pm

Проруха на arm32

Однако сурово я обломался с трассировкой на архитектуре arm32! Как выяснилось, линуксное ядро не поддерживает пошаговое выполнение для 32-битных ARM-ов. На arm64 отлично идёт, а на той же Olinuxino - фиг вам. Вызов ptrace(PTRACE_SINGLESTEP) возвращает EIO. И по той же причине не будет работать на mips или на riscv. Пичалька.

Я и начинал-то с единственной целью: выяснить механизм вызова функций из разделяемых библиотек на arm32. Линкер генерит хитрые процессорные инструкции в таблице переходов, которые самообновляются при первом вызове.

Хотя бы на arm64 можно пользоваться, и то хлеб:
Starting program: ./hello-arm64-linux
sp = 0xffffcdbaed60
pstate = 0x1000
0x0000000000400078: d2800808 movz x8, #0x40
r8 = 0x40
pstate = 0x201000
0x000000000040007c: d2800020 movz x0, #0x1
r0 = 0x1
0x0000000000400080: 90000001 adrp x1, #0x400000
r1 = 0x400000
0x0000000000400084: 91027021 add x1, x1, #0x9c
r1 = 0x40009c
0x0000000000400088: d28001a2 movz x2, #0xd
r2 = 0xd
0x000000000040008c: d4000001 svc #0
Hello world!
r0 = 0xd
0x0000000000400090: d2800ba8 movz x8, #0x5d
r8 = 0x5d
0x0000000000400094: d2800000 movz x0, #0
r0 = 0
0x0000000000400098: d4000001 svc #0
Process exited normally.
nms: (Default)

[personal profile] nms 2024-12-15 07:35 am (UTC)(link)
У меня создается впечатление что поддержка техники минулых лет не просто замораживается, а вполне сознательно стремительно уничтожается.
Edited 2024-12-15 07:35 (UTC)
x86128: (Default)

[personal profile] x86128 2024-12-16 02:39 am (UTC)(link)
а вроде ж были какие-то debug и jtag интерфейсы и расширения ? или тут речь именно о программной трасировке?
ircicq: (Default)

[personal profile] ircicq 2024-12-15 07:52 am (UTC)(link)
Аналогичную трассировку должно быть можно в `QEMU` настроить.
prool: cat (Default)

[personal profile] prool 2024-12-15 10:14 am (UTC)(link)
/me вспомнил инженерную панель ЕС ЭВМ (она же IBM/360)

а также отладочную панель самодельного компьютера Микро-80 на процессоре К580ИК80А

Хоть я и программист, а не электроник, но аппаратные решения я люблю
tiresome_cat: (NewYearCat)

[personal profile] tiresome_cat 2024-12-15 12:05 pm (UTC)(link)
"инженерную панель ЕС ЭВМ"

Да, очень Новогодняя тема :)