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 ? 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. 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). 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 (#181405): https://lists.openembedded.org/g/openembedded-core/message/181405 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] -=-=-=-=-=-=-=-=-=-=-=-