elf linking problem

Sinha, Prokash psinha at panasas.com
Fri Jan 16 05:05:30 UTC 2015


Hello,

I'm trying to find out what could be the cause of a kldload problem I'm
facing. Here is the context detail --


1. I'm building two ko module. And it has a dependency order, so when I
load the first module, it loads, and a function symbol ( F ) is defined
into kernel variable space sysctl -b kern.function_list | tr '\0' '\n' |
grep symname.
2. Now trying to load the 2nd module, and link_elf_obj flags error and
symbol undefined when freebsd10.1 is being used.
3. If I probe using the same sysctl as in step 1, I still the symbol is
defined.

/var/log/messages shows -
kernel: link_elf_obj: symbol pan_sys_once undefined
kernel: linker_load_file: Unsupported file type

The same two modules when complied using freebsd7.2, we don't see the
problem.


The question is - Is there changes along the elf formats ( in both case it
64bit), also is there any changes
In the API between those two OS version, that I need to aware of ( and
possible flags I need to set).

Using objdump -t  modone.ko
00000000000fb940 g     F .text	0000000000000062 pan_sys_once



In modtwo.ko it is undefined
0000000000000000         *UND*	0000000000000000 pan_sys_once


Note the objdump on freebsd 7.2, is identical. So it is defined in the
module1 as F(function), and undefined(UND) in module two.

Any suggestion, please ?

Thanks,
-prokash




More information about the freebsd-toolchain mailing list