x86: link romstage like the other architectures

All the other architectures are using the memlayout
for linking romstage. Use that same method on x86
as well for consistency.

BUG=chrome-os-partner:44827
BRANCH=None
TEST=Built a myriad of boards. Analyzed readelf output.

Change-Id: I016666c4b01410df112e588c2949e3fc64540c2e
Signed-off-by: Aaron Durbin <adubin@chromium.org>
Reviewed-on: http://review.coreboot.org/11510
Tested-by: build bot (Jenkins)
Tested-by: Raptor Engineering Automated Test Stand <noreply@raptorengineeringinc.com>
Reviewed-by: Patrick Georgi <pgeorgi@google.com>
diff --git a/src/lib/Makefile.inc b/src/lib/Makefile.inc
index 4aa6bf8..464d631 100644
--- a/src/lib/Makefile.inc
+++ b/src/lib/Makefile.inc
@@ -192,12 +192,12 @@
 secmon-y += halt.c
 
 ifneq ($(CONFIG_ARCH_X86),y)
-# X86 bootblock and romstage use custom ldscripts that are all glued together,
+# X86 bootblock uses custom ldscripts that are all glued together,
 # so we need to exclude it here or it would pick these up as well
 bootblock-y += program.ld
-romstage-y += program.ld
 endif
 
+romstage-y += program.ld
 ramstage-y += program.ld
 
 ifeq ($(CONFIG_RELOCATABLE_MODULES),y)
diff --git a/src/lib/program.ld b/src/lib/program.ld
index 1346eaf..cf011e9 100644
--- a/src/lib/program.ld
+++ b/src/lib/program.ld
@@ -27,6 +27,12 @@
 .text : {
 	_program = .;
 	_text = .;
+	/*
+	 * The .rom.* sections are to acommodate x86 romstage. romcc as well
+	 * as the assembly files put their text and data in these sections.
+	 */
+	*(.rom.text);
+	*(.rom.data);
 	*(.text._start);
 	*(.text.stage_entry);
 	*(.text);