All of lore.kernel.org
 help / color / mirror / Atom feed
From: Nicola Vetrini <nicola.vetrini@bugseng.com>
To: Stefano Stabellini <sstabellini@kernel.org>
Cc: victorm.lira@amd.com, xen-devel@lists.xenproject.org,
	Jan Beulich <jbeulich@suse.com>,
	roberto.bagnara@bugseng.com, consulting@bugseng.com,
	simone.ballarin@bugseng.com
Subject: Re: [RFC PATCH v3] automation: add linker symbol name script
Date: Fri, 26 Jul 2024 08:40:55 +0200	[thread overview]
Message-ID: <0d4bd08ca7e9054b04c7eda6c03c7621@bugseng.com> (raw)
In-Reply-To: <alpine.DEB.2.22.394.2407251542230.4857@ubuntu-linux-20-04-desktop>

On 2024-07-26 00:43, Stefano Stabellini wrote:
> On Thu, 25 Jul 2024, Nicola Vetrini wrote:
>> On 2024-07-25 21:01, victorm.lira@amd.com wrote:
>> > From: Victor Lira <victorm.lira@amd.com>
>> >
>> > Requested-by: Jan Beulich <jbeulich@suse.com>
>> > Signed-off-by: Victor Lira <victorm.lira@amd.com>
>> > ---
>> > Notes:
>> > This is a utilty script for help with the MISRA process.
>> > This script matches all linker symbol names in linker script files for
>> > arm or x86.
>> > Not included are symbol names starting with "." or symbol names enclosed
>> > in quotes since the files dont't use any. The regular expression also does
>> > not match for "&=" and similar compound assignments.
>> > ---
>> > Cc: Jan Beulich <jbeulich@suse.com>
>> > Cc: Stefano Stabellini <sstabellini@kernel.org>
>> > Cc: roberto.bagnara@bugseng.com
>> > Cc: consulting@bugseng.com
>> > Cc: simone.ballarin@bugseng.com
>> > ---
>> > Changes v2:
>> > - address style comments
>> > - updated script to use .lds instead of .lds.S
>> > - remove sample output from patch
>> >
>> > Changes v3:
>> > - use #!/bin/sh
>> > - update error handling and message similar to ../build.sh
>> > ---
>> >  automation/eclair_analysis/linker-symbols.sh | 34 ++++++++++++++++++++
>> >  1 file changed, 34 insertions(+)
>> >  create mode 100755 automation/eclair_analysis/linker-symbols.sh
>> >
>> > diff --git a/automation/eclair_analysis/linker-symbols.sh
>> > b/automation/eclair_analysis/linker-symbols.sh
>> > new file mode 100755
>> > index 0000000000..61790fb281
>> > --- /dev/null
>> > +++ b/automation/eclair_analysis/linker-symbols.sh
>> > @@ -0,0 +1,34 @@
>> > +#!/bin/sh
>> > +
>> > +# Stop immediately if any executed command has exit status different from
>> > 0.
>> > +set -e
>> > +
>> > +# Extract linker symbol names (except those starting with ".") from
>> > assignments.
>> > +
>> > +script_name=$(basename "$0")
>> > +script_dir="$(
>> > +  cd "$(dirname "$0")"
>> > +  echo "${PWD}"
>> > +)"
>> > +src_dir="${script_dir}/../.."
>> > +
>> > +fatal() {
>> > +  echo "${script_name}: $*" >&2
>> > +  exit 1
>> > +}
>> > +
>> > +usage() {
>> > +  fatal "Usage: ${script_name} <arm|x86>"
>> > +}
>> > +
>> > +if [ $# -ne 1 ]; then
>> > +  usage
>> > +fi
>> > +
>> > +filepath="${src_dir}/xen/arch/${1}/xen.lds"
>> > +
>> > +if [ ! -f "$filepath" ]; then
>> > +  fatal "Could not find ${1} linker script. Must be run after arm/x86
>> > build."
>> > +fi
>> > +
>> 
>> A doubt I came across now: since this script must be run after the 
>> build (and
>> hence the analysis), but the configuration must be generated before 
>> the
>> analysis, the only way this could work in my opinion is this:
>> 
>> - a build without analysis is performed, just enough to build xen.lds 
>> (maybe
>> there is a specific Makefile target to do this)
>> - generate the configuration, then clean everything and then run the 
>> analysis
> 
> Yes, that is one option and it should work. The other option is to run
> this script against the xen.lds.S files instead (if it works.)
> 

However, as Jan pointed out in v1, this second option may yield 
incomplete results.
The way we can notice if there's a discrepancy is by running the 
analysis with the automatically generated deviation and tell whether the 
resulting reports for Rule 18.2 there are any about linker-defined 
symbols.

> 
>> > +sed -n "s/^\s*\([a-zA-Z_][a-zA-Z_0-9.\-]*\)\s*=.*;.*$/\1/p" "$filepath"

-- 
Nicola Vetrini, BSc
Software Engineer, BUGSENG srl (https://bugseng.com)


  reply	other threads:[~2024-07-26  6:41 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-07-25 19:01 [RFC PATCH v3] automation: add linker symbol name script victorm.lira
2024-07-25 19:06 ` Lira, Victor M
2024-07-25 19:33   ` Nicola Vetrini
2024-07-25 19:39 ` Nicola Vetrini
2024-07-25 22:43   ` Stefano Stabellini
2024-07-26  6:40     ` Nicola Vetrini [this message]
2024-07-26  7:44 ` Jan Beulich
2024-07-26 16:30   ` Lira, Victor M
2024-08-29  0:48   ` Stefano Stabellini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=0d4bd08ca7e9054b04c7eda6c03c7621@bugseng.com \
    --to=nicola.vetrini@bugseng.com \
    --cc=consulting@bugseng.com \
    --cc=jbeulich@suse.com \
    --cc=roberto.bagnara@bugseng.com \
    --cc=simone.ballarin@bugseng.com \
    --cc=sstabellini@kernel.org \
    --cc=victorm.lira@amd.com \
    --cc=xen-devel@lists.xenproject.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.