From 191e4b8fe0eff2585e4c52f398ed7fe04d4a674e Mon Sep 17 00:00:00 2001 From: Vinson Lee Date: Tue, 16 Dec 2025 17:36:24 -0800 Subject: [PATCH] bin/symbols-check: Fix undefined symbol detection on macOS Commit e626636e90c ("bin/symbols-check: fix fields length condition before accessing fields") changed the condition from `or` to `and` to prevent potential IndexError when accessing fields[1]. However, this broke macOS because `nm -gP` outputs different field counts for undefined symbols: - Linux: `_symbol U` (2 fields) - macOS: `_symbol U 0 0` (4 fields) The condition `len(fields) == 2 and fields[1] == 'U'` only matched the Linux format, causing undefined symbols like _mesa_glapi_tls_Dispatch to be incorrectly reported as "unknown symbol exported" on macOS. Fix by using `len(fields) >= 2` to handle both platforms while still guarding against IndexError. Fixes: e626636e90c ("bin/symbols-check: fix fields length condition before accessing fields") Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/13451 Signed-off-by: Vinson Lee Part-of: --- bin/symbols-check.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/symbols-check.py b/bin/symbols-check.py index fca8887ec89..3338db16017 100644 --- a/bin/symbols-check.py +++ b/bin/symbols-check.py @@ -80,7 +80,7 @@ def get_symbols_nm(nm, lib): if line.startswith(' '): continue fields = line.split() - if len(fields) == 2 and fields[1] == 'U': + if len(fields) >= 2 and fields[1] == 'U': continue symbol_name = fields[0] if platform_name == 'Linux' or platform_name == 'GNU' or platform_name.startswith('GNU/'):