bug-readline
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug-readline] [PATCH] Enable visibility annotations


From: Yury Gribov
Subject: Re: [Bug-readline] [PATCH] Enable visibility annotations
Date: Mon, 18 Apr 2016 13:57:46 +0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0

On 04/18/2016 01:19 PM, Pedro Alves wrote:
On 04/15/2016 01:47 PM, Yury Gribov wrote:
On 04/15/2016 02:57 PM, Pedro Alves wrote:
On 04/15/2016 12:39 PM, Yury Gribov wrote:

I've attached the script I've came up with (it properly works around
copy relocations and thus detects imported external variables). On my
system (with older gdb which only has _rl_echoing_p,
_rl_qsort_string_compare and _rl_print_completions_horizontally) it

Can you attach rl_orig.lst and rl_new.lst (and preferably a version of
the script that doesn't try to regenerate those), so that others can
easily run this on their systems without having to patch readline?

Right, attached.

I've also fixed an issue in script and added fixed patch which
additionally visualizes _rl_horizontal_scroll_mode (required by trunk gdb).

I ran this now and got:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Symbols which may be used and are missing in new libreadline:
rl_complete_with_tilde_expansion
_rl_mark_modified_lines

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

I wasn't expecting to ever see a "rl_" symbol here?  What was the
logic used to decide whether a symbol should be exported?

I only kept symbols which are present in public headers.

Here's the diff between your rl_orig.lst rl_new.lst files.  There
are more "rl_" files being hidden, e.g.:

  rl_blink_matching_paren
  rl_byte_oriented
  rl_display_fixed.

All three are declared in a file with descriptive name rlprivate.h.

There are other symbols here that look like should probably be public.
For example, history_offset is used by readline's examples:

  readline/src/examples/hist_purgecmd.c:44:extern int history_offset;
  readline/src/examples/hist_purgecmd.c:142:        history_offset--;     /* 
moving backwards in history list */
  readline/src/examples/hist_erasedups.c:41:extern int history_offset;
  readline/src/examples/hist_erasedups.c:114:           history_offset--;       
  /* moving backwards in history list */

so I'd assume that that's a public symbol and that those
examples no longer link after your patch?

Examples do link and run (most probably because they link static version of readline).

Here's the diff between your rl_orig.lst and rl_new.lst
files, showing which symbols would be hidden:

--- rl_orig.lst 2016-04-18 10:58:51.314617490 +0100
+++ rl_new.lst  2016-04-18 10:58:51.302617526 +0100
@@ -1,27 +1,18 @@

  add_history
  add_history_time
-alloc_history_entry
-alphabetic
  append_history
  __bss_start
  clear_history
-completion_matches
-copy_history_entry
-crlf
  current_history
-ding
  _edata
  emacs_ctlx_keymap
  emacs_meta_keymap
  emacs_standard_keymap
  _end
-filename_completion_function
  _fini
  free_history_entry
-free_undo_list
  funmap
-funmap_program_specific_entry_start
  get_history_event
  history_arg_extract
  history_base
@@ -37,7 +28,6 @@ history_length
  history_list
  history_max_entries
  history_no_expand_chars
-history_offset
  history_quotes_inhibit_expansion
  history_search
  history_search_delimiter_chars
@@ -53,44 +43,23 @@ history_word_delimiters
  history_write_timestamps
  _init
  max_input_history
-maybe_replace_line
-maybe_save_line
-maybe_unsave_line
  Name
  next_history
  previous_history
  read_history
  read_history_range
  readline
-readline_internal_char
-readline_internal_setup
-readline_internal_teardown
  remove_history
-replace_history_data
  replace_history_entry
  rl_abort
-_rl_abort_internal
  rl_add_defun
  rl_add_funmap_entry
-_rl_add_macro_char
  rl_add_undo
-_rl_adjust_point
-_rl_allow_pathname_alphabetic_chars
  rl_alphabetic
  rl_already_prompted
-_rl_any_typein
-_rl_arg_callback
-_rl_argcxt
-_rl_arg_dispatch
-_rl_arg_getchar
-_rl_arg_init
-_rl_arg_overflow
-rl_arg_sign
  rl_arrow_keys
  rl_attempted_completion_function
  rl_attempted_completion_over
-_rl_audit_tty
-_rl_backspace
  rl_backward
  rl_backward_byte
  rl_backward_char
@@ -104,7 +73,6 @@ rl_basic_word_break_characters
  rl_beginning_of_history
  rl_begin_undo_group
  rl_beg_of_line
-_rl_bell_preference
  rl_binding_keymap
  rl_bind_key
  rl_bind_key_if_unbound
@@ -114,15 +82,6 @@ rl_bind_keyseq
  rl_bind_keyseq_if_unbound
  rl_bind_keyseq_if_unbound_in_map
  rl_bind_keyseq_in_map
-_rl_bind_stty_chars
-rl_blink_matching_paren
-_rl_block_sigint
-_rl_block_sigwinch
-rl_byte_oriented
-_rl_callback_data
-_rl_callback_data_alloc
-_rl_callback_data_dispose
-_rl_callback_func
  rl_callback_handler_install
  rl_callback_handler_remove
  rl_callback_read_char
@@ -130,40 +89,23 @@ rl_call_last_kbd_macro
  rl_capitalize_word
  rl_catch_signals
  rl_catch_sigwinch
-_rl_caught_signal
  rl_change_environment
  rl_character_len
  rl_char_is_quoted_p
  rl_char_search
-_rl_char_search_internal
-_rl_char_value
  rl_cleanup_after_signal
-_rl_clean_up_for_exit
  rl_clear_history
  rl_clear_message
  rl_clear_pending_input
-_rl_clear_screen
  rl_clear_screen
  rl_clear_signals
-_rl_clear_to_eol
-_rl_colored_stats
-_rl_color_ext_list
-_rl_color_indicator
-_rl_comment_begin
-_rl_compare_chars
  rl_complete
  rl_complete_internal
  _rl_complete_mark_directories
  _rl_complete_mark_symlink_dirs
  rl_completer_quote_characters
  rl_completer_word_break_characters
-_rl_complete_show_all
-_rl_complete_show_unmodified
-rl_complete_with_tilde_expansion
  rl_completion_append_character
-_rl_completion_case_fold
-_rl_completion_case_map
-_rl_completion_columns
  rl_completion_display_matches_hook
  rl_completion_entry_function
  rl_completion_found_quote
@@ -178,17 +120,12 @@ rl_completion_suppress_append
  rl_completion_suppress_quote
  rl_completion_type
  rl_completion_word_break_hook
-_rl_control_keypad
-_rl_convert_meta_chars_to_ascii
  rl_copy_backward_word
  rl_copy_forward_word
  rl_copy_keymap
  rl_copy_region_to_kill
  rl_copy_text
-_rl_copy_undo_entry
-_rl_copy_undo_list
  rl_crlf
-_rl_current_display_line
  rl_delete
  rl_delete_horizontal_space
  rl_delete_or_show_completions
@@ -196,24 +133,14 @@ rl_delete_text
  rl_deprep_term_function
  rl_deprep_terminal
  rl_digit_argument
-_rl_digit_p
-_rl_digit_value
  rl_ding
  rl_directory_completion_hook
  rl_directory_rewrite_hook
-_rl_disable_meta_key
-_rl_disable_tty_signals
  rl_discard_argument
  rl_discard_keymap
-_rl_dispatch
-_rl_dispatch_callback
  rl_dispatching
-_rl_dispatching_keymap
-_rl_dispatch_subseq
-rl_display_fixed
  rl_display_match_list
  rl_display_prompt
-_rl_doing_an_undo
  rl_do_lowercase_version
  rl_done
  rl_do_undo
@@ -221,33 +148,23 @@ rl_downcase_word
  rl_dump_functions
  rl_dump_macros
  rl_dump_variables
-_rl_echo_control_chars
-_rl_echoctl
  _rl_echoing_p
  rl_echo_signal_char
  rl_editing_mode
  rl_emacs_editing_mode
-_rl_enable_keypad
-_rl_enable_meta
-_rl_enable_meta_key
-_rl_enable_paren_matching
  rl_end
  rl_end_kbd_macro
  rl_end_of_history
  rl_end_of_line
  rl_end_undo_group
-_rl_eof_char
-_rl_erase_at_end_of_line
  rl_erase_empty_line
  _rl_erase_entire_line
-_rl_errmsg
  rl_event_hook
  rl_exchange_point_and_mark
  rl_execute_next
  rl_executing_key
  rl_executing_keymap
  rl_executing_keyseq
-_rl_executing_keyseq_size
  rl_executing_macro
  rl_expand_prompt
  rl_explicit_arg
@@ -260,25 +177,15 @@ rl_filename_quoting_desired
  rl_filename_quoting_function
  rl_filename_rewrite_hook
  rl_filename_stat_hook
-_rl_find_completion_word
-_rl_find_next_mbchar
-_rl_find_prev_mbchar
-_rl_fix_last_undo_of_type
-_rl_fix_point
  rl_forced_update_display
  rl_forward
  rl_forward_byte
  rl_forward_char
-_rl_forward_char_internal
  rl_forward_search_history
  rl_forward_word
  rl_free
-_rl_free_history_entry
  rl_free_keymap
  rl_free_line_state
-_rl_free_match_list
-_rl_free_saved_history_line
-_rl_free_undo_list
  rl_free_undo_list
  rl_function_dumper
  rl_function_of_keyseq
@@ -286,19 +193,15 @@ rl_funmap_names
  rl_generic_bind
  rl_getc
  rl_getc_function
-_rl_get_char_len
  rl_get_keymap
  rl_get_keymap_by_name
  rl_get_keymap_name
  rl_get_keymap_name_from_edit_mode
  rl_get_next_history
  rl_get_previous_history
-_rl_get_screen_size
  rl_get_screen_size
  rl_get_termcap
  rl_gnu_readline_p
-_rl_history_preserve_point
-_rl_history_saved_point
  rl_history_search_backward
  rl_history_search_forward
  rl_history_substr_search_backward
@@ -307,238 +210,115 @@ _rl_horizontal_scroll_mode
  rl_ignore_completion_duplicates
  rl_ignore_some_completions_function
  rl_inhibit_completion
-_rl_init_eightbit
  rl_initialize
  rl_initialize_funmap
-_rl_init_line_state
-_rl_init_terminal_io
-_rl_input_available
  rl_input_available_hook
-_rl_input_queued
  rl_insert
-_rl_insert_char
  rl_insert_close
  rl_insert_comment
  rl_insert_completions
  rl_insert_mode
  rl_insert_text
-_rl_insert_typein
-_rl_in_stream
  rl_instream
-_rl_internal_char_cleanup
-_rl_interrupt_immediately
-_rl_intr_char
  rl_invoking_keyseqs
  rl_invoking_keyseqs_in_map
-_rl_iscxt
-_rl_isearch_callback
-_rl_isearch_dispatch
-_rl_isearch_terminators
-_rl_is_mbchar_matched
-_rl_keymap
-_rl_keyseq_chain_dispose
-_rl_keyseq_cxt_alloc
-_rl_keyseq_cxt_dispose
-_rl_keyseq_timeout
  rl_key_sequence_length
  rl_kill_full_line
-_rl_kill_kbd_macro
  rl_kill_line
  rl_kill_region
  rl_kill_text
  rl_kill_word
-_rl_kscxt
-_rl_last_command_was_kill
-_rl_last_c_pos
  rl_last_func
-_rl_last_v_pos
  rl_library_version
  rl_line_buffer
-rl_line_buffer_len
-rl_linefunc
  rl_list_funmap_names
-_rl_lowercase_p
  rl_macro_bind
  rl_macro_dumper
  rl_make_bare_keymap
  rl_make_keymap
-_rl_make_prompt_for_search
  rl_mark
-_rl_mark_modified_lines
-_rl_match_hidden_files
  rl_maybe_replace_line
  rl_maybe_save_line
  rl_maybe_unsave_line
  rl_menu_complete
-_rl_menu_complete_prefix_first
-rl_menu_completion_entry_function
  rl_message
-_rl_meta_flag
  rl_modifying
-_rl_move_cursor_relative
-_rl_move_vert
  rl_named_function
  rl_newline
-_rl_next_macro_key
  rl_noninc_forward_search
  rl_noninc_forward_search_again
  rl_noninc_reverse_search
  rl_noninc_reverse_search_again
-_rl_nscxt
-_rl_nsearch_callback
-_rl_null_function
  rl_num_chars_to_read
  rl_numeric_arg
  rl_old_menu_complete
  rl_on_new_line
  rl_on_new_line_with_prompt
-_rl_output_character_function
-_rl_output_meta_chars
-_rl_output_some_chars
-_rl_out_stream
  rl_outstream
-_rl_overwrite_char
  rl_overwrite_mode
-_rl_overwrite_rubout
-_rl_page_completions
  rl_parse_and_bind
-_rl_parse_colors
-_rl_parsing_conditionalized_out
  rl_pending_input
  rl_point
-_rl_pop_executing_macro
  rl_possible_completions
-_rl_possible_control_prefixes
-_rl_possible_meta_prefixes
  rl_prefer_env_winsize
  rl_pre_input_hook
-_rl_prep_non_filename_text
  rl_prep_term_function
  rl_prep_terminal
-_rl_prev_macro_key
-_rl_print_color_indicator
  _rl_print_completions_horizontally
  rl_print_last_kbd_macro
  rl_prompt
-_rl_pure_alphabetic
-_rl_pushed_input_available
-_rl_push_executing_macro
  rl_push_macro_input
-_rl_put_indicator
  _rl_qsort_string_compare
-_rl_quit_char
  rl_quoted_insert
  rl_read_init_file
  rl_read_key
  rl_readline_name
  rl_readline_state
  rl_readline_version
-_rl_read_mbchar
-_rl_read_mbstring
  rl_redisplay
-_rl_redisplay_after_sigwinch
  rl_redisplay_function
  rl_refresh_line
-_rl_release_sigint
-_rl_release_sigwinch
-rl_replace_from_history
  rl_replace_line
-_rl_replace_text
  rl_re_read_init_file
  rl_reset_after_signal
-_rl_reset_argument
-_rl_reset_completion_state
  rl_reset_line_state
-_rl_reset_prompt
  rl_reset_screen_size
  rl_reset_terminal
  rl_resize_terminal
  rl_restart_output
  rl_restore_prompt
  rl_restore_state
-_rl_restore_tty_signals
  rl_reverse_search_history
-_rl_revert_all_at_newline
-_rl_revert_all_lines
  rl_revert_line
  rl_rubout
-_rl_rubout_char
  rl_rubout_or_delete
-_rl_saved_line_for_history
  rl_save_prompt
  rl_save_state
-_rl_savestring
-_rl_screenchars
-_rl_screenheight
-_rl_screenwidth
-_rl_scxt_alloc
-_rl_scxt_dispose
-_rl_search_getchar
-_rl_set_cursor
-_rl_set_insert_mode
  rl_set_key
  rl_set_keyboard_input_timeout
  rl_set_keymap
  rl_set_keymap_from_edit_mode
  rl_set_mark
-_rl_set_mark_at_pos
-_rl_set_normal_color
  rl_set_paren_blink_timeout
  rl_set_prompt
-rl_set_retained_kills
-_rl_set_screen_size
  rl_set_screen_size
  rl_set_signals
-_rl_set_the_line
  rl_show_char
-_rl_show_mode_in_prompt
-_rl_sigcleanarg
-_rl_sigcleanup
  rl_signal_event_hook
-_rl_signal_handler
-_rl_sigwinch_resize_terminal
-_rl_skip_completed_text
  rl_skip_csi_sequence
  rl_sort_completion_matches
  rl_special_prefixes
  rl_start_kbd_macro
  rl_startup_hook
-_rl_start_using_history
  rl_stop_output
-_rl_strindex
-_rl_strip_prompt
  rl_stuff_char
-_rl_suppress_redisplay
-_rl_susp_char
  rl_tab_insert
-_rl_term_autowrap
-_rl_term_backspace
-_rl_term_clreol
-_rl_term_clrpag
-_rl_term_cr
-_rl_term_dc
-_rl_term_DC
-_rl_term_ei
-_rl_term_forward_char
-_rl_term_goto
-_rl_term_ic
-_rl_term_IC
-_rl_term_im
-_rl_terminal_can_insert
  rl_terminal_name
-_rl_term_ip
-_rl_term_pc
-_rl_term_up
  rl_tilde_expand
-_rl_to_lower
-_rl_top_level
-_rl_to_upper
  rl_translate_keyseq
  rl_transpose_chars
  rl_transpose_words
-_rl_ttymsg
  rl_tty_set_default_bindings
-rltty_set_default_bindings
  rl_tty_status
  rl_tty_unset_default_bindings
  rl_unbind_command_in_map
@@ -546,20 +326,14 @@ rl_unbind_function_in_map
  rl_unbind_key
  rl_unbind_key_in_map
  rl_undo_command
-_rl_undo_group_level
  rl_undo_list
-_rl_unget_char
  rl_universal_argument
  rl_unix_filename_rubout
  rl_unix_line_discard
  rl_unix_word_rubout
  rl_untranslate_keyseq
-_rl_untranslate_macro_value
  rl_upcase_word
-_rl_update_final
-_rl_uppercase_p
  rl_username_completion_function
-_rl_utf8locale
  rl_variable_bind
  rl_variable_dumper
  rl_variable_value
@@ -580,8 +354,6 @@ rl_vi_complete
  rl_vi_delete
  rl_vi_delete_to
  rl_vi_domove
-_rl_vi_domove_callback
-_rl_vi_done_inserting
  rl_vi_editing_mode
  rl_vi_end_word
  rl_vi_eof_maybe
@@ -592,14 +364,11 @@ rl_vi_first_print
  rl_vi_fword
  rl_vi_fWord
  rl_vi_goto_mark
-_rl_vi_initialize_line
  rl_vi_insert_beg
  rl_vi_insertion_mode
  rl_vi_insert_mode
-_rl_vi_last_command
  rl_vi_match
  rl_vi_movement_mode
-_rl_vimvcxt
  rl_vi_next_word
  rl_vi_overstrike
  rl_vi_overstrike_delete
@@ -607,34 +376,20 @@ rl_vi_prev_word
  rl_vi_put
  rl_vi_redo
  rl_vi_replace
-_rl_vi_reset_last
  rl_vi_rubout
-_rl_vis_botlin
  rl_vi_search
  rl_vi_search_again
-_rl_vi_set_last
  rl_vi_set_mark
-rl_visible_prompt_length
-rl_visible_stats
  rl_vi_start_inserting
  rl_vi_subst
-_rl_vi_textmod_command
  rl_vi_tilde_expand
  rl_vi_undo
  rl_vi_yank_arg
  rl_vi_yank_to
-_rl_walphabetic
-_rl_want_redisplay
-_rl_with_macro_input
  rl_yank
  rl_yank_last_arg
  rl_yank_nth_arg
  rl_yank_pop
-sh_get_env_value
-sh_get_home_dir
-sh_set_lines_and_columns
-sh_single_quote
-sh_unset_nodelay_mode
  stifle_history
  tilde_additional_prefixes
  tilde_additional_suffixes
@@ -643,12 +398,8 @@ tilde_expand_word
  tilde_expansion_failure_hook
  tilde_expansion_preexpansion_hook
  unstifle_history
-username_completion_function
  using_history
  vi_insertion_keymap
  vi_movement_keymap
  where_history
  write_history
-xfree
-xmalloc
-xrealloc




reply via email to

[Prev in Thread] Current Thread [Next in Thread]