From bf2b4e781164f3c5b9a5308da27787998ffc3822 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois=20Revol?= Date: Thu, 10 Jan 2008 16:48:16 +0000 Subject: [PATCH] * Missing write_8() * Fixes git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@23348 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/system/kernel/arch/m68k/arch_elf.cpp | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/system/kernel/arch/m68k/arch_elf.cpp b/src/system/kernel/arch/m68k/arch_elf.cpp index 47180d44a7..a63c406e47 100644 --- a/src/system/kernel/arch/m68k/arch_elf.cpp +++ b/src/system/kernel/arch/m68k/arch_elf.cpp @@ -115,13 +115,22 @@ write_16_check(addr_t P, Elf32_Word value) } +static inline bool +write_8(addr_t P, Elf32_Word value) +{ + // bits 7:0 + *(uint8 *)P = (uint8)value; + return true; +} + + static inline bool write_8_check(addr_t P, Elf32_Word value) { // bits 7:0 if ((value & 0xffffff00) && (~value & 0xffffff80)) return false; - *(Elf32_Half*)P = (Elf32_Half)value; + *(uint8 *)P = (uint8)value; return true; } @@ -292,14 +301,14 @@ dprintf("R_68K_GOT8 overflow\n"); case R_68K_PLT16: REQUIRE_PLT; - if (write_16(P, (L + A - P))) + if (write_16_check(P, (L + A - P))) break; dprintf("R_68K_PLT16 overflow\n"); return B_BAD_DATA; case R_68K_PLT8: REQUIRE_PLT; - if (write_8(P, (L + A - P))) + if (write_8_check(P, (L + A - P))) break; dprintf("R_68K_PLT8 overflow\n"); return B_BAD_DATA; @@ -311,14 +320,14 @@ dprintf("R_68K_PLT8 overflow\n"); case R_68K_PLT16O: REQUIRE_PLT; - if (write_16(P, (L + A))) + if (write_16_check(P, (L + A))) break; dprintf("R_68K_PLT16O overflow\n"); return B_BAD_DATA; case R_68K_PLT8O: REQUIRE_PLT; - if (write_8(P, (L + A))) + if (write_8_check(P, (L + A))) break; dprintf("R_68K_PLT8O overflow\n"); return B_BAD_DATA;