Mailing-List: contact cygwin-help AT sourceware DOT cygnus DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT sources DOT redhat DOT com Delivered-To: mailing list cygwin AT sources DOT redhat DOT com Message-ID: <39E59EC7.E28D8E82@Informatik.uni-oldenburg.de> Date: Thu, 12 Oct 2000 13:21:43 +0200 From: "Frank Moehle" Organization: University of Oldenburg, Germany X-Mailer: Mozilla 4.61 [en] (X11; U; SunOS 5.6 sun4u) X-Accept-Language: en MIME-Version: 1.0 To: Earnie Boyd , Heribert Dahms CC: cygwin AT sources DOT redhat DOT com Subject: Re: cooperation of cygwin and NuTCracker ?? References: <20001011134620 DOT 29289 DOT qmail AT web115 DOT yahoomail DOT com> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Earnie Boyd wrote: > > I don't know NuTCracker but I do see a problem. > > LIBRARIES = -l -lm > > > > The problem is that you've use -lm. Currently the libm.a is a symbolic link to > libcygwin.a and ld can't manage the same library with different names. Remove > the -lm and see if that helps. I removed the -lm line, but i still get the crash from the DLL that uses NuTCracker. Heribert Dahms wrote: > maybe you could create a separate, small executable using > NuTCracker which does interprocess communication to a > cygwin executable via sockets or files? Sorry Heribert, I do not have access to the NuTCracker development tools. Anyway, using IPC by socket or file communication is not involved into my problem. There are not even different processes, just dynamic libraries. The point is that we have this DLL which from an _external_ product that needs/uses the NuTCracker enviroment. We need to do direct functions calls into this DLL from a console application that is build using cygwin, and we need return values. To those of you who never heard about this "NuTCracker" thing: NuTCracker is "another" unix porting enviroment similar to cygwin. But it is also possible to port X11 application with NuTCracker, and it's also more expensive :-( Back to my problem: Now i have to sides, which both have different POSIX implementations. My hope is that these implementations do not interfere with each other, something like this our code + | anaport.dll (external) cygwin1.dll [DLL border] + (printf, malloc, etc) | NutCracker libc In fact, i do not even know if such a "DLL borderline" exists on NT. Is there some mechanism that allows a library to only export certain functions, and use some other external stuff privately only? Using "objdump -p" on the external DLL, i get a huge number of lines, starting with the one quoted below (second dump). What i understand is that the DLL needs a lot of "standard" function like printf, malloc, etc from another DLL called "nutlibc4.dll". Does this interfere with the function from cygwin1.dll, which our program is compiled against ?? btw, we are using cygwin 1.1.4 Thanks for any hints, Frank. ------------------------------------------------------------------------ $ objdump -p our_program.exe our_program.exe: file format pei-i386 Characteristics 0x7 relocations stripped executable line numbers stripped Time/Date Wed Oct 11 15:39:50 2000 ImageBase 00400000 SectionAlignment 00001000 FileAlignment 00000200 MajorOSystemVersion 4 MinorOSystemVersion 0 MajorImageVersion 1 MinorImageVersion 0 MajorSubsystemVersion 4 MinorSubsystemVersion 0 Win32Version 00000000 SizeOfImage 0008d000 SizeOfHeaders 00000400 CheckSum 00000000 Subsystem 00000003 (Windows CUI) DllCharacteristics 00000000 SizeOfStackReserve 02000000 SizeOfStackCommit 00001000 SizeOfHeapReserve 00100000 SizeOfHeapCommit 00001000 LoaderFlags 00000000 NumberOfRvaAndSizes 00000010 The Data Directory Entry 0 00000000 00000000 Export Directory [.edata (or where ever we found it)] Entry 1 00032000 000008b4 Import Directory [parts of .idata] Entry 2 00000000 00000000 Resource Directory [.rsrc] Entry 3 00000000 00000000 Exception Directory [.pdata] Entry 4 00000000 00000000 Security Directory Entry 5 00000000 00000000 Base Relocation Directory [.reloc] Entry 6 00000000 00000000 Debug Directory Entry 7 00000000 00000000 Description Directory Entry 8 00000000 00000000 Special Directory Entry 9 00000000 00000000 Thread Storage Directory [.tls] Entry a 00000000 00000000 Load Configuration Directory Entry b 00000000 00000000 Bound Import Directory Entry c 00000000 00000000 Import Address Table Directory Entry d 00000000 00000000 Delay Import Directory Entry e 00000000 00000000 Reserved Entry f 00000000 00000000 Reserved There is an import table in .idata at 0x432000 The Import Tables (interpreted .idata section contents) vma: Hint Time Forward DLL First Table Stamp Chain Name Thunk 00032000 00032054 00000000 00000000 00032824 000321a0 DLL Name: cygwin1.dll vma: Hint/Ord Member-Name 322e8 0 __assert 322f4 6 __errno 32300 24 __main 3230c 92 _ctype_ 32318 531 atoi 32320 540 calloc 3232c 556 close 32334 568 ctime 3233c 594 cygwin_internal 32350 611 dll_crt0__FP11per_process 3236c 638 exit 32374 648 fclose 32380 656 fflush 3238c 660 fgets 32394 661 fileno 323a0 669 fopen 323a8 672 fprintf 323b4 675 fread 323bc 676 free 323c4 680 fscanf 323d0 681 fseek 323d8 689 fwrite 323e4 695 getc 323ec 701 getenv 323f8 710 gethostname 32408 735 getuid 32414 765 isatty 32420 812 malloc 3242c 820 memcpy 32438 823 mkdir 32440 842 open 32448 852 pow 32450 854 printf 3245c 884 qsort 32464 893 realloc 32470 993 sprintf 3247c 998 sscanf 32488 1002 strcat 32494 1003 strchr 324a0 1004 strcmp 324ac 1006 strcpy 324b8 1008 strdup 324c4 1011 strlen 324d0 1015 strncmp 324dc 1016 strncpy 324e8 1018 strrchr 324f4 1022 strstr 32500 1025 strtok 3250c 1036 system 32518 1051 time 32520 1089 write The Import Address Table is identical 00032014 00032128 00000000 00000000 00032834 00032274 DLL Name: KERNEL32.dll vma: Hint/Ord Member-Name 32528 290 GetModuleHandleA The Import Address Table is identical 00032028 00032134 00000000 00000000 000328a8 00032280 DLL Name: anaport.dll vma: Hint/Ord Member-Name 3253c 0 stmm_close_session 32554 1 stmm_get_ac 32564 2 stmm_get_activity_parameters 32584 5 stmm_get_ch 32594 6 stmm_get_cm 325a4 7 stmm_get_cn 325b4 8 stmm_get_co 325c4 9 stmm_get_di 325d4 10 stmm_get_el 325e4 12 stmm_get_ev 325f4 14 stmm_get_id_type 32608 17 stmm_get_module_info 32620 20 stmm_get_scope_modules 3263c 21 stmm_get_st 3264c 22 stmm_get_used_affected 32668 24 stmm_list_add_element 32680 26 stmm_list_create 32694 30 stmm_list_first_element 326b0 31 stmm_list_get_elm_value 326cc 32 stmm_list_get_ith_element 326e8 34 stmm_list_length 326fc 35 stmm_list_next_element 32718 38 stmm_open_session 3272c 42 stmm_rpn_to_string 32744 43 stmm_which_chart The Import Address Table is identical 0003203c 00000000 00000000 00000000 00000000 00000000 ------------------------------------------------------------------------ (sorry for this long quote, i do not know with part ist important) ------------------------------------------------------------------------- $ objdump -p /cygdrive/c/stmm/misc/ANAPORT/anaport.dll /cygdrive/c/stmm/misc/ANAPORT/anaport.dll: file format pei-i386 Characteristics 0x2102 executable 32 bit words DLL Time/Date Wed Dec 22 15:45:43 1999 ImageBase 10000000 SectionAlignment 00001000 FileAlignment 00000200 MajorOSystemVersion 4 MinorOSystemVersion 0 MajorImageVersion 0 MinorImageVersion 0 MajorSubsystemVersion 4 MinorSubsystemVersion 0 Win32Version 00000000 SizeOfImage 00711000 SizeOfHeaders 00000400 CheckSum 00000000 Subsystem 00000003 (Windows CUI) DllCharacteristics 00000000 SizeOfStackReserve 00100000 SizeOfStackCommit 00001000 SizeOfHeapReserve 00100000 SizeOfHeapCommit 00001000 LoaderFlags 00000000 NumberOfRvaAndSizes 00000010 The Data Directory Entry 0 00568af0 00000510 Export Directory [.edata (or where ever we found it)] Entry 1 006d7000 00000078 Import Directory [parts of .idata] Entry 2 00000000 00000000 Resource Directory [.rsrc] Entry 3 00000000 00000000 Exception Directory [.pdata] Entry 4 00000000 00000000 Security Directory Entry 5 006d8000 0003714c Base Relocation Directory [.reloc] Entry 6 00559000 00000070 Debug Directory Entry 7 00000000 00000000 Description Directory Entry 8 00000000 00000000 Special Directory Entry 9 00000000 00000000 Thread Storage Directory [.tls] Entry a 00000000 00000000 Load Configuration Directory Entry b 00000000 00000000 Bound Import Directory Entry c 006d73a0 00000328 Import Address Table Directory Entry d 00000000 00000000 Delay Import Directory Entry e 00000000 00000000 Reserved Entry f 00000000 00000000 Reserved There is an import table in .idata at 0x106d7000 The Import Tables (interpreted .idata section contents) vma: Hint Time Forward DLL First Table Stamp Chain Name Thunk 006d7000 006d7394 00000000 00000000 006d76e6 006d76bc DLL Name: utillibstm_dll.dll vma: Hint/Ord Member-Name 6d76da 2 NT_mkdir 6d76c8 0 NT_create_file The Import Address Table is identical 006d7014 006d7078 00000000 00000000 006d76fa 006d73a0 DLL Name: LMGR326B.dll vma: Hint/Ord Member-Name 80000039 57 80000021 33 8000002b 43 80000031 49 8000002c 44 80000022 34 80000034 52 8000003d 61 80000027 39 8000003b 59 80000041 65 The Import Address Table is identical 006d7028 006d70a8 00000000 00000000 006d7d06 006d73d0 DLL Name: nutlibc4.dll vma: Hint/Ord Member-Name 6d7a8e 293 getuid 6d7ad6 559 sigaddset 6d7ae2 562 sigemptyset 6d7708 63 ___NutEnableFinish 6d771e 62 ___NutEnableExceptionFilter 6d773c 114 _except_handler3 6d7750 414 printf 6d775a 265 getenv 6d7764 488 putenv 6d776e 51 _NutWIN32getenv 6d7780 596 strcpy 6d778a 601 strlen 6d7794 593 strchr 6d779e 592 strcat 6d77a8 154 chdir 6d77b0 582 sprintf 6d77ba 227 fprintf 6d77c4 118 _iob 6d77cc 236 fscanf 6d77d6 116 _ftol 6d77de 136 atoi 6d77e6 594 strcmp 6d77f0 371 memcpy 6d77fa 609 strrchr 6d7804 262 getcwd 6d780e 84 ___NutSysErrList 6d7822 67 ___NutErrno 6d7830 375 mkdir 6d7838 587 sscanf 6d7842 283 getppid 6d784c 606 strncpy 6d7856 516 rindex 6d7860 206 fclose 6d786a 379 mktemp 6d7874 307 index 6d787c 224 fopen 6d7884 665 unlink 6d788e 212 fflush 6d7898 139 bcopy 6d78a0 297 getwd 6d78a8 103 __p__pctype 6d78b6 605 strncmp 6d78c0 218 fgets 6d78c8 588 stat 6d78d0 513 rewind 6d78da 214 fgetc 6d78e2 612 strstr 6d78ec 641 tempnam 6d78f6 607 strpbrk 6d7900 580 sleep 6d7908 38 _NutPathToWin32 6d791a 135 atof 6d7922 649 toupper 6d792c 648 tolower 6d7936 611 strspn 6d7940 133 asctime 6d794a 351 localtime 6d7956 230 fputs 6d795e 614 strtok 6d7968 628 system 6d7972 202 exit 6d797a 155 chmod 6d7982 359 malloc 6d798c 144 calloc 6d7996 4 ??2 AT YAPAXI@Z 6d79a6 5 ??3 AT YAXPAX@Z 6d79b6 120 _purecall 6d79c2 234 free 6d79ca 505 realloc 6d79d4 320 islower 6d79de 143 bzero 6d79e6 129 abs 6d79ec 493 qsort 6d79f4 313 isalpha 6d79fe 128 abort 6d7a06 643 time 6d7a0e 161 closedir 6d7a1a 501 readdir 6d7a24 404 opendir 6d7a2e 517 rmdir 6d7a36 243 ftell 6d7a3e 99 __getc 6d7a48 237 fseek 6d7a50 141 bsearch 6d7a5a 616 strtol 6d7a64 570 signal 6d7a6e 104 __putc 6d7a78 287 getpwuid 6d7a84 266 geteuid 6d7c96 366 mbtowc 6d7a98 282 getpid 6d7aa2 255 fwrite 6d7aac 723 write 6d7ab4 39 _NutPathToWin32FS 6d7ac8 591 strcasecmp 6d7cc0 360 mblen 6d7cc8 540 setlocale 6d7af0 573 sigprocmask 6d7afe 686 waitpid 6d7b08 354 longjmp 6d7b12 597 strcspn 6d7b1c 310 ioctl 6d7b24 675 vfprintf 6d7b30 158 clearerr 6d7b3c 229 fputc 6d7b44 233 fread 6d7b4c 403 open 6d7b54 164 creat 6d7b5c 160 close 6d7b64 500 read 6d7b6c 285 getpwnam 6d7b78 512 rename 6d7b82 670 utime 6d7b8a 138 bcmp 6d7b92 272 getgroups 6d7b9e 408 pause 6d7ba6 561 sigdelset 6d7bb2 29 _NutForkExeclp 6d7bc4 341 kill 6d7bcc 115 _exit 6d7bd4 131 alarm 6d7bdc 225 fork 6d7be4 589 statfs 6d7bee 166 ctime 6d7bf6 292 gettimeofday 6d7c06 85 ___NutSysNErr 6d7c16 123 _setjmp3 6d7c22 527 select 6d7c2c 315 isatty 6d7c36 413 popen 6d7c3e 409 pclose 6d7c48 365 mbstowcs 6d7c54 372 memmove 6d7c5e 373 memset 6d7c68 504 readv 6d7c70 724 writev 6d7c7a 207 fcntl 6d7c82 130 access 6d7c8c 713 wctomb 6d7d40 59 ___NutAtExitStaticCDone 6d7ca0 709 wcstombs 6d7cac 102 __p___mb_cur_max 6d7f6c 357 lseek 6d7f64 242 fsync 6d7cd4 370 memcmp 6d7cde 509 regfree 6d7ce8 508 regexec 6d7cf2 506 regcomp 6d7cfc 663 ungetc 6d7d14 64 ___NutEnablePrep1 6d7d28 57 ___NutAtExitRegister 6d7d5a 70 ___NutInitTerm 6d7d6c 56 ___NutAtExitInitBlock 6d7d84 71 ___NutIsForkedChild 6d7d9a 73 ___NutMarkDllMain 6d7dae 78 ___NutPrepareOptionBlock 6d7dca 93 ___NutValidateDllLoadAddress 6d7dea 82 ___NutRegisterModule 6d7e02 58 ___NutAtExitRunBlock 6d7e1a 92 ___NutUnregisterModule 6d7e34 79 ___NutProcDetachValidate 6d7e50 23 _NutDisableThreadLibraryCalls The Import Address Table is identical 006d703c 006d7334 00000000 00000000 006d7ec2 006d765c DLL Name: nutlibm4.dll vma: Hint/Ord Member-Name 6d7e70 52 fabs 6d7ea0 42 cos 6d7e78 93 sqrt 6d7e80 30 atan 6d7e88 17 ___NutHUGE_VAL 6d7e9a 89 sin 6d7ea6 95 tan 6d7eac 22 acos 6d7eb4 72 log10 6d7ebc 81 pow The Import Address Table is identical 006d7050 006d7360 00000000 00000000 006d7f56 006d7688 DLL Name: nutsock4.dll vma: Hint/Ord Member-Name 6d7eec 55 socket 6d7ed0 11 gethostname 6d7ede 53 setsockopt 6d7f42 27 htons 6d7ef6 3 connect 6d7f00 9 gethostbyname 6d7f10 19 getservbyname 6d7f20 16 getprotobyname 6d7f32 8 gethostbyaddr 6d7f4a 28 inet_addr 6d7f74 41 ntohl 6d7f7c 42 ntohs The Import Address Table is identical 006d7064 00000000 00000000 00000000 00000000 00000000 There is an export table in .rdata at 0x10568af0 The Export Tables (interpreted .rdata section contents) Export Flags 0 Time/Date stamp 3860f227 Major/Minor 0/0 Name 00568cda anaport.dll Ordinal Base 1 Number in: Export Address Table 0000002d [Name Pointer/Ordinal] Table 0000002d Table Addresses Export Address Table 00568b18 Name Pointer Table 00568bcc Ordinal Table 00568c80 Export Address Table -- Ordinal Base 1 [ 0] +base[ 1] 2bbd Export RVA [ 1] +base[ 2] 2b10 Export RVA [ 2] +base[ 3] 12c0 Export RVA [ 3] +base[ 4] 1772 Export RVA .... ..[MegaLines like the above one].. .... --------------------------------------------------------- -- ======================================================================= Frank Moehle | Understanding is a Work : Uni Oldenburg,Computer Architecture Group | three-edged sword. Inhouse: frankm AT haydn | (Vorlon saying) DOMAIN : Frank DOT Moehle AT Informatik DOT Uni-Oldenburg DOT DE +------------------- ----------------------------------------------------------------------- **** Its how you DO it, not how you don't. **** -- Want to unsubscribe from this list? Send a message to cygwin-unsubscribe AT sourceware DOT cygnus DOT com