在 2013年1月29日下午5:29,Guan Xuetao <gxt@xxxxxxxxxxxxxxx> 写道: > 我询问了一下,这个符号可能是调试时使用的临时符号,为什么要有,并不明确 我google了一下,这个符号应该是arm上特有的mapping symbol。 UniCore32现在的工具链会生成这些符号可能是因为它在生成代码的过程中没有 调用相应的接口生成dwarf2调试信息。在这种情况下,似乎binutils就会自动生 成这些符号。 如果这些符号没有特殊的用处,我觉得这应该是一个bug。unicore32现在的工具链会 产生一大堆这样的$a符号。至少应该strip掉。 刘智猷 > > >> -----邮件原件----- >> 发件人: linux-unicore-bounce@xxxxxxxxxxxxx >> [mailto:linux-unicore-bounce@xxxxxxxxxxxxx] 代表 刘智猷 >> 发送时间: Monday, January 28, 2013 13:46 >> 收件人: linux-unicore@xxxxxxxxxxxxx; Guan Xuetao >> 主题: [linux-unicore] Unicore32 ELF中的$a symbol >> >> Hi, >> >> 我现在已经让binutils支持一些与重定向无关的指令。比如, >> >> [easyhard@here ~/unicore32-dis]$ cat test2.s >> and r0, r1, r2 >> xor r3, r4, r5 >> add r0, r1, r2 >> #15 >> add r0, r1, r2 << #15 >> add r0, r1, r2 |> #15 >> add r0, r1, r2 <> #15 >> add.a r0, r1, r2 >> #15 >> add.a r0, r1, r2 << #15 >> add.a r0, r1, r2 |> #15 >> add.a r0, r1, r2 <> #15 >> add r0, r1, r2 >> r3 >> add r0, r1, r2 << r3 >> add r0, r1, r2 |> r3 >> add r0, r1, r2 <> r3 >> add.a r0, r1, r2 >> r3 >> add.a r0, r1, r2 << r3 >> add.a r0, r1, r2 |> r3 >> add.a r0, r1, r2 <> r3 >> >> 已经可以用gas产生.o文件,但是我发现即使是闭源的工具链,产生的.o >> 文件里也包含一个$a symbol。而且闭源的工具链在readelf >> -s或者是objdump -s中会把这个$a symbol偷偷去掉。 这个$a symbol有什么 >> 来头吗? >> >> $ unicore32-linux-readelf -s test2.o >> >> Symbol table '.symtab' contains 6 entries: >> Num: Value Size Type Bind Vis Ndx Name >> 0: 00000000 0 NOTYPE LOCAL DEFAULT UND >> 1: 00000000 0 SECTION LOCAL DEFAULT 1 >> 2: 00000000 0 SECTION LOCAL DEFAULT 2 >> 3: 00000000 0 SECTION LOCAL DEFAULT 3 >> 4: 00000000 0 NOTYPE LOCAL DEFAULT 1 $a >> 5: 00000000 0 SECTION LOCAL DEFAULT 4 >> >> >> >> $ unicore32-linux-objdump -t test2.o >> >> test2.o: file format elf32-littleunicore32 >> >> SYMBOL TABLE: >> 00000000 l d .text 00000000 .text >> 00000000 l d .data 00000000 .data >> 00000000 l d .bss 00000000 .bss >> 00000000 l d .UNICORE32.attributes >> 00000000 .UNICORE32.attributes >> >> 祝好, >> 刘智猷 >