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]"