|
|
1.1 ! root 1: ! 2: ;dynlib.def ! 3: ;provides the linker and loader with info about the dll ! 4: ! 5: ; This file needs to specify that segment ETHEL contains NONSHARED data and ! 6: ; that segment FRED contains SHARED data. You might think that you could ! 7: ; say ! 8: ; SEGMENTS ! 9: ; ETHEL CLASS 'FAR DATA' NONSHARED ! 10: ; FRED CLASS 'FAR DATA' SHARED ! 11: ; ! 12: ; and be done with it. This would be fine except that the ! 13: ; C compiler generates null segments ETHEL_CONST, ETHEL_BSS, FRED_CONST, ! 14: ; and FRED_BSS. These are placed in GROUPS: ! 15: ; ! 16: ; ETHEL_GROUP GROUP ETHEL_CONST, ETHEL_BSS, ETHEL ! 17: ; FRED_GROUP GROUP FRED_CONST, FRED_BSS, FRED ! 18: ; ! 19: ; The linker sees the segment definitions in this module first and in the ! 20: ; sequence given here. If only the non-null segments (FRED and ETHEL) ! 21: ; were defined here then the linker would be confused by seeing the ! 22: ; segment definitions for ETHEL_GROUP and FRED_GROUP interspersed ! 23: ; (when it encountered the definitions of the null segments in the ! 24: ; C modules). ! 25: ; ! 26: ; So...... ! 27: ; Define attributes for all of the segments in your C modules for the dll ! 28: ; here, in GROUP sequence. ! 29: ! 30: ; In fact, it is possible to get away with only using SEGMENTS to define ! 31: ; the attributes of the non-default segments. In this case, there is no ! 32: ; need to name FRED at all (even at compile-time). Then, the default ! 33: ; shared data will be placed in the library's DGROUP and the non-shared ! 34: ; data will be placed in ETHEL. ! 35: ! 36: ! 37: LIBRARY DYNLIB INITINSTANCE ; required to specify the dynamic lib name ! 38: ; INITGLOBAL = one-time initialization ! 39: ; i.e. library initialization is run once. ! 40: ; INITINSTANCE = instance initialization ! 41: ; i.e. library initialization is run ! 42: ; once for each application that establishes ! 43: ; a link to it. ! 44: ; default is INITGLOBAL ! 45: ! 46: PROTMODE ; protected mode only ! 47: DATA SHARED ; make the default to share data segments ! 48: ! 49: SEGMENTS ! 50: ETHEL_CONST CLASS 'FAR_DATA' NONSHARED ! 51: ETHEL_BSS CLASS 'FAR_DATA' NONSHARED ! 52: ETHEL CLASS 'FAR_DATA' NONSHARED ! 53: FRED_CONST CLASS 'FAR_DATA' SHARED ! 54: FRED_BSS CLASS 'FAR_DATA' SHARED ! 55: FRED CLASS 'FAR_DATA' SHARED ! 56: ! 57: EXPORTS PRINTDATA ; entry point for the dynamic link library
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.