Есть прошивка для AT91SAM7S, собиралась под вендой arm-uclibc-cpp (GCC) 3.2.2 (cygwin)
Необходимо внести изменения, но т.к. под вендой жизни нет, потому собрал старый arm-linux-gcc 4.3.4 и им собираю
Все собирается, но итоговый бинарь содержит лишний мусор, иные смещения данных в прошивке, что помешает ему быть «нормально понятым» далее.
Например, если посмотреть старый вендовый файл одного объектника:
objdump -t ./utils.o
./utils.o: file format elf32-little
SYMBOL TABLE:
00000000 l df *ABS* 00000000 utils.cpp
00000000 l d .text 00000000 .text
00000000 l d .data 00000000 .data
00000000 l d .bss 00000000 .bss
00000000 l d .comment 00000000 .comment
00000000 g F .text 00000054 _Z16inc_dec_ring_posji
00000054 g F .text 0000002c _Z12memcpy_shortPtPsi
00000080 g F .text 00000020 _Z14clear_recflagsv
00000000 *UND* 00000000 memset
000000a0 g F .text 0000001c _Z12set_recflagsj
000000bc g F .text 00000020 _Z11set_recflagj
000000dc g F .text 00000040 _Z11get_recflagj
и новый:
objdump -t ./utils.o
./utils.o: file format elf32-little
SYMBOL TABLE:
00000000 l df *ABS* 00000000 utils.cpp
00000000 l d .text 00000000 .text
00000000 l d .data 00000000 .data
00000000 l d .bss 00000000 .bss
00000000 l .text 00000000 $a
00000098 l .text 00000000 $d
000000a0 l .text 00000000 $a
000000e8 l .text 00000000 $d
000000ec l .text 00000000 $a
000000fc l .text 00000000 $d
00000100 l .text 00000000 $a
00000000 l d .note.GNU-stack 00000000 .note.GNU-stack
00000000 l d .comment 00000000 .comment
00000000 l d .ARM.attributes 00000000 .ARM.attributes
00000000 g F .text 0000004c _Z16inc_dec_ring_posji
0000004c g F .text 00000034 _Z12memcpy_shortPtPsi
00000080 g F .text 00000020 _Z11set_recflagj
000000a0 g F .text 0000004c _Z11get_recflagj
000000ec g F .text 00000014 _Z12set_recflagsj
00000000 *UND* 00000000 memset
00000100 g F .text 00000020 _Z14clear_recflagsv
то видно наличие неких «$d» и «$a»
как от них избавится ?
команда сборки одинакова: $CC -c -mcpu=arm7tdmi -Wall -O2 -mno-apcs-frame -o utils.o utils.cpp