diff options
author | Luke T. Shumaker <lukeshu@lukeshu.com> | 2025-05-08 16:37:09 -0600 |
---|---|---|
committer | Luke T. Shumaker <lukeshu@lukeshu.com> | 2025-05-10 17:04:11 -0600 |
commit | b68138677750800764453c7498c8436eca813f4b (patch) | |
tree | 51757128739021b900d04732ce8782907d8e820b /build-aux/measurestack/app_plugins.py | |
parent | 3ff84d9624d57906c16756ab1abff1a7744998c2 (diff) |
measurestack: Test how we handle %v
Diffstat (limited to 'build-aux/measurestack/app_plugins.py')
-rw-r--r-- | build-aux/measurestack/app_plugins.py | 26 |
1 files changed, 15 insertions, 11 deletions
diff --git a/build-aux/measurestack/app_plugins.py b/build-aux/measurestack/app_plugins.py index 8eda36c..e365f82 100644 --- a/build-aux/measurestack/app_plugins.py +++ b/build-aux/measurestack/app_plugins.py @@ -410,9 +410,6 @@ class Lib9PPlugin: 1, self._skipmodel__lib9p_validate_unmarshal_marshal, ), - BaseName("_vfctprintf"): analyze.SkipModel( - self.formatters, self._skipmodel__vfctprintf - ), } return ret @@ -427,18 +424,14 @@ class Lib9PPlugin: return False return m_caller.group("grp") != m_callee.group("grp") - def _skipmodel__vfctprintf( - self, chain: typing.Sequence[QName], node: Node, call: QName - ) -> bool: - if call.base() == BaseName("libfmt_conv_formatter"): - return any(c.base() in self.formatters for c in chain) - return False - class PicoFmtPlugin: known_fct: dict[BaseName, BaseName] + wont_call_v: typing.Collection[BaseName] - def __init__(self, arg_pico_platform: str) -> None: + def __init__( + self, arg_pico_platform: str, wont_call_v: typing.Collection[BaseName] + ) -> None: self.known_fct = { # pico_fmt BaseName("fmt_vsnprintf"): BaseName("_out_buffer"), @@ -462,6 +455,7 @@ class PicoFmtPlugin: BaseName("__lm_light_printf"): BaseName("libfmt_libc_fct"), } ) + self.wont_call_v = set([*self.known_fct.values(), *wont_call_v]) def is_intrhandler(self, name: QName) -> bool: return False @@ -506,6 +500,9 @@ class PicoFmtPlugin: BaseName("fmt_state_putchar"): analyze.SkipModel( self.known_fct.keys(), self._skipmodel_fmt_state_putchar ), + BaseName("_vfctprintf"): analyze.SkipModel( + self.wont_call_v, self._skipmodel__vfctprintf + ), } return ret @@ -521,6 +518,13 @@ class PicoFmtPlugin: return True return False + def _skipmodel__vfctprintf( + self, chain: typing.Sequence[QName], node: Node, call: QName + ) -> bool: + if call.base() == BaseName("libfmt_conv_formatter"): + return any(c.base() in self.wont_call_v for c in chain) + return False + class PicoSDKPlugin: get_init_array: typing.Callable[[], typing.Collection[QName]] |