Remove ExportDriver concept.
authorHervé Poussineau <hpoussin@reactos.org>
Mon, 30 Jul 2007 13:18:35 +0000 (13:18 +0000)
committerHervé Poussineau <hpoussin@reactos.org>
Mon, 30 Jul 2007 13:18:35 +0000 (13:18 +0000)
If you want a driver which exports some functions, simply set it as kernelmodedriver and add a .def file

svn path=/trunk/; revision=28043

16 files changed:
reactos/drivers/ksfilter/ks/ks.rbuild
reactos/drivers/network/ndis/ndis.rbuild
reactos/drivers/network/tcpip/tcpip.rbuild
reactos/drivers/network/tdi/tdi.rbuild
reactos/drivers/storage/class/class2/class2.rbuild
reactos/drivers/storage/ide/pciidex/pciidex.rbuild
reactos/drivers/storage/port/diskdump/diskdump.rbuild
reactos/drivers/storage/scsiport/scsiport.rbuild
reactos/drivers/video/videoprt/videoprt.rbuild
reactos/drivers/wdm/audio/drm/drmk/drmk.rbuild
reactos/drivers/wmi/wmilib.rbuild
reactos/subsystems/win32/win32k/win32k.rbuild
reactos/tools/rbuild/backend/mingw/modulehandler.cpp
reactos/tools/rbuild/bootstrap.cpp
reactos/tools/rbuild/module.cpp
reactos/tools/rbuild/rbuild.h

index 76fe44f..1418852 100644 (file)
@@ -1,4 +1,4 @@
-<module name="ks" type="exportdriver" installbase="system32/drivers" installname="ks.sys" allowwarnings="true">
+<module name="ks" type="kernelmodedriver" installbase="system32/drivers" installname="ks.sys" allowwarnings="true">
        <include base="ks">.</include>
        <include base="ks">..</include>
        <include base="ks">../include</include>
@@ -7,7 +7,7 @@
        <define name="__USE_W32API" />
        <define name="BUILDING_KS" />
        <define name="_NTDDK_" />
-    <define name="_COMDDK_" />
+       <define name="_COMDDK_" />
        <file>ks.rc</file>
        <file>allocators.c</file>
        <file>clocks.c</file>
index 9712375..654c9fa 100644 (file)
@@ -1,4 +1,4 @@
-<module name="ndis" type="exportdriver" installbase="system32/drivers" installname="ndis.sys">
+<module name="ndis" type="kernelmodedriver" installbase="system32/drivers" installname="ndis.sys">
        <importlibrary definition="ndis.def"></importlibrary>
        <include base="ndis">include</include>
        <define name="NDIS_WRAPPER" />
index 18ee332..4331086 100644 (file)
@@ -1,4 +1,4 @@
-<module name="tcpip" type="exportdriver" installbase="system32/drivers" installname="tcpip.sys">
+<module name="tcpip" type="kernelmodedriver" installbase="system32/drivers" installname="tcpip.sys">
        <importlibrary definition="tcpip.def"></importlibrary>
        <include base="tcpip">include</include>
        <include base="oskittcp">include</include>
index 73db4d7..19dd0b4 100644 (file)
@@ -1,4 +1,4 @@
-<module name="tdi" type="exportdriver" installbase="system32/drivers" installname="tdi.sys">
+<module name="tdi" type="kernelmodedriver" installbase="system32/drivers" installname="tdi.sys">
        <importlibrary definition="misc/tdi.def"></importlibrary>
        <define name="__USE_W32API" />
        <library>ntoskrnl</library>
index f6a114e..39a12fb 100644 (file)
@@ -1,4 +1,4 @@
-<module name="class2" type="exportdriver" installbase="system32/drivers" installname="class2.sys">
+<module name="class2" type="kernelmodedriver" installbase="system32/drivers" installname="class2.sys">
        <bootstrap base="$(CDOUTPUT)" />
        <define name="__USE_W32API" />
        <importlibrary definition="class2.def" />
index ec191f5..4dcbabe 100644 (file)
@@ -1,4 +1,4 @@
-<module name="pciidex" type="exportdriver" installbase="system32/drivers" installname="pciidex.sys">
+<module name="pciidex" type="kernelmodedriver" installbase="system32/drivers" installname="pciidex.sys">
        <importlibrary definition="pciidex.def" />
        <define name="__USE_W32API" />
        <library>ntoskrnl</library>
index 7f92679..6d9956e 100644 (file)
@@ -1,4 +1,4 @@
-<module name="diskdump" type="exportdriver" installbase="system32/drivers" installname="diskdump.sys">
+<module name="diskdump" type="kernelmodedriver" installbase="system32/drivers" installname="diskdump.sys">
        <bootstrap base="$(CDOUTPUT)" />
        <define name="__USE_W32API" />
        <include base="ReactOS">include/reactos/drivers</include>
index 75425c5..105caa7 100644 (file)
@@ -1,4 +1,4 @@
-<module name="scsiport" type="exportdriver" installbase="system32/drivers" installname="scsiport.sys">\r
+<module name="scsiport" type="kernelmodedriver" installbase="system32/drivers" installname="scsiport.sys">\r
        <bootstrap base="$(CDOUTPUT)" />\r
        <define name="__USE_W32API" />\r
        <define name="_SCSIPORT_" />\r
index 90b9387..6e0cd42 100644 (file)
@@ -1,4 +1,4 @@
-<module name="videoprt" type="exportdriver" installbase="system32/drivers" installname="videoprt.sys">
+<module name="videoprt" type="kernelmodedriver" installbase="system32/drivers" installname="videoprt.sys">
        <importlibrary definition="videoprt.def" />
        <include base="videoprt">.</include>
        <include base="ntoskrnl">include</include>
index a053718..7553812 100644 (file)
@@ -1,4 +1,4 @@
-<module name="drmk" type="exportdriver" installbase="system32/drivers" installname="drmk.sys" allowwarnings="true">
+<module name="drmk" type="kernelmodedriver" installbase="system32/drivers" installname="drmk.sys" allowwarnings="true">
        <include base="drmk">.</include>
        <include base="drmk">..</include>
        <include base="drmk">../include</include>
index 86a9060..f7c7f5b 100644 (file)
@@ -1,4 +1,4 @@
-<module name="wmilib" type="exportdriver" installbase="system32/drivers" installname="wmilib.sys">
+<module name="wmilib" type="kernelmodedriver" installbase="system32/drivers" installname="wmilib.sys">
        <importlibrary definition="wmilib.def" />
        <include base="wmilib">.</include>
        <library>ntoskrnl</library>
index d03a01a..67f9d4e 100644 (file)
                <file>xpstubs.c</file>
        </directory>
 </module>
-<module name="win32k" type="exportdriver" installbase="system32" installname="win32k.sys" allowwarnings="true">
+<module name="win32k" type="kernelmodedriver" installbase="system32" installname="win32k.sys" allowwarnings="true">
        <importlibrary definition="win32k.def" />
        <library>win32k_base</library>
        <library>pseh</library>
index f482074..b1035ae 100644 (file)
@@ -226,7 +226,6 @@ MingwModuleHandler::InstanciateHandler (
                        handler = new MingwWin32OCXModuleHandler ( module );
                        break;
                case KernelModeDriver:
-        case ExportDriver: // maybe change this later
                        handler = new MingwKernelModeDriverModuleHandler ( module );
                        break;
                case BootLoader:
@@ -1626,7 +1625,19 @@ MingwModuleHandler::GenerateLinkerCommand (
        fprintf ( fMakefile, "\t$(ECHO_LD)\n" );
        string targetName ( module.GetTargetName () );
 
-       if ( module.IsDLL () )
+       if ( !module.IsDLL () )
+       {
+               fprintf ( fMakefile,
+                         "\t%s %s %s -o %s %s %s %s\n",
+                         linker.c_str (),
+                         linkerParameters.c_str (),
+                         linkerScriptArgument.c_str (),
+                         target.c_str (),
+                         objectsMacro.c_str (),
+                         libsMacro.c_str (),
+                         GetLinkerMacro ().c_str () );
+       }
+       else if ( module.HasImportLibrary () )
        {
                string temp_exp = ros_temp + module.name + ".temp.exp";
                CLEAN_FILE ( temp_exp );
@@ -1661,6 +1672,12 @@ MingwModuleHandler::GenerateLinkerCommand (
        }
        else
        {
+               /* XXX: need to workaround binutils bug, which exports
+                * all functions in a dll if no .def file or an empty
+                * one has been provided... */
+               /* See bug 1244 */
+               //printf ( "%s will have all its functions exported\n",
+               //         module.GetTargetName ().c_str () );
                fprintf ( fMakefile,
                          "\t%s %s %s -o %s %s %s %s\n",
                          linker.c_str (),
@@ -1670,12 +1687,6 @@ MingwModuleHandler::GenerateLinkerCommand (
                          objectsMacro.c_str (),
                          libsMacro.c_str (),
                          GetLinkerMacro ().c_str () );
-
-#if 0 // causes crashes sometimes
-               fprintf ( fMakefile,
-                         "\t${objcopy} -R .edata %s\n",
-                         target.c_str () );
-#endif
        }
 
        GenerateBuildMapCode ();
index bf8c4d2..32127a3 100644 (file)
@@ -43,7 +43,6 @@ Bootstrap::IsSupportedModuleType ( ModuleType type )
        {
                case Kernel:
                case KernelModeDLL:
-               case ExportDriver:
                case NativeDLL:
                case NativeCUI:
                case Win32DLL:
index 50266e4..0b7b783 100644 (file)
@@ -805,8 +805,6 @@ Module::GetModuleType ( const string& location, const XMLAttribute& attribute )
                return Kernel;
        if ( attribute.value == "kernelmodedll" )
                return KernelModeDLL;
-       if ( attribute.value == "exportdriver" )
-               return ExportDriver;
        if ( attribute.value == "kernelmodedriver" )
                return KernelModeDriver;
        if ( attribute.value == "nativedll" )
@@ -881,7 +879,6 @@ Module::GetDefaultModuleExtension () const
                        return ".ocx";
                case KernelModeDriver:
                case BootLoader:
-               case ExportDriver:
                        return ".sys";
                case BootSector:
                        return ".o";
@@ -916,7 +913,6 @@ Module::GetDefaultModuleEntrypoint () const
                        return "NtProcessStartup";
                case KernelModeDLL:
                case KernelModeDriver:
-               case ExportDriver:
                        return "DriverEntry@8";
                case NativeDLL:
                        return "DllMainCRTStartup@12";
@@ -978,7 +974,6 @@ Module::GetDefaultModuleBaseaddress () const
                        return "0x00400000";
                case KernelModeDLL:
                case KernelModeDriver:
-               case ExportDriver:
                        return "0x00010000";
                case BuildTool:
                case StaticLibrary:
@@ -1014,12 +1009,11 @@ Module::IsDLL () const
        {
                case Kernel:
                case KernelModeDLL:
-               case ExportDriver:
                case NativeDLL:
                case Win32DLL:
                case Win32OCX:
-                       return true;
                case KernelModeDriver:
+                       return true;
                case NativeCUI:
                case Win32CUI:
                case Test:
@@ -1053,7 +1047,6 @@ Module::GenerateInOutputTree () const
        {
                case Kernel:
                case KernelModeDLL:
-               case ExportDriver:
                case NativeDLL:
                case Win32DLL:
                case Win32OCX:
@@ -1547,11 +1540,10 @@ AutoRegister::IsSupportedModuleType ( ModuleType type )
        switch ( type )
        {
                case Win32DLL:
-        case Win32OCX:
+               case Win32OCX:
                        return true;
                case Kernel:
                case KernelModeDLL:
-               case ExportDriver:
                case NativeDLL:
                case NativeCUI:
                case Win32CUI:
index 538e615..56c0b6d 100644 (file)
@@ -270,7 +270,6 @@ enum ModuleType
        Alias = 19,
        BootProgram = 20,
        Win32SCR = 21,
-       ExportDriver = 22,
        IdlHeader = 23,
        IsoRegTest = 24,
        LiveIsoRegTest = 25,
@@ -322,7 +321,7 @@ public:
        bool allowWarnings;
        bool enabled;
        bool useHostStdlib;
-    bool isStartupLib;
+       bool isStartupLib;
 
        Module ( const Project& project,
                 const XMLElement& moduleNode,
@@ -346,7 +345,7 @@ public:
        void InvokeModule () const;
        void ProcessXML ();
        void GetSourceFilenames ( string_list& list,
-                                  bool includeGeneratedFiles ) const;
+                                 bool includeGeneratedFiles ) const;
 private:
        std::string GetDefaultModuleExtension () const;
        std::string GetDefaultModuleEntrypoint () const;