From 888f4fd9821fd0eba2916a7880427c1bbef8bbc7 Mon Sep 17 00:00:00 2001 From: Christian Jullien Date: Tue, 22 Dec 2020 05:52:45 +0100 Subject: [PATCH] FreeBSD (aarch64): fix relocation error. --- arm64-link.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/arm64-link.c b/arm64-link.c index b9de4818..5fec77d3 100644 --- a/arm64-link.c +++ b/arm64-link.c @@ -38,6 +38,7 @@ int code_reloc (int reloc_type) case R_AARCH64_ADR_GOT_PAGE: case R_AARCH64_LD64_GOT_LO12_NC: case R_AARCH64_LDST64_ABS_LO12_NC: + case R_AARCH64_LDST8_ABS_LO12_NC: case R_AARCH64_GLOB_DAT: case R_AARCH64_COPY: return 0; @@ -64,6 +65,7 @@ int gotplt_entry_type (int reloc_type) case R_AARCH64_ADR_PREL_PG_HI21: case R_AARCH64_ADD_ABS_LO12_NC: case R_AARCH64_LDST64_ABS_LO12_NC: + case R_AARCH64_LDST8_ABS_LO12_NC: case R_AARCH64_GLOB_DAT: case R_AARCH64_JUMP_SLOT: case R_AARCH64_COPY: @@ -237,6 +239,7 @@ void relocate(TCCState *s1, ElfW_Rel *rel, int type, unsigned char *ptr, addr_t return; } case R_AARCH64_ADD_ABS_LO12_NC: + case R_AARCH64_LDST8_ABS_LO12_NC: write32le(ptr, ((read32le(ptr) & 0xffc003ff) | (val & 0xfff) << 10)); return; -- 2.11.4.GIT