diff options
| author | Edmund Grimley Evans <Edmund.Grimley.Evans@gmail.com> | 2015-11-09 22:57:58 +0000 |
|---|---|---|
| committer | Edmund Grimley Evans <Edmund.Grimley.Evans@gmail.com> | 2015-11-09 22:57:58 +0000 |
| commit | c52128c581c8b474733cc3ee035ffd0e964e661e (patch) | |
| tree | b6a4caa2692d476d2771e47d4c9c362c6d81c6a2 | |
| parent | 951c23f25708a0e39ed0fcaac1862fbc2fad178b (diff) | |
| download | tinycc-c52128c581c8b474733cc3ee035ffd0e964e661e.tar.gz tinycc-c52128c581c8b474733cc3ee035ffd0e964e661e.tar.bz2 | |
tccelf.c: Avoid two trivial instances of undefined behaviour.
| -rw-r--r-- | tccelf.c | 6 |
1 files changed, 4 insertions, 2 deletions
@@ -812,7 +812,8 @@ ST_FUNC void relocate_section(TCCState *s1, Section *s) { tcc_error("R_AARCH64_(JUMP|CALL)26 relocation failed (val=%lx, addr=%lx)", addr, val); } - *(uint32_t *)ptr = 0x14000000 | (type == R_AARCH64_CALL26) << 31 | + *(uint32_t *)ptr = 0x14000000 | + (uint32_t)(type == R_AARCH64_CALL26) << 31 | ((val - addr) >> 2 & 0x3ffffff); break; case R_AARCH64_ADR_GOT_PAGE: { @@ -2435,7 +2436,8 @@ static void tcc_output_elf(TCCState *s1, FILE *f, int phnum, ElfW(Phdr) *phdr, offset++; } size = s->sh_size; - fwrite(s->data, 1, size, f); + if (size) + fwrite(s->data, 1, size, f); offset += size; } } |
