Unified · Split
| @@ -812,7 +812,8 @@ ST_FUNC void relocate_section(TCCState *s1, Section *s) · 811 unmodified lines | |||
| 812 | { | 812 | { |
| 813 | tcc_error("R_AARCH64_(JUMP|CALL)26 relocation failed (val=%lx, addr=%lx)", addr, val); | 813 | tcc_error("R_AARCH64_(JUMP|CALL)26 relocation failed (val=%lx, addr=%lx)", addr, val); |
| 814 | } | 814 | } |
| 815 | *(uint32_t *)ptr = 0x14000000 | (type == R_AARCH64_CALL26) << 31 | | 815 | *(uint32_t *)ptr = 0x14000000 | |
| 816 | (uint32_t)(type == R_AARCH64_CALL26) << 31 | | ||
| 816 | ((val - addr) >> 2 & 0x3ffffff); | 817 | ((val - addr) >> 2 & 0x3ffffff); |
| 817 | break; | 818 | break; |
| 818 | case R_AARCH64_ADR_GOT_PAGE: { | 819 | case R_AARCH64_ADR_GOT_PAGE: { |
| @@ -2435,7 +2436,8 @@ static void tcc_output_elf(TCCState *s1, FILE *f, int phnum, ElfW(Phdr) *phdr, · 1616 unmodified lines | |||
| 2435 | offset++; | 2436 | offset++; |
| 2436 | } | 2437 | } |
| 2437 | size = s->sh_size; | 2438 | size = s->sh_size; |
| 2438 | fwrite(s->data, 1, size, f); | 2439 | if (size) |
| 2440 | fwrite(s->data, 1, size, f); | ||
| 2439 | offset += size; | 2441 | offset += size; |
| 2440 | } | 2442 | } |
| 2441 | } | 2443 | } |