On 2013-04-16 08:14, Alexey Dokuchaev wrote:
On Mon, Apr 15, 2013 at 10:41:36PM -0400, Ryan Stone wrote:
On Fri, Apr 12, 2013 at 10:28 AM, Alexey Dokuchaev <[email protected]> wrote:
I've found the culprit: the problem is in this command of the build:

     ld -Bshareable  -d -warn-common -o hello.ko.debug hello.kld

I had put /usr/local/bin in my $PATH before /usr/bin for a reason I don't
currently recall, and have binutils-2.23.1 installed.  As a result, ld(1)
in the quoted line above was called from /usr/local/bin/ld, [...]

Is this for i386?  When compiling modules with newer versions of ld I had
to add the following flags to the ld invocation to get the module to work:

Yes, this is for i386.

-u __start_set_sysinit_set -u __start_set_sysuninit_set \
-u __start_set_sysctl_set -u __start_set_modmetadata_set \
-u __stop_set_sysinit_set -u __stop_set_sysuninit_set \
-u __stop_set_sysctl_set -u __stop_set_modmetadata_set

Hmm.  Adding these does help, indeed.  How did you come up with this list?
Is it documented anywhere, or just the result of careful readelf/objdump
examination?  Thanks!

These are module start/stop symbols, which get optimized away by newer
versions of binutils.  We fixed it in head when binutils 2.17.50 was
imported, here:

http://svn.freebsd.org/changeset/base/215137

This fix could probably also be used for stable/8.  It is most likely
too late to get into 8.4, though.
_______________________________________________
[email protected] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-stable
To unsubscribe, send any mail to "[email protected]"

Reply via email to