boot2

Playing with the boostrap
git clone https://git.ryansepassi.com/git/boot2.git
Log | Files | Refs | README

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 }