Don't strip relocation information from DLLs Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .cpp Modified: branches/xmlbuildsystem/reactos/tools/rbuild/exception.cpp Modified: branches/xmlbuildsystem/reactos/tools/rbuild/module.cpp Modified: branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h _____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .cpp --- branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .cpp 2005-05-06 10:38:30 UTC (rev 15035) +++ branches/xmlbuildsystem/reactos/tools/rbuild/backend/mingw/modulehandler .cpp 2005-05-06 10:45:24 UTC (rev 15036) @@ -1254,7 +1254,8 @@
target_folder.c_str () ); fprintf ( fMakefile, "\t$(ECHO_LD)\n" ); string targetName ( module.GetTargetName () ); - if ( module.importLibrary != NULL ) + + if ( module.IsDLL () ) { string base_tmp = ros_temp + module.name + ".base.tmp"; CLEAN_FILE ( base_tmp ); @@ -1263,7 +1264,7 @@ string temp_exp = ros_temp + module.name + ".temp.exp"; CLEAN_FILE ( temp_exp ); string def_file = GetDefinitionFilename (); - + fprintf ( fMakefile, "\t%s %s -Wl,--base-file,%s -o %s %s %s %s\n", linker.c_str (), @@ -1273,11 +1274,11 @@ objectsMacro.c_str (), libsMacro.c_str (), GetLinkerMacro ().c_str () ); - + fprintf ( fMakefile, "\t-@${rm} %s 2>$(NUL)\n", junk_tmp.c_str () ); - + string killAt = module.mangledSymbols ? "" : "--kill-at"; fprintf ( fMakefile, "\t${dlltool} --dllname %s --base-file %s --def %s --output-exp %s %s\n", @@ -1286,11 +1287,11 @@ def_file.c_str (), temp_exp.c_str (), killAt.c_str () ); - + fprintf ( fMakefile, "\t-@${rm} %s 2>$(NUL)\n", base_tmp.c_str () ); - + fprintf ( fMakefile, "\t%s %s %s -o %s %s %s %s\n", linker.c_str (), @@ -1300,12 +1301,21 @@ objectsMacro.c_str (), libsMacro.c_str (), GetLinkerMacro ().c_str () ); - + fprintf ( fMakefile, "\t-@${rm} %s 2>$(NUL)\n", temp_exp.c_str () ); GenerateCleanObjectsAsYouGoCode (); + + GenerateBuildMapCode (); + + GenerateBuildNonSymbolStrippedCode (); + + fprintf ( fMakefile, + "\t$(ECHO_RSYM)\n" ); + fprintf ( fMakefile, + "\t$(Q)$(RSYM_TARGET) $@ $@\n\n" ); } else { @@ -1320,15 +1330,6 @@
GenerateCleanObjectsAsYouGoCode (); } - - GenerateBuildMapCode (); - - GenerateBuildNonSymbolStrippedCode (); - - fprintf ( fMakefile, - "\t$(ECHO_RSYM)\n" ); - fprintf ( fMakefile, - "\t$(Q)$(RSYM_TARGET) $@ $@\n\n" ); }
void @@ -1790,12 +1791,17 @@ string MingwModuleHandler::GetDefinitionFilename () const { - string defFilename = module.GetBasePath () + SSEP + module.importLibrary->definition; - if ( IsWineModule () ) - return PassThruCacheDirectory ( NormalizeFilename ( defFilename ), - backend->intermediateDirectory ); + if ( module.importLibrary != NULL ) + { + string defFilename = module.GetBasePath () + SSEP + module.importLibrary->definition; + if ( IsWineModule () ) + return PassThruCacheDirectory ( NormalizeFilename ( defFilename ), + backend->intermediateDirectory ); + else + return defFilename; + } else - return defFilename; + return "tools" SSEP "rbuild" SSEP "empty.def"; }
void @@ -1954,7 +1960,7 @@ CLEAN_FILE ( junk_tmp ); string temp_exp = ros_temp + module.name + ".temp.exp"; CLEAN_FILE ( temp_exp ); - 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", + 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 -Wl,--dll", module.GetBasePath ().c_str (), module.entrypoint.c_str (), module.baseaddress.c_str () ); @@ -2076,7 +2082,7 @@
string dependencies = linkDepsMacro + " " + objectsMacro;
- string linkerParameters = ssprintf ( "-Wl,--subsystem,native -Wl,--entry,%s -Wl,--image-base,%s -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -mdll", + string linkerParameters = ssprintf ( "-Wl,--subsystem,native -Wl,--entry,%s -Wl,--image-base,%s -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -mdll --dll",
module.entrypoint.c_str (),
module.baseaddress.c_str () ); GenerateLinkerCommand ( dependencies, @@ -2123,7 +2129,7 @@
string dependencies = linkDepsMacro + " " + objectsMacro;
- string linkerParameters = ssprintf ( "-Wl,--subsystem,native -Wl,--entry,%s -Wl,--image-base,%s -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -mdll", + string linkerParameters = ssprintf ( "-Wl,--subsystem,native -Wl,--entry,%s -Wl,--image-base,%s -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -mdll -Wl,--dll",
module.entrypoint.c_str (),
module.baseaddress.c_str () ); GenerateLinkerCommand ( dependencies, @@ -2169,7 +2175,7 @@
string dependencies = linkDepsMacro + " " + objectsMacro;
- string linkerParameters = ssprintf ( "-Wl,--subsystem,native -Wl,--entry,%s -Wl,--image-base,%s -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -nostdlib -mdll", + string linkerParameters = ssprintf ( "-Wl,--subsystem,native -Wl,--entry,%s -Wl,--image-base,%s -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -nostartfiles -nostdlib -mdll -Wl,--dll",
module.entrypoint.c_str (),
module.baseaddress.c_str () ); GenerateLinkerCommand ( dependencies, @@ -2291,7 +2297,7 @@ else linker = "${gcc}";
- string linkerParameters = ssprintf ( "-Wl,--subsystem,console -Wl,--entry,%s -Wl,--image-base,%s -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -mdll", + string linkerParameters = ssprintf ( "-Wl,--subsystem,console -Wl,--entry,%s -Wl,--image-base,%s -Wl,--file-alignment,0x1000 -Wl,--section-alignment,0x1000 -mdll -Wl,--dll",
module.entrypoint.c_str (),
module.baseaddress.c_str () ); GenerateLinkerCommand ( dependencies, _____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/exception.cpp --- branches/xmlbuildsystem/reactos/tools/rbuild/exception.cpp 2005-05-06 10:38:30 UTC (rev 15035) +++ branches/xmlbuildsystem/reactos/tools/rbuild/exception.cpp 2005-05-06 10:45:24 UTC (rev 15036) @@ -40,7 +40,7 @@
InvalidOperationException::InvalidOperationException ( const char* filename, - const int linenumber ) + const int linenumber ) { Message = ssprintf ( "%s:%d", filename, @@ -48,9 +48,9 @@ }
InvalidOperationException::InvalidOperationException ( const char* filename, - const int linenumber, - const char* message, - ... ) + const int linenumber, + const char* message, + ... ) { string errorMessage; va_list args; _____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/module.cpp --- branches/xmlbuildsystem/reactos/tools/rbuild/module.cpp 2005-05-06 10:38:30 UTC (rev 15035) +++ branches/xmlbuildsystem/reactos/tools/rbuild/module.cpp 2005-05-06 10:45:24 UTC (rev 15036) @@ -523,7 +523,7 @@
string Module::GetDefaultModuleEntrypoint () const { - switch (type) + switch ( type ) { case Kernel: return "_NtProcessStartup"; @@ -560,7 +560,7 @@ string Module::GetDefaultModuleBaseaddress () const { - switch (type) + switch ( type ) { case Kernel: return "0xc0000000"; @@ -600,6 +600,36 @@ return importLibrary != NULL; }
+bool +Module::IsDLL () const +{ + switch ( type ) + { + case Kernel: + case KernelModeDLL: + case NativeDLL: + case Win32DLL: + case KernelModeDriver: + return true; + case NativeCUI: + case Win32CUI: + case Test: + case Win32GUI: + case BuildTool: + case StaticLibrary: + case ObjectLibrary: + case BootLoader: + case BootSector: + case Iso: + case LiveIso: + case RpcServer: + case RpcClient: + return false; + } + throw InvalidOperationException ( __FILE__, + __LINE__ ); +} + string Module::GetTargetName () const { _____
Modified: branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h --- branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h 2005-05-06 10:38:30 UTC (rev 15035) +++ branches/xmlbuildsystem/reactos/tools/rbuild/rbuild.h 2005-05-06 10:45:24 UTC (rev 15036) @@ -123,24 +123,24 @@
enum ModuleType { - BuildTool, - StaticLibrary, - ObjectLibrary, - Kernel, - KernelModeDLL, - KernelModeDriver, - NativeDLL, - NativeCUI, - Win32DLL, - Win32CUI, - Win32GUI, - BootLoader, - BootSector, - Iso, - LiveIso, - Test, - RpcServer, - RpcClient + BuildTool = 0, + StaticLibrary = 1, + ObjectLibrary = 2, + Kernel = 3, + KernelModeDLL = 4, + KernelModeDriver = 5, + NativeDLL = 6, + NativeCUI = 7, + Win32DLL = 8, + Win32CUI = 9, + Win32GUI = 10, + BootLoader = 11, + BootSector = 12, + Iso = 13, + LiveIso = 14, + Test = 15, + RpcServer = 16, + RpcClient = 17 };
enum HostType @@ -187,6 +187,7 @@ ModuleType GetModuleType ( const std::string& location, const XMLAttribute& attribute ); bool HasImportLibrary () const; + bool IsDLL () const; std::string GetTargetName () const; std::string GetDependencyPath () const; std::string GetBasePath () const;