Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 22 Jan 2015 01:34:06 +0000
From:      "Sinha, Prokash" <psinha@panasas.com>
To:        "freebsd-hackers@freebsd.org" <freebsd-hackers@freebsd.org>
Subject:   FW: elf linking problem
Message-ID:  <D0E592E4.4856%psinha@panasas.com>
In-Reply-To: <D0DE9AB7.460A%psinha@panasas.com>
References:  <D0DDC5CA.45E0%psinha@panasas.com> <D0DE78C0.45F6%psinha@panasas.com> <D0DE9AB7.460A%psinha@panasas.com>

next in thread | previous in thread | raw e-mail | index | archive | help
I'm forwarding to the kernel group, in case someone can point me to the
root of this problem.

Would appreciate any insight !

Thanks,
-prokash

kldload: R_X86_64_PC32 retype switch  <--- This is the first failure  (
from dmesg )
ink_elf_obj: symbol pan_sys_once undefinedELF_RELOC_RELA
ink_elf_load_file(...) -external relocation error=3D2
linker_load_file: trying to load /boot/kernel/panfs.ko
linker_load_file: error !=3D ENOENT file=3D/boot/kernel/panfs.ko
linker_load_file: Unsupported file type

+++++ The code section -

  case R_X86_64_PC32: /* S + A - P */
                        addr =3D lookup(lf, symidx, 1);
                        where32 =3D (Elf32_Addr *)where;
                        val32 =3D (Elf32_Addr)(addr + addend -
(Elf_Addr)where);
                        if (addr =3D=3D 0){
                                printf("kldload: R_X86_64_PC32 rtype
switch\n"); <--------- Lookup failure.
                                return -1;
                        }
                        if (*where32 !=3D val32)
                                *where32 =3D val32;
                        break;




On 1/16/15 10:43 AM, "Sinha, Prokash" <psinha@panasas.com> wrote:

>So what I'm looking for is that if some sums are defined in the kernel
>namespace by some kernel component, it should be visible by other kernel
>module at load time fix/resolve those references, which is what the gcc on
>freebsd 7.2 seem to be doing. For freebsd 10.1 using the clang front, this
>could be broken.
>
>Can anyone point me to some document along the line of freebsd ko
>linking/loading.
>
>I used objdump, but I'm particularly looking for some internals related
>document, so that I can see the linker actually trying to pull in and
>fix/resolve ref from the kernel name space.
>
>Thanks,
>-prokash
>
>On 1/16/15 8:15 AM, "Sinha, Prokash" <psinha@panasas.com> wrote:
>
>>Has anyone seen this , when clang is being used for 10.1 compilation ?
>>
>>Thanks,
>>-prokash
>>
>>
>>On 1/15/15 7:30 PM, "Sinha, Prokash" <psinha@panasas.com> wrote:
>>
>>>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
>>>
>>>
>>>_______________________________________________
>>>freebsd-toolchain@freebsd.org mailing list
>>>http://lists.freebsd.org/mailman/listinfo/freebsd-toolchain
>>>To unsubscribe, send any mail to
>>>"freebsd-toolchain-unsubscribe@freebsd.org"
>>
>




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?D0E592E4.4856%psinha>