Remove ExportDriver concept.

If you want a driver which exports some functions, simply set it as kernelmodedriver and add a .def file

svn path=/trunk/; revision=28043
This commit is contained in:
Hervé Poussineau 2007-07-30 13:18:35 +00:00
parent 1c474e61da
commit 7855dd896f
16 changed files with 36 additions and 35 deletions

View 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 base="ks">..</include>
<include base="ks">../include</include> <include base="ks">../include</include>
@ -7,7 +7,7 @@
<define name="__USE_W32API" /> <define name="__USE_W32API" />
<define name="BUILDING_KS" /> <define name="BUILDING_KS" />
<define name="_NTDDK_" /> <define name="_NTDDK_" />
<define name="_COMDDK_" /> <define name="_COMDDK_" />
<file>ks.rc</file> <file>ks.rc</file>
<file>allocators.c</file> <file>allocators.c</file>
<file>clocks.c</file> <file>clocks.c</file>

View 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> <importlibrary definition="ndis.def"></importlibrary>
<include base="ndis">include</include> <include base="ndis">include</include>
<define name="NDIS_WRAPPER" /> <define name="NDIS_WRAPPER" />

View 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> <importlibrary definition="tcpip.def"></importlibrary>
<include base="tcpip">include</include> <include base="tcpip">include</include>
<include base="oskittcp">include</include> <include base="oskittcp">include</include>

View 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> <importlibrary definition="misc/tdi.def"></importlibrary>
<define name="__USE_W32API" /> <define name="__USE_W32API" />
<library>ntoskrnl</library> <library>ntoskrnl</library>

View 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)" /> <bootstrap base="$(CDOUTPUT)" />
<define name="__USE_W32API" /> <define name="__USE_W32API" />
<importlibrary definition="class2.def" /> <importlibrary definition="class2.def" />

View 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" /> <importlibrary definition="pciidex.def" />
<define name="__USE_W32API" /> <define name="__USE_W32API" />
<library>ntoskrnl</library> <library>ntoskrnl</library>

View 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)" /> <bootstrap base="$(CDOUTPUT)" />
<define name="__USE_W32API" /> <define name="__USE_W32API" />
<include base="ReactOS">include/reactos/drivers</include> <include base="ReactOS">include/reactos/drivers</include>

View file

@ -1,4 +1,4 @@
<module name="scsiport" type="exportdriver" installbase="system32/drivers" installname="scsiport.sys"> <module name="scsiport" type="kernelmodedriver" installbase="system32/drivers" installname="scsiport.sys">
<bootstrap base="$(CDOUTPUT)" /> <bootstrap base="$(CDOUTPUT)" />
<define name="__USE_W32API" /> <define name="__USE_W32API" />
<define name="_SCSIPORT_" /> <define name="_SCSIPORT_" />

View 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" /> <importlibrary definition="videoprt.def" />
<include base="videoprt">.</include> <include base="videoprt">.</include>
<include base="ntoskrnl">include</include> <include base="ntoskrnl">include</include>

View 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 base="drmk">..</include>
<include base="drmk">../include</include> <include base="drmk">../include</include>

View 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" /> <importlibrary definition="wmilib.def" />
<include base="wmilib">.</include> <include base="wmilib">.</include>
<library>ntoskrnl</library> <library>ntoskrnl</library>

View file

@ -160,7 +160,7 @@
<file>xpstubs.c</file> <file>xpstubs.c</file>
</directory> </directory>
</module> </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" /> <importlibrary definition="win32k.def" />
<library>win32k_base</library> <library>win32k_base</library>
<library>pseh</library> <library>pseh</library>

View file

@ -226,7 +226,6 @@ MingwModuleHandler::InstanciateHandler (
handler = new MingwWin32OCXModuleHandler ( module ); handler = new MingwWin32OCXModuleHandler ( module );
break; break;
case KernelModeDriver: case KernelModeDriver:
case ExportDriver: // maybe change this later
handler = new MingwKernelModeDriverModuleHandler ( module ); handler = new MingwKernelModeDriverModuleHandler ( module );
break; break;
case BootLoader: case BootLoader:
@ -1626,7 +1625,19 @@ MingwModuleHandler::GenerateLinkerCommand (
fprintf ( fMakefile, "\t$(ECHO_LD)\n" ); fprintf ( fMakefile, "\t$(ECHO_LD)\n" );
string targetName ( module.GetTargetName () ); 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"; string temp_exp = ros_temp + module.name + ".temp.exp";
CLEAN_FILE ( temp_exp ); CLEAN_FILE ( temp_exp );
@ -1661,6 +1672,12 @@ MingwModuleHandler::GenerateLinkerCommand (
} }
else 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, fprintf ( fMakefile,
"\t%s %s %s -o %s %s %s %s\n", "\t%s %s %s -o %s %s %s %s\n",
linker.c_str (), linker.c_str (),
@ -1670,12 +1687,6 @@ MingwModuleHandler::GenerateLinkerCommand (
objectsMacro.c_str (), objectsMacro.c_str (),
libsMacro.c_str (), libsMacro.c_str (),
GetLinkerMacro ().c_str () ); GetLinkerMacro ().c_str () );
#if 0 // causes crashes sometimes
fprintf ( fMakefile,
"\t${objcopy} -R .edata %s\n",
target.c_str () );
#endif
} }
GenerateBuildMapCode (); GenerateBuildMapCode ();

View file

@ -43,7 +43,6 @@ Bootstrap::IsSupportedModuleType ( ModuleType type )
{ {
case Kernel: case Kernel:
case KernelModeDLL: case KernelModeDLL:
case ExportDriver:
case NativeDLL: case NativeDLL:
case NativeCUI: case NativeCUI:
case Win32DLL: case Win32DLL:

View file

@ -805,8 +805,6 @@ Module::GetModuleType ( const string& location, const XMLAttribute& attribute )
return Kernel; return Kernel;
if ( attribute.value == "kernelmodedll" ) if ( attribute.value == "kernelmodedll" )
return KernelModeDLL; return KernelModeDLL;
if ( attribute.value == "exportdriver" )
return ExportDriver;
if ( attribute.value == "kernelmodedriver" ) if ( attribute.value == "kernelmodedriver" )
return KernelModeDriver; return KernelModeDriver;
if ( attribute.value == "nativedll" ) if ( attribute.value == "nativedll" )
@ -881,7 +879,6 @@ Module::GetDefaultModuleExtension () const
return ".ocx"; return ".ocx";
case KernelModeDriver: case KernelModeDriver:
case BootLoader: case BootLoader:
case ExportDriver:
return ".sys"; return ".sys";
case BootSector: case BootSector:
return ".o"; return ".o";
@ -916,7 +913,6 @@ Module::GetDefaultModuleEntrypoint () const
return "NtProcessStartup"; return "NtProcessStartup";
case KernelModeDLL: case KernelModeDLL:
case KernelModeDriver: case KernelModeDriver:
case ExportDriver:
return "DriverEntry@8"; return "DriverEntry@8";
case NativeDLL: case NativeDLL:
return "DllMainCRTStartup@12"; return "DllMainCRTStartup@12";
@ -978,7 +974,6 @@ Module::GetDefaultModuleBaseaddress () const
return "0x00400000"; return "0x00400000";
case KernelModeDLL: case KernelModeDLL:
case KernelModeDriver: case KernelModeDriver:
case ExportDriver:
return "0x00010000"; return "0x00010000";
case BuildTool: case BuildTool:
case StaticLibrary: case StaticLibrary:
@ -1014,12 +1009,11 @@ Module::IsDLL () const
{ {
case Kernel: case Kernel:
case KernelModeDLL: case KernelModeDLL:
case ExportDriver:
case NativeDLL: case NativeDLL:
case Win32DLL: case Win32DLL:
case Win32OCX: case Win32OCX:
return true;
case KernelModeDriver: case KernelModeDriver:
return true;
case NativeCUI: case NativeCUI:
case Win32CUI: case Win32CUI:
case Test: case Test:
@ -1053,7 +1047,6 @@ Module::GenerateInOutputTree () const
{ {
case Kernel: case Kernel:
case KernelModeDLL: case KernelModeDLL:
case ExportDriver:
case NativeDLL: case NativeDLL:
case Win32DLL: case Win32DLL:
case Win32OCX: case Win32OCX:
@ -1547,11 +1540,10 @@ AutoRegister::IsSupportedModuleType ( ModuleType type )
switch ( type ) switch ( type )
{ {
case Win32DLL: case Win32DLL:
case Win32OCX: case Win32OCX:
return true; return true;
case Kernel: case Kernel:
case KernelModeDLL: case KernelModeDLL:
case ExportDriver:
case NativeDLL: case NativeDLL:
case NativeCUI: case NativeCUI:
case Win32CUI: case Win32CUI:

View file

@ -270,7 +270,6 @@ enum ModuleType
Alias = 19, Alias = 19,
BootProgram = 20, BootProgram = 20,
Win32SCR = 21, Win32SCR = 21,
ExportDriver = 22,
IdlHeader = 23, IdlHeader = 23,
IsoRegTest = 24, IsoRegTest = 24,
LiveIsoRegTest = 25, LiveIsoRegTest = 25,
@ -322,7 +321,7 @@ public:
bool allowWarnings; bool allowWarnings;
bool enabled; bool enabled;
bool useHostStdlib; bool useHostStdlib;
bool isStartupLib; bool isStartupLib;
Module ( const Project& project, Module ( const Project& project,
const XMLElement& moduleNode, const XMLElement& moduleNode,
@ -346,7 +345,7 @@ public:
void InvokeModule () const; void InvokeModule () const;
void ProcessXML (); void ProcessXML ();
void GetSourceFilenames ( string_list& list, void GetSourceFilenames ( string_list& list,
bool includeGeneratedFiles ) const; bool includeGeneratedFiles ) const;
private: private:
std::string GetDefaultModuleExtension () const; std::string GetDefaultModuleExtension () const;
std::string GetDefaultModuleEntrypoint () const; std::string GetDefaultModuleEntrypoint () const;