[llvm-dev] ELF relocations

Friedman, Eli via llvm-dev llvm-dev at lists.llvm.org
Fri Oct 12 17:25:30 PDT 2018


On 10/12/2018 4:32 PM, Hassan ELMADI via llvm-dev wrote:
> Hi,
> In the include/llvm/Support/ELFRelocs directory, there is a bunch of 
> .def files defining enums that are to be included in ELF.h. For 
> example, in ARM.def, there is this record:
>
> ELF_RELOC(R_ARM_PC24,                   0x01)
>
> What does 'R_ARM_PC24' mean and where does the value 0x01 come from?

See http://refspecs.linuxbase.org/elf/gabi4+/ch4.reloc.html for a 
general description of ELF relocations.  The names, values, and meanings 
are all CPU-specific because it depends on the instruction encoding.  
For commonly used CPUs, there are standard ELF relocations, so different 
compilers and linkers for a given CPU are compatible.  For example, the 
ARM ELF relocations are defined in 
http://infocenter.arm.com/help/topic/com.arm.doc.ihi0044f/IHI0044F_aaelf.pdf 
.

If you're defining your own CPU architecture, it doesn't really matter 
what the names or values are, as long as the compiler and linker agree 
what they mean.

-Eli

-- 
Employee of Qualcomm Innovation Center, Inc.
Qualcomm Innovation Center, Inc. is a member of Code Aurora Forum, a Linux Foundation Collaborative Project

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20181012/95e19427/attachment.html>


More information about the llvm-dev mailing list