title: Can't understand the 'Off' value of a section in readelf output? Is it offset from 'Address'?
body: <p>Here is the output of readelf -a test.elf</p>
  <pre><code>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
  </code></pre>
  <p>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?</p>