Jeff, I am a little lost in that code as you might imagine :-)
BTW, the HAVE_MMAP is defined.
I set a breakpoint at "uprv_mapFile_2_6", and here is some of the gdb debug...
[New Thread 16384 (LWP 942)] [Switching to Thread 16384 (LWP 942)]
Breakpoint 1, uprv_mapFile_2_6 (pData=0xbfffd9e0,
path=0xbfffe2f4 "./icudt26l_cnvalias.icu") at umapfile.c:165
165 UDataMemory_init(pData); /* Clear the output struct. */
(gdb) c
Continuing.
Breakpoint 1, uprv_mapFile_2_6 (pData=0xbfffd1c0,
path=0xbfffdad4 "./icudt26l_ucadata.icu") at umapfile.c:165
165 UDataMemory_init(pData); /* Clear the output struct. */
(gdb) s
159 uprv_mapFile(UDataMemory *pData, const char *path) {
(gdb) s
165 UDataMemory_init(pData); /* Clear the output struct. */
(gdb) s
UDataMemory_init_2_6 (This=0xbfffd1b8) at udatamem.c:27
27 uprv_memset(This, 0, sizeof(UDataMemory));
(gdb) s
26 void UDataMemory_init(UDataMemory *This) {
(gdb) s
27 uprv_memset(This, 0, sizeof(UDataMemory));
(gdb) s
26 void UDataMemory_init(UDataMemory *This) {
(gdb) s
27 uprv_memset(This, 0, sizeof(UDataMemory));
(gdb) s
28 }
(gdb) s
uprv_mapFile_2_6 (pData=0xbfffd1c0, path=0xbfffdad4 "./icudt26l_ucadata.icu")
at stat.h:358
358 {
(gdb) s
359 return __xstat (_STAT_VER, __path, __statbuf);
(gdb) s
358 {
(gdb) s
174 fd=open(path, O_RDONLY);
(gdb) s
175 if(fd==-1) {
(gdb) s
181 data=mmap(0, length, PROT_READ, MAP_SHARED, fd, 0);
(gdb) s
185 close(fd); /* no longer needed */
(gdb) s
181 data=mmap(0, length, PROT_READ, MAP_SHARED, fd, 0);
(gdb) s
185 close(fd); /* no longer needed */
^^^^^^^^^^^^^^^^^^^^ I DONT LIKE THIS but maybe is just me :-) shouldn't we have an open fd again, or that close should be there? :) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
(gdb) s 186 if(data==MAP_FAILED) { (gdb) 190 pData->map = (char *)data + length; (gdb) 191 pData->pHeader=(const DataHeader *)data; (gdb)