mirror of
https://git.yoctoproject.org/poky
synced 2026-03-19 13:49:41 +01:00
package: Add support for kernel stripping
Extend runstrip() to accept additional argument to enable sharing it with the kernel do_strip() so 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. (From OE-Core rev: e09a8fa931fe617afc05bd5e00dca5dd3fe386e8) Signed-off-by: Saul Wold <saul.wold@windriver.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
committed by
Richard Purdie
parent
987d30df5b
commit
d756b346f2
@@ -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
|
||||
@@ -1312,8 +1307,6 @@ python split_and_strip_files () {
|
||||
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))
|
||||
if (d.getVar('PACKAGE_STRIP_STATIC') == '1' or d.getVar('PACKAGE_DEBUG_STATIC_SPLIT') == '1'):
|
||||
for f in staticlibs:
|
||||
sfiles.append((f, 16, strip))
|
||||
|
||||
@@ -16,7 +16,11 @@ def runstrip(arg):
|
||||
# 8 - shared library
|
||||
# 16 - kernel module
|
||||
|
||||
(file, elftype, strip) = arg
|
||||
if len(arg) == 3:
|
||||
(file, elftype, strip) = arg
|
||||
extra_strip_sections = ''
|
||||
else:
|
||||
(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 +44,9 @@ def runstrip(arg):
|
||||
# shared or executable:
|
||||
elif elftype & 8 or elftype & 4:
|
||||
stripcmd.extend(["--remove-section=.comment", "--remove-section=.note"])
|
||||
if extra_strip_sections != '':
|
||||
for section in extra_strip_sections.split():
|
||||
stripcmd.extend(["--remove-section=" + section])
|
||||
|
||||
stripcmd.append(file)
|
||||
bb.debug(1, "runstrip: %s" % stripcmd)
|
||||
|
||||
Reference in New Issue
Block a user