* Use objects rather than archive when linking ntoskrnl
* Remove unused file except.s
* Remove duplicate strtok() in ntoskrnl
Modified: branches/xmlbuildsystem/reactos/ntoskrnl/kd/gdbstub.c
Modified: branches/xmlbuildsystem/reactos/ntoskrnl/ntoskrnl.xml
Deleted: branches/xmlbuildsystem/reactos/ntoskrnl/rtl/i386/except.s
Modified:
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler
.cpp
Modified:
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler
.h
_____
Modified: branches/xmlbuildsystem/reactos/ntoskrnl/kd/gdbstub.c
--- branches/xmlbuildsystem/reactos/ntoskrnl/kd/gdbstub.c
2005-01-15 17:59:06 UTC (rev 13061)
+++ branches/xmlbuildsystem/reactos/ntoskrnl/kd/gdbstub.c
2005-01-15 19:00:35 UTC (rev 13062)
@@ -163,56 +163,6 @@
"Blocked" /* THREAD_STATE_BLOCKED */
};
-char *
-strtok(char *s, const char *delim)
-{
- const char *spanp;
- int c, sc;
- char *tok;
- static char *last;
-
-
- if (s == NULL && (s = last) == NULL)
- return (NULL);
-
- /*
- * Skip (span) leading delimiters (s += strspn(s, delim), sort of).
- */
- cont:
- c = *s++;
- for (spanp = delim; (sc = *spanp++) != 0;) {
- if (c == sc)
- goto cont;
- }
-
- if (c == 0) { /* no non-delimiter characters
*/
- last = NULL;
- return (NULL);
- }
- tok = s - 1;
-
- /*
- * Scan token (scan for delimiters: s += strcspn(s, delim), sort of).
- * Note that delim must have one NUL; we stop if we see that, too.
- */
- for (;;) {
- c = *s++;
- spanp = delim;
- do {
- if ((sc = *spanp++) == c) {
- if (c == 0)
- s = NULL;
- else
- s[-1] = 0;
- last = s;
- return (tok);
- }
- } while (sc != 0);
- }
- /* NOTREACHED */
-}
-
-
LONG
HexValue (CHAR ch)
{
_____
Modified: branches/xmlbuildsystem/reactos/ntoskrnl/ntoskrnl.xml
--- branches/xmlbuildsystem/reactos/ntoskrnl/ntoskrnl.xml
2005-01-15 17:59:06 UTC (rev 13061)
+++ branches/xmlbuildsystem/reactos/ntoskrnl/ntoskrnl.xml
2005-01-15 19:00:35 UTC (rev 13062)
@@ -345,7 +345,6 @@
<file>aulldiv.s</file>
<file>aullrem.s</file>
<file>aullshr.s</file>
- <file>except.s</file>
<file>exception.c</file>
<file>seh.s</file>
</directory>
_____
Deleted: branches/xmlbuildsystem/reactos/ntoskrnl/rtl/i386/except.s
--- branches/xmlbuildsystem/reactos/ntoskrnl/rtl/i386/except.s
2005-01-15 17:59:06 UTC (rev 13061)
+++ branches/xmlbuildsystem/reactos/ntoskrnl/rtl/i386/except.s
2005-01-15 19:00:35 UTC (rev 13062)
@@ -1,291 +0,0 @@
-/* $Id$
- *
- * COPYRIGHT: See COPYING in the top level directory
- * PROJECT: ReactOS kernel
- * PURPOSE: Kernel-mode exception support for IA-32
- * FILE: ntoskrnl/rtl/i386/except.s
- * PROGRAMER: Casper S. Hornstrup
(chorns(a)users.sourceforge.net)
- * NOTES: This file is shared with
lib/ntdll/rtl/i386/except.s.
- * Please keep them in sync.
- */
-
-#define EXCEPTION_UNWINDING 0x02
-
-#define EREC_FLAGS 0x04
-
-#define ExceptionContinueExecution 0
-#define ExceptionContinueSearch 1
-#define ExceptionNestedException 2
-#define ExceptionCollidedUnwind 3
-
-.globl _RtlpExecuteHandlerForException
-.globl _RtlpExecuteHandlerForUnwind
-
-#define CONTEXT_FLAGS 0x00
-#define CONTEXT_SEGGS 0x8C
-#define CONTEXT_SEGFS 0x90
-#define CONTEXT_SEGES 0x94
-#define CONTEXT_SEGDS 0x98
-#define CONTEXT_EDI 0x9C
-#define CONTEXT_ESI 0xA0
-#define CONTEXT_EBX 0xA4
-#define CONTEXT_EDX 0xA8
-#define CONTEXT_ECX 0xAC
-#define CONTEXT_EAX 0xB0
-#define CONTEXT_EBP 0xB4
-#define CONTEXT_EIP 0xB8
-#define CONTEXT_SEGCS 0xBC
-#define CONTEXT_EFLAGS 0xC0
-#define CONTEXT_ESP 0xC4
-#define CONTEXT_SEGSS 0xC8
-
-
-#define RCC_CONTEXT 0x08
-
-// EAX = value to print
-_do_debug:
- pushal
- pushl %eax
- call _AsmDebug@4
- popal
- ret
-
-#ifndef __NTOSKRNL__
-
-//
-// VOID
-// RtlpCaptureContext(PCONTEXT pContext);
-//
-// Parameters:
-// [ESP+08h] - PCONTEXT_X86 pContext
-// Registers:
-// None
-// Returns:
-// Nothing
-// Notes:
-// Grabs the current CPU context.
-.globl _RtlpCaptureContext
-_RtlpCaptureContext:
- pushl %ebp
- movl %esp, %ebp
- movl RCC_CONTEXT(%ebp), %edx // EDX = Address of
context structure
-
- cld
- pushf
- pop %eax
- movl %eax, CONTEXT_EFLAGS(%edx)
- xorl %eax, %eax
- movl %eax, CONTEXT_EAX(%edx)
- movl %eax, CONTEXT_EBX(%edx)
- movl %eax, CONTEXT_ECX(%edx)
- movl %eax, CONTEXT_EDX(%edx)
- movl %eax, CONTEXT_ESI(%edx)
- movl %eax, CONTEXT_EDI(%edx)
- movl %cs, %eax
- movl %eax, CONTEXT_SEGCS(%edx)
- movl %ds, %eax
- movl %eax, CONTEXT_SEGDS(%edx)
- movl %es, %eax
- movl %eax, CONTEXT_SEGES(%edx)
- movl %fs, %eax
- movl %eax, CONTEXT_SEGFS(%edx)
- movl %gs, %eax
- movl %eax, CONTEXT_SEGGS(%edx)
- movl %ss, %eax
- movl %eax, CONTEXT_SEGSS(%edx)
-
- //
- // STACK LAYOUT: - (ESP to put in context structure)
- // - RETURN ADDRESS OF CALLER OF CALLER
- // - EBP OF CALLER OF CALLER
- // ...
- // - RETURN ADDRESS OF CALLER
- // - EBP OF CALLER
- // ...
- //
-
- // Get return address of the caller of the caller of this
function
- movl %ebp, %ebx
- //movl 4(%ebx), %eax // EAX = return address
of caller
- movl (%ebx), %ebx // EBX = EBP of caller
-
- movl 4(%ebx), %eax // EAX = return address
of caller of caller
- movl (%ebx), %ebx // EBX = EBP of caller
of caller
-
- movl %eax, CONTEXT_EIP(%edx) // EIP = return address of
caller of caller
- movl %ebx, CONTEXT_EBP(%edx) // EBP = EBP of caller of caller
- addl $8, %ebx
- movl %ebx, CONTEXT_ESP(%edx) // ESP = EBP of caller of caller
+ 8
-
- movl %ebp, %esp
- popl %ebp
- ret
-
-#endif /* !__NTOSKRNL__ */
-
-#define REH_ERECORD 0x08
-#define REH_RFRAME 0x0C
-#define REH_CONTEXT 0x10
-#define REH_DCONTEXT 0x14
-#define REH_EROUTINE 0x18
-
-// Parameters:
-// None
-// Registers:
-// [EBP+08h] - PEXCEPTION_RECORD ExceptionRecord
-// [EBP+0Ch] - PEXCEPTION_REGISTRATION RegistrationFrame
-// [EBP+10h] - PVOID Context
-// [EBP+14h] - PVOID DispatcherContext
-// [EBP+18h] - PEXCEPTION_HANDLER ExceptionRoutine
-// EDX - Address of protecting exception handler
-// Returns:
-// EXCEPTION_DISPOSITION
-// Notes:
-// Setup the protecting exception handler and call the exception
-// handler in the right context.
-_RtlpExecuteHandler:
- pushl %ebp
- movl %esp, %ebp
- pushl REH_RFRAME(%ebp)
-
- pushl %edx
- pushl %fs:0x0
- movl %esp, %fs:0x0
-
- // Prepare to call the exception handler
- pushl REH_DCONTEXT(%ebp)
- pushl REH_CONTEXT(%ebp)
- pushl REH_RFRAME(%ebp)
- pushl REH_ERECORD(%ebp)
-
- // Now call the exception handler
- movl REH_EROUTINE(%ebp), %eax
- call *%eax
-
- cmpl $-1, %fs:0x0
- jne .reh_stack_looks_ok
-
- // This should not happen
- pushl 0
- pushl 0
- pushl 0
- pushl 0
- call _RtlAssert@16
-
-.reh_loop:
- jmp .reh_loop
-
-.reh_stack_looks_ok:
- movl %fs:0x0, %esp
-
- // Return to the 'front-end' for this function
- popl %fs:0x0
- movl %ebp, %esp
- popl %ebp
- ret
-
-
-#define REP_ERECORD 0x04
-#define REP_RFRAME 0x08
-#define REP_CONTEXT 0x0C
-#define REP_DCONTEXT 0x10
-
-// Parameters:
-// [ESP+04h] - PEXCEPTION_RECORD ExceptionRecord
-// [ESP+08h] - PEXCEPTION_REGISTRATION RegistrationFrame
-// [ESP+0Ch] - PCONTEXT Context
-// [ESP+10h] - PVOID DispatcherContext
-// Registers:
-// None
-// Returns:
-// EXCEPTION_DISPOSITION
-// Notes:
-// This exception handler protects the exception handling
-// mechanism by detecting nested exceptions.
-_RtlpExceptionProtector:
- movl $ExceptionContinueSearch, %eax
- movl REP_ERECORD(%esp), %ecx
- testl $EXCEPTION_UNWINDING, EREC_FLAGS(%ecx)
- jnz .rep_end
-
- // Unwinding is not taking place, so return
ExceptionNestedException
-
- // Set DispatcherContext field to the exception registration for
the
- // exception handler that executed when a nested exception occurred
- movl REP_DCONTEXT(%esp), %ecx
- movl REP_RFRAME(%esp), %eax
- movl %eax, (%ecx)
- movl $ExceptionNestedException, %eax
-
-.rep_end:
- ret
-
-
-// Parameters:
-// [ESP+04h] - PEXCEPTION_RECORD ExceptionRecord
-// [ESP+08h] - PEXCEPTION_REGISTRATION RegistrationFrame
-// [ESP+0Ch] - PCONTEXT Context
-// [ESP+10h] - PVOID DispatcherContext
-// [ESP+14h] - PEXCEPTION_HANDLER ExceptionHandler
-// Registers:
-// None
-// Returns:
-// EXCEPTION_DISPOSITION
-// Notes:
-// Front-end
-_RtlpExecuteHandlerForException:
- movl $_RtlpExceptionProtector, %edx
- jmp _RtlpExecuteHandler
-
-
-#define RUP_ERECORD 0x04
-#define RUP_RFRAME 0x08
-#define RUP_CONTEXT 0x0C
-#define RUP_DCONTEXT 0x10
-
-// Parameters:
-// [ESP+04h] - PEXCEPTION_RECORD ExceptionRecord
-// [ESP+08h] - PEXCEPTION_REGISTRATION RegistrationFrame
-// [ESP+0Ch] - PCONTEXT Context
-// [ESP+10h] - PVOID DispatcherContext
-// Registers:
-// None
-// Returns:
-// EXCEPTION_DISPOSITION
-// Notes:
-// This exception handler protects the exception handling
-// mechanism by detecting collided unwinds.
-_RtlpUnwindProtector:
- movl $ExceptionContinueSearch, %eax
- movl %ecx, RUP_ERECORD(%esp)
- testl $EXCEPTION_UNWINDING, EREC_FLAGS(%ecx)
- jz .rup_end
-
- // Unwinding is taking place, so return ExceptionCollidedUnwind
-
- movl RUP_RFRAME(%esp), %ecx
- movl RUP_DCONTEXT(%esp), %edx
-
- // Set DispatcherContext field to the exception registration for
the
- // exception handler that executed when a collision occurred
- movl RUP_RFRAME(%ecx), %eax
- movl %eax, (%edx)
- movl $ExceptionCollidedUnwind, %eax
-
-.rup_end:
- ret
-
-
-// Parameters:
-// [ESP+04h] - PEXCEPTION_RECORD ExceptionRecord
-// [ESP+08h] - PEXCEPTION_REGISTRATION RegistrationFrame
-// [ESP+0Ch] - PCONTEXT Context
-// [ESP+10h] - PVOID DispatcherContext
-// [ESP+14h] - PEXCEPTION_HANDLER ExceptionHandler
-// Registers:
-// None
-// Returns:
-// EXCEPTION_DISPOSITION
-_RtlpExecuteHandlerForUnwind:
- movl $_RtlpUnwindProtector, %edx
- jmp _RtlpExecuteHandler
_____
Modified:
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler
.cpp
---
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler
.cpp 2005-01-15 17:59:06 UTC (rev 13061)
+++
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler
.cpp 2005-01-15 19:00:35 UTC (rev 13062)
@@ -588,6 +588,13 @@
}
string
+MingwModuleHandler::GetObjectsMacro ( const Module& module ) const
+{
+ return ssprintf ( "$(%s_OBJS)",
+ module.name.c_str () );
+}
+
+string
MingwModuleHandler::GetLinkerMacro ( const Module& module ) const
{
return ssprintf ( "$(%s_LFLAGS)",
@@ -840,9 +847,9 @@
MingwKernelModuleHandler::GenerateKernelModuleTarget ( const Module&
module )
{
static string ros_junk ( "$(ROS_TEMPORARY)" );
- string target ( FixupTargetFilename(module.GetPath()) );
- string workingDirectory = GetWorkingDirectory ( );
- string archiveFilename = GetModuleArchiveFilename ( module );
+ string target ( FixupTargetFilename (module.GetPath ()) );
+ string workingDirectory = GetWorkingDirectory ();
+ string objectsMacro = GetObjectsMacro ( module );
string importLibraryDependencies = GetImportLibraryDependencies
( module );
string base_tmp = ros_junk + module.name + ".base.tmp";
string junk_tmp = ros_junk + module.name + ".junk.tmp";
@@ -854,7 +861,7 @@
fprintf ( fMakefile, "%s: %s %s\n",
target.c_str (),
- archiveFilename.c_str (),
+ objectsMacro.c_str (),
importLibraryDependencies.c_str () );
fprintf ( fMakefile,
"\t${gcc} %s %s -Wl,--base-file,%s -o %s %s %s\n",
@@ -862,7 +869,7 @@
gccOptions.c_str (),
base_tmp.c_str (),
junk_tmp.c_str (),
- archiveFilename.c_str (),
+ objectsMacro.c_str (),
importLibraryDependencies.c_str () );
fprintf ( fMakefile,
"\t${rm} %s\n",
@@ -871,7 +878,6 @@
"\t${dlltool} --dllname %s --base-file %s --def
ntoskrnl/ntoskrnl.def --output-exp %s --kill-at\n",
target.c_str (),
base_tmp.c_str (),
- //FixupTargetFilename ( module.GetBasePath () + SSEP +
module.importLibrary->definition ).c_str (),
temp_exp.c_str () );
fprintf ( fMakefile,
"\t${rm} %s\n",
@@ -882,7 +888,7 @@
gccOptions.c_str (),
temp_exp.c_str (),
target.c_str (),
- archiveFilename.c_str (),
+ objectsMacro.c_str (),
importLibraryDependencies.c_str () );
fprintf ( fMakefile,
"\t${rm} %s\n\n",
_____
Modified:
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler
.h
---
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler
.h 2005-01-15 17:59:06 UTC (rev 13061)
+++
branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler
.h 2005-01-15 19:00:35 UTC (rev 13062)
@@ -36,6 +36,7 @@
std::string GetInvocationParameters ( const Invoke& invoke )
const;
void GenerateInvocations ( const Module& module ) const;
void GeneratePreconditionDependencies ( const Module& module )
const;
+ std::string GetObjectsMacro ( const Module& module ) const;
std::string GetLinkerMacro ( const Module& module ) const;
std::string GenerateMacros ( const Module& module,
const std::string& cflags_macro,