Comment: These are patches to produce the Andrew component of the X.V11R4 distribution, patch level 9 Andrew-Patch: 9 Date: Tue, 8 Jan 1991 09:20:37 -0500 (EST) Date-span: 90/11/20 13:51:04 through 91/1/8 09:00:53 Bugs addressed: Count of patched files: 35 RCS logs: Source file: overhead/class/cmd/Imakefile Current version: 2.18 revision 2.18 date: 91/01/04 18:26:48; author: gk5g; state: Exp; lines added/del: 9/3 Link dofix & dotest against the resolver library because libclass.a now contains undefined resolver symbols due to the fact the the resolver code is now in runapp. Source file: overhead/class/cmd/dotest.c Current version: 2.4 Source file: overhead/class/machdep/aix_i386/Imakefile Current version: 1.11 revision 1.11 date: 91/01/07 23:09:52; author: gk5g; state: Exp; lines added/del: 1/1 NM needs to see the RESOLVER_LIB first. ---------------------------- revision 1.10 date: 91/01/07 19:58:28; author: gk5g; state: Exp; lines added/del: 23/18 Previously I removed RESOLVER_LIB from the creation of libcx.a. That caused some error messages when we try to remove the symbols in DelList._ from libcx.a. Now we do use RESOLVER_LIB when creating libcx.a and we only extract the modules from libresolv.a if RESOLVER_LIB is defined to be a non-empty string. Defined a RESOLVER_CMD that does that conditional extraction of the resolver modules -- it runs in a sub-shell (/bin/sh). ---------------------------- revision 1.9 date: 91/01/07 13:43:37; author: gk5g; state: Exp; lines added/del: 1/4 Do not use the resolver library in the creation of libcx.a because all of the resolver is going into runapp. If only part of the resolver was going into runapp we would have had to put it into libcx.a and then removed whatever modules were listed in DelList._. ---------------------------- revision 1.8 date: 91/01/04 14:05:21; author: gk5g; state: Exp; lines added/del: 12/3 Changed the creation of libcx.a and globalrefs._h to handle the case where the resolver code is not only in libc.a but in it's own library. The resolver must go into runapp because it contains internal data and we can't have multiple copies of the code in a single image. Source file: overhead/class/machdep/aix_i386/getlist.awk Current version: 1.4 revision 1.4 date: 91/01/07 13:34:13; author: gk5g; state: Exp; lines added/del: 102/99 Parsed out the name of the library containing the module that defines a particular entry-point. A single module-name may exist in two different libraries so we need to distinguish between them by keeping track of the library-name/module-name pair. ---------------------------- revision 1.3 date: 90/12/21 16:41:08; author: gk5g; state: Exp; lines added/del: 39/0 Added resolver symbols to getlist.awk to be collected into globalrefs._h. The resolver code is now in runapp. Source file: overhead/class/machdep/i386_mach/Imakefile Current version: 1.6 revision 1.6 date: 91/01/07 22:55:03; author: gk5g; state: Exp; lines added/del: 1/1 NM needs to see the RESOLVER_LIB first. ---------------------------- revision 1.5 date: 91/01/07 20:27:07; author: gk5g; state: Exp; lines added/del: 20/15 Previously I removed RESOLVER_LIB from the creation of libcx.a. That caused some error messages when we try to remove the symbols in DelList._ from libcx.a. Now we do use RESOLVER_LIB when creating libcx.a and we only extract the modules from libresolv.a if RESOLVER_LIB is defined to be a non-empty string. Defined a RESOLVER_CMD that does that conditional extraction of the resolver modules -- it runs in a sub-shell (/bin/sh). Also trying to make the way libcx.a is created consistent across os-types. ---------------------------- revision 1.4 date: 91/01/07 13:51:09; author: gk5g; state: Exp; lines added/del: 1/4 Do not use the resolver library in the creation of libcx.a because all of the resolver is going into runapp. If only part of the resolver was going into runapp we would have had to put it into libcx.a and then removed whatever modules were listed in DelList._. ---------------------------- revision 1.3 date: 91/01/04 13:37:29; author: gk5g; state: Exp; lines added/del: 22/9 Changed the creation of libcx.a and globalrefs._h to handle the case where the resolver code is not only in libc.a but in it's own library. The resolver must go into runapp because it contains internal data and we can't have multiple copies of the code in a single image. Source file: overhead/class/machdep/i386_mach/getlist.awk Current version: 1.4 revision 1.4 date: 91/01/07 22:54:11; author: gk5g; state: Exp; lines added/del: 2/1 Fixed bug with missing braces around first if-statement. ---------------------------- revision 1.3 date: 91/01/04 13:44:37; author: gk5g; state: Exp; lines added/del: 114/112 Since there can be two modules with the same name in two different libraries (libresolv.a & libc.a) we need to distinguish each module-name wrt the libraries they came from. Hairy script. ---------------------------- revision 1.2 date: 90/12/21 16:58:02; author: gk5g; state: Exp; lines added/del: 39/0 Added resolver symbols to getlist.awk to be collected into globalrefs._h. The resolver code is now in runapp. Source file: overhead/class/machdep/aix_rt/Imakefile Current version: 1.15 revision 1.15 date: 91/01/07 23:11:02; author: gk5g; state: Exp; lines added/del: 1/1 NM needs to see the RESOLVER_LIB first. ---------------------------- revision 1.14 date: 91/01/07 20:34:56; author: gk5g; state: Exp; lines added/del: 1/1 Forgot to put $(RESOLVER_LIB) in the dependancy list for libcx.a. ---------------------------- revision 1.13 date: 91/01/07 20:11:47; author: gk5g; state: Exp; lines added/del: 24/20 Previously I removed RESOLVER_LIB from the creation of libcx.a. That caused some error messages when we try to remove the symbols in DelList._ from libcx.a. Now we do use RESOLVER_LIB when creating libcx.a and we only extract the modules from libresolv.a if RESOLVER_LIB is defined to be a non-empty string. Defined a RESOLVER_CMD that does that conditional extraction of the resolver modules -- it runs in a sub-shell (/bin/sh). Also trying to make the way libcx.a is created consistent across os-types. ---------------------------- revision 1.12 date: 91/01/07 13:46:38; author: gk5g; state: Exp; lines added/del: 1/4 Do not use the resolver library in the creation of libcx.a because all of the resolver is going into runapp. If only part of the resolver was going into runapp we would have had to put it into libcx.a and then removed whatever modules were listed in DelList._. ---------------------------- revision 1.11 date: 91/01/04 12:41:05; author: gk5g; state: Exp; lines added/del: 12/3 Changed the creation of libcx.a and globalrefs._h to handle the case where the resolver code is not only in libc.a but in it's own library. The resolver must go into runapp because it contains internal data and we can't have multiple copies of the code in a single image. Source file: overhead/class/machdep/aix_rt/getlist.awk Current version: 1.4 revision 1.4 date: 91/01/07 22:41:36; author: gk5g; state: Exp; lines added/del: 2/1 Fixed bug with the if-statement that sets up the definer array and the library array. Did not have curly-brackets around BOTH assignment statements. This was causing the library array to be assigned to for each symbol that was not UNDEFINED. This was a killer bug because it forced resolver symbols that are suppose to be in runapp only, to be in libcx.a as well. This just can't be, espcially on SYSV derivative os-types. ---------------------------- revision 1.3 date: 91/01/04 12:37:32; author: gk5g; state: Exp; lines added/del: 114/112 Since there can be two modules with the same name in two different libraries (libresolv.a & libc.a) we need to distinguish each module-name wrt the libraries they came from. Hairy script. ---------------------------- revision 1.2 date: 90/12/21 16:44:01; author: gk5g; state: Exp; lines added/del: 39/0 Added resolver symbols to getlist.awk to be collected into globalrefs._h. The resolver code is now in runapp. Source file: overhead/class/machdep/aos_rt/getlist.awk Current version: 1.4 revision 1.4 date: 91/01/07 22:36:15; author: gk5g; state: Exp; lines added/del: 2/1 Fixed bug with the if-statement that sets up the definer array and the library array. Did not have curly-brackets around BOTH assignment statements. This was causing the library array to be assigned to for each symbol that was not UNDEFINED. This was a killer bug because it forced resolver symbols that are suppose to be in runapp only, to be in libcx.a as well. This just can't be, espcially on SYSV derivative os-types. ---------------------------- revision 1.3 date: 91/01/04 12:12:07; author: gk5g; state: Exp; lines added/del: 115/113 Now grab resolver entry-points because the resolver now goes into runapp. As well, since there can be two modules with the same name in two different libraries (libresolv.a & libc.a) we need to distinguish each module-name wrt the libraries they came from. Hairy script. ---------------------------- revision 1.2 date: 90/12/21 16:46:25; author: gk5g; state: Exp; lines added/del: 39/0 Added resolver symbols to getlist.awk to be collected into globalrefs._h. The resolver code is now in runapp. Source file: overhead/class/machdep/aos_rt/Imakefile Current version: 1.11 revision 1.11 date: 91/01/07 22:43:42; author: gk5g; state: Exp; lines added/del: 1/1 The order of args to NM should be RESOLVER_LIB, libc.a, libhack.a. getlist.awk needs to see the resolver symbols first. ---------------------------- revision 1.10 date: 91/01/07 20:00:15; author: gk5g; state: Exp; lines added/del: 2/1 Instead of archiving /lib/crt0.o we copy it into the temporary subdir. This way we can just create libcx.a from each .o module in the temp subdir without worrying if we have extracted any resolver modules or not. ---------------------------- revision 1.9 date: 91/01/07 19:38:27; author: gk5g; state: Exp; lines added/del: 19/15 Previously I removed RESOLVER_LIB from the creation of libcx.a. That caused some error messages when we try to remove the symbols in DelList._ from libcx.a. Now we do use RESOLVER_LIB when creating libcx.a and we only extract the modules from libresolv.a if RESOLVER_LIB is defined to be a non-empty string. Defined a RESOLVER_CMD that does that conditional extraction of the resolver modules -- it runs in a sub-shell (/bin/sh). ---------------------------- revision 1.8 date: 91/01/04 23:36:55; author: gk5g; state: Exp; lines added/del: 2/5 Removed RESOLVER_LIB from the creation of libcx.a. ---------------------------- revision 1.7 date: 91/01/04 16:37:08; author: gk5g; state: Exp; lines added/del: 1/1 Only extract modules from RESOLVLIB if RESOLVLIB is a non-empty string and RESOLVER_ENV is defined. This change was made to the macro RESOLVER_CMD. ---------------------------- revision 1.6 date: 91/01/04 12:09:08; author: gk5g; state: Exp; lines added/del: 22/9 Changed the creation of libcx.a and globalrefs._h to handle the case where the resolver code is not in libc.a but in it's own library. The resolver must go into runapp because it contains internal data and we can't have multiple copies of the code in a single image. Source file: overhead/class/machdep/apollo_68k/makedo.csh Current version: 1.1 Source file: overhead/class/machdep/dec_mips/Imakefile Current version: 1.12 revision 1.12 date: 91/01/07 22:48:34; author: gk5g; state: Exp; lines added/del: 2/2 NM needs to see the RESOLVER_LIB first. ---------------------------- revision 1.11 date: 91/01/07 20:20:18; author: gk5g; state: Exp; lines added/del: 15/10 Previously I removed RESOLVER_LIB from the creation of libcx.a. That caused some error messages when we try to remove the symbols in DelList._ from libcx.a. Now we do use RESOLVER_LIB when creating libcx.a and we only extract the modules from libresolv.a if RESOLVER_LIB is defined to be a non-empty string. Defined a RESOLVER_CMD that does that conditional extraction of the resolver modules -- it runs in a sub-shell (/bin/sh). Also trying to make the way libcx.a is created consistent across os-types. ---------------------------- revision 1.10 date: 91/01/07 13:48:26; author: gk5g; state: Exp; lines added/del: 1/4 Do not use the resolver library in the creation of libcx.a because all of the resolver is going into runapp. If only part of the resolver was going into runapp we would have had to put it into libcx.a and then removed whatever modules were listed in DelList._. ---------------------------- revision 1.9 date: 91/01/04 14:23:15; author: gk5g; state: Exp; lines added/del: 12/3 Changed the creation of libcx.a and globalrefs._h to handle the case where the resolver code is not only in libc.a but in it's own library. The resolver must go into runapp because it contains internal data and we can't have multiple copies of the code in a single image. Source file: overhead/class/machdep/dec_mips/doload.c Current version: 1.15 revision 1.15 date: 90/11/28 15:00:23; author: susan; state: Exp; lines added/del: 1/2 moved andrewos.h to be first include file. Source file: overhead/class/machdep/dec_mips/getlist.awk Current version: 1.6 revision 1.6 date: 91/01/07 22:49:33; author: gk5g; state: Exp; lines added/del: 2/1 Fixed bug with missing braces around first if-statement. ---------------------------- revision 1.5 date: 91/01/04 14:28:41; author: gk5g; state: Exp; lines added/del: 114/112 Since there can be two modules with the same name in two different libraries (libresolv.a & libc.a) we need to distinguish each module-name wrt the libraries they came from. Hairy script. ---------------------------- revision 1.4 date: 90/12/21 16:53:52; author: gk5g; state: Exp; lines added/del: 39/0 Added resolver symbols to getlist.awk to be collected into globalrefs._h. The resolver code is now in runapp. Source file: overhead/class/machdep/dec_vax/Imakefile Current version: 1.9 revision 1.9 date: 91/01/07 22:51:39; author: gk5g; state: Exp; lines added/del: 1/1 NM needs to see the RESOLVER_LIB first. ---------------------------- revision 1.8 date: 91/01/07 20:23:58; author: gk5g; state: Exp; lines added/del: 20/15 Previously I removed RESOLVER_LIB from the creation of libcx.a. That caused some error messages when we try to remove the symbols in DelList._ from libcx.a. Now we do use RESOLVER_LIB when creating libcx.a and we only extract the modules from libresolv.a if RESOLVER_LIB is defined to be a non-empty string. Defined a RESOLVER_CMD that does that conditional extraction of the resolver modules -- it runs in a sub-shell (/bin/sh). Also trying to make the way libcx.a is created consistent across os-types. ---------------------------- revision 1.7 date: 91/01/07 13:49:26; author: gk5g; state: Exp; lines added/del: 1/4 Do not use the resolver library in the creation of libcx.a because all of the resolver is going into runapp. If only part of the resolver was going into runapp we would have had to put it into libcx.a and then removed whatever modules were listed in DelList._. ---------------------------- revision 1.6 date: 91/01/04 13:12:27; author: gk5g; state: Exp; lines added/del: 22/9 Changed the creation of libcx.a and globalrefs._h to handle the case where the resolver code is not only in libc.a but in it's own library. The resolver must go into runapp because it contains internal data and we can't have multiple copies of the code in a single image. Source file: overhead/class/machdep/dec_vax/getlist.awk Current version: 1.4 revision 1.4 date: 91/01/07 22:50:54; author: gk5g; state: Exp; lines added/del: 2/1 Fixed bug with missing braces around first if-statement. ---------------------------- revision 1.3 date: 91/01/04 13:14:06; author: gk5g; state: Exp; lines added/del: 115/113 Since there can be two modules with the same name in two different libraries (libresolv.a & libc.a) we need to distinguish each module-name wrt the libraries they came from. Hairy script. ---------------------------- revision 1.2 date: 90/12/21 16:54:56; author: gk5g; state: Exp; lines added/del: 39/0 Added resolver symbols to getlist.awk to be collected into globalrefs._h. The resolver code is now in runapp. Source file: overhead/class/machdep/hp_68k/Imakefile Current version: 1.10 revision 1.10 date: 91/01/07 22:53:14; author: gk5g; state: Exp; lines added/del: 1/1 NM needs to see the RESOLVER_LIB first. ---------------------------- revision 1.9 date: 91/01/07 20:40:24; author: gk5g; state: Exp; lines added/del: 20/16 Previously I removed RESOLVER_LIB from the creation of libcx.a. That caused some error messages when we try to remove the symbols in DelList._ from libcx.a. Now we do use RESOLVER_LIB when creating libcx.a and we only extract the modules from libresolv.a if RESOLVER_LIB is defined to be a non-empty string. Defined a RESOLVER_CMD that does that conditional extraction of the resolver modules -- it runs in a sub-shell (/bin/sh). Also trying to make the way libcx.a is created consistent across os-types. ---------------------------- revision 1.8 date: 91/01/07 13:50:13; author: gk5g; state: Exp; lines added/del: 1/4 Do not use the resolver library in the creation of libcx.a because all of the resolver is going into runapp. If only part of the resolver was going into runapp we would have had to put it into libcx.a and then removed whatever modules were listed in DelList._. ---------------------------- revision 1.7 date: 91/01/04 13:34:24; author: gk5g; state: Exp; lines added/del: 22/9 Changed the creation of libcx.a and globalrefs._h to handle the case where the resolver code is not only in libc.a but in it's own library. The resolver must go into runapp because it contains internal data and we can't have multiple copies of the code in a single image. Source file: overhead/class/machdep/hp_68k/getlist.awk Current version: 1.7 revision 1.7 date: 91/01/07 22:52:33; author: gk5g; state: Exp; lines added/del: 2/1 Fixed bug with missing braces around first if-statement. ---------------------------- revision 1.6 date: 91/01/07 13:40:04; author: gk5g; state: Exp; lines added/del: 3/0 Added tolower/toupper entry-point hooks. These two are functions under POSIX and must go into runapp because they have internal state related to international characters sets. We must have only a single copy of these two functions. ---------------------------- revision 1.5 date: 91/01/04 13:31:43; author: gk5g; state: Exp; lines added/del: 131/129 Since there can be two modules with the same name in two different libraries (libresolv.a & libc.a) we need to distinguish each module-name wrt the libraries they came from. Hairy script. ---------------------------- revision 1.4 date: 90/12/21 16:56:36; author: gk5g; state: Exp; lines added/del: 39/0 Added resolver symbols to getlist.awk to be collected into globalrefs._h. The resolver code is now in runapp. Source file: overhead/class/machdep/sun_68k/Imakefile Current version: 1.14 revision 1.14 date: 91/01/07 22:57:40; author: gk5g; state: Exp; lines added/del: 1/1 NM needs to see the RESOLVER_LIB first. ---------------------------- revision 1.13 date: 91/01/07 19:46:37; author: gk5g; state: Exp; lines added/del: 19/15 Previously I removed RESOLVER_LIB from the creation of libcx.a. That caused some error messages when we try to remove the symbols in DelList._ from libcx.a. Now we do use RESOLVER_LIB when creating libcx.a and we only extract the modules from libresolv.a if RESOLVER_LIB is defined to be a non-empty string. Defined a RESOLVER_CMD that does that conditional extraction of the resolver modules -- it runs in a sub-shell (/bin/sh). ---------------------------- revision 1.12 date: 91/01/07 14:03:04; author: gk5g; state: Exp; lines added/del: 1/4 Do not use the resolver library in the creation of libcx.a because all of the resolver is going into runapp. If only part of the resolver was going into runapp we would have had to put it into libcx.a and then removed whatever modules were listed in DelList._. ---------------------------- revision 1.11 date: 91/01/04 13:47:10; author: gk5g; state: Exp; lines added/del: 1/2 Changed the creation of libcx.a and globalrefs._h to handle the case where the resolver code is not only in libc.a but in it's own library. The resolver must go into runapp because it contains internal data and we can't have multiple copies of the code in a single image. ---------------------------- revision 1.10 date: 91/01/02 14:31:44; author: susan; state: Exp; lines added/del: 4/4 fixed syntax error ---------------------------- revision 1.9 date: 91/01/02 13:48:26; author: gk5g; state: Exp; lines added/del: 2/2 Fixed a syntax error. ---------------------------- revision 1.8 date: 90/12/21 16:33:45; author: gk5g; state: Exp; lines added/del: 23/9 Placed resolver modules in runapp and put them into globalrefs._h. No longer link dynamic objects against RESOLVLIB. Source file: overhead/class/machdep/sun_68k/getlafs.awk Current version: 1.3 revision 1.3 date: 91/01/07 22:56:44; author: gk5g; state: Exp; lines added/del: 2/1 Fixed bug with missing braces around first if-statement. ---------------------------- revision 1.2 date: 91/01/04 14:14:56; author: gk5g; state: Exp; lines added/del: 114/74 Since there can be two modules with the same name in two different libraries (libresolv.a & libc.a) we need to distinguish each module-name wrt the libraries they came from. Hairy script. Source file: overhead/class/machdep/sun_68k/getlist.awk Current version: 1.5 revision 1.5 date: 91/01/07 22:56:05; author: gk5g; state: Exp; lines added/del: 2/1 Fixed bug with missing braces around first if-statement. ---------------------------- revision 1.4 date: 91/01/04 13:57:45; author: gk5g; state: Exp; lines added/del: 122/116 Since there can be two modules with the same name in two different libraries (libresolv.a & libc.a) we need to distinguish each module-name wrt the libraries they came from. Hairy script. ---------------------------- revision 1.3 date: 90/12/21 16:34:31; author: gk5g; state: Exp; lines added/del: 40/0 Placed resolver modules in runapp and put them into globalrefs._h. No longer link dynamic objects against RESOLVLIB. Source file: overhead/class/machdep/sun_sparc/Imakefile Current version: 1.16 revision 1.16 date: 91/01/07 23:00:41; author: gk5g; state: Exp; lines added/del: 1/1 NM needs to see the RESOLVER_LIB first. ---------------------------- revision 1.15 date: 91/01/07 21:22:08; author: gk5g; state: Exp; lines added/del: 1/1 Changed the order of the arguments to NM in the dependancy section for libc.eplist. The order should be libc.a, RESOLVER_LIB, libhack.a. The order is important because the affect the way getlist.awk sees the incoming entry-points. The first time it sees an entry-point it grabs it by putting it into an internal data structure. We need to be sure that it sees the resolver entry-points first. ---------------------------- revision 1.14 date: 91/01/07 20:31:58; author: gk5g; state: Exp; lines added/del: 20/15 Previously I removed RESOLVER_LIB from the creation of libcx.a. That caused some error messages when we try to remove the symbols in DelList._ from libcx.a. Now we do use RESOLVER_LIB when creating libcx.a and we only extract the modules from libresolv.a if RESOLVER_LIB is defined to be a non-empty string. Defined a RESOLVER_CMD that does that conditional extraction of the resolver modules -- it runs in a sub-shell (/bin/sh). Also trying to make the way libcx.a is created consistent across os-types. ---------------------------- revision 1.13 date: 91/01/07 13:52:39; author: gk5g; state: Exp; lines added/del: 1/4 Do not use the resolver library in the creation of libcx.a because all of the resolver is going into runapp. If only part of the resolver was going into runapp we would have had to put it into libcx.a and then removed whatever modules were listed in DelList._. ---------------------------- revision 1.12 date: 91/01/04 14:00:35; author: gk5g; state: Exp; lines added/del: 0/1 Removed a small hack. ---------------------------- revision 1.11 date: 91/01/02 14:33:02; author: susan; state: Exp; lines added/del: 4/4 fixed syntax error ---------------------------- revision 1.10 date: 91/01/02 13:50:17; author: gk5g; state: Exp; lines added/del: 2/2 Fixed a syntax error. ---------------------------- revision 1.9 date: 91/01/02 12:06:14; author: gk5g; state: Exp; lines added/del: 19/11 Fix for problem with Sun4 wrt the resolver library. The resolver code is no located in runapp. There is no need to link anything but runapp against the resolver. ---------------------------- revision 1.8 date: 90/12/18 17:57:06; author: gk5g; state: Exp; lines added/del: 7/1 Added symbols from RESOLVLIB into libcx.a if RESOLVER_ENV is defined. The resolver is in runapp. Other dynamic object need not be linked against libresolv.a. Source file: overhead/class/machdep/sun_sparc/getlafs.awk Current version: 1.4 revision 1.4 date: 91/01/07 22:59:40; author: gk5g; state: Exp; lines added/del: 2/1 Fixed bug with missing braces around first if-statement. ---------------------------- revision 1.3 date: 91/01/07 13:54:30; author: gk5g; state: Exp; lines added/del: 2/0 Added tolower/toupper entry-point hooks. These two are functions under POSIX and must go into runapp because they have internal state related to international characters sets. We must have only a single copy of these two functions. ---------------------------- revision 1.2 date: 91/01/04 14:18:42; author: gk5g; state: Exp; lines added/del: 115/74 Since there can be two modules with the same name in two different libraries (libresolv.a & libc.a) we need to distinguish each module-name wrt the libraries they came from. Hairy script. Source file: overhead/class/machdep/sun_sparc/getlist.awk Current version: 1.7 revision 1.7 date: 91/01/07 22:59:27; author: gk5g; state: Exp; lines added/del: 2/1 Fixed bug with missing braces around first if-statement. ---------------------------- revision 1.6 date: 91/01/07 13:41:43; author: gk5g; state: Exp; lines added/del: 2/0 Added tolower/toupper entry-point hooks. These two are functions under POSIX and must go into runapp because they have internal state related to international characters sets. We must have only a single copy of these two functions. ---------------------------- revision 1.5 date: 91/01/04 12:21:54; author: gk5g; state: Exp; lines added/del: 115/120 Since there can be two modules with the same name in two different libraries (libresolv.a & libc.a) we need to distinguish each module-name wrt the libraries they came from. Hairy script. ---------------------------- revision 1.4 date: 91/01/02 18:20:25; author: gk5g; state: Exp; lines added/del: 2/0 Added hooks to grab toupper/tolower. This is necessary because on the Sun4 these are functions that reside in libc.a and they also have internal presistent data. Thus must only have a single copy in a running image. ---------------------------- revision 1.3 date: 91/01/02 12:07:44; author: gk5g; state: Exp; lines added/del: 40/0 Fix for problem with Sun4 wrt the resolver library. The resolver code is no located in runapp. There is no need to link anything but runapp against the resolver. Source file: overhead/class/pp/class.c Current version: 2.42 revision 2.42 date: 90/12/06 16:25:39; author: gk5g; state: Exp; lines added/del: 3/1 Surrounded declarations of malloc with #ifndef _IBMR2/#endif. ---------------------------- revision 2.41 date: 90/11/28 15:01:22; author: susan; state: Exp; lines added/del: 2/2 moved andrewos.h to be first include file. Source file: overhead/class/pp/classpp.l Current version: 2.2 Source file: overhead/conv/Imakefile Current version: 1.9 revision 1.9 date: 91/01/04 12:03:45; author: gk5g; state: Exp; lines added/del: 7/1 Link conclass against libresolv.a because it's a program that links against libclass.a and libclass.a has undefined resolver symbols. This is because the resolver is now in runapp. Source file: atk/Imakefile Current version: 2.56 revision 2.56 date: 91/01/04 16:45:31; author: susan; state: Exp; lines added/del: 1/0 added layout to the basic_insets Source file: atk/help/src/Imakefile Current version: 2.21 revision 2.21 date: 90/12/18 18:03:02; author: gk5g; state: Exp; lines added/del: 1/7 Don't link dynamic objects against libresolv.a anymore because those symbols are now in runapp. ---------------------------- revision 2.20 date: 90/11/26 14:36:54; author: gk5g; state: Exp; lines added/del: 3/2 Now install config.h using InstallFile() macro. Source file: atk/console/cmd/Imakefile Current version: 2.19 revision 2.19 date: 90/12/18 18:04:34; author: gk5g; state: Exp; lines added/del: 1/8 Don't link dynamic objects against libresolv.a anymore because those symbols are now in runapp. Source file: atk/ness/type/Imakefile Current version: 1.11 revision 1.11 date: 91/01/02 18:14:12; author: gk5g; state: Exp; lines added/del: 7/0 We must link the test programs against the resolver library on the Sun. Source file: atk/ness/tokens/Imakefile Current version: 1.14 revision 1.14 date: 91/01/02 18:16:14; author: gk5g; state: Exp; lines added/del: 7/0 We must link the test programs against the resolver library on the Sun. Source file: atk/ness/tokens/lex.c Current version: 1.17 revision 1.17 date: 91/01/02 18:17:13; author: gk5g; state: Exp; lines added/del: 6/13 Removed hacked to get around apparent failure of tolower on sparc arch. The real problem was related to dynamic loading and the fact the tolower/toupper are now function that live in libc.a. They were previously macros. ---------------------------- revision 1.16 date: 90/12/18 15:43:00; author: wjh; state: Exp; lines added/del: 17/3 worked around error in C compiler which caused Illegal Instruction trap in Ness compilation of present.n Source file: atk/raster/convert/Imakefile Current version: 2.9 revision 2.9 date: 91/01/04 12:06:06; author: gk5g; state: Exp; lines added/del: 14/1 Link convertraster against libresolv.a because it's a program that links against libclass.a and libclass.a has undefined resolver symbols. This is because the resolver is now in runapp. Source file: atk/lset/Imakefile Current version: 2.24 revision 2.24 date: 91/01/04 16:54:19; author: susan; state: Exp; lines added/del: 7/1 added RESOLVLIB to createcon program target Source file: atk/layout/box.c Current version: 1.0 Source file: atk/layout/box.ch Current version: 1.0 Source file: atk/layout/box.doc Current version: 1.0 Source file: atk/layout/boxview.c Current version: 1.0 Source file: atk/layout/boxview.ch Current version: 1.0 Source file: atk/layout/filler.ch Current version: 1.0 Source file: atk/layout/fillerv.ch Current version: 1.0 Source file: atk/layout/filler.c Current version: 1.0 Source file: atkams/messages/lib/Imakefile Current version: 2.16 revision 2.16 date: 90/12/18 20:55:14; author: gk5g; state: Exp; lines added/del: 1/6 NO longer link dynamic objects against libresolv.a. The resolver is no located in runapp. *** patchlevel.h Fri Dec 21 14:50:30 1990 --- patchlevel.h.NEW Tue Jan 8 09:01:10 1991 *************** *** 1 **** ! This is the Andrew component of the X.V11R4 distribution, patch level 8 --- 1 ---- ! This is the Andrew component of the X.V11R4 distribution, patch level 9 No differences encountered *** overhead/class/cmd/Imakefile Mon Aug 6 11:13:08 1990 --- overhead/class/cmd/Imakefile.NEW Fri Jan 4 18:28:16 1991 *************** *** 4,18 **** \* ********************************************************************** */ LOCALINCLUDES = -I../machdep/machine -I../lib DependTarget() NormalObjectRule() #ifndef _IBMR2 ! ProgramTarget(dofix,../machdep/machine/dofix.o,../lib/libclass.a,) ! ProgramTarget(dotest,dotest.o,../lib/libclass.a,) #endif /* _IBMR2 */ ! ProgramTarget(doindex,doindex.o,../lib/libclass.a,) ProgramTarget(whichdo,whichdo.o,$(UTILLIB),) #ifndef _IBMR2 --- 4,24 ---- \* ********************************************************************** */ LOCALINCLUDES = -I../machdep/machine -I../lib + #ifdef RESOLVER_ENV + RESOLVER_LIB = $(RESOLVLIB) + #else + RESOLVER_LIB = + #endif + DependTarget() NormalObjectRule() #ifndef _IBMR2 ! ProgramTarget(dofix,../machdep/machine/dofix.o,../lib/libclass.a $(RESOLVER_LIB),) ! ProgramTarget(dotest,dotest.o,../lib/libclass.a $(RESOLVER_LIB),) #endif /* _IBMR2 */ ! ProgramTarget(doindex,doindex.o,../lib/libclass.a $(RESOLVER_LIB),) ProgramTarget(whichdo,whichdo.o,$(UTILLIB),) #ifndef _IBMR2 *** overhead/class/cmd/dotest.c Wed Nov 22 13:21:03 1989 --- overhead/class/cmd/dotest.c.NEW Tue Mar 20 22:51:58 1990 *************** *** 8,14 **** Author: John H Howard - June 11, 1987 */ ! static char rcsid[] = "$Header: /afs/andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/overhead/class/cmd/RCS/dotest.c,v 2.4 89/04/11 15:42:26 pgc Exp $"; #include --- 8,14 ---- Author: John H Howard - June 11, 1987 */ ! static char rcsid[] = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/overhead/class/cmd/RCS/dotest.c,v 2.4 89/04/11 15:42:26 pgc Exp $"; #include *** overhead/class/machdep/aix_i386/Imakefile Fri Dec 21 15:01:41 1990 --- overhead/class/machdep/aix_i386/Imakefile.NEW Mon Jan 7 23:11:45 1991 *************** *** 7,24 **** NormalObjectRule() NormalAsmPPRule() ! all:: globals.o entry.o doload.o dofix.o dolist.o ! globals.o: globals.spp globalrefs._h globalrefs._h: libc.eplist $(AWK) '{printf "\tglobalref(%s)\n", $$2}' libc.eplist >,globalrefs._h $(MV) ,globalrefs._h globalrefs._h ! libc.eplist: /lib/libc.a /usr/lib/librts.a /lib/crt0.o getlist.awk $(RM) /tmp/libhack.a $(AR) /tmp/libhack.a /lib/crt0.o ! $(NM) -ex /usr/lib/librts.a /lib/libc.a /tmp/libhack.a | \ $(TR) "|" " " | \ $(AWK) -f getlist.awk | \ grep -v "%_" > ,libc.eplist --- 7,33 ---- NormalObjectRule() NormalAsmPPRule() ! #ifdef RESOLVER_ENV ! RESOLVER_LIB = $(RESOLVLIB) ! RESOLVER_CMD = /bin/sh -c 'if test $(RESOLVER_LIB); \ ! then ar x $(RESOLVER_LIB); fi; exit 0'; ! #else /* !RESOLVER_ENV */ ! RESOLVER_LIB = ! RESOLVER_CMD = ! #endif /* RESOLVER_ENV */ ! all:: globals.o entry.o doload.o dofix.o dolist.o + globals.o: globals.spp globalrefs._h + globalrefs._h: libc.eplist $(AWK) '{printf "\tglobalref(%s)\n", $$2}' libc.eplist >,globalrefs._h $(MV) ,globalrefs._h globalrefs._h ! libc.eplist: /lib/libc.a /usr/lib/librts.a /lib/crt0.o $(RESOLVER_LIB) getlist.awk $(RM) /tmp/libhack.a $(AR) /tmp/libhack.a /lib/crt0.o ! $(NM) -ex $(RESOLVER_LIB) /usr/lib/librts.a /lib/libc.a /tmp/libhack.a | \ $(TR) "|" " " | \ $(AWK) -f getlist.awk | \ grep -v "%_" > ,libc.eplist *************** *** 30,51 **** all:: libcx.a ! DelList._: libc.eplist $(AWK) '{print $$1}' libc.eplist | $(SORT) -u > ,DelList._ $(MV) ,DelList._ DelList._ ! libcx.a: /usr/lib/librts.a /lib/libc.a /lib/crt0.o DelList._ ! rm -rf new ! mkdir new ! cd new ; \ ! ar x /lib/libc.a ; \ ! cp /usr/lib/librts.a libcx.a ; \ ! chmod +w libcx.a ; \ ! ar q libcx.a *.o /lib/crt0.o ; \ ! ar d libcx.a `cat ../DelList._` ! mv new/libcx.a libcx.a ! rm -rf new clean:: ! $(RM) DelList._ libc.eplist globalrefs._h ,* libcx.a ! rm -fr new /tmp/libhack.a --- 39,62 ---- all:: libcx.a ! DelList._: libc.eplist $(AWK) '{print $$1}' libc.eplist | $(SORT) -u > ,DelList._ $(MV) ,DelList._ DelList._ ! libcx.a: /usr/lib/librts.a /lib/libc.a /lib/crt0.o $(RESOLVER_LIB) DelList._ ! rm -rf new ! mkdir new ! cd new ; \ ! $(RESOLVER_CMD) \ ! $(CP) /lib/crt0.o crt0.o ; \ ! ar x /lib/libc.a ; \ ! $(CP) /usr/lib/librts.a ,libcx.a ; \ ! $(CHMODW) ,libcx.a ; \ ! ar q ,libcx.a *.o ! mv new/,libcx.a libcx.a ! -ar d libcx.a `cat DelList._` ! rm -rf new clean:: ! $(RM) DelList._ libc.eplist globalrefs._h ,* libcx.a ! rm -fr new /tmp/libhack.a *** overhead/class/machdep/aix_i386/getlist.awk Wed Nov 22 13:21:52 1989 --- overhead/class/machdep/aix_i386/getlist.awk.NEW Mon Jan 7 23:06:59 1991 *************** *** 8,13 **** --- 8,14 ---- # data structures used here: # # definer[entry-point-name] = module-name + # library[entry-point-name] = library-name # epcount = # entry-point-name's seen so far # ep[k] = k'th entry-point-name # refcount[entry-point-name] = number of references by wanted modules *************** *** 19,24 **** --- 20,26 ---- $1 == "Symbols" { split($3, NameArray,"["); split(NameArray[2], FileName, "]"); + LibName = NameArray[1]; ObjName = FileName[1]; }; *************** *** 27,36 **** if ($4 == ".text" || $4 == ".data" || $4 == ".bss") { if (definer[$1] == "") { definer[ep[epcount++] = $1] = ObjName; } } else { ! referrer[$1 "." refcount[$1]++] = ObjName; } } --- 29,39 ---- if ($4 == ".text" || $4 == ".data" || $4 == ".bss") { if (definer[$1] == "") { definer[ep[epcount++] = $1] = ObjName; + library[$1] = LibName; } } else { ! referrer[$1 "." refcount[$1]++] = LibName "." ObjName; } } *************** *** 41,112 **** # Specify which entry points we definitely want. Edit this list to add entry points. ! want[definer["ProgramName"]] = "Y"; ! want[definer["environ"]] = "Y"; ! want[definer["_exit"]] = "Y"; ! want[definer["abort"]] = "Y"; ! want[definer["alloca"]] = "Y"; ! want[definer["blt"]] = "Y"; ! want[definer["bcopy"]] = "Y"; ! want[definer["brk"]] = "Y"; ! want[definer["bzero"]] = "Y"; ! want[definer["calloc"]] = "Y"; ! want[definer["cfree"]] = "Y"; ! want[definer["errno"]] = "Y"; ! want[definer["close"]] = "Y"; ! want[definer["errno"]] = "Y"; ! want[definer["creat"]] = "Y"; ! want[definer["_ctype_"]] = "Y"; ! want[definer["_doprnt"]] = "Y"; ! want[definer["ecvt"]] = "Y"; ! want[definer["fcvt"]] = "Y"; ! want[definer["sys_errlist"]] = "Y"; ! want[definer["sys_nerr"]] = "Y"; ! want[definer["exit"]] = "Y"; ! want[definer["fcntl"]] = "Y"; ! want[definer["_filbuf"]] = "Y"; ! want[definer["_iob"]] = "Y"; ! want[definer["_cleanup"]] = "Y"; ! want[definer["_flsbuf"]] = "Y"; ! want[definer["fclose"]] = "Y"; ! want[definer["fflush"]] = "Y"; ! want[definer["fopen"]] = "Y"; ! want[definer["fprintf"]] = "Y"; ! want[definer["fread"]] = "Y"; ! want[definer["fstat"]] = "Y"; ! want[definer["fwrite"]] = "Y"; ! want[definer["gcvt"]] = "Y"; ! want[definer["getdtablesize"]] = "Y"; ! want[definer["getpagesize"]] = "Y"; ! want[definer["ioctl"]] = "Y"; ! want[definer["isatty"]] = "Y"; ! want[definer["lseek"]] = "Y"; ! want[definer["malloc"]] = "Y"; ! want[definer["modf"]] = "Y"; ! want[definer["realloc"]] = "Y"; ! want[definer["free"]] = "Y"; ! want[definer["open"]] = "Y"; ! want[definer["perror"]] = "Y"; ! want[definer["printf"]] = "Y"; ! want[definer["read"]] = "Y"; ! want[definer["sbrk"]] = "Y"; ! want[definer["curbrk"]] = "Y"; ! want[definer["sigvec"]] = "Y"; ! want[definer["sprintf"]] = "Y"; ! want[definer["strlen"]] = "Y"; ! want[definer["syscall"]] = "Y"; ! want[definer["write"]] = "Y"; ! want[definer["writev"]] = "Y"; # now take transitive closure of wanted modules for (needmore = "Y"; needmore == "Y"; needmore = "N") { for ( i = 0; i < epcount; i++) { ! if (want[definer[ep[i]]] != "Y") { ! want[definer[ep[i]]] = "N"; for ( j = 0; j < refcount[ep[i]]; j++ ) { if (want[referrer[ep[i] "." j]] == "Y") { ! want[definer[ep[i]]] = "Y"; needmore = "Y"; break; } --- 44,154 ---- # Specify which entry points we definitely want. Edit this list to add entry points. ! want[library["ProgramName"] "." definer["ProgramName"]] = "Y"; ! want[library["environ"] "." definer["environ"]] = "Y"; ! want[library["_exit"] "." definer["_exit"]] = "Y"; ! want[library["abort"] "." definer["abort"]] = "Y"; ! want[library["alloca"] "." definer["alloca"]] = "Y"; ! want[library["blt"] "." definer["blt"]] = "Y"; ! want[library["bcopy"] "." definer["bcopy"]] = "Y"; ! want[library["brk"] "." definer["brk"]] = "Y"; ! want[library["bzero"] "." definer["bzero"]] = "Y"; ! want[library["calloc"] "." definer["calloc"]] = "Y"; ! want[library["cfree"] "." definer["cfree"]] = "Y"; ! want[library["errno"] "." definer["errno"]] = "Y"; ! want[library["close"] "." definer["close"]] = "Y"; ! want[library["errno"] "." definer["errno"]] = "Y"; ! want[library["creat"] "." definer["creat"]] = "Y"; ! want[library["_ctype_"] "." definer["_ctype_"]] = "Y"; ! want[library["_doprnt"] "." definer["_doprnt"]] = "Y"; ! want[library["ecvt"] "." definer["ecvt"]] = "Y"; ! want[library["fcvt"] "." definer["fcvt"]] = "Y"; ! want[library["sys_errlist"] "." definer["sys_errlist"]] = "Y"; ! want[library["sys_nerr"] "." definer["sys_nerr"]] = "Y"; ! want[library["exit"] "." definer["exit"]] = "Y"; ! want[library["fcntl"] "." definer["fcntl"]] = "Y"; ! want[library["_filbuf"] "." definer["_filbuf"]] = "Y"; ! want[library["_iob"] "." definer["_iob"]] = "Y"; ! want[library["_cleanup"] "." definer["_cleanup"]] = "Y"; ! want[library["_flsbuf"] "." definer["_flsbuf"]] = "Y"; ! want[library["fclose"] "." definer["fclose"]] = "Y"; ! want[library["fflush"] "." definer["fflush"]] = "Y"; ! want[library["fopen"] "." definer["fopen"]] = "Y"; ! want[library["fprintf"] "." definer["fprintf"]] = "Y"; ! want[library["fread"] "." definer["fread"]] = "Y"; ! want[library["fstat"] "." definer["fstat"]] = "Y"; ! want[library["fwrite"] "." definer["fwrite"]] = "Y"; ! want[library["gcvt"] "." definer["gcvt"]] = "Y"; ! want[library["getdtablesize"] "." definer["getdtablesize"]] = "Y"; ! want[library["getpagesize"] "." definer["getpagesize"]] = "Y"; ! want[library["ioctl"] "." definer["ioctl"]] = "Y"; ! want[library["isatty"] "." definer["isatty"]] = "Y"; ! want[library["lseek"] "." definer["lseek"]] = "Y"; ! want[library["malloc"] "." definer["malloc"]] = "Y"; ! want[library["modf"] "." definer["modf"]] = "Y"; ! want[library["realloc"] "." definer["realloc"]] = "Y"; ! want[library["free"] "." definer["free"]] = "Y"; ! want[library["open"] "." definer["open"]] = "Y"; ! want[library["perror"] "." definer["perror"]] = "Y"; ! want[library["printf"] "." definer["printf"]] = "Y"; ! want[library["read"] "." definer["read"]] = "Y"; ! want[library["sbrk"] "." definer["sbrk"]] = "Y"; ! want[library["curbrk"] "." definer["curbrk"]] = "Y"; ! want[library["sigvec"] "." definer["sigvec"]] = "Y"; ! want[library["sprintf"] "." definer["sprintf"]] = "Y"; ! want[library["strlen"] "." definer["strlen"]] = "Y"; ! want[library["syscall"] "." definer["syscall"]] = "Y"; ! want[library["write"] "." definer["write"]] = "Y"; ! want[library["writev"] "." definer["writev"]] = "Y"; + want[library["gethostbyname"] "." definer["gethostbyname"]] = "Y"; + want[library["gethostbyaddr"] "." definer["gethostbyaddr"]] = "Y"; + want[library["sethostent"] "." definer["sethostent"]] = "Y"; + want[library["res_querydomain"] "." definer["res_querydomain"]] = "Y"; + want[library["res_mkquery"] "." definer["res_mkquery"]] = "Y"; + want[library["res_send"] "." definer["res_send"]] = "Y"; + want[library["dn_expand"] "." definer["dn_expand"]] = "Y"; + want[library["res_init"] "." definer["res_init"]] = "Y"; + want[library["_endhtent"] "." definer["_endhtent"]] = "Y"; + want[library["_sethtent"] "." definer["_sethtent"]] = "Y"; + want[library["_gethtbyaddr"] "." definer["_gethtbyaddr"]] = "Y"; + want[library["_gethtbyname"] "." definer["_gethtbyname"]] = "Y"; + want[library["_gethtent"] "." definer["_gethtent"]] = "Y"; + want[library["_getrhbyaddr"] "." definer["_getrhbyaddr"]] = "Y"; + want[library["endhostent"] "." definer["endhostent"]] = "Y"; + want[library["sethostfile"] "." definer["sethostfile"]] = "Y"; + want[library["hostalias"] "." definer["hostalias"]] = "Y"; + want[library["res_query"] "." definer["res_query"]] = "Y"; + want[library["res_search"] "." definer["res_search"]] = "Y"; + want[library["_res_close"] "." definer["_res_close"]] = "Y"; + want[library["fp_query"] "." definer["fp_query"]] = "Y"; + want[library["p_cdname"] "." definer["p_cdname"]] = "Y"; + want[library["p_class"] "." definer["p_class"]] = "Y"; + want[library["p_query"] "." definer["p_query"]] = "Y"; + want[library["p_rr"] "." definer["p_rr"]] = "Y"; + want[library["p_type"] "." definer["p_type"]] = "Y"; + want[library["_getlong"] "." definer["_getlong"]] = "Y"; + want[library["_getshort"] "." definer["_getshort"]] = "Y"; + want[library["dn_comp"] "." definer["dn_comp"]] = "Y"; + want[library["dn_skipname"] "." definer["dn_skipname"]] = "Y"; + want[library["putlong"] "." definer["putlong"]] = "Y"; + want[library["putshort"] "." definer["putshort"]] = "Y"; + want[library["strcasecmp"] "." definer["strcasecmp"]] = "Y"; + want[library["strncasecmp"] "." definer["strncasecmp"]] = "Y"; + want[library["_res_opcodes"] "." definer["_res_opcodes"]] = "Y"; + want[library["_res_resultcodes"] "." definer["_res_resultcodes"]] = "Y"; + want[library["_res"] "." definer["_res"]] = "Y"; + want[library["h_errno"] "." definer["h_errno"]] = "Y"; + # now take transitive closure of wanted modules for (needmore = "Y"; needmore == "Y"; needmore = "N") { for ( i = 0; i < epcount; i++) { ! if (want[library[ep[i]] "." definer[ep[i]]] != "Y") { ! want[library[ep[i]] "." definer[ep[i]]] = "N"; for ( j = 0; j < refcount[ep[i]]; j++ ) { if (want[referrer[ep[i] "." j]] == "Y") { ! want[library[ep[i]] "." definer[ep[i]]] = "Y"; needmore = "Y"; break; } *************** *** 118,123 **** # write out all wanted module name and entry points for ( i = 0 ; i < epcount ; i++) ! if (want[definer[ep[i]]] == "Y") printf "%s %s\n", definer[ep[i]], ep[i]; } --- 160,165 ---- # write out all wanted module name and entry points for ( i = 0 ; i < epcount ; i++) ! if (want[library[ep[i]] "." definer[ep[i]]] == "Y") printf "%s %s\n", definer[ep[i]], ep[i]; } *** overhead/class/machdep/i386_mach/Imakefile Fri Dec 21 15:01:56 1990 --- overhead/class/machdep/i386_mach/Imakefile.NEW Mon Jan 7 23:07:43 1991 *************** *** 7,24 **** NormalObjectRule() NormalAsmPPRule() ! all:: globals.o entry.o doload.o ! globals.o: globals.spp globalrefs._h globalrefs._h: libc.eplist $(AWK) '{printf "\tglobalref(%s)\n", $$2}' libc.eplist >,globalrefs._h $(MV) ,globalrefs._h globalrefs._h ! libc.eplist: /lib/libc.a /lib/crt0.o getlist.awk $(RM) /tmp/libhack.a $(AR) /tmp/libhack.a /lib/crt0.o ! $(NM) -go /lib/libc.a /tmp/libhack.a | $(TR) ":()" " " | \ $(AWK) -f getlist.awk >,libc.eplist $(MV) ,libc.eplist libc.eplist $(RM) /tmp/libhack.a --- 7,33 ---- NormalObjectRule() NormalAsmPPRule() ! #ifdef RESOLVER_ENV ! RESOLVER_LIB = $(RESOLVLIB) ! RESOLVER_CMD = /bin/sh -c 'if test $(RESOLVER_LIB); \ ! then ar x $(RESOLVER_LIB); fi; exit 0'; ! #else ! RESOLVER_LIB = ! RESOLVER_CMD = ! #endif ! all:: globals.o entry.o doload.o + globals.o: globals.spp globalrefs._h + globalrefs._h: libc.eplist $(AWK) '{printf "\tglobalref(%s)\n", $$2}' libc.eplist >,globalrefs._h $(MV) ,globalrefs._h globalrefs._h ! libc.eplist: /lib/libc.a /lib/crt0.o $(RESOLVER_LIB) getlist.awk $(RM) /tmp/libhack.a $(AR) /tmp/libhack.a /lib/crt0.o ! $(NM) -go $(RESOLVER_LIB) /lib/libc.a /tmp/libhack.a | $(TR) ":()" " " | \ $(AWK) -f getlist.awk >,libc.eplist $(MV) ,libc.eplist libc.eplist $(RM) /tmp/libhack.a *************** *** 32,46 **** $(AWK) '{print $$1}' libc.eplist | $(SORT) -u > ,DelList._ $(MV) ,DelList._ DelList._ ! libcx.a: /lib/libc.a /lib/crt0.o DelList._ ! $(CP) /lib/libc.a ,libcx.a ! $(CHMODW) ,libcx.a ! $(AR) ,libcx.a /lib/crt0.o ! -ar d ,libcx.a `cat DelList._` ! $(RANLIB) ,libcx.a ! $(MV) ,libcx.a libcx.a ! all:: dofix.o clean:: ! $(RM) DelList._ libc.eplist globalrefs._h ,* libcx.a --- 41,61 ---- $(AWK) '{print $$1}' libc.eplist | $(SORT) -u > ,DelList._ $(MV) ,DelList._ DelList._ ! libcx.a: /lib/libc.a /lib/crt0.o $(RESOLVER_LIB) DelList._ ! rm -rf new ! mkdir new ! cd new; \ ! $(RESOLVER_CMD) \ ! $(CP) /lib/crt0.o crt0.o ; \ ! $(CP) /lib/libc.a ,libcx.a; \ ! $(CHMODW) ,libcx.a; \ ! ar q ,libcx.a *.o ! mv new/,libcx.a libcx.a ! -ar d libcx.a `cat DelList._` ! $(RANLIB) libcx.a ! rm -rf new ! all:: dofix.o clean:: ! $(RM) DelList._ libc.eplist globalrefs._h ,* libcx.a *** overhead/class/machdep/i386_mach/getlist.awk Mon Aug 6 11:14:02 1990 --- overhead/class/machdep/i386_mach/getlist.awk.NEW Mon Jan 7 23:07:41 1991 *************** *** 6,11 **** --- 6,12 ---- # data structures used here: # # definer[entry-point-name] = module-name + # library[entry-point-name] = library-name # epcount = # entry-point-name's seen so far # ep[k] = k'th entry-point-name # refcount[entry-point-name] = number of references by wanted modules *************** *** 15,26 **** # search output of nm and set up definers and referrers / [ATDBC] / { ! if (definer[$5] == "") definer[ep[epcount++] = $5] = $2; } / U / { ! referrer[$4 "." refcount[$4]++] = $2; } # postprocessing --- 16,29 ---- # search output of nm and set up definers and referrers / [ATDBC] / { ! if (definer[$5] == "") { definer[ep[epcount++] = $5] = $2; + library[$5] = $1; + } } / U / { ! referrer[$4 "." refcount[$4]++] = $1 "." $2; } # postprocessing *************** *** 30,114 **** # Specify which entry points we definitely want. Edit this list to add entry points. ! want[definer["_class_RoutineStruct"]] = "Y"; ! want[definer["_class_Error"]] = "Y"; ! want[definer["_ProgramName"]] = "Y"; ! # want[definer["_class_Header"]] = "Y"; ! want[definer["_class_NewObject"]] = "Y"; ! want[definer["_class_Load"]] = "Y"; ! want[definer["_class_IsLoaded"]] = "Y"; ! want[definer["_class_Lookup"]] = "Y"; ! want[definer["_class_IsType"]] = "Y"; ! want[definer["_class_IsTypeByName"]] = "Y"; ! want[definer["_class_EnterInfo"]] = "Y"; ! want[definer["_class_SetClassPath"]] = "Y"; ! want[definer["_class_PrependClassPath"]] = "Y"; ! want[definer["_class_GetEText"]] = "Y"; ! want[definer["_environ"]] = "Y"; ! want[definer["__exit"]] = "Y"; ! want[definer["_abort"]] = "Y"; ! want[definer["_alloca"]] = "Y"; ! want[definer["_blt"]] = "Y"; ! want[definer["_bcopy"]] = "Y"; ! want[definer["_brk"]] = "Y"; ! want[definer["_bzero"]] = "Y"; ! want[definer["_calloc"]] = "Y"; ! want[definer["_cfree"]] = "Y"; ! want[definer["_errno"]] = "Y"; ! want[definer["_close"]] = "Y"; ! want[definer["_errno"]] = "Y"; ! want[definer["_creat"]] = "Y"; ! want[definer["__ctype_"]] = "Y"; ! want[definer["__doprnt"]] = "Y"; ! want[definer["_ecvt"]] = "Y"; ! want[definer["_fcvt"]] = "Y"; ! want[definer["_sys_errlist"]] = "Y"; ! want[definer["_sys_nerr"]] = "Y"; ! want[definer["_exit"]] = "Y"; ! want[definer["_fcntl"]] = "Y"; ! want[definer["__filbuf"]] = "Y"; ! want[definer["__iob"]] = "Y"; ! want[definer["__cleanup"]] = "Y"; ! want[definer["__flsbuf"]] = "Y"; ! want[definer["_fclose"]] = "Y"; ! want[definer["_fflush"]] = "Y"; ! want[definer["_fopen"]] = "Y"; ! want[definer["_fprintf"]] = "Y"; ! want[definer["_fread"]] = "Y"; ! want[definer["_fstat"]] = "Y"; ! want[definer["_fwrite"]] = "Y"; ! want[definer["_gcvt"]] = "Y"; ! want[definer["_getdtablesize"]] = "Y"; ! want[definer["_getpagesize"]] = "Y"; ! want[definer["_ioctl"]] = "Y"; ! want[definer["_isatty"]] = "Y"; ! want[definer["_lseek"]] = "Y"; ! want[definer["_malloc"]] = "Y"; ! want[definer["_modf"]] = "Y"; ! want[definer["_realloc"]] = "Y"; ! want[definer["_free"]] = "Y"; ! want[definer["_open"]] = "Y"; ! want[definer["_perror"]] = "Y"; ! want[definer["_printf"]] = "Y"; ! want[definer["_read"]] = "Y"; ! want[definer["_sbrk"]] = "Y"; ! want[definer["curbrk"]] = "Y"; ! want[definer["_sigvec"]] = "Y"; ! want[definer["_sprintf"]] = "Y"; ! want[definer["_strlen"]] = "Y"; ! want[definer["_syscall"]] = "Y"; ! want[definer["_write"]] = "Y"; ! want[definer["_writev"]] = "Y"; # now take transitive closure of wanted modules for (needmore = "Y"; needmore == "Y"; needmore = "N") { for ( i = 0; i < epcount; i++) { ! if (want[definer[ep[i]]] != "Y") { ! want[definer[ep[i]]] = "N"; for ( j = 0; j < refcount[ep[i]]; j++ ) { if (want[referrer[ep[i] "." j]] == "Y") { ! want[definer[ep[i]]] = "Y"; needmore = "Y"; break; } --- 33,156 ---- # Specify which entry points we definitely want. Edit this list to add entry points. ! want[library["_class_RoutineStruct"] "." definer["_class_RoutineStruct"]] = "Y"; ! want[library["_class_Error"] "." definer["_class_Error"]] = "Y"; ! want[library["_ProgramName"] "." definer["_ProgramName"]] = "Y"; ! # want[library["_class_Header"] "." definer["_class_Header"]] = "Y"; ! want[library["_class_NewObject"] "." definer["_class_NewObject"]] = "Y"; ! want[library["_class_Load"] "." definer["_class_Load"]] = "Y"; ! want[library["_class_IsLoaded"] "." definer["_class_IsLoaded"]] = "Y"; ! want[library["_class_Lookup"] "." definer["_class_Lookup"]] = "Y"; ! want[library["_class_IsType"] "." definer["_class_IsType"]] = "Y"; ! want[library["_class_IsTypeByName"] "." definer["_class_IsTypeByName"]] = "Y"; ! want[library["_class_EnterInfo"] "." definer["_class_EnterInfo"]] = "Y"; ! want[library["_class_SetClassPath"] "." definer["_class_SetClassPath"]] = "Y"; ! want[library["_class_PrependClassPath"] "." definer["_class_PrependClassPath"]] = "Y"; ! want[library["_class_GetEText"] "." definer["_class_GetEText"]] = "Y"; ! want[library["_environ"] "." definer["_environ"]] = "Y"; ! want[library["__exit"] "." definer["__exit"]] = "Y"; ! want[library["_abort"] "." definer["_abort"]] = "Y"; ! want[library["_alloca"] "." definer["_alloca"]] = "Y"; ! want[library["_blt"] "." definer["_blt"]] = "Y"; ! want[library["_bcopy"] "." definer["_bcopy"]] = "Y"; ! want[library["_brk"] "." definer["_brk"]] = "Y"; ! want[library["_bzero"] "." definer["_bzero"]] = "Y"; ! want[library["_calloc"] "." definer["_calloc"]] = "Y"; ! want[library["_cfree"] "." definer["_cfree"]] = "Y"; ! want[library["_errno"] "." definer["_errno"]] = "Y"; ! want[library["_close"] "." definer["_close"]] = "Y"; ! want[library["_errno"] "." definer["_errno"]] = "Y"; ! want[library["_creat"] "." definer["_creat"]] = "Y"; ! want[library["__ctype_"] "." definer["__ctype_"]] = "Y"; ! want[library["__doprnt"] "." definer["__doprnt"]] = "Y"; ! want[library["_ecvt"] "." definer["_ecvt"]] = "Y"; ! want[library["_fcvt"] "." definer["_fcvt"]] = "Y"; ! want[library["_sys_errlist"] "." definer["_sys_errlist"]] = "Y"; ! want[library["_sys_nerr"] "." definer["_sys_nerr"]] = "Y"; ! want[library["_exit"] "." definer["_exit"]] = "Y"; ! want[library["_fcntl"] "." definer["_fcntl"]] = "Y"; ! want[library["__filbuf"] "." definer["__filbuf"]] = "Y"; ! want[library["__iob"] "." definer["__iob"]] = "Y"; ! want[library["__cleanup"] "." definer["__cleanup"]] = "Y"; ! want[library["__flsbuf"] "." definer["__flsbuf"]] = "Y"; ! want[library["_fclose"] "." definer["_fclose"]] = "Y"; ! want[library["_fflush"] "." definer["_fflush"]] = "Y"; ! want[library["_fopen"] "." definer["_fopen"]] = "Y"; ! want[library["_fprintf"] "." definer["_fprintf"]] = "Y"; ! want[library["_fread"] "." definer["_fread"]] = "Y"; ! want[library["_fstat"] "." definer["_fstat"]] = "Y"; ! want[library["_fwrite"] "." definer["_fwrite"]] = "Y"; ! want[library["_gcvt"] "." definer["_gcvt"]] = "Y"; ! want[library["_getdtablesize"] "." definer["_getdtablesize"]] = "Y"; ! want[library["_getpagesize"] "." definer["_getpagesize"]] = "Y"; ! want[library["_ioctl"] "." definer["_ioctl"]] = "Y"; ! want[library["_isatty"] "." definer["_isatty"]] = "Y"; ! want[library["_lseek"] "." definer["_lseek"]] = "Y"; ! want[library["_malloc"] "." definer["_malloc"]] = "Y"; ! want[library["_modf"] "." definer["_modf"]] = "Y"; ! want[library["_realloc"] "." definer["_realloc"]] = "Y"; ! want[library["_free"] "." definer["_free"]] = "Y"; ! want[library["_open"] "." definer["_open"]] = "Y"; ! want[library["_perror"] "." definer["_perror"]] = "Y"; ! want[library["_printf"] "." definer["_printf"]] = "Y"; ! want[library["_read"] "." definer["_read"]] = "Y"; ! want[library["_sbrk"] "." definer["_sbrk"]] = "Y"; ! want[library["curbrk"] "." definer["curbrk"]] = "Y"; ! want[library["_sigvec"] "." definer["_sigvec"]] = "Y"; ! want[library["_sprintf"] "." definer["_sprintf"]] = "Y"; ! want[library["_strlen"] "." definer["_strlen"]] = "Y"; ! want[library["_syscall"] "." definer["_syscall"]] = "Y"; ! want[library["_write"] "." definer["_write"]] = "Y"; ! want[library["_writev"] "." definer["_writev"]] = "Y"; + want[library["_gethostbyname"] "." definer["_gethostbyname"]] = "Y"; + want[library["_gethostbyaddr"] "." definer["_gethostbyaddr"]] = "Y"; + want[library["_sethostent"] "." definer["_sethostent"]] = "Y"; + want[library["_res_querydomain"] "." definer["_res_querydomain"]] = "Y"; + want[library["_res_mkquery"] "." definer["_res_mkquery"]] = "Y"; + want[library["_res_send"] "." definer["_res_send"]] = "Y"; + want[library["_dn_expand"] "." definer["_dn_expand"]] = "Y"; + want[library["_res_init"] "." definer["_res_init"]] = "Y"; + want[library["__endhtent"] "." definer["__endhtent"]] = "Y"; + want[library["__sethtent"] "." definer["__sethtent"]] = "Y"; + want[library["__gethtbyaddr"] "." definer["__gethtbyaddr"]] = "Y"; + want[library["__gethtbyname"] "." definer["__gethtbyname"]] = "Y"; + want[library["__gethtent"] "." definer["__gethtent"]] = "Y"; + want[library["__getrhbyaddr"] "." definer["__getrhbyaddr"]] = "Y"; + want[library["_endhostent"] "." definer["_endhostent"]] = "Y"; + want[library["_sethostfile"] "." definer["_sethostfile"]] = "Y"; + want[library["_hostalias"] "." definer["_hostalias"]] = "Y"; + want[library["_res_query"] "." definer["_res_query"]] = "Y"; + want[library["_res_search"] "." definer["_res_search"]] = "Y"; + want[library["__res_close"] "." definer["__res_close"]] = "Y"; + want[library["_fp_query"] "." definer["_fp_query"]] = "Y"; + want[library["_p_cdname"] "." definer["_p_cdname"]] = "Y"; + want[library["_p_class"] "." definer["_p_class"]] = "Y"; + want[library["_p_query"] "." definer["_p_query"]] = "Y"; + want[library["_p_rr"] "." definer["_p_rr"]] = "Y"; + want[library["_p_type"] "." definer["_p_type"]] = "Y"; + want[library["__getlong"] "." definer["__getlong"]] = "Y"; + want[library["__getshort"] "." definer["__getshort"]] = "Y"; + want[library["_dn_comp"] "." definer["_dn_comp"]] = "Y"; + want[library["_dn_skipname"] "." definer["_dn_skipname"]] = "Y"; + want[library["_putlong"] "." definer["_putlong"]] = "Y"; + want[library["_putshort"] "." definer["_putshort"]] = "Y"; + want[library["_strcasecmp"] "." definer["_strcasecmp"]] = "Y"; + want[library["_strncasecmp"] "." definer["_strncasecmp"]] = "Y"; + want[library["__res_opcodes"] "." definer["__res_opcodes"]] = "Y"; + want[library["__res_resultcodes"] "." definer["__res_resultcodes"]] = "Y"; + want[library["__res"] "." definer["__res"]] = "Y"; + want[library["_h_errno"] "." definer["_h_errno"]] = "Y"; + # now take transitive closure of wanted modules for (needmore = "Y"; needmore == "Y"; needmore = "N") { for ( i = 0; i < epcount; i++) { ! if (want[library[ep[i]] "." definer[ep[i]]] != "Y") { ! want[library[ep[i]] "." definer[ep[i]]] = "N"; for ( j = 0; j < refcount[ep[i]]; j++ ) { if (want[referrer[ep[i] "." j]] == "Y") { ! want[library[ep[i]] "." definer[ep[i]]] = "Y"; needmore = "Y"; break; } *************** *** 120,125 **** # write out all wanted module name and entry points for ( i = 0 ; i < epcount ; i++) ! if (want[definer[ep[i]]] == "Y") printf "%s %s\n", definer[ep[i]], ep[i]; } --- 162,167 ---- # write out all wanted module name and entry points for ( i = 0 ; i < epcount ; i++) ! if (want[library[ep[i]] "." definer[ep[i]]] == "Y") printf "%s %s\n", definer[ep[i]], ep[i]; } *** overhead/class/machdep/aix_rt/Imakefile Fri Dec 21 15:01:43 1990 --- overhead/class/machdep/aix_rt/Imakefile.NEW Mon Jan 7 23:11:48 1991 *************** *** 7,18 **** NormalObjectRule() NormalAsmPPRule() ! all:: globals.o entry.o doload.o ! all:: dofix.o ! globals.o: globals.spp globalrefs._h globalrefs._h: libc.eplist aixfix $(AWK) '{printf "%s\n", $$2}' libc.eplist | \ ./aixfix >,globalrefs._h --- 7,27 ---- NormalObjectRule() NormalAsmPPRule() ! #ifdef RESOLVER_ENV ! RESOLVER_LIB = $(RESOLVLIB) ! RESOLVER_CMD = /bin/sh -c 'if test $(RESOLVER_LIB); \ ! then ar x $(RESOLVER_LIB); fi; exit 0'; ! #else ! RESOLVER_LIB = ! RESOLVER_CMD = ! #endif ! all:: globals.o entry.o doload.o ! all:: dofix.o + globals.o: globals.spp globalrefs._h + globalrefs._h: libc.eplist aixfix $(AWK) '{printf "%s\n", $$2}' libc.eplist | \ ./aixfix >,globalrefs._h *************** *** 19,37 **** $(MV) ,globalrefs._h globalrefs._h #ifdef __HIGHC__ ! entry.o: entry.spp ! # hc removes spaces after preprocessing... ! -$(RM) entry.o entry.s ,entry.c ! $(CP) entry.spp ,entry.c ! $(CC) -E -I. $(LOCALINCLUDES) $(CFLAGS) ,entry.c | sed 's/\.globl/ \.globl/; s/\.ClassEntry/ \.ClassEntry/; s/_ClassEntry/ _ClassEntry/' > ,entry.s ! $(AS) -o entry.o ,entry.s ! $(RM) ,entry.c ,entry.s #endif ! libc.eplist: /lib/libc.a /lib/librts.a /lib/crt0.o getlist.awk $(RM) libhack.a $(AR) libhack.a /lib/crt0.o ! $(NM) -ex /lib/librts.a /lib/libc.a libhack.a | \ $(AWK) -f nmfix.awk | \ $(TR) ":" " " | \ $(AWK) -f getlist.awk | \ --- 28,47 ---- $(MV) ,globalrefs._h globalrefs._h #ifdef __HIGHC__ ! entry.o: entry.spp ! # hc removes spaces after preprocessing... ! -$(RM) entry.o entry.s ,entry.c ! $(CP) entry.spp ,entry.c ! $(CC) -E -I. $(LOCALINCLUDES) $(CFLAGS) ,entry.c | \ ! sed 's/\.globl/ \.globl/; s/\.ClassEntry/ \.ClassEntry/; s/_ClassEntry/ _ClassEntry/' > ,entry.s ! $(AS) -o entry.o ,entry.s ! $(RM) ,entry.c ,entry.s #endif ! libc.eplist: /lib/libc.a /lib/librts.a /lib/crt0.o $(RESOLVER_LIB) getlist.awk $(RM) libhack.a $(AR) libhack.a /lib/crt0.o ! $(NM) -ex $(RESOLVER_LIB) /lib/librts.a /lib/libc.a libhack.a | \ $(AWK) -f nmfix.awk | \ $(TR) ":" " " | \ $(AWK) -f getlist.awk | \ *************** *** 48,69 **** $(AWK) '{print $$1}' libc.eplist | $(SORT) -u > ,DelList._ $(MV) ,DelList._ DelList._ ! libcx.a: /lib/librts.a /lib/libc.a /lib/crt0.o DelList._ rm -rf new mkdir new cd new ; \ ar x /lib/libc.a ; \ ! cp /lib/librts.a libcx.a ; \ ! chmod +w libcx.a ; \ ! ar q libcx.a *.o /lib/crt0.o ; \ ! ar d libcx.a `cat ../DelList._` ! mv new/libcx.a libcx.a rm -rf new clean:: ! $(RM) DelList._ libc.eplist globalrefs._h ,* libcx.a clean:: ! rm -fr new libhack.a aixfix ! ! --- 58,79 ---- $(AWK) '{print $$1}' libc.eplist | $(SORT) -u > ,DelList._ $(MV) ,DelList._ DelList._ ! libcx.a: /lib/librts.a /lib/libc.a /lib/crt0.o $(RESOLVER_LIB) DelList._ rm -rf new mkdir new cd new ; \ + $(RESOLVER_CMD) \ + $(CP) /lib/crt0.o crt0.o ; \ ar x /lib/libc.a ; \ ! cp /lib/librts.a ,libcx.a ; \ ! $(CHMODW) ,libcx.a ; \ ! ar q ,libcx.a *.o ! mv new/,libcx.a libcx.a ! -ar d libcx.a `cat DelList._` rm -rf new clean:: ! $(RM) DelList._ libc.eplist globalrefs._h ,* libcx.a clean:: ! rm -fr new libhack.a aixfix *** overhead/class/machdep/aix_rt/getlist.awk Wed Nov 22 13:23:42 1989 --- overhead/class/machdep/aix_rt/getlist.awk.NEW Mon Jan 7 23:07:02 1991 *************** *** 6,11 **** --- 6,12 ---- # data structures used here: # # definer[entry-point-name] = module-name + # library[entry-point-name] = library-name # epcount = # entry-point-name's seen so far # ep[k] = k'th entry-point-name # refcount[entry-point-name] = number of references by wanted modules *************** *** 15,26 **** # search output of nm and set up definers and referrers / [ATDBC] / { ! if (definer[$5] == "") definer[ep[epcount++] = $5] = $2; } / U / { ! referrer[$4 "." refcount[$4]++] = $2; } # postprocessing --- 16,29 ---- # search output of nm and set up definers and referrers / [ATDBC] / { ! if (definer[$5] == "") { definer[ep[epcount++] = $5] = $2; + library[$5] = $1; + } } / U / { ! referrer[$4 "." refcount[$4]++] = $1 "." $2; } # postprocessing *************** *** 30,114 **** # Specify which entry points we definitely want. Edit this list to add entry points. ! want[definer["_class_RoutineStruct"]] = "Y"; ! want[definer["_class_Error"]] = "Y"; ! want[definer["_ProgramName"]] = "Y"; ! # want[definer["_class_Header"]] = "Y"; ! want[definer["_class_NewObject"]] = "Y"; ! want[definer["_class_Load"]] = "Y"; ! want[definer["_class_IsLoaded"]] = "Y"; ! want[definer["_class_Lookup"]] = "Y"; ! want[definer["_class_IsType"]] = "Y"; ! want[definer["_class_IsTypeByName"]] = "Y"; ! want[definer["_class_EnterInfo"]] = "Y"; ! want[definer["_class_SetClassPath"]] = "Y"; ! want[definer["_class_PrependClassPath"]] = "Y"; ! want[definer["_class_GetEText"]] = "Y"; ! want[definer["_environ"]] = "Y"; ! want[definer["__exit"]] = "Y"; ! want[definer["_abort"]] = "Y"; ! want[definer["_alloca"]] = "Y"; ! want[definer["_blt"]] = "Y"; ! want[definer["_bcopy"]] = "Y"; ! want[definer["_brk"]] = "Y"; ! want[definer["_bzero"]] = "Y"; ! want[definer["_calloc"]] = "Y"; ! want[definer["_cfree"]] = "Y"; ! want[definer["_errno"]] = "Y"; ! want[definer["_close"]] = "Y"; ! want[definer["_errno"]] = "Y"; ! want[definer["_creat"]] = "Y"; ! want[definer["__ctype_"]] = "Y"; ! want[definer["__doprnt"]] = "Y"; ! want[definer["_ecvt"]] = "Y"; ! want[definer["_fcvt"]] = "Y"; ! want[definer["_sys_errlist"]] = "Y"; ! want[definer["_sys_nerr"]] = "Y"; ! want[definer["_exit"]] = "Y"; ! want[definer["_fcntl"]] = "Y"; ! want[definer["__filbuf"]] = "Y"; ! want[definer["__iob"]] = "Y"; ! want[definer["__cleanup"]] = "Y"; ! want[definer["__flsbuf"]] = "Y"; ! want[definer["_fclose"]] = "Y"; ! want[definer["_fflush"]] = "Y"; ! want[definer["_fopen"]] = "Y"; ! want[definer["_fprintf"]] = "Y"; ! want[definer["_fread"]] = "Y"; ! want[definer["_fstat"]] = "Y"; ! want[definer["_fwrite"]] = "Y"; ! want[definer["_gcvt"]] = "Y"; ! want[definer["_getdtablesize"]] = "Y"; ! want[definer["_getpagesize"]] = "Y"; ! want[definer["_ioctl"]] = "Y"; ! want[definer["_isatty"]] = "Y"; ! want[definer["_lseek"]] = "Y"; ! want[definer["_malloc"]] = "Y"; ! want[definer["_modf"]] = "Y"; ! want[definer["_realloc"]] = "Y"; ! want[definer["_free"]] = "Y"; ! want[definer["_open"]] = "Y"; ! want[definer["_perror"]] = "Y"; ! want[definer["_printf"]] = "Y"; ! want[definer["_read"]] = "Y"; ! want[definer["_sbrk"]] = "Y"; ! want[definer["curbrk"]] = "Y"; ! want[definer["_sigvec"]] = "Y"; ! want[definer["_sprintf"]] = "Y"; ! want[definer["_strlen"]] = "Y"; ! want[definer["_syscall"]] = "Y"; ! want[definer["_write"]] = "Y"; ! want[definer["_writev"]] = "Y"; # now take transitive closure of wanted modules for (needmore = "Y"; needmore == "Y"; needmore = "N") { for ( i = 0; i < epcount; i++) { ! if (want[definer[ep[i]]] != "Y") { ! want[definer[ep[i]]] = "N"; for ( j = 0; j < refcount[ep[i]]; j++ ) { if (want[referrer[ep[i] "." j]] == "Y") { ! want[definer[ep[i]]] = "Y"; needmore = "Y"; break; } --- 33,156 ---- # Specify which entry points we definitely want. Edit this list to add entry points. ! want[library["_class_RoutineStruct"] "." definer["_class_RoutineStruct"]] = "Y"; ! want[library["_class_Error"] "." definer["_class_Error"]] = "Y"; ! want[library["_ProgramName"] "." definer["_ProgramName"]] = "Y"; ! # want[library["_class_Header"] "." definer["_class_Header"]] = "Y"; ! want[library["_class_NewObject"] "." definer["_class_NewObject"]] = "Y"; ! want[library["_class_Load"] "." definer["_class_Load"]] = "Y"; ! want[library["_class_IsLoaded"] "." definer["_class_IsLoaded"]] = "Y"; ! want[library["_class_Lookup"] "." definer["_class_Lookup"]] = "Y"; ! want[library["_class_IsType"] "." definer["_class_IsType"]] = "Y"; ! want[library["_class_IsTypeByName"] "." definer["_class_IsTypeByName"]] = "Y"; ! want[library["_class_EnterInfo"] "." definer["_class_EnterInfo"]] = "Y"; ! want[library["_class_SetClassPath"] "." definer["_class_SetClassPath"]] = "Y"; ! want[library["_class_PrependClassPath"] "." definer["_class_PrependClassPath"]] = "Y"; ! want[library["_class_GetEText"] "." definer["_class_GetEText"]] = "Y"; ! want[library["_environ"] "." definer["_environ"]] = "Y"; ! want[library["__exit"] "." definer["__exit"]] = "Y"; ! want[library["_abort"] "." definer["_abort"]] = "Y"; ! want[library["_alloca"] "." definer["_alloca"]] = "Y"; ! want[library["_blt"] "." definer["_blt"]] = "Y"; ! want[library["_bcopy"] "." definer["_bcopy"]] = "Y"; ! want[library["_brk"] "." definer["_brk"]] = "Y"; ! want[library["_bzero"] "." definer["_bzero"]] = "Y"; ! want[library["_calloc"] "." definer["_calloc"]] = "Y"; ! want[library["_cfree"] "." definer["_cfree"]] = "Y"; ! want[library["_errno"] "." definer["_errno"]] = "Y"; ! want[library["_close"] "." definer["_close"]] = "Y"; ! want[library["_errno"] "." definer["_errno"]] = "Y"; ! want[library["_creat"] "." definer["_creat"]] = "Y"; ! want[library["__ctype_"] "." definer["__ctype_"]] = "Y"; ! want[library["__doprnt"] "." definer["__doprnt"]] = "Y"; ! want[library["_ecvt"] "." definer["_ecvt"]] = "Y"; ! want[library["_fcvt"] "." definer["_fcvt"]] = "Y"; ! want[library["_sys_errlist"] "." definer["_sys_errlist"]] = "Y"; ! want[library["_sys_nerr"] "." definer["_sys_nerr"]] = "Y"; ! want[library["_exit"] "." definer["_exit"]] = "Y"; ! want[library["_fcntl"] "." definer["_fcntl"]] = "Y"; ! want[library["__filbuf"] "." definer["__filbuf"]] = "Y"; ! want[library["__iob"] "." definer["__iob"]] = "Y"; ! want[library["__cleanup"] "." definer["__cleanup"]] = "Y"; ! want[library["__flsbuf"] "." definer["__flsbuf"]] = "Y"; ! want[library["_fclose"] "." definer["_fclose"]] = "Y"; ! want[library["_fflush"] "." definer["_fflush"]] = "Y"; ! want[library["_fopen"] "." definer["_fopen"]] = "Y"; ! want[library["_fprintf"] "." definer["_fprintf"]] = "Y"; ! want[library["_fread"] "." definer["_fread"]] = "Y"; ! want[library["_fstat"] "." definer["_fstat"]] = "Y"; ! want[library["_fwrite"] "." definer["_fwrite"]] = "Y"; ! want[library["_gcvt"] "." definer["_gcvt"]] = "Y"; ! want[library["_getdtablesize"] "." definer["_getdtablesize"]] = "Y"; ! want[library["_getpagesize"] "." definer["_getpagesize"]] = "Y"; ! want[library["_ioctl"] "." definer["_ioctl"]] = "Y"; ! want[library["_isatty"] "." definer["_isatty"]] = "Y"; ! want[library["_lseek"] "." definer["_lseek"]] = "Y"; ! want[library["_malloc"] "." definer["_malloc"]] = "Y"; ! want[library["_modf"] "." definer["_modf"]] = "Y"; ! want[library["_realloc"] "." definer["_realloc"]] = "Y"; ! want[library["_free"] "." definer["_free"]] = "Y"; ! want[library["_open"] "." definer["_open"]] = "Y"; ! want[library["_perror"] "." definer["_perror"]] = "Y"; ! want[library["_printf"] "." definer["_printf"]] = "Y"; ! want[library["_read"] "." definer["_read"]] = "Y"; ! want[library["_sbrk"] "." definer["_sbrk"]] = "Y"; ! want[library["curbrk"] "." definer["curbrk"]] = "Y"; ! want[library["_sigvec"] "." definer["_sigvec"]] = "Y"; ! want[library["_sprintf"] "." definer["_sprintf"]] = "Y"; ! want[library["_strlen"] "." definer["_strlen"]] = "Y"; ! want[library["_syscall"] "." definer["_syscall"]] = "Y"; ! want[library["_write"] "." definer["_write"]] = "Y"; ! want[library["_writev"] "." definer["_writev"]] = "Y"; + want[library["_gethostbyname"] "." definer["_gethostbyname"]] = "Y"; + want[library["_gethostbyaddr"] "." definer["_gethostbyaddr"]] = "Y"; + want[library["_sethostent"] "." definer["_sethostent"]] = "Y"; + want[library["_res_querydomain"] "." definer["_res_querydomain"]] = "Y"; + want[library["_res_mkquery"] "." definer["_res_mkquery"]] = "Y"; + want[library["_res_send"] "." definer["_res_send"]] = "Y"; + want[library["_dn_expand"] "." definer["_dn_expand"]] = "Y"; + want[library["_res_init"] "." definer["_res_init"]] = "Y"; + want[library["__endhtent"] "." definer["__endhtent"]] = "Y"; + want[library["__sethtent"] "." definer["__sethtent"]] = "Y"; + want[library["__gethtbyaddr"] "." definer["__gethtbyaddr"]] = "Y"; + want[library["__gethtbyname"] "." definer["__gethtbyname"]] = "Y"; + want[library["__gethtent"] "." definer["__gethtent"]] = "Y"; + want[library["__getrhbyaddr"] "." definer["__getrhbyaddr"]] = "Y"; + want[library["_endhostent"] "." definer["_endhostent"]] = "Y"; + want[library["_sethostfile"] "." definer["_sethostfile"]] = "Y"; + want[library["_hostalias"] "." definer["_hostalias"]] = "Y"; + want[library["_res_query"] "." definer["_res_query"]] = "Y"; + want[library["_res_search"] "." definer["_res_search"]] = "Y"; + want[library["__res_close"] "." definer["__res_close"]] = "Y"; + want[library["_fp_query"] "." definer["_fp_query"]] = "Y"; + want[library["_p_cdname"] "." definer["_p_cdname"]] = "Y"; + want[library["_p_class"] "." definer["_p_class"]] = "Y"; + want[library["_p_query"] "." definer["_p_query"]] = "Y"; + want[library["_p_rr"] "." definer["_p_rr"]] = "Y"; + want[library["_p_type"] "." definer["_p_type"]] = "Y"; + want[library["__getlong"] "." definer["__getlong"]] = "Y"; + want[library["__getshort"] "." definer["__getshort"]] = "Y"; + want[library["_dn_comp"] "." definer["_dn_comp"]] = "Y"; + want[library["_dn_skipname"] "." definer["_dn_skipname"]] = "Y"; + want[library["_putlong"] "." definer["_putlong"]] = "Y"; + want[library["_putshort"] "." definer["_putshort"]] = "Y"; + want[library["_strcasecmp"] "." definer["_strcasecmp"]] = "Y"; + want[library["_strncasecmp"] "." definer["_strncasecmp"]] = "Y"; + want[library["__res_opcodes"] "." definer["__res_opcodes"]] = "Y"; + want[library["__res_resultcodes"] "." definer["__res_resultcodes"]] = "Y"; + want[library["__res"] "." definer["__res"]] = "Y"; + want[library["_h_errno"] "." definer["_h_errno"]] = "Y"; + # now take transitive closure of wanted modules for (needmore = "Y"; needmore == "Y"; needmore = "N") { for ( i = 0; i < epcount; i++) { ! if (want[library[ep[i]] "." definer[ep[i]]] != "Y") { ! want[library[ep[i]] "." definer[ep[i]]] = "N"; for ( j = 0; j < refcount[ep[i]]; j++ ) { if (want[referrer[ep[i] "." j]] == "Y") { ! want[library[ep[i]] "." definer[ep[i]]] = "Y"; needmore = "Y"; break; } *************** *** 120,125 **** # write out all wanted module name and entry points for ( i = 0 ; i < epcount ; i++) ! if (want[definer[ep[i]]] == "Y") printf "%s %s\n", definer[ep[i]], ep[i]; } --- 162,167 ---- # write out all wanted module name and entry points for ( i = 0 ; i < epcount ; i++) ! if (want[library[ep[i]] "." definer[ep[i]]] == "Y") printf "%s %s\n", definer[ep[i]], ep[i]; } *** overhead/class/machdep/aos_rt/getlist.awk Wed Nov 22 13:25:28 1989 --- overhead/class/machdep/aos_rt/getlist.awk.NEW Mon Jan 7 23:07:07 1991 *************** *** 6,26 **** # data structures used here: # # definer[entry-point-name] = module-name # epcount = # entry-point-name's seen so far # ep[k] = k'th entry-point-name # refcount[entry-point-name] = number of references by wanted modules # referrer[entry-point-name.k] = k'th module-name with an undefined reference to this entry-point-name ! # want[module-name] = "Y" if this module wanted # search output of nm and set up definers and referrers / [ATDBC] / { ! if (definer[$5] == "") definer[ep[epcount++] = $5] = $2; } / U / { ! referrer[$4 "." refcount[$4]++] = $2; } # postprocessing --- 6,29 ---- # data structures used here: # # definer[entry-point-name] = module-name + # library[entry-point-name] = library-name # epcount = # entry-point-name's seen so far # ep[k] = k'th entry-point-name # refcount[entry-point-name] = number of references by wanted modules # referrer[entry-point-name.k] = k'th module-name with an undefined reference to this entry-point-name ! # want[library-name . module-name] = "Y" if this module wanted # search output of nm and set up definers and referrers / [ATDBC] / { ! if (definer[$5] == "") { definer[ep[epcount++] = $5] = $2; + library[$5] = $1; + } } / U / { ! referrer[$4 "." refcount[$4]++] = $1 "." $2; } # postprocessing *************** *** 30,114 **** # Specify which entry points we definitely want. Edit this list to add entry points. ! want[definer["_class_RoutineStruct"]] = "Y"; ! want[definer["_class_Error"]] = "Y"; ! want[definer["_ProgramName"]] = "Y"; ! # want[definer["_class_Header"]] = "Y"; ! want[definer["_class_NewObject"]] = "Y"; ! want[definer["_class_Load"]] = "Y"; ! want[definer["_class_IsLoaded"]] = "Y"; ! want[definer["_class_Lookup"]] = "Y"; ! want[definer["_class_IsType"]] = "Y"; ! want[definer["_class_IsTypeByName"]] = "Y"; ! want[definer["_class_EnterInfo"]] = "Y"; ! want[definer["_class_SetClassPath"]] = "Y"; ! want[definer["_class_PrependClassPath"]] = "Y"; ! want[definer["_class_GetEText"]] = "Y"; ! want[definer["_environ"]] = "Y"; ! want[definer["__exit"]] = "Y"; ! want[definer["_abort"]] = "Y"; ! want[definer["_alloca"]] = "Y"; ! want[definer["_blt"]] = "Y"; ! want[definer["_bcopy"]] = "Y"; ! want[definer["_brk"]] = "Y"; ! want[definer["_bzero"]] = "Y"; ! want[definer["_calloc"]] = "Y"; ! want[definer["_cfree"]] = "Y"; ! want[definer["_errno"]] = "Y"; ! want[definer["_close"]] = "Y"; ! want[definer["_errno"]] = "Y"; ! want[definer["_creat"]] = "Y"; ! want[definer["__ctype_"]] = "Y"; ! want[definer["__doprnt"]] = "Y"; ! want[definer["_ecvt"]] = "Y"; ! want[definer["_fcvt"]] = "Y"; ! want[definer["_sys_errlist"]] = "Y"; ! want[definer["_sys_nerr"]] = "Y"; ! want[definer["_exit"]] = "Y"; ! want[definer["_fcntl"]] = "Y"; ! want[definer["__filbuf"]] = "Y"; ! want[definer["__iob"]] = "Y"; ! want[definer["__cleanup"]] = "Y"; ! want[definer["__flsbuf"]] = "Y"; ! want[definer["_fclose"]] = "Y"; ! want[definer["_fflush"]] = "Y"; ! want[definer["_fopen"]] = "Y"; ! want[definer["_fprintf"]] = "Y"; ! want[definer["_fread"]] = "Y"; ! want[definer["_fstat"]] = "Y"; ! want[definer["_fwrite"]] = "Y"; ! want[definer["_gcvt"]] = "Y"; ! want[definer["_getdtablesize"]] = "Y"; ! want[definer["_getpagesize"]] = "Y"; ! want[definer["_ioctl"]] = "Y"; ! want[definer["_isatty"]] = "Y"; ! want[definer["_lseek"]] = "Y"; ! want[definer["_malloc"]] = "Y"; ! want[definer["_modf"]] = "Y"; ! want[definer["_realloc"]] = "Y"; ! want[definer["_free"]] = "Y"; ! want[definer["_open"]] = "Y"; ! want[definer["_perror"]] = "Y"; ! want[definer["_printf"]] = "Y"; ! want[definer["_read"]] = "Y"; ! want[definer["_sbrk"]] = "Y"; ! want[definer["curbrk"]] = "Y"; ! want[definer["_sigvec"]] = "Y"; ! want[definer["_sprintf"]] = "Y"; ! want[definer["_strlen"]] = "Y"; ! want[definer["_syscall"]] = "Y"; ! want[definer["_write"]] = "Y"; ! want[definer["_writev"]] = "Y"; # now take transitive closure of wanted modules for (needmore = "Y"; needmore == "Y"; needmore = "N") { for ( i = 0; i < epcount; i++) { ! if (want[definer[ep[i]]] != "Y") { ! want[definer[ep[i]]] = "N"; for ( j = 0; j < refcount[ep[i]]; j++ ) { if (want[referrer[ep[i] "." j]] == "Y") { ! want[definer[ep[i]]] = "Y"; needmore = "Y"; break; } --- 33,156 ---- # Specify which entry points we definitely want. Edit this list to add entry points. ! want[library["_class_RoutineStruct"] "." definer["_class_RoutineStruct"]] = "Y"; ! want[library["_class_Error"] "." definer["_class_Error"]] = "Y"; ! want[library["_ProgramName"] "." definer["_ProgramName"]] = "Y"; ! # want[library["_class_Header"] "." definer["_class_Header"]] = "Y"; ! want[library["_class_NewObject"] "." definer["_class_NewObject"]] = "Y"; ! want[library["_class_Load"] "." definer["_class_Load"]] = "Y"; ! want[library["_class_IsLoaded"] "." definer["_class_IsLoaded"]] = "Y"; ! want[library["_class_Lookup"] "." definer["_class_Lookup"]] = "Y"; ! want[library["_class_IsType"] "." definer["_class_IsType"]] = "Y"; ! want[library["_class_IsTypeByName"] "." definer["_class_IsTypeByName"]] = "Y"; ! want[library["_class_EnterInfo"] "." definer["_class_EnterInfo"]] = "Y"; ! want[library["_class_SetClassPath"] "." definer["_class_SetClassPath"]] = "Y"; ! want[library["_class_PrependClassPath"] "." definer["_class_PrependClassPath"]] = "Y"; ! want[library["_class_GetEText"] "." definer["_class_GetEText"]] = "Y"; ! want[library["_environ"] "." definer["_environ"]] = "Y"; ! want[library["__exit"] "." definer["__exit"]] = "Y"; ! want[library["_abort"] "." definer["_abort"]] = "Y"; ! want[library["_alloca"] "." definer["_alloca"]] = "Y"; ! want[library["_blt"] "." definer["_blt"]] = "Y"; ! want[library["_bcopy"] "." definer["_bcopy"]] = "Y"; ! want[library["_brk"] "." definer["_brk"]] = "Y"; ! want[library["_bzero"] "." definer["_bzero"]] = "Y"; ! want[library["_calloc"] "." definer["_calloc"]] = "Y"; ! want[library["_cfree"] "." definer["_cfree"]] = "Y"; ! want[library["_errno"] "." definer["_errno"]] = "Y"; ! want[library["_close"] "." definer["_close"]] = "Y"; ! want[library["_errno"] "." definer["_errno"]] = "Y"; ! want[library["_creat"] "." definer["_creat"]] = "Y"; ! want[library["__ctype_"] "." definer["__ctype_"]] = "Y"; ! want[library["__doprnt"] "." definer["__doprnt"]] = "Y"; ! want[library["_ecvt"] "." definer["_ecvt"]] = "Y"; ! want[library["_fcvt"] "." definer["_fcvt"]] = "Y"; ! want[library["_sys_errlist"] "." definer["_sys_errlist"]] = "Y"; ! want[library["_sys_nerr"] "." definer["_sys_nerr"]] = "Y"; ! want[library["_exit"] "." definer["_exit"]] = "Y"; ! want[library["_fcntl"] "." definer["_fcntl"]] = "Y"; ! want[library["__filbuf"] "." definer["__filbuf"]] = "Y"; ! want[library["__iob"] "." definer["__iob"]] = "Y"; ! want[library["__cleanup"] "." definer["__cleanup"]] = "Y"; ! want[library["__flsbuf"] "." definer["__flsbuf"]] = "Y"; ! want[library["_fclose"] "." definer["_fclose"]] = "Y"; ! want[library["_fflush"] "." definer["_fflush"]] = "Y"; ! want[library["_fopen"] "." definer["_fopen"]] = "Y"; ! want[library["_fprintf"] "." definer["_fprintf"]] = "Y"; ! want[library["_fread"] "." definer["_fread"]] = "Y"; ! want[library["_fstat"] "." definer["_fstat"]] = "Y"; ! want[library["_fwrite"] "." definer["_fwrite"]] = "Y"; ! want[library["_gcvt"] "." definer["_gcvt"]] = "Y"; ! want[library["_getdtablesize"] "." definer["_getdtablesize"]] = "Y"; ! want[library["_getpagesize"] "." definer["_getpagesize"]] = "Y"; ! want[library["_ioctl"] "." definer["_ioctl"]] = "Y"; ! want[library["_isatty"] "." definer["_isatty"]] = "Y"; ! want[library["_lseek"] "." definer["_lseek"]] = "Y"; ! want[library["_malloc"] "." definer["_malloc"]] = "Y"; ! want[library["_modf"] "." definer["_modf"]] = "Y"; ! want[library["_realloc"] "." definer["_realloc"]] = "Y"; ! want[library["_free"] "." definer["_free"]] = "Y"; ! want[library["_open"] "." definer["_open"]] = "Y"; ! want[library["_perror"] "." definer["_perror"]] = "Y"; ! want[library["_printf"] "." definer["_printf"]] = "Y"; ! want[library["_read"] "." definer["_read"]] = "Y"; ! want[library["_sbrk"] "." definer["_sbrk"]] = "Y"; ! want[library["curbrk"] "." definer["curbrk"]] = "Y"; ! want[library["_sigvec"] "." definer["_sigvec"]] = "Y"; ! want[library["_sprintf"] "." definer["_sprintf"]] = "Y"; ! want[library["_strlen"] "." definer["_strlen"]] = "Y"; ! want[library["_syscall"] "." definer["_syscall"]] = "Y"; ! want[library["_write"] "." definer["_write"]] = "Y"; ! want[library["_writev"] "." definer["_writev"]] = "Y"; + want[library["_gethostbyname"] "." definer["_gethostbyname"]] = "Y"; + want[library["_gethostbyaddr"] "." definer["_gethostbyaddr"]] = "Y"; + want[library["_sethostent"] "." definer["_sethostent"]] = "Y"; + want[library["_res_querydomain"] "." definer["_res_querydomain"]] = "Y"; + want[library["_res_mkquery"] "." definer["_res_mkquery"]] = "Y"; + want[library["_res_send"] "." definer["_res_send"]] = "Y"; + want[library["_dn_expand"] "." definer["_dn_expand"]] = "Y"; + want[library["_res_init"] "." definer["_res_init"]] = "Y"; + want[library["__endhtent"] "." definer["__endhtent"]] = "Y"; + want[library["__sethtent"] "." definer["__sethtent"]] = "Y"; + want[library["__gethtbyaddr"] "." definer["__gethtbyaddr"]] = "Y"; + want[library["__gethtbyname"] "." definer["__gethtbyname"]] = "Y"; + want[library["__gethtent"] "." definer["__gethtent"]] = "Y"; + want[library["__getrhbyaddr"] "." definer["__getrhbyaddr"]] = "Y"; + want[library["_endhostent"] "." definer["_endhostent"]] = "Y"; + want[library["_sethostfile"] "." definer["_sethostfile"]] = "Y"; + want[library["_hostalias"] "." definer["_hostalias"]] = "Y"; + want[library["_res_query"] "." definer["_res_query"]] = "Y"; + want[library["_res_search"] "." definer["_res_search"]] = "Y"; + want[library["__res_close"] "." definer["__res_close"]] = "Y"; + want[library["_fp_query"] "." definer["_fp_query"]] = "Y"; + want[library["_p_cdname"] "." definer["_p_cdname"]] = "Y"; + want[library["_p_class"] "." definer["_p_class"]] = "Y"; + want[library["_p_query"] "." definer["_p_query"]] = "Y"; + want[library["_p_rr"] "." definer["_p_rr"]] = "Y"; + want[library["_p_type"] "." definer["_p_type"]] = "Y"; + want[library["__getlong"] "." definer["__getlong"]] = "Y"; + want[library["__getshort"] "." definer["__getshort"]] = "Y"; + want[library["_dn_comp"] "." definer["_dn_comp"]] = "Y"; + want[library["_dn_skipname"] "." definer["_dn_skipname"]] = "Y"; + want[library["_putlong"] "." definer["_putlong"]] = "Y"; + want[library["_putshort"] "." definer["_putshort"]] = "Y"; + want[library["_strcasecmp"] "." definer["_strcasecmp"]] = "Y"; + want[library["_strncasecmp"] "." definer["_strncasecmp"]] = "Y"; + want[library["__res_opcodes"] "." definer["__res_opcodes"]] = "Y"; + want[library["__res_resultcodes"] "." definer["__res_resultcodes"]] = "Y"; + want[library["__res"] "." definer["__res"]] = "Y"; + want[library["_h_errno"] "." definer["_h_errno"]] = "Y"; + # now take transitive closure of wanted modules for (needmore = "Y"; needmore == "Y"; needmore = "N") { for ( i = 0; i < epcount; i++) { ! if (want[library[ep[i]] "." definer[ep[i]]] != "Y") { ! want[library[ep[i]] "." definer[ep[i]]] = "N"; for ( j = 0; j < refcount[ep[i]]; j++ ) { if (want[referrer[ep[i] "." j]] == "Y") { ! want[library[ep[i]] "." definer[ep[i]]] = "Y"; needmore = "Y"; break; } *************** *** 120,125 **** # write out all wanted module name and entry points for ( i = 0 ; i < epcount ; i++) ! if (want[definer[ep[i]]] == "Y") printf "%s %s\n", definer[ep[i]], ep[i]; } --- 162,167 ---- # write out all wanted module name and entry points for ( i = 0 ; i < epcount ; i++) ! if (want[library[ep[i]] "." definer[ep[i]]] == "Y") printf "%s %s\n", definer[ep[i]], ep[i]; } *** overhead/class/machdep/aos_rt/Imakefile Fri Dec 21 15:01:44 1990 --- overhead/class/machdep/aos_rt/Imakefile.NEW Mon Jan 7 23:07:06 1991 *************** *** 7,24 **** NormalObjectRule() NormalAsmPPRule() ! all:: globals.o entry.o doload.o ! globals.o: globals.spp globalrefs._h globalrefs._h: libc.eplist $(AWK) '{printf "\tglobalref(%s)\n", $$2}' libc.eplist >,globalrefs._h $(MV) ,globalrefs._h globalrefs._h ! libc.eplist: /lib/libc.a /lib/crt0.o getlist.awk $(RM) /tmp/libhack.a $(AR) /tmp/libhack.a /lib/crt0.o ! $(NM) -go /lib/libc.a /tmp/libhack.a | $(TR) ":" " " | \ $(AWK) -f getlist.awk >,libc.eplist $(MV) ,libc.eplist libc.eplist $(RM) /tmp/libhack.a --- 7,33 ---- NormalObjectRule() NormalAsmPPRule() ! #ifdef RESOLVER_ENV ! RESOLVER_LIB = $(RESOLVLIB) ! RESOLVER_CMD = /bin/sh -c 'if test $(RESOLVER_LIB); \ ! then ar x $(RESOLVER_LIB); fi; exit 0'; ! #else ! RESOLVER_LIB = ! RESOLVER_CMD = ! #endif ! all:: globals.o entry.o doload.o + globals.o: globals.spp globalrefs._h + globalrefs._h: libc.eplist $(AWK) '{printf "\tglobalref(%s)\n", $$2}' libc.eplist >,globalrefs._h $(MV) ,globalrefs._h globalrefs._h ! libc.eplist: /lib/libc.a /lib/crt0.o $(RESOLVER_LIB) getlist.awk $(RM) /tmp/libhack.a $(AR) /tmp/libhack.a /lib/crt0.o ! $(NM) -go $(RESOLVER_LIB) /lib/libc.a /tmp/libhack.a | $(TR) ":" " " | \ $(AWK) -f getlist.awk >,libc.eplist $(MV) ,libc.eplist libc.eplist $(RM) /tmp/libhack.a *************** *** 32,46 **** $(AWK) '{print $$1}' libc.eplist | $(SORT) -u > ,DelList._ $(MV) ,DelList._ DelList._ ! libcx.a: /lib/libc.a /lib/crt0.o DelList._ ! $(CP) /lib/libc.a ,libcx.a ! $(CHMODW) ,libcx.a ! $(AR) ,libcx.a /lib/crt0.o ! -ar d ,libcx.a `cat DelList._` ! $(RANLIB) ,libcx.a ! $(MV) ,libcx.a libcx.a ! all:: dofix.o clean:: ! $(RM) DelList._ libc.eplist globalrefs._h ,* libcx.a --- 41,61 ---- $(AWK) '{print $$1}' libc.eplist | $(SORT) -u > ,DelList._ $(MV) ,DelList._ DelList._ ! libcx.a: /lib/libc.a /lib/crt0.o $(RESOLVER_LIB) DelList._ ! rm -rf new ! mkdir new ! cd new; \ ! $(RESOLVER_CMD) \ ! $(CP) /lib/crt0.o crt0.o ; \ ! $(CP) /lib/libc.a ,libcx.a; \ ! $(CHMODW) ,libcx.a; \ ! ar q ,libcx.a *.o ! mv new/,libcx.a libcx.a ! -ar d libcx.a `cat DelList._` ! $(RANLIB) libcx.a ! rm -rf new ! all:: dofix.o clean:: ! $(RM) DelList._ libc.eplist globalrefs._h ,* libcx.a *** overhead/class/machdep/apollo_68k/makedo.csh Wed Nov 22 13:26:42 1989 --- overhead/class/machdep/apollo_68k/makedo.csh.NEW Tue Mar 20 22:54:39 1990 *************** *** 20,28 **** # ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS # SOFTWARE. # ! # $Header: /afs/.andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/overhead/class/machdep/apollo_68k/RCS/makedo.csh,v 1.1 89/09/21 13:37:38 zs01 Exp $ # $ACIS:makedo 1.2$ ! # $Source: /afs/.andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/overhead/class/machdep/apollo_68k/RCS/makedo.csh,v $ # Script to convert normal object files into a dynamically loadable module. --- 20,28 ---- # ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS # SOFTWARE. # ! # $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/overhead/class/machdep/apollo_68k/RCS/makedo.csh,v 1.1 89/09/21 13:37:38 zs01 Exp $ # $ACIS:makedo 1.2$ ! # $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/overhead/class/machdep/apollo_68k/RCS/makedo.csh,v $ # Script to convert normal object files into a dynamically loadable module. *** overhead/class/machdep/dec_mips/Imakefile Fri Dec 21 15:01:45 1990 --- overhead/class/machdep/dec_mips/Imakefile.NEW Mon Jan 7 23:07:12 1991 *************** *** 7,28 **** NormalObjectRule() NormalAsmPPRule() ! all:: globals.o entry.o doload.o ! globals.o: globalrefs._h ! entry.o: entry.s ! cc -c -I. entry.s globalrefs._h: libc.eplist $(AWK) '{printf "\tglobalref(%s)\n", $$2}' libc.eplist >,globalrefs._h $(MV) ,globalrefs._h globalrefs._h ! libc.eplist: $(MIPSLIBC_G0).a /lib/crt0.o getlist.awk $(RM) /tmp/libhack.a $(AR) /tmp/libhack.a /lib/crt0.o ! $(NM) -go $(MIPSLIBC_G0).a /tmp/libhack.a | $(TR) ":" " " | \ ! $(AWK) -f getlist.awk >,libc.eplist $(MV) ,libc.eplist libc.eplist $(RM) /tmp/libhack.a --- 7,37 ---- NormalObjectRule() NormalAsmPPRule() ! #ifdef RESOLVER_ENV ! RESOLVER_LIB = $(RESOLVLIB) ! RESOLVER_CMD = /bin/sh -c 'if test $(RESOLVER_LIB); \ ! then ar x $(RESOLVER_LIB); fi; exit 0'; ! #else ! RESOLVER_LIB = ! RESOLVER_CMD = ! #endif ! all:: globals.o entry.o doload.o ! globals.o: globalrefs._h + entry.o: entry.s + cc -c -I. entry.s + globalrefs._h: libc.eplist $(AWK) '{printf "\tglobalref(%s)\n", $$2}' libc.eplist >,globalrefs._h $(MV) ,globalrefs._h globalrefs._h ! libc.eplist: $(MIPSLIBC_G0).a /lib/crt0.o $(RESOLVER_LIB) getlist.awk $(RM) /tmp/libhack.a $(AR) /tmp/libhack.a /lib/crt0.o ! $(NM) -go $(RESOLVER_LIB) $(MIPSLIBC_G0).a /tmp/libhack.a | \ ! $(TR) ":" " " | $(AWK) -f getlist.awk >,libc.eplist $(MV) ,libc.eplist libc.eplist $(RM) /tmp/libhack.a *************** *** 35,49 **** $(AWK) '{print $$1}' libc.eplist | $(SORT) -u > ,DelList._ $(MV) ,DelList._ DelList._ ! libcx.a: $(MIPSLIBC_G0).a DelList._ rm -rf new mkdir new cd new;\ ! ar x $(MIPSLIBC_G0).a;\ ! ar cq ,libcx.a *.o /lib/crt0.o;\ ! ar d ,libcx.a `cat ../DelList._`;\ ! $(RANLIB) ,libcx.a $(MV) new/,libcx.a libcx.a rm -rf new ProgramTarget(dofix,dofix.o,,) --- 44,60 ---- $(AWK) '{print $$1}' libc.eplist | $(SORT) -u > ,DelList._ $(MV) ,DelList._ DelList._ ! libcx.a: $(MIPSLIBC_G0).a /lib/crt0.o $(RESOLVER_LIB) DelList._ rm -rf new mkdir new cd new;\ ! $(RESOLVER_CMD) \ ! $(CP) /lib/crt0.o crt0.o ; \ ! ar x $(MIPSLIBC_G0).a ; \ ! ar cq ,libcx.a *.o $(MV) new/,libcx.a libcx.a + -ar d libcx.a `cat DelList._` + $(RANLIB) libcx.a rm -rf new ProgramTarget(dofix,dofix.o,,) *************** *** 50,53 **** InstallProgram(dofix,$(DESTDIR)/bin) clean:: ! $(RM) DelList._ libc.eplist globalrefs._h ,* libcx.a --- 61,64 ---- InstallProgram(dofix,$(DESTDIR)/bin) clean:: ! $(RM) DelList._ libc.eplist globalrefs._h ,* libcx.a *** overhead/class/machdep/dec_mips/doload.c Fri Dec 21 15:01:47 1990 --- overhead/class/machdep/dec_mips/doload.c.NEW Tue Dec 4 09:07:32 1990 *************** *** 8,20 **** Author: Zalman Stern July 1989 */ #include #include #include #include #include - - #include /* sys/types.h */ char *malloc(); char *realloc(); --- 8,19 ---- Author: Zalman Stern July 1989 */ + #include /* sys/types.h */ #include #include #include #include #include char *malloc(); char *realloc(); *** overhead/class/machdep/dec_mips/getlist.awk Mon Aug 6 11:13:44 1990 --- overhead/class/machdep/dec_mips/getlist.awk.NEW Mon Jan 7 23:07:13 1991 *************** *** 6,11 **** --- 6,12 ---- # data structures used here: # # definer[entry-point-name] = module-name + # library[entry-point-name] = library-name # epcount = # entry-point-name's seen so far # ep[k] = k'th entry-point-name # refcount[entry-point-name] = number of references by wanted modules *************** *** 15,26 **** # search output of nm and set up definers and referrers / [ATDBCEGSR] / { ! if (definer[$5] == "") definer[ep[epcount++] = $5] = $2; } / U / { ! referrer[$4 "." refcount[$4]++] = $2; } # postprocessing --- 16,29 ---- # search output of nm and set up definers and referrers / [ATDBCEGSR] / { ! if (definer[$5] == "") { definer[ep[epcount++] = $5] = $2; + library[$5] = $1; + } } / U / { ! referrer[$4 "." refcount[$4]++] = $1 "." $2; } # postprocessing *************** *** 30,114 **** # Specify which entry points we definitely want. Edit this list to add entry points. ! want[definer["class_RoutineStruct"]] = "Y"; ! want[definer["class_Error"]] = "Y"; ! want[definer["ProgramName"]] = "Y"; ! # want[definer["class_Header"]] = "Y"; ! want[definer["class_NewObject"]] = "Y"; ! want[definer["class_Load"]] = "Y"; ! want[definer["class_IsLoaded"]] = "Y"; ! want[definer["class_Lookup"]] = "Y"; ! want[definer["class_IsType"]] = "Y"; ! want[definer["class_IsTypeByName"]] = "Y"; ! want[definer["class_EnterInfo"]] = "Y"; ! want[definer["class_SetClassPath"]] = "Y"; ! want[definer["class_PrependClassPath"]] = "Y"; ! want[definer["class_GetEText"]] = "Y"; ! want[definer["environ"]] = "Y"; ! want[definer["_exit"]] = "Y"; ! want[definer["abort"]] = "Y"; ! want[definer["alloca"]] = "Y"; ! want[definer["blt"]] = "Y"; ! want[definer["bcopy"]] = "Y"; ! want[definer["brk"]] = "Y"; ! want[definer["bzero"]] = "Y"; ! want[definer["calloc"]] = "Y"; ! want[definer["cfree"]] = "Y"; ! want[definer["errno"]] = "Y"; ! want[definer["close"]] = "Y"; ! want[definer["errno"]] = "Y"; ! want[definer["creat"]] = "Y"; ! want[definer["_ctype_"]] = "Y"; ! want[definer["_doprnt"]] = "Y"; ! want[definer["ecvt"]] = "Y"; ! want[definer["fcvt"]] = "Y"; ! want[definer["sys_errlist"]] = "Y"; ! want[definer["sys_nerr"]] = "Y"; ! want[definer["exit"]] = "Y"; ! want[definer["fcntl"]] = "Y"; ! want[definer["_filbuf"]] = "Y"; ! want[definer["_iob"]] = "Y"; ! want[definer["_cleanup"]] = "Y"; ! want[definer["_flsbuf"]] = "Y"; ! want[definer["fclose"]] = "Y"; ! want[definer["fflush"]] = "Y"; ! want[definer["fopen"]] = "Y"; ! want[definer["fprintf"]] = "Y"; ! want[definer["fread"]] = "Y"; ! want[definer["fstat"]] = "Y"; ! want[definer["fwrite"]] = "Y"; ! want[definer["gcvt"]] = "Y"; ! want[definer["getdtablesize"]] = "Y"; ! want[definer["getpagesize"]] = "Y"; ! want[definer["ioctl"]] = "Y"; ! want[definer["isatty"]] = "Y"; ! want[definer["lseek"]] = "Y"; ! want[definer["malloc"]] = "Y"; ! want[definer["modf"]] = "Y"; ! want[definer["realloc"]] = "Y"; ! want[definer["free"]] = "Y"; ! want[definer["open"]] = "Y"; ! want[definer["perror"]] = "Y"; ! want[definer["printf"]] = "Y"; ! want[definer["read"]] = "Y"; ! want[definer["sbrk"]] = "Y"; ! want[definer["curbrk"]] = "Y"; ! want[definer["sigvec"]] = "Y"; ! want[definer["sprintf"]] = "Y"; ! want[definer["strlen"]] = "Y"; ! want[definer["syscall"]] = "Y"; ! want[definer["write"]] = "Y"; ! want[definer["writev"]] = "Y"; # now take transitive closure of wanted modules for (needmore = "Y"; needmore == "Y"; needmore = "N") { for ( i = 0; i < epcount; i++) { ! if (want[definer[ep[i]]] != "Y") { ! want[definer[ep[i]]] = "N"; for ( j = 0; j < refcount[ep[i]]; j++ ) { if (want[referrer[ep[i] "." j]] == "Y") { ! want[definer[ep[i]]] = "Y"; needmore = "Y"; break; } --- 33,156 ---- # Specify which entry points we definitely want. Edit this list to add entry points. ! want[library["class_RoutineStruct"] "." definer["class_RoutineStruct"]] = "Y"; ! want[library["class_Error"] "." definer["class_Error"]] = "Y"; ! want[library["ProgramName"] "." definer["ProgramName"]] = "Y"; ! # want[library["class_Header"] "." definer["class_Header"]] = "Y"; ! want[library["class_NewObject"] "." definer["class_NewObject"]] = "Y"; ! want[library["class_Load"] "." definer["class_Load"]] = "Y"; ! want[library["class_IsLoaded"] "." definer["class_IsLoaded"]] = "Y"; ! want[library["class_Lookup"] "." definer["class_Lookup"]] = "Y"; ! want[library["class_IsType"] "." definer["class_IsType"]] = "Y"; ! want[library["class_IsTypeByName"] "." definer["class_IsTypeByName"]] = "Y"; ! want[library["class_EnterInfo"] "." definer["class_EnterInfo"]] = "Y"; ! want[library["class_SetClassPath"] "." definer["class_SetClassPath"]] = "Y"; ! want[library["class_PrependClassPath"] "." definer["class_PrependClassPath"]] = "Y"; ! want[library["class_GetEText"] "." definer["class_GetEText"]] = "Y"; ! want[library["environ"] "." definer["environ"]] = "Y"; ! want[library["_exit"] "." definer["_exit"]] = "Y"; ! want[library["abort"] "." definer["abort"]] = "Y"; ! want[library["alloca"] "." definer["alloca"]] = "Y"; ! want[library["blt"] "." definer["blt"]] = "Y"; ! want[library["bcopy"] "." definer["bcopy"]] = "Y"; ! want[library["brk"] "." definer["brk"]] = "Y"; ! want[library["bzero"] "." definer["bzero"]] = "Y"; ! want[library["calloc"] "." definer["calloc"]] = "Y"; ! want[library["cfree"] "." definer["cfree"]] = "Y"; ! want[library["errno"] "." definer["errno"]] = "Y"; ! want[library["close"] "." definer["close"]] = "Y"; ! want[library["errno"] "." definer["errno"]] = "Y"; ! want[library["creat"] "." definer["creat"]] = "Y"; ! want[library["_ctype_"] "." definer["_ctype_"]] = "Y"; ! want[library["_doprnt"] "." definer["_doprnt"]] = "Y"; ! want[library["ecvt"] "." definer["ecvt"]] = "Y"; ! want[library["fcvt"] "." definer["fcvt"]] = "Y"; ! want[library["sys_errlist"] "." definer["sys_errlist"]] = "Y"; ! want[library["sys_nerr"] "." definer["sys_nerr"]] = "Y"; ! want[library["exit"] "." definer["exit"]] = "Y"; ! want[library["fcntl"] "." definer["fcntl"]] = "Y"; ! want[library["_filbuf"] "." definer["_filbuf"]] = "Y"; ! want[library["_iob"] "." definer["_iob"]] = "Y"; ! want[library["_cleanup"] "." definer["_cleanup"]] = "Y"; ! want[library["_flsbuf"] "." definer["_flsbuf"]] = "Y"; ! want[library["fclose"] "." definer["fclose"]] = "Y"; ! want[library["fflush"] "." definer["fflush"]] = "Y"; ! want[library["fopen"] "." definer["fopen"]] = "Y"; ! want[library["fprintf"] "." definer["fprintf"]] = "Y"; ! want[library["fread"] "." definer["fread"]] = "Y"; ! want[library["fstat"] "." definer["fstat"]] = "Y"; ! want[library["fwrite"] "." definer["fwrite"]] = "Y"; ! want[library["gcvt"] "." definer["gcvt"]] = "Y"; ! want[library["getdtablesize"] "." definer["getdtablesize"]] = "Y"; ! want[library["getpagesize"] "." definer["getpagesize"]] = "Y"; ! want[library["ioctl"] "." definer["ioctl"]] = "Y"; ! want[library["isatty"] "." definer["isatty"]] = "Y"; ! want[library["lseek"] "." definer["lseek"]] = "Y"; ! want[library["malloc"] "." definer["malloc"]] = "Y"; ! want[library["modf"] "." definer["modf"]] = "Y"; ! want[library["realloc"] "." definer["realloc"]] = "Y"; ! want[library["free"] "." definer["free"]] = "Y"; ! want[library["open"] "." definer["open"]] = "Y"; ! want[library["perror"] "." definer["perror"]] = "Y"; ! want[library["printf"] "." definer["printf"]] = "Y"; ! want[library["read"] "." definer["read"]] = "Y"; ! want[library["sbrk"] "." definer["sbrk"]] = "Y"; ! want[library["curbrk"] "." definer["curbrk"]] = "Y"; ! want[library["sigvec"] "." definer["sigvec"]] = "Y"; ! want[library["sprintf"] "." definer["sprintf"]] = "Y"; ! want[library["strlen"] "." definer["strlen"]] = "Y"; ! want[library["syscall"] "." definer["syscall"]] = "Y"; ! want[library["write"] "." definer["write"]] = "Y"; ! want[library["writev"] "." definer["writev"]] = "Y"; + want[library["gethostbyname"] "." definer["gethostbyname"]] = "Y"; + want[library["gethostbyaddr"] "." definer["gethostbyaddr"]] = "Y"; + want[library["sethostent"] "." definer["sethostent"]] = "Y"; + want[library["res_querydomain"] "." definer["res_querydomain"]] = "Y"; + want[library["res_mkquery"] "." definer["res_mkquery"]] = "Y"; + want[library["res_send"] "." definer["res_send"]] = "Y"; + want[library["dn_expand"] "." definer["dn_expand"]] = "Y"; + want[library["res_init"] "." definer["res_init"]] = "Y"; + want[library["_endhtent"] "." definer["_endhtent"]] = "Y"; + want[library["_sethtent"] "." definer["_sethtent"]] = "Y"; + want[library["_gethtbyaddr"] "." definer["_gethtbyaddr"]] = "Y"; + want[library["_gethtbyname"] "." definer["_gethtbyname"]] = "Y"; + want[library["_gethtent"] "." definer["_gethtent"]] = "Y"; + want[library["_getrhbyaddr"] "." definer["_getrhbyaddr"]] = "Y"; + want[library["endhostent"] "." definer["endhostent"]] = "Y"; + want[library["sethostfile"] "." definer["sethostfile"]] = "Y"; + want[library["hostalias"] "." definer["hostalias"]] = "Y"; + want[library["res_query"] "." definer["res_query"]] = "Y"; + want[library["res_search"] "." definer["res_search"]] = "Y"; + want[library["_res_close"] "." definer["_res_close"]] = "Y"; + want[library["fp_query"] "." definer["fp_query"]] = "Y"; + want[library["p_cdname"] "." definer["p_cdname"]] = "Y"; + want[library["p_class"] "." definer["p_class"]] = "Y"; + want[library["p_query"] "." definer["p_query"]] = "Y"; + want[library["p_rr"] "." definer["p_rr"]] = "Y"; + want[library["p_type"] "." definer["p_type"]] = "Y"; + want[library["_getlong"] "." definer["_getlong"]] = "Y"; + want[library["_getshort"] "." definer["_getshort"]] = "Y"; + want[library["dn_comp"] "." definer["dn_comp"]] = "Y"; + want[library["dn_skipname"] "." definer["dn_skipname"]] = "Y"; + want[library["putlong"] "." definer["putlong"]] = "Y"; + want[library["putshort"] "." definer["putshort"]] = "Y"; + want[library["strcasecmp"] "." definer["strcasecmp"]] = "Y"; + want[library["strncasecmp"] "." definer["strncasecmp"]] = "Y"; + want[library["_res_opcodes"] "." definer["_res_opcodes"]] = "Y"; + want[library["_res_resultcodes"] "." definer["_res_resultcodes"]] = "Y"; + want[library["_res"] "." definer["_res"]] = "Y"; + want[library["h_errno"] "." definer["h_errno"]] = "Y"; + # now take transitive closure of wanted modules for (needmore = "Y"; needmore == "Y"; needmore = "N") { for ( i = 0; i < epcount; i++) { ! if (want[library[ep[i]] "." definer[ep[i]]] != "Y") { ! want[library[ep[i]] "." definer[ep[i]]] = "N"; for ( j = 0; j < refcount[ep[i]]; j++ ) { if (want[referrer[ep[i] "." j]] == "Y") { ! want[library[ep[i]] "." definer[ep[i]]] = "Y"; needmore = "Y"; break; } *************** *** 121,127 **** # Some versions of ar(1) have name length limits that result in the "o" being truncated. # There is a hack below that prints out the "o" if it isn't there. Ar(1) should be fixed. for ( i = 0 ; i < epcount ; i++) ! if (want[definer[ep[i]]] == "Y") if(definer[ep[i]] ~ /^*\.o$/) printf "%s %s\n", definer[ep[i]], ep[i]; else --- 163,169 ---- # Some versions of ar(1) have name length limits that result in the "o" being truncated. # There is a hack below that prints out the "o" if it isn't there. Ar(1) should be fixed. for ( i = 0 ; i < epcount ; i++) ! if (want[library[ep[i]] "." definer[ep[i]]] == "Y") if(definer[ep[i]] ~ /^*\.o$/) printf "%s %s\n", definer[ep[i]], ep[i]; else *** overhead/class/machdep/dec_vax/Imakefile Fri Dec 21 15:01:50 1990 --- overhead/class/machdep/dec_vax/Imakefile.NEW Mon Jan 7 23:07:16 1991 *************** *** 7,24 **** NormalObjectRule() NormalAsmPPRule() ! all:: globals.o entry.o doload.o ! globals.o: globals.spp globalrefs._h globalrefs._h: libc.eplist $(AWK) '{printf "\tglobalref(%s)\n", $$2}' libc.eplist >,globalrefs._h $(MV) ,globalrefs._h globalrefs._h ! libc.eplist: /lib/libc.a /lib/crt0.o getlist.awk $(RM) /tmp/libhack.a $(AR) /tmp/libhack.a /lib/crt0.o ! $(NM) -go /lib/libc.a /tmp/libhack.a | $(TR) ":" " " | \ $(AWK) -f getlist.awk >,libc.eplist $(MV) ,libc.eplist libc.eplist $(RM) /tmp/libhack.a --- 7,33 ---- NormalObjectRule() NormalAsmPPRule() ! #ifdef RESOLVER_ENV ! RESOLVER_LIB = $(RESOLVLIB) ! RESOLVER_CMD = /bin/sh -c 'if test $(RESOLVER_LIB); \ ! then ar x $(RESOLVER_LIB); fi; exit 0'; ! #else ! RESOLVER_LIB = ! RESOLVER_CMD = ! #endif ! all:: globals.o entry.o doload.o + globals.o: globals.spp globalrefs._h + globalrefs._h: libc.eplist $(AWK) '{printf "\tglobalref(%s)\n", $$2}' libc.eplist >,globalrefs._h $(MV) ,globalrefs._h globalrefs._h ! libc.eplist: /lib/libc.a /lib/crt0.o $(RESOLVER_LIB) getlist.awk $(RM) /tmp/libhack.a $(AR) /tmp/libhack.a /lib/crt0.o ! $(NM) -go $(RESOLVER_LIB) /lib/libc.a /tmp/libhack.a | $(TR) ":" " " | \ $(AWK) -f getlist.awk >,libc.eplist $(MV) ,libc.eplist libc.eplist $(RM) /tmp/libhack.a *************** *** 32,46 **** $(AWK) '{print $$1}' libc.eplist | $(SORT) -u > ,DelList._ $(MV) ,DelList._ DelList._ ! libcx.a: /lib/libc.a /lib/crt0.o DelList._ ! $(CP) /lib/libc.a ,libcx.a ! $(CHMODW) ,libcx.a ! $(AR) ,libcx.a /lib/crt0.o ! -ar d ,libcx.a `cat DelList._` ! $(RANLIB) ,libcx.a ! $(MV) ,libcx.a libcx.a ! all:: dofix.o clean:: ! $(RM) DelList._ libc.eplist globalrefs._h ,* libcx.a --- 41,61 ---- $(AWK) '{print $$1}' libc.eplist | $(SORT) -u > ,DelList._ $(MV) ,DelList._ DelList._ ! libcx.a: /lib/libc.a /lib/crt0.o $(RESOLVER_LIB) DelList._ ! rm -rf new ! mkdir new ! cd new; \ ! $(RESOLVER_CMD) \ ! $(CP) /lib/crt0.o crt0.o ; \ ! $(CP) /lib/libc.a ,libcx.a; \ ! $(CHMODW) ,libcx.a; \ ! ar q ,libcx.a *.o ! mv new/,libcx.a libcx.a ! -ar d libcx.a `cat DelList._` ! $(RANLIB) libcx.a ! rm -rf new ! all:: dofix.o clean:: ! $(RM) DelList._ libc.eplist globalrefs._h ,* libcx.a *** overhead/class/machdep/dec_vax/getlist.awk Wed Nov 22 13:28:36 1989 --- overhead/class/machdep/dec_vax/getlist.awk.NEW Mon Jan 7 23:07:17 1991 *************** *** 6,26 **** # data structures used here: # # definer[entry-point-name] = module-name # epcount = # entry-point-name's seen so far # ep[k] = k'th entry-point-name # refcount[entry-point-name] = number of references by wanted modules # referrer[entry-point-name.k] = k'th module-name with an undefined reference to this entry-point-name ! # want[module-name] = "Y" if this module wanted # search output of nm and set up definers and referrers / [ATDBC] / { ! if (definer[$5] == "") definer[ep[epcount++] = $5] = $2; } / U / { ! referrer[$4 "." refcount[$4]++] = $2; } # postprocessing --- 6,29 ---- # data structures used here: # # definer[entry-point-name] = module-name + # library[entry-point-name] = library-name # epcount = # entry-point-name's seen so far # ep[k] = k'th entry-point-name # refcount[entry-point-name] = number of references by wanted modules # referrer[entry-point-name.k] = k'th module-name with an undefined reference to this entry-point-name ! # want[library-name . module-name] = "Y" if this module wanted # search output of nm and set up definers and referrers / [ATDBC] / { ! if (definer[$5] == "") { definer[ep[epcount++] = $5] = $2; + library[$5] = $1; + } } / U / { ! referrer[$4 "." refcount[$4]++] = $1 "." $2; } # postprocessing *************** *** 30,114 **** # Specify which entry points we definitely want. Edit this list to add entry points. ! want[definer["_class_RoutineStruct"]] = "Y"; ! want[definer["_class_Error"]] = "Y"; ! want[definer["_ProgramName"]] = "Y"; ! # want[definer["_class_Header"]] = "Y"; ! want[definer["_class_NewObject"]] = "Y"; ! want[definer["_class_Load"]] = "Y"; ! want[definer["_class_IsLoaded"]] = "Y"; ! want[definer["_class_Lookup"]] = "Y"; ! want[definer["_class_IsType"]] = "Y"; ! want[definer["_class_IsTypeByName"]] = "Y"; ! want[definer["_class_EnterInfo"]] = "Y"; ! want[definer["_class_SetClassPath"]] = "Y"; ! want[definer["_class_PrependClassPath"]] = "Y"; ! want[definer["_class_GetEText"]] = "Y"; ! want[definer["_environ"]] = "Y"; ! want[definer["__exit"]] = "Y"; ! want[definer["_abort"]] = "Y"; ! want[definer["_alloca"]] = "Y"; ! want[definer["_blt"]] = "Y"; ! want[definer["_bcopy"]] = "Y"; ! want[definer["_brk"]] = "Y"; ! want[definer["_bzero"]] = "Y"; ! want[definer["_calloc"]] = "Y"; ! want[definer["_cfree"]] = "Y"; ! want[definer["_errno"]] = "Y"; ! want[definer["_close"]] = "Y"; ! want[definer["_errno"]] = "Y"; ! want[definer["_creat"]] = "Y"; ! want[definer["__ctype_"]] = "Y"; ! want[definer["__doprnt"]] = "Y"; ! want[definer["_ecvt"]] = "Y"; ! want[definer["_fcvt"]] = "Y"; ! want[definer["_sys_errlist"]] = "Y"; ! want[definer["_sys_nerr"]] = "Y"; ! want[definer["_exit"]] = "Y"; ! want[definer["_fcntl"]] = "Y"; ! want[definer["__filbuf"]] = "Y"; ! want[definer["__iob"]] = "Y"; ! want[definer["__cleanup"]] = "Y"; ! want[definer["__flsbuf"]] = "Y"; ! want[definer["_fclose"]] = "Y"; ! want[definer["_fflush"]] = "Y"; ! want[definer["_fopen"]] = "Y"; ! want[definer["_fprintf"]] = "Y"; ! want[definer["_fread"]] = "Y"; ! want[definer["_fstat"]] = "Y"; ! want[definer["_fwrite"]] = "Y"; ! want[definer["_gcvt"]] = "Y"; ! want[definer["_getdtablesize"]] = "Y"; ! want[definer["_getpagesize"]] = "Y"; ! want[definer["_ioctl"]] = "Y"; ! want[definer["_isatty"]] = "Y"; ! want[definer["_lseek"]] = "Y"; ! want[definer["_malloc"]] = "Y"; ! want[definer["_modf"]] = "Y"; ! want[definer["_realloc"]] = "Y"; ! want[definer["_free"]] = "Y"; ! want[definer["_open"]] = "Y"; ! want[definer["_perror"]] = "Y"; ! want[definer["_printf"]] = "Y"; ! want[definer["_read"]] = "Y"; ! want[definer["_sbrk"]] = "Y"; ! want[definer["curbrk"]] = "Y"; ! want[definer["_sigvec"]] = "Y"; ! want[definer["_sprintf"]] = "Y"; ! want[definer["_strlen"]] = "Y"; ! want[definer["_syscall"]] = "Y"; ! want[definer["_write"]] = "Y"; ! want[definer["_writev"]] = "Y"; # now take transitive closure of wanted modules for (needmore = "Y"; needmore == "Y"; needmore = "N") { for ( i = 0; i < epcount; i++) { ! if (want[definer[ep[i]]] != "Y") { ! want[definer[ep[i]]] = "N"; for ( j = 0; j < refcount[ep[i]]; j++ ) { if (want[referrer[ep[i] "." j]] == "Y") { ! want[definer[ep[i]]] = "Y"; needmore = "Y"; break; } --- 33,156 ---- # Specify which entry points we definitely want. Edit this list to add entry points. ! want[library["_class_RoutineStruct"] "." definer["_class_RoutineStruct"]] = "Y"; ! want[library["_class_Error"] "." definer["_class_Error"]] = "Y"; ! want[library["_ProgramName"] "." definer["_ProgramName"]] = "Y"; ! # want[library["_class_Header"] "." definer["_class_Header"]] = "Y"; ! want[library["_class_NewObject"] "." definer["_class_NewObject"]] = "Y"; ! want[library["_class_Load"] "." definer["_class_Load"]] = "Y"; ! want[library["_class_IsLoaded"] "." definer["_class_IsLoaded"]] = "Y"; ! want[library["_class_Lookup"] "." definer["_class_Lookup"]] = "Y"; ! want[library["_class_IsType"] "." definer["_class_IsType"]] = "Y"; ! want[library["_class_IsTypeByName"] "." definer["_class_IsTypeByName"]] = "Y"; ! want[library["_class_EnterInfo"] "." definer["_class_EnterInfo"]] = "Y"; ! want[library["_class_SetClassPath"] "." definer["_class_SetClassPath"]] = "Y"; ! want[library["_class_PrependClassPath"] "." definer["_class_PrependClassPath"]] = "Y"; ! want[library["_class_GetEText"] "." definer["_class_GetEText"]] = "Y"; ! want[library["_environ"] "." definer["_environ"]] = "Y"; ! want[library["__exit"] "." definer["__exit"]] = "Y"; ! want[library["_abort"] "." definer["_abort"]] = "Y"; ! want[library["_alloca"] "." definer["_alloca"]] = "Y"; ! want[library["_blt"] "." definer["_blt"]] = "Y"; ! want[library["_bcopy"] "." definer["_bcopy"]] = "Y"; ! want[library["_brk"] "." definer["_brk"]] = "Y"; ! want[library["_bzero"] "." definer["_bzero"]] = "Y"; ! want[library["_calloc"] "." definer["_calloc"]] = "Y"; ! want[library["_cfree"] "." definer["_cfree"]] = "Y"; ! want[library["_errno"] "." definer["_errno"]] = "Y"; ! want[library["_close"] "." definer["_close"]] = "Y"; ! want[library["_errno"] "." definer["_errno"]] = "Y"; ! want[library["_creat"] "." definer["_creat"]] = "Y"; ! want[library["__ctype_"] "." definer["__ctype_"]] = "Y"; ! want[library["__doprnt"] "." definer["__doprnt"]] = "Y"; ! want[library["_ecvt"] "." definer["_ecvt"]] = "Y"; ! want[library["_fcvt"] "." definer["_fcvt"]] = "Y"; ! want[library["_sys_errlist"] "." definer["_sys_errlist"]] = "Y"; ! want[library["_sys_nerr"] "." definer["_sys_nerr"]] = "Y"; ! want[library["_exit"] "." definer["_exit"]] = "Y"; ! want[library["_fcntl"] "." definer["_fcntl"]] = "Y"; ! want[library["__filbuf"] "." definer["__filbuf"]] = "Y"; ! want[library["__iob"] "." definer["__iob"]] = "Y"; ! want[library["__cleanup"] "." definer["__cleanup"]] = "Y"; ! want[library["__flsbuf"] "." definer["__flsbuf"]] = "Y"; ! want[library["_fclose"] "." definer["_fclose"]] = "Y"; ! want[library["_fflush"] "." definer["_fflush"]] = "Y"; ! want[library["_fopen"] "." definer["_fopen"]] = "Y"; ! want[library["_fprintf"] "." definer["_fprintf"]] = "Y"; ! want[library["_fread"] "." definer["_fread"]] = "Y"; ! want[library["_fstat"] "." definer["_fstat"]] = "Y"; ! want[library["_fwrite"] "." definer["_fwrite"]] = "Y"; ! want[library["_gcvt"] "." definer["_gcvt"]] = "Y"; ! want[library["_getdtablesize"] "." definer["_getdtablesize"]] = "Y"; ! want[library["_getpagesize"] "." definer["_getpagesize"]] = "Y"; ! want[library["_ioctl"] "." definer["_ioctl"]] = "Y"; ! want[library["_isatty"] "." definer["_isatty"]] = "Y"; ! want[library["_lseek"] "." definer["_lseek"]] = "Y"; ! want[library["_malloc"] "." definer["_malloc"]] = "Y"; ! want[library["_modf"] "." definer["_modf"]] = "Y"; ! want[library["_realloc"] "." definer["_realloc"]] = "Y"; ! want[library["_free"] "." definer["_free"]] = "Y"; ! want[library["_open"] "." definer["_open"]] = "Y"; ! want[library["_perror"] "." definer["_perror"]] = "Y"; ! want[library["_printf"] "." definer["_printf"]] = "Y"; ! want[library["_read"] "." definer["_read"]] = "Y"; ! want[library["_sbrk"] "." definer["_sbrk"]] = "Y"; ! want[library["curbrk"] "." definer["curbrk"]] = "Y"; ! want[library["_sigvec"] "." definer["_sigvec"]] = "Y"; ! want[library["_sprintf"] "." definer["_sprintf"]] = "Y"; ! want[library["_strlen"] "." definer["_strlen"]] = "Y"; ! want[library["_syscall"] "." definer["_syscall"]] = "Y"; ! want[library["_write"] "." definer["_write"]] = "Y"; ! want[library["_writev"] "." definer["_writev"]] = "Y"; + want[library["_gethostbyname"] "." definer["_gethostbyname"]] = "Y"; + want[library["_gethostbyaddr"] "." definer["_gethostbyaddr"]] = "Y"; + want[library["_sethostent"] "." definer["_sethostent"]] = "Y"; + want[library["_res_querydomain"] "." definer["_res_querydomain"]] = "Y"; + want[library["_res_mkquery"] "." definer["_res_mkquery"]] = "Y"; + want[library["_res_send"] "." definer["_res_send"]] = "Y"; + want[library["_dn_expand"] "." definer["_dn_expand"]] = "Y"; + want[library["_res_init"] "." definer["_res_init"]] = "Y"; + want[library["__endhtent"] "." definer["__endhtent"]] = "Y"; + want[library["__sethtent"] "." definer["__sethtent"]] = "Y"; + want[library["__gethtbyaddr"] "." definer["__gethtbyaddr"]] = "Y"; + want[library["__gethtbyname"] "." definer["__gethtbyname"]] = "Y"; + want[library["__gethtent"] "." definer["__gethtent"]] = "Y"; + want[library["__getrhbyaddr"] "." definer["__getrhbyaddr"]] = "Y"; + want[library["_endhostent"] "." definer["_endhostent"]] = "Y"; + want[library["_sethostfile"] "." definer["_sethostfile"]] = "Y"; + want[library["_hostalias"] "." definer["_hostalias"]] = "Y"; + want[library["_res_query"] "." definer["_res_query"]] = "Y"; + want[library["_res_search"] "." definer["_res_search"]] = "Y"; + want[library["__res_close"] "." definer["__res_close"]] = "Y"; + want[library["_fp_query"] "." definer["_fp_query"]] = "Y"; + want[library["_p_cdname"] "." definer["_p_cdname"]] = "Y"; + want[library["_p_class"] "." definer["_p_class"]] = "Y"; + want[library["_p_query"] "." definer["_p_query"]] = "Y"; + want[library["_p_rr"] "." definer["_p_rr"]] = "Y"; + want[library["_p_type"] "." definer["_p_type"]] = "Y"; + want[library["__getlong"] "." definer["__getlong"]] = "Y"; + want[library["__getshort"] "." definer["__getshort"]] = "Y"; + want[library["_dn_comp"] "." definer["_dn_comp"]] = "Y"; + want[library["_dn_skipname"] "." definer["_dn_skipname"]] = "Y"; + want[library["_putlong"] "." definer["_putlong"]] = "Y"; + want[library["_putshort"] "." definer["_putshort"]] = "Y"; + want[library["_strcasecmp"] "." definer["_strcasecmp"]] = "Y"; + want[library["_strncasecmp"] "." definer["_strncasecmp"]] = "Y"; + want[library["__res_opcodes"] "." definer["__res_opcodes"]] = "Y"; + want[library["__res_resultcodes"] "." definer["__res_resultcodes"]] = "Y"; + want[library["__res"] "." definer["__res"]] = "Y"; + want[library["_h_errno"] "." definer["_h_errno"]] = "Y"; + # now take transitive closure of wanted modules for (needmore = "Y"; needmore == "Y"; needmore = "N") { for ( i = 0; i < epcount; i++) { ! if (want[library[ep[i]] "." definer[ep[i]]] != "Y") { ! want[library[ep[i]] "." definer[ep[i]]] = "N"; for ( j = 0; j < refcount[ep[i]]; j++ ) { if (want[referrer[ep[i] "." j]] == "Y") { ! want[library[ep[i]] "." definer[ep[i]]] = "Y"; needmore = "Y"; break; } *************** *** 120,125 **** # write out all wanted module name and entry points for ( i = 0 ; i < epcount ; i++) ! if (want[definer[ep[i]]] == "Y") printf "%s %s\n", definer[ep[i]], ep[i]; } --- 162,167 ---- # write out all wanted module name and entry points for ( i = 0 ; i < epcount ; i++) ! if (want[library[ep[i]] "." definer[ep[i]]] == "Y") printf "%s %s\n", definer[ep[i]], ep[i]; } *** overhead/class/machdep/hp_68k/Imakefile Fri Dec 21 15:01:52 1990 --- overhead/class/machdep/hp_68k/Imakefile.NEW Mon Jan 7 23:07:22 1991 *************** *** 7,24 **** NormalObjectRule() NormalAsmPPRule() ! all:: globals.o entry.o doload.o ! globals.o: globals.spp globalrefs._h globalrefs._h: libc.eplist $(AWK) '{printf "\tglobalref(%s)\n", $$2}' libc.eplist >,globalrefs._h $(MV) ,globalrefs._h globalrefs._h ! libc.eplist: /lib/libc.a /lib/crt0.o getlist.awk $(RM) /tmp/libhack.a $(AR) /tmp/libhack.a /lib/crt0.o ! $(NM) -go /lib/libc.a /tmp/libhack.a | $(TR) ":" " " | \ $(AWK) -f getlist.awk >,libc.eplist $(MV) ,libc.eplist libc.eplist $(RM) /tmp/libhack.a --- 7,33 ---- NormalObjectRule() NormalAsmPPRule() ! #ifdef RESOLVER_ENV ! RESOLVER_LIB = $(RESOLVLIB) ! RESOLVER_CMD = /bin/sh -c 'if test $(RESOLVER_LIB); \ ! then ar x $(RESOLVER_LIB); fi; exit 0'; ! #else ! RESOLVER_LIB = ! RESOLVER_CMD = ! #endif ! all:: globals.o entry.o doload.o + globals.o: globals.spp globalrefs._h + globalrefs._h: libc.eplist $(AWK) '{printf "\tglobalref(%s)\n", $$2}' libc.eplist >,globalrefs._h $(MV) ,globalrefs._h globalrefs._h ! libc.eplist: /lib/libc.a /lib/crt0.o $(RESOLVER_LIB) getlist.awk $(RM) /tmp/libhack.a $(AR) /tmp/libhack.a /lib/crt0.o ! $(NM) -go $(RESOLVER_LIB) /lib/libc.a /tmp/libhack.a | $(TR) ":" " " | \ $(AWK) -f getlist.awk >,libc.eplist $(MV) ,libc.eplist libc.eplist $(RM) /tmp/libhack.a *************** *** 32,47 **** $(AWK) '{print $$1}' libc.eplist | $(SORT) -u > ,DelList._ $(MV) ,DelList._ DelList._ ! libcx.a: /lib/libc.a /lib/crt0.o DelList._ ! $(CP) /lib/libc.a ,libcx.a ! $(CHMODW) ,libcx.a ! $(AR) ,libcx.a /lib/crt0.o ! -ar d ,libcx.a `cat DelList._` ! $(RANLIB) ,libcx.a ! $(MV) ,libcx.a libcx.a - all:: dofix.o - clean:: ! $(RM) DelList._ libc.eplist globalrefs._h ,* libcx.a --- 41,61 ---- $(AWK) '{print $$1}' libc.eplist | $(SORT) -u > ,DelList._ $(MV) ,DelList._ DelList._ ! libcx.a: /lib/libc.a /lib/crt0.o $(RESOLVER_LIB) DelList._ ! rm -rf new ! mkdir new ! cd new ; \ ! $(RESOLVER_CMD) \ ! $(CP) /lib/crt0.o crt0.o ; \ ! $(CP) /lib/libc.a ,libcx.a ; \ ! $(CHMODW) ,libcx.a ; \ ! ar q ,libcx.a *.o ! mv new/,libcx.a libcx.a ! -ar d libcx.a `cat DelList._` ! $(RANLIB) libcx.a ! rm -rf new + all:: dofix.o clean:: ! $(RM) DelList._ libc.eplist globalrefs._h ,* libcx.a *** overhead/class/machdep/hp_68k/getlist.awk Mon Aug 6 11:13:47 1990 --- overhead/class/machdep/hp_68k/getlist.awk.NEW Mon Jan 7 23:07:23 1991 *************** *** 6,11 **** --- 6,12 ---- # data structures used here: # # definer[entry-point-name] = module-name + # library[entry-point-name] = library-name # epcount = # entry-point-name's seen so far # ep[k] = k'th entry-point-name # refcount[entry-point-name] = number of references by wanted modules *************** *** 15,26 **** # search output of nm and set up definers and referrers / [ATDBC]S? / { ! if (definer[$5] == "") definer[ep[epcount++] = $5] = $2; } / U / { ! referrer[$4 "." refcount[$4]++] = $2; } # postprocessing --- 16,29 ---- # search output of nm and set up definers and referrers / [ATDBC]S? / { ! if (definer[$5] == "") { definer[ep[epcount++] = $5] = $2; + library[$5] = $1; + } } / U / { ! referrer[$4 "." refcount[$4]++] = $1 "." $2; } # postprocessing *************** *** 30,133 **** # Specify which entry points we definitely want. Edit this list to add entry points. ! want[definer["_class_RoutineStruct"]] = "Y"; ! want[definer["_class_Error"]] = "Y"; ! want[definer["_ProgramName"]] = "Y"; ! # want[definer["_class_Header"]] = "Y"; ! want[definer["_class_NewObject"]] = "Y"; ! want[definer["_class_Load"]] = "Y"; ! want[definer["_class_IsLoaded"]] = "Y"; ! want[definer["_class_Lookup"]] = "Y"; ! want[definer["_class_IsType"]] = "Y"; ! want[definer["_class_IsTypeByName"]] = "Y"; ! want[definer["_class_EnterInfo"]] = "Y"; ! want[definer["_class_SetClassPath"]] = "Y"; ! want[definer["_class_PrependClassPath"]] = "Y"; ! want[definer["_class_GetEText"]] = "Y"; ! want[definer["_environ"]] = "Y"; ! want[definer["__exit"]] = "Y"; ! want[definer["_abort"]] = "Y"; ! want[definer["_alloca"]] = "Y"; ! want[definer["_blt"]] = "Y"; ! # want[definer["_bcopy"]] = "Y"; ! want[definer["_brk"]] = "Y"; ! # want[definer["_bzero"]] = "Y"; ! want[definer["_calloc"]] = "Y"; ! want[definer["_cfree"]] = "Y"; ! want[definer["_close"]] = "Y"; ! want[definer["_errno"]] = "Y"; ! want[definer["_creat"]] = "Y"; ! want[definer["__ctype_"]] = "Y"; ! want[definer["__doprnt"]] = "Y"; ! want[definer["_ecvt"]] = "Y"; ! want[definer["_fcvt"]] = "Y"; ! want[definer["_sys_errlist"]] = "Y"; ! want[definer["_sys_nerr"]] = "Y"; ! want[definer["_fcntl"]] = "Y"; ! want[definer["__filbuf"]] = "Y"; ! want[definer["__iob"]] = "Y"; ! want[definer["__cleanup"]] = "Y"; ! want[definer["__flsbuf"]] = "Y"; ! want[definer["_fclose"]] = "Y"; ! want[definer["_fflush"]] = "Y"; ! want[definer["_fopen"]] = "Y"; ! want[definer["_fprintf"]] = "Y"; ! want[definer["_fread"]] = "Y"; ! want[definer["_fstat"]] = "Y"; ! want[definer["_fwrite"]] = "Y"; ! want[definer["_gcvt"]] = "Y"; ! want[definer["_getdtablesize"]] = "Y"; ! want[definer["_getpagesize"]] = "Y"; ! want[definer["_ioctl"]] = "Y"; ! want[definer["_isatty"]] = "Y"; ! want[definer["_lseek"]] = "Y"; ! want[definer["_malloc"]] = "Y"; ! want[definer["_memcmp"]] = "Y"; ! want[definer["_memcpy"]] = "Y"; ! want[definer["_memset"]] = "Y"; ! want[definer["_modf"]] = "Y"; ! want[definer["_realloc"]] = "Y"; ! want[definer["_free"]] = "Y"; ! want[definer["_open"]] = "Y"; ! want[definer["_perror"]] = "Y"; ! want[definer["_printf"]] = "Y"; ! want[definer["_read"]] = "Y"; ! want[definer["_sbrk"]] = "Y"; ! want[definer["curbrk"]] = "Y"; ! want[definer["_sigvec"]] = "Y"; ! want[definer["_sprintf"]] = "Y"; ! want[definer["_strlen"]] = "Y"; ! want[definer["_syscall"]] = "Y"; ! want[definer["_write"]] = "Y"; ! want[definer["_writev"]] = "Y"; # definitions added for 7.0 **JG ! want[definer["__fflush"]] = "Y"; ! want[definer["__fclose"]] = "Y"; ! want[definer["flag_68881"]] = "Y"; ! want[definer["_setjmp"]] = "Y"; ! want[definer["_longjmp"]] = "Y"; ! want[definer["__setjmp"]] = "Y"; ! want[definer["__longjmp"]] = "Y"; ! want[definer["__environ"]] = "Y"; ! want[definer["____exit"]] = "Y"; #additional entries ! want[definer["_main"]] = "Y"; ! want[definer["flag_68010"]] = "Y"; ! want[definer["flag_68881"]] = "Y"; ! want[definer["flag_fpa"]] = "Y"; ! want[definer["float_loc"]] = "Y"; ! want[definer["float_soft"]] = "Y"; ! want[definer["fpa_loc"]] = "Y"; # now take transitive closure of wanted modules for (needmore = "Y"; needmore == "Y"; needmore = "N") { for ( i = 0; i < epcount; i++) { ! if (want[definer[ep[i]]] != "Y") { ! want[definer[ep[i]]] = "N"; for ( j = 0; j < refcount[ep[i]]; j++ ) { if (want[referrer[ep[i] "." j]] == "Y") { ! want[definer[ep[i]]] = "Y"; needmore = "Y"; break; } --- 33,178 ---- # Specify which entry points we definitely want. Edit this list to add entry points. ! want[library["_class_RoutineStruct"] "." definer["_class_RoutineStruct"]] = "Y"; ! want[library["_class_Error"] "." definer["_class_Error"]] = "Y"; ! want[library["_ProgramName"] "." definer["_ProgramName"]] = "Y"; ! # want[library["_class_Header"] "." definer["_class_Header"]] = "Y"; ! want[library["_class_NewObject"] "." definer["_class_NewObject"]] = "Y"; ! want[library["_class_Load"] "." definer["_class_Load"]] = "Y"; ! want[library["_class_IsLoaded"] "." definer["_class_IsLoaded"]] = "Y"; ! want[library["_class_Lookup"] "." definer["_class_Lookup"]] = "Y"; ! want[library["_class_IsType"] "." definer["_class_IsType"]] = "Y"; ! want[library["_class_IsTypeByName"] "." definer["_class_IsTypeByName"]] = "Y"; ! want[library["_class_EnterInfo"] "." definer["_class_EnterInfo"]] = "Y"; ! want[library["_class_SetClassPath"] "." definer["_class_SetClassPath"]] = "Y"; ! want[library["_class_PrependClassPath"] "." definer["_class_PrependClassPath"]] = "Y"; ! want[library["_class_GetEText"] "." definer["_class_GetEText"]] = "Y"; ! want[library["_environ"] "." definer["_environ"]] = "Y"; ! want[library["__exit"] "." definer["__exit"]] = "Y"; ! want[library["_abort"] "." definer["_abort"]] = "Y"; ! want[library["_alloca"] "." definer["_alloca"]] = "Y"; ! want[library["_blt"] "." definer["_blt"]] = "Y"; ! # want[library["_bcopy"] "." definer["_bcopy"]] = "Y"; ! want[library["_brk"] "." definer["_brk"]] = "Y"; ! # want[library["_bzero"] "." definer["_bzero"]] = "Y"; ! want[library["_calloc"] "." definer["_calloc"]] = "Y"; ! want[library["_cfree"] "." definer["_cfree"]] = "Y"; ! want[library["_close"] "." definer["_close"]] = "Y"; ! want[library["_errno"] "." definer["_errno"]] = "Y"; ! want[library["_creat"] "." definer["_creat"]] = "Y"; ! want[library["__ctype_"] "." definer["__ctype_"]] = "Y"; ! want[library["__doprnt"] "." definer["__doprnt"]] = "Y"; ! want[library["_ecvt"] "." definer["_ecvt"]] = "Y"; ! want[library["_fcvt"] "." definer["_fcvt"]] = "Y"; ! want[library["_sys_errlist"] "." definer["_sys_errlist"]] = "Y"; ! want[library["_sys_nerr"] "." definer["_sys_nerr"]] = "Y"; ! want[library["_fcntl"] "." definer["_fcntl"]] = "Y"; ! want[library["__filbuf"] "." definer["__filbuf"]] = "Y"; ! want[library["__iob"] "." definer["__iob"]] = "Y"; ! want[library["__cleanup"] "." definer["__cleanup"]] = "Y"; ! want[library["__flsbuf"] "." definer["__flsbuf"]] = "Y"; ! want[library["_fclose"] "." definer["_fclose"]] = "Y"; ! want[library["_fflush"] "." definer["_fflush"]] = "Y"; ! want[library["_fopen"] "." definer["_fopen"]] = "Y"; ! want[library["_fprintf"] "." definer["_fprintf"]] = "Y"; ! want[library["_fread"] "." definer["_fread"]] = "Y"; ! want[library["_fstat"] "." definer["_fstat"]] = "Y"; ! want[library["_fwrite"] "." definer["_fwrite"]] = "Y"; ! want[library["_gcvt"] "." definer["_gcvt"]] = "Y"; ! want[library["_getdtablesize"] "." definer["_getdtablesize"]] = "Y"; ! want[library["_getpagesize"] "." definer["_getpagesize"]] = "Y"; ! want[library["_ioctl"] "." definer["_ioctl"]] = "Y"; ! want[library["_isatty"] "." definer["_isatty"]] = "Y"; ! want[library["_lseek"] "." definer["_lseek"]] = "Y"; ! want[library["_malloc"] "." definer["_malloc"]] = "Y"; ! want[library["_memcmp"] "." definer["_memcmp"]] = "Y"; ! want[library["_memcpy"] "." definer["_memcpy"]] = "Y"; ! want[library["_memset"] "." definer["_memset"]] = "Y"; ! want[library["_modf"] "." definer["_modf"]] = "Y"; ! want[library["_realloc"] "." definer["_realloc"]] = "Y"; ! want[library["_free"] "." definer["_free"]] = "Y"; ! want[library["_open"] "." definer["_open"]] = "Y"; ! want[library["_perror"] "." definer["_perror"]] = "Y"; ! want[library["_printf"] "." definer["_printf"]] = "Y"; ! want[library["_read"] "." definer["_read"]] = "Y"; ! want[library["_sbrk"] "." definer["_sbrk"]] = "Y"; ! want[library["curbrk"] "." definer["curbrk"]] = "Y"; ! want[library["_sigvec"] "." definer["_sigvec"]] = "Y"; ! want[library["_sprintf"] "." definer["_sprintf"]] = "Y"; ! want[library["_strlen"] "." definer["_strlen"]] = "Y"; ! want[library["_syscall"] "." definer["_syscall"]] = "Y"; ! want[library["_write"] "." definer["_write"]] = "Y"; ! want[library["_writev"] "." definer["_writev"]] = "Y"; ! want[library["_toupper"] "." definer["_toupper"]] = "Y"; ! want[library["_tolower"] "." definer["_tolower"]] = "Y"; ! # definitions added for 7.0 **JG ! want[library["__fflush"] "." definer["__fflush"]] = "Y"; ! want[library["__fclose"] "." definer["__fclose"]] = "Y"; ! want[library["flag_68881"] "." definer["flag_68881"]] = "Y"; ! want[library["_setjmp"] "." definer["_setjmp"]] = "Y"; ! want[library["_longjmp"] "." definer["_longjmp"]] = "Y"; ! want[library["__setjmp"] "." definer["__setjmp"]] = "Y"; ! want[library["__longjmp"] "." definer["__longjmp"]] = "Y"; ! want[library["__environ"] "." definer["__environ"]] = "Y"; ! want[library["____exit"] "." definer["____exit"]] = "Y"; #additional entries ! want[library["_main"] "." definer["_main"]] = "Y"; ! want[library["flag_68010"] "." definer["flag_68010"]] = "Y"; ! want[library["flag_68881"] "." definer["flag_68881"]] = "Y"; ! want[library["flag_fpa"] "." definer["flag_fpa"]] = "Y"; ! want[library["float_loc"] "." definer["float_loc"]] = "Y"; ! want[library["float_soft"] "." definer["float_soft"]] = "Y"; ! want[library["fpa_loc"] "." definer["fpa_loc"]] = "Y"; + want[library["_gethostbyname"] "." definer["_gethostbyname"]] = "Y"; + want[library["_gethostbyaddr"] "." definer["_gethostbyaddr"]] = "Y"; + want[library["_sethostent"] "." definer["_sethostent"]] = "Y"; + want[library["_res_querydomain"] "." definer["_res_querydomain"]] = "Y"; + want[library["_res_mkquery"] "." definer["_res_mkquery"]] = "Y"; + want[library["_res_send"] "." definer["_res_send"]] = "Y"; + want[library["_dn_expand"] "." definer["_dn_expand"]] = "Y"; + want[library["_res_init"] "." definer["_res_init"]] = "Y"; + want[library["__endhtent"] "." definer["__endhtent"]] = "Y"; + want[library["__sethtent"] "." definer["__sethtent"]] = "Y"; + want[library["__gethtbyaddr"] "." definer["__gethtbyaddr"]] = "Y"; + want[library["__gethtbyname"] "." definer["__gethtbyname"]] = "Y"; + want[library["__gethtent"] "." definer["__gethtent"]] = "Y"; + want[library["__getrhbyaddr"] "." definer["__getrhbyaddr"]] = "Y"; + want[library["_endhostent"] "." definer["_endhostent"]] = "Y"; + want[library["_sethostfile"] "." definer["_sethostfile"]] = "Y"; + want[library["_hostalias"] "." definer["_hostalias"]] = "Y"; + want[library["_res_query"] "." definer["_res_query"]] = "Y"; + want[library["_res_search"] "." definer["_res_search"]] = "Y"; + want[library["__res_close"] "." definer["__res_close"]] = "Y"; + want[library["_fp_query"] "." definer["_fp_query"]] = "Y"; + want[library["_p_cdname"] "." definer["_p_cdname"]] = "Y"; + want[library["_p_class"] "." definer["_p_class"]] = "Y"; + want[library["_p_query"] "." definer["_p_query"]] = "Y"; + want[library["_p_rr"] "." definer["_p_rr"]] = "Y"; + want[library["_p_type"] "." definer["_p_type"]] = "Y"; + want[library["__getlong"] "." definer["__getlong"]] = "Y"; + want[library["__getshort"] "." definer["__getshort"]] = "Y"; + want[library["_dn_comp"] "." definer["_dn_comp"]] = "Y"; + want[library["_dn_skipname"] "." definer["_dn_skipname"]] = "Y"; + want[library["_putlong"] "." definer["_putlong"]] = "Y"; + want[library["_putshort"] "." definer["_putshort"]] = "Y"; + want[library["_strcasecmp"] "." definer["_strcasecmp"]] = "Y"; + want[library["_strncasecmp"] "." definer["_strncasecmp"]] = "Y"; + want[library["__res_opcodes"] "." definer["__res_opcodes"]] = "Y"; + want[library["__res_resultcodes"] "." definer["__res_resultcodes"]] = "Y"; + want[library["__res"] "." definer["__res"]] = "Y"; + want[library["_h_errno"] "." definer["_h_errno"]] = "Y"; + # now take transitive closure of wanted modules for (needmore = "Y"; needmore == "Y"; needmore = "N") { for ( i = 0; i < epcount; i++) { ! if (want[library[ep[i]] "." definer[ep[i]]] != "Y") { ! want[library[ep[i]] "." definer[ep[i]]] = "N"; for ( j = 0; j < refcount[ep[i]]; j++ ) { if (want[referrer[ep[i] "." j]] == "Y") { ! want[library[ep[i]] "." definer[ep[i]]] = "Y"; needmore = "Y"; break; } *************** *** 139,144 **** # write out all wanted module name and entry points for ( i = 0 ; i < epcount ; i++) ! if (want[definer[ep[i]]] == "Y") printf "%s %s\n", definer[ep[i]], ep[i]; } --- 184,189 ---- # write out all wanted module name and entry points for ( i = 0 ; i < epcount ; i++) ! if (want[library[ep[i]] "." definer[ep[i]]] == "Y") printf "%s %s\n", definer[ep[i]], ep[i]; } *** overhead/class/machdep/sun_68k/Imakefile Fri Dec 21 15:01:53 1990 --- overhead/class/machdep/sun_68k/Imakefile.NEW Mon Jan 7 23:07:26 1991 *************** *** 16,33 **** GETLIST = getlist.awk #endif ! all:: globals.o entry.o doload.o ! globals.o: globals.spp globalrefs._h globalrefs._h: libc.eplist $(AWK) '{printf "\tglobalref(%s)\n", $$2}' libc.eplist >,globalrefs._h $(MV) ,globalrefs._h globalrefs._h ! libc.eplist: /lib/libc.a /lib/crt0.o $(GETLIST) $(RM) /tmp/libhack.a $(AR) /tmp/libhack.a /lib/crt0.o ! $(NM) -go /lib/libc.a /tmp/libhack.a | $(TR) ":" " " | \ $(AWK) -f $(GETLIST) >,libc.eplist $(MV) ,libc.eplist libc.eplist $(RM) /tmp/libhack.a --- 16,42 ---- GETLIST = getlist.awk #endif ! #ifdef RESOLVER_ENV ! RESOLVER_LIB = $(RESOLVLIB) ! RESOLVER_CMD = /bin/sh -c 'if test $(RESOLVER_LIB); \ ! then ar x $(RESOLVER_LIB); fi; exit 0'; ! #else ! RESOLVER_LIB = ! RESOLVER_CMD = ! #endif ! all:: globals.o entry.o doload.o + globals.o: globals.spp globalrefs._h + globalrefs._h: libc.eplist $(AWK) '{printf "\tglobalref(%s)\n", $$2}' libc.eplist >,globalrefs._h $(MV) ,globalrefs._h globalrefs._h ! libc.eplist: /lib/libc.a /lib/crt0.o $(RESOLVER_LIB) $(GETLIST) $(RM) /tmp/libhack.a $(AR) /tmp/libhack.a /lib/crt0.o ! $(NM) -go $(RESOLVER_LIB) /lib/libc.a /tmp/libhack.a | $(TR) ":" " " | \ $(AWK) -f $(GETLIST) >,libc.eplist $(MV) ,libc.eplist libc.eplist $(RM) /tmp/libhack.a *************** *** 41,55 **** $(AWK) '{print $$1}' libc.eplist | $(SORT) -u > ,DelList._ $(MV) ,DelList._ DelList._ ! libcx.a: /lib/libc.a /lib/crt0.o DelList._ ! $(CP) /lib/libc.a ,libcx.a ! $(CHMODW) ,libcx.a ! $(AR) ,libcx.a /lib/crt0.o ! -ar d ,libcx.a `cat DelList._` ! $(RANLIB) ,libcx.a ! $(MV) ,libcx.a libcx.a ! all:: dofix.o clean:: ! $(RM) DelList._ libc.eplist globalrefs._h ,* libcx.a --- 50,69 ---- $(AWK) '{print $$1}' libc.eplist | $(SORT) -u > ,DelList._ $(MV) ,DelList._ DelList._ ! libcx.a: /lib/libc.a /lib/crt0.o $(RESOLVER_LIB) DelList._ ! rm -rf new ! mkdir new ! cd new; \ ! $(RESOLVER_CMD) \ ! $(CP) /lib/libc.a ,libcx.a; \ ! $(CHMODW) ,libcx.a; \ ! ar q ,libcx.a *.o /lib/crt0.o ! mv new/,libcx.a libcx.a ! -ar d libcx.a `cat DelList._` ! $(RANLIB) libcx.a ! rm -rf new ! all:: dofix.o clean:: ! $(RM) DelList._ libc.eplist globalrefs._h ,* libcx.a *** overhead/class/machdep/sun_68k/getlafs.awk Wed Nov 22 13:30:59 1989 --- overhead/class/machdep/sun_68k/getlafs.awk.NEW Mon Jan 7 23:07:27 1991 *************** *** 6,11 **** --- 6,12 ---- # data structures used here: # # definer[entry-point-name] = module-name + # library[entry-point-name] = library-name # epcount = # entry-point-name's seen so far # ep[k] = k'th entry-point-name # refcount[entry-point-name] = number of references by wanted modules *************** *** 15,26 **** # search output of nm and set up definers and referrers / [ATDBC] / { ! if (definer[$5] == "") definer[ep[epcount++] = $5] = $2; } / U / { ! referrer[$4 "." refcount[$4]++] = $2; } # postprocessing --- 16,29 ---- # search output of nm and set up definers and referrers / [ATDBC] / { ! if (definer[$5] == "") { definer[ep[epcount++] = $5] = $2; + library[$5] = $1; + } } / U / { ! referrer[$4 "." refcount[$4]++] = $1 "." $2; } # postprocessing *************** *** 30,114 **** # Specify which entry points we definitely want. Edit this list to add entry points. ! want[definer["_class_RoutineStruct"]] = "Y"; ! want[definer["_class_Error"]] = "Y"; ! want[definer["_ProgramName"]] = "Y"; ! # want[definer["_class_Header"]] = "Y"; ! want[definer["_class_NewObject"]] = "Y"; ! want[definer["_class_Load"]] = "Y"; ! want[definer["_class_IsLoaded"]] = "Y"; ! want[definer["_class_Lookup"]] = "Y"; ! want[definer["_class_IsType"]] = "Y"; ! want[definer["_class_IsTypeByName"]] = "Y"; ! want[definer["_class_EnterInfo"]] = "Y"; ! want[definer["_class_SetClassPath"]] = "Y"; ! want[definer["_class_PrependClassPath"]] = "Y"; ! want[definer["_class_GetEText"]] = "Y"; ! want[definer["_environ"]] = "Y"; ! want[definer["__exit"]] = "Y"; ! want[definer["_abort"]] = "Y"; ! want[definer["_alloca"]] = "Y"; ! want[definer["_blt"]] = "Y"; ! want[definer["_bcopy"]] = "Y"; ! want[definer["_brk"]] = "Y"; ! want[definer["_bzero"]] = "Y"; ! want[definer["_calloc"]] = "Y"; ! want[definer["_cfree"]] = "Y"; ! want[definer["_errno"]] = "Y"; ! want[definer["_close"]] = "Y"; ! want[definer["_errno"]] = "Y"; ! want[definer["_creat"]] = "Y"; ! want[definer["__ctype_"]] = "Y"; ! want[definer["__doprnt"]] = "Y"; ! want[definer["_ecvt"]] = "Y"; ! want[definer["_fcvt"]] = "Y"; ! want[definer["_sys_errlist"]] = "Y"; ! want[definer["_sys_nerr"]] = "Y"; ! want[definer["_exit"]] = "Y"; ! want[definer["_fcntl"]] = "Y"; ! want[definer["__filbuf"]] = "Y"; ! want[definer["__iob"]] = "Y"; ! want[definer["__cleanup"]] = "Y"; ! want[definer["__flsbuf"]] = "Y"; ! want[definer["_fclose"]] = "Y"; ! want[definer["_fflush"]] = "Y"; ! want[definer["_fopen"]] = "Y"; ! want[definer["_fprintf"]] = "Y"; ! want[definer["_fread"]] = "Y"; ! want[definer["_fstat"]] = "Y"; ! want[definer["_fwrite"]] = "Y"; ! want[definer["_gcvt"]] = "Y"; ! want[definer["_getdtablesize"]] = "Y"; ! want[definer["_getpagesize"]] = "Y"; ! want[definer["_ioctl"]] = "Y"; ! want[definer["_isatty"]] = "Y"; ! want[definer["_lseek"]] = "Y"; ! want[definer["_malloc"]] = "Y"; ! want[definer["_modf"]] = "Y"; ! want[definer["_realloc"]] = "Y"; ! want[definer["_free"]] = "Y"; ! want[definer["_open"]] = "Y"; ! want[definer["_perror"]] = "Y"; ! want[definer["_printf"]] = "Y"; ! want[definer["_read"]] = "Y"; ! want[definer["_sbrk"]] = "Y"; ! want[definer["curbrk"]] = "Y"; ! want[definer["_sigvec"]] = "Y"; ! want[definer["_sprintf"]] = "Y"; ! want[definer["_strlen"]] = "Y"; ! want[definer["_syscall"]] = "Y"; ! want[definer["_write"]] = "Y"; ! want[definer["_writev"]] = "Y"; # now take transitive closure of wanted modules for (needmore = "Y"; needmore == "Y"; needmore = "N") { for ( i = 0; i < epcount; i++) { ! if (want[definer[ep[i]]] != "Y") { ! want[definer[ep[i]]] = "N"; for ( j = 0; j < refcount[ep[i]]; j++ ) { if (want[referrer[ep[i] "." j]] == "Y") { ! want[definer[ep[i]]] = "Y"; needmore = "Y"; break; } --- 33,155 ---- # Specify which entry points we definitely want. Edit this list to add entry points. ! want[library["_class_RoutineStruct"] "." definer["_class_RoutineStruct"]] = "Y"; ! want[library["_class_Error"] "." definer["_class_Error"]] = "Y"; ! want[library["_ProgramName"] "." definer["_ProgramName"]] = "Y"; ! # want[library["_class_Header"] "." definer["_class_Header"]] = "Y"; ! want[library["_class_NewObject"] "." definer["_class_NewObject"]] = "Y"; ! want[library["_class_Load"] "." definer["_class_Load"]] = "Y"; ! want[library["_class_IsLoaded"] "." definer["_class_IsLoaded"]] = "Y"; ! want[library["_class_Lookup"] "." definer["_class_Lookup"]] = "Y"; ! want[library["_class_IsType"] "." definer["_class_IsType"]] = "Y"; ! want[library["_class_IsTypeByName"] "." definer["_class_IsTypeByName"]] = "Y"; ! want[library["_class_EnterInfo"] "." definer["_class_EnterInfo"]] = "Y"; ! want[library["_class_SetClassPath"] "." definer["_class_SetClassPath"]] = "Y"; ! want[library["_class_PrependClassPath"] "." definer["_class_PrependClassPath"]] = "Y"; ! want[library["_class_GetEText"] "." definer["_class_GetEText"]] = "Y"; ! want[library["_environ"] "." definer["_environ"]] = "Y"; ! want[library["__exit"] "." definer["__exit"]] = "Y"; ! want[library["_abort"] "." definer["_abort"]] = "Y"; ! want[library["_alloca"] "." definer["_alloca"]] = "Y"; ! want[library["_blt"] "." definer["_blt"]] = "Y"; ! want[library["_bcopy"] "." definer["_bcopy"]] = "Y"; ! want[library["_brk"] "." definer["_brk"]] = "Y"; ! want[library["_bzero"] "." definer["_bzero"]] = "Y"; ! want[library["_calloc"] "." definer["_calloc"]] = "Y"; ! want[library["_cfree"] "." definer["_cfree"]] = "Y"; ! want[library["_errno"] "." definer["_errno"]] = "Y"; ! want[library["_close"] "." definer["_close"]] = "Y"; ! want[library["_errno"] "." definer["_errno"]] = "Y"; ! want[library["_creat"] "." definer["_creat"]] = "Y"; ! want[library["__ctype_"] "." definer["__ctype_"]] = "Y"; ! want[library["__doprnt"] "." definer["__doprnt"]] = "Y"; ! want[library["_ecvt"] "." definer["_ecvt"]] = "Y"; ! want[library["_fcvt"] "." definer["_fcvt"]] = "Y"; ! want[library["_sys_errlist"] "." definer["_sys_errlist"]] = "Y"; ! want[library["_sys_nerr"] "." definer["_sys_nerr"]] = "Y"; ! want[library["_exit"] "." definer["_exit"]] = "Y"; ! want[library["_fcntl"] "." definer["_fcntl"]] = "Y"; ! want[library["__filbuf"] "." definer["__filbuf"]] = "Y"; ! want[library["__iob"] "." definer["__iob"]] = "Y"; ! want[library["__cleanup"] "." definer["__cleanup"]] = "Y"; ! want[library["__flsbuf"] "." definer["__flsbuf"]] = "Y"; ! want[library["_fclose"] "." definer["_fclose"]] = "Y"; ! want[library["_fflush"] "." definer["_fflush"]] = "Y"; ! want[library["_fopen"] "." definer["_fopen"]] = "Y"; ! want[library["_fprintf"] "." definer["_fprintf"]] = "Y"; ! want[library["_fread"] "." definer["_fread"]] = "Y"; ! want[library["_fstat"] "." definer["_fstat"]] = "Y"; ! want[library["_fwrite"] "." definer["_fwrite"]] = "Y"; ! want[library["_gcvt"] "." definer["_gcvt"]] = "Y"; ! want[library["_getdtablesize"] "." definer["_getdtablesize"]] = "Y"; ! want[library["_getpagesize"] "." definer["_getpagesize"]] = "Y"; ! want[library["_ioctl"] "." definer["_ioctl"]] = "Y"; ! want[library["_isatty"] "." definer["_isatty"]] = "Y"; ! want[library["_lseek"] "." definer["_lseek"]] = "Y"; ! want[library["_malloc"] "." definer["_malloc"]] = "Y"; ! want[library["_modf"] "." definer["_modf"]] = "Y"; ! want[library["_realloc"] "." definer["_realloc"]] = "Y"; ! want[library["_free"] "." definer["_free"]] = "Y"; ! want[library["_open"] "." definer["_open"]] = "Y"; ! want[library["_perror"] "." definer["_perror"]] = "Y"; ! want[library["_printf"] "." definer["_printf"]] = "Y"; ! want[library["_read"] "." definer["_read"]] = "Y"; ! want[library["_sbrk"] "." definer["_sbrk"]] = "Y"; ! want[library["curbrk"] "." definer["curbrk"]] = "Y"; ! want[library["_sigvec"] "." definer["_sigvec"]] = "Y"; ! want[library["_sprintf"] "." definer["_sprintf"]] = "Y"; ! want[library["_strlen"] "." definer["_strlen"]] = "Y"; ! want[library["_syscall"] "." definer["_syscall"]] = "Y"; ! want[library["_write"] "." definer["_write"]] = "Y"; ! want[library["_writev"] "." definer["_writev"]] = "Y"; ! want[library["_gethostbyname"] "." definer["_gethostbyname"]] = "Y"; ! want[library["_gethostbyaddr"] "." definer["_gethostbyaddr"]] = "Y"; ! want[library["_sethostent"] "." definer["_sethostent"]] = "Y"; ! want[library["_res_querydomain"] "." definer["_res_querydomain"]] = "Y"; ! want[library["_res_mkquery"] "." definer["_res_mkquery"]] = "Y"; ! want[library["_res_send"] "." definer["_res_send"]] = "Y"; ! want[library["_dn_expand"] "." definer["_dn_expand"]] = "Y"; ! want[library["_res_init"] "." definer["_res_init"]] = "Y"; ! want[library["__endhtent"] "." definer["__endhtent"]] = "Y"; ! want[library["__sethtent"] "." definer["__sethtent"]] = "Y"; ! want[library["__gethtbyaddr"] "." definer["__gethtbyaddr"]] = "Y"; ! want[library["__gethtbyname"] "." definer["__gethtbyname"]] = "Y"; ! want[library["__gethtent"] "." definer["__gethtent"]] = "Y"; ! want[library["__getrhbyaddr"] "." definer["__getrhbyaddr"]] = "Y"; ! want[library["_endhostent"] "." definer["_endhostent"]] = "Y"; ! want[library["_sethostfile"] "." definer["_sethostfile"]] = "Y"; ! want[library["_hostalias"] "." definer["_hostalias"]] = "Y"; ! want[library["_res_query"] "." definer["_res_query"]] = "Y"; ! want[library["_res_search"] "." definer["_res_search"]] = "Y"; ! want[library["__res_close"] "." definer["__res_close"]] = "Y"; ! want[library["_fp_query"] "." definer["_fp_query"]] = "Y"; ! want[library["_p_cdname"] "." definer["_p_cdname"]] = "Y"; ! want[library["_p_class"] "." definer["_p_class"]] = "Y"; ! want[library["_p_query"] "." definer["_p_query"]] = "Y"; ! want[library["_p_rr"] "." definer["_p_rr"]] = "Y"; ! want[library["_p_type"] "." definer["_p_type"]] = "Y"; ! want[library["__getlong"] "." definer["__getlong"]] = "Y"; ! want[library["__getshort"] "." definer["__getshort"]] = "Y"; ! want[library["_dn_comp"] "." definer["_dn_comp"]] = "Y"; ! want[library["_dn_skipname"] "." definer["_dn_skipname"]] = "Y"; ! want[library["_putlong"] "." definer["_putlong"]] = "Y"; ! want[library["_putshort"] "." definer["_putshort"]] = "Y"; ! want[library["_strcasecmp"] "." definer["_strcasecmp"]] = "Y"; ! want[library["_strncasecmp"] "." definer["_strncasecmp"]] = "Y"; ! want[library["__res_opcodes"] "." definer["__res_opcodes"]] = "Y"; ! want[library["__res_resultcodes"] "." definer["__res_resultcodes"]] = "Y"; ! want[library["__res"] "." definer["__res"]] = "Y"; ! want[library["_h_errno"] "." definer["_h_errno"]] = "Y"; # now take transitive closure of wanted modules for (needmore = "Y"; needmore == "Y"; needmore = "N") { for ( i = 0; i < epcount; i++) { ! if (want[library[ep[i]] "." definer[ep[i]]] != "Y") { ! want[library[ep[i]] "." definer[ep[i]]] = "N"; for ( j = 0; j < refcount[ep[i]]; j++ ) { if (want[referrer[ep[i] "." j]] == "Y") { ! want[library[ep[i]] "." definer[ep[i]]] = "Y"; needmore = "Y"; break; } *************** *** 120,125 **** # write out all wanted module name and entry points for ( i = 0 ; i < epcount ; i++) ! if (want[definer[ep[i]]] == "Y") printf "%s %s\n", definer[ep[i]], ep[i]; } --- 161,166 ---- # write out all wanted module name and entry points for ( i = 0 ; i < epcount ; i++) ! if (want[library[ep[i]] "." definer[ep[i]]] == "Y") printf "%s %s\n", definer[ep[i]], ep[i]; } *** overhead/class/machdep/sun_68k/getlist.awk Wed Nov 22 13:30:31 1989 --- overhead/class/machdep/sun_68k/getlist.awk.NEW Mon Jan 7 23:07:29 1991 *************** *** 6,11 **** --- 6,12 ---- # data structures used here: # # definer[entry-point-name] = module-name + # library[entry-point-name] = library-name # epcount = # entry-point-name's seen so far # ep[k] = k'th entry-point-name # refcount[entry-point-name] = number of references by wanted modules *************** *** 15,26 **** # search output of nm and set up definers and referrers / [ATDBC] / { ! if (definer[$5] == "") definer[ep[epcount++] = $5] = $2; } / U / { ! referrer[$4 "." refcount[$4]++] = $2; } # postprocessing --- 16,29 ---- # search output of nm and set up definers and referrers / [ATDBC] / { ! if (definer[$5] == "") { definer[ep[epcount++] = $5] = $2; + library[$5] = $1; + } } / U / { ! referrer[$4 "." refcount[$4]++] = $1 "." $2; } # postprocessing *************** *** 30,118 **** # Specify which entry points we definitely want. Edit this list to add entry points. ! want[definer["_class_RoutineStruct"]] = "Y"; ! want[definer["_class_Error"]] = "Y"; ! want[definer["_ProgramName"]] = "Y"; ! # want[definer["_class_Header"]] = "Y"; ! want[definer["_class_NewObject"]] = "Y"; ! want[definer["_class_Load"]] = "Y"; ! want[definer["_class_IsLoaded"]] = "Y"; ! want[definer["_class_Lookup"]] = "Y"; ! want[definer["_class_IsType"]] = "Y"; ! want[definer["_class_IsTypeByName"]] = "Y"; ! want[definer["_class_EnterInfo"]] = "Y"; ! want[definer["_class_SetClassPath"]] = "Y"; ! want[definer["_class_PrependClassPath"]] = "Y"; ! want[definer["_class_GetEText"]] = "Y"; ! want[definer["_environ"]] = "Y"; ! want[definer["__exit"]] = "Y"; ! want[definer["_abort"]] = "Y"; ! want[definer["_alloca"]] = "Y"; ! want[definer["_blt"]] = "Y"; ! want[definer["_bcopy"]] = "Y"; ! want[definer["_brk"]] = "Y"; ! want[definer["_bzero"]] = "Y"; ! want[definer["_calloc"]] = "Y"; ! want[definer["_cfree"]] = "Y"; ! want[definer["_errno"]] = "Y"; ! want[definer["_close"]] = "Y"; ! want[definer["_errno"]] = "Y"; ! want[definer["_creat"]] = "Y"; ! want[definer["__ctype_"]] = "Y"; ! want[definer["__doprnt"]] = "Y"; ! want[definer["_ecvt"]] = "Y"; ! want[definer["_fcvt"]] = "Y"; ! want[definer["_sys_errlist"]] = "Y"; ! want[definer["_sys_nerr"]] = "Y"; ! want[definer["_exit"]] = "Y"; ! want[definer["_fcntl"]] = "Y"; ! want[definer["__filbuf"]] = "Y"; ! want[definer["__iob"]] = "Y"; ! want[definer["__cleanup"]] = "Y"; ! want[definer["__flsbuf"]] = "Y"; ! want[definer["_fclose"]] = "Y"; ! want[definer["_fflush"]] = "Y"; ! want[definer["_fopen"]] = "Y"; ! want[definer["_fprintf"]] = "Y"; ! want[definer["_fread"]] = "Y"; ! want[definer["_fstat"]] = "Y"; ! want[definer["_fwrite"]] = "Y"; ! want[definer["_gcvt"]] = "Y"; ! want[definer["_getdtablesize"]] = "Y"; ! want[definer["_getpagesize"]] = "Y"; ! want[definer["_ioctl"]] = "Y"; ! want[definer["_isatty"]] = "Y"; ! want[definer["_lseek"]] = "Y"; ! want[definer["_malloc"]] = "Y"; ! want[definer["_modf"]] = "Y"; ! want[definer["_realloc"]] = "Y"; ! want[definer["_free"]] = "Y"; ! want[definer["_open"]] = "Y"; ! want[definer["_perror"]] = "Y"; ! want[definer["_printf"]] = "Y"; ! want[definer["_read"]] = "Y"; ! want[definer["_sbrk"]] = "Y"; ! want[definer["curbrk"]] = "Y"; ! want[definer["_sigvec"]] = "Y"; ! want[definer["_sprintf"]] = "Y"; ! want[definer["_strlen"]] = "Y"; ! want[definer["_syscall"]] = "Y"; ! want[definer["_write"]] = "Y"; ! want[definer["_writev"]] = "Y"; ! if (definer["_getpwuid"] != "") want[definer["_getpwuid"]] = "Y"; ! if (definer["_clntudp_create"] != "") want[definer["_clntudp_create"]] = "Y"; ! if (definer["_authnone_create"] != "") want[definer["_authnone_create"]] = "Y"; ! if (definer["_authunix_create"] != "") want[definer["_authunix_create"]] = "Y"; # now take transitive closure of wanted modules for (needmore = "Y"; needmore == "Y"; needmore = "N") { for ( i = 0; i < epcount; i++) { ! if (want[definer[ep[i]]] != "Y") { ! want[definer[ep[i]]] = "N"; for ( j = 0; j < refcount[ep[i]]; j++ ) { if (want[referrer[ep[i] "." j]] == "Y") { ! want[definer[ep[i]]] = "Y"; needmore = "Y"; break; } --- 33,165 ---- # Specify which entry points we definitely want. Edit this list to add entry points. ! want[library["_class_RoutineStruct"] "." definer["_class_RoutineStruct"]] = "Y"; ! want[library["_class_Error"] "." definer["_class_Error"]] = "Y"; ! want[library["_ProgramName"] "." definer["_ProgramName"]] = "Y"; ! # want[library["_class_Header"] "." definer["_class_Header"]] = "Y"; ! want[library["_class_NewObject"] "." definer["_class_NewObject"]] = "Y"; ! want[library["_class_Load"] "." definer["_class_Load"]] = "Y"; ! want[library["_class_IsLoaded"] "." definer["_class_IsLoaded"]] = "Y"; ! want[library["_class_Lookup"] "." definer["_class_Lookup"]] = "Y"; ! want[library["_class_IsType"] "." definer["_class_IsType"]] = "Y"; ! want[library["_class_IsTypeByName"] "." definer["_class_IsTypeByName"]] = "Y"; ! want[library["_class_EnterInfo"] "." definer["_class_EnterInfo"]] = "Y"; ! want[library["_class_SetClassPath"] "." definer["_class_SetClassPath"]] = "Y"; ! want[library["_class_PrependClassPath"] "." definer["_class_PrependClassPath"]] = "Y"; ! want[library["_class_GetEText"] "." definer["_class_GetEText"]] = "Y"; ! want[library["_environ"] "." definer["_environ"]] = "Y"; ! want[library["__exit"] "." definer["__exit"]] = "Y"; ! want[library["_abort"] "." definer["_abort"]] = "Y"; ! want[library["_alloca"] "." definer["_alloca"]] = "Y"; ! want[library["_blt"] "." definer["_blt"]] = "Y"; ! want[library["_bcopy"] "." definer["_bcopy"]] = "Y"; ! want[library["_brk"] "." definer["_brk"]] = "Y"; ! want[library["_bzero"] "." definer["_bzero"]] = "Y"; ! want[library["_calloc"] "." definer["_calloc"]] = "Y"; ! want[library["_cfree"] "." definer["_cfree"]] = "Y"; ! want[library["_errno"] "." definer["_errno"]] = "Y"; ! want[library["_close"] "." definer["_close"]] = "Y"; ! want[library["_errno"] "." definer["_errno"]] = "Y"; ! want[library["_creat"] "." definer["_creat"]] = "Y"; ! want[library["__ctype_"] "." definer["__ctype_"]] = "Y"; ! want[library["__doprnt"] "." definer["__doprnt"]] = "Y"; ! want[library["_ecvt"] "." definer["_ecvt"]] = "Y"; ! want[library["_fcvt"] "." definer["_fcvt"]] = "Y"; ! want[library["_sys_errlist"] "." definer["_sys_errlist"]] = "Y"; ! want[library["_sys_nerr"] "." definer["_sys_nerr"]] = "Y"; ! want[library["_exit"] "." definer["_exit"]] = "Y"; ! want[library["_fcntl"] "." definer["_fcntl"]] = "Y"; ! want[library["__filbuf"] "." definer["__filbuf"]] = "Y"; ! want[library["__iob"] "." definer["__iob"]] = "Y"; ! want[library["__cleanup"] "." definer["__cleanup"]] = "Y"; ! want[library["__flsbuf"] "." definer["__flsbuf"]] = "Y"; ! want[library["_fclose"] "." definer["_fclose"]] = "Y"; ! want[library["_fflush"] "." definer["_fflush"]] = "Y"; ! want[library["_fopen"] "." definer["_fopen"]] = "Y"; ! want[library["_fprintf"] "." definer["_fprintf"]] = "Y"; ! want[library["_fread"] "." definer["_fread"]] = "Y"; ! want[library["_fstat"] "." definer["_fstat"]] = "Y"; ! want[library["_fwrite"] "." definer["_fwrite"]] = "Y"; ! want[library["_gcvt"] "." definer["_gcvt"]] = "Y"; ! want[library["_getdtablesize"] "." definer["_getdtablesize"]] = "Y"; ! want[library["_getpagesize"] "." definer["_getpagesize"]] = "Y"; ! want[library["_ioctl"] "." definer["_ioctl"]] = "Y"; ! want[library["_isatty"] "." definer["_isatty"]] = "Y"; ! want[library["_lseek"] "." definer["_lseek"]] = "Y"; ! want[library["_malloc"] "." definer["_malloc"]] = "Y"; ! want[library["_modf"] "." definer["_modf"]] = "Y"; ! want[library["_realloc"] "." definer["_realloc"]] = "Y"; ! want[library["_free"] "." definer["_free"]] = "Y"; ! want[library["_open"] "." definer["_open"]] = "Y"; ! want[library["_perror"] "." definer["_perror"]] = "Y"; ! want[library["_printf"] "." definer["_printf"]] = "Y"; ! want[library["_read"] "." definer["_read"]] = "Y"; ! want[library["_sbrk"] "." definer["_sbrk"]] = "Y"; ! want[library["curbrk"] "." definer["curbrk"]] = "Y"; ! want[library["_sigvec"] "." definer["_sigvec"]] = "Y"; ! want[library["_sprintf"] "." definer["_sprintf"]] = "Y"; ! want[library["_strlen"] "." definer["_strlen"]] = "Y"; ! want[library["_syscall"] "." definer["_syscall"]] = "Y"; ! want[library["_write"] "." definer["_write"]] = "Y"; ! want[library["_writev"] "." definer["_writev"]] = "Y"; + want[library["_gethostbyname"] "." definer["_gethostbyname"]] = "Y"; + want[library["_gethostbyaddr"] "." definer["_gethostbyaddr"]] = "Y"; + want[library["_sethostent"] "." definer["_sethostent"]] = "Y"; + want[library["_res_querydomain"] "." definer["_res_querydomain"]] = "Y"; + want[library["_res_mkquery"] "." definer["_res_mkquery"]] = "Y"; + want[library["_res_send"] "." definer["_res_send"]] = "Y"; + want[library["_dn_expand"] "." definer["_dn_expand"]] = "Y"; + want[library["_res_init"] "." definer["_res_init"]] = "Y"; + want[library["__endhtent"] "." definer["__endhtent"]] = "Y"; + want[library["__sethtent"] "." definer["__sethtent"]] = "Y"; + want[library["__gethtbyaddr"] "." definer["__gethtbyaddr"]] = "Y"; + want[library["__gethtbyname"] "." definer["__gethtbyname"]] = "Y"; + want[library["__gethtent"] "." definer["__gethtent"]] = "Y"; + want[library["__getrhbyaddr"] "." definer["__getrhbyaddr"]] = "Y"; + want[library["_endhostent"] "." definer["_endhostent"]] = "Y"; + want[library["_sethostfile"] "." definer["_sethostfile"]] = "Y"; + want[library["_hostalias"] "." definer["_hostalias"]] = "Y"; + want[library["_res_query"] "." definer["_res_query"]] = "Y"; + want[library["_res_search"] "." definer["_res_search"]] = "Y"; + want[library["__res_close"] "." definer["__res_close"]] = "Y"; + want[library["_fp_query"] "." definer["_fp_query"]] = "Y"; + want[library["_p_cdname"] "." definer["_p_cdname"]] = "Y"; + want[library["_p_class"] "." definer["_p_class"]] = "Y"; + want[library["_p_query"] "." definer["_p_query"]] = "Y"; + want[library["_p_rr"] "." definer["_p_rr"]] = "Y"; + want[library["_p_type"] "." definer["_p_type"]] = "Y"; + want[library["__getlong"] "." definer["__getlong"]] = "Y"; + want[library["__getshort"] "." definer["__getshort"]] = "Y"; + want[library["_dn_comp"] "." definer["_dn_comp"]] = "Y"; + want[library["_dn_skipname"] "." definer["_dn_skipname"]] = "Y"; + want[library["_putlong"] "." definer["_putlong"]] = "Y"; + want[library["_putshort"] "." definer["_putshort"]] = "Y"; + want[library["_strcasecmp"] "." definer["_strcasecmp"]] = "Y"; + want[library["_strncasecmp"] "." definer["_strncasecmp"]] = "Y"; + want[library["__res_opcodes"] "." definer["__res_opcodes"]] = "Y"; + want[library["__res_resultcodes"] "." definer["__res_resultcodes"]] = "Y"; + want[library["__res"] "." definer["__res"]] = "Y"; + want[library["_h_errno"] "." definer["_h_errno"]] = "Y"; + + if (definer["_getpwuid"] != "") + want[library["_getpwuid"] "." definer["_getpwuid"]] = "Y"; + if (definer["_clntudp_create"] != "") + want[library["_clntudp_create"] "." definer["_clntudp_create"]] = "Y"; + if (definer["_authnone_create"] != "") + want[library["_authnone_create"] "." definer["_authnone_create"]] = "Y"; + if (definer["_authunix_create"] != "") + want[library["_authunix_create"] "." definer["_authunix_create"]] = "Y"; + # now take transitive closure of wanted modules for (needmore = "Y"; needmore == "Y"; needmore = "N") { for ( i = 0; i < epcount; i++) { ! if (want[library[ep[i]] "." definer[ep[i]]] != "Y") { ! want[library[ep[i]] "." definer[ep[i]]] = "N"; for ( j = 0; j < refcount[ep[i]]; j++ ) { if (want[referrer[ep[i] "." j]] == "Y") { ! want[library[ep[i]] "." definer[ep[i]]] = "Y"; needmore = "Y"; break; } *************** *** 124,129 **** # write out all wanted module name and entry points for ( i = 0 ; i < epcount ; i++) ! if (want[definer[ep[i]]] == "Y") printf "%s %s\n", definer[ep[i]], ep[i]; } --- 171,176 ---- # write out all wanted module name and entry points for ( i = 0 ; i < epcount ; i++) ! if (want[library[ep[i]] "." definer[ep[i]]] == "Y") printf "%s %s\n", definer[ep[i]], ep[i]; } *** overhead/class/machdep/sun_sparc/Imakefile Fri Dec 21 15:01:54 1990 --- overhead/class/machdep/sun_sparc/Imakefile.NEW Mon Jan 7 23:07:32 1991 *************** *** 16,33 **** GETLIST = getlist.awk #endif ! all:: globals.o entry.o doload.o ! globals.o: globals.spp globalrefs._h globalrefs._h: libc.eplist $(AWK) '{printf "\tglobalref(%s)\n", $$2}' libc.eplist >,globalrefs._h $(MV) ,globalrefs._h globalrefs._h ! libc.eplist: /lib/libc.a /lib/crt0.o $(GETLIST) $(RM) /tmp/libhack.a $(AR) /tmp/libhack.a /lib/crt0.o ! $(NM) -go /lib/libc.a /tmp/libhack.a | $(TR) ":" " " | \ $(AWK) -f $(GETLIST) >,libc.eplist $(MV) ,libc.eplist libc.eplist $(RM) /tmp/libhack.a --- 16,42 ---- GETLIST = getlist.awk #endif ! #ifdef RESOLVER_ENV ! RESOLVER_LIB = $(RESOLVLIB) ! RESOLVER_CMD = /bin/sh -c 'if test $(RESOLVER_LIB); \ ! then ar x $(RESOLVER_LIB); fi; exit 0'; ! #else ! RESOLVER_LIB = ! RESOLVER_CMD = ! #endif ! all:: globals.o entry.o doload.o + globals.o: globals.spp globalrefs._h + globalrefs._h: libc.eplist $(AWK) '{printf "\tglobalref(%s)\n", $$2}' libc.eplist >,globalrefs._h $(MV) ,globalrefs._h globalrefs._h ! libc.eplist: /lib/libc.a /lib/crt0.o $(RESOLVER_LIB) $(GETLIST) $(RM) /tmp/libhack.a $(AR) /tmp/libhack.a /lib/crt0.o ! $(NM) -go $(RESOLVER_LIB) /lib/libc.a /tmp/libhack.a | $(TR) ":" " " | \ $(AWK) -f $(GETLIST) >,libc.eplist $(MV) ,libc.eplist libc.eplist $(RM) /tmp/libhack.a *************** *** 41,55 **** $(AWK) '{print $$1}' libc.eplist | $(SORT) -u > ,DelList._ $(MV) ,DelList._ DelList._ ! libcx.a: /lib/libc.a /lib/crt0.o DelList._ ! $(CP) /lib/libc.a ,libcx.a ! $(CHMODW) ,libcx.a ! $(AR) ,libcx.a /lib/crt0.o ! -ar d ,libcx.a `cat DelList._` ! $(RANLIB) ,libcx.a ! $(MV) ,libcx.a libcx.a ! all:: dofix.o clean:: ! $(RM) DelList._ libc.eplist globalrefs._h ,* libcx.a --- 50,70 ---- $(AWK) '{print $$1}' libc.eplist | $(SORT) -u > ,DelList._ $(MV) ,DelList._ DelList._ ! libcx.a: /lib/libc.a /lib/crt0.o $(RESOLVER_LIB) DelList._ ! rm -rf new ! mkdir new ! cd new ; \ ! $(RESOLVER_CMD) \ ! $(CP) /lib/crt0.o crt0.o ; \ ! $(CP) /lib/libc.a ,libcx.a ; \ ! $(CHMODW) ,libcx.a ; \ ! ar q ,libcx.a *.o ! mv new/,libcx.a libcx.a ! -ar d libcx.a `cat DelList._` ! $(RANLIB) libcx.a ! rm -rf new ! all:: dofix.o clean:: ! $(RM) DelList._ libc.eplist globalrefs._h ,* libcx.a *** overhead/class/machdep/sun_sparc/getlafs.awk Wed Nov 22 13:32:04 1989 --- overhead/class/machdep/sun_sparc/getlafs.awk.NEW Mon Jan 7 23:07:33 1991 *************** *** 6,11 **** --- 6,12 ---- # data structures used here: # # definer[entry-point-name] = module-name + # library[entry-point-name] = library-name # epcount = # entry-point-name's seen so far # ep[k] = k'th entry-point-name # refcount[entry-point-name] = number of references by wanted modules *************** *** 15,26 **** # search output of nm and set up definers and referrers / [ATDBC] / { ! if (definer[$5] == "") definer[ep[epcount++] = $5] = $2; } / U / { ! referrer[$4 "." refcount[$4]++] = $2; } # postprocessing --- 16,29 ---- # search output of nm and set up definers and referrers / [ATDBC] / { ! if (definer[$5] == "") { definer[ep[epcount++] = $5] = $2; + library[$5] = $1; + } } / U / { ! referrer[$4 "." refcount[$4]++] = $1 "." $2; } # postprocessing *************** *** 30,114 **** # Specify which entry points we definitely want. Edit this list to add entry points. ! want[definer["_class_RoutineStruct"]] = "Y"; ! want[definer["_class_Error"]] = "Y"; ! want[definer["_ProgramName"]] = "Y"; ! # want[definer["_class_Header"]] = "Y"; ! want[definer["_class_NewObject"]] = "Y"; ! want[definer["_class_Load"]] = "Y"; ! want[definer["_class_IsLoaded"]] = "Y"; ! want[definer["_class_Lookup"]] = "Y"; ! want[definer["_class_IsType"]] = "Y"; ! want[definer["_class_IsTypeByName"]] = "Y"; ! want[definer["_class_EnterInfo"]] = "Y"; ! want[definer["_class_SetClassPath"]] = "Y"; ! want[definer["_class_PrependClassPath"]] = "Y"; ! want[definer["_class_GetEText"]] = "Y"; ! want[definer["_environ"]] = "Y"; ! want[definer["__exit"]] = "Y"; ! want[definer["_abort"]] = "Y"; ! want[definer["_alloca"]] = "Y"; ! want[definer["_blt"]] = "Y"; ! want[definer["_bcopy"]] = "Y"; ! want[definer["_brk"]] = "Y"; ! want[definer["_bzero"]] = "Y"; ! want[definer["_calloc"]] = "Y"; ! want[definer["_cfree"]] = "Y"; ! want[definer["_errno"]] = "Y"; ! want[definer["_close"]] = "Y"; ! want[definer["_errno"]] = "Y"; ! want[definer["_creat"]] = "Y"; ! want[definer["__ctype_"]] = "Y"; ! want[definer["__doprnt"]] = "Y"; ! want[definer["_ecvt"]] = "Y"; ! want[definer["_fcvt"]] = "Y"; ! want[definer["_sys_errlist"]] = "Y"; ! want[definer["_sys_nerr"]] = "Y"; ! want[definer["_exit"]] = "Y"; ! want[definer["_fcntl"]] = "Y"; ! want[definer["__filbuf"]] = "Y"; ! want[definer["__iob"]] = "Y"; ! want[definer["__cleanup"]] = "Y"; ! want[definer["__flsbuf"]] = "Y"; ! want[definer["_fclose"]] = "Y"; ! want[definer["_fflush"]] = "Y"; ! want[definer["_fopen"]] = "Y"; ! want[definer["_fprintf"]] = "Y"; ! want[definer["_fread"]] = "Y"; ! want[definer["_fstat"]] = "Y"; ! want[definer["_fwrite"]] = "Y"; ! want[definer["_gcvt"]] = "Y"; ! want[definer["_getdtablesize"]] = "Y"; ! want[definer["_getpagesize"]] = "Y"; ! want[definer["_ioctl"]] = "Y"; ! want[definer["_isatty"]] = "Y"; ! want[definer["_lseek"]] = "Y"; ! want[definer["_malloc"]] = "Y"; ! want[definer["_modf"]] = "Y"; ! want[definer["_realloc"]] = "Y"; ! want[definer["_free"]] = "Y"; ! want[definer["_open"]] = "Y"; ! want[definer["_perror"]] = "Y"; ! want[definer["_printf"]] = "Y"; ! want[definer["_read"]] = "Y"; ! want[definer["_sbrk"]] = "Y"; ! want[definer["curbrk"]] = "Y"; ! want[definer["_sigvec"]] = "Y"; ! want[definer["_sprintf"]] = "Y"; ! want[definer["_strlen"]] = "Y"; ! want[definer["_syscall"]] = "Y"; ! want[definer["_write"]] = "Y"; ! want[definer["_writev"]] = "Y"; # now take transitive closure of wanted modules for (needmore = "Y"; needmore == "Y"; needmore = "N") { for ( i = 0; i < epcount; i++) { ! if (want[definer[ep[i]]] != "Y") { ! want[definer[ep[i]]] = "N"; for ( j = 0; j < refcount[ep[i]]; j++ ) { if (want[referrer[ep[i] "." j]] == "Y") { ! want[definer[ep[i]]] = "Y"; needmore = "Y"; break; } --- 33,158 ---- # Specify which entry points we definitely want. Edit this list to add entry points. ! want[library["_class_RoutineStruct"] "." definer["_class_RoutineStruct"]] = "Y"; ! want[library["_class_Error"] "." definer["_class_Error"]] = "Y"; ! want[library["_ProgramName"] "." definer["_ProgramName"]] = "Y"; ! # want[library["_class_Header"] "." definer["_class_Header"]] = "Y"; ! want[library["_class_NewObject"] "." definer["_class_NewObject"]] = "Y"; ! want[library["_class_Load"] "." definer["_class_Load"]] = "Y"; ! want[library["_class_IsLoaded"] "." definer["_class_IsLoaded"]] = "Y"; ! want[library["_class_Lookup"] "." definer["_class_Lookup"]] = "Y"; ! want[library["_class_IsType"] "." definer["_class_IsType"]] = "Y"; ! want[library["_class_IsTypeByName"] "." definer["_class_IsTypeByName"]] = "Y"; ! want[library["_class_EnterInfo"] "." definer["_class_EnterInfo"]] = "Y"; ! want[library["_class_SetClassPath"] "." definer["_class_SetClassPath"]] = "Y"; ! want[library["_class_PrependClassPath"] "." definer["_class_PrependClassPath"]] = "Y"; ! want[library["_class_GetEText"] "." definer["_class_GetEText"]] = "Y"; ! want[library["_environ"] "." definer["_environ"]] = "Y"; ! want[library["__exit"] "." definer["__exit"]] = "Y"; ! want[library["_abort"] "." definer["_abort"]] = "Y"; ! want[library["_alloca"] "." definer["_alloca"]] = "Y"; ! want[library["_blt"] "." definer["_blt"]] = "Y"; ! want[library["_bcopy"] "." definer["_bcopy"]] = "Y"; ! want[library["_brk"] "." definer["_brk"]] = "Y"; ! want[library["_bzero"] "." definer["_bzero"]] = "Y"; ! want[library["_calloc"] "." definer["_calloc"]] = "Y"; ! want[library["_cfree"] "." definer["_cfree"]] = "Y"; ! want[library["_errno"] "." definer["_errno"]] = "Y"; ! want[library["_close"] "." definer["_close"]] = "Y"; ! want[library["_errno"] "." definer["_errno"]] = "Y"; ! want[library["_creat"] "." definer["_creat"]] = "Y"; ! want[library["__ctype_"] "." definer["__ctype_"]] = "Y"; ! want[library["__doprnt"] "." definer["__doprnt"]] = "Y"; ! want[library["_ecvt"] "." definer["_ecvt"]] = "Y"; ! want[library["_fcvt"] "." definer["_fcvt"]] = "Y"; ! want[library["_sys_errlist"] "." definer["_sys_errlist"]] = "Y"; ! want[library["_sys_nerr"] "." definer["_sys_nerr"]] = "Y"; ! want[library["_exit"] "." definer["_exit"]] = "Y"; ! want[library["_fcntl"] "." definer["_fcntl"]] = "Y"; ! want[library["__filbuf"] "." definer["__filbuf"]] = "Y"; ! want[library["__iob"] "." definer["__iob"]] = "Y"; ! want[library["__cleanup"] "." definer["__cleanup"]] = "Y"; ! want[library["__flsbuf"] "." definer["__flsbuf"]] = "Y"; ! want[library["_fclose"] "." definer["_fclose"]] = "Y"; ! want[library["_fflush"] "." definer["_fflush"]] = "Y"; ! want[library["_fopen"] "." definer["_fopen"]] = "Y"; ! want[library["_fprintf"] "." definer["_fprintf"]] = "Y"; ! want[library["_fread"] "." definer["_fread"]] = "Y"; ! want[library["_fstat"] "." definer["_fstat"]] = "Y"; ! want[library["_fwrite"] "." definer["_fwrite"]] = "Y"; ! want[library["_gcvt"] "." definer["_gcvt"]] = "Y"; ! want[library["_getdtablesize"] "." definer["_getdtablesize"]] = "Y"; ! want[library["_getpagesize"] "." definer["_getpagesize"]] = "Y"; ! want[library["_ioctl"] "." definer["_ioctl"]] = "Y"; ! want[library["_isatty"] "." definer["_isatty"]] = "Y"; ! want[library["_lseek"] "." definer["_lseek"]] = "Y"; ! want[library["_malloc"] "." definer["_malloc"]] = "Y"; ! want[library["_modf"] "." definer["_modf"]] = "Y"; ! want[library["_realloc"] "." definer["_realloc"]] = "Y"; ! want[library["_free"] "." definer["_free"]] = "Y"; ! want[library["_open"] "." definer["_open"]] = "Y"; ! want[library["_perror"] "." definer["_perror"]] = "Y"; ! want[library["_printf"] "." definer["_printf"]] = "Y"; ! want[library["_read"] "." definer["_read"]] = "Y"; ! want[library["_sbrk"] "." definer["_sbrk"]] = "Y"; ! want[library["curbrk"] "." definer["curbrk"]] = "Y"; ! want[library["_sigvec"] "." definer["_sigvec"]] = "Y"; ! want[library["_sprintf"] "." definer["_sprintf"]] = "Y"; ! want[library["_strlen"] "." definer["_strlen"]] = "Y"; ! want[library["_syscall"] "." definer["_syscall"]] = "Y"; ! want[library["_write"] "." definer["_write"]] = "Y"; ! want[library["_writev"] "." definer["_writev"]] = "Y"; ! want[library["_toupper"] "." definer["_toupper"]] = "Y"; ! want[library["_tolower"] "." definer["_tolower"]] = "Y"; + want[library["_gethostbyname"] "." definer["_gethostbyname"]] = "Y"; + want[library["_gethostbyaddr"] "." definer["_gethostbyaddr"]] = "Y"; + want[library["_sethostent"] "." definer["_sethostent"]] = "Y"; + want[library["_res_querydomain"] "." definer["_res_querydomain"]] = "Y"; + want[library["_res_mkquery"] "." definer["_res_mkquery"]] = "Y"; + want[library["_res_send"] "." definer["_res_send"]] = "Y"; + want[library["_dn_expand"] "." definer["_dn_expand"]] = "Y"; + want[library["_res_init"] "." definer["_res_init"]] = "Y"; + want[library["__endhtent"] "." definer["__endhtent"]] = "Y"; + want[library["__sethtent"] "." definer["__sethtent"]] = "Y"; + want[library["__gethtbyaddr"] "." definer["__gethtbyaddr"]] = "Y"; + want[library["__gethtbyname"] "." definer["__gethtbyname"]] = "Y"; + want[library["__gethtent"] "." definer["__gethtent"]] = "Y"; + want[library["__getrhbyaddr"] "." definer["__getrhbyaddr"]] = "Y"; + want[library["_endhostent"] "." definer["_endhostent"]] = "Y"; + want[library["_sethostfile"] "." definer["_sethostfile"]] = "Y"; + want[library["_hostalias"] "." definer["_hostalias"]] = "Y"; + want[library["_res_query"] "." definer["_res_query"]] = "Y"; + want[library["_res_search"] "." definer["_res_search"]] = "Y"; + want[library["__res_close"] "." definer["__res_close"]] = "Y"; + want[library["_fp_query"] "." definer["_fp_query"]] = "Y"; + want[library["_p_cdname"] "." definer["_p_cdname"]] = "Y"; + want[library["_p_class"] "." definer["_p_class"]] = "Y"; + want[library["_p_query"] "." definer["_p_query"]] = "Y"; + want[library["_p_rr"] "." definer["_p_rr"]] = "Y"; + want[library["_p_type"] "." definer["_p_type"]] = "Y"; + want[library["__getlong"] "." definer["__getlong"]] = "Y"; + want[library["__getshort"] "." definer["__getshort"]] = "Y"; + want[library["_dn_comp"] "." definer["_dn_comp"]] = "Y"; + want[library["_dn_skipname"] "." definer["_dn_skipname"]] = "Y"; + want[library["_putlong"] "." definer["_putlong"]] = "Y"; + want[library["_putshort"] "." definer["_putshort"]] = "Y"; + want[library["_strcasecmp"] "." definer["_strcasecmp"]] = "Y"; + want[library["_strncasecmp"] "." definer["_strncasecmp"]] = "Y"; + want[library["__res_opcodes"] "." definer["__res_opcodes"]] = "Y"; + want[library["__res_resultcodes"] "." definer["__res_resultcodes"]] = "Y"; + want[library["__res"] "." definer["__res"]] = "Y"; + want[library["_h_errno"] "." definer["_h_errno"]] = "Y"; + # now take transitive closure of wanted modules for (needmore = "Y"; needmore == "Y"; needmore = "N") { for ( i = 0; i < epcount; i++) { ! if (want[library[ep[i]] "." definer[ep[i]]] != "Y") { ! want[library[ep[i]] "." definer[ep[i]]] = "N"; for ( j = 0; j < refcount[ep[i]]; j++ ) { if (want[referrer[ep[i] "." j]] == "Y") { ! want[library[ep[i]] "." definer[ep[i]]] = "Y"; needmore = "Y"; break; } *************** *** 120,125 **** # write out all wanted module name and entry points for ( i = 0 ; i < epcount ; i++) ! if (want[definer[ep[i]]] == "Y") printf "%s %s\n", definer[ep[i]], ep[i]; } --- 164,169 ---- # write out all wanted module name and entry points for ( i = 0 ; i < epcount ; i++) ! if (want[library[ep[i]] "." definer[ep[i]]] == "Y") printf "%s %s\n", definer[ep[i]], ep[i]; } *** overhead/class/machdep/sun_sparc/getlist.awk Wed Nov 22 13:31:54 1989 --- overhead/class/machdep/sun_sparc/getlist.awk.NEW Mon Jan 7 23:07:35 1991 *************** *** 6,26 **** # data structures used here: # # definer[entry-point-name] = module-name # epcount = # entry-point-name's seen so far # ep[k] = k'th entry-point-name # refcount[entry-point-name] = number of references by wanted modules # referrer[entry-point-name.k] = k'th module-name with an undefined reference to this entry-point-name ! # want[module-name] = "Y" if this module wanted # search output of nm and set up definers and referrers / [ATDBC] / { ! if (definer[$5] == "") definer[ep[epcount++] = $5] = $2; } / U / { ! referrer[$4 "." refcount[$4]++] = $2; } # postprocessing --- 6,29 ---- # data structures used here: # # definer[entry-point-name] = module-name + # library[entry-point-name] = library-name # epcount = # entry-point-name's seen so far # ep[k] = k'th entry-point-name # refcount[entry-point-name] = number of references by wanted modules # referrer[entry-point-name.k] = k'th module-name with an undefined reference to this entry-point-name ! # want[library-name . module-name] = "Y" if this module wanted # search output of nm and set up definers and referrers / [ATDBC] / { ! if (definer[$5] == "") { definer[ep[epcount++] = $5] = $2; + library[$5] = $1; + } } / U / { ! referrer[$4 "." refcount[$4]++] = $1 "." $2; } # postprocessing *************** *** 30,118 **** # Specify which entry points we definitely want. Edit this list to add entry points. ! want[definer["_class_RoutineStruct"]] = "Y"; ! want[definer["_class_Error"]] = "Y"; ! want[definer["_ProgramName"]] = "Y"; ! # want[definer["_class_Header"]] = "Y"; ! want[definer["_class_NewObject"]] = "Y"; ! want[definer["_class_Load"]] = "Y"; ! want[definer["_class_IsLoaded"]] = "Y"; ! want[definer["_class_Lookup"]] = "Y"; ! want[definer["_class_IsType"]] = "Y"; ! want[definer["_class_IsTypeByName"]] = "Y"; ! want[definer["_class_EnterInfo"]] = "Y"; ! want[definer["_class_SetClassPath"]] = "Y"; ! want[definer["_class_PrependClassPath"]] = "Y"; ! want[definer["_class_GetEText"]] = "Y"; ! want[definer["_environ"]] = "Y"; ! want[definer["__exit"]] = "Y"; ! want[definer["_abort"]] = "Y"; ! want[definer["_alloca"]] = "Y"; ! want[definer["_blt"]] = "Y"; ! want[definer["_bcopy"]] = "Y"; ! want[definer["_brk"]] = "Y"; ! want[definer["_bzero"]] = "Y"; ! want[definer["_calloc"]] = "Y"; ! want[definer["_cfree"]] = "Y"; ! want[definer["_errno"]] = "Y"; ! want[definer["_close"]] = "Y"; ! want[definer["_errno"]] = "Y"; ! want[definer["_creat"]] = "Y"; ! want[definer["__ctype_"]] = "Y"; ! want[definer["__doprnt"]] = "Y"; ! want[definer["_ecvt"]] = "Y"; ! want[definer["_fcvt"]] = "Y"; ! want[definer["_sys_errlist"]] = "Y"; ! want[definer["_sys_nerr"]] = "Y"; ! want[definer["_exit"]] = "Y"; ! want[definer["_fcntl"]] = "Y"; ! want[definer["__filbuf"]] = "Y"; ! want[definer["__iob"]] = "Y"; ! want[definer["__cleanup"]] = "Y"; ! want[definer["__flsbuf"]] = "Y"; ! want[definer["_fclose"]] = "Y"; ! want[definer["_fflush"]] = "Y"; ! want[definer["_fopen"]] = "Y"; ! want[definer["_fprintf"]] = "Y"; ! want[definer["_fread"]] = "Y"; ! want[definer["_fstat"]] = "Y"; ! want[definer["_fwrite"]] = "Y"; ! want[definer["_gcvt"]] = "Y"; ! want[definer["_getdtablesize"]] = "Y"; ! want[definer["_getpagesize"]] = "Y"; ! want[definer["_ioctl"]] = "Y"; ! want[definer["_isatty"]] = "Y"; ! want[definer["_lseek"]] = "Y"; ! want[definer["_malloc"]] = "Y"; ! want[definer["_modf"]] = "Y"; ! want[definer["_realloc"]] = "Y"; ! want[definer["_free"]] = "Y"; ! want[definer["_open"]] = "Y"; ! want[definer["_perror"]] = "Y"; ! want[definer["_printf"]] = "Y"; ! want[definer["_read"]] = "Y"; ! want[definer["_sbrk"]] = "Y"; ! want[definer["curbrk"]] = "Y"; ! want[definer["_sigvec"]] = "Y"; ! want[definer["_sprintf"]] = "Y"; ! want[definer["_strlen"]] = "Y"; ! want[definer["_syscall"]] = "Y"; ! want[definer["_write"]] = "Y"; ! want[definer["_writev"]] = "Y"; ! if (definer["_getpwuid"] != "") want[definer["_getpwuid"]] = "Y"; ! if (definer["_clntudp_create"] != "") want[definer["_clntudp_create"]] = "Y"; ! if (definer["_authnone_create"] != "") want[definer["_authnone_create"]] = "Y"; ! if (definer["_authunix_create"] != "") want[definer["_authunix_create"]] = "Y"; # now take transitive closure of wanted modules for (needmore = "Y"; needmore == "Y"; needmore = "N") { for ( i = 0; i < epcount; i++) { ! if (want[definer[ep[i]]] != "Y") { ! want[definer[ep[i]]] = "N"; for ( j = 0; j < refcount[ep[i]]; j++ ) { if (want[referrer[ep[i] "." j]] == "Y") { ! want[definer[ep[i]]] = "Y"; needmore = "Y"; break; } --- 33,158 ---- # Specify which entry points we definitely want. Edit this list to add entry points. ! want[library["_class_RoutineStruct"] "." definer["_class_RoutineStruct"]] = "Y"; ! want[library["_class_Error"] "." definer["_class_Error"]] = "Y"; ! want[library["_ProgramName"] "." definer["_ProgramName"]] = "Y"; ! # want[library["_class_Header"] "." definer["_class_Header"]] = "Y"; ! want[library["_class_NewObject"] "." definer["_class_NewObject"]] = "Y"; ! want[library["_class_Load"] "." definer["_class_Load"]] = "Y"; ! want[library["_class_IsLoaded"] "." definer["_class_IsLoaded"]] = "Y"; ! want[library["_class_Lookup"] "." definer["_class_Lookup"]] = "Y"; ! want[library["_class_IsType"] "." definer["_class_IsType"]] = "Y"; ! want[library["_class_IsTypeByName"] "." definer["_class_IsTypeByName"]] = "Y"; ! want[library["_class_EnterInfo"] "." definer["_class_EnterInfo"]] = "Y"; ! want[library["_class_SetClassPath"] "." definer["_class_SetClassPath"]] = "Y"; ! want[library["_class_PrependClassPath"] "." definer["_class_PrependClassPath"]] = "Y"; ! want[library["_class_GetEText"] "." definer["_class_GetEText"]] = "Y"; ! want[library["_environ"] "." definer["_environ"]] = "Y"; ! want[library["__exit"] "." definer["__exit"]] = "Y"; ! want[library["_abort"] "." definer["_abort"]] = "Y"; ! want[library["_alloca"] "." definer["_alloca"]] = "Y"; ! want[library["_blt"] "." definer["_blt"]] = "Y"; ! want[library["_bcopy"] "." definer["_bcopy"]] = "Y"; ! want[library["_brk"] "." definer["_brk"]] = "Y"; ! want[library["_bzero"] "." definer["_bzero"]] = "Y"; ! want[library["_calloc"] "." definer["_calloc"]] = "Y"; ! want[library["_cfree"] "." definer["_cfree"]] = "Y"; ! want[library["_errno"] "." definer["_errno"]] = "Y"; ! want[library["_close"] "." definer["_close"]] = "Y"; ! want[library["_errno"] "." definer["_errno"]] = "Y"; ! want[library["_creat"] "." definer["_creat"]] = "Y"; ! want[library["__ctype_"] "." definer["__ctype_"]] = "Y"; ! want[library["__doprnt"] "." definer["__doprnt"]] = "Y"; ! want[library["_ecvt"] "." definer["_ecvt"]] = "Y"; ! want[library["_fcvt"] "." definer["_fcvt"]] = "Y"; ! want[library["_sys_errlist"] "." definer["_sys_errlist"]] = "Y"; ! want[library["_sys_nerr"] "." definer["_sys_nerr"]] = "Y"; ! want[library["_exit"] "." definer["_exit"]] = "Y"; ! want[library["_fcntl"] "." definer["_fcntl"]] = "Y"; ! want[library["__filbuf"] "." definer["__filbuf"]] = "Y"; ! want[library["__iob"] "." definer["__iob"]] = "Y"; ! want[library["__cleanup"] "." definer["__cleanup"]] = "Y"; ! want[library["__flsbuf"] "." definer["__flsbuf"]] = "Y"; ! want[library["_fclose"] "." definer["_fclose"]] = "Y"; ! want[library["_fflush"] "." definer["_fflush"]] = "Y"; ! want[library["_fopen"] "." definer["_fopen"]] = "Y"; ! want[library["_fprintf"] "." definer["_fprintf"]] = "Y"; ! want[library["_fread"] "." definer["_fread"]] = "Y"; ! want[library["_fstat"] "." definer["_fstat"]] = "Y"; ! want[library["_fwrite"] "." definer["_fwrite"]] = "Y"; ! want[library["_gcvt"] "." definer["_gcvt"]] = "Y"; ! want[library["_getdtablesize"] "." definer["_getdtablesize"]] = "Y"; ! want[library["_getpagesize"] "." definer["_getpagesize"]] = "Y"; ! want[library["_ioctl"] "." definer["_ioctl"]] = "Y"; ! want[library["_isatty"] "." definer["_isatty"]] = "Y"; ! want[library["_lseek"] "." definer["_lseek"]] = "Y"; ! want[library["_malloc"] "." definer["_malloc"]] = "Y"; ! want[library["_modf"] "." definer["_modf"]] = "Y"; ! want[library["_realloc"] "." definer["_realloc"]] = "Y"; ! want[library["_free"] "." definer["_free"]] = "Y"; ! want[library["_open"] "." definer["_open"]] = "Y"; ! want[library["_perror"] "." definer["_perror"]] = "Y"; ! want[library["_printf"] "." definer["_printf"]] = "Y"; ! want[library["_read"] "." definer["_read"]] = "Y"; ! want[library["_sbrk"] "." definer["_sbrk"]] = "Y"; ! want[library["curbrk"] "." definer["curbrk"]] = "Y"; ! want[library["_sigvec"] "." definer["_sigvec"]] = "Y"; ! want[library["_sprintf"] "." definer["_sprintf"]] = "Y"; ! want[library["_strlen"] "." definer["_strlen"]] = "Y"; ! want[library["_syscall"] "." definer["_syscall"]] = "Y"; ! want[library["_write"] "." definer["_write"]] = "Y"; ! want[library["_writev"] "." definer["_writev"]] = "Y"; ! want[library["_toupper"] "." definer["_toupper"]] = "Y"; ! want[library["_tolower"] "." definer["_tolower"]] = "Y"; + want[library["_gethostbyname"] "." definer["_gethostbyname"]] = "Y"; + want[library["_gethostbyaddr"] "." definer["_gethostbyaddr"]] = "Y"; + want[library["_sethostent"] "." definer["_sethostent"]] = "Y"; + want[library["_res_querydomain"] "." definer["_res_querydomain"]] = "Y"; + want[library["_res_mkquery"] "." definer["_res_mkquery"]] = "Y"; + want[library["_res_send"] "." definer["_res_send"]] = "Y"; + want[library["_dn_expand"] "." definer["_dn_expand"]] = "Y"; + want[library["_res_init"] "." definer["_res_init"]] = "Y"; + want[library["__endhtent"] "." definer["__endhtent"]] = "Y"; + want[library["__sethtent"] "." definer["__sethtent"]] = "Y"; + want[library["__gethtbyaddr"] "." definer["__gethtbyaddr"]] = "Y"; + want[library["__gethtbyname"] "." definer["__gethtbyname"]] = "Y"; + want[library["__gethtent"] "." definer["__gethtent"]] = "Y"; + want[library["__getrhbyaddr"] "." definer["__getrhbyaddr"]] = "Y"; + want[library["_endhostent"] "." definer["_endhostent"]] = "Y"; + want[library["_sethostfile"] "." definer["_sethostfile"]] = "Y"; + want[library["_hostalias"] "." definer["_hostalias"]] = "Y"; + want[library["_res_query"] "." definer["_res_query"]] = "Y"; + want[library["_res_search"] "." definer["_res_search"]] = "Y"; + want[library["__res_close"] "." definer["__res_close"]] = "Y"; + want[library["_fp_query"] "." definer["_fp_query"]] = "Y"; + want[library["_p_cdname"] "." definer["_p_cdname"]] = "Y"; + want[library["_p_class"] "." definer["_p_class"]] = "Y"; + want[library["_p_query"] "." definer["_p_query"]] = "Y"; + want[library["_p_rr"] "." definer["_p_rr"]] = "Y"; + want[library["_p_type"] "." definer["_p_type"]] = "Y"; + want[library["__getlong"] "." definer["__getlong"]] = "Y"; + want[library["__getshort"] "." definer["__getshort"]] = "Y"; + want[library["_dn_comp"] "." definer["_dn_comp"]] = "Y"; + want[library["_dn_skipname"] "." definer["_dn_skipname"]] = "Y"; + want[library["_putlong"] "." definer["_putlong"]] = "Y"; + want[library["_putshort"] "." definer["_putshort"]] = "Y"; + want[library["_strcasecmp"] "." definer["_strcasecmp"]] = "Y"; + want[library["_strncasecmp"] "." definer["_strncasecmp"]] = "Y"; + want[library["__res_opcodes"] "." definer["__res_opcodes"]] = "Y"; + want[library["__res_resultcodes"] "." definer["__res_resultcodes"]] = "Y"; + want[library["__res"] "." definer["__res"]] = "Y"; + want[library["_h_errno"] "." definer["_h_errno"]] = "Y"; + # now take transitive closure of wanted modules for (needmore = "Y"; needmore == "Y"; needmore = "N") { for ( i = 0; i < epcount; i++) { ! if (want[library[ep[i]] "." definer[ep[i]]] != "Y") { ! want[library[ep[i]] "." definer[ep[i]]] = "N"; for ( j = 0; j < refcount[ep[i]]; j++ ) { if (want[referrer[ep[i] "." j]] == "Y") { ! want[library[ep[i]] "." definer[ep[i]]] = "Y"; needmore = "Y"; break; } *************** *** 124,129 **** # write out all wanted module name and entry points for ( i = 0 ; i < epcount ; i++) ! if (want[definer[ep[i]]] == "Y") printf "%s %s\n", definer[ep[i]], ep[i]; } --- 164,169 ---- # write out all wanted module name and entry points for ( i = 0 ; i < epcount ; i++) ! if (want[library[ep[i]] "." definer[ep[i]]] == "Y") printf "%s %s\n", definer[ep[i]], ep[i]; } *** overhead/class/pp/class.c Fri Dec 21 15:02:18 1990 --- overhead/class/pp/class.c.NEW Fri Dec 14 17:03:58 1990 *************** *** 2,11 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/overhead/class/pp/RCS/class.c,v 2.40 90/10/11 14:06:19 ajp Exp $ */ - #include #include #include #include --- 2,11 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/overhead/class/pp/RCS/class.c,v 2.42 90/12/06 16:25:39 gk5g Exp $ */ #include + #include #include #include *************** *** 14,20 **** --- 14,22 ---- /* * define these for the compiler */ + #ifndef _IBMR2 char *malloc(),*realloc(); /* should include stdlib.h */ + #endif /* _IBMR2 */ extern int yylex(); /* using lex */ extern char yytext[]; *** overhead/class/pp/classpp.l Wed Nov 22 13:33:23 1989 --- overhead/class/pp/classpp.l.NEW Tue Mar 20 22:59:11 1990 *************** *** 1,4 **** ! /* $Header: /afs/.andrew.cmu.edu/itc/sm/releases/X.V11R4/andrew/overhead/class/pp/RCS/classpp.l,v 2.2 89/02/21 08:23:40 pgc Exp $ */ %{ #include extern int nametype; /* pass back info to class preprocessor */ --- 1,4 ---- ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/overhead/class/pp/RCS/classpp.l,v 2.2 89/02/21 08:23:40 pgc Exp $ */ %{ #include extern int nametype; /* pass back info to class preprocessor */ *** overhead/conv/Imakefile Fri Aug 3 17:01:51 1990 --- overhead/conv/Imakefile.NEW Fri Jan 4 17:08:50 1991 *************** *** 1,6 **** NormalObjectRule() ! ProgramTarget(conclass,conclass.o, ${UTILLIB} $(BASEDIR)/lib/libclass.a,) InstallProgram(conclass, $(DESTDIR)/bin) InstallFile(fixcons, ${INSTPROGFLAGS}, ${DESTDIR}/etc/) --- 1,12 ---- + #ifdef RESOLVER_ENV + RESOLVER_LIB = $(RESOLVLIB) + #else + RESOLVER_LIB = + #endif + NormalObjectRule() ! ProgramTarget(conclass,conclass.o, ${UTILLIB} $(BASEDIR)/lib/libclass.a $(RESOLVER_LIB),) InstallProgram(conclass, $(DESTDIR)/bin) InstallFile(fixcons, ${INSTPROGFLAGS}, ${DESTDIR}/etc/) *** atk/Imakefile Fri Dec 21 14:52:55 1990 --- atk/Imakefile.NEW Fri Jan 4 16:59:16 1991 *************** *** 157,162 **** --- 157,163 ---- EQ = eq FAD = fad TABLE = table + LAYOUT = layout #else /* MK_BASIC_INSETS */ *** atk/help/src/Imakefile Fri Dec 21 14:54:50 1990 --- atk/help/src/Imakefile.NEW Fri Dec 21 17:35:29 1990 *************** *** 5,16 **** DOBJS = help.do helpa.do helpdb.do IHFILES = help.ih helpa.ih helpdb.ih - #ifdef RESOLVER_ENV - RESOLVER_LIB = $(RESOLVLIB) - #else - RESOLVER_LIB = - #endif /* RESOLVER_ENV */ - NormalObjectRule() NormalATKRule() --- 5,10 ---- *************** *** 19,25 **** InstallFile(helpmac.an, $(INSTINCFLAGS), $(DESTDIR)/lib/tmac) InstallFile(config.h, $(INSTINCFLAGS), $(DESTDIR)/include/atk) ! DynamicMultiObject(helpa.do, helpa.o, $(RESOLVER_LIB),) DynamicMultiObject(helpdb.do, helpdb.o, ${BASEDIR}/lib/libindex.a,) --- 13,19 ---- InstallFile(helpmac.an, $(INSTINCFLAGS), $(DESTDIR)/lib/tmac) InstallFile(config.h, $(INSTINCFLAGS), $(DESTDIR)/include/atk) ! DynamicMultiObject(helpa.do, helpa.o, ,) DynamicMultiObject(helpdb.do, helpdb.o, ${BASEDIR}/lib/libindex.a,) *** atk/console/cmd/Imakefile Wed Sep 26 16:03:53 1990 --- atk/console/cmd/Imakefile.NEW Fri Dec 21 17:36:07 1990 *************** *** 5,16 **** LOCALINCLUDES = -I../lib - #ifdef RESOLVER_ENV - RESOLVER_LIB = $(RESOLVLIB) - #else - RESOLVER_LIB = - #endif /* RESOLVER_ENV */ - DOBJS = $(VICEDOBJS) consolea.do IHFILES = $(VICEIHFILES) consolea.ih OBJS = consolea.o mailmon.o notop.o $(VICEOBJS) frlibcmu.o --- 5,10 ---- *************** *** 18,25 **** $(BASEDIR)/lib/atk/libtext.a \ ../lib/libconsole.a \ $(BASEDIR)/lib/liberrors.a \ ! $(UTILLIB) \ ! $(RESOLVER_LIB) NormalObjectRule() NormalATKRule() --- 12,18 ---- $(BASEDIR)/lib/atk/libtext.a \ ../lib/libconsole.a \ $(BASEDIR)/lib/liberrors.a \ ! $(UTILLIB) NormalObjectRule() NormalATKRule() *** atk/ness/type/Imakefile Wed Nov 22 12:19:51 1989 --- atk/ness/type/Imakefile.NEW Fri Jan 4 17:02:56 1991 *************** *** 12,17 **** --- 12,23 ---- OBJS = type.o parse.o DOCFILES = type.doc + #ifdef RESOLVER_ENV + RESOLVER_LIB = ${RESOLVLIB} + #else + RESOLVER_LIB = + #endif + ATKLIBS= ${BASEDIR}/lib/atk/libframe.a \ ${BASEDIR}/lib/atk/libtext.a \ ${BASEDIR}/lib/atk/libsupport.a \ *************** *** 19,24 **** --- 25,31 ---- ${BASEDIR}/lib/atk/libbasics.a LIBS = ${ATKLIBS} \ ${BASEDIR}/lib/libclass.a \ + ${RESOLVER_LIB} \ ${MALLOCLIB} \ ${BASEDIR}/lib/liberrors.a \ ${UTILLIB} *** atk/ness/tokens/Imakefile Fri Dec 21 14:56:12 1990 --- atk/ness/tokens/Imakefile.NEW Fri Jan 4 17:02:46 1991 *************** *** 8,13 **** --- 8,19 ---- OBJS = lex.o sym.o toksym.o lexdef.o qsearch.o DOCS = lex.doc sym.doc + #ifdef RESOLVER_ENV + RESOLVER_LIB = ${RESOLVLIB} + #else + RESOLVER_LIB = + #endif + NormalObjectRule() NormalATKRule() *************** *** 20,25 **** --- 26,32 ---- LIBS = ${BASEDIR}/lib/atk/libbasics.a \ ${BASEDIR}/lib/libclass.a \ + ${RESOLVER_LIB} \ ${MALLOCLIB} ProgramTarget(buildy, buildy.o, ${MALLOCLIB}, -lm) *** atk/ness/tokens/lex.c Fri Dec 21 14:27:47 1990 --- atk/ness/tokens/lex.c.NEW Fri Jan 4 17:02:50 1991 *************** *** 2,13 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/ness/tokens/RCS/lex.c,v 1.15 90/07/29 14:54:13 wjh Exp $ */ /* $ACIS:$ */ /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/ness/tokens/RCS/lex.c,v $ */ #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/ness/tokens/RCS/lex.c,v 1.15 90/07/29 14:54:13 wjh Exp $"; #endif /* lex.c --- 2,13 ---- * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ ! /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/ness/tokens/RCS/lex.c,v 1.17 91/01/02 18:17:13 gk5g Exp $ */ /* $ACIS:$ */ /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/ness/tokens/RCS/lex.c,v $ */ #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) ! static char *rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/ness/tokens/RCS/lex.c,v 1.17 91/01/02 18:17:13 gk5g Exp $"; #endif /* lex.c *************** *** 16,21 **** --- 16,29 ---- */ /* * $Log: lex.c,v $ + * Revision 1.17 91/01/02 18:17:13 gk5g + * Removed hacked to get around apparent failure of tolower on sparc arch. + * The real problem was related to dynamic loading and the fact the tolower/toupper are now function that live in libc.a. + * They were previously macros. + * + * Revision 1.16 90/12/18 15:43:00 wjh + * worked around error in C compiler which caused Illegal Instruction trap in Ness compilation of present.n + * * Revision 1.15 90/07/29 14:54:13 wjh * fixed so styles and objects are fully supported in short strings * *************** *** 544,551 **** if (self->def->foldCase) while ((c=NextCh(self)) != EOF && (c == '_' || isalpha(c) || isdigit(c)) ) { ! if (cx < cend) *cx++ = (isalpha(c) && isupper(c)) ? tolower(c) : c; else ok = FALSE; } else --- 552,560 ---- if (self->def->foldCase) while ((c=NextCh(self)) != EOF && (c == '_' || isalpha(c) || isdigit(c)) ) { ! if (cx < cend) { *cx++ = (isalpha(c) && isupper(c)) ? tolower(c) : c; + } else ok = FALSE; } else *** atk/raster/convert/Imakefile Wed Nov 22 12:25:27 1989 --- atk/raster/convert/Imakefile.NEW Fri Jan 4 17:03:29 1991 *************** *** 4,12 **** \* ********************************************************************** */ OBJS = convrast.o NormalObjectRule() ! ProgramTarget(convertraster, convrast.o, $(BASEDIR)/lib/atk/libbasics.a $(BASEDIR)/lib/libclass.a $(MALLOCLIB) $(BASEDIR)/lib/liberrors.a $(UTILLIB), ) InstallProgram(convertraster, $(DESTDIR)/bin) --- 4,25 ---- \* ********************************************************************** */ OBJS = convrast.o + #ifdef RESOLVER_ENV + RESOLVER_LIB = $(RESOLVLIB) + #else + RESOLVER_LIB = + #endif + + LIBS = $(BASEDIR)/lib/atk/libbasics.a \ + $(BASEDIR)/lib/libclass.a \ + $(MALLOCLIB) \ + $(BASEDIR)/lib/liberrors.a \ + $(UTILLIB) \ + $(RESOLVER_LIB) + NormalObjectRule() ! ProgramTarget(convertraster, convrast.o, $(LIBS), ) InstallProgram(convertraster, $(DESTDIR)/bin) *** atk/lset/Imakefile Fri Dec 21 14:26:48 1990 --- atk/lset/Imakefile.NEW Fri Jan 4 17:02:40 1991 *************** *** 31,36 **** --- 31,42 ---- RefMan.doc \ Title.doc + #ifdef RESOLVER_ENV + RESOLVER_LIB = $(RESOLVLIB) + #else + RESOLVER_LIB = + #endif + NormalObjectRule() NormalATKRule() *************** *** 57,63 **** $(LN) ../../adew/$$i $$i ) \ done) ! ProgramTarget(createcon, mkcon.o, ${UTILLIB} ${BASEDIR}/lib/libclass.a,) InstallProgram(createcon, $(DESTDIR)/bin) DependTarget() --- 63,69 ---- $(LN) ../../adew/$$i $$i ) \ done) ! ProgramTarget(createcon, mkcon.o, ${UTILLIB} ${BASEDIR}/lib/libclass.a $(RESOLVLIB),) InstallProgram(createcon, $(DESTDIR)/bin) DependTarget() *** atk/layout/box.c Wed Jan 9 14:06:01 1991 --- atk/layout/box.c.NEW Fri Dec 14 16:51:21 1990 *************** *** 0 **** --- 1,318 ---- + /* ********************************************************************** *\ + * Copyright IBM Corporation 1988,1990 - All Rights Reserved * + * For full copyright information see:'andrew/config/COPYRITE' * + \* ********************************************************************** */ + /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/layout/RCS/box.c,v 1.2 90/12/13 11:07:18 jhh Exp $ */ + /* $ACIS$ */ + /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/layout/RCS/box.c,v $ */ + + #ifndef lint + char *box_rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/layout/RCS/box.c,v 1.2 90/12/13 11:07:18 jhh Exp $"; + #endif /* lint */ + + #include + #include + + #include + #include + #include + #include + #include + #include + #include + + #include + + extern char * malloc (); + + #define classname(do) ((do) == NULL ? "" : class_GetTypeName(do)) + #define safename(c) ((c) == NULL ? "" : classname(c->data)) + + /* initialize entire class */ + + boolean + box__InitializeClass(classID) + struct classheader *classID; /* unused */ + { + if (debug) + printf("box_InitializeClass()\n"); + + return TRUE; + } + + /* get corresponding view name */ + + char * /* returns "boxview */ + box__ViewName(self) + struct box *self; + { + return "boxview"; + } + + /* Initialize new data box */ + + boolean /* returns TRUE for success */ + box__InitializeObject(classID, self) + struct classheader *classID; /* unused */ + struct box *self; + { + + if (debug) + printf("box_InitializeObject\n"); + + self->inGetModified = FALSE; + self->contents = NULL; + return TRUE; + } + + /* tear down a box */ + + void + box__FinalizeObject(classID, self) + struct classheader *classID; /* unused */ + struct box *self; + { + if (debug) + printf("box_FinalizeObject\n"); + } + + /* toggle debugging flag */ + + void + box__ToggleDebug(self) + struct box *self; + { + if (debug) { + printf("box debugging off\n"); + debug = 0; + } else { + debug = 1; + printf("box debugging on - ESC-ESC turns it off\n"); + } + } + + /* write box to file */ + + long /* returns id of object written */ + box__Write(self, f, writeID, level) + struct box *self; + FILE * f; /* file to be written */ + long writeID; /* unique ID of object in output file */ + int level; /* nesting level */ + { + + if (debug) + printf("box_Write(%ld, %d)\n", writeID, level); + + if (getDataObject(self).writeID != writeID) { + getDataObject(self).writeID = writeID; + fprintf (f, "\\begindata{%s,%ld}\n", class_GetTypeName(self), box_GetID(self)); + if (self->contents != NULL) { + if (debug) + printf("Writing out %s\n", class_GetTypeName(self->contents)); + dataobject_Write (self->contents, f, super_GetWriteID(self), level + 1); + } + fprintf (f, "\\enddata{%s,%ld}\n", class_GetTypeName(self), box_GetID(self)); + } + return box_GetID(self); + } + + /* object to and print out bad input */ + + static void + objectto(f, message) + FILE *f; /* input file containing offending material */ + char *message; /* error message */ + { + int ch; + + printf("%s: \"", message); + for (;;) { + ch = getc(f); + if (ch == '\n' || ch == EOF || ch == '\0') + break; + putchar(ch); + } + printf("\"\n"); + } + + /* scan input for a specific string */ + + static boolean /* returns TRUE for success */ + fgetstring(f, string) + FILE *f; /* input file */ + char *string; /* desired input string */ + { + int ch; + + ch = getc(f); + while (ch == *string && *string != '\0') { + ch = getc(f); + string++; + } + ungetc(ch, f); + if (*string != '\0') + return TRUE; + else + return FALSE; + } + + /* read ASCII representation of a box */ + + /* + box data stream: + + The box data stream follows ATK standards, starting with a begindata and + ending with an enddata directive. In between comes the contained object. + + */ + + static long /* returns read error status */ + readASCII(self, f, id) + struct box *self; + FILE *f; /* input file */ + long id; /* unique identifier in data stream */ + { + int ch; + char dataname[256]; + char *np; + long uniqueID; + + while ((ch = getc(f)) != EOF) { + if (ch == 0) { + printf("stopped on zero character"); + return dataobject_BADFORMAT; + } + if (ch != '\\') { + objectto(f, "box: missing begindata or enddata\n"); + return dataobject_BADFORMAT; + } + + ch = getc(f); + ungetc(ch, f); + if (ch == 'b') { /* begindata coming */ + + if (fgetstring(f, "begindata{") != 0) { + objectto(f, "box: missing begindata"); + return dataobject_BADFORMAT; + } + for (np = dataname; np < dataname + sizeof dataname - 1 && (ch = getc(f)) != EOF && ch != ','; np++) + *np = ch; + *np = '\0'; + if (fscanf(f, "%ld ", &uniqueID) != 1) { + objectto(f, "box: missing , after component name"); + return dataobject_BADFORMAT; + } + if (fgetstring(f, "}") != 0) { + objectto(f, "box: missing closing brace after begindata"); + return dataobject_BADFORMAT; + } + if (fgetstring(f, "\n") != 0) + objectto(f, "box: extra stuff after begindata"); + self->contents = (struct dataobject *)class_NewObject(dataname); + if (self->contents == NULL) { + printf("Could not create %s object.\n", dataname); + return dataobject_OBJECTCREATIONFAILED; + } + self->contents->id = uniqueID; + dataobject_Read(self->contents, f, uniqueID); + box_SetModified(self); + box_NotifyObservers(self, observable_OBJECTCHANGED); + + if (debug) + printf("done adding component\n"); + } + + else if (ch == 'e') { /* enddata coming */ + if (fscanf(f, "enddata{%255[^,}\n],%ld}\n", dataname, &uniqueID) != 2) { + objectto(f, "box: expected enddata or another component"); + return dataobject_BADFORMAT; + } + else if (strncmp(dataname, class_GetTypeName(self)) != 0) { + objectto(f, "box: wrong data name in enddata"); + return dataobject_BADFORMAT; + } + else if (uniqueID != id) { + objectto(f, "box: wrong unique ID in enddata"); + return dataobject_BADFORMAT; + } + return dataobject_NOREADERROR; + } + + else { + objectto(f, "box: bad input line"); + return dataobject_BADFORMAT; + } + } /* end of reading loop */ + printf("box: premature EOF"); + return dataobject_PREMATUREEOF; + } + + /* read box from file */ + + long /* returns read error status */ + box__Read(self, f, id) + struct box *self; + FILE * f; /* input file */ + long id; /* unique identifier in data stream */ + { + long rc; + + if (debug) + printf("box_Read(%d)\n", id); + + box_SetID(self, box_UniqueID(self)); + box_SetModified(self); + + rc = readASCII(self, f, id); + box_NotifyObservers(self, observable_OBJECTCHANGED); + if (debug) + printf("box_Read rc = %d\n", rc); + + return rc; + } + + /* check to see if modified */ + + long + box__GetModified(self) + struct box *self; + { + long rc, cc; + + rc = super_GetModified(self); + if (!self->inGetModified && self->contents != NULL) { + self->inGetModified = TRUE; + cc = dataobject_GetModified(self->contents); + if (cc > rc) rc = cc; + self->inGetModified = FALSE; + } + + if (debug) + printf("box_GetModified = %d\n", rc); + + return rc; + } + + /* fill in contents */ + + void + box__FillInContents(self, name) + struct box *self; + char *name; + { + struct dataobject *newobject; + + if (debug) + printf("box_FillInContents(%s)\n", name); + + newobject = (struct dataobject *) class_NewObject(name); + if (newobject != NULL) { + if (self->contents != NULL) + dataobject_Destroy(self->contents); + newobject->id = (long) newobject; + self->contents = newobject; + } + box_SetModified(self); + box_NotifyObservers(self, observable_OBJECTCHANGED); + } *** atk/layout/box.ch Wed Jan 9 14:06:02 1991 --- atk/layout/box.ch.NEW Mon Oct 1 16:06:32 1990 *************** *** 0 **** --- 1,53 ---- + /* ********************************************************************** *\ + * Copyright IBM Corporation 1988,1990 - All Rights Reserved * + * For full copyright information see:'andrew/config/COPYRITE' * + \* ********************************************************************** */ + /* $Header $ */ + /* $ACIS$ */ + /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/layout/RCS/box.ch,v $ */ + + #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) + static char *rcsidbox_H = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/layout/RCS/box.ch,v 1.1 90/08/02 14:54:06 jhh Exp $"; + #endif /* !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) */ + + /* box.ch - box data object definition and interface */ + + #include + + #define box_VERSION 1 + #define SafeFromNull(s) (((s) != NULL) ? (s) : "(null)") + + #define getDataObject(self) ((self) -> header.dataobject) + + + /* globals for entire package */ + + boolean debug; /* nonzero if debugging */ + + /* actual interface definition */ + + class box: dataobject[dataobj] { + + overrides: + ViewName() returns char *; + Read (FILE * f, long id) returns long; + Write (FILE * f, long writeid, int level) returns long; + GetModified() returns long; + + methods: + ToggleDebug(); + FillInContents(char *name); + + macromethods: + + classprocedures: + InitializeClass() returns boolean; + InitializeObject(struct box *self) returns boolean; + FinalizeObject(struct box *self); + + data: + int inGetModified; /* recursion protection switch */ + struct dataobject *contents; /* contained object */ + }; + + /* end of box.ch */ *** atk/layout/box.doc Wed Jan 9 14:06:02 1991 --- atk/layout/box.doc.NEW Mon Oct 1 16:07:05 1990 *************** *** 0 **** --- 1,37 ---- + \begindata{text,269279836} + \textdsversion{12} + \template{default} + + + \chapter{BOX} + + + The \italic{box} object and its companion \italic{boxview} provide a way to + draw (and print) a box around an arbitrary ATK object. It is intended for use + in a \italic{layout}. + + + + \section{User Interface} + + + + Box has no user interface of its own. It simply passes all input into the + contained object and passes all graphics and out back back out. + + + A newly-created box fills itself with a \italic{filler}, which in turn gives + the user a choice of what the real contents of the box should be. + + + Last updated: + \ + \begindata{writestamp,269278372} + Datastream version: 1 + %o %A, %Y at %u:%M + andysans12 + 648157080 + \enddata{writestamp,269278372} + \view{writestampview,269278372,4,0,0} + + \enddata{text,269279836} *** atk/layout/boxview.c Wed Jan 9 14:06:02 1991 --- atk/layout/boxview.c.NEW Mon Oct 1 16:06:50 1990 *************** *** 0 **** --- 1,496 ---- + /* ********************************************************************** *\ + * Copyright IBM Corporation 1988,1990 - All Rights Reserved * + * For full copyright information see:'andrew/config/COPYRITE' * + \* ********************************************************************** */ + /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/layout/RCS/boxview.c,v 1.1 90/08/02 14:55:30 jhh Exp $ */ + /* $ACIS$ */ + /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/layout/RCS/boxview.c,v $ */ + + #ifndef lint + char *boxv_rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/layout/RCS/boxview.c,v 1.1 90/08/02 14:55:30 jhh Exp $"; + #endif /* lint */ + + #define viewname(v) ((v) == NULL ? "" : atom_Name(atomlist_First(view_GetName(v)))) + #define classname(do) ((do) == NULL ? "" : class_GetTypeName(do)) + + extern char *malloc(); + + #include + #include + #include + + #include + #include + #include + #include + #include + #include + #include + #include + + #include + #include + + /* replace child view with another object */ + + void InitChild(); /* forward reference */ + + void + ReplaceChild(self, child, dataname) + struct boxview *self; + struct view *child; /* child to be replaced */ + char *dataname; /* name of replacement dataobject */ + { + char foo[81]; + + if (debug) + printf("ReplaceChild(%s, %s)\n", viewname(child), dataname); + + assert(child == self->child || self->child == NULL); + + if(! class_IsTypeByName(dataname, "dataobject")){ + sprintf(foo, "%s is not a dataobject", dataname); + message_DisplayString(&getView(self), 0, foo); + return; + } + + if (child != NULL) { + view_UnlinkTree(child); + view_Destroy(child); + self->child = NULL; + } + + box_FillInContents(getBox(self), dataname); + InitChild(self); + if (self->child != NULL) + view_WantInputFocus(self->child, self->child); + } + + /* initialize child view corresponding to box contents */ + + void + InitChild(self) + struct boxview *self; + { + char *subviewname; /* name for new view */ + + if (getBox(self)->contents == NULL) { + ReplaceChild(self, self->child, "filler"); + } + + if (self->child != NULL) + return; + + subviewname = dataobject_ViewName(getBox(self)->contents); + self->child = (struct view *) class_NewObject(subviewname); + if (self->child == NULL) { + printf("unable to create child view\n"); + return; + } + view_SetDataObject(self->child, getBox(self)->contents); + view_LinkTree(self->child, &getView(self)); + + if (debug) + printf("InitChild created %s\n", subviewname); + } + + boolean /* always returns TRUE */ + boxview__InitializeClass(classID) + struct classheader *classID; /* unused */ + { + + if (debug) + printf("boxview_InitializeClass(%x)\n", classID); + + return TRUE; + } + + /* initialize box view */ + + boolean /* always returns TRUE */ + boxview__InitializeObject(classID, self) + struct classheader *classID; /* unused */ + struct boxview *self; + { + if (debug) + printf("boxview_InitializeObject(%x)\n", classID); + + self->updateNeeded = FALSE; + self->lastUpdate = 0; + self->child = NULL; + /* InitChild(self); */ + return TRUE; + } + + /* get width of box */ + + int /* returns width of box */ + boxview__BoxWidth(self) + struct boxview *self; + { + return 3; + } + + /* negotiate size of view */ + + enum view_DSattributes /* returns indication of what it wants */ + boxview__DesiredSize(self, width, height, pass, dWidth, dHeight) + struct boxview *self; + long width; /* width being offered by parent */ + long height; /* height being offered */ + enum view_DSpass pass; /* what parent is willing to give */ + long *dWidth; /* set to desired width */ + long *dHeight; /* set to desired height */ + + /* boxview asks for space for its child plus the box proper */ + + { + long desiredWidth; + long desiredHeight; + enum view_DSattributes rc; + int tw = boxview_BoxWidth(self); + + if (debug) + printf("boxview_DesiredSize(, %d, %d, %d, .. )\n", width, height, (int)pass); + + InitChild(self); + if (self->child == NULL) { + desiredWidth = desiredHeight = 0; + rc = view_WidthFlexible | view_HeightFlexible; + } + else + rc = view_DesiredSize(self->child, width - 2*tw, height - 2*tw, pass, &desiredWidth, &desiredHeight); + + *dWidth = desiredWidth + 2*tw; + *dHeight = desiredHeight + 2*tw; + + return rc; + } + + /* draw box proper */ + + void + boxview__DrawBox(self) + struct boxview *self; + { + boxview_DrawRectSize(self, boxview_GetLogicalLeft(self), boxview_GetLogicalTop(self), boxview_GetLogicalWidth(self) - 1, boxview_GetLogicalHeight(self) - 1); + } + + /* update image */ + + void + Update(self, how, updateRect, contentsChanged) + struct boxview *self; + enum view_UpdateType how; /* kind of update */ + struct rectangle *updateRect; /* rectangle affected; or NULL for update */ + boolean contentsChanged; /* contents changed since last update */ + { + struct region *updateRegion; /* region for this update */ + struct region *remainingRegion; /* region to be updated */ + struct rectangle r; /* child rectangle */ + struct region *childRegion; /* visual region available to child */ + int tw = boxview_BoxWidth(self); + + /* make sure child is filled in*/ + + InitChild(self); + + /* initialize region being updated */ + + remainingRegion = boxview_GetVisualRegion(self, region_CreateEmptyRegion()); + if (updateRect != NULL) { + updateRegion = region_CreateRectRegion(updateRect); + region_IntersectRegion(remainingRegion, updateRegion, remainingRegion); + region_Destroy(updateRegion); + } + boxview_SetClippingRegion(self, remainingRegion); + if (contentsChanged) + boxview_EraseVisualRect(self); + + /* redraw box */ + + boxview_DrawBox(self); + + /* update child */ + + rectangle_SetRectSize(&r, boxview_GetLogicalLeft(self) + tw, boxview_GetLogicalTop(self) + tw, boxview_GetLogicalWidth(self) - 2*tw, boxview_GetLogicalHeight(self) - 2*tw); + childRegion = region_CreateRectRegion(&r); + region_IntersectRegion(childRegion, remainingRegion, childRegion); + region_Destroy(remainingRegion); + boxview_SetClippingRegion(self, childRegion); + + if (!contentsChanged) + /* do nothing */ ; + else if (self->child == NULL) { + boxview_FillRect(self, &r, boxview_BlackPattern(self)); + } + else if (updateRect != NULL) { + if (debug) + printf("FullUpdating %s\n", dataobject_ViewName(getBox(self)->contents)); + view_InsertView(self->child, self, &r); + region_OffsetRegion(childRegion, -tw, -tw); + view_SetVisualRegion(self->child, childRegion); + view_FullUpdate(self->child, how, rectangle_Left(updateRect), rectangle_Top(updateRect), rectangle_Width(updateRect), rectangle_Height(updateRect)); + } + else { + if (debug) + printf("Redrawing %s\n", dataobject_ViewName(getBox(self)->contents)); + view_InsertView(self->child, self, &r); + region_OffsetRegion(childRegion, -tw, -tw); + view_SetVisualRegion(self->child, childRegion); + view_FullUpdate(self->child, view_FullRedraw, 0, 0, rectangle_Width(&r), rectangle_Height(&r)); + } + region_Destroy(childRegion); + } + + /* full update when window changes */ + + void + boxview__FullUpdate(self, how, left, top, width, height) + struct boxview *self; + enum view_UpdateType how; /* kind of update */ + long left, top, width, height; /* updated rectangle (for certain kinds; */ + { + struct rectangle cliprect; /* actual updated rectangle */ + + if (debug) + printf("boxview_FullUpdate(%d, %d, %d, %d, %d)\n", (int)how, left, top, width, height); + + /* define rectangle actually being updated */ + + if (how == view_PartialRedraw || how == view_LastPartialRedraw) + rectangle_SetRectSize(&cliprect, left, top, width, height); + else { + rectangle_SetRectSize(&cliprect, boxview_GetVisualLeft(self), boxview_GetVisualTop(self), boxview_GetVisualWidth(self), boxview_GetVisualHeight(self)); + } + /* perform the update */ + + boxview_SetTransferMode(self, graphic_COPY); + Update(self, how, &cliprect, TRUE); + if (how == view_FullRedraw) { + self->updateNeeded = FALSE; + self->lastUpdate = box_GetModified(getBox(self)); + } + } + + /* partial update in response to WantUpdate request */ + + void + boxview__Update(self) + struct boxview *self; + { + if (debug) + printf("boxview_Update needed=%d\n", self->updateNeeded); + + Update(self, -1, NULL, (self->lastUpdate < box_GetModified(getBox(self)))); + self->updateNeeded = FALSE; + self->lastUpdate = box_GetModified(getBox(self)); + } + + /* process mouse hit */ + + struct view * /* returns view which should get follow-up events*/ + boxview__Hit(self, action, x, y, numberOfClicks) + struct boxview *self; + enum view_MouseAction action; /* which button; what it did */ + long x, y; /* where the mouse points */ + long numberOfClicks; /* number of hits at same place */ + { + int tw = boxview_BoxWidth(self); + + if (debug) + printf("boxview_Hit(%d, %ld, %ld, %ld)\n", (int) action, x, y, numberOfClicks); + + if (self->child == NULL) + return &getView(self); + else + return view_Hit(self->child, action, x - tw, y - tw, numberOfClicks); + } + + /* update request */ + + void + RequestUpdate(self) + struct boxview *self; + { + if (debug) + printf("RequestUpdate() already=%d\n", self->updateNeeded); + + if (!self->updateNeeded) { + self->updateNeeded = TRUE; + boxview_WantUpdate(self, &getView(self)); + } + } + + /* handle child's request for a new size */ + + void + boxview__WantNewSize(self, requestor) + struct boxview *self; + struct view *requestor; /* view requesting a new size */ + { + if (debug) + printf("boxview_WantNewSize(%s)\n", viewname(requestor)); + + if (self->child == requestor && getView(self).parent != NULL) { + view_WantNewSize(getView(self).parent, self); + } + } + + /* unlink a view for a component */ + + void + boxview__UnlinkNotification(self, unlinkedview) + struct boxview *self; + struct view *unlinkedview; /* view being unlinked */ + { + if (debug) + printf("boxview_UnlinkNotification %s\n", viewname(unlinkedview)); + + if (unlinkedview == self->child) + self->child = NULL; + + super_UnlinkNotification(self, unlinkedview); + } + + /* tear down a boxview */ + + void + boxview__FinalizeObject(classID, self) + struct classheader *classID; /* unused */ + struct boxview *self; + { + if (debug) + printf("boxview_FinalizeObject\n"); + + } + + /* build tree of views */ + + void + boxview__LinkTree(self, parent) + struct boxview *self; + struct view *parent; /* parent into which to link self */ + { + + if (debug) + printf("boxview_LinkTree to %s\n", viewname(parent)); + + if (self->child != NULL) + view_LinkTree(self->child, self); + + super_LinkTree(self, parent); + } + + /* notification that observed object changed */ + + void + boxview__ObservedChanged(self, changed, status) + struct boxview *self; + struct observable *changed; /* that which changed */ + long status; /* OBJECTDESTROYED is used to signal deletion */ + { + if (debug) + printf("boxview_ObservedChanged(%ld)\n", status); + + if (changed != &getBox(self)->header.observable) /* if it is not my dataobject */ + super_ObservedChanged(self, changed, status); + + else { /* my dataobject has changed */ + + if (status != observable_OBJECTDESTROYED) + RequestUpdate(self); + } + } + + /* toggle debug */ + + void + boxview__ToggleDebug(self) + struct boxview *self; + { + + /* + the rather peculiar if statement below is designed to work properly + in either the case that box and boxview are loaded separately or + loaded together (ie two or one copies of 'debug') + */ + if (debug) { + box_ToggleDebug(getBox(self)); + debug = 0; + } else { + box_ToggleDebug(getBox(self)); + debug = 1; + } + } + + /* past object into selected component */ + + void + boxview__Paste(self) + struct boxview *self; + { + FILE *pasteFile; + int objectID; + char *objectName; + + if (debug) + printf("boxview_Paste()\n"); + + pasteFile = im_FromCutBuffer(boxview_GetIM(self)); + objectName = filetype_Lookup(pasteFile, NULL, &objectID, NULL); /* For now, ignore attributes. */ + if(objectName == NULL) + objectName = "text"; + ReplaceChild(self, self->child, objectName); + if (getBox(self)->contents != NULL) + dataobject_Read(getBox(self)->contents, pasteFile, objectID); + im_CloseFromCutBuffer(boxview_GetIM(self), pasteFile); + + } + + /* print as part of larger document */ + + void + boxview__Print(self, f, processor, finalFormat, toplevel) + struct boxview *self; + FILE *f; /* output file */ + char *processor; /* processor */ + char *finalFormat; /* final format */ + boolean toplevel; /* am I the top level view? */ + { + int tw = boxview_BoxWidth(self); + + if (debug) + printf("boxview_Print(%x, %x, %s, %s, %d)\n", self, f, processor, finalFormat, toplevel); + + /* set up top-level stuff */ + + if (class_Load("texttroff") == NULL) + printf("Can't load texttroff - document initializtion missing.\n"); + if (toplevel && class_IsLoaded("texttroff")) + texttroff_BeginDoc(f); + + InitChild(self); + + fprintf(f, ".sp -\\n(VSu\n"); /* move up one line */ + fprintf(f, "\\D'l %dp 0'", boxview_GetLogicalWidth(self)); /* draw box */ + fprintf(f, "\\D'l 0 %dp'", boxview_GetLogicalHeight(self)); + fprintf(f, "\\D'l %dp 0'", -boxview_GetLogicalWidth(self)); + fprintf(f, "\\D'l 0 %dp'", -boxview_GetLogicalHeight(self)); + fprintf(f, "\n"); /* I think this moves back down a line */ + + fprintf(f, ".sp %dp\n", tw); /* vertical down to enclosed object */ + fprintf(f, ".in +%dp\n", tw); /* indent for box */ + fprintf(f, ".ll -%dp\n", 2 * tw); + + if (self->child) { + view_InsertViewSize(self->child, self, boxview_GetLogicalLeft(self) + tw, boxview_GetLogicalTop(self) + tw, boxview_GetLogicalWidth(self) - 2*tw, boxview_GetLogicalHeight(self) - 2*tw); + view_Print(self->child, f, processor, finalFormat, FALSE); + } + + fprintf(f, ".in -%dp\n", tw); /* remove box indentation */ + fprintf(f, ".ll +%dp\n", 2 * tw); + + if (toplevel && class_IsLoaded("texttroff")) + texttroff_EndDoc(f); + } *** atk/layout/boxview.ch Wed Jan 9 14:06:02 1991 --- atk/layout/boxview.ch.NEW Mon Oct 1 16:06:35 1990 *************** *** 0 **** --- 1,55 ---- + /* ********************************************************************** *\ + * Copyright IBM Corporation 1988,1990 - All Rights Reserved * + * For full copyright information see:'andrew/config/COPYRITE' * + \* ********************************************************************** */ + /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/layout/RCS/boxview.ch,v 1.1 90/08/02 14:54:41 jhh Exp $ */ + /* $ACIS$ */ + /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/layout/RCS/boxview.ch,v $ */ + + #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) + static char *rcsidspread_H = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/layout/RCS/boxview.ch,v 1.1 90/08/02 14:54:41 jhh Exp $"; + #endif /* !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) */ + + /* boxview.ch - box view definition and interface */ + #define boxview_VERSION 1 + + /* internal interfaces */ + + #define getView(self) ((self) -> header.view) + #define getBox(self) ((struct box *)boxview_GetDataObject(self)) + + + /* Interface definition */ + + class boxview: view { + + overrides: + FullUpdate(enum view_UpdateType how, long left, long top, long width, long height); + Update(); + Hit(enum view_MouseAction action, long x, long y, long numberOfClicks) returns struct view *; + DesiredSize(long width, long height, enum view_DSpass pass, long *dWidth, long *dheight) returns enum view_DSattributes; + WantNewSize(struct view *requestor); + LinkTree(struct view *parent); + UnlinkNotification(struct view *unlinkedview); + ObservedChanged(struct observable *changed, long status); + Print(FILE *f, char *processor, char *finalFormat, boolean toplevel); + + methods: + ToggleDebug(); + Paste(); + DrawBox(); + BoxWidth() returns int; + + classprocedures: + InitializeClass() returns boolean; + InitializeObject(struct boxview *self) returns boolean; + FinalizeObject(struct boxview *self); + + data: + boolean updateNeeded; /* the box itself needs to be updated */ + long lastUpdate; /* modification timestamp of last update */ + struct view *child; /* view of contents */ + }; + + /* end of boxview.ch */ + *** atk/layout/filler.ch Wed Jan 9 14:06:02 1991 --- atk/layout/filler.ch.NEW Mon Oct 1 16:06:37 1990 *************** *** 0 **** --- 1,35 ---- + /* ********************************************************************** *\ + * Copyright IBM Corporation 1988,1990 - All Rights Reserved * + * For full copyright information see:'andrew/config/COPYRITE' * + \* ********************************************************************** */ + /* $Header $ */ + /* $ACIS$ */ + /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/layout/RCS/filler.ch,v $ */ + + #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) + static char *rcsidfiller_H = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/layout/RCS/filler.ch,v 1.1 90/08/02 14:54:50 jhh Exp $"; + #endif /* !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) */ + + /* filler.ch - filler data object definition and interface */ + + #include + + #define filler_VERSION 1 + #define SafeFromNull(s) (((s) != NULL) ? (s) : "(null)") + + #define getDataObject(self) ((self) -> header.dataobject) + + + /* globals for entire package */ + + boolean debug; /* nonzero if debugging */ + + + class filler: cel { + + overrides: + ViewName() returns char *; + + }; + + /* end of filler.ch */ *** atk/layout/fillerv.ch Wed Jan 9 14:06:02 1991 --- atk/layout/fillerv.ch.NEW Mon Oct 1 16:06:39 1990 *************** *** 0 **** --- 1,49 ---- + /* ********************************************************************** *\ + * Copyright IBM Corporation 1988,1990 - All Rights Reserved * + * For full copyright information see:'andrew/config/COPYRITE' * + \* ********************************************************************** */ + /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/layout/RCS/fillerv.ch,v 1.1 90/08/02 14:54:58 jhh Exp $ */ + /* $ACIS$ */ + /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/layout/RCS/fillerv.ch,v $ */ + + #if !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) + static char *rcsidspread_H = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/layout/RCS/fillerv.ch,v 1.1 90/08/02 14:54:58 jhh Exp $"; + #endif /* !defined(lint) && !defined(LOCORE) && defined(RCS_HDRS) */ + + /* fillerview.ch - filler view definition and interface */ + #define fillerview_VERSION 1 + + /* reference to the associated data object */ + + #define getView(V) ((V) -> header.view) + #define getIM(V) view_GetIM(&getView(V)) + #define getDrawable(V) view_GetDrawable(&getView(V)) + #define MyFiller(V) ((struct filler *)(getView(V).dataobject)) + + /* Interface definition */ + + class fillerview[fillerv]: celview[celv] { + + overrides: + FullUpdate(enum view_UpdateType how, long left, long top, long width, long height); + Update(); + Hit(enum view_MouseAction action, long x, long y, long numberOfClicks) returns struct view *; + ReceiveInputFocus(); + LoseInputFocus(); + + methods: + SetDataObjectByName(char *dataname); /* replace myself */ + + classprocedures: + InitializeClass() returns boolean; /* initialize class */ + InitializeObject(struct fillerview *V) returns boolean; /* initialize instance */ + FinalizeObject(struct fillerview *V); /* clean up instance */ + + data: + boolean hasInputFocus; + struct menulist *menulist; + int hitindex; + }; + + /* end of fillerview.ch */ + *** atk/layout/filler.c Wed Jan 9 14:06:02 1991 --- atk/layout/filler.c.NEW Mon Oct 1 16:06:52 1990 *************** *** 0 **** --- 1,24 ---- + /* ********************************************************************** *\ + * Copyright IBM Corporation 1988,1990 - All Rights Reserved * + * For full copyright information see:'andrew/config/COPYRITE' * + \* ********************************************************************** */ + /* $Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/layout/RCS/filler.c,v 1.1 90/08/02 14:55:39 jhh Exp $ */ + /* $ACIS$ */ + /* $Source: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/layout/RCS/filler.c,v $ */ + + #ifndef lint + char *filler_rcsid = "$Header: /afs/andrew.cmu.edu/itc/src/projects/andrew/atk/layout/RCS/filler.c,v 1.1 90/08/02 14:55:39 jhh Exp $"; + #endif /* lint */ + + #include + + #include + + /* return corresponding view name */ + + char * /* returns "fillerview" */ + filler__ViewName(self) + struct filler *self; + { + return "fillerview"; + } *** atkams/messages/lib/Imakefile Fri Dec 21 15:00:11 1990 --- atkams/messages/lib/Imakefile.NEW Wed Dec 19 11:42:31 1990 *************** *** 2,12 **** * Copyright IBM Corporation 1988,1989 - All Rights Reserved * * For full copyright information see:'andrew/config/COPYRITE' * \* ********************************************************************** */ - #ifdef RESOLVER_ENV - RESOLVER_LIB = $(RESOLVLIB) - #else - RESOLVER_LIB = - #endif /* RESOLVER_ENV */ LOCALINCLUDES = -I${BASEDIR}/include/ams --- 2,7 ---- *************** *** 43,49 **** LIBS = ${BASEDIR}/lib/libmsshr.a \ ${BASEDIR}/lib/libmail.a ${BASEDIR}/lib/liberrors.a \ ! ${UTILLIB} ${RESOLVER_LIB} SLIBS = ${BASEDIR}/lib/libcui.a ${BASEDIR}/lib/libcuis.a \ --- 38,44 ---- LIBS = ${BASEDIR}/lib/libmsshr.a \ ${BASEDIR}/lib/libmail.a ${BASEDIR}/lib/liberrors.a \ ! ${UTILLIB} SLIBS = ${BASEDIR}/lib/libcui.a ${BASEDIR}/lib/libcuis.a \ END OF ANDREW PATCH 9