diff --git a/dlls/avifil32/avifile.spec b/dlls/avifil32/avifile.spec index 316e9302945..08b7957bd67 100644 --- a/dlls/avifil32/avifile.spec +++ b/dlls/avifil32/avifile.spec @@ -1,5 +1,6 @@ name avifile type win16 +owner avifil32 1 stub WEP 2 stub DLLGETCLASSOBJECT diff --git a/dlls/commdlg/commdlg.spec b/dlls/commdlg/commdlg.spec index 8ec4bbc8329..3ce3a3d693d 100644 --- a/dlls/commdlg/commdlg.spec +++ b/dlls/commdlg/commdlg.spec @@ -1,5 +1,6 @@ name commdlg type win16 +owner comdlg32 1 pascal16 GetOpenFileName(segptr) GetOpenFileName16 2 pascal16 GetSaveFileName(segptr) GetSaveFileName16 diff --git a/dlls/gdi/dispdib.spec b/dlls/gdi/dispdib.spec index a9b6f8d0ee3..6c158fe0ddf 100644 --- a/dlls/gdi/dispdib.spec +++ b/dlls/gdi/dispdib.spec @@ -1,4 +1,5 @@ name dispdib type win16 +owner gdi32 1 pascal16 DISPLAYDIB(ptr ptr word) DisplayDib diff --git a/dlls/gdi/gdi.spec b/dlls/gdi/gdi.spec index cca7a8f1fa9..b5a119bcc47 100644 --- a/dlls/gdi/gdi.spec +++ b/dlls/gdi/gdi.spec @@ -2,6 +2,7 @@ name gdi type win16 heap 65488 # 65536 - 16 (instance data) - 32 (stock objects) file gdi.exe +owner gdi32 1 pascal SetBkColor(word long) SetBkColor16 2 pascal16 SetBkMode(word word) SetBkMode16 diff --git a/dlls/gdi/wing.spec b/dlls/gdi/wing.spec index 9477096bd28..b1a6858d067 100644 --- a/dlls/gdi/wing.spec +++ b/dlls/gdi/wing.spec @@ -1,5 +1,6 @@ name wing type win16 +owner gdi32 1001 pascal16 WINGCREATEDC() WinGCreateDC16 1002 pascal16 WINGRECOMMENDDIBFORMAT(ptr) WinGRecommendDIBFormat16 diff --git a/dlls/kernel/comm.spec b/dlls/kernel/comm.spec index 7447286c5a3..05267a1e31c 100644 --- a/dlls/kernel/comm.spec +++ b/dlls/kernel/comm.spec @@ -1,5 +1,6 @@ name comm type win16 +owner kernel32 1 stub INICOM 2 stub SETCOM diff --git a/dlls/kernel/kernel.spec b/dlls/kernel/kernel.spec index b7640e71f5d..5c0897a2ab1 100644 --- a/dlls/kernel/kernel.spec +++ b/dlls/kernel/kernel.spec @@ -1,6 +1,7 @@ name kernel type win16 file krnl386.exe +owner kernel32 # 1-207 are the basic functions, those are (with minor variations) # present in win31, win95 and nt351 diff --git a/dlls/kernel/stress.spec b/dlls/kernel/stress.spec index eefa433cc10..3cb450849d9 100644 --- a/dlls/kernel/stress.spec +++ b/dlls/kernel/stress.spec @@ -2,6 +2,7 @@ # name stress type win16 +owner kernel32 2 pascal allocmem(long) AllocMem 3 pascal freeallmem() FreeAllMem diff --git a/dlls/kernel/system.spec b/dlls/kernel/system.spec index 4e698cdb76c..98c28188cce 100644 --- a/dlls/kernel/system.spec +++ b/dlls/kernel/system.spec @@ -1,5 +1,6 @@ name system type win16 +owner kernel32 1 pascal InquireSystem(word word) InquireSystem16 2 pascal16 CreateSystemTimer(word segptr) WIN16_CreateSystemTimer diff --git a/dlls/kernel/toolhelp.spec b/dlls/kernel/toolhelp.spec index 6a204c059f3..3e6eb16028c 100644 --- a/dlls/kernel/toolhelp.spec +++ b/dlls/kernel/toolhelp.spec @@ -1,5 +1,6 @@ name toolhelp type win16 +owner kernel32 50 pascal16 GlobalHandleToSel(word) GlobalHandleToSel16 51 pascal16 GlobalFirst(ptr word) GlobalFirst16 diff --git a/dlls/kernel/win87em.spec b/dlls/kernel/win87em.spec index da00ef71e4a..b5615335111 100644 --- a/dlls/kernel/win87em.spec +++ b/dlls/kernel/win87em.spec @@ -1,5 +1,6 @@ name win87em type win16 +owner kernel32 1 register _fpMath() WIN87_fpmath 3 pascal16 __WinEm87Info(ptr word) WIN87_WinEm87Info diff --git a/dlls/kernel/windebug.spec b/dlls/kernel/windebug.spec index ecb14ba13b6..08db7571344 100644 --- a/dlls/kernel/windebug.spec +++ b/dlls/kernel/windebug.spec @@ -1,5 +1,6 @@ name windebug type win16 +owner kernel32 1 stub WINDEBUG 2 stub WEP diff --git a/dlls/kernel/wprocs.spec b/dlls/kernel/wprocs.spec index 5d8115a7863..cecd3d512bf 100644 --- a/dlls/kernel/wprocs.spec +++ b/dlls/kernel/wprocs.spec @@ -1,5 +1,6 @@ name wprocs type win16 +owner kernel32 23 pascal UTGlue16(ptr long ptr long) UTGlue16 27 pascal EntryAddrProc(word word) WIN16_NE_GetEntryPoint diff --git a/dlls/lzexpand/lzexpand.spec b/dlls/lzexpand/lzexpand.spec index 134347c046f..6c8a0f1b822 100644 --- a/dlls/lzexpand/lzexpand.spec +++ b/dlls/lzexpand/lzexpand.spec @@ -1,5 +1,6 @@ name lzexpand type win16 +owner lz32 1 pascal LZCopy(word word) LZCopy16 2 pascal16 LZOpenFile(str ptr word) LZOpenFile16 diff --git a/dlls/msacm/msacm.spec b/dlls/msacm/msacm.spec index 6740423ecbe..7cbd40d8606 100644 --- a/dlls/msacm/msacm.spec +++ b/dlls/msacm/msacm.spec @@ -1,5 +1,6 @@ name msacm type win16 +owner msacm32 1 stub WEP 2 stub DRIVERPROC diff --git a/dlls/msvideo/msvideo.spec b/dlls/msvideo/msvideo.spec index be95db57aa7..90b156f58ba 100644 --- a/dlls/msvideo/msvideo.spec +++ b/dlls/msvideo/msvideo.spec @@ -1,5 +1,6 @@ name msvideo type win16 +owner msvfw32 2 pascal VideoForWindowsVersion() VideoForWindowsVersion 20 stub VIDEOGETNUMDEVS diff --git a/dlls/ole32/compobj.spec b/dlls/ole32/compobj.spec index ab7dc4ad7f5..ef6e5fc3cfb 100644 --- a/dlls/ole32/compobj.spec +++ b/dlls/ole32/compobj.spec @@ -1,5 +1,6 @@ name compobj type win16 +owner ole32 1 pascal CoBuildVersion() CoBuildVersion 2 pascal CoInitialize(long) CoInitialize16 diff --git a/dlls/ole32/ole2.spec b/dlls/ole32/ole2.spec index f8a85738e89..cc2332eda8e 100644 --- a/dlls/ole32/ole2.spec +++ b/dlls/ole32/ole2.spec @@ -1,5 +1,6 @@ name ole2 type win16 +owner ole32 1 pascal OleBuildVersion() OleBuildVersion 2 pascal OleInitialize(ptr) OleInitialize diff --git a/dlls/ole32/ole2conv.spec b/dlls/ole32/ole2conv.spec index 1a33d71ff45..c8b87b800f4 100644 --- a/dlls/ole32/ole2conv.spec +++ b/dlls/ole32/ole2conv.spec @@ -1,5 +1,6 @@ name ole2conv type win16 +owner ole32 1 stub GETFILTERINFO 2 stub IMPORTGR diff --git a/dlls/ole32/ole2nls.spec b/dlls/ole32/ole2nls.spec index e6ccf9ad593..e3d381b3463 100644 --- a/dlls/ole32/ole2nls.spec +++ b/dlls/ole32/ole2nls.spec @@ -1,5 +1,6 @@ name ole2nls type win16 +owner ole32 1 pascal GetUserDefaultLCID() GetUserDefaultLCID 2 pascal GetSystemDefaultLCID() GetSystemDefaultLCID diff --git a/dlls/ole32/ole2prox.spec b/dlls/ole32/ole2prox.spec index 34201e05771..a8ba9cfef9e 100644 --- a/dlls/ole32/ole2prox.spec +++ b/dlls/ole32/ole2prox.spec @@ -1,5 +1,6 @@ name ole2prox type win16 +owner ole32 1 stub DLLGETCLASSOBJECT #2 WEP diff --git a/dlls/ole32/ole2thk.spec b/dlls/ole32/ole2thk.spec index e945a98b480..9956e677acc 100644 --- a/dlls/ole32/ole2thk.spec +++ b/dlls/ole32/ole2thk.spec @@ -1,5 +1,6 @@ name ole2thk type win16 +owner ole32 1 stub WEP 2 stub ROT16_ISRUNNING16 diff --git a/dlls/ole32/storage.spec b/dlls/ole32/storage.spec index 1bbbcf1e3c6..1827711701f 100644 --- a/dlls/ole32/storage.spec +++ b/dlls/ole32/storage.spec @@ -3,6 +3,7 @@ # result in dataloss. Do it at your own risk.) name storage type win16 +owner ole32 1 pascal StgCreateDocFileA(str long long ptr) StgCreateDocFile16 2 stub StgCreateDocFileOnILockBytes diff --git a/dlls/oleaut32/ole2disp.spec b/dlls/oleaut32/ole2disp.spec index 99d34cf1e52..91926e9c0d8 100644 --- a/dlls/oleaut32/ole2disp.spec +++ b/dlls/oleaut32/ole2disp.spec @@ -1,5 +1,6 @@ name ole2disp type win16 +owner oleaut32 1 stub DLLGETCLASSOBJECT 2 pascal SysAllocString(str) SysAllocString16 diff --git a/dlls/oleaut32/typelib.spec b/dlls/oleaut32/typelib.spec index d6bd90c8bbc..798980f3682 100644 --- a/dlls/oleaut32/typelib.spec +++ b/dlls/oleaut32/typelib.spec @@ -1,5 +1,6 @@ name typelib type win16 +owner oleaut32 2 stub CREATETYPELIB 3 pascal LoadTypeLib(ptr ptr) LoadTypeLib16 diff --git a/dlls/olecli/olecli.spec b/dlls/olecli/olecli.spec index bbe58d1a316..02cbc445947 100644 --- a/dlls/olecli/olecli.spec +++ b/dlls/olecli/olecli.spec @@ -1,5 +1,6 @@ name olecli type win16 +owner olecli32 #1 WEP 2 stub OLEDELETE diff --git a/dlls/olesvr/olesvr.spec b/dlls/olesvr/olesvr.spec index b9083a3a429..285acfbe2d4 100644 --- a/dlls/olesvr/olesvr.spec +++ b/dlls/olesvr/olesvr.spec @@ -1,5 +1,6 @@ name olesvr type win16 +owner olesvr32 #1 WEP 2 pascal OleRegisterServer(str ptr ptr word word) OleRegisterServer16 diff --git a/dlls/rasapi32/rasapi16.spec b/dlls/rasapi32/rasapi16.spec index 30decf47c3b..3d978cd2c0b 100644 --- a/dlls/rasapi32/rasapi16.spec +++ b/dlls/rasapi32/rasapi16.spec @@ -1,5 +1,6 @@ name rasapi16 type win16 +owner rasapi32 #1 stub WEP #2 stub DLLENTRYPOINT diff --git a/dlls/setupapi/setupx.spec b/dlls/setupapi/setupx.spec index 6aa71b99e01..b8003ccb6f7 100644 --- a/dlls/setupapi/setupx.spec +++ b/dlls/setupapi/setupx.spec @@ -1,5 +1,6 @@ name setupx type win16 +owner setupapi 1 stub WEP 2 stub IPOPEN diff --git a/dlls/shell32/shell.spec b/dlls/shell32/shell.spec index adafd39c929..e15e6578651 100644 --- a/dlls/shell32/shell.spec +++ b/dlls/shell32/shell.spec @@ -1,5 +1,6 @@ name shell type win16 +owner shell32 1 pascal RegOpenKey(long str ptr) RegOpenKey16 2 pascal RegCreateKey(long str ptr) RegCreateKey16 diff --git a/dlls/user/ddeml.spec b/dlls/user/ddeml.spec index 992c8b7fd24..362e9e1711c 100644 --- a/dlls/user/ddeml.spec +++ b/dlls/user/ddeml.spec @@ -1,5 +1,6 @@ name ddeml type win16 +owner user32 2 pascal16 DdeInitialize(ptr segptr long long) DdeInitialize16 3 pascal16 DdeUninitialize(long) DdeUninitialize16 diff --git a/dlls/user/display.spec b/dlls/user/display.spec index a325063e8ea..d1f0ecac644 100644 --- a/dlls/user/display.spec +++ b/dlls/user/display.spec @@ -1,5 +1,6 @@ name display type win16 +owner user32 rsrc disp 1 stub BitBlt diff --git a/dlls/user/keyboard.spec b/dlls/user/keyboard.spec index 9407b990028..e84bd1d26e0 100644 --- a/dlls/user/keyboard.spec +++ b/dlls/user/keyboard.spec @@ -1,5 +1,6 @@ name keyboard type win16 +owner user32 1 pascal16 Inquire(ptr) KEYBOARD_Inquire 2 pascal16 Enable(segptr ptr) WIN16_KEYBOARD_Enable diff --git a/dlls/user/mouse.spec b/dlls/user/mouse.spec index ef4d8dca23b..06e31f99fc3 100644 --- a/dlls/user/mouse.spec +++ b/dlls/user/mouse.spec @@ -1,5 +1,6 @@ name mouse type win16 +owner user32 rsrc mouserc 1 pascal16 Inquire(ptr) MOUSE_Inquire diff --git a/dlls/user/user.spec b/dlls/user/user.spec index cab5a9dc1c0..af62daea775 100644 --- a/dlls/user/user.spec +++ b/dlls/user/user.spec @@ -2,6 +2,7 @@ name user type win16 heap 65520 file user.exe +owner user32 1 pascal16 MessageBox(word str str word) MessageBox16 2 stub OldExitWindows diff --git a/dlls/version/ver.spec b/dlls/version/ver.spec index 8f4757e12cb..99d82a71b8a 100644 --- a/dlls/version/ver.spec +++ b/dlls/version/ver.spec @@ -1,5 +1,6 @@ name ver type win16 +owner version #1 DLLENTRYPOINT diff --git a/dlls/win32s/w32sys.spec b/dlls/win32s/w32sys.spec index 69b02e6e056..1df93f7158e 100644 --- a/dlls/win32s/w32sys.spec +++ b/dlls/win32s/w32sys.spec @@ -1,5 +1,6 @@ name w32sys type win16 +owner w32skrnl #1 WEP 2 pascal16 IsPeFormat(str word) IsPeFormat16 diff --git a/dlls/win32s/win32s16.spec b/dlls/win32s/win32s16.spec index fd4c46fdee1..e995c979e4c 100644 --- a/dlls/win32s/win32s16.spec +++ b/dlls/win32s/win32s16.spec @@ -1,5 +1,6 @@ name win32s16 type win16 +owner w32skrnl 1 stub WEP 2 pascal16 BootTask() BootTask16 diff --git a/dlls/winaspi/winaspi.spec b/dlls/winaspi/winaspi.spec index a7cbf91410d..83b7aa47183 100644 --- a/dlls/winaspi/winaspi.spec +++ b/dlls/winaspi/winaspi.spec @@ -1,5 +1,6 @@ name winaspi type win16 +owner wnaspi32 1 pascal16 GetASPISupportInfo() GetASPISupportInfo16 2 pascal16 SendASPICommand(segptr) SendASPICommand16 diff --git a/dlls/wineps/wineps16.spec b/dlls/wineps/wineps16.spec index 33c2089c0bd..20829f0ab48 100644 --- a/dlls/wineps/wineps16.spec +++ b/dlls/wineps/wineps16.spec @@ -1,5 +1,6 @@ name wineps16 type win16 +owner wineps 13 pascal16 DeviceMode(word word str str) PSDRV_DeviceMode16 90 pascal16 ExtDeviceMode(word word ptr str str ptr str word) PSDRV_ExtDeviceMode16 diff --git a/dlls/winmm/mmsystem.spec b/dlls/winmm/mmsystem.spec index 50f0d2110e6..5c8d669adcd 100644 --- a/dlls/winmm/mmsystem.spec +++ b/dlls/winmm/mmsystem.spec @@ -1,5 +1,6 @@ name mmsystem type win16 +owner winmm #1 pascal MMSYSTEM_WEP(word word word ptr) MMSYSTEM_WEP 2 pascal sndPlaySound(ptr word) sndPlaySound16 diff --git a/dlls/winmm/sound.spec b/dlls/winmm/sound.spec index 4ca367afc6a..2b36f113fbf 100644 --- a/dlls/winmm/sound.spec +++ b/dlls/winmm/sound.spec @@ -1,5 +1,6 @@ name sound type win16 +owner winmm 1 pascal16 OpenSound() OpenSound16 2 pascal16 CloseSound() CloseSound16 diff --git a/dlls/winsock/winsock.spec b/dlls/winsock/winsock.spec index 6e754640e67..6d48006837b 100644 --- a/dlls/winsock/winsock.spec +++ b/dlls/winsock/winsock.spec @@ -5,6 +5,7 @@ # name winsock type win16 +owner ws2_32 1 pascal16 accept(word ptr ptr) WINSOCK_accept16 2 pascal16 bind(word ptr word) WINSOCK_bind16 diff --git a/include/builtin16.h b/include/builtin16.h index 3142e158c56..25da53fc10f 100644 --- a/include/builtin16.h +++ b/include/builtin16.h @@ -78,6 +78,7 @@ typedef struct int module_size; /* Size of the module data */ const BYTE *code_start; /* 32-bit address of DLL code */ const BYTE *data_start; /* 32-bit address of DLL data */ + const char *owner; /* 32-bit dll that contains this dll */ const void *rsrc; /* resources data */ } BUILTIN16_DESCRIPTOR; diff --git a/tools/winebuild/build.h b/tools/winebuild/build.h index 38de5ea0dd7..ac62ec40671 100644 --- a/tools/winebuild/build.h +++ b/tools/winebuild/build.h @@ -162,6 +162,7 @@ extern char DLLName[80]; extern char DLLFileName[80]; extern char DLLInitFunc[80]; extern char rsrc_name[80]; +extern char owner_name[80]; extern char *DLLImports[MAX_IMPORTS]; extern const char *input_file_name; extern const char *output_file_name; diff --git a/tools/winebuild/main.c b/tools/winebuild/main.c index ec1df7fbde0..1cb5776287f 100644 --- a/tools/winebuild/main.c +++ b/tools/winebuild/main.c @@ -46,6 +46,7 @@ char DLLFileName[80]; char DLLInitFunc[80]; char *DLLImports[MAX_IMPORTS]; char rsrc_name[80]; +char owner_name[80]; const char *input_file_name; const char *output_file_name; diff --git a/tools/winebuild/parser.c b/tools/winebuild/parser.c index 7d05f8cd5d2..12a5c9336ee 100644 --- a/tools/winebuild/parser.c +++ b/tools/winebuild/parser.c @@ -467,6 +467,12 @@ SPEC_TYPE ParseTopLevel( FILE *file ) strcpy( rsrc_name, GetToken() ); strcat( rsrc_name, "_ResourceDescriptor" ); } + else if (strcmp(token, "owner") == 0) + { + if (SpecType != SPEC_WIN16) + fatal_error( "Owner only supported for Win16 spec files\n" ); + strcpy( owner_name, GetToken() ); + } else if (strcmp(token, "@") == 0) { if (SpecType != SPEC_WIN32) @@ -490,6 +496,9 @@ SPEC_TYPE ParseTopLevel( FILE *file ) } if (SpecType == SPEC_INVALID) fatal_error( "Missing 'type' declaration\n" ); + if (SpecType == SPEC_WIN16 && !owner_name[0]) + fatal_error( "'owner' not specified for Win16 dll\n" ); + current_line = 0; /* no longer parsing the input file */ return SpecType; } diff --git a/tools/winebuild/spec16.c b/tools/winebuild/spec16.c index 5541706b4fc..f8e39be8848 100644 --- a/tools/winebuild/spec16.c +++ b/tools/winebuild/spec16.c @@ -707,6 +707,7 @@ void BuildSpec16File( FILE *outfile ) fprintf( outfile, " sizeof(Module),\n" ); fprintf( outfile, " (BYTE *)&Code_Segment,\n" ); fprintf( outfile, " (BYTE *)Data_Segment,\n" ); + fprintf( outfile, " \"%s\",\n", owner_name ); fprintf( outfile, " %s\n", rsrc_name[0] ? rsrc_name : "0" ); fprintf( outfile, "};\n" );