BaseAddr.ref:

. Update sizes as necessary based on a 64-bit debug build with Visual Studio
  2012.
. Add missing modules mod_apreq, mod_authnz_fcgi, mod_dialup,
  mod_optional_fn_export, mod_optional_fn_import, mod_optional_hook_export,
  mod_optional_hook_import, and mod_policy.
  (The example mods aren't important, but adding them avoids having to
  treat those as exceptions in any sort of automatic update mechanism.
  Potential issues with the several modules that aren't currently buildable
  with the cmake-based solution have not been addressed.)

fixBaseAddrs.pl:
. New script to generate a new BaseAddr.ref based on Microsoft linker
  warnings about inadequate size or missing module.


git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1522544 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Jeff Trawick
2013-09-12 12:15:02 +00:00
parent 731d18dd4c
commit 86335b8bb8
2 changed files with 241 additions and 115 deletions

118
build/win32/fixBaseAddrs.pl Normal file
View File

@ -0,0 +1,118 @@
#!/usr/bin/perl -w
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# HOWTO use this to update BaseAddrs.ref:
#
# This takes the old BaseAddrs.ref and a build listing showing LNK4013
# and LNK4198 errors and produces an updated BaseAddrs.ref with any
# necessary changes for incorrect sizes or missing modules.
#
# Missing modules are added with a default size of 64K, so another
# build is needed to determine if a non-default size is required for
# newly added modules.
use strict;
my $oldref = shift;
my $listing = shift;
my $newref = shift;
my $starting_addr = 0x6FF00000;
my $default_size = 0x00010000;
my @modnames = ();
my @maxsizes = ();
my @comments = ();
my $in_defs = undef;
open(F, "<$oldref") or die;
while (<F>) {
my $l = $_;
chomp($l);
if (!$in_defs && length($l) != 0 && substr($l, 0, 1) ne ';') {
$in_defs = 1;
}
if ($in_defs) {
my @fields = split(/[ \t]+/, $l);
@modnames = (@modnames, $fields[0]);
@maxsizes = (@maxsizes, hex($fields[2]));
}
else {
@comments = (@comments, $l);
}
}
close(F) or die;
my $curlib = undef;
my %reported = ();
open(F, "<$listing") or die;
while (<F>) {
my $l = $_;
chomp($l);
if ($l =~ /Creating library (.*)\.lib/) {
if ($1 eq "libhttpd") {
$curlib = "$1.dll";
}
else {
$curlib = "$1.so";
}
}
elsif ($l =~ /warning LNK4013: image size (.*) exceeds/) {
my $mod = $curlib;
my $newsize = hex($1);
if (!$reported{$mod}) {
$reported{$mod} = 1;
# round to nearest 64K
$newsize = int(1 + $newsize / 0x00010000) * 0x00010000;
printf "$curlib size changes to %s (rounded to 0x%08X)\n", $1, $newsize;
my $i = 0;
while ($i < scalar(@modnames)) {
if ($modnames[$i] eq $mod) {
print " (from $maxsizes[$i])\n";
$maxsizes[$i] = $newsize;
last;
}
++$i;
}
}
}
elsif ($l =~ /warning LNK4198: base key '(.*)' not found/) {
my $mod = $1;
if (!$reported{$mod}) {
$reported{$mod} = 1;
print "$mod must be added\n";
@modnames = (@modnames, $mod);
@maxsizes = (@maxsizes, $default_size);
}
}
}
close(F) or die;
open(F, ">$newref") or die;
print F join("\n", @comments);
print F "\n";
my $i = 0;
my $curaddr = $starting_addr;
while ($i < scalar(@modnames)) {
printf F "%-28s0x%08X 0x%08X\n", $modnames[$i], $curaddr, $maxsizes[$i];
$curaddr += $maxsizes[$i];
++$i;
}
close(F) or die;

View File

@ -8,118 +8,126 @@
; module name base-address max-size
libhttpd.dll 0x6FF00000 0x000A0000
mod_auth_basic.so 0x6FEF0000 0x00010000
mod_auth_digest.so 0x6FED0000 0x00020000
mod_cern_meta.so 0x6FEC0000 0x00010000
mod_expires.so 0x6FEB0000 0x00010000
mod_headers.so 0x6FEA0000 0x00010000
mod_info.so 0x6FE90000 0x00010000
mod_rewrite.so 0x6FE70000 0x00020000
mod_speling.so 0x6FE60000 0x00010000
mod_status.so 0x6FE50000 0x00010000
mod_usertrack.so 0x6FE40000 0x00010000
mod_file_cache.so 0x6FE20000 0x00020000
mod_unique_id.so 0x6FE00000 0x00010000
mod_vhost_alias.so 0x6FDF0000 0x00010000
mod_mime_magic.so 0x6FDE0000 0x00010000
mod_dav.so 0x6FDC0000 0x00020000
mod_dav_fs.so 0x6FDB0000 0x00010000
mod_proxy_connect.so 0x6FD90000 0x00010000
mod_proxy_ftp.so 0x6FD80000 0x00010000
mod_proxy_http.so 0x6FD70000 0x00010000
mod_ssl.so 0x6FD00000 0x00070000
mod_actions.so 0x6FCE0000 0x00010000
mod_alias.so 0x6FCD0000 0x00010000
mod_asis.so 0x6FCC0000 0x00010000
mod_autoindex.so 0x6FCA0000 0x00010000
mod_cgi.so 0x6FC90000 0x00010000
mod_dir.so 0x6FC80000 0x00010000
mod_env.so 0x6FC70000 0x00010000
mod_imagemap.so 0x6FC60000 0x00010000
mod_include.so 0x6FC50000 0x00010000
mod_isapi.so 0x6FC40000 0x00010000
mod_log_config.so 0x6FC30000 0x00010000
mod_mime.so 0x6FC20000 0x00010000
mod_negotiation.so 0x6FC10000 0x00010000
mod_setenvif.so 0x6FC00000 0x00010000
mod_userdir.so 0x6FBF0000 0x00010000
mod_cache.so 0x6FBD0000 0x00020000
mod_cache_disk.so 0x6FBC0000 0x00010000
mod_buffer.so 0x6FBB0000 0x00010000
mod_deflate.so 0x6FB90000 0x00020000
mod_ext_filter.so 0x6FB80000 0x00010000
mod_charset_lite.so 0x6FB70000 0x00010000
mod_authn_anon.so 0x6FB60000 0x00010000
mod_authn_dbm.so 0x6FB50000 0x00010000
mod_authn_file.so 0x6FB40000 0x00010000
mod_authz_dbm.so 0x6FB30000 0x00010000
mod_authz_groupfile.so 0x6FB20000 0x00010000
mod_authz_host.so 0x6FB10000 0x00010000
mod_authz_user.so 0x6FB00000 0x00010000
mod_logio.so 0x6FAF0000 0x00010000
mod_ldap.so 0x6FAD0000 0x00020000
mod_authnz_ldap.so 0x6FAC0000 0x00010000
mod_ident.so 0x6FAB0000 0x00010000
mod_proxy_ajp.so 0x6FAA0000 0x00010000
mod_proxy_balancer.so 0x6FA90000 0x00010000
mod_log_forensic.so 0x6FA80000 0x00010000
mod_version.so 0x6FA70000 0x00010000
mod_bucketeer.so 0x6FA60000 0x00010000
mod_dumpio.so 0x6FA50000 0x00010000
mod_echo.so 0x6FA40000 0x00010000
mod_authn_dbd.so 0x6FA30000 0x00010000
mod_dbd.so 0x6FA20000 0x00010000
mod_proxy.so 0x6FA00000 0x00020000
mod_access_compat.so 0x6F9F0000 0x00010000
mod_authz_core.so 0x6F9E0000 0x00010000
mod_proxy_fcgi.so 0x6F9D0000 0x00010000
mod_authn_core.so 0x6F9C0000 0x00010000
mod_authz_dbd.so 0x6F9B0000 0x00010000
mod_authz_owner.so 0x6F9A0000 0x00010000
mod_example_hooks.so 0x6F990000 0x00010000
mod_case_filter.so 0x6F980000 0x00010000
mod_case_filter_in.so 0x6F970000 0x00010000
mod_substitute.so 0x6F960000 0x00010000
mod_filter.so 0x6F950000 0x00010000
mod_dav_lock.so 0x6F940000 0x00010000
mod_auth_form.so 0x6F930000 0x00010000
mod_example_ipc.so 0x6F920000 0x00010000
mod_request.so 0x6F910000 0x00010000
mod_lbmethod_rr.so 0x6F900000 0x00010000
mod_session.so 0x6F8F0000 0x00010000
mod_session_cookie.so 0x6F8E0000 0x00010000
mod_session_crypto.so 0x6F8D0000 0x00010000
mod_session_dbd.so 0x6F8C0000 0x00010000
mod_socache_dbm.so 0x6F8B0000 0x00010000
mod_socache_dc.so 0x6F8A0000 0x00010000
mod_socache_memcache.so 0x6F890000 0x00010000
mod_socache_shmcb.so 0x6F880000 0x00010000
mod_sed.so 0x6F870000 0x00010000
mod_lua.so 0x6F850000 0x00020000
mod_ratelimit.so 0x6F840000 0x00010000
mod_remoteip.so 0x6F830000 0x00010000
mod_lbmethod_bybusyness.so 0x6F820000 0x00010000
mod_lbmethod_byrequests.so 0x6F810000 0x00010000
mod_lbmethod_bytraffic.so 0x6F800000 0x00010000
mod_lbmethod_heartbeat.so 0x6F7F0000 0x00010000
mod_heartbeat.so 0x6F7E0000 0x00010000
mod_heartmonitor.so 0x6F7D0000 0x00010000
mod_watchdog.so 0x6F7C0000 0x00010000
mod_proxy_scgi.so 0x6F7B0000 0x00010000
mod_serf.so 0x6F7A0000 0x00010000
mod_reqtimeout.so 0x6F790000 0x00010000
mod_reflector.so 0x6F780000 0x00010000
mod_slotmem_plain.so 0x6F770000 0x00010000
mod_slotmem_shm.so 0x6F760000 0x00010000
mod_authn_socache.so 0x6F750000 0x00010000
mod_proxy_express.so 0x6F740000 0x00010000
mod_log_debug.so 0x6F730000 0x00010000
mod_proxy_html.so 0x6F720000 0x00010000
mod_xml2enc.so 0x6F710000 0x00010000
mod_data.so 0x6F700000 0x00010000
mod_allowmethods.so 0x6F6F0000 0x00010000
mod_cache_socache.so 0x6F6E0000 0x00010000
mod_allowhandlers.so 0x6F6D0000 0x00010000
mod_macro.so 0x6F6C0000 0x00010000
mod_proxy_wstunnel.so 0x6F6B0000 0x00010000
libhttpd.dll 0x6FF00000 0x000F0000
mod_auth_basic.so 0x6FFF0000 0x00020000
mod_auth_digest.so 0x70010000 0x00020000
mod_cern_meta.so 0x70030000 0x00010000
mod_expires.so 0x70040000 0x00010000
mod_headers.so 0x70050000 0x00020000
mod_info.so 0x70070000 0x00020000
mod_rewrite.so 0x70090000 0x00030000
mod_speling.so 0x700C0000 0x00010000
mod_status.so 0x700D0000 0x00020000
mod_usertrack.so 0x700F0000 0x00010000
mod_file_cache.so 0x70100000 0x00020000
mod_unique_id.so 0x70120000 0x00010000
mod_vhost_alias.so 0x70130000 0x00010000
mod_mime_magic.so 0x70140000 0x00020000
mod_dav.so 0x70160000 0x00040000
mod_dav_fs.so 0x701A0000 0x00030000
mod_proxy_connect.so 0x701D0000 0x00020000
mod_proxy_ftp.so 0x701F0000 0x00020000
mod_proxy_http.so 0x70210000 0x00020000
mod_ssl.so 0x70230000 0x00070000
mod_actions.so 0x702A0000 0x00010000
mod_alias.so 0x702B0000 0x00020000
mod_asis.so 0x702D0000 0x00010000
mod_autoindex.so 0x702E0000 0x00020000
mod_cgi.so 0x70300000 0x00020000
mod_dir.so 0x70320000 0x00010000
mod_env.so 0x70330000 0x00010000
mod_imagemap.so 0x70340000 0x00020000
mod_include.so 0x70360000 0x00030000
mod_isapi.so 0x70390000 0x00020000
mod_log_config.so 0x703B0000 0x00020000
mod_mime.so 0x703D0000 0x00020000
mod_negotiation.so 0x703F0000 0x00020000
mod_setenvif.so 0x70410000 0x00020000
mod_userdir.so 0x70430000 0x00010000
mod_cache.so 0x70440000 0x00030000
mod_cache_disk.so 0x70470000 0x00020000
mod_buffer.so 0x70490000 0x00010000
mod_deflate.so 0x704A0000 0x00020000
mod_ext_filter.so 0x704C0000 0x00020000
mod_charset_lite.so 0x704E0000 0x00010000
mod_authn_anon.so 0x704F0000 0x00010000
mod_authn_dbm.so 0x70500000 0x00010000
mod_authn_file.so 0x70510000 0x00010000
mod_authz_dbm.so 0x70520000 0x00010000
mod_authz_groupfile.so 0x70530000 0x00010000
mod_authz_host.so 0x70540000 0x00010000
mod_authz_user.so 0x70550000 0x00010000
mod_logio.so 0x70560000 0x00010000
mod_ldap.so 0x70570000 0x00030000
mod_authnz_ldap.so 0x705A0000 0x00020000
mod_ident.so 0x705C0000 0x00010000
mod_proxy_ajp.so 0x705D0000 0x00020000
mod_proxy_balancer.so 0x705F0000 0x00020000
mod_log_forensic.so 0x70610000 0x00010000
mod_version.so 0x70620000 0x00010000
mod_bucketeer.so 0x70630000 0x00010000
mod_dumpio.so 0x70640000 0x00010000
mod_echo.so 0x70650000 0x00010000
mod_authn_dbd.so 0x70660000 0x00010000
mod_dbd.so 0x70670000 0x00020000
mod_proxy.so 0x70690000 0x00040000
mod_access_compat.so 0x706D0000 0x00010000
mod_authz_core.so 0x706E0000 0x00020000
mod_proxy_fcgi.so 0x70700000 0x00020000
mod_authn_core.so 0x70720000 0x00010000
mod_authz_dbd.so 0x70730000 0x00010000
mod_authz_owner.so 0x70740000 0x00010000
mod_example_hooks.so 0x70750000 0x00020000
mod_case_filter.so 0x70770000 0x00010000
mod_case_filter_in.so 0x70780000 0x00010000
mod_substitute.so 0x70790000 0x00020000
mod_filter.so 0x707B0000 0x00020000
mod_dav_lock.so 0x707D0000 0x00020000
mod_auth_form.so 0x707F0000 0x00020000
mod_example_ipc.so 0x70810000 0x00010000
mod_request.so 0x70820000 0x00010000
mod_lbmethod_rr.so 0x70830000 0x00010000
mod_session.so 0x70840000 0x00020000
mod_session_cookie.so 0x70860000 0x00010000
mod_session_crypto.so 0x70870000 0x00020000
mod_session_dbd.so 0x70890000 0x00020000
mod_socache_dbm.so 0x708B0000 0x00020000
mod_socache_dc.so 0x708D0000 0x00010000
mod_socache_memcache.so 0x708E0000 0x00010000
mod_socache_shmcb.so 0x708F0000 0x00020000
mod_sed.so 0x70910000 0x00020000
mod_lua.so 0x70930000 0x00040000
mod_ratelimit.so 0x70970000 0x00010000
mod_remoteip.so 0x70980000 0x00010000
mod_lbmethod_bybusyness.so 0x70990000 0x00010000
mod_lbmethod_byrequests.so 0x709A0000 0x00010000
mod_lbmethod_bytraffic.so 0x709B0000 0x00010000
mod_lbmethod_heartbeat.so 0x709C0000 0x00020000
mod_heartbeat.so 0x709E0000 0x00010000
mod_heartmonitor.so 0x709F0000 0x00020000
mod_watchdog.so 0x70A10000 0x00020000
mod_proxy_scgi.so 0x70A30000 0x00020000
mod_serf.so 0x70A50000 0x00010000
mod_reqtimeout.so 0x70A60000 0x00020000
mod_reflector.so 0x70A80000 0x00010000
mod_slotmem_plain.so 0x70A90000 0x00010000
mod_slotmem_shm.so 0x70AA0000 0x00020000
mod_authn_socache.so 0x70AC0000 0x00020000
mod_proxy_express.so 0x70AE0000 0x00010000
mod_log_debug.so 0x70AF0000 0x00010000
mod_proxy_html.so 0x70B00000 0x00020000
mod_xml2enc.so 0x70B20000 0x00020000
mod_data.so 0x70B40000 0x00010000
mod_allowmethods.so 0x70B50000 0x00010000
mod_cache_socache.so 0x70B60000 0x00020000
mod_allowhandlers.so 0x70B80000 0x00010000
mod_macro.so 0x70B90000 0x00020000
mod_proxy_wstunnel.so 0x70BB0000 0x00020000
mod_apreq.so 0x70BD0000 0x00020000
mod_authnz_fcgi.so 0x70BF0000 0x00020000
mod_dialup.so 0x70C10000 0x00010000
mod_optional_fn_export.so 0x70C20000 0x00010000
mod_optional_fn_import.so 0x70C30000 0x00010000
mod_optional_hook_export.so 0x70C40000 0x00010000
mod_optional_hook_import.so 0x70C50000 0x00010000
mod_policy.so 0x70C60000 0x00020000