Subject: Re: Can't load LKMs on -current/amd64: .eh_frame overlaps .data
To: David Laight <david@l8s.co.uk>
From: Nathan J. Williams <nathanw@wasabisystems.com>
List: current-users
Date: 02/26/2006 13:31:21
David Laight <david@l8s.co.uk> writes:
> 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.
It's not just for debugging; it's also necessary for the runtime
stack-frame unwinding of C++ exceptions. Since C++ code can call into
C code, the frame information is needed in C code as well.
This doesn't justify its inclusion in our non-C++ kernel, of course,
but in general C objects, which may be linked with C++, it should be
present.
- Nathan