On ARM, it seems first = "true" parsing doesn't actually work in .rbuild files -...
authorReactOS Portable Systems Group <ros-arm-bringup@svn.reactos.org>
Tue, 5 Feb 2008 11:15:59 +0000 (11:15 +0000)
committerReactOS Portable Systems Group <ros-arm-bringup@svn.reactos.org>
Tue, 5 Feb 2008 11:15:59 +0000 (11:15 +0000)
As a workaround, a special "startup" section is now used to contain the boot.s code, and a linker flag is used to set this section as the entrypoint section at 0x8000.
FreeLDR for ARM now links properly, with _start at 0x8000.

svn path=/trunk/; revision=32136

reactos/tools/rbuild/backend/mingw/modulehandler.cpp

index 87901b8..0b7a679 100644 (file)
@@ -3546,12 +3546,24 @@ MingwBootLoaderModuleHandler::GenerateBootLoaderModuleTarget ()
 
        fprintf ( fMakefile, "\t$(ECHO_LD)\n" );
 
-       fprintf ( fMakefile,
-                 "\t${gcc} -Wl,--subsystem,native -Wl,-Ttext,0x8000 -o %s %s %s %s\n",
-                 backend->GetFullName ( junk_tmp ).c_str (),
-                 objectsMacro.c_str (),
-                 linkDepsMacro.c_str (),
-                 GetLinkerMacro ().c_str ());
+    if (Environment::GetArch() == "arm")
+    {
+        fprintf ( fMakefile,
+                 "\t${gcc} -Wl,--subsystem,native -Wl,--section-start,startup=0x8000 -o %s %s %s %s\n",
+                 backend->GetFullName ( junk_tmp ).c_str (),
+                 objectsMacro.c_str (),
+                 linkDepsMacro.c_str (),
+                 GetLinkerMacro ().c_str ());
+    }
+    else
+    {
+        fprintf ( fMakefile,
+                 "\t${gcc} -Wl,--subsystem,native -Wl,-Ttext,0x8000 -o %s %s %s %s\n",
+                 backend->GetFullName ( junk_tmp ).c_str (),
+                 objectsMacro.c_str (),
+                 linkDepsMacro.c_str (),
+                 GetLinkerMacro ().c_str ());
+    }
        fprintf ( fMakefile,
                  "\t${objcopy} -O binary %s $@\n",
                  backend->GetFullName ( junk_tmp ).c_str () );