[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [XEN PATCH] automation/eclair: add a deviation for MISRA C:2012 Rule 8.6



On 10/11/23 13:41, Jan Beulich wrote:
On 10.11.2023 12:23, Federico Serafini wrote:
--- a/automation/eclair_analysis/ECLAIR/deviations.ecl
+++ b/automation/eclair_analysis/ECLAIR/deviations.ecl
@@ -214,6 +214,15 @@ definition is compiled-out or optimized-out by the 
compiler)"
  -config=MC3R1.R8.6,reports+={deliberate, "first_area(^.*has no definition$)"}
  -doc_end
+-doc_begin="For functions memcpy(), memmove() and memset(), if there are
+multiple definitions, those belong to different archives and the behavior of
+linking is well defined by the toolchain: only one of the definitions will be
+linked in (the first that is encountered searching the archives in the order
+they appear on the command line)."
+-config=MC3R1.R8.6,declarations+={deliberate, "name(memcpy||memmove||memset)"}
+-doc_end

Why would this be limited to mem*()? Anything put into lib.a is going to
be treated like that.

If one day another arch-specific definition for a function will be
introduced, a violation will appear but that is not necessarily a bad
thing because it will lead to another check of the compilation scripts
to ensure objects and archives are linked in the right order.
However, if in your opinion this will be a waste of time,
I can propose another deviation based on "xen/lib/*".


The description also isn't quite accurate: Per-arch mem*() won't be put
in archives, but in .o files. Those are always linked in. Anything not
otherwise resolved may then be resolved by picking objects from
archives (appearing later on the command line, unless specially grouped).

What do you think of the following as justification:

The search procedure for Unix linkers is well defined, see ld(1) manual:
"The linker will search an archive only once, at the location where it
is specified on the command line. If the archive defines a symbol which
was undefined in some object which appeared before the archive on the
command line, the linker will include the appropriate file(s) from the
archive."
In Xen, thanks to the order in which file names appear in the build
commands, if arch-specific definitions are present, they get always linked in before searching in the lib.a archive resulting from
"xen/lib".

--
Federico Serafini, M.Sc.

Software Engineer, BUGSENG (http://bugseng.com)



 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.