- Apr 14, 1998
-
-
Ralf S. Engelschall authored
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80900 13f79535-47bb-0310-9956-ffa450edef68
-
Ralf S. Engelschall authored
the new README.DSO where useful. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80899 13f79535-47bb-0310-9956-ffa450edef68
-
Ralf S. Engelschall authored
upgrading_to_1.3.html. Thanks to Dean for hint. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80898 13f79535-47bb-0310-9956-ffa450edef68
-
Ralf S. Engelschall authored
in the top-level CHANGES file. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80897 13f79535-47bb-0310-9956-ffa450edef68
-
Jim Jagielski authored
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80896 13f79535-47bb-0310-9956-ffa450edef68
-
Jim Jagielski authored
being 1.3.0... no one voted for it and now with the Great Renaming, a beta test is really required git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80895 13f79535-47bb-0310-9956-ffa450edef68
-
brian authored
Make prominent the renaming change for third party module authors. Change name of two API symbols in document to match renamed entities. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80894 13f79535-47bb-0310-9956-ffa450edef68
-
- Apr 13, 1998
-
-
Jim Jagielski authored
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80893 13f79535-47bb-0310-9956-ffa450edef68
-
Ralf S. Engelschall authored
make sure they find the examples in README.configure, too. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80892 13f79535-47bb-0310-9956-ffa450edef68
-
Ralf S. Engelschall authored
Thanks to Dean for hint. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80891 13f79535-47bb-0310-9956-ffa450edef68
-
Ralf S. Engelschall authored
which was lost in the big renaming procedure: ap_canonical_filename ap_os_canonical_filename ap_is_path_absolute ap_os_is_path_absolute ap_escape_path ap_os_escape_path ap_dso_handle_t ap_os_dso_handle_t ap_dso_error --> ap_os_dso_error ap_dso_sym ap_os_dso_sym ap_dso_unload ap_os_dso_unload ap_dso_load ap_os_dso_load git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80890 13f79535-47bb-0310-9956-ffa450edef68
-
Ralf S. Engelschall authored
relevant aspects of dynamic shared object (DSO) support in Apache 1.3. My hope is that this information makes the DSO stuff more clear to those not very familiar with it. And I hope my written down information is correct... ;-) git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80889 13f79535-47bb-0310-9956-ffa450edef68
-
Ben Laurie authored
PR: Obtained from: Submitted by: Reviewed by: git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80888 13f79535-47bb-0310-9956-ffa450edef68
-
Ralf S. Engelschall authored
- renamed remaining os_ stuff in os/unix/ and os/bs2000/ to ap_ variants - merged the ap_dso_xxxx non-HPUX-specific #defines and the HPUX-specific functions - moved the FreeBSD-underscore hack from mod_so (where it was badly placed because it is a low-level stuff) to the dlsym() call in os/unix/os.c (where is is placed better because _there_ is the os-specific stuff) - some minor cleanups to os.h - additions to compat.h git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80886 13f79535-47bb-0310-9956-ffa450edef68
-
- Apr 12, 1998
-
-
Ben Laurie authored
PR: Obtained from: Submitted by: Reviewed by: git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80885 13f79535-47bb-0310-9956-ffa450edef68
-
Ralf S. Engelschall authored
today figured out that their proprietary shl_xxx system calls are very close to the dlopen-style interface. And because our os/unix/ stuff already provides an abstraction layer we now can provide DSO support for HP/UX by emulating the dlopen-style interface while not changing anything inside mod_so ;-) git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80884 13f79535-47bb-0310-9956-ffa450edef68
-
Ralf S. Engelschall authored
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80883 13f79535-47bb-0310-9956-ffa450edef68
-
Ralf S. Engelschall authored
by using tar-based command instead of "cp -R" commands. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80882 13f79535-47bb-0310-9956-ffa450edef68
-
Marc Slemko authored
it wasn't permitted. This avoids dereferencing a null pointer. PR: 2037 Obtained from: Submitted by: Reviewed by: git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80881 13f79535-47bb-0310-9956-ffa450edef68
-
- Apr 11, 1998
-
-
Jim Jagielski authored
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80880 13f79535-47bb-0310-9956-ffa450edef68
-
dgaudet authored
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80879 13f79535-47bb-0310-9956-ffa450edef68
-
dgaudet authored
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80878 13f79535-47bb-0310-9956-ffa450edef68
-
Ralf S. Engelschall authored
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80877 13f79535-47bb-0310-9956-ffa450edef68
-
Ralf S. Engelschall authored
(hopefully ;-), let us concentrate on the proposed 1.3b6 release next Friday. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80876 13f79535-47bb-0310-9956-ffa450edef68
-
Jim Jagielski authored
PR: Obtained from: Submitted by: Jim Jagielski Reviewed by: Hmmm... well, it looks like some people would like the capability of having PrintPath look not only in PATH for an executable (makes sense) so I've allowed PrintPath to look somewhere else. With this, TestCompile becomes a bit simpler, and faster when TestCompile fails since it now longer needs to muck around with the whole PATH. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80875 13f79535-47bb-0310-9956-ffa450edef68
-
Ralf S. Engelschall authored
slight changes to again make UnixWare happy. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80874 13f79535-47bb-0310-9956-ffa450edef68
-
Jim Jagielski authored
PR: Obtained from: Submitted by: Jim Jagielski Reviewed by: Have TestCompile use PrintPath to get around those platforms that still create executables with link errors. In those cases, the binary exists but isn't executable, so testing -f isn't good enough. However, -x isn't portable :/ PrintPath handles this, so we use that. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80873 13f79535-47bb-0310-9956-ffa450edef68
-
Ralf S. Engelschall authored
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80872 13f79535-47bb-0310-9956-ffa450edef68
-
Ralf S. Engelschall authored
containing the defines for the old symbols. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80870 13f79535-47bb-0310-9956-ffa450edef68
-
Ralf S. Engelschall authored
The used renaming configuration: =================================================================== bind_address ap_bind_address coredump_dir ap_coredump_dir daemons_limit ap_daemons_limit daemons_max_free ap_daemons_max_free daemons_min_free ap_daemons_min_free daemons_to_start ap_daemons_to_start excess_requests_per_child ap_excess_requests_per_child group_id ap_group_id listenbacklog ap_listenbacklog listeners ap_listeners lock_fname ap_lock_fname max_requests_per_child ap_max_requests_per_child pid_fname ap_pid_fname restart_time ap_restart_time scoreboard_fname ap_scoreboard_fname server_argv0 ap_server_argv0 server_confname ap_server_confname server_post_read_config ap_server_post_read_config server_pre_read_config ap_server_pre_read_config server_root ap_server_root standalone ap_standalone threads_per_child ap_threads_per_child user_id ap_user_id user_name ap_user_name suexec_enabled ap_suexec_enabled day_snames ap_day_snames dummy_mutex ap_dummy_mutex month_snames ap_month_snames rfc1413_timeout ap_rfc1413_timeout scoreboard_image ap_scoreboard_image MD5Final ap_MD5Final MD5Init ap_MD5Init MD5Update ap_MD5Update add_cgi_vars ap_add_cgi_vars add_common_vars ap_add_common_vars add_module ap_add_module add_named_module ap_add_named_module add_per_dir_conf ap_add_per_dir_conf add_per_url_conf ap_add_per_url_conf allow_options ap_allow_options allow_overrides ap_allow_overrides append_arrays ap_append_arrays array_cat ap_array_cat auth_name ap_auth_name auth_type ap_auth_type basic_http_header ap_basic_http_header bclose ap_bclose bcreate ap_bcreate bfilbuf ap_bfilbuf bfileno ap_bfileno bflsbuf ap_bflsbuf bflush ap_bflush bgetopt ap_bgetopt bgets ap_bgets bhalfduplex ap_bhalfduplex block_alarms ap_block_alarms blookc ap_blookc bnonblock ap_bnonblock bonerror ap_bonerror bpushfd ap_bpushfd bputs ap_bputs bprintf ap_bprintf bread ap_bread bsetflag ap_bsetflag bsetopt ap_bsetopt bskiplf ap_bskiplf bvputs ap_bvputs bwrite ap_bwrite bytes_in_free_blocks ap_bytes_in_free_blocks bytes_in_pool ap_bytes_in_pool call_exec ap_call_exec can_exec ap_can_exec cfg_closefile ap_cfg_closefile cfg_getc ap_cfg_getc cfg_getline ap_cfg_getline chdir_file ap_chdir_file check_access ap_check_access check_alarm ap_check_alarm check_auth ap_check_auth check_cmd_context ap_check_cmd_context check_user_id ap_check_user_id checkmask ap_checkmask child_exit_modules ap_child_exit_modules child_init_modules ap_child_init_modules child_terminate ap_child_terminate cleanup_for_exec ap_cleanup_for_exec clear_module_list ap_clear_module_list clear_pool ap_clear_pool clear_table ap_clear_table close_piped_log ap_close_piped_log construct_server ap_construct_server construct_url ap_construct_url copy_array ap_copy_array copy_array_hdr ap_copy_array_hdr copy_table ap_copy_table core_reorder_directories ap_core_reorder_directories count_dirs ap_count_dirs create_environment ap_create_environment create_per_dir_config ap_create_per_dir_config create_request_config ap_create_request_config default_port_for_request ap_default_port_for_request default_port_for_scheme ap_default_port_for_scheme default_type ap_default_type destroy_pool ap_destroy_pool destroy_sub_req ap_destroy_sub_req die ap_die discard_request_body ap_discard_request_body document_root ap_document_root each_byterange ap_each_byterange error_log2stderr ap_error_log2stderr escape_html ap_escape_html escape_path_segment ap_escape_path_segment escape_shell_cmd ap_escape_shell_cmd exists_scoreboard_image ap_exists_scoreboard_image finalize_request_protocol ap_finalize_request_protocol finalize_sub_req_protocol ap_finalize_sub_req_protocol find_command ap_find_command find_command_in_modules ap_find_command_in_modules find_last_token ap_find_last_token find_linked_module ap_find_linked_module find_module_name ap_find_module_name find_path_info ap_find_path_info find_pool ap_find_pool find_token ap_find_token find_types ap_find_types fini_vhost_config ap_fini_vhost_config fnmatch ap_fnmatch force_library_loading ap_force_library_loading get_basic_auth_pw ap_get_basic_auth_pw get_client_block ap_get_client_block get_gmtoff ap_get_gmtoff get_local_host ap_get_local_host get_module_config ap_get_module_config get_remote_host ap_get_remote_host get_remote_logname ap_get_remote_logname get_server_name ap_get_server_name get_server_port ap_get_server_port get_time ap_get_time get_token ap_get_token get_virthost_addr ap_get_virthost_addr getparents ap_getparents getword ap_getword getword_conf ap_getword_conf getword_conf_nc ap_getword_conf_nc getword_nc ap_getword_nc getword_nulls ap_getword_nulls getword_nulls_nc ap_getword_nulls_nc getword_white ap_getword_white getword_white_nc ap_getword_white_nc gm_timestr_822 ap_gm_timestr_822 gname2id ap_gname2id handle_command ap_handle_command hard_timeout ap_hard_timeout header_parse ap_header_parse ht_time ap_ht_time ind ap_ind index_of_response ap_index_of_response init_alloc ap_init_alloc init_modules ap_init_modules init_vhost_config ap_init_vhost_config init_virtual_host ap_init_virtual_host internal_redirect ap_internal_redirect internal_redirect_handler ap_internal_redirect_handler invoke_handler ap_invoke_handler is_directory ap_is_directory is_fnmatch ap_is_fnmatch is_initial_req ap_is_initial_req is_matchexp ap_is_matchexp is_url ap_is_url keepalive_timeout ap_keepalive_timeout kill_cleanup ap_kill_cleanup kill_cleanups_for_fd ap_kill_cleanups_for_fd kill_cleanups_for_socket ap_kill_cleanups_for_socket kill_timeout ap_kill_timeout limit_section ap_limit_section log_assert ap_log_assert log_pid ap_log_pid log_printf ap_log_printf log_reason ap_log_reason log_transaction ap_log_transaction log_unixerr ap_log_unixerr make_array ap_make_array make_dirstr ap_make_dirstr make_dirstr_parent ap_make_dirstr_parent make_dirstr_prefix ap_make_dirstr_prefix make_full_path ap_make_full_path make_sub_pool ap_make_sub_pool make_table ap_make_table matches_request_vhost ap_matches_request_vhost meets_conditions ap_meets_conditions merge_per_dir_configs ap_merge_per_dir_configs no2slash ap_no2slash note_auth_failure ap_note_auth_failure note_basic_auth_failure ap_note_basic_auth_failure note_cleanups_for_fd ap_note_cleanups_for_fd note_cleanups_for_file ap_note_cleanups_for_file note_cleanups_for_socket ap_note_cleanups_for_socket note_digest_auth_failure ap_note_digest_auth_failure note_subprocess ap_note_subprocess null_cleanup ap_null_cleanup open_logs ap_open_logs open_piped_log ap_open_piped_log overlay_tables ap_overlay_tables palloc ap_palloc parseHTTPdate ap_parseHTTPdate parse_htaccess ap_parse_htaccess parse_uri ap_parse_uri parse_uri_components ap_parse_uri_components parse_hostinfo_components ap_parse_hostinfo_components parse_vhost_addrs ap_parse_vhost_addrs pcalloc ap_pcalloc pcfg_open_custom ap_pcfg_open_custom pcfg_openfile ap_pcfg_openfile pclosedir ap_pclosedir pclosef ap_pclosef pclosesocket ap_pclosesocket pduphostent ap_pduphostent pfclose ap_pfclose pfdopen ap_pfdopen pfopen ap_pfopen pgethostbyname ap_pgethostbyname pool_is_ancestor ap_pool_is_ancestor pool_join ap_pool_join popendir ap_popendir popenf ap_popenf pregcomp ap_pregcomp pregfree ap_pregfree pregsub ap_pregsub process_request ap_process_request process_resource_config ap_process_resource_config proxy_add_header ap_proxy_add_header proxy_c2hex ap_proxy_c2hex proxy_cache_check ap_proxy_cache_check proxy_cache_error ap_proxy_cache_error proxy_cache_tidy ap_proxy_cache_tidy proxy_cache_update ap_proxy_cache_update proxy_canon_netloc ap_proxy_canon_netloc proxy_canonenc ap_proxy_canonenc proxy_connect_handler ap_proxy_connect_handler proxy_date_canon ap_proxy_date_canon proxy_del_header ap_proxy_del_header proxy_doconnect ap_proxy_doconnect proxy_ftp_canon ap_proxy_ftp_canon proxy_ftp_handler ap_proxy_ftp_handler proxy_garbage_coll ap_proxy_garbage_coll proxy_garbage_init ap_proxy_garbage_init proxy_get_header ap_proxy_get_header proxy_hash ap_proxy_hash proxy_hex2c ap_proxy_hex2c proxy_hex2sec ap_proxy_hex2sec proxy_host2addr ap_proxy_host2addr proxy_http_canon ap_proxy_http_canon proxy_http_handler ap_proxy_http_handler proxy_is_domainname ap_proxy_is_domainname proxy_is_hostname ap_proxy_is_hostname proxy_is_ipaddr ap_proxy_is_ipaddr proxy_is_word ap_proxy_is_word proxy_liststr ap_proxy_liststr proxy_log_uerror ap_proxy_log_uerror proxy_read_headers ap_proxy_read_headers proxy_sec2hex ap_proxy_sec2hex proxy_send_fb ap_proxy_send_fb proxy_send_headers ap_proxy_send_headers proxyerror ap_proxyerror psignature ap_psignature psocket ap_psocket pstrcat ap_pstrcat pstrdup ap_pstrdup pstrndup ap_pstrndup psprintf ap_psprintf pvsprintf ap_pvsprintf push_array ap_push_array rationalize_mtime ap_rationalize_mtime read_config ap_read_config read_request ap_read_request register_cleanup ap_register_cleanup register_other_child ap_register_other_child remove_module ap_remove_module requires ap_requires reset_timeout ap_reset_timeout response_code_string ap_response_code_string rfc1413 ap_rfc1413 rflush ap_rflush rind ap_rind rprintf ap_rprintf rputc ap_rputc rputs ap_rputs run_cleanup ap_run_cleanup run_fixups ap_run_fixups run_post_read_request ap_run_post_read_request run_sub_req ap_run_sub_req rvputs ap_rvputs rwrite ap_rwrite satisfies ap_satisfies scan_script_header_err ap_scan_script_header_err scan_script_header_err_buff ap_scan_script_header_err_buff send_error_response ap_send_error_response send_fb ap_send_fb send_fb_length ap_send_fb_length send_fd ap_send_fd send_fd_length ap_send_fd_length send_header_field ap_send_header_field send_http_header ap_send_http_header send_http_options ap_send_http_options send_http_trace ap_send_http_trace send_mmap ap_send_mmap send_size ap_send_size server_root_relative ap_server_root_relative set_byterange ap_set_byterange set_callback_and_alarm ap_set_callback_and_alarm set_content_length ap_set_content_length set_etag ap_set_etag set_file_slot ap_set_file_slot set_flag_slot ap_set_flag_slot set_keepalive ap_set_keepalive set_last_modified ap_set_last_modified set_module_config ap_set_module_config set_name_virtual_host ap_set_name_virtual_host set_string_slot ap_set_string_slot set_string_slot_lower ap_set_string_slot_lower set_sub_req_protocol ap_set_sub_req_protocol setup_client_block ap_setup_client_block setup_prelinked_modules ap_setup_prelinked_modules should_client_block ap_should_client_block show_directives ap_show_directives show_modules ap_show_modules soft_timeout ap_soft_timeout some_auth_required ap_some_auth_required spawn_child_err ap_spawn_child_err spawn_child_err_buff ap_spawn_child_err_buff srm_command_loop ap_srm_command_loop start_restart ap_start_restart start_shutdown ap_start_shutdown str_tolower ap_str_tolower strcasecmp_match ap_strcasecmp_match strcmp_match ap_strcmp_match sub_req_lookup_file ap_sub_req_lookup_file sub_req_lookup_uri ap_sub_req_lookup_uri sync_scoreboard_image ap_sync_scoreboard_image table_add ap_table_add table_addn ap_table_addn table_do ap_table_do table_get ap_table_get table_merge ap_table_merge table_mergen ap_table_mergen table_set ap_table_set table_setn ap_table_setn table_unset ap_table_unset time_process_request ap_time_process_request tm2sec ap_tm2sec translate_name ap_translate_name uname2id ap_uname2id unblock_alarms ap_unblock_alarms unescape_url ap_unescape_url unparse_uri_components ap_unparse_uri_components unregister_other_child ap_unregister_other_child update_child_status ap_update_child_status update_mtime ap_update_mtime update_vhost_from_headers ap_update_vhost_from_headers update_vhost_given_ip ap_update_vhost_given_ip util_init ap_util_init util_uri_init ap_util_uri_init uudecode ap_uudecode vbprintf ap_vbprintf apapi_get_server_built ap_get_server_built apapi_get_server_version ap_get_server_version aplog_error ap_log_error log_error ap_log_error_old os_escape_path ap_escape_path os_canonical_filename ap_canonical_filename acquire_mutex ap_acquire_mutex create_mutex ap_create_mutex destroy_mutex ap_destroy_mutex open_mutex ap_open_mutex release_mutex ap_release_mutex os_is_path_absolute ap_is_path_absolute prelinked_modules ap_prelinked_modules preloaded_modules ap_preloaded_modules git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80869 13f79535-47bb-0310-9956-ffa450edef68
-
Ralf S. Engelschall authored
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80867 13f79535-47bb-0310-9956-ffa450edef68
-
Ralf S. Engelschall authored
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80866 13f79535-47bb-0310-9956-ffa450edef68
-
Ralf S. Engelschall authored
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80865 13f79535-47bb-0310-9956-ffa450edef68
-
Marc Slemko authored
entry is extremely misleading, and answering a Q that isn't really FA, and I see someone posting somewhere every week who tries this to fix their "method not allowed" problems. PR: Obtained from: Submitted by: Reviewed by: git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80864 13f79535-47bb-0310-9956-ffa450edef68
-
- Apr 10, 1998
-
-
brian authored
In Roy's "swab the decks" message he unilaterally and without consultation moved several names from active to emeritae. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80860 13f79535-47bb-0310-9956-ffa450edef68
-
brian authored
Consensus reached. Comments on the vote will be kept in the CVS logs of course. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80859 13f79535-47bb-0310-9956-ffa450edef68
-
Ralf S. Engelschall authored
git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80858 13f79535-47bb-0310-9956-ffa450edef68
-
Ralf S. Engelschall authored
DSO support for SVR4-based Unix platforms ========================================= What it provides: ----------------- This patch is another milestone in the DSO support for Apache 1.3. It adds Dynamic Shared Object (DSO) support for mostly all SVR4-based Unix platforms (We cannot test all of them of course, but Martin has at least tested it under SINIX-SVR4). Why is this patch a little bit larger then one would expect? Mostly because this support goes hand in hand by providing a special variant of the Apache core program. Read on if you are interested. Background: ----------- Usually the DSO mechanism was designed to be used for loading library code dynamically into the address space of a running program. Here the library code is a stand-alone program which has no knowledge of the program it is loaded into. Technically speaking this means that no symbols of the loading program are references in the DSO. The resolving is done only the other way: Symbols of the library are resolved for the program (either automatically by ld.so when one uses DSO-based libraries or manually via dlopen()/dlsym() when using DSO-based program extensions. Now when you use the latter situation the DSO usually contains a program extension. This extension usually uses symbols from the program it extends: from the API. Same here for Apache: The core provides API symbols and the extensions are Apache modules which use those symbols. Now comes the problem: when you load a DSO via dlopen() the loader has to resolve the symbols in this DSO. Symbols from other DSO-based libraries can be resolved the same way ld.so does. No problem. But to be able to resolve the API symbols the loader must be able to access them. Technically speaking one would say the API symbols have to be "exported". This is not the same as just being a "global" symbol, although a lot of platforms treat this equally. Actually it is this way: When the linker creates an executable program it does not treats global symbols as exported symbols. But because this is needed for extending the program via DSO, modern linkers usually either provide a flag (-rdynamic under Linux, etc.) or are smart enough to do the exportation automatically (Solaris, FreeBSD, etc.) But as life goes, there are linkers out there who neither provide a flag to force exportation nor are smart enough to do it automatically. FOR INSTANCE THE LINKER UNDER SVR4! That's the problem this patch has to solve. Solution: --------- We have to make sure the global symbols from the Apache core program are forced to be exported by the linker. The obvious way is this: Create a dummy.so with dummy references for _ALL_ global symbols and link httpd against this DSO. This works but has some drawbacks: You have to make sure the dummy.c source is always in sync with the list of global symbols (ARGL!) and you have to make sure the Unix loader can find "dummy.so" when starting httpd (Hmmmm). So Martin and I've searched for a better solution. And because I'm a Perl hacker I immediately tried to figure out why Perl is able to use the DSO mechanism without problems under SVR4 while Apache has such problems. The answer: Perl 5 uses a nifty trick. As we already know when program code stays in a DSO the global symbols have to be exportable. So, when we put the complete Apache core (the stuff httpd is usually build from) into a DSO we are finished. Because this is both portable and causes no sideeffects like having to sync a dummy.c source, etc. While the theory is simple, the correct solution was not such simple. Martin and I needed some iterations to provide this patch because we wanted to make it perfect and clean. That's why it's a little bit longer.... The Patch: ---------- The patch does the following: 1. It introduces a new Rule: SHARED_CORE 2. It makes the main() function from http_main.c configurable and sets it to ap_main if SHARED_CORE is active. 3. It adds two additional stand-alone main() functions to http_main.c which are triggered by SHARED_CORE_BOOTSTRAP and SHARED_CORE_TIESTATIC. 4. It splits the TARGET in Makefile.tmpl into subtargets. One for the standard way of creating just httpd from the .a files. And one for creating the alternative tuple: httpd/libhttpd.ep/libhttpd.so. The first one is SHARED_CORE_BOOTSTRAP+http_main.c, the second one is SHARED_CORE_TIESTATIC+httpd_main.c and the third one are the .a files which usually form the httpd. 5. The DSO section in Configure was extended to force SHARED_CORE under those platforms like SVR4 which essentially require SHARED_CORE to provide the SHARED_MODULE stuff. Bingo! 6. Some minor tweaks to APACI etc. to automatically install the SHARED_CORE generated stuff. Of course the complete stuff is disabled per default, so you don't see anything from it if SHARED_CORE is not activated. But just for fun you even can use it under platforms who do not require it. But currently you gain nothing here. I've tested this stuff under FreeBSD, Linux and Solaris to make sure none of the existing stuff gets broken. Martin has tested it under various SVR4 platforms to make sure it really solves our DSO problem for restrictive platforms like SVR4. The chance is high that this way we even can provide DSO support under AIX in the future. git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80857 13f79535-47bb-0310-9956-ffa450edef68
-
Marc Slemko authored
systems, libsun is empty and on some it has been rumored to cause problems if you link against it. Inspired by PR: 2050 git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80856 13f79535-47bb-0310-9956-ffa450edef68
-
- Apr 09, 1998
-
-
dgaudet authored
Submitted by: Ben Hyde git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/branches/1.3.x@80853 13f79535-47bb-0310-9956-ffa450edef68
-