Subject: Re: Can't load LKMs on -current/amd64: .eh_frame overlaps .data
To: None <firstname.lastname@example.org>
From: David Laight <email@example.com>
Date: 02/26/2006 09:42:27
On Sat, Feb 25, 2006 at 08:06:48PM -0600, Dave Huang wrote:
> On -current/amd64 with Feb 19 kernel and userland, I'm having problems loading LKMs. E.g.,
> ld: section .eh_frame [ffffffff80651768 -> ffffffff8065261f] overlaps section .data [ffffffff806525c0 -> ffffffff80652a27]
> modload: can't link `/usr/lkm/udf.o' creating `/usr/lkm/udf' bound to 0xffffffff8064c000
> I was thinking that perhaps the LKMs were messed up, but I get the
> same message trying to load an LKM that worked fine before. As a
> kludge, I changed modload to call ld with the --no-check-sections
> flag, and that seems to have worked OK. (Alas, my NIC driver is an
> LKM, so I was pretty much hosed without it).
We really don't want the .eh_frame section in the kernel or loadable
modules at all. ISTR that the linux amd64 kernels are compiled without it.
All it contains is information about the stack offset EVERY time it changes
to make writing a debugger stack trace back simple.
The gnu people decided that the extra space 'didn't matter' because 'all
programs are demand paged' so made the .eh_frame section be the default
even when not compiled with -g.
David Laight: firstname.lastname@example.org