Support for non-standard module base addresses
authorCasper Hornstrup <chorns@users.sourceforge.net>
Sat, 26 Feb 2005 17:11:06 +0000 (17:11 +0000)
committerCasper Hornstrup <chorns@users.sourceforge.net>
Sat, 26 Feb 2005 17:11:06 +0000 (17:11 +0000)
svn path=/branches/xmlbuildsystem/; revision=13755

reactos/ReactOS.xml
reactos/baseaddress.xml [new file with mode: 0644]
reactos/tools/rbuild/backend/mingw/modulehandler.cpp
reactos/tools/rbuild/module.cpp
reactos/tools/rbuild/rbuild.h
reactos/tools/rbuild/rbuild.txt

index 954593c..674ba55 100644 (file)
@@ -7,6 +7,8 @@
                </xi:fallback>\r
        </xi:include>\r
 \r
                </xi:fallback>\r
        </xi:include>\r
 \r
+       <xi:include href="baseaddress.xml" />\r
+\r
        <define name="_M_IX86" />\r
        <if property="DBG" value="1">\r
                <define name="DBG" value="1" />\r
        <define name="_M_IX86" />\r
        <if property="DBG" value="1">\r
                <define name="DBG" value="1" />\r
diff --git a/reactos/baseaddress.xml b/reactos/baseaddress.xml
new file mode 100644 (file)
index 0000000..99a0fdd
--- /dev/null
@@ -0,0 +1,89 @@
+<property name="BASEADDRESS_DINPUT8" value="0x00400000" />\r
+<property name="BASEADDRESS_DXDIAGN" value="0x00400000" />\r
+<property name="BASEADDRESS_NOTIFYHOOK" value="0x08000000" />\r
+<property name="BASEADDRESS_SECURE32" value="0x10000000" />\r
+<property name="BASEADDRESS_DEVENUM" value="0x35680000" />\r
+<property name="BASEADDRESS_DSOUND" value="0x50000000" />\r
+<property name="BASEADDRESS_GLU32" value="0x50000000" />\r
+<property name="BASEADDRESS_OPENGL32" value="0x50000000" />\r
+<property name="BASEADDRESS_SLAYER" value="0x5C7E0000" />\r
+<property name="BASEADDRESS_DINPUT" value="0x5F580000" />\r
+<property name="BASEADDRESS_TIMEDATE" value="0x64DA0000" />\r
+<property name="BASEADDRESS_SYSDM" value="0x64DD0000" />\r
+<property name="BASEADDRESS_NCPL" value="0x64EA0000" />\r
+<property name="BASEADDRESS_MAIN" value="0x64F40000" />\r
+<property name="BASEADDRESS_INTL" value="0x64FB0000" />\r
+<property name="BASEADDRESS_DESK" value="0x65080000" />\r
+<property name="BASEADDRESS_APPWIZ" value="0x65100000" />\r
+<property name="BASEADDRESS_ACCESS" value="0x65180000" />\r
+<property name="BASEADDRESS_HID" value="0x688F0000" />\r
+<property name="BASEADDRESS_PSXDLL" value="0x68eb0000" />\r
+<property name="BASEADDRESS_PSAPI" value="0x68f70000" />\r
+<property name="BASEADDRESS_MSIMG32" value="0x69cc0000" />\r
+<property name="BASEADDRESS_NETPLWIZ" value="0x6a240000" />\r
+<property name="BASEADDRESS_UNICODE" value="0x6b200000" />\r
+<property name="BASEADDRESS_DISPLAY" value="DISPLAY" />\r
+<property name="BASEADDRESS_CARDS" value="0x701a0000" />\r
+<property name="BASEADDRESS_WININET" value="0x70200000" />\r
+<property name="BASEADDRESS_ACLUI" value="0x71550000" />\r
+<property name="BASEADDRESS_SHDOCVW" value="0x71700000" />\r
+<property name="BASEADDRESS_MSWSOCK" value="0x71a30000" />\r
+<property name="BASEADDRESS_WSOCK32" value="0x71ab0000" />\r
+<property name="BASEADDRESS_ACLEDIT" value="0x71b70000" />\r
+<property name="BASEADDRESS_NETAPI32" value="0x71c00000" />\r
+<property name="BASEADDRESS_WINFAX" value="0x722C0000" />\r
+<property name="BASEADDRESS_DEVMGR" value="0x72a90000" />\r
+<property name="BASEADDRESS_WINSCARD" value="0x723D0000" />\r
+<property name="BASEADDRESS_COREDLL" value="0x73d80000" />\r
+<property name="BASEADDRESS_LZEXPAND" value="0x73d80000" />\r
+<property name="BASEADDRESS_USERENV" value="0x74850000" />\r
+<property name="BASEADDRESS_SYSSETUP" value="0x74a30000" />\r
+<property name="BASEADDRESS_OLEDLG" value="0x74d00000" />\r
+<property name="BASEADDRESS_SAMLIB" value="0x750C0000" />\r
+<property name="BASEADDRESS_CABINET" value="0x75120000" />\r
+<property name="BASEADDRESS_MSGINA" value="0x75970000" />\r
+<property name="BASEADDRESS_COMMCTRL" value="0x75e60000" />\r
+<property name="BASEADDRESS_IMM32" value="0x75e60000" />\r
+<property name="BASEADDRESS_RPCRT4" value="0x76000000" />\r
+<property name="BASEADDRESS_MIDIMAP" value="0x76600000" />\r
+<property name="BASEADDRESS_SHLWAPI" value="0x76120000" />\r
+<property name="BASEADDRESS_COMCTL32" value="0x76160000" />\r
+<property name="BASEADDRESS_COMDLG32" value="0x76200000" />\r
+<property name="BASEADDRESS_OLEAUT32" value="0x76260000" />\r
+<property name="BASEADDRESS_D3D8THK" value="0x76340000" />\r
+<property name="BASEADDRESS_RICHEDIT" value="0x76340000" />\r
+<property name="BASEADDRESS_TWAIN_32" value="0x76380000" />\r
+<property name="BASEADDRESS_LSASRV" value="0x76540000" />\r
+<property name="BASEADDRESS_MPR" value="0x76620000" />\r
+<property name="BASEADDRESS_ODBC32" value="0x76660000" />\r
+<property name="BASEADDRESS_SETUPAPI" value="0x76660000" />\r
+<property name="BASEADDRESS_GDIPLUS" value="0x76a00000" />\r
+<property name="BASEADDRESS_IMAGEHLP" value="0x76c90000" />\r
+<property name="BASEADDRESS_FMIFS" value="0x76df0000" />\r
+<property name="BASEADDRESS_SHELL32" value="0x77260000" />\r
+<property name="BASEADDRESS_IPHLPAPI" value="0x77300000" />\r
+<property name="BASEADDRESS_MSACM" value="0x77400000" />\r
+<property name="BASEADDRESS_MMDRV" value="0x77500000" />\r
+<property name="BASEADDRESS_CRTDLL" value="0x77630000" />\r
+<property name="BASEADDRESS_PACKET" value="0x77780000" />\r
+<property name="BASEADDRESS_W2_32" value="0x77780000" />\r
+<property name="BASEADDRESS_MSAFD" value="0x777a0000" />\r
+<property name="BASEADDRESS_IPRTPRIO" value="0x777c0000" />\r
+<property name="BASEADDRESS_SNMPAPI" value="0x777c0000" />\r
+<property name="BASEADDRESS_WINMM" value="0x777c0000" />\r
+<property name="BASEADDRESS_WS2HELP" value="0x777c0000" />\r
+<property name="BASEADDRESS_WSHIRDA" value="0x777c0000" />\r
+<property name="BASEADDRESS_WSHTCPIP" value="0x777c0000" />\r
+<property name="BASEADDRESS_WINSPOOL" value="0x77800000" />\r
+<property name="BASEADDRESS_OLE32" value="0x77a50000" />\r
+<property name="BASEADDRESS_OLEPRO32" value="0x77a50000" />\r
+<property name="BASEADDRESS_VERSION" value="0x77a90000" />\r
+<property name="BASEADDRESS_ADVAPI32" value="0x77dc0000" />\r
+<property name="BASEADDRESS_USER32" value="0x77e60000" />\r
+<property name="BASEADDRESS_GDI32" value="0x77ed0000" />\r
+<property name="BASEADDRESS_DNSAPI" value="0x77f00000" />\r
+<property name="BASEADDRESS_MSVCRT" value="0x78000000" />\r
+<property name="BASEADDRESS_MSVCRT20" value="0x78500000" />\r
+<property name="BASEADDRESS_EXPAT" value="0x79000000" />\r
+<property name="BASEADDRESS_KERNEL32" value="0x7C800000" />\r
+<property name="BASEADDRESS_NTDLL" value="0x7C900000" />\r
index a9dc3a1..54f25a6 100644 (file)
@@ -1340,9 +1340,10 @@ MingwKernelModuleHandler::GenerateKernelModuleTarget ( const Module& module )
        string base_tmp = ros_junk + module.name + ".base.tmp";\r
        string junk_tmp = ros_junk + module.name + ".junk.tmp";\r
        string temp_exp = ros_junk + module.name + ".temp.exp";\r
        string base_tmp = ros_junk + module.name + ".base.tmp";\r
        string junk_tmp = ros_junk + module.name + ".junk.tmp";\r
        string temp_exp = ros_junk + module.name + ".temp.exp";\r
-       string gccOptions = ssprintf ("-Wl,-T,%s" SSEP "ntoskrnl.lnk -Wl,--subsystem,native -Wl,--entry,%s -Wl,--image-base,0xC0000000 -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -mdll",\r
+       string gccOptions = ssprintf ("-Wl,-T,%s" SSEP "ntoskrnl.lnk -Wl,--subsystem,native -Wl,--entry,%s -Wl,--image-base,%s -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -mdll",\r
                                      module.GetBasePath ().c_str (),\r
                                      module.GetBasePath ().c_str (),\r
-                                     module.entrypoint.c_str () );\r
+                                     module.entrypoint.c_str (),\r
+                                     module.baseaddress.c_str () );\r
 \r
        GenerateMacrosAndTargetsTarget ( module );\r
 \r
 \r
        GenerateMacrosAndTargetsTarget ( module );\r
 \r
@@ -1466,8 +1467,9 @@ MingwKernelModeDLLModuleHandler::GenerateKernelModeDLLModuleTarget ( const Modul
                          archiveFilename.c_str (),\r
                          importLibraryDependencies.c_str () );\r
 \r
                          archiveFilename.c_str (),\r
                          importLibraryDependencies.c_str () );\r
 \r
-               string linkerParameters = ssprintf ( "-Wl,--subsystem,native -Wl,--entry,%s -Wl,--image-base,0x10000 -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -mdll",\r
-                                                    module.entrypoint.c_str () );\r
+               string linkerParameters = ssprintf ( "-Wl,--subsystem,native -Wl,--entry,%s -Wl,--image-base,%s -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -mdll",\r
+                                                    module.entrypoint.c_str (),\r
+                                                    module.baseaddress.c_str () );\r
                GenerateLinkerCommand ( module,\r
                                        "${gcc}",\r
                                        linkerParameters,\r
                GenerateLinkerCommand ( module,\r
                                        "${gcc}",\r
                                        linkerParameters,\r
@@ -1523,8 +1525,9 @@ MingwKernelModeDriverModuleHandler::GenerateKernelModeDriverModuleTarget ( const
                          archiveFilename.c_str (),\r
                          importLibraryDependencies.c_str () );\r
 \r
                          archiveFilename.c_str (),\r
                          importLibraryDependencies.c_str () );\r
 \r
-               string linkerParameters = ssprintf ( "-Wl,--subsystem,native -Wl,--entry,%s -Wl,--image-base,0x10000 -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -mdll",\r
-                                                    module.entrypoint.c_str () );\r
+               string linkerParameters = ssprintf ( "-Wl,--subsystem,native -Wl,--entry,%s -Wl,--image-base,%s -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -mdll",\r
+                                                    module.entrypoint.c_str (),\r
+                                                    module.baseaddress.c_str () );\r
                GenerateLinkerCommand ( module,\r
                                        "${gcc}",\r
                                        linkerParameters,\r
                GenerateLinkerCommand ( module,\r
                                        "${gcc}",\r
                                        linkerParameters,\r
@@ -1576,8 +1579,9 @@ MingwNativeDLLModuleHandler::GenerateNativeDLLModuleTarget ( const Module& modul
                          archiveFilename.c_str (),\r
                          importLibraryDependencies.c_str () );\r
 \r
                          archiveFilename.c_str (),\r
                          importLibraryDependencies.c_str () );\r
 \r
-               string linkerParameters = ssprintf ( "-Wl,--subsystem,native -Wl,--entry,%s -Wl,--image-base,0x10000 -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -nostdlib -mdll",\r
-                                                    module.entrypoint.c_str () );\r
+               string linkerParameters = ssprintf ( "-Wl,--subsystem,native -Wl,--entry,%s -Wl,--image-base,%s -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -nostdlib -mdll",\r
+                                                    module.entrypoint.c_str (),\r
+                                                    module.baseaddress.c_str () );\r
                GenerateLinkerCommand ( module,\r
                                        "${gcc}",\r
                                        linkerParameters,\r
                GenerateLinkerCommand ( module,\r
                                        "${gcc}",\r
                                        linkerParameters,\r
@@ -1633,8 +1637,9 @@ MingwNativeCUIModuleHandler::GenerateNativeCUIModuleTarget ( const Module& modul
                          archiveFilename.c_str (),\r
                          importLibraryDependencies.c_str () );\r
 \r
                          archiveFilename.c_str (),\r
                          importLibraryDependencies.c_str () );\r
 \r
-               string linkerParameters = ssprintf ( "-Wl,--subsystem,native -Wl,--entry,%s -Wl,--image-base,0x10000 -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -nostdlib",\r
-                                                    module.entrypoint.c_str () );\r
+               string linkerParameters = ssprintf ( "-Wl,--subsystem,native -Wl,--entry,%s -Wl,--image-base,%s -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -nostdlib",\r
+                                                    module.entrypoint.c_str (),\r
+                                                    module.baseaddress.c_str () );\r
                GenerateLinkerCommand ( module,\r
                                        "${gcc}",\r
                                        linkerParameters,\r
                GenerateLinkerCommand ( module,\r
                                        "${gcc}",\r
                                        linkerParameters,\r
@@ -1712,8 +1717,9 @@ MingwWin32DLLModuleHandler::GenerateWin32DLLModuleTarget ( const Module& module
                else\r
                        linker = "${gcc}";\r
 \r
                else\r
                        linker = "${gcc}";\r
 \r
-               string linkerParameters = ssprintf ( "-Wl,--subsystem,console -Wl,--entry,%s -Wl,--image-base,0x10000 -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -mdll",\r
-                                                   module.entrypoint.c_str () );\r
+               string linkerParameters = ssprintf ( "-Wl,--subsystem,console -Wl,--entry,%s -Wl,--image-base,%s -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -mdll",\r
+                                                    module.entrypoint.c_str (),\r
+                                                    module.baseaddress.c_str () );\r
                GenerateLinkerCommand ( module,\r
                                        linker,\r
                                        linkerParameters,\r
                GenerateLinkerCommand ( module,\r
                                        linker,\r
                                        linkerParameters,\r
@@ -1770,8 +1776,9 @@ MingwWin32CUIModuleHandler::GenerateWin32CUIModuleTarget ( const Module& module
                else\r
                        linker = "${gcc}";\r
 \r
                else\r
                        linker = "${gcc}";\r
 \r
-               string linkerParameters = ssprintf ( "-Wl,--subsystem,console -Wl,--entry,%s -Wl,--image-base,0x00400000 -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000",\r
-                                                    module.entrypoint.c_str () );\r
+               string linkerParameters = ssprintf ( "-Wl,--subsystem,console -Wl,--entry,%s -Wl,--image-base,%s -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000",\r
+                                                    module.entrypoint.c_str (),\r
+                                                    module.baseaddress.c_str () );\r
                GenerateLinkerCommand ( module,\r
                                        linker,\r
                                        linkerParameters,\r
                GenerateLinkerCommand ( module,\r
                                        linker,\r
                                        linkerParameters,\r
@@ -1828,8 +1835,9 @@ MingwWin32GUIModuleHandler::GenerateWin32GUIModuleTarget ( const Module& module
                else\r
                        linker = "${gcc}";\r
 \r
                else\r
                        linker = "${gcc}";\r
 \r
-               string linkerParameters = ssprintf ( "-Wl,--subsystem,windows -Wl,--entry,%s -Wl,--image-base,0x00400000 -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000",\r
-                                                    module.entrypoint.c_str () );\r
+               string linkerParameters = ssprintf ( "-Wl,--subsystem,windows -Wl,--entry,%s -Wl,--image-base,%s -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000",\r
+                                                    module.entrypoint.c_str (),\r
+                                                    module.baseaddress.c_str () );\r
                GenerateLinkerCommand ( module,\r
                                        linker,\r
                                        linkerParameters,\r
                GenerateLinkerCommand ( module,\r
                                        linker,\r
                                        linkerParameters,\r
index 7f27702..47157e4 100644 (file)
@@ -82,6 +82,12 @@ Module::Module ( const Project& project,
        else\r
                entrypoint = GetDefaultModuleEntrypoint ();\r
 \r
        else\r
                entrypoint = GetDefaultModuleEntrypoint ();\r
 \r
+       att = moduleNode.GetAttribute ( "baseaddress", false );\r
+       if ( att != NULL )\r
+               baseaddress = att->value;\r
+       else\r
+               baseaddress = GetDefaultModuleBaseaddress ();\r
+\r
        att = moduleNode.GetAttribute ( "mangledsymbols", false );\r
        if ( att != NULL )\r
                mangledSymbols = att->value != "false";\r
        att = moduleNode.GetAttribute ( "mangledsymbols", false );\r
        if ( att != NULL )\r
                mangledSymbols = att->value != "false";\r
@@ -365,6 +371,39 @@ Module::GetDefaultModuleEntrypoint () const
                                          __LINE__ );\r
 }\r
 \r
                                          __LINE__ );\r
 }\r
 \r
+string\r
+Module::GetDefaultModuleBaseaddress () const\r
+{\r
+       switch (type)\r
+       {\r
+               case Kernel:\r
+                       return "0xc0000000";\r
+               case KernelModeDLL:\r
+                       return "0x10000";\r
+               case NativeDLL:\r
+                       return "0x10000";\r
+               case NativeCUI:\r
+                       return "0x10000";\r
+               case Win32DLL:\r
+                       return "0x10000";\r
+               case Win32CUI:\r
+                       return "0x00400000";\r
+               case Win32GUI:\r
+                       return "0x00400000";\r
+               case KernelModeDriver:\r
+                       return "0x10000";\r
+               case BuildTool:\r
+               case StaticLibrary:\r
+               case ObjectLibrary:\r
+               case BootLoader:\r
+               case BootSector:\r
+               case Iso:\r
+                       return "";\r
+       }\r
+       throw InvalidOperationException ( __FILE__,\r
+                                         __LINE__ );\r
+}\r
+\r
 bool\r
 Module::HasImportLibrary () const\r
 {\r
 bool\r
 Module::HasImportLibrary () const\r
 {\r
index 42fe4fa..99d624f 100644 (file)
@@ -122,6 +122,7 @@ public:
        std::string name;\r
        std::string extension;\r
        std::string entrypoint;\r
        std::string name;\r
        std::string extension;\r
        std::string entrypoint;\r
+       std::string baseaddress;\r
        std::string path;\r
        ModuleType type;\r
        ImportLibrary* importLibrary;\r
        std::string path;\r
        ModuleType type;\r
        ImportLibrary* importLibrary;\r
@@ -157,6 +158,7 @@ public:
 private:\r
        std::string GetDefaultModuleExtension () const;\r
        std::string GetDefaultModuleEntrypoint () const;\r
 private:\r
        std::string GetDefaultModuleExtension () const;\r
        std::string GetDefaultModuleEntrypoint () const;\r
+       std::string GetDefaultModuleBaseaddress () const;\r
        void ProcessXMLSubElement ( const XMLElement& e,\r
                                    const std::string& path,\r
                                    If* pIf = NULL );\r
        void ProcessXMLSubElement ( const XMLElement& e,\r
                                    const std::string& path,\r
                                    If* pIf = NULL );\r
index 2587a8e..121622c 100644 (file)
@@ -3,21 +3,16 @@ ReactOS Build System Documentation
 \r
 Building ReactOS\r
 ----------------\r
 \r
 Building ReactOS\r
 ----------------\r
-To generate GNU make makefiles for building ReactOS do the following:\r
+To generate GNU make makefiles and building ReactOS do the following:\r
 \r
        1) Go to the top-level reactos directory\r
 \r
        1) Go to the top-level reactos directory\r
-       2) Run the command: mingw32-make -C tools\reactos\r
-       3) Run the command: tools\rbuild\rbuild mingw\r
-\r
-This will generate Makefile.auto in the current directory. Now run the following command:\r
-\r
-       mingw32-make -f Makefile.auto\r
+       2) Run the command: mingw32-make\r
 \r
 This will start building ReactOS.\r
 \r
 To build a bootable CD run the following command:\r
 \r
 \r
 This will start building ReactOS.\r
 \r
 To build a bootable CD run the following command:\r
 \r
-       mingw32-make -f Makefile.auto bootcd\r
+       mingw32-make bootcd\r
 \r
 This will create ReactOS.iso in the top-level reactos directory.\r
 \r
 \r
 This will create ReactOS.iso in the top-level reactos directory.\r
 \r
@@ -112,7 +107,7 @@ Module element
 There can be zero or more modules per xml build file.\r
 \r
 Syntax:\r
 There can be zero or more modules per xml build file.\r
 \r
 Syntax:\r
-       <module name="msvcrt" type="win32dll" extension=".dll" entrypoint="_DllMain@12" mangledsymbols="true">\r
+       <module name="msvcrt" type="win32dll" extension=".dll" entrypoint="_DllMain@12" baseaddress="0x70000000" mangledsymbols="true">\r
                ...\r
        </module>\r
 \r
                ...\r
        </module>\r
 \r
@@ -120,7 +115,8 @@ Attributes:
        name - Name of the module. Also the base name of the generated file if such file is generated for the particular module type.\r
        type - Type of module. See below for an explanation of module types.\r
        extension - Extension of the generated file if such file is generated for the particular module type.\r
        name - Name of the module. Also the base name of the generated file if such file is generated for the particular module type.\r
        type - Type of module. See below for an explanation of module types.\r
        extension - Extension of the generated file if such file is generated for the particular module type.\r
-       entrypoint - Entrypoint for the generated file if such file is generated for the particular module type.\r
+       entrypoint - Entrypoint symbol of the generated file if such file is generated for the particular module type.\r
+       baseaddress - Base address of the generated file if such file is generated for the particular module type.\r
        mangledsymbols - Controls wether or not to pass --kill-at to dlltool. If this attribute has the value false then --kill-at is passed to dlltool. If the value is true, then --kill-at is not passed to dlltool. If the generated file exports C++ classes then this need to be true.\r
 \r
 Value:\r
        mangledsymbols - Controls wether or not to pass --kill-at to dlltool. If this attribute has the value false then --kill-at is passed to dlltool. If the value is true, then --kill-at is not passed to dlltool. If the generated file exports C++ classes then this need to be true.\r
 \r
 Value:\r
@@ -133,18 +129,18 @@ Elements:
 Module types\r
 ------------\r
 The module type determines the actions that is to be carried out to process the module. The defined module types are seen below:\r
 Module types\r
 ------------\r
 The module type determines the actions that is to be carried out to process the module. The defined module types are seen below:\r
-       buildtool - Builds a tool that can be run (invoked) when building ReactOS. Default extension is .exe when building on Windows and nothing when building on Linux. The entrypoint module attribute is not applicable for this module type.\r
-       staticlibrary - Builds a static library containing object files that can be linked together with other modules. Default extension is .a. The entrypoint module attribute is not applicable for this module type.\r
-       objectlibrary - Builds object files that can be linked together with other modules. Default extension is .o. The entrypoint module attribute is not applicable for this module type.\r
+       buildtool - Builds a tool that can be run (invoked) when building ReactOS. Default extension is .exe when building on Windows and nothing when building on Linux. The entrypoint, baseaddress, and mangledsymbols module attributes are not applicable for this module type.\r
+       staticlibrary - Builds a static library containing object files that can be linked together with other modules. Default extension is .a. The entrypoint, baseaddress, and mangledsymbols module attributes are not applicable for this module type.\r
+       objectlibrary - Builds object files that can be linked together with other modules. Default extension is .o. The entrypoint, baseaddress, and mangledsymbols module attributes are not applicable for this module type.\r
        kernel - Builds ntoskrnl.exe. Default extension is .exe. Default entrypoint is _NtProcessStartup. \r
        kernelmodedll - Builds a kernel-mode DLL. Default extension is .dll. Default entrypoint is _DriverEntry@8.\r
        kernelmodedriver - Builds a kernel-mode driver. Default extension is .sys. Default entrypoint is _DriverEntry@8.\r
        nativedll - Builds a native DLL. Default extension is .dll. Default entrypoint is _DllMainCRTStartup@12.\r
        win32dll - Builds a Win32 DLL. Default extension is .dll. Default entrypoint is _DllMain@12.\r
        kernel - Builds ntoskrnl.exe. Default extension is .exe. Default entrypoint is _NtProcessStartup. \r
        kernelmodedll - Builds a kernel-mode DLL. Default extension is .dll. Default entrypoint is _DriverEntry@8.\r
        kernelmodedriver - Builds a kernel-mode driver. Default extension is .sys. Default entrypoint is _DriverEntry@8.\r
        nativedll - Builds a native DLL. Default extension is .dll. Default entrypoint is _DllMainCRTStartup@12.\r
        win32dll - Builds a Win32 DLL. Default extension is .dll. Default entrypoint is _DllMain@12.\r
-       win32gui - Builds a Win32 GUI executable. Default extension is .exe. Default entrypoint is _WinMainCRTStartup.\r
-       bootloader - Builds a bootloader. The extension and entrypoint module attributes are not applicable for this module type.\r
-       bootsector - Builds one or more bootsector binaries. The extension and entrypoint module attributes are not applicable for this module type.\r
-       iso - Builds a bootable CD. The extension and entrypoint module attributes are not applicable for this module type\r
+       win32gui - Builds a Win32 GUI executable. Default extension is .exe. Default entrypoint is _WinMainCRTStartup. The baseaddress module attribute is not applicable for this module type.\r
+       bootloader - Builds a bootloader. The entrypoint, baseaddress, and mangledsymbols module attributes are not applicable for this module type.\r
+       bootsector - Builds one or more bootsector binaries. The entrypoint, baseaddress, and mangledsymbols module attributes are not applicable for this module type.\r
+       iso - Builds a bootable CD. The entrypoint, baseaddress, and mangledsymbols module attributes are not applicable for this module type.\r
 \r
 \r
 Define element\r
 \r
 \r
 Define element\r