Export functions in .def files
Deleted: branches/xmlbuildsystem/reactos/drivers/net/afd/afd.def
Modified: branches/xmlbuildsystem/reactos/drivers/net/afd/afd.xml
Modified: branches/xmlbuildsystem/reactos/lib/kernel32/kernel32.def
Modified: branches/xmlbuildsystem/reactos/lib/kernel32/kernel32.xml
Modified: branches/xmlbuildsystem/reactos/lib/ntdll/ntdll.xml
Modified: branches/xmlbuildsystem/reactos/lib/ntdll/rtl/i386/exception.c
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler.cpp
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler.h

Deleted: branches/xmlbuildsystem/reactos/drivers/net/afd/afd.def
--- branches/xmlbuildsystem/reactos/drivers/net/afd/afd.def	2005-01-16 14:23:35 UTC (rev 13079)
+++ branches/xmlbuildsystem/reactos/drivers/net/afd/afd.def	2005-01-16 16:18:52 UTC (rev 13080)
@@ -1,7 +0,0 @@
-; Ancillary Function Driver - ReactOS Operating System
-
-LIBRARY AFDTEST.SYS
-
-EXPORTS
-
-; EOF

Modified: branches/xmlbuildsystem/reactos/drivers/net/afd/afd.xml
--- branches/xmlbuildsystem/reactos/drivers/net/afd/afd.xml	2005-01-16 14:23:35 UTC (rev 13079)
+++ branches/xmlbuildsystem/reactos/drivers/net/afd/afd.xml	2005-01-16 16:18:52 UTC (rev 13080)
@@ -1,5 +1,4 @@
 <module name="afd" type="kernelmodedriver">
-	<importlibrary definition="afd.def" />
 	<include base="afd">include</include>
 	<include base="ReactOS">include/afd</include>
 	<define name="__USE_W32API" />

Modified: branches/xmlbuildsystem/reactos/lib/kernel32/kernel32.def
--- branches/xmlbuildsystem/reactos/lib/kernel32/kernel32.def	2005-01-16 14:23:35 UTC (rev 13079)
+++ branches/xmlbuildsystem/reactos/lib/kernel32/kernel32.def	2005-01-16 16:18:52 UTC (rev 13080)
@@ -178,7 +178,7 @@
 EnumCalendarInfoA@16
 EnumCalendarInfoExA@16
 EnumCalendarInfoExW@16
-EnumCalendarInfoW@16
+;EnumCalendarInfoW@16
 EnumDateFormatsA@12
 EnumDateFormatsExA@12
 EnumDateFormatsExW@12
@@ -657,7 +657,7 @@
 OpenMutexA@12
 OpenMutexW@12
 OpenProcess@12
-OpenProfileUserMapping@0
+;OpenProfileUserMapping@0
 OpenSemaphoreA@12
 OpenSemaphoreW@12
 OpenThread@12
@@ -689,7 +689,7 @@
 QueryPerformanceFrequency@4
 QueueUserAPC@12
 QueueUserWorkItem@12
-QueryWin31IniFilesMappedToRegistry@16
+;QueryWin31IniFilesMappedToRegistry@16
 RaiseException@16
 ReadConsoleA@20
 ReadConsoleInputA@16

Modified: branches/xmlbuildsystem/reactos/lib/kernel32/kernel32.xml
--- branches/xmlbuildsystem/reactos/lib/kernel32/kernel32.xml	2005-01-16 14:23:35 UTC (rev 13079)
+++ branches/xmlbuildsystem/reactos/lib/kernel32/kernel32.xml	2005-01-16 16:18:52 UTC (rev 13080)
@@ -9,6 +9,9 @@
 	<library>pseh</library>
 	<library>rosrtl</library>
 	<library>ntdll</library>
+	<linkerflag>-lgcc</linkerflag>
+	<linkerflag>-nostartfiles</linkerflag>
+	<linkerflag>-nostdlib</linkerflag>
 	<invoke module="wmc">
 		<input>
 			<inputfile>kernel32.mc</inputfile>

Modified: branches/xmlbuildsystem/reactos/lib/ntdll/ntdll.xml
--- branches/xmlbuildsystem/reactos/lib/ntdll/ntdll.xml	2005-01-16 14:23:35 UTC (rev 13079)
+++ branches/xmlbuildsystem/reactos/lib/ntdll/ntdll.xml	2005-01-16 16:18:52 UTC (rev 13080)
@@ -6,6 +6,7 @@
 	<library>rosrtl</library>
 	<library>rtl</library>
 	<library>string</library>
+	<linkerflag>-lgcc</linkerflag>
 	<directory name="csr">
 		<file>capture.c</file>
 		<file>lpc.c</file>

Modified: branches/xmlbuildsystem/reactos/lib/ntdll/rtl/i386/exception.c
--- branches/xmlbuildsystem/reactos/lib/ntdll/rtl/i386/exception.c	2005-01-16 14:23:35 UTC (rev 13079)
+++ branches/xmlbuildsystem/reactos/lib/ntdll/rtl/i386/exception.c	2005-01-16 16:18:52 UTC (rev 13080)
@@ -251,23 +251,6 @@
  * @implemented
  */
 VOID STDCALL
-RtlRaiseStatus(NTSTATUS Status)
-{
-  EXCEPTION_RECORD ExceptionRecord;
-
-  DPRINT("RtlRaiseStatus(Status 0x%.08x)\n", Status);
-
-  ExceptionRecord.ExceptionCode    = Status;
-  ExceptionRecord.ExceptionRecord  = NULL;
-  ExceptionRecord.NumberParameters = 0;
-  ExceptionRecord.ExceptionFlags   = EXCEPTION_NONCONTINUABLE;
-  RtlRaiseException (& ExceptionRecord);
-}
-
-/*
- * @implemented
- */
-VOID STDCALL
 RtlUnwind(PEXCEPTION_REGISTRATION RegistrationFrame,
   PVOID ReturnAddress,
   PEXCEPTION_RECORD ExceptionRecord,

Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler.cpp
--- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler.cpp	2005-01-16 14:23:35 UTC (rev 13079)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler.cpp	2005-01-16 16:18:52 UTC (rev 13080)
@@ -532,21 +532,60 @@
 	                                  sourceFilename.c_str () );
 }
 
-string
+void
 MingwModuleHandler::GenerateLinkerCommand ( const Module& module,
                                             const string& linker,
                                             const string& linkerParameters,
                                             const string& objectFilenames ) const
 {
+	string targetName ( module.GetTargetName () );
 	string target ( FixupTargetFilename ( module.GetPath () ) );
 	string importLibraryDependencies = GetImportLibraryDependencies ( module );
-	return ssprintf ( "%s %s -o %s %s %s %s\n",
-	                  linker.c_str (),
-		              linkerParameters.c_str (),
-                      target.c_str (),
-                      objectFilenames.c_str (),
-                      importLibraryDependencies.c_str (),
-                      GetLinkerMacro ( module ).c_str () );
+	if ( module.importLibrary != NULL )
+	{
+		static string ros_junk ( "$(ROS_TEMPORARY)" );
+		string base_tmp = ros_junk + module.name + ".base.tmp";
+		string junk_tmp = ros_junk + module.name + ".junk.tmp";
+		string temp_exp = ros_junk + module.name + ".temp.exp";
+
+		fprintf ( fMakefile,
+		          "\t%s %s -Wl,--base-file,%s -o %s %s %s %s\n",
+		          linker.c_str (),
+		          linkerParameters.c_str (),
+		          base_tmp.c_str (),
+		          junk_tmp.c_str (),
+		          objectFilenames.c_str (),
+		          importLibraryDependencies.c_str (),
+		          GetLinkerMacro ( module ).c_str () );
+
+		fprintf ( fMakefile,
+	              "\t${dlltool} --dllname %s --base-file %s --def %s --output-exp %s --kill-at\n",
+	              targetName.c_str (),
+	              base_tmp.c_str (),
+		          FixupTargetFilename ( module.GetBasePath () + SSEP + module.importLibrary->definition ).c_str (),
+	              temp_exp.c_str () );
+
+		fprintf ( fMakefile,
+		          "\t%s %s %s -o %s %s %s %s\n\n",
+		          linker.c_str (),
+		          linkerParameters.c_str (),
+		          temp_exp.c_str (),
+		          target.c_str (),
+		          objectFilenames.c_str (),
+		          importLibraryDependencies.c_str (),
+		          GetLinkerMacro ( module ).c_str () );
+	}
+	else
+	{
+		fprintf ( fMakefile,
+		          "\t%s %s -o %s %s %s %s\n\n",
+		          linker.c_str (),
+		          linkerParameters.c_str (),
+		          target.c_str (),
+		          objectFilenames.c_str (),
+		          importLibraryDependencies.c_str (),
+		          GetLinkerMacro ( module ).c_str () );
+	}
 }
 
 void
@@ -1060,13 +1099,10 @@
 		          importLibraryDependencies.c_str () );
 
 		string linkerParameters ( "-Wl,--subsystem,native -Wl,--entry,_DriverEntry@8 -Wl,--image-base,0x10000 -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -mdll" );
-		string linkerCommand = GenerateLinkerCommand ( module,
-                                                       "${gcc}",
-                                                       linkerParameters,
-                                                       archiveFilename );
-		fprintf ( fMakefile,
-		          "\t%s\n\n",
-		          linkerCommand.c_str () );
+		GenerateLinkerCommand ( module,
+                                "${gcc}",
+                                linkerParameters,
+                                archiveFilename );
 	}
 	else
 	{
@@ -1117,13 +1153,10 @@
 		          importLibraryDependencies.c_str () );
 
 		string linkerParameters ( "-Wl,--subsystem,native -Wl,--entry,_DriverEntry@8 -Wl,--image-base,0x10000 -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -mdll" );
-		string linkerCommand = GenerateLinkerCommand ( module,
-                                                       "${gcc}",
-                                                       linkerParameters,
-                                                       archiveFilename );
-		fprintf ( fMakefile,
-		          "\t%s\n\n",
-		          linkerCommand.c_str () );
+		GenerateLinkerCommand ( module,
+                                "${gcc}",
+                                linkerParameters,
+                                archiveFilename );
 	}
 	else
 	{
@@ -1156,6 +1189,7 @@
 	static string ros_junk ( "$(ROS_TEMPORARY)" );
 	string target ( FixupTargetFilename ( module.GetPath () ) );
 	string workingDirectory = GetWorkingDirectory ( );
+	string objectFilenames = GetObjectFilenames ( module );
 	string archiveFilename = GetModuleArchiveFilename ( module );
 	string importLibraryDependencies = GetImportLibraryDependencies ( module );
 	
@@ -1171,13 +1205,10 @@
 		          importLibraryDependencies.c_str () );
 
 		string linkerParameters ( "-Wl,--subsystem,native -Wl,--entry,_DllMainCRTStartup@12 -Wl,--image-base,0x10000 -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -nostdlib -mdll" );
-		string linkerCommand = GenerateLinkerCommand ( module,
-                                                       "${gcc}",
-                                                       linkerParameters,
-                                                       archiveFilename );
-		fprintf ( fMakefile,
-		          "\t%s\n\n",
-		          linkerCommand.c_str () );
+		GenerateLinkerCommand ( module,
+                                "${gcc}",
+                                linkerParameters,
+                                objectFilenames );
 	}
 	else
 	{
@@ -1225,13 +1256,10 @@
 		          importLibraryDependencies.c_str () );
 
 		string linkerParameters ( "-Wl,--subsystem,console -Wl,--entry,_DllMain@12 -Wl,--image-base,0x10000 -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -mdll" );
-		string linkerCommand = GenerateLinkerCommand ( module,
-                                                       "${gcc}",
-                                                       linkerParameters,
-                                                       archiveFilename );
-		fprintf ( fMakefile,
-		          "\t%s\n\n",
-		          linkerCommand.c_str () );
+		GenerateLinkerCommand ( module,
+                                "${gcc}",
+                                linkerParameters,
+                                archiveFilename );
 	}
 	else
 	{
@@ -1279,13 +1307,10 @@
 		          importLibraryDependencies.c_str () );
 
 		string linkerParameters ( "-Wl,--subsystem,windows -Wl,--entry,_WinMainCRTStartup -Wl,--image-base,0x00400000 -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000" );
-		string linkerCommand = GenerateLinkerCommand ( module,
-                                                       "${gcc}",
-                                                       linkerParameters,
-                                                       objectFilenames );
-		fprintf ( fMakefile,
-		          "\t%s\n\n",
-		          linkerCommand.c_str () );
+		GenerateLinkerCommand ( module,
+                                "${gcc}",
+                                linkerParameters,
+                                objectFilenames );
 	}
 	else
 	{

Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler.h
--- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler.h	2005-01-16 14:23:35 UTC (rev 13079)
+++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler.h	2005-01-16 16:18:52 UTC (rev 13080)
@@ -41,10 +41,10 @@
 	std::string GetCFlagsMacro ( const Module& module ) const;
 	std::string GetObjectsMacro ( const Module& module ) const;
 	std::string GetLinkerMacro ( const Module& module ) const;
-	std::string GenerateLinkerCommand ( const Module& module,
-	                                    const std::string& linker,
-	                                    const std::string& linkerParameters,
-	                                    const std::string& objectFilenames ) const;
+	void GenerateLinkerCommand ( const Module& module,
+	                             const std::string& linker,
+	                             const std::string& linkerParameters,
+	                             const std::string& objectFilenames ) const;
 	void GenerateImportLibraryTargetIfNeeded ( const Module& module ) const;
 	static FILE* fMakefile;
 private: