我询问了一下,这个符号可能是调试时使用的临时符号,为什么要有,并不明确 > -----邮件原件----- > 发件人: 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 > > 祝好, > 刘智猷