Привет всем! Сразу хочу сказать что я не ищу готового решения - мне достаточно будет совета насчёт «куда копать».
Собственно, есть embedded девайс, есть root доступ вместе с пачкой утилит на борту (gdb, strace, busybox).
Скачал тулчейн, нашел инструкцию как билдить бинарники под сей девайс с помощью тулчейна. Итоговые бинарники по оценкам утилит objdump и file НИЧЕМ (кроме stripped) не отличаются от тех бинарников, что уже есть на борту:
$ file bin_from_device
bin_from_device: ELF 32-bit LSB executable, MIPS, MIPS32 rel2 version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.12, stripped
$ file hello
hello: ELF 32-bit LSB executable, MIPS, MIPS32 rel2 version 1, dynamically linked (uses shared libs), for GNU/Linux 2.6.12, not stripped
аналогично с objdump:
$ mips-linux-gnu-objdump -f bin_from_device
bin_from_device: file format elf32-tradlittlemips
architecture: mips:isa32r2, flags 0x00000112:
EXEC_P, HAS_SYMS, D_PAGED
start address 0x00401900
$ mips-linux-gnu-objdump -f hello
hello: file format elf32-tradlittlemips
architecture: mips:isa32r2, flags 0x00000112:
EXEC_P, HAS_SYMS, D_PAGED
start address 0x00400490
Всё якобы должно работать. НО! Я заливаю hello на дейвайс, и при запуска получаю segmentation fault. При попытке схавать hello с помощью бортового gdb, он плюётся вот так:
$ ./gdb.867x hello
GNU gdb 6.7.1
Copyright (C) 2007 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law. Type "show copying"
and "show warranty" for details.
This GDB was configured as "mipsel-linux"...
"hello": not in executable format: File format not recognized
Такой хрени я еще не видал, о_О. Собственно, куда копать? Никак не ожидал плевка со стороны gdb.
Доп. информация:
1) Если скомпилить -static, то получаю Illegal instruction вместо segmentation fault. Лол?
2) Компилю бинари вот таким образом:
$ mips-linux-gnu-gcc -EL -march=74kf2_1 -mdspr2 hello.c -o hello
3) Чипсет: Sigma Designs 8672
4) Проц: MIPS 74Kf (согласно документации на девайс)
5) cat /proc/cpuinfo
6) пробовал компилить с различными опциями -march, включая 74kc, итог один и тот же