= `SHN_ABS`
`hello_world_len` points to the special `st_shndx == SHN_ABS == 0xF1FF`.
`0xF1FF` is chosen so as to not conflict with other sections.
`st_value == 0xD == 13` which is the value we have stored there on the assembly: the length of the string `Hello World!`.
This means that relocation will not affect this value: it is a constant.
This is small optimization that our assembler does for us and which has ELF support.
If we had used the address of `hello_world_len` anywhere, the assembler would not have been able to mark it as `SHN_ABS`, and the linker would have extra relocation work on it later.
Back to article page