| |||
| Home > Writing Position Independent Code and Data > Read-only position independence > Writing C and assembler code for ROPI | |||
When you are writing C and assembler code for ROPI:
Every reference from code in an ROPI segment to a symbol in the same ROPI segment must be PC-relative. AAPCS does not define any other base register for a read-only segment. An address of an item in an ROPI segment cannot be assigned to an item in a different ROPI segment.
Every reference from code in an ROPI segment to a symbol in a different ROPI segment must be PC-relative. The two segments must be fixed relative to each other.
Every other reference from an ROPI segment must be to either:
an absolute address
an sb-relative reference to writable
data (see Read-write position independence).
A read-write word that addresses a symbol in an ROPI segment must be adjusted whenever the ROPI segment is moved.