From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from phobos.denx.de (phobos.denx.de [85.214.62.61]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id E1570C04A95 for ; Sun, 25 Sep 2022 15:05:10 +0000 (UTC) Received: from h2850616.stratoserver.net (localhost [IPv6:::1]) by phobos.denx.de (Postfix) with ESMTP id 47CFE84C35; Sun, 25 Sep 2022 17:03:49 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de Authentication-Results: phobos.denx.de; dkim=pass (1024-bit key; unprotected) header.d=chromium.org header.i=@chromium.org header.b="jKjHtizL"; dkim-atps=neutral Received: by phobos.denx.de (Postfix, from userid 109) id 9AE7C84BF3; Sun, 25 Sep 2022 17:03:27 +0200 (CEST) Received: from mail-io1-xd34.google.com (mail-io1-xd34.google.com [IPv6:2607:f8b0:4864:20::d34]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits)) (No client certificate requested) by phobos.denx.de (Postfix) with ESMTPS id AB44B84AD6 for ; Sun, 25 Sep 2022 17:03:22 +0200 (CEST) Authentication-Results: phobos.denx.de; dmarc=pass (p=none dis=none) header.from=chromium.org Authentication-Results: phobos.denx.de; spf=pass smtp.mailfrom=sjg@chromium.org Received: by mail-io1-xd34.google.com with SMTP id e205so3447621iof.1 for ; Sun, 25 Sep 2022 08:03:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date; bh=f3dqNyDLhFbqT0TNJ2cnmyZMf4+qVp62y3OyB/YaC/8=; b=jKjHtizLkIlM2OgC7Pbfg84JTIGpomSNWjd13pNJpM4OndgH/CNbX2A7cODf1HsO+Q Y583HYMWDIxy5xOIgwLXOulqdiNhGAJ79gOBguqFRVAfDBnHFxAJw2l4d7Emc/yGNDxI ax4hS6p0Ay6noTMqh3vDUSqa2NL+YErmnn99Q= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date; bh=f3dqNyDLhFbqT0TNJ2cnmyZMf4+qVp62y3OyB/YaC/8=; b=sxK209sWUI/zzy1B45QVZAspKI35QvcpLAYELA9MIL8eBAGFJOyh1EDz21pRDw2Y+l /fkLGt3lzfU6crVEoboxZUUZz7D4gXjWe87fTi2CSmDu1IlqVmaE3olGkAq6qQTV+NP2 weZAqOIjQpI+iHbBmDVtBkS6KdCt+EFBSDlhxbJ5Pma9QGJGtw2wq1kynkNTyLIXJe0x UWssdrrmbiuqJuSdm3YoCuCg+QA6buO+pHQC7HE/dFw3Gs/qd5F78Xr0+AzsiF/SxY35 hm5o79E+s5mMo+85ES/tWLZ/RIHC6LiuTrpLnUZUp1Lth27lABGFWMhR0h5vEhuqrkAq Dw4Q== X-Gm-Message-State: ACrzQf3gk6NwtfCTNoUcfRfeRfOUfH4ilcXSb0aMU9wcfK1S+NFH+cOw f6sJcvI34sLD21Z4d+gafrINH6h+uEC6eQ== X-Google-Smtp-Source: AMsMyM4aGLvVlwPmRd+NBw8sOLeSQ7tiFvob715aAwlCquWCoKpDVd/0896UGj/Hz1HotOxUMS8pSA== X-Received: by 2002:a05:6638:22d1:b0:358:3ee7:70b8 with SMTP id j17-20020a05663822d100b003583ee770b8mr9227312jat.80.1664118201831; Sun, 25 Sep 2022 08:03:21 -0700 (PDT) Received: from sjg1.roam.corp.google.com (c-67-190-102-125.hsd1.co.comcast.net. [67.190.102.125]) by smtp.gmail.com with ESMTPSA id u19-20020a926013000000b002f19d9838c6sm5360578ilb.25.2022.09.25.08.03.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 25 Sep 2022 08:03:21 -0700 (PDT) From: Simon Glass To: U-Boot Mailing List Cc: Tom Rini , Simon Glass , Alper Nebi Yasak , Heiko Thiery Subject: [PATCH 12/45] binman: Handle writing ELF symbols in the Entry class Date: Sun, 25 Sep 2022 09:02:15 -0600 Message-Id: <20220925150248.2524421-13-sjg@chromium.org> X-Mailer: git-send-email 2.37.3.998.g577e59143f-goog In-Reply-To: <20220925150248.2524421-1-sjg@chromium.org> References: <20220925150248.2524421-1-sjg@chromium.org> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-BeenThere: u-boot@lists.denx.de X-Mailman-Version: 2.1.39 Precedence: list List-Id: U-Boot discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: u-boot-bounces@lists.denx.de Sender: "U-Boot" X-Virus-Scanned: clamav-milter 0.103.6 at phobos.denx.de X-Virus-Status: Clean This feature is used by several etypes and we plan to add more that use it. Make symbol writing a feature of the base class to reduce the code duplication. Signed-off-by: Simon Glass --- tools/binman/entry.py | 13 +++++++++++-- tools/binman/etype/blob.py | 5 +++-- tools/binman/etype/u_boot_spl.py | 7 ++----- tools/binman/etype/u_boot_spl_nodtb.py | 6 +----- tools/binman/etype/u_boot_tpl.py | 6 +----- tools/binman/etype/u_boot_tpl_nodtb.py | 6 +----- tools/binman/etype/u_boot_vpl.py | 6 +----- tools/binman/etype/u_boot_vpl_nodtb.py | 6 +----- 8 files changed, 21 insertions(+), 34 deletions(-) diff --git a/tools/binman/entry.py b/tools/binman/entry.py index 63ec5cea3b2..bdf53ddd922 100644 --- a/tools/binman/entry.py +++ b/tools/binman/entry.py @@ -12,6 +12,7 @@ import sys import time from binman import bintool +from binman import elf from dtoc import fdt_util from patman import tools from patman.tools import to_hex, to_hex_size @@ -86,10 +87,15 @@ class Entry(object): fake_fname: Fake filename, if one was created, else None required_props (dict of str): Properties which must be present. This can be added to by subclasses + elf_fname (str): Filename of the ELF file, if this entry holds an ELF + file, or is a binary file produced from an ELF file + auto_write_symbols (bool): True to write ELF symbols into this entry's + contents """ fake_dir = None - def __init__(self, section, etype, node, name_prefix=''): + def __init__(self, section, etype, node, name_prefix='', + auto_write_symbols=False): # Put this here to allow entry-docs and help to work without libfdt global state from binman import state @@ -125,6 +131,8 @@ class Entry(object): self.fake_fname = None self.required_props = [] self.comp_bintool = None + self.elf_fname = None + self.auto_write_symbols = auto_write_symbols @staticmethod def FindEntryClass(etype, expanded): @@ -647,7 +655,8 @@ class Entry(object): Args: section: Section containing the entry """ - pass + if self.auto_write_symbols: + elf.LookupAndWriteSymbols(self.elf_fname, self, section.GetImage()) def CheckEntries(self): """Check that the entry offsets are correct diff --git a/tools/binman/etype/blob.py b/tools/binman/etype/blob.py index ceaefb07b73..a50a8068901 100644 --- a/tools/binman/etype/blob.py +++ b/tools/binman/etype/blob.py @@ -31,8 +31,9 @@ class Entry_blob(Entry): the node (if enabled with -u) which provides the uncompressed size of the data. """ - def __init__(self, section, etype, node): - super().__init__(section, etype, node) + def __init__(self, section, etype, node, auto_write_symbols=False): + super().__init__(section, etype, node, + auto_write_symbols=auto_write_symbols) self._filename = fdt_util.GetString(self._node, 'filename', self.etype) def ObtainContents(self, fake_size=0): diff --git a/tools/binman/etype/u_boot_spl.py b/tools/binman/etype/u_boot_spl.py index 6f79bf59f9f..d1aa3b4fdad 100644 --- a/tools/binman/etype/u_boot_spl.py +++ b/tools/binman/etype/u_boot_spl.py @@ -5,7 +5,6 @@ # Entry-type module for spl/u-boot-spl.bin # -from binman import elf from binman.entry import Entry from binman.etype.blob import Entry_blob @@ -35,11 +34,9 @@ class Entry_u_boot_spl(Entry_blob): unless --no-expanded is used or the node has a 'no-expanded' property. """ def __init__(self, section, etype, node): - super().__init__(section, etype, node) + super().__init__(section, etype, node, auto_write_symbols=True) self.elf_fname = 'spl/u-boot-spl' + self.auto_write_symbols = True def GetDefaultFilename(self): return 'spl/u-boot-spl.bin' - - def WriteSymbols(self, section): - elf.LookupAndWriteSymbols(self.elf_fname, self, section.GetImage()) diff --git a/tools/binman/etype/u_boot_spl_nodtb.py b/tools/binman/etype/u_boot_spl_nodtb.py index 316b38172ef..50a126dc7ef 100644 --- a/tools/binman/etype/u_boot_spl_nodtb.py +++ b/tools/binman/etype/u_boot_spl_nodtb.py @@ -5,7 +5,6 @@ # Entry-type module for 'u-boot-spl-nodtb.bin' # -from binman import elf from binman.entry import Entry from binman.etype.blob import Entry_blob @@ -32,11 +31,8 @@ class Entry_u_boot_spl_nodtb(Entry_blob): binman uses that to look up symbols to write into the SPL binary. """ def __init__(self, section, etype, node): - super().__init__(section, etype, node) + super().__init__(section, etype, node, auto_write_symbols=True) self.elf_fname = 'spl/u-boot-spl' def GetDefaultFilename(self): return 'spl/u-boot-spl-nodtb.bin' - - def WriteSymbols(self, section): - elf.LookupAndWriteSymbols(self.elf_fname, self, section.GetImage()) diff --git a/tools/binman/etype/u_boot_tpl.py b/tools/binman/etype/u_boot_tpl.py index 0c575df8cdc..1883a2bd5f1 100644 --- a/tools/binman/etype/u_boot_tpl.py +++ b/tools/binman/etype/u_boot_tpl.py @@ -5,7 +5,6 @@ # Entry-type module for tpl/u-boot-tpl.bin # -from binman import elf from binman.entry import Entry from binman.etype.blob import Entry_blob @@ -35,11 +34,8 @@ class Entry_u_boot_tpl(Entry_blob): unless --no-expanded is used or the node has a 'no-expanded' property. """ def __init__(self, section, etype, node): - super().__init__(section, etype, node) + super().__init__(section, etype, node, auto_write_symbols=True) self.elf_fname = 'tpl/u-boot-tpl' def GetDefaultFilename(self): return 'tpl/u-boot-tpl.bin' - - def WriteSymbols(self, section): - elf.LookupAndWriteSymbols(self.elf_fname, self, section.GetImage()) diff --git a/tools/binman/etype/u_boot_tpl_nodtb.py b/tools/binman/etype/u_boot_tpl_nodtb.py index 98f3853f457..7e08e58f1e5 100644 --- a/tools/binman/etype/u_boot_tpl_nodtb.py +++ b/tools/binman/etype/u_boot_tpl_nodtb.py @@ -5,7 +5,6 @@ # Entry-type module for 'u-boot-tpl-nodtb.bin' # -from binman import elf from binman.entry import Entry from binman.etype.blob import Entry_blob @@ -32,11 +31,8 @@ class Entry_u_boot_tpl_nodtb(Entry_blob): binman uses that to look up symbols to write into the TPL binary. """ def __init__(self, section, etype, node): - super().__init__(section, etype, node) + super().__init__(section, etype, node, auto_write_symbols=True) self.elf_fname = 'tpl/u-boot-tpl' def GetDefaultFilename(self): return 'tpl/u-boot-tpl-nodtb.bin' - - def WriteSymbols(self, section): - elf.LookupAndWriteSymbols(self.elf_fname, self, section.GetImage()) diff --git a/tools/binman/etype/u_boot_vpl.py b/tools/binman/etype/u_boot_vpl.py index 9daaca4f6fd..62e5969c6ec 100644 --- a/tools/binman/etype/u_boot_vpl.py +++ b/tools/binman/etype/u_boot_vpl.py @@ -5,7 +5,6 @@ # Entry-type module for vpl/u-boot-vpl.bin # -from binman import elf from binman.entry import Entry from binman.etype.blob import Entry_blob @@ -32,11 +31,8 @@ class Entry_u_boot_vpl(Entry_blob): binman uses that to look up symbols to write into the VPL binary. """ def __init__(self, section, etype, node): - super().__init__(section, etype, node) + super().__init__(section, etype, node, auto_write_symbols=True) self.elf_fname = 'vpl/u-boot-vpl' def GetDefaultFilename(self): return 'vpl/u-boot-vpl.bin' - - def WriteSymbols(self, section): - elf.LookupAndWriteSymbols(self.elf_fname, self, section.GetImage()) diff --git a/tools/binman/etype/u_boot_vpl_nodtb.py b/tools/binman/etype/u_boot_vpl_nodtb.py index 25c966cf342..db3d8a91c9b 100644 --- a/tools/binman/etype/u_boot_vpl_nodtb.py +++ b/tools/binman/etype/u_boot_vpl_nodtb.py @@ -5,7 +5,6 @@ # Entry-type module for 'u-boot-vpl-nodtb.bin' # -from binman import elf from binman.entry import Entry from binman.etype.blob import Entry_blob @@ -32,11 +31,8 @@ class Entry_u_boot_vpl_nodtb(Entry_blob): binman uses that to look up symbols to write into the VPL binary. """ def __init__(self, section, etype, node): - super().__init__(section, etype, node) + super().__init__(section, etype, node, auto_write_symbols=True) self.elf_fname = 'vpl/u-boot-vpl' def GetDefaultFilename(self): return 'vpl/u-boot-vpl-nodtb.bin' - - def WriteSymbols(self, section): - elf.LookupAndWriteSymbols(self.elf_fname, self, section.GetImage()) -- 2.37.3.998.g577e59143f-goog