[linux-unicore] Unicore32 ELF中的$a symbol

  • From: 刘智猷 <liuzhiyou.cs@xxxxxxxxx>
  • To: "linux-unicore@xxxxxxxxxxxxx" <linux-unicore@xxxxxxxxxxxxx>, Guan Xuetao <gxt@xxxxxxxxxxxxxxx>
  • Date: Mon, 28 Jan 2013 13:45:38 +0800

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

祝好,
刘智猷

Other related posts:

  • » [linux-unicore] Unicore32 ELF中的$a symbol - 刘智猷