On Mon, Mar 29, 2021 at 10:08 AM Nishanth Menon <n...@ti.com> wrote:
>
> On 13:31-20210327, Bruce Ashfield wrote:
> > On Thu, Mar 25, 2021 at 9:13 PM Nishanth Menon via
> > lists.openembedded.org <nm=ti....@lists.openembedded.org> wrote:
> > >
> > > When cross-compiling with v5.12-rc3, prepare fails[1] build of vdso at
> > > the objcopy stage since it seems to be using the local host's objcopy
> > > rather than the cross-compile version we want it to use.
> > >
> > > This can be trivially reproduced in a localbuild of the kernel
> > > following the build parameters provided in the process[2]
> > >
> > > Lets fix this by passing OBJCOPY over to the kernel.
> > >
> >
> > As I mentioned to Denys, I hadn't seen this. Consulting the
> > maintainers file would have found me as a good addition to the cc'.
> >
>
> Sure. understood. Thanks..
>
> > I'm doing some other work on make-mod-scripts dependencies right now,
> > so I've pulled this in and will re-test against all of the active
> > kernel versions in master.
> >
>
>
> Thanks.
>
> > But I don't think that make-mod-scripts is the only place we'd need
> > this, if it is indeed happening on the tip of all the supported
> > versions.  There are routes to have the prepare steps run, without a
> > make-mod-scripts dependency.
> >
> > We've already made the mistake of letting the make-mod-scrips and
> > kernel build parameters diverge (see AR=${KERNEL_AR}), so I need to
> > spend a few minutes getting them back in sync.
> >
> > I was just able to build and boot qemuarm64 on 5.12-rc4, so there's
> > something different about your config than my setup. We need to figure
> > that out. It could be a .config triggering different components to be
> > built, but unlikely given vdso being involved.
> >
> > qemuarm64 login: root
> > root@qemuarm64:~# uname -a
> > Linux qemuarm64 5.12.0-rc4-yoctodev-standard #1 SMP PREEMPT Mon Mar 22
> > 18:46:22 UTC 2021 aarch64 aarch64 aarch64 GNU/Linux
> > root@qemuarm64:~#
>
> Hmm... only thing I have done is cross compile - see the pastebins.
> >
> > > [1] https://pastebin.ubuntu.com/p/pNcQtb93wr/
> > > [2] https://pastebin.ubuntu.com/p/vZGqgh9Sq5/
> > > Signed-off-by: Nishanth Menon <n...@ti.com>
>
> [...]
> > > diff --git a/meta/classes/kernel-arch.bbclass 
> > > b/meta/classes/kernel-arch.bbclass
> > > index 07ec242e63bb..3d25fc7ac531 100644
> > > --- a/meta/classes/kernel-arch.bbclass
> > > +++ b/meta/classes/kernel-arch.bbclass
> > > @@ -60,9 +60,12 @@ TARGET_LD_KERNEL_ARCH ?= ""
> > >  HOST_LD_KERNEL_ARCH ?= "${TARGET_LD_KERNEL_ARCH}"
> > >  TARGET_AR_KERNEL_ARCH ?= ""
> > >  HOST_AR_KERNEL_ARCH ?= "${TARGET_AR_KERNEL_ARCH}"
> > > +TARGET_OBJCOPY_KERNEL_ARCH ?= ""
> > > +HOST_OBJCOPY_KERNEL_ARCH ?= "${TARGET_OBJCOPY_KERNEL_ARCH}"
> > >
> >
> > We shouldn't need this TARGET_OBJCOPY_KERNEL_ARCH ->
> > HOST_OBJCOPY_KERNEL_ARCH, I can't think of how objcopy would be using
> > them.
>
> >
> > Are you setting them to some value in your builds ?
>
> No, I am not. I decided to maintain consistency of usage from LD and AR.
> I could'nt think of a usage either, true.

That's what I figured. I was worried I was missing some sort of
usecase. No harm in copying the existing pattern, I didn't introduce
it either, so I wanted to make sure there wasn't something going on
that I didn't see.

>
>
> >
> > >  KERNEL_CC = "${CCACHE}${HOST_PREFIX}gcc ${HOST_CC_KERNEL_ARCH} 
> > > -fuse-ld=bfd ${DEBUG_PREFIX_MAP} 
> > > -fdebug-prefix-map=${STAGING_KERNEL_DIR}=${KERNEL_SRC_PATH}"
> > >  KERNEL_LD = "${CCACHE}${HOST_PREFIX}ld.bfd ${HOST_LD_KERNEL_ARCH}"
> > >  KERNEL_AR = "${CCACHE}${HOST_PREFIX}ar ${HOST_AR_KERNEL_ARCH}"
> > > +KERNEL_OBJCOPY = "${CCACHE}${HOST_PREFIX}objcopy 
> > > ${HOST_OBJCOPY_KERNEL_ARCH}"
> >
> > The main kernel Makefile already defines, and the standard env should
> > already have both CROSS_COMPILE and OBJCOPY defined to be the target
> > version.
> >
> > Makefile:OBJCOPY                = $(CROSS_COMPILE)objcopy
>
> OK this is what is confusing me -> I dont see CROSS_COMPILE being set -
> which is what I had expected in the first place. other than
> meta/recipes-kernel/perf/perf.bb, I dont see it set else where -> I was
> really wondering why all the specific usage, when CROSS_COMPILE would
> have just done the job.. Then I was guessing maybe the rationale is for
> some ancient kernel where CROSS_COMPILE is'nt set right?
>

It could be, we also wanted to tack on the CCACHE stuff, but generally
speaking .. it is all kind of redundant with new kernels.

> >
> > So we really have to pass this, when fundamentally it is the same
> > definition as what the defaults give us.
> >
> > What does that resolve to in your builds ? In mine, when I dump the
> > objcopy value from within the kernel build, I get:
> >
> > | /opt/poky/build/tmp/work-shared/qemuarm64/kernel-source/Makefile:443:
> > *** objcopy: aarch64-poky-linux-objcopy.  Stop.
> >
> > Which should be doing the job.
>
> x86's objcopy - which is why I was trying to figure out what the heck
> went on..

That is indeed strange.

What does bitbake -e tell you ?

CROSS_COMPILE should be exported by kernel.bbclass itself,
it definitely is in my environment dump.

>
> >
> > Are you building arm on arm ? or something else like that ?
>
>
> Nothing fancy.. x86 PC cross compiling for arm. honestly, 5.11 build
> went fine. What makes me wonder is how does it even build for you? how
> does OBJCOPY variable even point to aarch64-poky-linux-objcopy

Indeed. I've done a full set of tests on all the arches for 5.12-rc+ (as
you can see by the lttng/perf/devsrc patches that I've been sending
in the past week), so something odd is going on here.

Are the layers you are building public ? if so, I can try with your exact
setup and see if I can reproduce the issue.

Bruce

>
> --
> Regards,
> Nishanth Menon
> Key (0xDDB5849D1736249D) / Fingerprint: F8A2 8693 54EB 8232 17A3  1A34 DDB5 
> 849D 1736 249D



-- 
- 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 (#150047): 
https://lists.openembedded.org/g/openembedded-core/message/150047
Mute This Topic: https://lists.openembedded.org/mt/81618199/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