Re: s390x build warnings from <linux/module.h>

From: Kai Germaschewski (kai@tp1.ruhr-uni-bochum.de)
Date: Tue Oct 15 2002 - 10:59:41 EST


On Tue, 15 Oct 2002, Arnd Bergmann wrote:

> during 'make modules' on s390x, I see lots of warnings about 'ignoring
> changed section attributes for __ksymtab' that I have found to be the
> result of changeset 1.373.196.1, where Kai changed the defaults for module
> exports to 'no symbols exported'.
>
> The problem is that there is a section '__ksymtab,"a"', while s390x
> requires it to be '__ksymtab,"aw"' because modules must be compiled with
> '-fpic' here, unlike afaics all the other architectures.

Hmmh, there's a couple of things I don't understand, though they're most
likely there for a reason. First of all, why do you need -fpic at all?
kernel modules are not shared, they should get properly relocated when
insmod'ing them, so I don't see why you're doing that.

The next thing I do not understand is why -fpic has the effect of marking
the section writeable, does it make .text writeable as well? And what for?

> The patch below is a workaround for the Problem and should be
> correct on all architectures, but I'd prefer if there was a nicer
> way to do that.
>
> Arnd <><
>
> --- broken/include/linux/module.h 15 Oct 2002 07:55:01 -0000 1.8
> +++ ugly/include/linux/module.h 15 Oct 2002 15:30:39 -0000
> @@ -498,5 +498,9 @@
> * "export all symbols" to modutils)
> */
> +#ifndef __PIC__
> __asm__(".section __ksymtab,\"a\"\n.previous");
> +#else
> +__asm__(".section __ksymtab,\"aw\"\n.previous");
> +#endif
> #endif

Well, it's not too bad, and it's hidden away in a header, so it's fine
with me. Still, I don't understand yet why all this happens in the first
place.

--Kai

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Tue Oct 15 2002 - 22:00:55 EST