On Tue, Jan 11, 2022 at 6:59 PM Saul Wold <[email protected]> wrote: > > Extend runstrip() to accept additional argument to enable > sharing it with the kernel do_strip() to that > KERNEL_IMAGE_STRIP_EXTRA_SECTIONS can be passed. > > Since is_elf() understands kernel modules there is no need to keep a > seperate list for kernmodules or hardcode the values to runstrip. > > Signed-off-by: Saul Wold <[email protected]> > --- > meta/classes/package.bbclass | 21 +++++++-------------- > meta/lib/oe/package.py | 7 +++++-- > 2 files changed, 12 insertions(+), 16 deletions(-) > > diff --git a/meta/classes/package.bbclass b/meta/classes/package.bbclass > index 09cd376f4af..794996e6d6d 100644 > --- a/meta/classes/package.bbclass > +++ b/meta/classes/package.bbclass > @@ -390,10 +390,6 @@ def splitdebuginfo(file, dvar, debugdir, debuglibdir, > debugappend, debugsrcdir, > dvar = d.getVar('PKGD') > objcopy = d.getVar("OBJCOPY") > > - # We ignore kernel modules, we don't generate debug info files. > - if file.find("/lib/modules/") != -1 and file.endswith(".ko"): > - return (file, sources) > - > newmode = None > if not os.access(file, os.W_OK) or os.access(file, os.R_OK): > origmode = os.stat(file)[stat.ST_MODE] > @@ -1122,7 +1118,6 @@ python split_and_strip_files () { > # > elffiles = {} > symlinks = {} > - kernmods = [] > staticlibs = [] > inodes = {} > libdir = os.path.abspath(dvar + os.sep + d.getVar("libdir")) > @@ -1145,9 +1140,6 @@ python split_and_strip_files () { > if file in skipfiles: > continue > > - if file.endswith(".ko") and file.find("/lib/modules/") != -1: > - kernmods.append(file) > - continue > if oe.package.is_static_lib(file): > staticlibs.append(file) > continue > @@ -1164,8 +1156,11 @@ python split_and_strip_files () { > if not s: > continue > # Check its an executable > - if (s[stat.ST_MODE] & stat.S_IXUSR) or (s[stat.ST_MODE] & > stat.S_IXGRP) or (s[stat.ST_MODE] & stat.S_IXOTH) \ > - or ((file.startswith(libdir) or > file.startswith(baselibdir)) and (".so" in f or ".node" in f)): > + if (s[stat.ST_MODE] & stat.S_IXUSR) or (s[stat.ST_MODE] & > stat.S_IXGRP) \ > + or (s[stat.ST_MODE] & stat.S_IXOTH) \ > + or ((file.startswith(libdir) or > file.startswith(baselibdir)) \ > + and (".so" in f or ".node" in f)) \ > + or (f.startswith('vmlinux') or ".ko" in f): > > if cpath.islink(file): > checkelflinks[file] = ltarget > @@ -1311,12 +1306,10 @@ python split_and_strip_files () { > for file in elffiles: > elf_file = int(elffiles[file]) > #bb.note("Strip %s" % file) > - sfiles.append((file, elf_file, strip)) > - for f in kernmods: > - sfiles.append((f, 16, strip)) > + sfiles.append((file, elf_file, strip, '')) > if (d.getVar('PACKAGE_STRIP_STATIC') == '1' or > d.getVar('PACKAGE_DEBUG_STATIC_SPLIT') == '1'): > for f in staticlibs: > - sfiles.append((f, 16, strip)) > + sfiles.append((f, 16, strip, '')) > > oe.utils.multiprocess_launch(oe.package.runstrip, sfiles, d) > > diff --git a/meta/lib/oe/package.py b/meta/lib/oe/package.py > index dd700cbb0c9..7842a614e9f 100644 > --- a/meta/lib/oe/package.py > +++ b/meta/lib/oe/package.py > @@ -16,7 +16,7 @@ def runstrip(arg): > # 8 - shared library > # 16 - kernel module > > - (file, elftype, strip) = arg > + (file, elftype, strip, extra_strip_sections) = arg > > newmode = None > if not os.access(file, os.W_OK) or os.access(file, os.R_OK): > @@ -40,6 +40,9 @@ def runstrip(arg): > # shared or executable: > elif elftype & 8 or elftype & 4: > stripcmd.extend(["--remove-section=.comment", > "--remove-section=.note"]) > + if file.find("boot/vmlinux") != -1 and extra_strip_sections != '': > + for section in extra_strip_sections.split(): > + stripcmd.extend(["--remove-section=" + section])
One thought that came to mind when reading this, is does that really need to be restricted to boot/vmlinux ? The code would be simplified by just testing for 'if extra_strip_sections:' .. and then the sections are only passed for the kernel components that need it. The more broadly available functionality obviously isn't used (or maybe ever needed), but it does simplify things. But I'm only looking at the diff, so maybe I'm missing a nuance. > > stripcmd.append(file) > bb.debug(1, "runstrip: %s" % stripcmd) > @@ -172,7 +175,7 @@ def strip_execs(pn, dstdir, strip_cmd, libdir, > base_libdir, d, qa_already_stripp > sfiles = [] > for file in elffiles: > elf_file = int(elffiles[file]) > - sfiles.append((file, elf_file, strip_cmd)) > + sfiles.append((file, elf_file, strip_cmd, '')) Rather than needing to add the '' to all of the appends, isn't there a way that the oe util runstrip could just check the length of args and assign a default if there isn't a 4th argument ? That routine is already assigning specifically to variables to checking the length wouldn't be adding any specific knowledge to a generic routine. Bruce > > oe.utils.multiprocess_launch(runstrip, sfiles, d) > > -- > 2.31.1 > -- - 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 (#160481): https://lists.openembedded.org/g/openembedded-core/message/160481 Mute This Topic: https://lists.openembedded.org/mt/88362605/21656 Group Owner: [email protected] Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [[email protected]] -=-=-=-=-=-=-=-=-=-=-=-
