1 #ifdef TARGET_DEFS_ONLY
3 #define EM_TCC_TARGET EM_C60
5 /* relocation type for 32 bit data relocation */
6 #define R_DATA_32 R_C60_32
7 #define R_DATA_PTR R_C60_32
8 #define R_JMP_SLOT R_C60_JMP_SLOT
9 #define R_GLOB_DAT R_C60_GLOB_DAT
10 #define R_COPY R_C60_COPY
12 #define R_NUM R_C60_NUM
14 #define ELF_START_ADDR 0x00000400
15 #define ELF_PAGE_SIZE 0x1000
17 #define HAVE_SECTION_RELOC
19 #else /* !TARGET_DEFS_ONLY */
23 void relocate_init(Section
*sr
) {}
25 void relocate(TCCState
*s1
, ElfW_Rel
*rel
, int type
, char *ptr
, addr_t addr
, addr_t val
)
35 /* put the low 16 bits of the absolute address add to what is
37 orig
= ((*(int *)(ptr
)) >> 7) & 0xffff;
38 orig
|= (((*(int *)(ptr
+4)) >> 7) & 0xffff) << 16;
40 /* patch both at once - assumes always in pairs Low - High */
41 *(int *) ptr
= (*(int *) ptr
& (~(0xffff << 7)) ) |
42 (((val
+orig
) & 0xffff) << 7);
43 *(int *)(ptr
+4) = (*(int *)(ptr
+4) & (~(0xffff << 7)) ) |
44 ((((val
+orig
)>>16) & 0xffff) << 7);
50 fprintf(stderr
,"FIXME: handle reloc type %x at %x [%p] to %x\n",
51 type
, (unsigned) addr
, ptr
, (unsigned) val
);
56 #endif /* !TARGET_DEFS_ONLY */