16BitSeparation

16-Bit Separation

Lots of Windows DLLs come in two flavors:

Wine provides them by bundling the two DLL formats into the same Unix file. There's a Wine configuration option (--disable-win16) which only compiles the 32-bit version of the DLLs.

However, in some cases, the 16-bit and 32-bit implementations are so tightly bound that lots of old 16-bit code remains in the 32-bit DLL.

For the 64-bit evolution of the project, the 16-bit code must be made optional in the Wine tree.

  • one could think of a Wine CE project for example
  • we still use some 16-bit DLLs even for simple graphical apps


Todo list

  • This list expects that the internal name of all 16-bit functions end with "16("
    • The correct way requires parsing the internal names from the .spec files of all 16-bit DLLs
  • This list expects that 16-bit source files are listed in C_SRCS16
    • In Makefile.in, the source files listed in C_SRCS for the 32-bit DLL includes sometimes source files for implementing a 16-bit DLL.


Lists

  • A verbose list is also available

  • The script 16bit.sh was used to generate the lists

Generated from wine-1.1.36 on 2010-01-08

Move a file, that is used only for 16-Bit

  • (./) Finished

Files to move: 0

Do not load a 16-Bit DLL from a 32-Bit DLL

  • => grep "LoadLibrary16("

  • => grep "GetModuleHandle16("

    • dlls/winedos and 16-Bit dlls are excluded

    (./) Finished

Accessing a 16-Bit DLL: 0

Do not use a 16-Bit include in a 32-Bit file

  • => grep "#include.*wownt32"

  • => grep "#include.*wine/.*16.h"

  • => grep "#include.*wine/winaspi"

    • dlls/winedos and 16-Bit dlls are excluded
  • dlls/comdlg32/cdlg.h: 1 include
  • dlls/dbghelp/cpu_i386.c: 1 include
  • dlls/dbghelp/cpu_ppc.c: 1 include
  • dlls/dbghelp/cpu_x86_64.c: 1 include
  • dlls/gdi32/dc.c: 1 include
  • dlls/gdi32/dib.c: 1 include
  • dlls/gdi32/driver.c: 1 include
  • dlls/gdi32/font.c: 1 include
  • dlls/gdi32/mapping.c: 1 include
  • dlls/gdi32/mfdrv/objects.c: 2 includes
  • dlls/gdi32/mfdrv/text.c: 1 include
  • dlls/kernel32/kernel_main.c: 1 include
  • dlls/mciavi32/private_mciavi.h: 1 include
  • dlls/mcicda/mcicda.c: 1 include
  • dlls/mciqtz32/mciqtz.c: 1 include
  • dlls/mciseq/mcimidi.c: 1 include
  • dlls/mciwave/mciwave.c: 1 include
  • dlls/ole32/storage32.c: 1 include
  • dlls/olecli32/olecli_main.c: 2 includes
  • dlls/user32/cursoricon.c: 2 includes
  • dlls/user32/exticon.c: 1 include
  • dlls/user32/mdi.c: 1 include
  • dlls/user32/misc.c: 1 include
  • dlls/user32/sysparams.c: 1 include
  • dlls/version/resource.c: 1 include
  • dlls/w32skrnl/w32skernel.c: 1 include
  • dlls/winecrt0/exe16_entry.c: 2 includes
  • dlls/wineesd.drv/audio.c: 1 include
  • dlls/wineps.drv/driver.c: 2 includes
  • dlls/wineps.drv/escape.c: 1 include
  • dlls/winex11.drv/brush.c: 1 include
  • dlls/winex11.drv/mouse.c: 1 include
  • dlls/winex11.drv/x11font.h: 1 include
  • dlls/winmm/mci.c: 1 include
  • dlls/winspool.drv/info.c: 1 include
  • dlls/wow32/wow_main.c: 1 include

Accessing a 16-Bit include: 41

Do not implement or use a 16-Bit function in a 32-Bit file

  • => grep "16("

    • dlls/winedos and 16-Bit dlls are excluded
  • dlls/comdlg32/fontdlg.c: 1 entry
  • dlls/gdi32/driver.c: 5 entries
  • dlls/kernel32/module.c: 3 entries
  • dlls/shell32/control.c: 1 entry
  • dlls/user32/class.c: 3 entries
  • dlls/user32/mdi.c: 1 entry
  • dlls/version/info.c: 3 entries
  • dlls/winecrt0/exe16_entry.c: 4 entries
  • dlls/winex11.drv/xfont.c: 2 entries
  • dlls/winmm/driver.c: 1 entry
  • dlls/winmm/mci.c: 1 entry
  • dlls/winmm/winmm.c: 1 entry
  • dlls/winspool.drv/info.c: 2 entries
  • dlls/wow32/wow_main.c: 22 entries

Lines with "16(": 50


History

  • Generated from wine-1.1.36 on 2010-01-08
    • Files to move: 0
    • Accessing a 16-Bit DLL: 0
    • Accessing a 16-Bit include: 41
    • Lines with "16(": 50
  • Generated from wine-1.1.35 on 2009-12-22
    • Files to move: 4
    • Accessing a 16-Bit DLL: 24
    • Accessing a 16-Bit include: 86
    • Lines with "16(": 696
  • Generated from wine-1.1.34 on 2009-12-07
    • Files to move: 6
    • Accessing a 16-Bit DLL: 25
    • Accessing a 16-Bit include: 108
    • Lines with "16(": 934


CategoryJanitorialProjects

16BitSeparation (last edited 2010-01-15 18:41:57 by DetlefRiekenberg)