bin/symbols-check: Fix undefined symbol detection on macOS
Commite626636e90("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:e626636e90("bin/symbols-check: fix fields length condition before accessing fields") Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/13451 Signed-off-by: Vinson Lee <vlee@freedesktop.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/38983>
This commit is contained in:
@@ -80,7 +80,7 @@ def get_symbols_nm(nm, lib):
|
|||||||
if line.startswith(' '):
|
if line.startswith(' '):
|
||||||
continue
|
continue
|
||||||
fields = line.split()
|
fields = line.split()
|
||||||
if len(fields) == 2 and fields[1] == 'U':
|
if len(fields) >= 2 and fields[1] == 'U':
|
||||||
continue
|
continue
|
||||||
symbol_name = fields[0]
|
symbol_name = fields[0]
|
||||||
if platform_name == 'Linux' or platform_name == 'GNU' or platform_name.startswith('GNU/'):
|
if platform_name == 'Linux' or platform_name == 'GNU' or platform_name.startswith('GNU/'):
|
||||||
|
|||||||
Reference in New Issue
Block a user