You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by Allan Edwards <ak...@us.ibm.com> on 2004/08/18 23:41:50 UTC

Re: Windows 2003 IA64 builds?

I posted a companion patch to the apr list last night.
This patch against HEAD along with the apr patch get
the three core dlls cross compiling with Visual Studio 6
+ IA64 SDK. It addresses most /W2 warnings and fixes a
couple of bugs. I haven't looked at many of the modules
yet.

As I mentioned in the other note there are a lot more
warnings that are thrown with /W3 that need to be
investigated furher.

In addition to fixing compiler warnings there is the
question of the build process. I'm currently running
"setenv /SRV64 /RETAIL" from the SDK to set the IA64
environment, then running msdev with the /USEENV option.
This requires a separate set of .dsp files that have
been munged to specify /machine:IA64 among other things.
Keeping the .dsp's separate rather than folding into
the existing ones if for convenience and maintainability
at least in the short term, maybe the long term too.

One problem that comes up is that there are 3 executables
built that are used to generate tables at compile time, but
since everything is cross compiled IA64 that doesn't work.
I'll have to hack around that somehow, maybe store the prebuilt
files in CVS and copy to the appropriate locations.
I'm open to suggestions if anyone has a better idea.

If this sounds reasonable I'll proceed along this path.

Allan
------------------------------------------------------
Index: os/win32/ap_regkey.c
===================================================================
RCS file: /home/cvs/httpd-2.0/os/win32/ap_regkey.c,v
retrieving revision 1.11
diff -U3 -r1.11 ap_regkey.c
--- os/win32/ap_regkey.c	9 Feb 2004 20:40:49 -0000	1.11
+++ os/win32/ap_regkey.c	17 Aug 2004 21:02:48 -0000
@@ -236,7 +236,7 @@
           */
          valuelen = (size - 1) * 3 + 1;
          *result = apr_palloc(pool, valuelen);
-        rv = apr_conv_ucs2_to_utf8(wvalue, &size, *result, &valuelen);
+        rv = apr_conv_ucs2_to_utf8(wvalue, (apr_size_t *)&size, *result, &valuelen);
          if (rv != APR_SUCCESS)
              return rv;
          else if (size)
@@ -309,7 +309,7 @@

          wvallen = alloclen = size;
          wvalue = apr_palloc(pool, alloclen * 2);
-        rv = apr_conv_utf8_to_ucs2(value, &size, wvalue, &wvallen);
+        rv = apr_conv_utf8_to_ucs2(value, (apr_size_t *)&size, wvalue, &wvallen);
          if (rv != APR_SUCCESS)
              return rv;
          else if (size)
@@ -363,7 +363,7 @@
              return APR_ENAMETOOLONG;
          /* Read to NULL buffer to determine value size */
          rc = RegQueryValueExW(key->hkey, wvalname, 0, resulttype,
-                              NULL, resultsize);
+                              NULL, (LPDWORD)resultsize);
          if (rc != ERROR_SUCCESS) {
              return APR_FROM_OS_ERROR(rc);
          }
@@ -371,7 +371,7 @@
          /* Read value based on size query above */
          *result = apr_palloc(pool, *resultsize);
          rc = RegQueryValueExW(key->hkey, wvalname, 0, resulttype,
-                             (LPBYTE)*result, resultsize);
+                             (LPBYTE)*result, (LPDWORD)resultsize);
      }
  #endif /* APR_HAS_UNICODE_FS */
  #if APR_HAS_ANSI_FS
@@ -379,14 +379,14 @@
      {
          /* Read to NULL buffer to determine value size */
          rc = RegQueryValueEx(key->hkey, valuename, 0, resulttype,
-                             NULL, resultsize);
+                             NULL, (LPDWORD)resultsize);
          if (rc != ERROR_SUCCESS)
              return APR_FROM_OS_ERROR(rc);

          /* Read value based on size query above */
          *result = apr_palloc(pool, *resultsize);
          rc = RegQueryValueEx(key->hkey, valuename, 0, resulttype,
-                             (LPBYTE)*result, resultsize);
+                             (LPBYTE)*result, (LPDWORD)resultsize);
          if (rc != ERROR_SUCCESS)
              return APR_FROM_OS_ERROR(rc);
      }
@@ -452,7 +452,7 @@
      char *buf;
      char *tmp;
      DWORD type;
-    DWORD size = 0;
+    apr_size_t size = 0;

      rv = ap_regkey_value_raw_get(&value, &size, &type, key, valuename, pool);
      if (rv != APR_SUCCESS) {
Index: server/mpm/winnt/child.c
===================================================================
RCS file: /home/cvs/httpd-2.0/server/mpm/winnt/child.c,v
retrieving revision 1.37
diff -U3 -r1.37 child.c
--- server/mpm/winnt/child.c	14 Aug 2004 10:57:13 -0000	1.37
+++ server/mpm/winnt/child.c	17 Aug 2004 21:02:48 -0000
@@ -684,7 +684,7 @@
  {
      int rc;
      DWORD BytesRead;
-    DWORD CompKey;
+    apr_size_t CompKey;
      LPOVERLAPPED pol;

      mpm_recycle_completion_context(context);
Index: server/mpm/winnt/mpm_winnt.c
===================================================================
RCS file: /home/cvs/httpd-2.0/server/mpm/winnt/mpm_winnt.c,v
retrieving revision 1.311
diff -U3 -r1.311 mpm_winnt.c
--- server/mpm/winnt/mpm_winnt.c	24 Apr 2004 11:23:14 -0000	1.311
+++ server/mpm/winnt/mpm_winnt.c	17 Aug 2004 21:02:49 -0000
@@ -416,7 +416,7 @@
      HANDLE hDup;
      HANDLE os_start;
      HANDLE hScore;
-    DWORD BytesWritten;
+    apr_size_t BytesWritten;

      if (!DuplicateHandle(hCurrentProcess, child_ready_event, hProcess, &hDup,
          EVENT_MODIFY_STATE | SYNCHRONIZE, FALSE, 0)) {
@@ -566,14 +566,14 @@
      int lcnt = 0;
      ap_listen_rec *lr;
      LPWSAPROTOCOL_INFO  lpWSAProtocolInfo;
-    DWORD BytesWritten;
+    apr_size_t BytesWritten;

      /* Run the chain of open sockets. For each socket, duplicate it
       * for the target process then send the WSAPROTOCOL_INFO
       * (returned by dup socket) to the child.
       */
      for (lr = ap_listeners; lr; lr = lr->next, ++lcnt) {
-        int nsd;
+        apr_os_sock_t nsd;
          lpWSAProtocolInfo = apr_pcalloc(p, sizeof(WSAPROTOCOL_INFO));
          apr_os_sock_get(&nsd,lr->sd);
          ap_log_error(APLOG_MARK, APLOG_INFO, APR_SUCCESS, ap_server_conf,