summaryrefslogtreecommitdiff
path: root/build-aux/measurestack/app_plugins.py
diff options
context:
space:
mode:
Diffstat (limited to 'build-aux/measurestack/app_plugins.py')
-rw-r--r--build-aux/measurestack/app_plugins.py24
1 files changed, 23 insertions, 1 deletions
diff --git a/build-aux/measurestack/app_plugins.py b/build-aux/measurestack/app_plugins.py
index 3a09272..36e661b 100644
--- a/build-aux/measurestack/app_plugins.py
+++ b/build-aux/measurestack/app_plugins.py
@@ -274,8 +274,20 @@ class Lib9PPlugin:
_CONFIG_9P_NUM_SOCKS: int | None
CONFIG_9P_SRV_MAX_REQS: int | None
CONFIG_9P_SRV_MAX_DEPTH: int | None
+ formatters: typing.Collection[BaseName]
+
+ def __init__(
+ self,
+ arg_base_dir: str,
+ arg_c_fnames: typing.Collection[str],
+ libobj_plugin: LibObjPlugin,
+ ) -> None:
+ self.formatters = {
+ x.base()
+ for x in libobj_plugin.objcalls["format"]
+ if str(x.base()).startswith("lib9p_")
+ }
- def __init__(self, arg_base_dir: str, arg_c_fnames: typing.Collection[str]) -> None:
# Find filenames #######################################################
def _is_config_h(fname: str) -> bool:
@@ -389,6 +401,9 @@ class Lib9PPlugin:
2,
self._skipmodel__lib9p_validate_unmarshal_marshal,
),
+ BaseName("_vfctprintf"): analyze.SkipModel(
+ self.formatters, self._skipmodel__vfctprintf
+ ),
}
if isinstance(self.CONFIG_9P_SRV_MAX_DEPTH, int):
ret[BaseName("srv_util_pathfree")] = analyze.SkipModel(
@@ -419,6 +434,13 @@ class Lib9PPlugin:
)
return False
+ def _skipmodel__vfctprintf(
+ self, chain: typing.Sequence[QName], call: QName
+ ) -> bool:
+ if call.base() == BaseName("libfmt_conv_formatter"):
+ return any(c.base() in self.formatters for c in chain)
+ return False
+
class LibMiscPlugin:
def is_intrhandler(self, name: QName) -> bool: