On 5/16/23 20:55, Bruce Ashfield wrote:
CAUTION: This email comes from a non Wind River email account!
Do not click links or open attachments unless you recognize the sender and know 
the content is safe.

On Tue, May 16, 2023 at 4:56 AM Xiangyu Chen
<xiangyu.c...@eng.windriver.com> wrote:
Hi Bruce,


On 5/15/23 21:11, Bruce Ashfield wrote:
CAUTION: This email comes from a non Wind River email account!
Do not click links or open attachments unless you recognize the sender and know 
the content is safe.

On Mon, May 15, 2023 at 8:34 AM Bruce Ashfield via
lists.openembedded.org
<bruce.ashfield=gmail....@lists.openembedded.org> wrote:
On Mon, May 15, 2023 at 6:04 AM Xiangyu Chen
<xiangyu.c...@eng.windriver.com> wrote:
Hi Bruce,


Sorry for being late..


On 5/13/23 09:16, Bruce Ashfield wrote:

CAUTION: This email comes from a non Wind River email account!
Do not click links or open attachments unless you recognize the sender and know 
the content is safe.

On Fri, May 12, 2023 at 10:47 AM Bruce Ashfield via
lists.openembedded.org
<bruce.ashfield=gmail....@lists.openembedded.org> wrote:

On Wed, May 10, 2023 at 10:23 PM Xiangyu Chen
<xiangyu.c...@eng.windriver.com> wrote:

Hi Richard and Bruce,


Thanks for your suggestion,


On 5/11/23 00:25, Bruce Ashfield wrote:

CAUTION: This email comes from a non Wind River email account!
Do not click links or open attachments unless you recognize the sender and know 
the content is safe.

On Wed, May 10, 2023 at 12:16 PM Richard Purdie
<richard.pur...@linuxfoundation.org> wrote:

On Mon, 2023-05-08 at 09:33 +0800, Xiangyu Chen wrote:

From: Xiangyu Chen <xiangyu.c...@windriver.com>

after enable the kernel CONFIG_DEBUG_INFO_BTF in devshell, the make would 
report some
errors due to pahole and elfuitls is missing, since this is a debug option, so 
conditionally
add an option named "btf" in KERNEL_DEBUG_OPTIONS, if someone need enable 
CONFIG_DEBUG_INFO_BTF
option in devshell, they can add KERNEL_DEBUG_OPTIONS += "btf" in local.conf to 
solve the pahole
and elfutils dependency.

Is this a defined workflow somewhere? Is KERNEL_DEBUG_OPTIONS with this
option documented somewhere?

I also think the mention of devshell in the commit message is
misleading, this issue happens regardless of how you enable the option.
There are also other ways of enabling this than local.conf, you'd
likely not want people doing that at the end of development.

I'm curious on Bruce's opinion but to me this at the very least needs a
commit message rewrite and I'd question whether the docs elsewhere
would allow someone to discover this workflow anyway.

I missed this entirely, thanks for replying to it, or I never would
have noticed.

This mechanism isn't appropriate for these dependencies. I only added
it to work around pkgconfig issues (which we can more cleanly solve in
newer kernels  (see what I've been doing with make-mod-scripts) .. so
it can eventually be dropped).

We are already enabling elfutils-native conditionally on a
per-architecture basis (currently only x86-64).

If we need it on more arches now, we should enable it in the version
specific recipes, or actually, we have moved far enough into newer
kernel's that it could be in the .inc now.

This commit's background was some kernel debug options needs elfutils
and pahole native package, since the issue happens on enabling kernel
debug options and not all people needs it, so I conditionally add the
dependency in KERNEL_DEBUG_OPTION.

If possible we can enable it in .inc because newer kernel tools like btf
are support using pkg-config to locate the libelf instead of finding it
from /usr/ folder, so we can use elfutils-natvie instead of installing
elfutils package on host PC.

Similarly, we should enable the pahole-native dependency on a per-arch basis.

As Richard mentioned, what's the reproducer to see the errors ? it
must be more than devshell.

Yes, this happens on devshell and normal world if some kernel debug
options are enabled. We can reproduce this issue with following steps(I
have found the issue with kernel 5.15):

1. enable kernel option CONFIG_DEBUG_KERNEL  CONFIG_DEBUG_INFO and
CONFIG_DEBUG_INFO_BTF

2. build the kernel image, the compiler would report missing libelf.h
and gelf.h which contains in elfutils-native(this step not happens on
x86-64 due to it has been enabled).

3. enable elfutils-native by manual, the kernel source code can be
compiled successfully but failed in final step due to missing pahole.


If you can follow up with the steps to reproduce, I can take on the
refactoring and broader dependency cleanup question, since I can test
the wider matrix at the same time.

Thanks, my local setup might missing some corner case, this is another
reason I enable those native packages limit in KERNEL_DEBUG_OPTION :).

I've been thinking about this, and I've come to the following suggestion:

I plan on moving the elfutils-native to linux-yocto.inc, out of the
version specific
recipes.  I'll also drop the architecture specific nature of the
current DEPENDS.
The need for this is much more common now, and all of the reference kernels
in master are new enough. The elfutils-native build dependency is not
significant
enough to worry about adding it for all architectures. If it does
become a problem,
there are options to make it conditional again.

I can drop the HOST_LIBELF_LIBS work around in the linux-yocto.inc, as
we can now properly detect libelf via pkg-config. I didn't need it in any of
my testing. Again, if this proves to be wrong, I'd enable it in a
different way now
(using what I've learned from fixing make-mod-scripts).

As for the pahole-native dependency, there's been a "developer" kernel-type
for quite some time. The design intention behind it was to enable options like
this, and not make the "standard" or "production" kernel's too large by default.
So the dependency could be conditional on that kernel type ... but we don't
want to break other kernels just because they've enabled that option. We also
don't (and won't) get into the game of looking for individual options in the
.config to enable something, since a) it is too late b) it is a moving target.

So that leaves the following options: a) enable pahole-native unconditionally
on the arches that support it (x86-64, aarch64) (and also move the pahole
recipe into oe-core) b) make the KERNEL_DEBUG_OPTIONS less specific,
and simply call it KERNEL_DEBUG, when enabled, we could conditionally
add pahole-native (I'd also submit documentation for the functionality
c) something I haven't thought about ...

I'm moving on the implementation now, but will adjust course if
there's something
I've missed.

I have my implementation done, but I'm wondering what your configuration
was for testing pahole ?

My reply will be hard to read, as plain text reply to the html doesn't
give us proper
context indenting.

I have tested on a devshell, with oe-master branch, the kernel version using 
5.15

1. enable pahole-native and elfutils-native in linux-yocto.inc as a dependency.

2. enable CONFIG_DEBUG_KERNEL  CONFIG_DEBUG_INFO and
CONFIG_DEBUG_INFO_BTF under menuconfig

3. using "export PKG_CONFIG_SYSROOT_DIR=""" cleanning PKG_CONFIG_SYSROOT_DIR

4, make


If the test environment using bitbake, then we need to remove PAHOLE=false flag 
in kernel EXTRA_OEMAKE in classes-recipe/kernel.bbclass, otherwise, bitbake 
would report missing pahole error.

That's the same as my patch series (I've also changed PAHOLE=false to
a conditional in my series).

I'm seeing the following in qemux86-64 at the end of the build:

| Unsupported DW_TAG_unspecified_type(0x3b)
| Encountered error while encoding BTF.
|   LD      .tmp_vmlinux.kallsyms1
|   NM      .tmp_vmlinux.kallsyms1.syms
|   KSYMS   .tmp_vmlinux.kallsyms1.S
|   AS      .tmp_vmlinux.kallsyms1.S
|   LD      .tmp_vmlinux.kallsyms2
|   NM      .tmp_vmlinux.kallsyms2.syms
|   KSYMS   .tmp_vmlinux.kallsyms2.S
|   AS      .tmp_vmlinux.kallsyms2.S
|   LD      vmlinux
|   BTFIDS  vmlinux
| FAILED: load BTF from vmlinux: No such file or directory
| make[1]: *** 
[/opt/poky/build/tmp/work-shared/qemux86-64/kernel-source/scripts/Makefile.vmlinux:34:
vmlinux] Error 255
| make[1]: *** Deleting file 'vmlinux'
| make: *** 
[/opt/poky/build/tmp/work-shared/qemux86-64/kernel-source/Makefile:1255:
vmlinux] Error 2

I haven't looked into it at all yet (but will do so over the weekend)
.. but I thought

I haven't seen this problem yet(i'll pull the latest oe-core and meta-oe code 
and try again), if possible, could you share a patch with me so that we can 
test it together? thanks.

I'm on oe-core master, with qemux86-64.

I'll do a bit more work on the patch today, and can share it if I
can't figure out where that unsupported tag is coming from.
It seems like it is a known issue, I found both a lkml thread and
debian bug from October 2022.

Your 5.15 kernel wouldn't show the issue.
Yes, this should not happens on 5.15 kernel.


Today I synced the oe-core/poky to latest master version, removed the
build dir and run oe-init-build-env again and switched to use default
linux 6.1.25 instead of 5.15.

Some kernel config has been updated, there is no CONFIG_DEBUG_INFO, I
used CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT.

So, currently my local setup kernel config is enabled
CONFIG_DEBUG_KERNEL CONFIG_DEBUG_INFO_DWARF_TOOLCHAIN_DEFAULT and
CONFIG_DEBUG_INFO_BTF, in order to make a easy test, I enabled
elfutils-native and pahole-native as DEPEND directly in linux-yocto.in,
and remove the PAHOLE=false in EXTRA_OEMAKE.

my oe-core rev: 35e5d29a7d654fc79bdb898d0f1fb277270dbfd5

my meta-oe rev:b7aa66d734b911737b61610c1c47778e14b15c55


When I ran bitbake linux-yocto -v -D, I have met the same issue,

| Unsupported DW_TAG_unspecified_type(0x3b)
| Encountered error while encoding BTF.

It's bit strange that the I removed my local OS(ubuntu)'s pahole and the
code can be compiled without error:


    CC      init/version-timestamp.o
    LD      .tmp_vmlinux.btf
    BTF     .btf.vmlinux.bin.o
    LD      .tmp_vmlinux.kallsyms1
    NM      .tmp_vmlinux.kallsyms1.syms
    KSYMS   .tmp_vmlinux.kallsyms1.S
    AS      .tmp_vmlinux.kallsyms1.S
    LD      .tmp_vmlinux.kallsyms2
    NM      .tmp_vmlinux.kallsyms2.syms
    KSYMS   .tmp_vmlinux.kallsyms2.S
    AS      .tmp_vmlinux.kallsyms2.S
    LD      vmlinux
    BTFIDS  vmlinux
    NM      System.map
    SORTTAB vmlinux

Indeed!

What's the toolchain version on your ubuntu install ?

My local ubuntu's default pahole version is 1.22,seems some data structure not line up with new kernel, the yocto pahole package is 1.24 is working well.

$ pahole --version
v1.22


It is likely
either our toolchain version or configuration in combination with the
kernel version that is adding the section that pahole can't
understand/decode.
Yes, perhaps this is a limitation, we have to use PAHOLE in EXTRA_OEMAKE to tell the make using pahole from the yocto native-sdk instead of local host OS's /usr/bin/pahole when building the kernel.
If you want to work with my patches, you can find my branch here:

https://git.yoctoproject.org/poky-contrib/log/?h=zedd/kernel

(you also need the linux-yocto bumps on that branch as they'll contain
the kernel-cache SRCREV bumps to pick up the fragments for BTF, etc).

Thanks, I will sync the branch today and feedback later :)


Br,

Xiangyu

Bruce


You can find a link to the lkml thread from the debian bug:
https://www.mail-archive.com/debian-bugs-dist@lists.debian.org/msg1873553.html
I'll clean up my patch, since this isn't something I can fix immediately.

If you do track down patches in the latest kernel that haven't been
sent to -stable, we can backport them to fix the linux-yocto builds
with pahole.

Bruce

Br,

Xiangyu

Bruce

I should check with you first to get the details on how you were testing pahole
functionality.

Bruce


Br,

Xiangyu

Bruce


Xiangyu

Bruce

Cheers,

Richard

--
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II

--
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II



--
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II

--
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II



--
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II


--
- Thou shalt not follow the NULL pointer, for chaos and madness await
thee at its end
- "Use the force Harry" - Gandalf, Star Trek II
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#181426): 
https://lists.openembedded.org/g/openembedded-core/message/181426
Mute This Topic: https://lists.openembedded.org/mt/98753313/21656
Group Owner: openembedded-core+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to