R_386_8

ELF/i386な再配置情報のR_386_8とかいったいいつ使うんだろうかと思ってたけど次のようにすれば現れることに気づいた

例) a.s

.data
a:
.byte 1
d:
.byte a

普通にコンパイルするとベースアドレスが0x8048000なので.byte領域に収まらなくてエラーになるので次のようにしてみるとできる

$ as -o a.o a.s
$ objdump -r a.o
u.o:     file format elf32-i386

RELOCATION RECORDS FOR [.data]:
OFFSET   TYPE              VALUE
00000001 R_386_8           .data

$ objdump -D a.o
Disassembly of section .data:

00000000 <a>:
   0:   01 00                   add    %eax,(%eax)

   00000001 <b>:
           ...
$ ld -Tdata=0x10 -o a a.o
$ objdump -D a
Disassembly of section .data:

00000010 <a>:
  10:   01 10                   add    %edx,(%eax)

  00000011 <b>:
  11:   10                      .byte 0x10

まぁだから何,という話..
普通だと使うことなさそう..