@@ -126,7 +126,7 @@ ST_FUNC void relocate_plt(TCCState *s1)
126
126
uint64_t got = s1 -> got -> sh_addr + 16 ;
127
127
uint64_t off = (got >> 12 ) - (plt >> 12 );
128
128
if ((off + ((uint32_t )1 << 20 )) >> 21 )
129
- tcc_error ("Failed relocating PLT (off=0x%lx, got=0x%lx, plt=0x%lx)" , (long )off , (long )got , (long )plt );
129
+ tcc_error_noabort ("Failed relocating PLT (off=0x%lx, got=0x%lx, plt=0x%lx)" , (long )off , (long )got , (long )plt );
130
130
write32le (p , 0xa9bf7bf0 ); // stp x16,x30,[sp,#-16]!
131
131
write32le (p + 4 , (0x90000010 | // adrp x16,...
132
132
(off & 0x1ffffc ) << 3 | (off & 3 ) << 29 ));
@@ -145,7 +145,7 @@ ST_FUNC void relocate_plt(TCCState *s1)
145
145
uint64_t addr = got + read64le (p );
146
146
uint64_t off = (addr >> 12 ) - (pc >> 12 );
147
147
if ((off + ((uint32_t )1 << 20 )) >> 21 )
148
- tcc_error ("Failed relocating PLT (off=0x%lx, addr=0x%lx, pc=0x%lx)" , (long )off , (long )addr , (long )pc );
148
+ tcc_error_noabort ("Failed relocating PLT (off=0x%lx, addr=0x%lx, pc=0x%lx)" , (long )off , (long )addr , (long )pc );
149
149
write32le (p , (0x90000010 | // adrp x16,...
150
150
(off & 0x1ffffc ) << 3 | (off & 3 ) << 29 ));
151
151
write32le (p + 4 , (0xf9400211 | // ldr x17,[x16,#...]
@@ -239,7 +239,7 @@ void relocate(TCCState *s1, ElfW_Rel *rel, int type, unsigned char *ptr, addr_t
239
239
case R_AARCH64_ADR_PREL_PG_HI21 : {
240
240
uint64_t off = (val >> 12 ) - (addr >> 12 );
241
241
if ((off + ((uint64_t )1 << 20 )) >> 21 )
242
- tcc_error ("R_AARCH64_ADR_PREL_PG_HI21 relocation failed" );
242
+ tcc_error_noabort ("R_AARCH64_ADR_PREL_PG_HI21 relocation failed" );
243
243
write32le (ptr , ((read32le (ptr ) & 0x9f00001f ) |
244
244
(off & 0x1ffffc ) << 3 | (off & 3 ) << 29 ));
245
245
return ;
@@ -272,7 +272,7 @@ void relocate(TCCState *s1, ElfW_Rel *rel, int type, unsigned char *ptr, addr_t
272
272
(char * ) symtab_section -> link -> data + sym -> st_name );
273
273
#endif
274
274
if (((val - addr ) + ((uint64_t )1 << 27 )) & ~(uint64_t )0xffffffc )
275
- tcc_error ("R_AARCH64_(JUMP|CALL)26 relocation failed"
275
+ tcc_error_noabort ("R_AARCH64_(JUMP|CALL)26 relocation failed"
276
276
" (val=%lx, addr=%lx)" , (long )val , (long )addr );
277
277
write32le (ptr , (0x14000000 |
278
278
(uint32_t )(type == R_AARCH64_CALL26 ) << 31 |
@@ -283,7 +283,7 @@ void relocate(TCCState *s1, ElfW_Rel *rel, int type, unsigned char *ptr, addr_t
283
283
(((s1 -> got -> sh_addr +
284
284
get_sym_attr (s1 , sym_index , 0 )-> got_offset ) >> 12 ) - (addr >> 12 ));
285
285
if ((off + ((uint64_t )1 << 20 )) >> 21 )
286
- tcc_error ("R_AARCH64_ADR_GOT_PAGE relocation failed" );
286
+ tcc_error_noabort ("R_AARCH64_ADR_GOT_PAGE relocation failed" );
287
287
write32le (ptr , ((read32le (ptr ) & 0x9f00001f ) |
288
288
(off & 0x1ffffc ) << 3 | (off & 3 ) << 29 ));
289
289
return ;
0 commit comments