arm64-link-asm-relocs.before (1746B)
1 int code_reloc (int reloc_type) 2 { 3 switch (reloc_type) { 4 case R_AARCH64_ABS32: 5 case R_AARCH64_ABS64: 6 case R_AARCH64_PREL32: 7 case R_AARCH64_MOVW_UABS_G0_NC: 8 case R_AARCH64_MOVW_UABS_G1_NC: 9 case R_AARCH64_MOVW_UABS_G2_NC: 10 case R_AARCH64_MOVW_UABS_G3: 11 case R_AARCH64_ADR_PREL_PG_HI21: 12 case R_AARCH64_ADD_ABS_LO12_NC: 13 case R_AARCH64_ADR_GOT_PAGE: 14 case R_AARCH64_LD64_GOT_LO12_NC: 15 case R_AARCH64_GLOB_DAT: 16 case R_AARCH64_COPY: 17 return 0; 18 19 case R_AARCH64_JUMP26: 20 case R_AARCH64_CALL26: 21 case R_AARCH64_JUMP_SLOT: 22 return 1; 23 } 24 25 tcc_error ("Unknown relocation type: %d", reloc_type); 26 return -1; 27 } 28 29 /* Returns an enumerator to describe whether and when the relocation needs a 30 GOT and/or PLT entry to be created. See tcc.h for a description of the 31 different values. */ 32 int gotplt_entry_type (int reloc_type) 33 { 34 switch (reloc_type) { 35 case R_AARCH64_PREL32: 36 case R_AARCH64_MOVW_UABS_G0_NC: 37 case R_AARCH64_MOVW_UABS_G1_NC: 38 case R_AARCH64_MOVW_UABS_G2_NC: 39 case R_AARCH64_MOVW_UABS_G3: 40 case R_AARCH64_ADR_PREL_PG_HI21: 41 case R_AARCH64_ADD_ABS_LO12_NC: 42 case R_AARCH64_GLOB_DAT: 43 case R_AARCH64_JUMP_SLOT: 44 case R_AARCH64_COPY: 45 return NO_GOTPLT_ENTRY; 46 47 case R_AARCH64_ABS32: 48 case R_AARCH64_ABS64: 49 case R_AARCH64_JUMP26: 50 case R_AARCH64_CALL26: 51 return AUTO_GOTPLT_ENTRY; 52 53 case R_AARCH64_ADR_GOT_PAGE: 54 case R_AARCH64_LD64_GOT_LO12_NC: 55 return ALWAYS_GOTPLT_ENTRY; 56 } 57 58 tcc_error ("Unknown relocation type: %d", reloc_type); 59 return -1; 60 }