Re: 2.5.59 vmlinux.lds.S change broke modules

Sam Ravnborg (sam@ravnborg.org)
Fri, 17 Jan 2003 17:19:09 +0100


On Fri, Jan 17, 2003 at 01:56:38PM +0000, Russell King wrote:
> Well:
>
> __start___ksymtab = .; \
> __ksymtab : AT(ADDR(__ksymtab) - LOAD_OFFSET) { \
> *(__ksymtab) \
> } \
> __stop___ksymtab = .; \
>
> breaks on some ARM binutils (from a couple of years ago.) The most
> reliable way we've found in with ARM binutils is to place the symbols
> inside the section - this appears to work 100% every single time and
> I've never had any reports of failure (whereas I did with the symbols
> outside as above.)

quote from 'info ld'
--------------
the address of the output section will be set to the current value of
the location counter aligned to the alignment requirements of the
output section. The alignment requirement of the output section is the
strictest alignment of any input section contained within the output
section.
--------------

In other words, the value of __start___ksymtab may differ placed inside
or outside {}, if . is not aligned according to the rules above.
Was it binutils that faulted, or may ARM has been hit by this?

Usually vmlinux.lds.S files has a lot of un-commented . = ALIGN(N);
spread all over, that may have saved us several times in the past.

Sam
-
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/