link_elf: symbol cam_simq_alloc undefined

Eugene M. Kim gene at nttmcl.com
Fri Apr 28 05:29:57 UTC 2006


Oh, I see.  The fix was just to make it work as a KLD, because as it
stands now I can't load the module even though I don't use the CAM
portion of it.

Separating the amr_cam interface into a compatibility layer (like
atapicam) would probably be better...  I'll see if I can do it whenever
I find some free time.  Meanwhile, could you add the amr->cam
MODULE_DEPEND line, as a temporary fix?

Cheers,
Eugene

Scott Long wrote:
> Hi,
> 
> I broke the amr_cam interface several months ago when I locked the
> driver.  I've been neglecting it ever since due to lack of time, and due
> to the amr_cam interface not being terribly useful.  If you do in fact
> have a use for it, let me know and I'll add it to my TODO list.
> 
> Scott
> 
> 
> Eugene M. Kim wrote:
>> Thanks, that fixed it!  : )
>>
>> scottl: Could you commit (and MFC) the fix?  It's as simple as adding a
>> MODULE_DEPEND line:
>>
>>     MODULE_DEPEND(amr, cam, 1, 1, 1);
>>
>> after the DRIVER_MODULE line in src/sys/dev/amr/amr_pci.c
>>
>> I'm not sure about amr_linux though; it seems that there's no CAM
>> reference in amr_linux.c, but that amr_linux is just a compatibility
>> layer on top of amr.  In that light, perhaps:
>>
>>     MODULE_DEPEND(amr_linux, amr, 1, 1, 1);
>>
>> is in order.  Also, the existing MODULE_DEPEND line probably should be
>> changed to:
>>
>>     MODULE_DEPEND(amr_linux, linux, 1, 1, 1);
>>
>> Cheers,
>> Eugene
>>
>> John-Mark Gurney wrote:
>>
>>> Eugene M. Kim wrote this message on Thu, Apr 27, 2006 at 19:55 -0700:
>>>
>>>> I'm trying to upgrade from 5-stable to 6-stable; after rebooting to the
>>>> new kernel, the amr(4) module (amr.ko) refuses to load with this
>>>> message:
>>>>
>>>>     link_elf: symbol cam_simq_alloc undefined
>>>>
>>>> However, a quick nm(1) on /boot/kernel/cam.ko does show:
>>>>
>>>>     ...
>>>>     0000f0ac T cam_sim_set_path
>>>>     0000efc4 T cam_simq_alloc
>>>>     0000efd4 T cam_simq_free
>>>>     ...
>>>>
>>>> and cam.ko is already loaded before amr.ko.
>>>>
>>>> What am I missing here?  *scratches head 'o 'a*
>>>
>>> amr is missing a:
>>> MODULE_DEPEND(amr, cam, 1, 1, 1);
>>>
>>> which means the module doesn't get cam's symbols...  might as well add
>>> that line to amr_linux.c next to MODULE_DEPEND already there...
>>>
>>
>>



More information about the freebsd-stable mailing list