Unified · Split
| @@ -37,7 +37,10 @@ int code_reloc (int reloc_type) · 36 unmodified lines | |||
| 37 | case R_AARCH64_ADD_ABS_LO12_NC: | 37 | case R_AARCH64_ADD_ABS_LO12_NC: |
| 38 | case R_AARCH64_ADR_GOT_PAGE: | 38 | case R_AARCH64_ADR_GOT_PAGE: |
| 39 | case R_AARCH64_LD64_GOT_LO12_NC: | 39 | case R_AARCH64_LD64_GOT_LO12_NC: |
| 40 | case R_AARCH64_LDST128_ABS_LO12_NC: | ||
| 40 | case R_AARCH64_LDST64_ABS_LO12_NC: | 41 | case R_AARCH64_LDST64_ABS_LO12_NC: |
| 42 | case R_AARCH64_LDST32_ABS_LO12_NC: | ||
| 43 | case R_AARCH64_LDST16_ABS_LO12_NC: | ||
| 41 | case R_AARCH64_LDST8_ABS_LO12_NC: | 44 | case R_AARCH64_LDST8_ABS_LO12_NC: |
| 42 | case R_AARCH64_GLOB_DAT: | 45 | case R_AARCH64_GLOB_DAT: |
| 43 | case R_AARCH64_COPY: | 46 | case R_AARCH64_COPY: |
| @@ -64,7 +67,10 @@ int gotplt_entry_type (int reloc_type) · 20 unmodified lines | |||
| 64 | case R_AARCH64_MOVW_UABS_G3: | 67 | case R_AARCH64_MOVW_UABS_G3: |
| 65 | case R_AARCH64_ADR_PREL_PG_HI21: | 68 | case R_AARCH64_ADR_PREL_PG_HI21: |
| 66 | case R_AARCH64_ADD_ABS_LO12_NC: | 69 | case R_AARCH64_ADD_ABS_LO12_NC: |
| 70 | case R_AARCH64_LDST128_ABS_LO12_NC: | ||
| 67 | case R_AARCH64_LDST64_ABS_LO12_NC: | 71 | case R_AARCH64_LDST64_ABS_LO12_NC: |
| 72 | case R_AARCH64_LDST32_ABS_LO12_NC: | ||
| 73 | case R_AARCH64_LDST16_ABS_LO12_NC: | ||
| 68 | case R_AARCH64_LDST8_ABS_LO12_NC: | 74 | case R_AARCH64_LDST8_ABS_LO12_NC: |
| 69 | case R_AARCH64_GLOB_DAT: | 75 | case R_AARCH64_GLOB_DAT: |
| 70 | case R_AARCH64_JUMP_SLOT: | 76 | case R_AARCH64_JUMP_SLOT: |
| @@ -243,10 +249,22 @@ void relocate(TCCState *s1, ElfW_Rel *rel, int type, unsigned char *ptr, addr_t · 172 unmodified lines | |||
| 243 | write32le(ptr, ((read32le(ptr) & 0xffc003ff) | | 249 | write32le(ptr, ((read32le(ptr) & 0xffc003ff) | |
| 244 | (val & 0xfff) << 10)); | 250 | (val & 0xfff) << 10)); |
| 245 | return; | 251 | return; |
| 252 | case R_AARCH64_LDST16_ABS_LO12_NC: | ||
| 253 | write32le(ptr, ((read32le(ptr) & 0xffc003ff) | | ||
| 254 | (val & 0xffe) << 9)); | ||
| 255 | return; | ||
| 256 | case R_AARCH64_LDST32_ABS_LO12_NC: | ||
| 257 | write32le(ptr, ((read32le(ptr) & 0xffc003ff) | | ||
| 258 | (val & 0xffc) << 8)); | ||
| 259 | return; | ||
| 246 | case R_AARCH64_LDST64_ABS_LO12_NC: | 260 | case R_AARCH64_LDST64_ABS_LO12_NC: |
| 247 | write32le(ptr, ((read32le(ptr) & 0xffc003ff) | | 261 | write32le(ptr, ((read32le(ptr) & 0xffc003ff) | |
| 248 | (val & 0xff8) << 7)); | 262 | (val & 0xff8) << 7)); |
| 249 | return; | 263 | return; |
| 264 | case R_AARCH64_LDST128_ABS_LO12_NC: | ||
| 265 | write32le(ptr, ((read32le(ptr) & 0xffc003ff) | | ||
| 266 | (val & 0xff0) << 6)); | ||
| 267 | return; | ||
| 250 | case R_AARCH64_JUMP26: | 268 | case R_AARCH64_JUMP26: |
| 251 | case R_AARCH64_CALL26: | 269 | case R_AARCH64_CALL26: |
| 252 | #ifdef DEBUG_RELOC | 270 | #ifdef DEBUG_RELOC |