Chan Kim
Chan Kim

Reputation: 5919

Can't understand the 'Off' value of a section in readelf output? Is it offset from 'Address'?

Here is the output of readelf -a test.elf

Section Headers:
  [Nr] Name              Type            Address          Off    Size   ES Flg Lk Inf Al
  [ 0]                   NULL            0000000000000000 000000 000000 00      0   0  0
  [ 1] .text             PROGBITS        0000000040000000 010000 00007c 00  AX  0   0  8
  [ 2] .rodata           PROGBITS        0000000040000080 010080 000016 00   A  0   0  8
  [ 3] .debug_info       PROGBITS        0000000000000000 010096 0000af 00      0   0  1
  [ 4] .debug_abbrev     PROGBITS        0000000000000000 010145 000086 00      0   0  1
  [ 5] .debug_aranges    PROGBITS        0000000000000000 0101cb 000030 00      0   0  1

The .text section starts at 0x40000000. With debugger, I could see the PC value is starting from 0x40000000, and the code there is the startup.s which is meant to be there. But I'm not sure why the value 'Off' for that section is 0x10000. What does this 'Off' value mean? Isn't Address and Size enough for a section?

Upvotes: 1

Views: 838

Answers (1)

Sami Kuhmonen
Sami Kuhmonen

Reputation: 31143

The Offset field denotes the location of that segment in the file. Here the .text segment starts at location 0x10000 and is 0x7c bytes long, then next segment .rodata starts at 0x10080 etc.

Upvotes: 3

Related Questions