Re: [CFT] WITH_META_MODE: Working incremental build [only on i386 and amd64] [filemon fails to load on powerpc64]

From: Mark Millard <markmi_at_dsl-only.net>
Date: Wed, 1 Jun 2016 19:31:49 -0700
On 2016-Jun-1, at 7:21 PM, Bryan Drewery <bdrewery at FreeBSD.org> wrote:
> 
> The fix is easy, I am just wondering why there are 2 ABI formats
> supported.  If only one is normally used and the default then I'll only
> support that one.
> 
> Filemon hooks the syscall table.

The only differences that I see are (_v1 then _v2 pairs):

        .sv_sigcode     = sigcode64,
        .sv_szsigcode   = &szsigcode64,
        .sv_name        = "FreeBSD ELF64",
vs.
        .sv_sigcode     = sigcode64_elfv2,
        .sv_szsigcode   = &szsigcode64_elfv2,
        .sv_name        = "FreeBSD ELF64 V2",

and:

        .sv_setregs     = exec_setregs_funcdesc,
vs.
        .sv_setregs     = exec_setregs,

Only for the _v1 case:

        .sv_trap        = NULL,

This appears to be two different ELF format versions.

This is confirmed by:

https://patchwork.ozlabs.org/patch/433747/

(from 2015-Jan-28) where Nathan wrote:

Big-endian ELF64 ELF executables normally (the Linux kernel is an 
exception) have their entry point refer to a function descriptor instead 
of the first instruction. Distinguish between the Linux case and the 
function descriptor case, which is used for the FreeBSD kernel, by 
checking whether the entry point points into an executable section or 
not. This allows use of the FreeBSD kernel as a skiboot payload.


===
Mark Millard
markmi at dsl-only.net

Older material. . .

On 6/1/2016 7:16 PM, Mark Millard wrote:
> May be Nathan Whitehorn knows what is going on that prevents filemon.ko
> from loading for powerpc64 based on how it is now built (added for more
> than i386 and amd64 as of -r301130)?
> 
> Nathan: See below if it sounds like something you might have a clue
> about. As to why this comers up: Loading filemon.ko is required in order
> for WITH_META_MODE=yes to work for incremental builds.
> 
> ===
> Mark Millard
> markmi at dsl-only.net <http://dsl-only.net>
> 
> On 2016-Jun-1, at 6:59 PM, Bryan Drewery <bdrewery at FreeBSD.org
> <http://freebsd.org>> wrote:
> 
>> On 6/1/2016 6:39 PM, Mark Millard wrote:
>>> while filemon.ko now exists:
>>>> # ls -l /boot/*/filemon*
>>>> -r-xr-xr-x  1 root  wheel  32064 Jun  1 17:59 /boot/kernel/filemon.ko
>>> it does not load:
>>>> # kldload -n filemon
>>>> kldload: can't load filemon: No such file or directory
>>>> # dmesg | grep link_elf
>>>> link_elf: symbol elf64_freebsd_sysvec undefined
>> 
>> There's 2 different ABI formats for powerpc64?
>> 
>>> sys/powerpc/powerpc/elf64_machdep.c:INIT_SYSENTVEC(elf64_sysvec_v1,
>>> &elf64_freebsd_sysvec_v1);
>>> sys/powerpc/powerpc/elf64_machdep.c:INIT_SYSENTVEC(elf64_sysvec_v2,
>>> &elf64_freebsd_sysvec_v2);
>> 
>> What's up with that?
>> 
>> -- 
>> Regards,
>> Bryan Drewery
> 
> 


-- 
Regards,
Bryan Drewery
Received on Thu Jun 02 2016 - 00:31:57 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:05 UTC