mirror of
https://github.com/fish-shell/fish-shell.git
synced 2024-11-22 20:16:12 +08:00
44 lines
1.2 KiB
Fish
Executable File
44 lines
1.2 KiB
Fish
Executable File
#!/usr/bin/env fish
|
|
|
|
# Finds global variables by parsing the output of 'nm'
|
|
# for object files in this directory.
|
|
# This was written for macOS nm.
|
|
|
|
set total_globals 0
|
|
set boring_files \
|
|
fish_key_reader.cpp.o \
|
|
fish_tests.cpp.o \
|
|
fish_indent.cpp.o \
|
|
|
|
|
|
set whitelist \
|
|
termsize_lock termsize \
|
|
initial_pid initial_fg_process_group \
|
|
_debug_level \
|
|
sitm_esc ritm_esc dim_esc \
|
|
iothread_init()::inited \
|
|
s_result_queue s_main_thread_request_queue s_read_pipe s_write_pipe \
|
|
s_main_thread_performer_lock s_main_thread_performer_cond s_main_thread_request_q_lock \
|
|
locked_consumed_job_ids \
|
|
env_initialized \
|
|
|
|
|
|
for file in ./**.o
|
|
set filename (basename $file)
|
|
# Skip boring files.
|
|
contains $filename $boring_files
|
|
and continue
|
|
for line in (nm -p -P -U $file)
|
|
# Look in data (dD) and bss (bB) segments.
|
|
set matches (string match --regex '^([^ ]+) ([dDbB])' -- $line)
|
|
or continue
|
|
set symname (echo $matches[2] | c++filt)
|
|
contains $symname $whitelist
|
|
and continue
|
|
echo $filename $symname $matches[3]
|
|
set total_globals (math $total_globals + 1)
|
|
end
|
|
end
|
|
|
|
echo "Total: $total_globals"
|