diff options
Diffstat (limited to 'build-aux')
-rw-r--r-- | build-aux/measurestack/app_main.py | 5 | ||||
-rw-r--r-- | build-aux/measurestack/app_plugins.py | 24 |
2 files changed, 25 insertions, 4 deletions
diff --git a/build-aux/measurestack/app_main.py b/build-aux/measurestack/app_main.py index 9a31338..7573146 100644 --- a/build-aux/measurestack/app_main.py +++ b/build-aux/measurestack/app_main.py @@ -27,7 +27,8 @@ def main( # sbc-harness #################################################### - lib9p_plugin = app_plugins.Lib9PPlugin(arg_base_dir, arg_c_fnames) + libobj_plugin = app_plugins.LibObjPlugin(arg_c_fnames) + lib9p_plugin = app_plugins.Lib9PPlugin(arg_base_dir, arg_c_fnames, libobj_plugin) def sbc_is_thread(name: QName) -> int: if str(name).endswith("_cr") and name.base() != BaseName("lib9p_srv_read_cr"): @@ -44,8 +45,6 @@ def main( return 1 return 0 - libobj_plugin = app_plugins.LibObjPlugin(arg_c_fnames) - plugins += [ app_plugins.CmdPlugin(), libobj_plugin, 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: |