• Alexei Fedorov's avatar
    AArch64: Fix assertions in processing dynamic relocations · db9736e3
    Alexei Fedorov authored
    
    
    This patch provides the following changes in fixup_gdt_reloc()
    function:
    - Fixes assertions in processing dynamic relocations, when
    relocation entries not matching R_AARCH64_RELATIVE type are found.
    Linker might generate entries of relocation type R_AARCH64_NONE
    (code 0), which should be ignored to make the code boot. Similar
    issue was fixed in OP-TEE (see optee_os/ldelf/ta_elf_rel.c
    commit 7a4dc765c133125428136a496a7644c6fec9b3c2)
    - Fixes bug when "b.ge" (signed greater than or equal) condition
    codes were used instead of "b.hs" (greater than or equal) for
    comparison of absolute addresses.
    - Adds optimisation which skips fixing Global Object Table (GOT)
    entries when offset value is 0.
    
    Change-Id: I35e34e055b7476843903859be947b883a1feb1b5
    Signed-off-by: default avatarAlexei Fedorov <Alexei.Fedorov@arm.com>
    db9736e3
misc_helpers.S 16.6 KB