summaryrefslogtreecommitdiff
path: root/build-aux/measurestack/app_plugins.py
diff options
context:
space:
mode:
authorLuke T. Shumaker <lukeshu@lukeshu.com>2025-05-08 16:37:09 -0600
committerLuke T. Shumaker <lukeshu@lukeshu.com>2025-05-10 17:04:11 -0600
commitb68138677750800764453c7498c8436eca813f4b (patch)
tree51757128739021b900d04732ce8782907d8e820b /build-aux/measurestack/app_plugins.py
parent3ff84d9624d57906c16756ab1abff1a7744998c2 (diff)
measurestack: Test how we handle %v
Diffstat (limited to 'build-aux/measurestack/app_plugins.py')
-rw-r--r--build-aux/measurestack/app_plugins.py26
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]]