Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

t/porting/globvar.t has failures on AIX #21623

Closed
FractalBoy opened this issue Nov 8, 2023 · 5 comments · Fixed by #21637
Closed

t/porting/globvar.t has failures on AIX #21623

FractalBoy opened this issue Nov 8, 2023 · 5 comments · Fixed by #21637
Assignees

Comments

@FractalBoy
Copy link
Contributor

Module:

Description
t/porting/globvar.t reports failures on AIX.

$ ./perl  -I. -It/lib t/porting/globvar.t
# Seen definition of PL_EXACTFish_bitmask
# Seen definition of PL_EXACT_REQ8_bitmask
# Seen definition of PL_No
# Seen definition of PL_WARN_ALL
# Seen definition of PL_WARN_NONE
# Seen definition of PL_Yes
# Seen definition of PL_Zero
# Seen definition of PL_bincompat_options
# Seen definition of PL_bitcount
# Seen definition of PL_block_type
# Seen definition of PL_c9_utf8_dfa_tab
# Seen definition of PL_charclass
# Seen definition of PL_check
# Seen definition of PL_check_mutex
# Seen definition of PL_core_reg_engine
# Seen definition of PL_csighandler1p
# Seen definition of PL_csighandler3p
# Seen definition of PL_csighandlerp
# Seen definition of PL_curinterp
# Seen definition of PL_deBruijn_bitpos_tab32
# Seen definition of PL_deBruijn_bitpos_tab64
# Seen definition of PL_do_undump
# Seen definition of PL_dollarzero_mutex
# Seen definition of PL_env_mutex
# Seen definition of PL_extended_cp_format
# Seen definition of PL_extended_utf8_dfa_tab
# Seen definition of PL_fold
# Seen definition of PL_fold_latin1
# Seen definition of PL_hash_seed_set
# Seen definition of PL_hash_seed_w
# Seen definition of PL_hash_state_w
# Seen definition of PL_hexdigit
# Seen definition of PL_hints_mutex
# Seen definition of PL_inf
# Seen definition of PL_infix_plugin
# Seen definition of PL_interp_size
# Seen definition of PL_interp_size_5_18_0
# Seen definition of PL_isa_DOES
# Seen definition of PL_keyword_plugin
# Seen definition of PL_keyword_plugin_mutex
# Seen definition of PL_latin1_lc
# Seen definition of PL_locale_mutex
# Seen definition of PL_magic_data
# Seen definition of PL_magic_vtable_names
# Seen definition of PL_magic_vtables
# Seen definition of PL_memory_wrap
# Seen definition of PL_mmap_page_size
# Seen definition of PL_mod_latin1_uc
# Seen definition of PL_my_ctx_mutex
# Seen definition of PL_my_cxt_index
# Seen definition of PL_my_environ
# Seen definition of PL_nan
# Seen definition of PL_no_aelem
# Seen definition of PL_no_dir_func
# Seen definition of PL_no_func
# Seen definition of PL_no_helem_sv
# Seen definition of PL_no_localize_ref
# Seen definition of PL_no_mem
# Seen definition of PL_no_modify
# Seen definition of PL_no_myglob
# Seen definition of PL_no_security
# Seen definition of PL_no_sock_func
# Seen definition of PL_no_symref
# Seen definition of PL_no_usym
# Seen definition of PL_no_wrongref
# Seen definition of PL_op_desc
# Seen definition of PL_op_mutex
# Seen definition of PL_op_name
# Seen definition of PL_op_private_bitdef_ix
# Seen definition of PL_op_private_bitdefs
# Seen definition of PL_op_private_bitfields
# Seen definition of PL_op_private_labels
# Seen definition of PL_op_private_valid
# Seen definition of PL_op_seq
# Seen definition of PL_op_sequence
# Seen definition of PL_opargs
# Seen definition of PL_origenviron
# Seen definition of PL_perlio_debug_fd
# Seen definition of PL_perlio_fd_refcnt
# Seen definition of PL_perlio_fd_refcnt_size
# Seen definition of PL_perlio_mutex
# Seen definition of PL_phase_names
# Seen definition of PL_ppaddr
# Seen definition of PL_reg_extflags_name
# Seen definition of PL_reg_intflags_name
# Seen definition of PL_regnode_info
# Seen definition of PL_regnode_name
# Seen definition of PL_revision
# Seen definition of PL_runops_dbg
# Seen definition of PL_runops_std
# Seen definition of PL_sh_path
# Seen definition of PL_sig_name
# Seen definition of PL_sig_num
# Seen definition of PL_sigfpe_saved
# Seen definition of PL_simple
# Seen definition of PL_simple_bitmask
# Seen definition of PL_strategy_accept
# Seen definition of PL_strategy_dup
# Seen definition of PL_strategy_dup2
# Seen definition of PL_strategy_mkstemp
# Seen definition of PL_strategy_open
# Seen definition of PL_strategy_open3
# Seen definition of PL_strategy_pipe
# Seen definition of PL_strategy_socket
# Seen definition of PL_strategy_socketpair
# Seen definition of PL_strict_utf8_dfa_tab
# Seen definition of PL_subversion
# Seen definition of PL_sv_placeholder
# Seen definition of PL_thr_key
# Seen definition of PL_user_def_props
# Seen definition of PL_user_def_props_aTHX
# Seen definition of PL_user_prop_mutex
# Seen definition of PL_utf8skip
# Seen definition of PL_uuemap
# Seen definition of PL_valid_types_IVX
# Seen definition of PL_valid_types_IV_set
# Seen definition of PL_valid_types_NVX
# Seen definition of PL_valid_types_NV_set
# Seen definition of PL_valid_types_PVX
# Seen definition of PL_valid_types_RV
# Seen definition of PL_varies
# Seen definition of PL_varies_bitmask
# Seen definition of PL_version
# Seen definition of PL_veto_cleanup
# Seen definition of PL_veto_switch_non_tTHX_context
# Seen definition of PL_warn_nl
# Seen definition of PL_warn_nosemi
# Seen definition of PL_warn_reserved
# Seen definition of PL_warn_uninit
# Seen definition of PL_watch_pvx
not ok 1 - 'PL_EXACTFish_bitmask' is defined, but we do not export it
# Failed test 1 - 'PL_EXACTFish_bitmask' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 2 - 'PL_EXACT_REQ8_bitmask' is defined, but we do not export it
# Failed test 2 - 'PL_EXACT_REQ8_bitmask' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 3 - 'PL_No' is defined, but we do not export it
# Failed test 3 - 'PL_No' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 4 - 'PL_WARN_ALL' is defined, but we do not export it
# Failed test 4 - 'PL_WARN_ALL' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 5 - 'PL_WARN_NONE' is defined, but we do not export it
# Failed test 5 - 'PL_WARN_NONE' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 6 - 'PL_Yes' is defined, but we do not export it
# Failed test 6 - 'PL_Yes' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 7 - 'PL_Zero' is defined, but we do not export it
# Failed test 7 - 'PL_Zero' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 8 - 'PL_bincompat_options' is defined, but we do not export it
# Failed test 8 - 'PL_bincompat_options' is defined, but we do not export it at t/porting/globvar.t line 84
ok 9 # skip We don't export 'PL_bitcount'
not ok 10 - 'PL_block_type' is defined, but we do not export it
# Failed test 10 - 'PL_block_type' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 11 - 'PL_c9_utf8_dfa_tab' is defined, but we do not export it
# Failed test 11 - 'PL_c9_utf8_dfa_tab' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 12 - 'PL_charclass' is defined, but we do not export it
# Failed test 12 - 'PL_charclass' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 13 - 'PL_check' is defined, but we do not export it
# Failed test 13 - 'PL_check' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 14 - 'PL_check_mutex' is defined, but we do not export it
# Failed test 14 - 'PL_check_mutex' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 15 - 'PL_core_reg_engine' is defined, but we do not export it
# Failed test 15 - 'PL_core_reg_engine' is defined, but we do not export it at t/porting/globvar.t line 84
ok 16 # skip We don't export 'PL_cshname'
not ok 17 - 'PL_csighandler1p' is defined, but we do not export it
# Failed test 17 - 'PL_csighandler1p' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 18 - 'PL_csighandler3p' is defined, but we do not export it
# Failed test 18 - 'PL_csighandler3p' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 19 - 'PL_csighandlerp' is defined, but we do not export it
# Failed test 19 - 'PL_csighandlerp' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 20 - 'PL_curinterp' is defined, but we do not export it
# Failed test 20 - 'PL_curinterp' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 21 - 'PL_deBruijn_bitpos_tab32' is defined, but we do not export it
# Failed test 21 - 'PL_deBruijn_bitpos_tab32' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 22 - 'PL_deBruijn_bitpos_tab64' is defined, but we do not export it
# Failed test 22 - 'PL_deBruijn_bitpos_tab64' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 23 - 'PL_do_undump' is defined, but we do not export it
# Failed test 23 - 'PL_do_undump' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 24 - 'PL_dollarzero_mutex' is defined, but we do not export it
# Failed test 24 - 'PL_dollarzero_mutex' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 25 - 'PL_env_mutex' is defined, but we do not export it
# Failed test 25 - 'PL_env_mutex' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 26 - 'PL_extended_cp_format' is defined, but we do not export it
# Failed test 26 - 'PL_extended_cp_format' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 27 - 'PL_extended_utf8_dfa_tab' is defined, but we do not export it
# Failed test 27 - 'PL_extended_utf8_dfa_tab' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 28 - 'PL_fold' is defined, but we do not export it
# Failed test 28 - 'PL_fold' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 29 - 'PL_fold_latin1' is defined, but we do not export it
# Failed test 29 - 'PL_fold_latin1' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 30 - 'PL_hash_seed_set' is defined, but we do not export it
# Failed test 30 - 'PL_hash_seed_set' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 31 - 'PL_hash_seed_w' is defined, but we do not export it
# Failed test 31 - 'PL_hash_seed_w' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 32 - 'PL_hash_state_w' is defined, but we do not export it
# Failed test 32 - 'PL_hash_state_w' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 33 - 'PL_hexdigit' is defined, but we do not export it
# Failed test 33 - 'PL_hexdigit' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 34 - 'PL_hints_mutex' is defined, but we do not export it
# Failed test 34 - 'PL_hints_mutex' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 35 - 'PL_inf' is defined, but we do not export it
# Failed test 35 - 'PL_inf' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 36 - 'PL_infix_plugin' is defined, but we do not export it
# Failed test 36 - 'PL_infix_plugin' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 37 - 'PL_interp_size' is defined, but we do not export it
# Failed test 37 - 'PL_interp_size' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 38 - 'PL_interp_size_5_18_0' is defined, but we do not export it
# Failed test 38 - 'PL_interp_size_5_18_0' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 39 - 'PL_isa_DOES' is defined, but we do not export it
# Failed test 39 - 'PL_isa_DOES' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 40 - 'PL_keyword_plugin' is defined, but we do not export it
# Failed test 40 - 'PL_keyword_plugin' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 41 - 'PL_keyword_plugin_mutex' is defined, but we do not export it
# Failed test 41 - 'PL_keyword_plugin_mutex' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 42 - 'PL_latin1_lc' is defined, but we do not export it
# Failed test 42 - 'PL_latin1_lc' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 43 - 'PL_locale_mutex' is defined, but we do not export it
# Failed test 43 - 'PL_locale_mutex' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 44 - 'PL_magic_data' is defined, but we do not export it
# Failed test 44 - 'PL_magic_data' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 45 - 'PL_magic_vtable_names' is defined, but we do not export it
# Failed test 45 - 'PL_magic_vtable_names' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 46 - 'PL_magic_vtables' is defined, but we do not export it
# Failed test 46 - 'PL_magic_vtables' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 47 - 'PL_memory_wrap' is defined, but we do not export it
# Failed test 47 - 'PL_memory_wrap' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 48 - 'PL_mmap_page_size' is defined, but we do not export it
# Failed test 48 - 'PL_mmap_page_size' is defined, but we do not export it at t/porting/globvar.t line 84
ok 49 # skip We don't export 'PL_mod_latin1_uc'
not ok 50 - 'PL_my_ctx_mutex' is defined, but we do not export it
# Failed test 50 - 'PL_my_ctx_mutex' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 51 - 'PL_my_cxt_index' is defined, but we do not export it
# Failed test 51 - 'PL_my_cxt_index' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 52 - 'PL_my_environ' is defined, but we do not export it
# Failed test 52 - 'PL_my_environ' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 53 - 'PL_nan' is defined, but we do not export it
# Failed test 53 - 'PL_nan' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 54 - 'PL_no_aelem' is defined, but we do not export it
# Failed test 54 - 'PL_no_aelem' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 55 - 'PL_no_dir_func' is defined, but we do not export it
# Failed test 55 - 'PL_no_dir_func' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 56 - 'PL_no_func' is defined, but we do not export it
# Failed test 56 - 'PL_no_func' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 57 - 'PL_no_helem_sv' is defined, but we do not export it
# Failed test 57 - 'PL_no_helem_sv' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 58 - 'PL_no_localize_ref' is defined, but we do not export it
# Failed test 58 - 'PL_no_localize_ref' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 59 - 'PL_no_mem' is defined, but we do not export it
# Failed test 59 - 'PL_no_mem' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 60 - 'PL_no_modify' is defined, but we do not export it
# Failed test 60 - 'PL_no_modify' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 61 - 'PL_no_myglob' is defined, but we do not export it
# Failed test 61 - 'PL_no_myglob' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 62 - 'PL_no_security' is defined, but we do not export it
# Failed test 62 - 'PL_no_security' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 63 - 'PL_no_sock_func' is defined, but we do not export it
# Failed test 63 - 'PL_no_sock_func' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 64 - 'PL_no_symref' is defined, but we do not export it
# Failed test 64 - 'PL_no_symref' is defined, but we do not export it at t/porting/globvar.t line 84
ok 65 # skip We don't export 'PL_no_symref_sv'
not ok 66 - 'PL_no_usym' is defined, but we do not export it
# Failed test 66 - 'PL_no_usym' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 67 - 'PL_no_wrongref' is defined, but we do not export it
# Failed test 67 - 'PL_no_wrongref' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 68 - 'PL_op_desc' is defined, but we do not export it
# Failed test 68 - 'PL_op_desc' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 69 - 'PL_op_mutex' is defined, but we do not export it
# Failed test 69 - 'PL_op_mutex' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 70 - 'PL_op_name' is defined, but we do not export it
# Failed test 70 - 'PL_op_name' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 71 - 'PL_op_private_bitdef_ix' is defined, but we do not export it
# Failed test 71 - 'PL_op_private_bitdef_ix' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 72 - 'PL_op_private_bitdefs' is defined, but we do not export it
# Failed test 72 - 'PL_op_private_bitdefs' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 73 - 'PL_op_private_bitfields' is defined, but we do not export it
# Failed test 73 - 'PL_op_private_bitfields' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 74 - 'PL_op_private_labels' is defined, but we do not export it
# Failed test 74 - 'PL_op_private_labels' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 75 - 'PL_op_private_valid' is defined, but we do not export it
# Failed test 75 - 'PL_op_private_valid' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 76 - 'PL_op_seq' is defined, but we do not export it
# Failed test 76 - 'PL_op_seq' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 77 - 'PL_op_sequence' is defined, but we do not export it
# Failed test 77 - 'PL_op_sequence' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 78 - 'PL_opargs' is defined, but we do not export it
# Failed test 78 - 'PL_opargs' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 79 - 'PL_origenviron' is defined, but we do not export it
# Failed test 79 - 'PL_origenviron' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 80 - 'PL_perlio_debug_fd' is defined, but we do not export it
# Failed test 80 - 'PL_perlio_debug_fd' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 81 - 'PL_perlio_fd_refcnt' is defined, but we do not export it
# Failed test 81 - 'PL_perlio_fd_refcnt' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 82 - 'PL_perlio_fd_refcnt_size' is defined, but we do not export it
# Failed test 82 - 'PL_perlio_fd_refcnt_size' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 83 - 'PL_perlio_mutex' is defined, but we do not export it
# Failed test 83 - 'PL_perlio_mutex' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 84 - 'PL_phase_names' is defined, but we do not export it
# Failed test 84 - 'PL_phase_names' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 85 - 'PL_ppaddr' is defined, but we do not export it
# Failed test 85 - 'PL_ppaddr' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 86 - 'PL_reg_extflags_name' is defined, but we do not export it
# Failed test 86 - 'PL_reg_extflags_name' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 87 - 'PL_reg_intflags_name' is defined, but we do not export it
# Failed test 87 - 'PL_reg_intflags_name' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 88 - 'PL_regnode_info' is defined, but we do not export it
# Failed test 88 - 'PL_regnode_info' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 89 - 'PL_regnode_name' is defined, but we do not export it
# Failed test 89 - 'PL_regnode_name' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 90 - 'PL_revision' is defined, but we do not export it
# Failed test 90 - 'PL_revision' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 91 - 'PL_runops_dbg' is defined, but we do not export it
# Failed test 91 - 'PL_runops_dbg' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 92 - 'PL_runops_std' is defined, but we do not export it
# Failed test 92 - 'PL_runops_std' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 93 - 'PL_sh_path' is defined, but we do not export it
# Failed test 93 - 'PL_sh_path' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 94 - 'PL_sig_name' is defined, but we do not export it
# Failed test 94 - 'PL_sig_name' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 95 - 'PL_sig_num' is defined, but we do not export it
# Failed test 95 - 'PL_sig_num' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 96 - 'PL_sigfpe_saved' is defined, but we do not export it
# Failed test 96 - 'PL_sigfpe_saved' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 97 - 'PL_simple' is defined, but we do not export it
# Failed test 97 - 'PL_simple' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 98 - 'PL_simple_bitmask' is defined, but we do not export it
# Failed test 98 - 'PL_simple_bitmask' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 99 - 'PL_strategy_accept' is defined, but we do not export it
# Failed test 99 - 'PL_strategy_accept' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 100 - 'PL_strategy_dup' is defined, but we do not export it
# Failed test 100 - 'PL_strategy_dup' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 101 - 'PL_strategy_dup2' is defined, but we do not export it
# Failed test 101 - 'PL_strategy_dup2' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 102 - 'PL_strategy_mkstemp' is defined, but we do not export it
# Failed test 102 - 'PL_strategy_mkstemp' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 103 - 'PL_strategy_open' is defined, but we do not export it
# Failed test 103 - 'PL_strategy_open' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 104 - 'PL_strategy_open3' is defined, but we do not export it
# Failed test 104 - 'PL_strategy_open3' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 105 - 'PL_strategy_pipe' is defined, but we do not export it
# Failed test 105 - 'PL_strategy_pipe' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 106 - 'PL_strategy_socket' is defined, but we do not export it
# Failed test 106 - 'PL_strategy_socket' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 107 - 'PL_strategy_socketpair' is defined, but we do not export it
# Failed test 107 - 'PL_strategy_socketpair' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 108 - 'PL_strict_utf8_dfa_tab' is defined, but we do not export it
# Failed test 108 - 'PL_strict_utf8_dfa_tab' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 109 - 'PL_subversion' is defined, but we do not export it
# Failed test 109 - 'PL_subversion' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 110 - 'PL_sv_placeholder' is defined, but we do not export it
# Failed test 110 - 'PL_sv_placeholder' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 111 - 'PL_thr_key' is defined, but we do not export it
# Failed test 111 - 'PL_thr_key' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 112 - 'PL_user_def_props' is defined, but we do not export it
# Failed test 112 - 'PL_user_def_props' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 113 - 'PL_user_def_props_aTHX' is defined, but we do not export it
# Failed test 113 - 'PL_user_def_props_aTHX' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 114 - 'PL_user_prop_mutex' is defined, but we do not export it
# Failed test 114 - 'PL_user_prop_mutex' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 115 - 'PL_utf8skip' is defined, but we do not export it
# Failed test 115 - 'PL_utf8skip' is defined, but we do not export it at t/porting/globvar.t line 84
ok 116 # skip We don't export 'PL_uudmap'
not ok 117 - 'PL_uuemap' is defined, but we do not export it
# Failed test 117 - 'PL_uuemap' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 118 - 'PL_valid_types_IVX' is defined, but we do not export it
# Failed test 118 - 'PL_valid_types_IVX' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 119 - 'PL_valid_types_IV_set' is defined, but we do not export it
# Failed test 119 - 'PL_valid_types_IV_set' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 120 - 'PL_valid_types_NVX' is defined, but we do not export it
# Failed test 120 - 'PL_valid_types_NVX' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 121 - 'PL_valid_types_NV_set' is defined, but we do not export it
# Failed test 121 - 'PL_valid_types_NV_set' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 122 - 'PL_valid_types_PVX' is defined, but we do not export it
# Failed test 122 - 'PL_valid_types_PVX' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 123 - 'PL_valid_types_RV' is defined, but we do not export it
# Failed test 123 - 'PL_valid_types_RV' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 124 - 'PL_varies' is defined, but we do not export it
# Failed test 124 - 'PL_varies' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 125 - 'PL_varies_bitmask' is defined, but we do not export it
# Failed test 125 - 'PL_varies_bitmask' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 126 - 'PL_version' is defined, but we do not export it
# Failed test 126 - 'PL_version' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 127 - 'PL_veto_cleanup' is defined, but we do not export it
# Failed test 127 - 'PL_veto_cleanup' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 128 - 'PL_veto_switch_non_tTHX_context' is defined, but we do not export it
# Failed test 128 - 'PL_veto_switch_non_tTHX_context' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 129 - 'PL_warn_nl' is defined, but we do not export it
# Failed test 129 - 'PL_warn_nl' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 130 - 'PL_warn_nosemi' is defined, but we do not export it
# Failed test 130 - 'PL_warn_nosemi' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 131 - 'PL_warn_reserved' is defined, but we do not export it
# Failed test 131 - 'PL_warn_reserved' is defined, but we do not export it at t/porting/globvar.t line 84
not ok 132 - 'PL_warn_uninit' is defined, but we do not export it
# Failed test 132 - 'PL_warn_uninit' is defined, but we do not export it at t/porting/globvar.t line 84
ok 133 # skip We don't export 'PL_warn_uninit_sv'
not ok 134 - 'PL_watch_pvx' is defined, but we do not export it
# Failed test 134 - 'PL_watch_pvx' is defined, but we do not export it at t/porting/globvar.t line 84
1..134

This appears to be caused by the fact that nm reports PL_* global vars as both local (d) and global (D) symbols.

For example:

$ nm globals.o | grep PL_EXACTFish_bitmask
00000000000011a8 d PL_EXACTFish_bitmask
00000000000090b0 D PL_EXACTFish_bitmask

If I pass -g, only the global symbol is displayed by nm:

$ nm -g globals.o | grep PL_EXACTFish_bitmask
00000000000090b0 D PL_EXACTFish_bitmask

This is in contrast to how GNU nm displays symbols. Each only shows once without any additional options needed:

$ nm globals.o | grep PL_EXACTFish_bitmask
0000000000000004 R PL_EXACTFish_bitmask

I'm not sure if this is the flag you want to be using or not, but given that the test is for global variables, I figure it makes sense to exclude local variables.

Steps to Reproduce

  • Build Perl on AIX
  • Run t/porting/globvar.t tests

Expected behavior
Tests complete with no errors

Perl configuration

Summary of my perl5 (revision 5 version 38 subversion 0) configuration:

  Platform:
    osname=aix
    osvers=7.2.0.0
    archname=aix-thread-multi-64all
    uname='aix vx-exc71 2 7 00fb201a4c00 powerpc aix '
    config_args='-Accflags=-DNO_POSIX_2008_LOCALE -Dusesitecustomize -Dusethreads -Dprefix=/usr/local/epic/EpicFebruary2024 -des -Dbin=/usr/local/epic/EpicFebruary2024/bin -Dprivlib=/usr/local/epic/EpicFebruary2024/lib/perl/no_arch -Darchlib=/usr/local/epic/EpicFebruary2024/lib/perl/arch -Dsitelib=/usr/local/epic/EpicFebruary2024/lib/perl/no_arch -Dsitearch=/usr/local/epic/EpicFebruary2024/lib/perl/arch -Dotherlibdirs=/usr/local/epic/EpicFebruary2024/lib/perl/dev/no_arch:/usr/local/epic/EpicFebruary2024/lib/perl/dev/arch -Dusemorebits -Doptimize=-g -Alibpth=/lib /usr/lib /usr/ccs/lib /usr/lib64 -Alibs=-lc128 -lpthread -lbind -lnsl -ldbm -ldl -lld -lm -lcrypt -lpthreads -lc'
    hint=recommended
    useposix=true
    d_sigaction=define
    useithreads=define
    usemultiplicity=define
    use64bitint=define
    use64bitall=define
    uselongdouble=define
    usemymalloc=n
    default_inc_excludes_dot=define
  Compiler:
    cc='cc -q64'
    ccflags ='-D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -qmaxmem=-1 -qnoansialias -qlanglvl=extc99 -DUSE_NATIVE_DLOPEN -DNO_POSIX_2008_LOCALE -DNEED_PTHREAD_INIT -q64 -DUSE_64_BIT_ALL -q64'
    optimize='-g'
    cppflags='-D_ALL_SOURCE -D_ANSI_C_SOURCE -D_POSIX_SOURCE -DUSE_NATIVE_DLOPEN -DNO_POSIX_2008_LOCALE -DNEED_PTHREAD_INIT'
    ccversion='11.1.0.24'
    gccversion=''
    gccosandvers=''
    intsize=4
    longsize=8
    ptrsize=8
    doublesize=8
    byteorder=87654321
    doublekind=4
    d_longlong=define
    longlongsize=8
    d_longdbl=define
    longdblsize=8
    longdblkind=0
    ivtype='long'
    ivsize=8
    nvtype='long double'
    nvsize=8
    Off_t='off_t'
    lseeksize=8
    alignbytes=8
    prototype=define
  Linker and Libraries:
    ld='ld'
    ldflags ='-brtl -bdynamic -b64'
    libpth=/lib /usr/lib /usr/ccs/lib /usr/lib64
    libs= -lc128 -lpthread -lbind -lnsl -ldbm -ldl -lld -lm -lcrypt -lpthreads -lc
    perllibs=-lc128 -lpthread -lbind -lnsl -ldl -lld -lm -lcrypt -lpthreads -lc
    libc=
    so=a
    useshrplib=false
    libperl=libperl.a
    gnulibc_version=''
  Dynamic Linking:
    dlsrc=dl_aix.xs
    dlext=so
    d_dlsymun=undef
    ccdlflags='  -bE:/usr/local/epic/EpicFebruary2024/lib/perl/arch/CORE/perl.exp'
    cccdlflags=' '
    lddlflags='-b64 -bhalt:4 -G -bI:$(PERL_INC)/perl.exp -bE:$(BASEEXT).exp -bnoentry -lpthreads -lc -lm'


Characteristics of this binary (from libperl):
  Compile-time options:
    HAS_LONG_DOUBLE
    HAS_STRTOLD
    HAS_TIMES
    MULTIPLICITY
    PERLIO_LAYERS
    PERL_COPY_ON_WRITE
    PERL_DONT_CREATE_GVSV
    PERL_HASH_FUNC_SIPHASH13
    PERL_HASH_USE_SBOX32
    PERL_MALLOC_WRAP
    PERL_OP_PARENT
    PERL_PRESERVE_IVUV
    PERL_USE_SAFE_PUTENV
    USE_64_BIT_ALL
    USE_64_BIT_INT
    USE_ITHREADS
    USE_LARGE_FILES
    USE_LOCALE
    USE_LOCALE_COLLATE
    USE_LOCALE_CTYPE
    USE_LOCALE_NUMERIC
    USE_LOCALE_TIME
    USE_PERLIO
    USE_PERL_ATOF
    USE_REENTRANT_API
    USE_SITECUSTOMIZE
  Built under aix
  Compiled at Oct 11 2023 16:36:57
  @INC:
    /usr/local/epic/EpicFebruary2024/lib/perl/arch
    /usr/local/epic/EpicFebruary2024/lib/perl/no_arch
    /usr/local/epic/EpicFebruary2024/lib/perl/arch
    /usr/local/epic/EpicFebruary2024/lib/perl/no_arch
    /usr/local/epic/EpicFebruary2024/lib/perl/dev/no_arch
    /usr/local/epic/EpicFebruary2024/lib/perl/dev/arch

@demerphq
Copy link
Collaborator

demerphq commented Nov 8, 2023

As you noticed, this test is super sensitive to the behavior of nm. It would probably be better if you wrote a patch to make it work on AIX, and then we can try to integrate it without breaking anything else. nm is annoyingly non-portable.

@FractalBoy
Copy link
Contributor Author

Could we do something different here? The issue is that we're deleting from the hash, so when we check again, it's gone.

if (delete $exported{$1}) {

It seems like some smarter accounting could allow us to avoid having to deal with the difference in formatting.

@tonycoz
Copy link
Contributor

tonycoz commented Nov 9, 2023

I wondered why weren't getting failures for this on AIX 5, but it turns out the nm output is different enough that it simply bails:

bash-4.4$ ./perl harness porting/globvar.t 
porting/globvar.t .. skipped: Could not spot definition of PL_Yes in output of `nm globals.o 2>&1`
Files=1, Tests=0,  0 wallclock secs ( 0.02 usr  0.00 sys +  0.03 cusr  0.00 csys =  0.05 CPU)
Result: NOTESTS

nm on AIX 5 uses the same flags, but a different layout:

bash-4.4$ nm globals.o | grep EXACTFish
PL_EXACTFish_bitmask D       24340           4
PL_EXACTFish_bitmask d        3452           4
bash-4.4$ uname -a
AIX i3 3 5 0004898AD300

As to fixing the issue, it might be better to parse the nm output to collect any defined symbols and compare that to the exports afterwards.

It also might be better to use the POSIX -P option for nm to get a consistent layout.

@FractalBoy
Copy link
Contributor Author

Yeah, I saw the same thing on the system I was on but it turned out that it was using a different nm from /opt/freeware/bin. I don't manage this system so I'm not exactly sure what the source of that is, and it's obviously not GNU.

@FractalBoy
Copy link
Contributor Author

Yeah, I saw the same thing on the system I was on but it turned out that it was using a different nm from /opt/freeware/bin. I don't manage this system so I'm not exactly sure what the source of that is, and it's obviously not GNU.

Scratch that, I think it is GNU, but the binary format is just different (ELF vs XCOFF)

tonycoz added a commit to tonycoz/perl5 that referenced this issue Nov 12, 2023
POSIX specifies well defined output for nm -P

This will hopefully run this test on more platforms, including old AIX,
for which nm produces a different output from what the test expected.

Part of Perl#21623
tonycoz added a commit to tonycoz/perl5 that referenced this issue Nov 12, 2023
nm on AIX can list both local and global definitions for the same
variable, which meant the parsing would delete the first instance
from %exported, but then add the second to %unexported, failing the
test.

This didn't fail on AIX 5 because the default nm output didn't
match what the code expected when checking for PL_Yes, and so
the entire test script skipped.

Fixes Perl#21623
@tonycoz tonycoz self-assigned this Nov 13, 2023
tonycoz added a commit that referenced this issue Nov 16, 2023
POSIX specifies well defined output for nm -P

This will hopefully run this test on more platforms, including old AIX,
for which nm produces a different output from what the test expected.

Part of #21623
tonycoz added a commit that referenced this issue Nov 16, 2023
nm on AIX can list both local and global definitions for the same
variable, which meant the parsing would delete the first instance
from %exported, but then add the second to %unexported, failing the
test.

This didn't fail on AIX 5 because the default nm output didn't
match what the code expected when checking for PL_Yes, and so
the entire test script skipped.

Fixes #21623
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants