[ros-diffs] [ros-arm-bringup] 32136: On ARM, it seems first = "true" parsing doesn't actually work in .rbuild files -- the object is not properly placed in the beginning of the FreeLDR text section. 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.

ros-arm-bringup at svn.reactos.org ros-arm-bringup at svn.reactos.org
Tue Feb 5 12:16:00 CET 2008


Author: ros-arm-bringup
Date: Tue Feb  5 14:15:59 2008
New Revision: 32136

URL: http://svn.reactos.org/svn/reactos?rev=32136&view=rev
Log:
On ARM, it seems first = "true" parsing doesn't actually work in .rbuild files -- the object is not properly placed in the beginning of the FreeLDR text section.
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.


Modified:
    trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp

Modified: trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp
URL: http://svn.reactos.org/svn/reactos/trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp?rev=32136&r1=32135&r2=32136&view=diff
==============================================================================
--- trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp (original)
+++ trunk/reactos/tools/rbuild/backend/mingw/modulehandler.cpp Tue Feb  5 14:15:59 2008
@@ -3546,12 +3546,24 @@
 
 	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 () );




More information about the Ros-diffs mailing list