You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Jeff Trawick <tr...@gmail.com> on 2013/09/12 14:27:50 UTC

Re: svn commit: r1522544 - in /httpd/httpd/trunk: build/win32/fixBaseAddrs.pl os/win32/BaseAddr.ref

On Thu, Sep 12, 2013 at 8:15 AM, <tr...@apache.org> wrote:

> Author: trawick
> Date: Thu Sep 12 12:15:02 2013
> New Revision: 1522544
>
> URL: http://svn.apache.org/r1522544
> Log:
> BaseAddr.ref:
> . Update sizes as necessary based on a 64-bit debug build with Visual
> Studio
>   2012.
>

Any concern with that methodology, or should I go ahead and do the same
thing for the 2.4.x branch?


> . 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.
>
> Added:
>     httpd/httpd/trunk/build/win32/fixBaseAddrs.pl   (with props)
> Modified:
>     httpd/httpd/trunk/os/win32/BaseAddr.ref
>
> Added: httpd/httpd/trunk/build/win32/fixBaseAddrs.pl
> URL:
> http://svn.apache.org/viewvc/httpd/httpd/trunk/build/win32/fixBaseAddrs.pl?rev=1522544&view=auto
>
> ==============================================================================
> --- httpd/httpd/trunk/build/win32/fixBaseAddrs.pl (added)
> +++ httpd/httpd/trunk/build/win32/fixBaseAddrs.pl Thu Sep 12 12:15:02 2013
> @@ -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;
>
> Propchange: httpd/httpd/trunk/build/win32/fixBaseAddrs.pl
>
> ------------------------------------------------------------------------------
>     svn:eol-style = native
>
> Modified: httpd/httpd/trunk/os/win32/BaseAddr.ref
> URL:
> http://svn.apache.org/viewvc/httpd/httpd/trunk/os/win32/BaseAddr.ref?rev=1522544&r1=1522543&r2=1522544&view=diff
>
> ==============================================================================
> --- httpd/httpd/trunk/os/win32/BaseAddr.ref (original)
> +++ httpd/httpd/trunk/os/win32/BaseAddr.ref Thu Sep 12 12:15:02 2013
> @@ -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
>
>
>


-- 
Born in Roswell... married an alien...
http://emptyhammock.com/

Re: svn commit: r1522544 - in /httpd/httpd/trunk: build/win32/fixBaseAddrs.pl os/win32/BaseAddr.ref

Posted by Gregg Smith <gl...@gknw.net>.
On 9/12/2013 5:27 AM, Jeff Trawick wrote:
> On Thu, Sep 12, 2013 at 8:15 AM, <trawick@apache.org 
> <ma...@apache.org>> wrote:
>
>     Author: trawick
>     Date: Thu Sep 12 12:15:02 2013
>     New Revision: 1522544
>
>     URL: http://svn.apache.org/r1522544
>     Log:
>     BaseAddr.ref:
>     . Update sizes as necessary based on a 64-bit debug build with
>     Visual Studio
>       2012.
>
>
> Any concern with that methodology, or should I go ahead and do the 
> same thing for the 2.4.x branch?

No, as long as they have large enough stack. I was going to propose 
backport of r1505178 but was not able to do a VC12 build for awhile with 
the backport on 2.4.7 to check due to connectivity problems. The commit 
only dealt with the two modules (cache & ldap) in 2.4 reporting 
insufficient stack size at the time.

>     . 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.
>
>     Added:
>         httpd/httpd/trunk/build/win32/fixBaseAddrs.pl   (with props)
>     Modified:
>         httpd/httpd/trunk/os/win32/BaseAddr.ref
>
>     Added: httpd/httpd/trunk/build/win32/fixBaseAddrs.pl
>     URL:
>     http://svn.apache.org/viewvc/httpd/httpd/trunk/build/win32/fixBaseAddrs.pl?rev=1522544&view=auto
>     <http://svn.apache.org/viewvc/httpd/httpd/trunk/build/win32/fixBaseAddrs.pl?rev=1522544&view=auto>
>     ==============================================================================
>     --- httpd/httpd/trunk/build/win32/fixBaseAddrs.pl (added)
>     +++ httpd/httpd/trunk/build/win32/fixBaseAddrs.pl Thu Sep 12
>     12:15:02 2013
>     @@ -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;
>
>     Propchange: httpd/httpd/trunk/build/win32/fixBaseAddrs.pl
>     ------------------------------------------------------------------------------
>         svn:eol-style = native
>
>     Modified: httpd/httpd/trunk/os/win32/BaseAddr.ref
>     URL:
>     http://svn.apache.org/viewvc/httpd/httpd/trunk/os/win32/BaseAddr.ref?rev=1522544&r1=1522543&r2=1522544&view=diff
>     <http://svn.apache.org/viewvc/httpd/httpd/trunk/os/win32/BaseAddr.ref?rev=1522544&r1=1522543&r2=1522544&view=diff>
>     ==============================================================================
>     --- httpd/httpd/trunk/os/win32/BaseAddr.ref (original)
>     +++ httpd/httpd/trunk/os/win32/BaseAddr.ref Thu Sep 12 12:15:02 2013
>     @@ -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
>
>
>
>
>
> -- 
> Born in Roswell... married an alien...
> http://emptyhammock.com/