From fc17d89e49c5878e5102928f79c74c66b6c4322d Mon Sep 17 00:00:00 2001 From: Andrew C Aitchison Date: Tue, 9 Jun 2026 13:35:26 +0100 Subject: [PATCH 1/2] Update tools/MT-Unsafe.py to find all the unsafe functions listed in man elf_flagelf Also update addons/threadsafety.py to include these functions. This man page lists several unsafe functions on one line. --- addons/threadsafety.py | 5 +++++ tools/MT-Unsafe.py | 25 +++++++++++++++++-------- 2 files changed, 22 insertions(+), 8 deletions(-) diff --git a/addons/threadsafety.py b/addons/threadsafety.py index 390a245d4e1..7414f0ac553 100755 --- a/addons/threadsafety.py +++ b/addons/threadsafety.py @@ -112,7 +112,12 @@ 'drand48', 'ecvt', 'elf_fill', + 'elf_flagdata', + 'elf_flagehdr', 'elf_flagelf', + 'elf_flagphdr', + 'elf_flagscn', + 'elf_flagshdr', 'encrypt', 'endfsent', 'endgrent', diff --git a/tools/MT-Unsafe.py b/tools/MT-Unsafe.py index 965a6261db8..b3cb3c35e72 100755 --- a/tools/MT-Unsafe.py +++ b/tools/MT-Unsafe.py @@ -85,17 +85,26 @@ def man_search(manpage): apis = set() for lineread in MANPAGE: lineread = str(lineread) - dprint(2, '%s' % (lineread)) + dprint(1, '%s' % (lineread)) if 'MT-Safe' in lineread: vprint(1, 'clearing MT-Safe %s', lineread) apis.clear() - res = re.search(r'\.BR\s+(\w+)\s', lineread) - # vprint(1, '%s for %s' % (res, lineread)) - if res: - apis.add(res.group(1)) - dprint(1, 'found api %s in %s' % (res.group(1), lineread)) - continue + if '.BR' in lineread: + function_names = re.sub(r'^.*\.BR ', '', lineread) + dprint(1, 'function_names 1:\n\t%s\n' % (function_names)) + function_names = re.sub(r'\\\\~', '', function_names) + dprint(1, 'function_names 1a:\n\t%s\n' % (function_names)) + function_names = function_names.replace(r'\n', '') + dprint(1, 'function_names 2:\n\t%s\n' % (function_names)) + function_names = re.sub(r"[~() ']+", '', function_names) + dprint(1, 'function_names 3:\n\t%s\n' % (function_names)) + function_names = re.split(',', function_names) + dprint(1, 'function_names split:\n\t%s\n' % (function_names)) + + for fn in function_names: + if fn: + apis.add(fn) if 'MT-Unsafe' in lineread: resUnsafe = re.search("MT-Unsafe\\s+(.*)(\\n\'|$)", lineread) @@ -103,7 +112,7 @@ def man_search(manpage): if resUnsafe: values = resUnsafe.group(1) dprint(1, 'a %s' % values) - values = re.sub(r'\\n\'$', '', values) + values = re.sub(r"\\n\'$", '', values) # values = values.split(' ') dprint(1, 'values %s' % list(values)) From 1addff2de25084946cf1c218a678e2710a984dc3 Mon Sep 17 00:00:00 2001 From: Andrew C Aitchison Date: Wed, 10 Jun 2026 16:11:34 +0100 Subject: [PATCH 2/2] whitespace suggested by pylint --- tools/MT-Unsafe.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/MT-Unsafe.py b/tools/MT-Unsafe.py index b3cb3c35e72..c97e5e47803 100755 --- a/tools/MT-Unsafe.py +++ b/tools/MT-Unsafe.py @@ -101,7 +101,7 @@ def man_search(manpage): dprint(1, 'function_names 3:\n\t%s\n' % (function_names)) function_names = re.split(',', function_names) dprint(1, 'function_names split:\n\t%s\n' % (function_names)) - + for fn in function_names: if fn: apis.add(fn)