[haiku-commits] BRANCH xyzzy-github.x86_64 - in src/system/kernel/arch/x86: . 32

  • From: xyzzy-github.x86_64 <community@xxxxxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Thu, 12 Jul 2012 17:49:11 +0200 (CEST)

added 3 changesets to branch 'refs/remotes/xyzzy-github/x86_64'
old head: d38f1301d1e3f4c56f6350b40be3275ceff478ee
new head: 8a65fedaaaf8fd4b8ac2819ab81b4a4f47693905

----------------------------------------------------------------------------

6e06fa6: Added missing validity check on relocation address.

4ebc6df: Moved some 32-bit specific stuff to the 32 subdirectory.

8a65fed: Merge branch 'master' into x86_64
  
  Conflicts:
        src/system/kernel/arch/x86/arch_debug.cpp

                                      [ Alex Smith <alex@xxxxxxxxxxxxxxxx> ]

----------------------------------------------------------------------------

7 files changed, 32 insertions(+), 21 deletions(-)
headers/private/kernel/arch/x86/bios.h       |    4 +++
src/system/kernel/arch/x86/{ => 32}/apm.cpp  |    0
src/system/kernel/arch/x86/{ => 32}/bios.cpp |    0
src/system/kernel/arch/x86/{ => 32}/vm86.cpp |    0
src/system/kernel/arch/x86/Jamfile           |    6 ++--
src/system/kernel/arch/x86/arch_debug.cpp    |   11 ++++----
src/system/kernel/arch/x86/arch_elf.cpp      |   32 +++++++++++++---------

############################################################################

Commit:      6e06fa6f7ea099cec5247fa2e8409c9c8ab3c983

Author:      Alex Smith <alex@xxxxxxxxxxxxxxxx>
Date:        Thu Jul 12 13:06:29 2012 UTC

Added missing validity check on relocation address.

----------------------------------------------------------------------------

diff --git a/src/system/kernel/arch/x86/arch_elf.cpp 
b/src/system/kernel/arch/x86/arch_elf.cpp
index fee2673..111329a 100644
--- a/src/system/kernel/arch/x86/arch_elf.cpp
+++ b/src/system/kernel/arch/x86/arch_elf.cpp
@@ -25,6 +25,18 @@
 #endif
 
 
+#ifndef _BOOT_MODE
+static bool
+is_in_image(struct elf_image_info *image, addr_t address)
+{
+       return (address >= image->text_region.start
+                       && address < image->text_region.start + 
image->text_region.size)
+               || (address >= image->data_region.start
+                       && address < image->data_region.start + 
image->data_region.size);
+}
+#endif // !_BOOT_MODE
+
+
 #if !defined(__x86_64__) || defined(_BOOT_MODE)
 
 
@@ -45,18 +57,6 @@ static const char *kRelocations[] = {
 #endif
 
 
-#ifndef _BOOT_MODE
-static bool
-is_in_image(struct elf_image_info *image, addr_t address)
-{
-       return (address >= image->text_region.start
-                       && address < image->text_region.start + 
image->text_region.size)
-               || (address >= image->data_region.start
-                       && address < image->data_region.start + 
image->data_region.size);
-}
-#endif // !_BOOT_MODE
-
-
 #ifdef _BOOT_MODE
 status_t
 boot_arch_elf_relocate_rel(struct preloaded_elf32_image *image,
@@ -255,13 +255,19 @@ arch_elf_relocate_rela(struct elf_image_info *image,
                                relocValue = image->text_region.delta + 
rel[i].r_addend;
                                break;
                        default:
-                               dprintf("arch_elf_relocate_rel: unhandled 
relocation type %d\n",
+                               dprintf("arch_elf_relocate_rela: unhandled 
relocation type %d\n",
                                        type);
                                return B_BAD_DATA;
                }
 #ifdef _BOOT_MODE
                boot_elf64_set_relocation(relocAddr, relocValue);
 #else
+               if (!is_in_image(image, relocAddr)) {
+                       dprintf("arch_elf_relocate_rela: invalid offset %#lx\n",
+                               rel[i].r_offset);
+                       return B_BAD_ADDRESS;
+               }
+
                *(Elf64_Addr *)relocAddr = relocValue;
 #endif
        }

############################################################################

Commit:      4ebc6dfa682fa199a88ec06f0930df04369f34ac

Author:      Alex Smith <alex@xxxxxxxxxxxxxxxx>
Date:        Thu Jul 12 13:23:55 2012 UTC

Moved some 32-bit specific stuff to the 32 subdirectory.

----------------------------------------------------------------------------

diff --git a/headers/private/kernel/arch/x86/bios.h 
b/headers/private/kernel/arch/x86/bios.h
index c88fe77..145f08f 100644
--- a/headers/private/kernel/arch/x86/bios.h
+++ b/headers/private/kernel/arch/x86/bios.h
@@ -9,6 +9,8 @@
 #include <SupportDefs.h>
 
 
+#ifndef __x86_64__
+
 #define BIOS32_PCI_SERVICE     'ICP$'
 
 struct bios32_service {
@@ -29,4 +31,6 @@ status_t bios_init(void);
 }
 #endif
 
+#endif /* __x86_64__ */
+
 #endif /* ARCH_x86_BIOS_H */
diff --git a/src/system/kernel/arch/x86/apm.cpp 
b/src/system/kernel/arch/x86/32/apm.cpp
similarity index 100%
rename from src/system/kernel/arch/x86/apm.cpp
rename to src/system/kernel/arch/x86/32/apm.cpp
diff --git a/src/system/kernel/arch/x86/bios.cpp 
b/src/system/kernel/arch/x86/32/bios.cpp
similarity index 100%
rename from src/system/kernel/arch/x86/bios.cpp
rename to src/system/kernel/arch/x86/32/bios.cpp
diff --git a/src/system/kernel/arch/x86/vm86.cpp 
b/src/system/kernel/arch/x86/32/vm86.cpp
similarity index 100%
rename from src/system/kernel/arch/x86/vm86.cpp
rename to src/system/kernel/arch/x86/32/vm86.cpp
diff --git a/src/system/kernel/arch/x86/Jamfile 
b/src/system/kernel/arch/x86/Jamfile
index 8834924..2d41509 100644
--- a/src/system/kernel/arch/x86/Jamfile
+++ b/src/system/kernel/arch/x86/Jamfile
@@ -41,22 +41,22 @@ if $(TARGET_ARCH) = x86_64 {
        SEARCH_SOURCE += [ FDirName $(SUBDIR) paging pae ] ;
 
        archSpecificSources =
+               apm.cpp
                arch.S
+               bios.cpp
                cpuid.S
                int.cpp
                interrupts.S
                thread.cpp
+               vm86.cpp
 
                arch_commpage.cpp
                arch_debug.cpp
                arch_user_debugger.cpp
-               apm.cpp
-               bios.cpp
                ioapic.cpp
                irq_routing_table.cpp
                msi.cpp
                syscall.S
-               vm86.cpp
                x86_signals.cpp
                x86_signals_asm.S
                x86_syscalls.cpp

############################################################################

Commit:      8a65fedaaaf8fd4b8ac2819ab81b4a4f47693905

Author:      Alex Smith <alex@xxxxxxxxxxxxxxxx>
Date:        Thu Jul 12 15:32:12 2012 UTC

Merge branch 'master' into x86_64

Conflicts:
        src/system/kernel/arch/x86/arch_debug.cpp

----------------------------------------------------------------------------


Other related posts:

  • » [haiku-commits] BRANCH xyzzy-github.x86_64 - in src/system/kernel/arch/x86: . 32 - xyzzy-github . x86_64