Re: 2.6.26-rc5-mm1: uml link error

From: Peter Oberparleiter
Date: Tue Jun 10 2008 - 06:52:03 EST


Miklos Szeredi wrote:
> I get this error on linking uml:
>
> /usr/lib64/gcc/x86_64-suse-linux/4.2.1/../../../../x86_64-suse-linux/bin/ld:arch/um/kernel/vmlinux.lds:267: syntax error
>
> Reverting 'kernel-call-constructors.patch' fixes it.

Should be fixed with the patch below (applies on top of
kernel-call-constructors.patch):

--

From: Peter Oberparleiter <peter.oberparleiter@xxxxxxxxxx>

Fix for linker error on UML:

/usr/lib64/gcc/x86_64-suse-linux/4.2.1/../../../../x86_64-suse-linux/bin/ld:arch/um/kernel/vmlinux.lds:267: syntax error

The error is triggered by the use of SORT(CONSTRUCTORS) in the UML
linker script which conflicts with the kernel-call-constructors patch.
Here is what the ld info page says about sorting constructors:

If you are using the GNU C++ support for initialization priority,
which provides some control over the order in which global
constructors are run, you must sort the constructors at link time
to ensure that they are executed in the correct order.

As there's no C++ code inside the kernel it should be safe to remove
the SORT construct.

Found-by: Miklos Szeredi <miklos@xxxxxxxxxx>
Signed-off-by: Peter Oberparleiter <peter.oberparleiter@xxxxxxxxxx>
---
arch/um/kernel/dyn.lds.S | 2 +-
1 files changed, 1 insertion(+), 1 deletion(-)

Index: linux-2.6.26-rc5-mm2/arch/um/kernel/dyn.lds.S
===================================================================
--- linux-2.6.26-rc5-mm2.orig/arch/um/kernel/dyn.lds.S
+++ linux-2.6.26-rc5-mm2/arch/um/kernel/dyn.lds.S
@@ -102,7 +102,7 @@ SECTIONS
*(.data.init_irqstack)
DATA_DATA
*(.data.* .gnu.linkonce.d.*)
- SORT(CONSTRUCTORS)
+ CONSTRUCTORS
}
.data1 : { *(.data1) }
.tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) }
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/