Unified · Split
| @@ -45,6 +45,7 @@ int code_reloc (int reloc_type) · 44 unmodified lines | ||
| 45 | 45 | case R_ARM_COPY: |
| 46 | 46 | case R_ARM_GLOB_DAT: |
| 47 | 47 | case R_ARM_NONE: |
| 48 | + case R_ARM_TARGET1: | |
| 48 | 49 | return 0; |
| 49 | 50 | |
| 50 | 51 | case R_ARM_PC24: |
| @@ -87,6 +88,7 @@ int gotplt_entry_type (int reloc_type) · 36 unmodified lines | ||
| 87 | 88 | case R_ARM_ABS32: |
| 88 | 89 | case R_ARM_REL32: |
| 89 | 90 | case R_ARM_V4BX: |
| 91 | + case R_ARM_TARGET1: | |
| 90 | 92 | return AUTO_GOTPLT_ENTRY; |
| 91 | 93 | |
| 92 | 94 | case R_ARM_GOTPC: |
| @@ -359,11 +361,12 @@ void relocate(TCCState *s1, ElfW_Rel *rel, int type, unsigned char *ptr, addr_t · 266 unmodified lines | ||
| 359 | 361 | (*(int *)ptr) |= x & 0x7fffffff; |
| 360 | 362 | } |
| 361 | 363 | case R_ARM_ABS32: |
| 364 | + // case R_ARM_TARGET1: /* ??? as seen on NetBSD - FIXME! */ | |
| 362 | 365 | if (s1->output_type == TCC_OUTPUT_DLL) { |
| 363 | 366 | esym_index = get_sym_attr(s1, sym_index, 0)->dyn_index; |
| 364 | 367 | qrel->r_offset = rel->r_offset; |
| 365 | 368 | if (esym_index) { |
| 366 | − qrel->r_info = ELFW(R_INFO)(esym_index, R_ARM_ABS32); | |
| 369 | + qrel->r_info = ELFW(R_INFO)(esym_index, type); | |
| 367 | 370 | qrel++; |
| 368 | 371 | return; |
| 369 | 372 | } else { |
| @@ -2501,6 +2501,7 @@ typedef Elf32_Addr Elf32_Conflict; · 2500 unmodified lines | ||
| 2501 | 2501 | #define R_ARM_LDR_SBREL_11_0 35 |
| 2502 | 2502 | #define R_ARM_ALU_SBREL_19_12 36 |
| 2503 | 2503 | #define R_ARM_ALU_SBREL_27_20 37 |
| 2504 | +#define R_ARM_TARGET1 38 | |
| 2504 | 2505 | #define R_ARM_V4BX 40 |
| 2505 | 2506 | #define R_ARM_PREL31 42 |
| 2506 | 2507 | #define R_ARM_MOVW_ABS_NC 43 |