home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / dld-3.2.6-diffs.gz / dld-3.2.6-diffs
Text File  |  1996-10-13  |  283KB  |  12,172 lines

  1. This file contains patches that transform the baseline version into
  2. the amiga version.  Assuming that you have unarchived the baseline
  3. version in the current directory, just run the command:
  4.  
  5.     patch -p1 -E -b .pbak <diff-file
  6.  
  7. where 'diff-file' is this patch file.  After running patch you should
  8. remove all the generated *.pbak files, and look for any *.rej files
  9. that indicate a problem patching the baseline source.
  10.  
  11. diff -rup --new-file baseline/fsf/dld/.name amiga/fsf/dld/.name
  12. --- baseline/fsf/dld/.name    Wed Dec 31 17:00:00 1969
  13. +++ amiga/fsf/dld/.name    Sat Sep 28 00:00:00 1996
  14. @@ -0,0 +1 @@
  15. +Dynamic Loader Version 3.2.1
  16. diff -rup --new-file baseline/fsf/dld/Makefile amiga/fsf/dld/Makefile
  17. --- baseline/fsf/dld/Makefile    Sun Mar 19 18:42:30 1995
  18. +++ amiga/fsf/dld/Makefile    Sat Sep 28 00:00:00 1996
  19. @@ -5,34 +5,40 @@ LIBS = dld.o find_exec.o define.o get_fu
  20.      remove.o error.o
  21.  INCLUDES = dld.h defs.h
  22.  
  23. -prefix = /usr/local/
  24. -exec_prefix = $(prefix)/
  25. -libdir = $(exec_prefix)lib/
  26. -infodir = $(prefix)info/
  27. -includedir = $(prefix)include/
  28. +prefix = /ade
  29. +exec_prefix = $(prefix)
  30. +libdir = $(exec_prefix)/lib
  31. +infodir = $(prefix)/info
  32. +guidedir = $(prefix)/guide
  33. +idvidir = $(prefix)/dvi
  34. +psdir = $(prefix)/ps
  35. +includedir = $(exec_prefix)/include
  36.  
  37.  CC= gcc
  38.  CFLAGS = -O6 -I.
  39.  CXXFLAGS = -O6 -I.
  40.  
  41. -all:    ${ARCHIVE}
  42. -all++:    ${ARCHIVE++}
  43. +TEXI2DVI = texi2dvi
  44. +DVIPS = dvips
  45.  
  46. -install:    $(ARCHIVE) dld.info
  47. +all:    ${ARCHIVE} ${ARCHIVE++} ar2hunk showsyms
  48. +
  49. +install:    $(ARCHIVE) dld.info dld.guide
  50.      -cp $(ARCHIVE) $(libdir)
  51.  #    -cp dld.info $(infodir) # makeinfo called so as to make dld.info there
  52.      -cp dld.h $(includedir)
  53. -
  54. -install++:    $(ARCHIVE++) install
  55.      -cp $(ARCHIVE++) $(libdir)
  56. -
  57. -prefix = /usr/local/
  58. -infodir = $(prefix)info/
  59. +    -cp ar2hunk $(prefix)bin
  60. +    -cp showsyms $(prefix)bin
  61.  
  62.  info:    $(infodir)/dld.info
  63.  $(infodir)/dld.info:    dld.texinfo
  64.      makeinfo dld.texinfo -o $(infodir)/dld.info
  65.  
  66. +guide:    $(guidedir)/dld.guide
  67. +$(guidedir)/dld.guide:    dld.texguide
  68. +    makeinfo --amiga dld.texinfo -o $(guidedir)/dld.guide
  69. +
  70.  srcdir=$(HOME)/dld/
  71.  dvidir=../dvi/
  72.  dvi:    $(dvidir)dld.dvi
  73. @@ -55,6 +61,12 @@ $(ARCHIVE++): ${LIBS} gxxload.o ${INCLUD
  74.      ar q $(ARCHIVE++) ${LIBS} gxxload.o
  75.      ranlib $(ARCHIVE++)
  76.  
  77. +ar2hunk:    ar2hunk.c
  78. +    gcc -o ar2hunk -O ar2hunk.c
  79. +
  80. +showsyms:    showsyms.c
  81. +    gcc -o showsyms -O showsyms.c
  82. +
  83.  clean:
  84.      -rm -f ${ARCHIVE} *.o *~ *.rej
  85.      cd test; make clean
  86. @@ -91,8 +103,7 @@ dist:    dld.tar.gz # dld-bin.tar.gz
  87.  
  88.  .cc.o:
  89.      ${CXX} -c ${CXXFLAGS} $*.cc
  90. -    # mv -f dld-bin.tar.*z $(HOME)/dist/
  91. -    cp -f dld*.lsm $(HOME)/dist/
  92. +
  93.  tar.gz:    dld.tar.gz
  94.  dld.tar.gz:    dld.tar
  95.      -rm -f dld.tar.*z
  96. @@ -134,9 +145,10 @@ dld-bin.tar.gz:    dld-bin.tar
  97.      -rm -f dld-bin.tar.*z
  98.      gzip dld-bin.tar
  99.      chmod 664 dld-bin.tar.*z
  100. -dld-bin.tar:     $(libdir)libdld.a $(infodir)dld.info $(includedir)dld.h
  101. +dld-bin.tar:    $(libdir)/libdld.a $(infodir)/dld.info $(includedir)/dld.h $(guidedir)/dld.guide
  102.      cd $(prefix); tar cohf dld-bin.tar include/dld.h \
  103. -        lib/libdld.a info/dld.info src/dld/COPYING src/dld/README
  104. +        lib/libdld.a info/dld.info src/dld/COPYING src/dld/README \
  105. +        info/dld/guide
  106.      cd $(prefix); chmod 664 dld-bin.tar
  107.      mv $(prefix)/dld-bin.tar ./
  108.  
  109. diff -rup --new-file baseline/fsf/dld/Product-Info amiga/fsf/dld/Product-Info
  110. --- baseline/fsf/dld/Product-Info    Wed Dec 31 17:00:00 1969
  111. +++ amiga/fsf/dld/Product-Info    Sat Sep 28 00:00:00 1996
  112. @@ -0,0 +1,25 @@
  113. +.name
  114. +dld
  115. +.fullname
  116. +GNU dynamic linker
  117. +.type
  118. +Developer Tool
  119. +.short
  120. +library to perform dynamic linking
  121. +.description
  122. +"DLD" is a library package of C functions that performs "dynamic link
  123. +editing".  Programs that use dld can add compiled object code to or
  124. +remove such code from a process anytime during its execution.  Loading
  125. +modules, searching libraries, resolving external references, and
  126. +allocating storage for global and static data structures are all
  127. +performed at run time.
  128. +.version
  129. +3.2.6
  130. +.author
  131. +Free Software Foundation
  132. +.requirements
  133. +Amiga binaries require ixemul.library.
  134. +.distribution
  135. +GNU Public License
  136. +.described-by
  137. +Fred Fish (fnf@amigalib.com)
  138. diff -rup --new-file baseline/fsf/dld/TAGS amiga/fsf/dld/TAGS
  139. --- baseline/fsf/dld/TAGS    Wed Dec 31 17:00:00 1969
  140. +++ amiga/fsf/dld/TAGS    Sat Sep 28 00:00:00 1996
  141. @@ -0,0 +1,115 @@
  142. +
  143. +define.c,23
  144. +dld_define_sym 28,731
  145. +
  146. +defs.h,36
  147. +#define del_link_list_elt(171,5546
  148. +
  149. +dld.c,2122
  150. +#define ABSOLUTE_FILENAME_P(1514,43772
  151. +#define ABSOLUTE_FILENAME_P(1517,43871
  152. +#define N_BSSADDR(96,2839
  153. +#define N_DATADDR(83,2482
  154. +#define N_DATADDR(88,2655
  155. +#define N_TXTADDR(74,2357
  156. +#define N_TXTADDR(77,2402
  157. +#define RELOC_ADDRESS(163,5594
  158. +#define RELOC_ADDRESS(191,6740
  159. +#define RELOC_ADDRESS(202,7090
  160. +#define RELOC_ADD_EXTRA(167,5807
  161. +#define RELOC_EXTERN_P(164,5654
  162. +#define RELOC_EXTERN_P(192,6783
  163. +#define RELOC_EXTERN_P(203,7133
  164. +#define RELOC_MEMORY_SUB_P(166,5774
  165. +#define RELOC_MEMORY_SUB_P(194,6871
  166. +#define RELOC_MEMORY_SUB_P(205,7221
  167. +#define RELOC_PCREL_P(168,5870
  168. +#define RELOC_PCREL_P(196,6938
  169. +#define RELOC_PCREL_P(207,7277
  170. +#define RELOC_SYMBOL(165,5716
  171. +#define RELOC_SYMBOL(193,6826
  172. +#define RELOC_SYMBOL(204,7176
  173. +#define RELOC_TARGET_BITSIZE(172,6130
  174. +#define RELOC_TARGET_SIZE(171,6057
  175. +#define RELOC_TARGET_SIZE(197,6993
  176. +#define RELOC_TARGET_SIZE(208,7318
  177. +#define RELOC_VALUE_RIGHTSHIFT(170,5978
  178. +_dld_enter_global_ref 643,19457
  179. +_dld_getsym 562,16820
  180. +_dld_getsym_soft 597,17623
  181. +_dld_malloc 289,10004
  182. +_dld_patch_all_files 1645,47694
  183. +_dld_unlink_entry 2061,57982
  184. +clean_up 1860,53243
  185. +cleanup_obsolete_entries 1776,51248
  186. +cleanup_symtab 756,22625
  187. +concat 303,10266
  188. +decode_library_subfile 857,25313
  189. +dld_function_executable_p 2097,58772
  190. +dld_get_bare_symbol 2038,57445
  191. +dld_init 1925,54598
  192. +dld_link 1987,56238
  193. +do_local_relocation 1190,35332
  194. +do_unlink 1887,53910
  195. +enter_file_symbols 743,22259
  196. +fatal 279,9838
  197. +file_close 345,11261
  198. +file_open 357,11568
  199. +find_all_executable_modules 1710,49520
  200. +hash_string 543,16500
  201. +insert_entry 321,10780
  202. +invalidate 1690,49094
  203. +kill_entry 1809,52087
  204. +linear_library 1066,31684
  205. +make_entry 1522,44038
  206. +perform_relocation 1423,41646
  207. +read_entry_strings 481,14684
  208. +read_entry_symbols 444,13736
  209. +read_file_symbols 1548,44832
  210. +read_header 390,12260
  211. +read_text_and_data 1586,45835
  212. +reloc_info_ok 507,15456
  213. +relocate_entry_symbols 1624,47109
  214. +relocate_local_refs 1323,38649
  215. +relocate_symbol_address 1147,33863
  216. +remove_cross_references 1744,50427
  217. +search_library 824,24333
  218. +st_read_header 411,12712
  219. +subfile_wanted_p 1114,32927
  220. +symdef_library 913,26917
  221. +
  222. +dld.h,0
  223. +
  224. +error.c,20
  225. +dld_perror 47,1657
  226. +
  227. +find_exec.c,119
  228. +#define ABSOLUTE_FILENAME_P(46,1242
  229. +#define ABSOLUTE_FILENAME_P(49,1341
  230. +copy_of 32,996
  231. +dld_find_executable 53,1423
  232. +
  233. +get_func.c,21
  234. +dld_get_func 25,735
  235. +
  236. +get_symbol.c,23
  237. +dld_get_symbol 26,727
  238. +
  239. +list_undef.c,31
  240. +dld_list_undefined_sym 31,873
  241. +
  242. +mk_dummy.c,32
  243. +_dld_create_dummy_entry 25,705
  244. +
  245. +ref.c,29
  246. +dld_create_reference 29,893
  247. +
  248. +remove.c,34
  249. +dld_remove_defined_symbol 28,780
  250. +
  251. +ul_file.c,49
  252. +dld_unlink_by_file 48,1171
  253. +search_files 24,656
  254. +
  255. +ul_symbol.c,29
  256. +dld_unlink_by_symbol 24,654
  257. diff -rup --new-file baseline/fsf/dld/ar2hunk.c amiga/fsf/dld/ar2hunk.c
  258. --- baseline/fsf/dld/ar2hunk.c    Wed Dec 31 17:00:00 1969
  259. +++ amiga/fsf/dld/ar2hunk.c    Sat Sep 28 00:00:00 1996
  260. @@ -0,0 +1,55 @@
  261. +#include <stdio.h>
  262. +#include <stdlib.h>
  263. +#include <ar.h>
  264. +
  265. +static char buf[10240];
  266. +
  267. +main(int argc, char **argv)
  268. +{
  269. +  FILE *exe, *arc;
  270. +  int id, r;
  271. +
  272. +  if (argc != 3)
  273. +  {
  274. +    fprintf(stderr, "usage: ar2hunk <executable> <archive>\n");
  275. +    exit(2);
  276. +  }
  277. +  exe = fopen(argv[1], "r+");
  278. +  arc = fopen(argv[2], "r");
  279. +  if (!exe || !arc)
  280. +  {
  281. +    if (!exe)
  282. +      fprintf(stderr, "cannot open %s\n", argv[1]);
  283. +    if (!arc)
  284. +      fprintf(stderr, "cannot open %s\n", argv[2]);
  285. +    exit(2);
  286. +  }
  287. +  fseek(exe, -4, SEEK_END);
  288. +  fread(&id, 4, 1, exe);
  289. +  if (id != 0x3f2)
  290. +  {
  291. +    fprintf(stderr, "%s is malformed (no hunk_end found)\n", argv[1]);
  292. +    exit(1);
  293. +  }
  294. +  fread(buf, SARMAG, 1, arc);
  295. +  if (*((long *)buf) != 0x10107 && strncmp(buf, ARMAG))
  296. +  {
  297. +    fprintf(stderr, "%s is malformed (not an archive)\n", argv[2]);
  298. +    exit(1);
  299. +  }
  300. +  fseek(exe, -4, SEEK_END);
  301. +  id = 0x3f1;
  302. +  fwrite(&id, 4, 1, exe);
  303. +  fseek(arc, 0, SEEK_END);
  304. +  id = ftell(arc);
  305. +  id = (id + 3) / 4;
  306. +  fseek(arc, 0, SEEK_SET);
  307. +  fwrite(&id, 4, 1, exe);
  308. +  while (r = fread(buf, 1, 10240, arc))
  309. +  {
  310. +    r = (r + 3) & ~3;
  311. +    fwrite(buf, 1, r, exe);
  312. +  }
  313. +  id = 0x3f2;
  314. +  fwrite(&id, 4, 1, exe);
  315. +}
  316. diff -rup --new-file baseline/fsf/dld/dld.c amiga/fsf/dld/dld.c
  317. --- baseline/fsf/dld/dld.c    Fri Feb 10 06:10:46 1995
  318. +++ amiga/fsf/dld/dld.c    Sat Sep 28 00:00:00 1996
  319. @@ -55,7 +55,7 @@
  320.  #include <alloca.h>
  321.  #endif
  322.  #endif
  323. -
  324. +
  325.  /* System dependencies */
  326.  
  327.  #ifdef atarist
  328. @@ -211,7 +211,23 @@ static int reloc_target_bitsize[] = {
  329.  /* Size of a page; obtained from the operating system. */
  330.  
  331.  static int page_size;
  332. -
  333. +
  334. +#ifdef __amigaos__
  335. +
  336. +#undef MAXINT
  337. +#undef MININT
  338. +#undef BITSPERBYTE
  339. +#undef LONGBITS
  340. +
  341. +#include <proto/exec.h>
  342. +#include <exec/execbase.h>
  343. +
  344. +static int amiga_debug_hunk_offset, amiga_debug_hunk_size, input_offset;
  345. +static int amiga_debug_file;
  346. +#else
  347. +#define input_offset (0)
  348. +#endif
  349. +
  350.  /* The symbol hash table: a vector of TABSIZE pointers to struct glosym. */
  351.  symbol *_dld_symtab[TABSIZE];
  352.  
  353. @@ -238,7 +254,7 @@ struct dld_reloc_info {
  354.         using a separate definition for each system. */
  355.      struct relocation_info reloc_info;
  356.  };
  357. -
  358. +
  359.  /* Format of __.SYMDEF:
  360.     First, a longword containing the size of the 'symdef' data that follows.
  361.     Second, zero or more 'symdef' structures.
  362. @@ -264,14 +280,14 @@ struct file_entry *_dld_dummy_entry = 0;
  363.     if no file is open.
  364.   */
  365.  static struct file_entry *input_file = 0;
  366. -static int input_desc = 0;
  367. +static FILE *input_desc = 0;
  368.  
  369.  /* global variables to return the error code to the caller */
  370.  int dld_errno;
  371.  
  372.  /* true if the executable flags are up-to-date */
  373.  char _dld_exec_flags_valid;
  374. -
  375. +
  376.  /* Miscellaneous routines */
  377.  
  378.  /* save the error code in dld_errno */
  379. @@ -343,9 +359,9 @@ register struct file_entry *entry;
  380.  /* Close the input file that is now open.  */
  381.  
  382.  static void
  383. -file_close ()
  384. +file_close (void)
  385.  {
  386. -  if (input_desc) close (input_desc);
  387. +  if (input_desc) fclose (input_desc);
  388.    input_desc = 0;
  389.    input_file = 0;
  390.  } /* file_close */
  391. @@ -354,11 +370,11 @@ file_close ()
  392.     The open file is remembered; if the same file is opened twice in a row,
  393.     a new open is not actually done.  */
  394.  
  395. -static int
  396. +static FILE *
  397.  file_open (entry)
  398.  register struct file_entry *entry;
  399.  {
  400. -    register int desc;
  401. +    register FILE *desc;
  402.  
  403.      if (entry == 0) fatal (DLD_ENOFILE);
  404.  
  405. @@ -370,9 +386,23 @@ register struct file_entry *entry;
  406.  
  407.      if (input_file) file_close ();
  408.  
  409. -    desc = open (entry->filename, O_RDONLY, 0);
  410. +    if (amiga_debug_file = (entry->filename[strlen(entry->filename) - 1] == 1
  411. +        && amiga_debug_hunk_size))
  412. +    {
  413. +      char *p = entry->filename + strlen(entry->filename) - 1;
  414.  
  415. -    if (desc > 0) {
  416. +      *p = 0;
  417. +      desc = fopen (entry->filename, "r");
  418. +      *p = 1;
  419. +    }
  420. +    else
  421. +      desc = fopen (entry->filename, "r");
  422. +
  423. +    if (desc) {
  424. +        if (amiga_debug_file)
  425. +          fseek(desc, input_offset = amiga_debug_hunk_offset, SEEK_CUR);
  426. +        else
  427. +          input_offset = 0;
  428.      input_file = entry;
  429.      input_desc = desc;
  430.      return desc;
  431. @@ -380,9 +410,9 @@ register struct file_entry *entry;
  432.  
  433.      fatal (DLD_ENOFILE);
  434.  
  435. -    return(1);  /* To supress warning message */
  436. +    return (stdout);  /* To supress warning message */
  437.  } /* file_open */
  438. -
  439. +
  440.  /* Medium-level input routines for rel files.  */
  441.  
  442.  /* Read a file's header into the proper place in the file_entry.
  443. @@ -391,14 +421,14 @@ register struct file_entry *entry;
  444.  
  445.  static void
  446.  read_header (desc, entry)
  447. -int desc;
  448. +FILE *desc;
  449.  register struct file_entry *entry;
  450.  {
  451.      register int len;
  452.      struct exec *loc = &entry->header;
  453.  
  454. -    lseek (desc, entry->starting_offset, 0);
  455. -    len = read (desc, loc, sizeof (struct exec));
  456. +    fseek (desc, input_offset + entry->starting_offset, 0);
  457. +    len = fread (loc, 1, sizeof (struct exec), desc);
  458.      if (len != sizeof (struct exec))
  459.      fatal (DLD_EBADHEADER);
  460.      if (N_BADMAG (*loc))
  461. @@ -446,7 +476,7 @@ register struct file_entry *entry;
  462.  static void
  463.  read_entry_symbols (desc, entry)
  464.  struct file_entry *entry;
  465. -int desc;
  466. +FILE *desc;
  467.  {
  468.      int str_size;
  469.  
  470. @@ -458,16 +488,16 @@ int desc;
  471.  
  472.      entry->symbols = (struct nlist *) _dld_malloc (entry->header.a_syms);
  473.  
  474. -    lseek (desc, N_SYMOFF (entry->header) + entry->starting_offset, 0);
  475. +    fseek (desc, input_offset + N_SYMOFF (entry->header) + entry->starting_offset, 0);
  476.      if (entry->header.a_syms !=
  477. -    read (desc, entry->symbols, entry->header.a_syms)) {
  478. +    fread (entry->symbols, 1, entry->header.a_syms, desc)) {
  479.      free (entry->symbols);
  480.      entry->symbols = 0;
  481.      fatal (DLD_ENOSYMBOLS);
  482.      }
  483.  
  484. -    lseek (desc, N_STROFF (entry->header) + entry->starting_offset, 0);
  485. -    if (sizeof str_size != read (desc, &str_size, sizeof str_size)) {
  486. +    fseek (desc, input_offset + N_STROFF (entry->header) + entry->starting_offset, 0);
  487. +    if (sizeof str_size != fread (&str_size, 1, sizeof str_size, desc)) {
  488.      free (entry->symbols);
  489.      entry->symbols = 0;
  490.      fatal (DLD_ENOSTRINGS);
  491. @@ -483,16 +513,15 @@ int desc;
  492.  static void
  493.  read_entry_strings (desc, entry)
  494.  struct file_entry *entry;
  495. -int desc;
  496. +FILE *desc;
  497.  {
  498.      if (!entry->header_read_flag)
  499.      read_header (desc, entry);
  500.  
  501.      entry->strings = (char *) _dld_malloc (entry->string_size);
  502.  
  503. -    lseek (desc, N_STROFF (entry->header) + entry->starting_offset, 0);
  504. -    if (entry->string_size != read (desc, entry->strings,
  505. -                    entry->string_size)) {
  506. +    fseek (desc, input_offset + N_STROFF (entry->header) + entry->starting_offset, 0);
  507. +    if (entry->string_size != fread (entry->strings, 1, entry->string_size, desc)) {
  508.      free (entry->strings);
  509.      entry->strings = 0;
  510.      fatal (DLD_ENOSTRINGS);
  511. @@ -538,7 +567,7 @@ register int sym_size;
  512.      return extern_count++;     /*  this postincrement does nothing */
  513.                     /*  but preincrement causes bug     */
  514.  } /* reloc_info_ok */
  515. -
  516. +
  517.  /* symbol table management */
  518.  
  519.  /* Compute the hash code for symbol name KEY.  */
  520. @@ -846,7 +875,7 @@ cleanup_symtab ()
  521.      }
  522.      }
  523.  } /* cleanup_symtab */
  524. -
  525. +
  526.  /* Searching libraries */
  527.  
  528.  static struct file_entry *decode_library_subfile ();
  529. @@ -861,7 +890,7 @@ static void read_text_and_data ();
  530.  
  531.  static void
  532.  search_library (desc, entry)
  533. -int desc;
  534. +FILE *desc;
  535.  struct file_entry *entry;
  536.  {
  537.      int member_length;
  538. @@ -898,7 +927,7 @@ struct file_entry *entry;
  539.  
  540.  static struct file_entry *
  541.  decode_library_subfile (desc, library_entry, subfile_offset, length_loc)
  542. -int desc;
  543. +FILE *desc;
  544.  struct file_entry *library_entry;
  545.  int subfile_offset;
  546.  int *length_loc;
  547. @@ -910,9 +939,11 @@ int *length_loc;
  548.      struct ar_hdr hdr1;
  549.      register struct file_entry *subentry;
  550.  
  551. -    lseek (desc, subfile_offset, 0);
  552. +    fseek (desc, input_offset + subfile_offset, 0);
  553.  
  554. -    bytes_read = read (desc, &hdr1, sizeof hdr1);
  555. +    if (amiga_debug_file && subfile_offset >= amiga_debug_hunk_size - 4)
  556. +      return 0;
  557. +    bytes_read = fread (&hdr1, 1, sizeof hdr1, desc);
  558.      if (!bytes_read)
  559.      return 0;        /* end of archive */
  560.  
  561. @@ -954,7 +985,7 @@ int *length_loc;
  562.  
  563.  static void
  564.  symdef_library (desc, entry, member_length)
  565. -int desc;
  566. +FILE *desc;
  567.  struct file_entry *entry;
  568.  int member_length;
  569.  {
  570. @@ -969,7 +1000,7 @@ int member_length;
  571.      struct file_entry *prev = 0;
  572.      int prev_offset = 0;
  573.  
  574. -    bytes_read = read (desc, symdef_data, member_length);
  575. +    bytes_read = fread (symdef_data, 1, member_length, desc);
  576.      if (bytes_read != member_length) {
  577.      free (symdef_data);
  578.      fatal (DLD_EBADLIBRARY);
  579. @@ -1107,7 +1138,7 @@ int member_length;
  580.  
  581.  static void
  582.  linear_library (desc, entry)
  583. -int desc;
  584. +FILE *desc;
  585.  struct file_entry *entry;
  586.  {
  587.      register struct file_entry *prev = 0;
  588. @@ -1184,7 +1215,7 @@ struct file_entry *entry;
  589.  
  590.      return 0;
  591.  } /* subfile_wanted_p */
  592. -
  593. +
  594.  /* Relocate the addresses of the file's symbols.  */
  595.  static void
  596.  relocate_symbol_address (entry)
  597. @@ -1337,7 +1368,6 @@ int reloc_size;
  598.      }
  599.  
  600.  #else
  601. -
  602.      switch (length) {
  603.          case 0: *(char *) (data + addr) += relocation;
  604.              break;
  605. @@ -1364,7 +1394,7 @@ int reloc_size;
  606.  */
  607.  static void
  608.  relocate_local_refs (desc, entry)
  609. -int desc;
  610. +FILE *desc;
  611.  struct file_entry *entry;
  612.  {
  613.      int text_offset;
  614. @@ -1385,10 +1415,10 @@ struct file_entry *entry;
  615.      reloc_buf = (struct relocation_info *)
  616.          _dld_malloc (entry->header.a_trsize);
  617.  
  618. -    lseek (desc, text_offset + entry->header.a_text +
  619. +    fseek (desc, input_offset + text_offset + entry->header.a_text +
  620.             entry->header.a_data, 0);
  621.      if (entry->header.a_trsize !=
  622. -        read (desc, reloc_buf, entry->header.a_trsize)) {
  623. +        fread (reloc_buf, 1, entry->header.a_trsize, desc)) {
  624.          free (reloc_buf);
  625.          fatal (DLD_ENOTXTRELOC);
  626.      }
  627. @@ -1415,10 +1445,10 @@ struct file_entry *entry;
  628.      reloc_buf = (struct relocation_info *)
  629.          _dld_malloc (entry->header.a_drsize);
  630.  
  631. -    lseek (desc, text_offset + entry->header.a_text +
  632. +    fseek (desc, input_offset + text_offset + entry->header.a_text +
  633.             entry->header.a_data + entry->header.a_trsize, 0);
  634.      if (entry->header.a_drsize !=
  635. -        read (desc, reloc_buf, entry->header.a_drsize)) {
  636. +        fread (reloc_buf, 1, entry->header.a_drsize, desc)) {
  637.          free (reloc_buf);
  638.          fatal (DLD_ENODATRELOC);
  639.      }
  640. @@ -1561,7 +1591,7 @@ int reverse;
  641.  #endif
  642.      }
  643.  } /* perform_relocation */
  644. -
  645. +
  646.  /* ABSOLUTE_FILENAME_P (fname): True if fname is an absolute filename */
  647.  #ifdef atarist
  648.  #define ABSOLUTE_FILENAME_P(fname)    ((fname[0] == '/') || \
  649. @@ -1599,14 +1629,14 @@ char *filename;
  650.  
  651.  static void
  652.  read_file_symbols (desc, entry, load_text)
  653. -register int desc;
  654. +register FILE *desc;
  655.  register struct file_entry *entry;
  656.  int load_text;                /* used only by dld_init */
  657.  {
  658.      register int len;
  659.      int magicnum;
  660.  
  661. -    len = read (desc, &magicnum, sizeof magicnum);
  662. +    len = fread (&magicnum, 1, sizeof magicnum, desc);
  663.      if (len != sizeof magicnum)
  664.      fatal (DLD_EBADHEADER);
  665.  
  666. @@ -1624,20 +1654,136 @@ int load_text;                /* used only by dld
  667.      } else {
  668.      char armag[SARMAG];
  669.  
  670. -    lseek (desc, 0, 0);
  671. -    if (SARMAG != read (desc, armag, SARMAG) || strncmp (armag, ARMAG, SARMAG))
  672. +    fseek (desc, input_offset, 0);
  673. +    if (SARMAG != fread (armag, 1, SARMAG, desc) || strncmp (armag, ARMAG, SARMAG))
  674.          fatal (DLD_EBADOBJECT);
  675.      entry->library_flag = 1;
  676.      search_library (desc, entry);
  677.      }
  678.  } /* read_file_symbols */
  679.  
  680. +#ifdef AMIGA
  681. +
  682. +static unsigned long get_num(FILE *fd)
  683. +{
  684. +  unsigned long t;
  685. +  
  686. +  fread(&t, 1, 4, fd);
  687. +  return t;
  688. +}
  689. +
  690. +static void skip(FILE *fd, unsigned long t)
  691. +{
  692. +  fseek(fd, t * 4, SEEK_CUR);
  693. +}
  694. +
  695. +static void
  696. +amiga_read_file_symbols (desc, entry)
  697. +register FILE *desc;
  698. +register struct file_entry *entry;
  699. +{
  700. +  extern int _sdata, _stext, _bss_start;
  701. +  int t, f, l;
  702. +  int start, type;
  703. +  int name_size = 500;
  704. +  char *name;
  705. +
  706. +  if (get_num(desc) != 0x03f3)
  707. +    fatal (DLD_EBADHEADER);
  708. +  name = (char *)_dld_malloc(name_size);
  709. +  while (t = get_num(desc))
  710. +    skip(desc, t);
  711. +  get_num(desc);
  712. +  f = get_num(desc);
  713. +  l = get_num(desc);
  714. +  skip(desc, l - f + 1);
  715. +  while (l >= 0)
  716. +  {
  717. +    switch (get_num(desc) & 0xffff)
  718. +    {
  719. +      case 0x03e9:      /* text */
  720. +        type = N_TEXT | N_EXT;
  721. +        skip(desc, get_num(desc));
  722. +        start = (int)&_stext;
  723. +        break;
  724. +      case 0x03ea:      /* data */
  725. +        type = N_DATA | N_EXT;
  726. +        skip(desc, get_num(desc));
  727. +        start = (int)&_sdata;
  728. +        break;
  729. +      case 0x03eb:      /* bss */
  730. +        type = N_BSS | N_EXT;
  731. +        get_num(desc);
  732. +        start = (int)&_bss_start;
  733. +        break;
  734. +      case 0x03e8:      /* name  */
  735. +      case 0x03e7:      /* unit  */
  736. +        skip(desc, get_num(desc));
  737. +        break;
  738. +      case 0x03f1:      /* debug */
  739. +        t = get_num(desc);
  740. +        if (t > 2 && amiga_debug_hunk_size == 0)
  741. +        {
  742. +          char armag[SARMAG];
  743. +
  744. +          fread (armag, 1, SARMAG, desc);
  745. +          if (*((long *)armag) == 0x10107 || !strncmp (armag, ARMAG, SARMAG))
  746. +          {
  747. +            amiga_debug_hunk_size = t * 4;
  748. +            amiga_debug_hunk_offset = ftell(desc) - SARMAG;
  749. +          }
  750. +          t -= 2;
  751. +        }
  752. +        skip(desc, t);
  753. +        break;
  754. +      case 0x03ee:      /* reloc8  */
  755. +      case 0x03ed:      /* reloc16 */
  756. +      case 0x03ec:      /* reloc32 */
  757. +        while (t = get_num(desc))
  758. +          skip(desc, t + 1);
  759. +        break;
  760. +      case 0x03ef:      /* ext */
  761. +        while (t = get_num(desc))
  762. +          skip(desc, (t & 0xffffff) + 1);
  763. +        break;
  764. +      case 0x03f0:      /* symbols */
  765. +        while (t = get_num(desc))
  766. +        {
  767. +          struct nlist nl;
  768. +
  769. +          while (t >= name_size)
  770. +          {
  771. +            char *buf = (char *)_dld_malloc(name_size * 2);
  772. +            
  773. +            free(name);
  774. +            name = buf;
  775. +            name_size *= 2;
  776. +          }
  777. +          fread(name, 1, t * 4, desc);
  778. +          name[t * 4] = 0;
  779. +          nl.n_type = type;
  780. +          nl.n_value = get_num(desc) + start;
  781. +          /* ___gnu_compiled_c is (for some reason) defined twice, so we
  782. +             filter out all multiple defined symbols. */
  783. +          if (!_dld_getsym_soft(name))
  784. +            _dld_enter_global_ref (entry, &nl, name);
  785. +        }
  786. +        break;
  787. +      case 0x03f2:      /* end */
  788. +        l--;
  789. +        break;
  790. +    }
  791. +  }
  792. +  free(name);
  793. +}
  794. +
  795. +#endif /* AMIGA */
  796.  
  797.  /* Allocate memory for all text, data and bss segments and read them in
  798.     from the file. */
  799.  static void
  800.  read_text_and_data (desc, entry)
  801. -int desc;
  802. +FILE *desc;
  803.  register struct file_entry *entry;
  804.  {
  805.      register size = entry->header.a_text + entry->header.a_data +
  806. @@ -1656,9 +1802,9 @@ register struct file_entry *entry;
  807.         Note that the bss segment does not actually take up space in the
  808.         object file, so its size must be subtracted from SIZE */
  809.  
  810. -    lseek (desc, entry->starting_offset + N_TXTOFF(entry->header), 0);
  811. +    fseek (desc, input_offset + entry->starting_offset + N_TXTOFF(entry->header), 0);
  812.      size -= entry->header.a_bss;
  813. -    if (size != read (desc, (char *)entry->text_start_address, size)) {
  814. +    if (size != fread ((char *)entry->text_start_address, 1, size, desc)) {
  815.      free ((void *)entry->text_start_address);
  816.      entry->text_start_address = entry->data_start_address =
  817.          entry->bss_start_address = 0;
  818. @@ -1675,7 +1821,7 @@ register struct file_entry *entry;
  819.     symbols */
  820.  static void
  821.  relocate_entry_symbols (desc, entry)
  822. -int desc;
  823. +FILE *desc;
  824.  register struct file_entry *entry;
  825.  {
  826.      /* Compute start addresses of each sections and symbols.  */
  827. @@ -1759,7 +1905,7 @@ struct file_entry *entry;
  828.   * For those that can, set the flag executable_flag.
  829.   */
  830.  static void
  831. -find_all_executable_modules ()
  832. +find_all_executable_modules (void)
  833.  {
  834.      register struct file_entry *p;
  835.  
  836. @@ -1790,7 +1936,7 @@ find_all_executable_modules ()
  837.      _dld_exec_flags_valid = 1;
  838.  } /* find_all_executable_modules */
  839.  
  840. -
  841. +
  842.  /* remove all reference pointers *TO* ENTRY */
  843.  static void
  844.  remove_cross_references (head_of_chain, entry)
  845. @@ -1973,12 +2119,12 @@ struct file_entry *entry;
  846.      _dld_exec_flags_valid = 0;
  847.      return entry;
  848.  } /* do_unlink */
  849. -
  850. +
  851.  int
  852.  dld_init (myname)
  853.  char *myname;
  854.  {
  855. -    int desc;
  856. +    FILE *desc;
  857.  
  858.      page_size = getpagesize ();
  859.      bzero (_dld_symtab, TABSIZE * sizeof(symbol *));
  860. @@ -1999,6 +2145,11 @@ char *myname;
  861.      }
  862.      _dld_latest_entry = make_entry (myname);
  863.      desc = file_open (_dld_latest_entry);
  864. +#ifdef AMIGA
  865. +    amiga_read_file_symbols (desc, _dld_latest_entry);
  866. +    relocate_symbol_address (_dld_latest_entry);
  867. +#else
  868. +    
  869.  #ifdef atarist
  870.      st_read_header (desc, _dld_latest_entry);
  871.  #endif /* atarist */
  872. @@ -2023,6 +2174,8 @@ char *myname;
  873.      relocate_symbol_address (_dld_latest_entry);
  874.  #endif /* atarist */
  875.  
  876. +#endif /* AMIGA */
  877. +
  878.      if (_dld_latest_entry->symbols) {
  879.      free (_dld_latest_entry->symbols);
  880.      _dld_latest_entry->symbols = 0;
  881. @@ -2040,7 +2193,7 @@ int
  882.  dld_link (object_file)
  883.  char *object_file;
  884.  {
  885. -    register int desc;
  886. +    register FILE *desc;
  887.      struct file_entry *old_latest_entry = _dld_latest_entry;
  888.  
  889.      if (setjmp (_dld_env)) {
  890. @@ -2082,6 +2235,8 @@ char *object_file;
  891.      file_close ();
  892.  
  893.      _dld_patch_all_files (_dld_latest_entry);
  894. +    
  895. +    CacheClearE(0, (ULONG)-1, CACRF_ClearI);   /* clear instruction cache! */
  896.  
  897.      _dld_exec_flags_valid = 0;
  898.      return 0;
  899. diff -rup --new-file baseline/fsf/dld/doc/SPE.ps amiga/fsf/dld/doc/SPE.ps
  900. --- baseline/fsf/dld/doc/SPE.ps    Wed Dec 31 17:00:00 1969
  901. +++ amiga/fsf/dld/doc/SPE.ps    Sat Sep 28 00:00:00 1996
  902. @@ -0,0 +1,8967 @@
  903. +%!PS-Adobe-1.0
  904. +%%Creator: ivy:how (W. Wilson Ho,4435 Chem Annex,2680,9167584811,Prof. Ron Olsson)
  905. +%%Title: stdin (ditroff)
  906. +%%CreationDate: Mon Oct 15 14:10:23 1990
  907. +%%EndComments
  908. +% Start of psdit.pro -- prolog for ditroff translator
  909. +% Copyright (c) 1985,1987 Adobe Systems Incorporated. All Rights Reserved. 
  910. +% GOVERNMENT END USERS: See Notice file in TranScript library directory
  911. +% -- probably /usr/lib/ps/Notice
  912. +% RCS: $Header: psdit.pro,v 2.2 87/11/17 16:40:42 byron Rel $
  913. +/$DITroff 140 dict def $DITroff begin
  914. +/fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def
  915. +/xi {0 72 11 mul translate 72 resolution div dup neg scale 0 0 moveto
  916. +  /fontnum 1 def /fontsize 10 def /fontheight 10 def /fontslant 0 def F
  917. +  /pagesave save def}def
  918. +/PB{save /psv exch def currentpoint translate
  919. +  resolution 72 div dup neg scale 0 0 moveto}def
  920. +/PE{psv restore}def
  921. +/m1 matrix def /m2 matrix def /m3 matrix def /oldmat matrix def
  922. +/tan{dup sin exch cos div}bind def
  923. +/point{resolution 72 div mul}bind def
  924. +/dround    {transform round exch round exch itransform}bind def
  925. +/xT{/devname exch def}def
  926. +/xr{/mh exch def /my exch def /resolution exch def}def
  927. +/xp{}def
  928. +/xs{docsave restore end}def
  929. +/xt{}def
  930. +/xf{/fontname exch def /slotno exch def fontnames slotno get fontname eq not
  931. + {fonts slotno fontname findfont put fontnames slotno fontname put}if}def
  932. +/xH{/fontheight exch def F}bind def
  933. +/xS{/fontslant exch def F}bind def
  934. +/s{/fontsize exch def /fontheight fontsize def F}bind def
  935. +/f{/fontnum exch def F}bind def
  936. +/F{fontheight 0 le {/fontheight fontsize def}if
  937. +   fonts fontnum get fontsize point 0 0 fontheight point neg 0 0 m1 astore
  938. +   fontslant 0 ne{1 0 fontslant tan 1 0 0 m2 astore m3 concatmatrix}if
  939. +   makefont setfont .04 fontsize point mul 0 dround pop setlinewidth}bind def
  940. +/X{exch currentpoint exch pop moveto show}bind def
  941. +/N{3 1 roll moveto show}bind def
  942. +/Y{exch currentpoint pop exch moveto show}bind def
  943. +/S /show load def
  944. +/ditpush{}def/ditpop{}def
  945. +/AX{3 -1 roll currentpoint exch pop moveto 0 exch ashow}bind def
  946. +/AN{4 2 roll moveto 0 exch ashow}bind def
  947. +/AY{3 -1 roll currentpoint pop exch moveto 0 exch ashow}bind def
  948. +/AS{0 exch ashow}bind def
  949. +/MX{currentpoint exch pop moveto}bind def
  950. +/MY{currentpoint pop exch moveto}bind def
  951. +/MXY /moveto load def
  952. +/cb{pop}def    % action on unknown char -- nothing for now
  953. +/n{}def/w{}def
  954. +/p{pop showpage pagesave restore /pagesave save def}def
  955. +/abspoint{currentpoint exch pop add exch currentpoint pop add exch}def
  956. +/dstroke{currentpoint stroke moveto}bind def
  957. +/Dl{2 copy gsave rlineto stroke grestore rmoveto}bind def
  958. +/arcellipse{oldmat currentmatrix pop
  959. + currentpoint translate 1 diamv diamh div scale /rad diamh 2 div def
  960. + rad 0 rad -180 180 arc oldmat setmatrix}def
  961. +/Dc{gsave dup /diamv exch def /diamh exch def arcellipse dstroke 
  962. +    grestore diamh 0 rmoveto}def
  963. +/De{gsave /diamv exch def /diamh exch def arcellipse dstroke
  964. +    grestore diamh 0 rmoveto}def
  965. +/Da{currentpoint /by exch def /bx exch def /fy exch def /fx exch def
  966. +   /cy exch def /cx exch def /rad cx cx mul cy cy mul add sqrt def
  967. +   /ang1 cy neg cx neg atan def /ang2 fy fx atan def cx bx add cy by add
  968. +   2 copy rad ang1 ang2 arcn stroke exch fx add exch fy add moveto}def
  969. +/Barray 200 array def % 200 values in a wiggle
  970. +/D~{mark}def
  971. +/D~~{counttomark Barray exch 0 exch getinterval astore /Bcontrol exch def pop
  972. + /Blen Bcontrol length def Blen 4 ge Blen 2 mod 0 eq and
  973. + {Bcontrol 0 get Bcontrol 1 get abspoint /Ycont exch def /Xcont exch def
  974. +  Bcontrol 0 2 copy get 2 mul put Bcontrol 1 2 copy get 2 mul put
  975. +  Bcontrol Blen 2 sub 2 copy get 2 mul put
  976. +  Bcontrol Blen 1 sub 2 copy get 2 mul put
  977. +  /Ybi /Xbi currentpoint 3 1 roll def def 0 2 Blen 4 sub
  978. +  {/i exch def
  979. +   Bcontrol i get 3 div Bcontrol i 1 add get 3 div
  980. +   Bcontrol i get 3 mul Bcontrol i 2 add get add 6 div
  981. +   Bcontrol i 1 add get 3 mul Bcontrol i 3 add get add 6 div
  982. +   /Xbi Xcont Bcontrol i 2 add get 2 div add def
  983. +   /Ybi Ycont Bcontrol i 3 add get 2 div add def
  984. +   /Xcont Xcont Bcontrol i 2 add get add def
  985. +   /Ycont Ycont Bcontrol i 3 add get add def
  986. +   Xbi currentpoint pop sub Ybi currentpoint exch pop sub rcurveto
  987. +  }for dstroke}if}def
  988. +end
  989. +/ditstart{$DITroff begin
  990. + /nfonts 60 def            % NFONTS makedev/ditroff dependent!
  991. + /fonts[nfonts{0}repeat]def
  992. + /fontnames[nfonts{()}repeat]def
  993. +/docsave save def
  994. +}def
  995. +
  996. +% character outcalls
  997. +/oc {/pswid exch def /cc exch def /name exch def
  998. +   /ditwid pswid fontsize mul resolution mul 72000 div def
  999. +   /ditsiz fontsize resolution mul 72 div def
  1000. +   ocprocs name known{ocprocs name get exec}{name cb}
  1001. +   ifelse}def
  1002. +/fractm [.65 0 0 .6 0 0] def
  1003. +/fraction
  1004. + {/fden exch def /fnum exch def gsave /cf currentfont def
  1005. +  cf fractm makefont setfont 0 .3 dm 2 copy neg rmoveto
  1006. +  fnum show rmoveto currentfont cf setfont(\244)show setfont fden show 
  1007. +  grestore ditwid 0 rmoveto} def
  1008. +/oce {grestore ditwid 0 rmoveto}def
  1009. +/dm {ditsiz mul}def
  1010. +/ocprocs 50 dict def ocprocs begin
  1011. +(14){(1)(4)fraction}def
  1012. +(12){(1)(2)fraction}def
  1013. +(34){(3)(4)fraction}def
  1014. +(13){(1)(3)fraction}def
  1015. +(23){(2)(3)fraction}def
  1016. +(18){(1)(8)fraction}def
  1017. +(38){(3)(8)fraction}def
  1018. +(58){(5)(8)fraction}def
  1019. +(78){(7)(8)fraction}def
  1020. +(sr){gsave .05 dm .16 dm rmoveto(\326)show oce}def
  1021. +(is){gsave 0 .15 dm rmoveto(\362)show oce}def
  1022. +(->){gsave 0 .02 dm rmoveto(\256)show oce}def
  1023. +(<-){gsave 0 .02 dm rmoveto(\254)show oce}def
  1024. +(==){gsave 0 .05 dm rmoveto(\272)show oce}def
  1025. +end
  1026. +% DIThacks fonts for some special chars
  1027. +50 dict dup begin
  1028. +/FontType 3 def
  1029. +/FontName /DIThacks def
  1030. +/FontMatrix [.001 0.0 0.0 .001 0.0 0.0] def
  1031. +/FontBBox [-220 -280 900 900] def% a lie but ...
  1032. +/Encoding 256 array def
  1033. +0 1 255{Encoding exch /.notdef put}for
  1034. +Encoding
  1035. + dup 8#040/space put %space
  1036. + dup 8#110/rc put %right ceil
  1037. + dup 8#111/lt put %left  top curl
  1038. + dup 8#112/bv put %bold vert
  1039. + dup 8#113/lk put %left  mid curl
  1040. + dup 8#114/lb put %left  bot curl
  1041. + dup 8#115/rt put %right top curl
  1042. + dup 8#116/rk put %right mid curl
  1043. + dup 8#117/rb put %right bot curl
  1044. + dup 8#120/rf put %right floor
  1045. + dup 8#121/lf put %left  floor
  1046. + dup 8#122/lc put %left  ceil
  1047. + dup 8#140/sq put %square
  1048. + dup 8#141/bx put %box
  1049. + dup 8#142/ci put %circle
  1050. + dup 8#143/br put %box rule
  1051. + dup 8#144/rn put %root extender
  1052. + dup 8#145/vr put %vertical rule
  1053. + dup 8#146/ob put %outline bullet
  1054. + dup 8#147/bu put %bullet
  1055. + dup 8#150/ru put %rule
  1056. + dup 8#151/ul put %underline
  1057. + pop
  1058. +/DITfd 100 dict def
  1059. +/BuildChar{0 begin
  1060. + /cc exch def /fd exch def
  1061. + /charname fd /Encoding get cc get def
  1062. + /charwid fd /Metrics get charname get def
  1063. + /charproc fd /CharProcs get charname get def
  1064. + charwid 0 fd /FontBBox get aload pop setcachedevice
  1065. + 40 setlinewidth
  1066. + newpath 0 0 moveto gsave charproc grestore
  1067. + end}def
  1068. +/BuildChar load 0 DITfd put
  1069. +%/UniqueID 5 def
  1070. +/CharProcs 50 dict def
  1071. +CharProcs begin
  1072. +/space{}def
  1073. +/.notdef{}def
  1074. +/ru{500 0 rls}def
  1075. +/rn{0 750 moveto 500 0 rls}def
  1076. +/vr{20 800 moveto 0 -770 rls}def
  1077. +/bv{20 800 moveto 0 -1000 rls}def
  1078. +/br{20 770 moveto 0 -1040 rls}def
  1079. +/ul{0 -250 moveto 500 0 rls}def
  1080. +/ob{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath stroke}def
  1081. +/bu{200 250 rmoveto currentpoint newpath 200 0 360 arc closepath fill}def
  1082. +/sq{80 0 rmoveto currentpoint dround newpath moveto
  1083. +    640 0 rlineto 0 640 rlineto -640 0 rlineto closepath stroke}def
  1084. +/bx{80 0 rmoveto currentpoint dround newpath moveto
  1085. +    640 0 rlineto 0 640 rlineto -640 0 rlineto closepath fill}def
  1086. +/ci{355 333 rmoveto currentpoint newpath 333 0 360 arc
  1087. +    50 setlinewidth stroke}def
  1088. +
  1089. +/lt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 add exch s4 a4p stroke}def
  1090. +/lb{20 800 moveto 0 -550 rlineto currx -200 2cx s4 add exch s4 a4p stroke}def
  1091. +/rt{20 -200 moveto 0 550 rlineto currx 800 2cx s4 sub exch s4 a4p stroke}def
  1092. +/rb{20 800 moveto 0 -500 rlineto currx -200 2cx s4 sub exch s4 a4p stroke}def
  1093. +/lk{20 800 moveto 20 300 -280 300 s4 arcto pop pop 1000 sub
  1094. +    currentpoint stroke moveto
  1095. +    20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def
  1096. +/rk{20 800 moveto 20 300 320 300 s4 arcto pop pop 1000 sub
  1097. +    currentpoint stroke moveto
  1098. +    20 300 4 2 roll s4 a4p 20 -200 lineto stroke}def
  1099. +/lf{20 800 moveto 0 -1000 rlineto s4 0 rls}def
  1100. +/rf{20 800 moveto 0 -1000 rlineto s4 neg 0 rls}def
  1101. +/lc{20 -200 moveto 0 1000 rlineto s4 0 rls}def
  1102. +/rc{20 -200 moveto 0 1000 rlineto s4 neg 0 rls}def
  1103. +end
  1104. +
  1105. +/Metrics 50 dict def Metrics begin
  1106. +/.notdef 0 def
  1107. +/space 500 def
  1108. +/ru 500 def
  1109. +/br 0 def
  1110. +/lt 250 def
  1111. +/lb 250 def
  1112. +/rt 250 def
  1113. +/rb 250 def
  1114. +/lk 250 def
  1115. +/rk 250 def
  1116. +/rc 250 def
  1117. +/lc 250 def
  1118. +/rf 250 def
  1119. +/lf 250 def
  1120. +/bv 250 def
  1121. +/ob 350 def
  1122. +/bu 350 def
  1123. +/ci 750 def
  1124. +/bx 750 def
  1125. +/sq 750 def
  1126. +/rn 500 def
  1127. +/ul 500 def
  1128. +/vr 0 def
  1129. +end
  1130. +
  1131. +DITfd begin
  1132. +/s2 500 def /s4 250 def /s3 333 def
  1133. +/a4p{arcto pop pop pop pop}def
  1134. +/2cx{2 copy exch}def
  1135. +/rls{rlineto stroke}def
  1136. +/currx{currentpoint pop}def
  1137. +/dround{transform round exch round exch itransform} def
  1138. +end
  1139. +end
  1140. +/DIThacks exch definefont pop
  1141. +
  1142. +ditstart
  1143. +(psc)xT
  1144. +576 1 1 xr
  1145. +1(Times-Roman)xf 1 f
  1146. +2(Times-Italic)xf 2 f
  1147. +3(Times-Bold)xf 3 f
  1148. +4(Times-BoldItalic)xf 4 f
  1149. +5(Helvetica)xf 5 f
  1150. +6(Helvetica-Bold)xf 6 f
  1151. +7(Courier)xf 7 f
  1152. +8(Courier-Bold)xf 8 f
  1153. +9(Symbol)xf 9 f
  1154. +10(DIThacks)xf 10 f
  1155. +10 s
  1156. +1 f
  1157. +xi
  1158. +%%EndProlog
  1159. +5(Helvetica-Narrow)xf 5 f
  1160. +1 f
  1161. +
  1162. +%%Page: 1 1
  1163. +5(Helvetica-Narrow)xf 5 f
  1164. +10 s 0 xH 0 xS 5 f
  1165. +8 s
  1166. +1 f
  1167. +10 s
  1168. +32(--)Y
  1169. +4323(--)X
  1170. +3 f
  1171. +16 s
  1172. +1121 984(An)N
  1173. +1316(Approach)X
  1174. +1895(to)X
  1175. +2034(G)X
  1176. +2134(enuine)X
  1177. +2529(Dynam)X
  1178. +2927(ic)X
  1179. +3052(Linking)X
  1180. +2 f
  1181. +12 s
  1182. +2036 1464(W.)N
  1183. +2164(Wilson)X
  1184. +2455(Ho)X
  1185. +1 f
  1186. +719 1644(Division)N
  1187. +1074(of)X
  1188. +1178(Computer)X
  1189. +1587(Science,)X
  1190. +1935(University)X
  1191. +2365(of)X
  1192. +2469(California,)X
  1193. +2908(Davis,)X
  1194. +3180(CA)X
  1195. +3337(95616,)X
  1196. +3625(U.S.A.)X
  1197. +1734 1764(Email:)N
  1198. +2016(how@cs.ucdavis.edu)X
  1199. +2 f
  1200. +1966 2004(Ronald)N
  1201. +2268(A.)X
  1202. +2375(Olsson)X
  1203. +1 f
  1204. +719 2184(Division)N
  1205. +1074(of)X
  1206. +1178(Computer)X
  1207. +1587(Science,)X
  1208. +1935(University)X
  1209. +2365(of)X
  1210. +2469(California,)X
  1211. +2908(Davis,)X
  1212. +3180(CA)X
  1213. +3337(95616,)X
  1214. +3625(U.S.A.)X
  1215. +1694 2304(Email:)N
  1216. +1976(olsson@cs.ucdavis.edu)X
  1217. +3 f
  1218. +10 s
  1219. +2090 2608(SUMMARY)N
  1220. +1 f
  1221. +12 s
  1222. +576 2816(This)N
  1223. +781(paper)X
  1224. +1029(describes)X
  1225. +1421(a)X
  1226. +1498(new)X
  1227. +1692(approach)X
  1228. +2080(to)X
  1229. +2190(dynamic)X
  1230. +2557(link/unlink)X
  1231. +3015(editing.)X
  1232. +3366(The)X
  1233. +3551(basis)X
  1234. +3778(of)X
  1235. +3893(this)X
  1236. +576 2968(approach)N
  1237. +965(is)X
  1238. +1065(a)X
  1239. +1144(library)X
  1240. +1436(of)X
  1241. +1551(link)X
  1242. +1736(editing)X
  1243. +2039(functions)X
  1244. +2432(that)X
  1245. +2612(can)X
  1246. +2781(add)X
  1247. +2955(compiled)X
  1248. +3349(object)X
  1249. +3620(code)X
  1250. +3837(to)X
  1251. +2 f
  1252. +3947(or)X
  1253. +576 3120(remove)N
  1254. +1 f
  1255. +909(such)X
  1256. +1135(code)X
  1257. +1367(from)X
  1258. +1604(a)X
  1259. +1697(process)X
  1260. +2035(anytime)X
  1261. +2396(during)X
  1262. +2697(its)X
  1263. +2838(execution.)X
  1264. +3311(Loading)X
  1265. +3682(modules,)X
  1266. +576 3272(searching)N
  1267. +982(libraries,)X
  1268. +1359(resolving)X
  1269. +1754(external)X
  1270. +2102(references,)X
  1271. +2559(and)X
  1272. +2735(allocating)X
  1273. +3153(storage)X
  1274. +3468(for)X
  1275. +3616(global)X
  1276. +3893(and)X
  1277. +576 3424(static)N
  1278. +805(data)X
  1279. +991(structures)X
  1280. +1390(are)X
  1281. +1533(all)X
  1282. +1655(performed)X
  1283. +2081(at)X
  1284. +2176(run)X
  1285. +2329(time.)X
  1286. +2575(This)X
  1287. +2772(approach)X
  1288. +3151(provides)X
  1289. +3508(the)X
  1290. +3652(ef\256ciency)X
  1291. +576 3576(of)N
  1292. +688(native)X
  1293. +956(machine)X
  1294. +1314(code)X
  1295. +1527(execution)X
  1296. +1933(along)X
  1297. +2178(with)X
  1298. +2380(the)X
  1299. +2529(\257exibility)X
  1300. +2935(to)X
  1301. +3041(modify)X
  1302. +3350(a)X
  1303. +3424(program)X
  1304. +3781(during)X
  1305. +576 3728(its)N
  1306. +693(execution,)X
  1307. +1118(thereby)X
  1308. +1433(making)X
  1309. +1748(many)X
  1310. +1988(new)X
  1311. +2174(applications)X
  1312. +2666(possible.)X
  1313. +3055(This)X
  1314. +3252(paper)X
  1315. +3492(also)X
  1316. +3674(describes)X
  1317. +576 3880(three)N
  1318. +803(sample)X
  1319. +1110(applications)X
  1320. +1610(of)X
  1321. +1724(these)X
  1322. +1956(dynamic)X
  1323. +2322(link)X
  1324. +2506(editing)X
  1325. +2808(functions:)X
  1326. +3250(program)X
  1327. +3609(customiza-)X
  1328. +576 4032(tion,)N
  1329. +775(incremental)X
  1330. +1257(program)X
  1331. +1609(development,)X
  1332. +2157(and)X
  1333. +2322(support)X
  1334. +2636(for)X
  1335. +2774(debugging)X
  1336. +3206(and)X
  1337. +3371(testing.)X
  1338. +3702(A)X
  1339. +3797(proto-)X
  1340. +576 4184(type)N
  1341. +770(of)X
  1342. +878(this)X
  1343. +1045(approach)X
  1344. +1426(is)X
  1345. +1518(implemented)X
  1346. +2050(under)X
  1347. +2297(UNIX)X
  1348. +2563(as)X
  1349. +2670(a)X
  1350. +2740(library)X
  1351. +3024(package)X
  1352. +3367(called)X
  1353. +2 f
  1354. +3625(dld)X
  1355. +1 f
  1356. +3775(for)X
  1357. +3914(the)X
  1358. +576 4336(C)N
  1359. +664(programming)X
  1360. +1212(language)X
  1361. +1584(and)X
  1362. +1747(is)X
  1363. +1835(available)X
  1364. +2208(for)X
  1365. +2344(VAX,)X
  1366. +2599(Sun)X
  1367. +2772(3,)X
  1368. +2868(and)X
  1369. +3031(SPARCstation)X
  1370. +3615(machines.)X
  1371. +576 4820(KEY)N
  1372. +797(WORDS)X
  1373. +1440(Dynamic)X
  1374. +1817(Linking)X
  1375. +1440 4972(Incremental)N
  1376. +1925(Program)X
  1377. +2280(Development)X
  1378. +1440 5124(Program)N
  1379. +1795(Customization)X
  1380. +1440 5276(Debugging)N
  1381. +1891(and)X
  1382. +2054(Testing)X
  1383. +1440 5428(UNIX)N
  1384. +
  1385. +1 p
  1386. +%%Page: 1 2
  1387. +5(Helvetica-Narrow)xf 5 f
  1388. +12 s 0 xH 0 xS 5 f
  1389. +1 f
  1390. +10 s
  1391. +0 32(--)N
  1392. +4323(--)X
  1393. +12 s
  1394. +2224 616(-)N
  1395. +2280(1)X
  1396. +2352(-)X
  1397. +3362(October)X
  1398. +3696(15,)X
  1399. +3840(1990)X
  1400. +1942 1016(INTRODUCTION)N
  1401. +576 1348(Many)N
  1402. +840(conventional)X
  1403. +1378(operating)X
  1404. +1782(systems\320such)X
  1405. +2399(as)X
  1406. +2520(UNIX,)X
  1407. +2824(DOS,)X
  1408. +3080(and)X
  1409. +3260(VMS\320assume)X
  1410. +3887(that)X
  1411. +576 1500(programs)N
  1412. +982(are)X
  1413. +1143(static)X
  1414. +1390(entities)X
  1415. +1712(in)X
  1416. +1830(the)X
  1417. +1991(sense)X
  1418. +2242(that)X
  1419. +2430(construction)X
  1420. +2949(of)X
  1421. +3071(a)X
  1422. +3156(program)X
  1423. +3524(is)X
  1424. +3630(completed)X
  1425. +576 1652(before)N
  1426. +859(its)X
  1427. +987(execution.)X
  1428. +1447(A)X
  1429. +1554(program's)X
  1430. +1987(functionality,)X
  1431. +2542(control)X
  1432. +2853(structures,)X
  1433. +3289(number)X
  1434. +3621(of)X
  1435. +3739(subrou-)X
  1436. +576 1804(tines,)N
  1437. +815(and)X
  1438. +987(requirement)X
  1439. +1486(on)X
  1440. +1615(library)X
  1441. +1905(functions)X
  1442. +2296(are)X
  1443. +2447(all)X
  1444. +2577(well)X
  1445. +2776(de\256ned)X
  1446. +3091(and)X
  1447. +3262(do)X
  1448. +3390(not)X
  1449. +3545(change)X
  1450. +3850(once)X
  1451. +576 1956(the)N
  1452. +731(program)X
  1453. +1094(begins)X
  1454. +1382(execution.)X
  1455. +1842(However,)X
  1456. +2255(some)X
  1457. +2495(programming)X
  1458. +3056(languages,)X
  1459. +3503(such)X
  1460. +3717(as)X
  1461. +3835(LISP)X
  1462. +576 2108(and)N
  1463. +745(Prolog,)X
  1464. +1055(take)X
  1465. +1246(an)X
  1466. +1367(alternative)X
  1467. +1805(approach)X
  1468. +2188(in)X
  1469. +2293(which)X
  1470. +2558(they)X
  1471. +2754(allow)X
  1472. +2998(new)X
  1473. +3188(functions)X
  1474. +3576(to)X
  1475. +3681(be)X
  1476. +3802(added)X
  1477. +576 2260(during)N
  1478. +864(the)X
  1479. +1019(execution)X
  1480. +1431(of)X
  1481. +1548(a)X
  1482. +1628(program.)X
  1483. +2039(The)X
  1484. +2226(assumption)X
  1485. +2702(that)X
  1486. +2885(programs)X
  1487. +3286(are)X
  1488. +3442(static)X
  1489. +3684(therefore)X
  1490. +576 2412(makes)N
  1491. +863(it)X
  1492. +957(very)X
  1493. +1168(dif\256cult)X
  1494. +1513(to)X
  1495. +1628(translate)X
  1496. +1995(these)X
  1497. +2233(languages)X
  1498. +2658(directly)X
  1499. +2993(into)X
  1500. +3183(native)X
  1501. +3459(machine)X
  1502. +3826(code.)X
  1503. +576 2564(Instead,)N
  1504. +904(they)X
  1505. +1097(are)X
  1506. +1242(interpreted)X
  1507. +1687(by)X
  1508. +1810(a)X
  1509. +1880(runtime)X
  1510. +2207(support)X
  1511. +2522(system)X
  1512. +2816(or)X
  1513. +2923(pseudo-machine,)X
  1514. +3605(which)X
  1515. +3867(runs)X
  1516. +576 2716(more)N
  1517. +798(slowly)X
  1518. +1078(than)X
  1519. +1268(native)X
  1520. +1528(code)X
  1521. +1734(on)X
  1522. +1854(a)X
  1523. +1921(physical)X
  1524. +2266(machine.)X
  1525. +776 2896(This)N
  1526. +987(paper)X
  1527. +1241(presents)X
  1528. +1596(an)X
  1529. +1727(new)X
  1530. +1927(approach)X
  1531. +2320(to)X
  1532. +2435(program)X
  1533. +2801(construction)X
  1534. +3318(that)X
  1535. +3504(allows)X
  1536. +3796(object)X
  1537. +576 3048(modules)N
  1538. +932(to)X
  1539. +1037(be)X
  1540. +1158(dynamically)X
  1541. +3 f
  1542. +1664(de\256ned)X
  1543. +1 f
  1544. +1991(or)X
  1545. +3 f
  1546. +2100(rede\256ned)X
  1547. +1 f
  1548. +(,)S
  1549. +2537(and)X
  1550. +3 f
  1551. +2705(added)X
  1552. +1 f
  1553. +2984(to)X
  1554. +3088(or)X
  1555. +3 f
  1556. +3197(removed)X
  1557. +1 f
  1558. +3584(from)X
  1559. +3800(a)X
  1560. +3872(pro-)X
  1561. +576 3200(cess)N
  1562. +782(during)X
  1563. +1079(its)X
  1564. +1216(execution.)X
  1565. +1686(In)X
  1566. +1813(other)X
  1567. +2058(existing)X
  1568. +2410(systems,)X
  1569. +2785(object)X
  1570. +3068(modules)X
  1571. +3441(can)X
  1572. +3622(at)X
  1573. +3739(best)X
  1574. +3941(be)X
  1575. +576 3352(dynamically)N
  1576. +1087(loaded)X
  1577. +1378(but)X
  1578. +1535(not)X
  1579. +1692(removed.)X
  1580. +2110(Using)X
  1581. +2372(this)X
  1582. +2544(approach,)X
  1583. +2954(the)X
  1584. +3105(functionalities)X
  1585. +3690(provided)X
  1586. +576 3504(by)N
  1587. +704(a)X
  1588. +779(program)X
  1589. +1137(during)X
  1590. +1421(its)X
  1591. +1545(execution)X
  1592. +1953(can)X
  1593. +2120(therefore)X
  1594. +2501(change)X
  1595. +2807(with)X
  1596. +3011(time)X
  1597. +3216(or)X
  1598. +3329(in)X
  1599. +3437(response)X
  1600. +3806(to)X
  1601. +3914(the)X
  1602. +576 3656(environment.)N
  1603. +1155(Thus,)X
  1604. +1415(this)X
  1605. +1598(approach)X
  1606. +1995(retains)X
  1607. +2296(the)X
  1608. +2458(ef\256ciency)X
  1609. +2882(of)X
  1610. +3006(executing)X
  1611. +3425(native)X
  1612. +3705(machine)X
  1613. +576 3808(code)N
  1614. +782(and)X
  1615. +945(adds)X
  1616. +1145(the)X
  1617. +1287(\257exibility)X
  1618. +1686(of)X
  1619. +1790(modifying)X
  1620. +2215(a)X
  1621. +2282(program)X
  1622. +2632(during)X
  1623. +2907(its)X
  1624. +3022(execution.)X
  1625. +776 3988(A)N
  1626. +895(dynamic)X
  1627. +1278(link)X
  1628. +1479(editor,)X
  1629. +1779(called)X
  1630. +2 f
  1631. +2061(dld)X
  1632. +1 f
  1633. +2184(,)X
  1634. +2259(implements)X
  1635. +2760(this)X
  1636. +2950(approach)X
  1637. +3354(under)X
  1638. +3624(the)X
  1639. +3793(UNIX)X
  1640. +576 4140(operating)N
  1641. +969(system.)X
  1642. +1313(It)X
  1643. +1401(integrates)X
  1644. +1805(or)X
  1645. +1914(removes)X
  1646. +2269(object)X
  1647. +2534(modules)X
  1648. +2889(at)X
  1649. +2988(run)X
  1650. +3145(time.)X
  1651. +2 f
  1652. +3394(Dld)X
  1653. +1 f
  1654. +3566(differs)X
  1655. +3845(from)X
  1656. +576 4292(other)N
  1657. +804(dynamic)X
  1658. +1166(linkers)X
  1659. +1458(in)X
  1660. +1563(that)X
  1661. +1738(not)X
  1662. +1891(only)X
  1663. +2092(can)X
  1664. +2256(object)X
  1665. +2522(modules)X
  1666. +2878(be)X
  1667. +2999(added)X
  1668. +3259(to)X
  1669. +3364(but)X
  1670. +3517(they)X
  1671. +3713(can)X
  1672. +3877(also)X
  1673. +576 4444(be)N
  1674. +695(removed)X
  1675. +1059(from)X
  1676. +1273(an)X
  1677. +1391(executing)X
  1678. +1793(process.)X
  1679. +2156(Furthermore,)X
  1680. +2688(these)X
  1681. +2913(modules)X
  1682. +3266(do)X
  1683. +3389(not)X
  1684. +3539(even)X
  1685. +3748(have)X
  1686. +3957(to)X
  1687. +576 4596(be)N
  1688. +742(known)X
  1689. +1078(or)X
  1690. +1233(exist)X
  1691. +1490(when)X
  1692. +1773(the)X
  1693. +1966(execution)X
  1694. +2416(begins.)X
  1695. +2790(This)X
  1696. +3036(paper)X
  1697. +3325(describes)X
  1698. +3759(several)X
  1699. +576 4748(applications\320program)N
  1700. +1510(customization,)X
  1701. +2121(incremental)X
  1702. +2622(program)X
  1703. +2993(development,)X
  1704. +3560(and)X
  1705. +3744(support)X
  1706. +576 4900(for)N
  1707. +743(advanced)X
  1708. +1162(debugging)X
  1709. +1623(and)X
  1710. +1818(testing)X
  1711. +2131(features\320that)X
  1712. +2733(illustrate)X
  1713. +3127(the)X
  1714. +3301(usefulness)X
  1715. +3757(of)X
  1716. +3893(this)X
  1717. +576 5052(dynamic)N
  1718. +932(linking)X
  1719. +1229(approach.)X
  1720. +776 5232(The)N
  1721. +975(major)X
  1722. +1249(cost)X
  1723. +1453(of)X
  1724. +1582(dynamic)X
  1725. +1963(linking)X
  1726. +2286(is)X
  1727. +2400(the)X
  1728. +2568(onetime)X
  1729. +2929(overhead)X
  1730. +3332(in)X
  1731. +3457(reading)X
  1732. +3796(object)X
  1733. +576 5384(modules)N
  1734. +942(from)X
  1735. +1169(disk.)X
  1736. +1417(The)X
  1737. +1607(processing)X
  1738. +2057(time)X
  1739. +2268(spent)X
  1740. +2510(on)X
  1741. +2645(link)X
  1742. +2834(editing)X
  1743. +3141(is)X
  1744. +3244(actually)X
  1745. +3589(very)X
  1746. +3799(small.)X
  1747. +576 5536(Once)N
  1748. +806(the)X
  1749. +951(modules)X
  1750. +1304(have)X
  1751. +1513(been)X
  1752. +1723(linked,)X
  1753. +2016(the)X
  1754. +2162(executing)X
  1755. +2565(process)X
  1756. +2881(runs)X
  1757. +3074(at)X
  1758. +3172(nearly)X
  1759. +3441(the)X
  1760. +3587(same)X
  1761. +3813(speed)X
  1762. +576 5688(as)N
  1763. +687(the)X
  1764. +836(equivalent)X
  1765. +1269(statically)X
  1766. +1649(linked)X
  1767. +1921(process.)X
  1768. +2288(In)X
  1769. +2399(fact,)X
  1770. +2599(the)X
  1771. +2747(only)X
  1772. +2948(signi\256cant)X
  1773. +3379(drawback)X
  1774. +3783(of)X
  1775. +3893(this)X
  1776. +576 5840(dynamic)N
  1777. +955(linking)X
  1778. +1275(approach)X
  1779. +1675(is)X
  1780. +1786(that)X
  1781. +1979(its)X
  1782. +2118(\257exibility)X
  1783. +2541(makes)X
  1784. +2835(it)X
  1785. +2937(susceptible)X
  1786. +3413(to)X
  1787. +3536(misuse.)X
  1788. +3899(For)X
  1789. +
  1790. +2 p
  1791. +%%Page: 2 3
  1792. +5(Helvetica-Narrow)xf 5 f
  1793. +12 s 0 xH 0 xS 5 f
  1794. +1 f
  1795. +10 s
  1796. +0 32(--)N
  1797. +4323(--)X
  1798. +12 s
  1799. +2224 616(-)N
  1800. +2280(2)X
  1801. +2352(-)X
  1802. +3362(October)X
  1803. +3696(15,)X
  1804. +3840(1990)X
  1805. +576 1016(example,)N
  1806. +961(a)X
  1807. +1038(process)X
  1808. +1360(might)X
  1809. +1619(be)X
  1810. +1744(corrupted)X
  1811. +2146(by)X
  1812. +2275(linking)X
  1813. +2581(in)X
  1814. +2689(erroneous)X
  1815. +3101(code,)X
  1816. +3340(or)X
  1817. +3453(careless)X
  1818. +3791(use)X
  1819. +3952(of)X
  1820. +576 1168(dynamic)N
  1821. +939(linking)X
  1822. +1243(in)X
  1823. +1349(privileged)X
  1824. +1771(system)X
  1825. +2069(programs)X
  1826. +2464(might)X
  1827. +2721(create)X
  1828. +2984(security)X
  1829. +3321(problems.)X
  1830. +3759(A)X
  1831. +3860(later)X
  1832. +576 1320(section)N
  1833. +873(discusses)X
  1834. +1254(these)X
  1835. +1476(drawbacks)X
  1836. +1911(and)X
  1837. +2074(possible)X
  1838. +2413(remedies)X
  1839. +2785(in)X
  1840. +2884(more)X
  1841. +3106(detail.)X
  1842. +
  1843. +3 p
  1844. +%%Page: 3 4
  1845. +5(Helvetica-Narrow)xf 5 f
  1846. +12 s 0 xH 0 xS 5 f
  1847. +1 f
  1848. +10 s
  1849. +0 32(--)N
  1850. +4323(--)X
  1851. +12 s
  1852. +2224 616(-)N
  1853. +2280(3)X
  1854. +2352(-)X
  1855. +3362(October)X
  1856. +3696(15,)X
  1857. +3840(1990)X
  1858. +1966 1016(BACKGROUND)N
  1859. +576 1348(This)N
  1860. +784(section)X
  1861. +1094(presents)X
  1862. +1447(some)X
  1863. +1688(basic)X
  1864. +1924(concepts)X
  1865. +2299(of)X
  1866. +2417(program)X
  1867. +2781(compilation)X
  1868. +3280(and)X
  1869. +3457(link)X
  1870. +3645(editing;)X
  1871. +3978(it)X
  1872. +576 1500(also)N
  1873. +769(describes)X
  1874. +1165(the)X
  1875. +1321(structures)X
  1876. +1733(of)X
  1877. +1851(relocatable)X
  1878. +2313(object)X
  1879. +2587(\256les)X
  1880. +2785(and)X
  1881. +2962(executable)X
  1882. +3413(\256les)X
  1883. +3611(in)X
  1884. +3724(general.)X
  1885. +576 1652(While)N
  1886. +839(the)X
  1887. +984(description)X
  1888. +1439(of)X
  1889. +1547(these)X
  1890. +1773(structures)X
  1891. +2175(and)X
  1892. +2342(the)X
  1893. +2488(example)X
  1894. +2843(given)X
  1895. +3085(in)X
  1896. +3188(this)X
  1897. +3355(section)X
  1898. +3656(might)X
  1899. +3909(not)X
  1900. +576 1804(directly)N
  1901. +899(apply)X
  1902. +1141(to)X
  1903. +1244(all)X
  1904. +1368(operating)X
  1905. +1759(systems,)X
  1906. +2114(the)X
  1907. +2259(underlying)X
  1908. +2703(principles)X
  1909. +3110(are)X
  1910. +3255(all)X
  1911. +3379(similar.)X
  1912. +3722(Readers)X
  1913. +576 1956(already)N
  1914. +889(familiar)X
  1915. +1224(with)X
  1916. +1424(these)X
  1917. +1651(concepts)X
  1918. +2017(may)X
  1919. +2212(proceed)X
  1920. +2546(to)X
  1921. +2650(the)X
  1922. +2797(next)X
  1923. +2992(section.)X
  1924. +3342(Further)X
  1925. +3654(details)X
  1926. +3936(on)X
  1927. +576 2108(these)N
  1928. +798(basic)X
  1929. +1020(concepts)X
  1930. +1381(can)X
  1931. +1539(be)X
  1932. +1654(found)X
  1933. +1902(in)X
  1934. +2001(Reference)X
  1935. +2416(1.)X
  1936. +776 2288(Most)N
  1937. +1001(contemporary)X
  1938. +1564(programming)X
  1939. +2116(environments)X
  1940. +2668(do)X
  1941. +2793(not)X
  1942. +2945(convert)X
  1943. +3263(programs)X
  1944. +3655(written)X
  1945. +3957(in)X
  1946. +576 2440(high-level)N
  1947. +993(programming)X
  1948. +1543(languages)X
  1949. +1954(directly)X
  1950. +2275(into)X
  1951. +2450(executable)X
  1952. +2888(machine)X
  1953. +3240(code.)X
  1954. +3495(Typically,)X
  1955. +3914(the)X
  1956. +576 2592(source)N
  1957. +855(of)X
  1958. +963(a)X
  1959. +1034(program)X
  1960. +1388(is)X
  1961. +1480(contained)X
  1962. +1883(in)X
  1963. +1986(one)X
  1964. +2153(or)X
  1965. +2261(more)X
  1966. +2487(\256les,)X
  1967. +2699(or)X
  1968. +4 f
  1969. +2808(source)X
  1970. +3098(modules)X
  1971. +1 f
  1972. +3429(,)X
  1973. +3482(each)X
  1974. +3688(of)X
  1975. +3797(which)X
  1976. +576 2744(contains)N
  1977. +933(de\256nitions)X
  1978. +1375(of)X
  1979. +1490(functions)X
  1980. +1883(and)X
  1981. +2057(data)X
  1982. +2253(structures.)X
  1983. +2710(These)X
  1984. +2975(modules)X
  1985. +3336(are)X
  1986. +3489(\256rst)X
  1987. +3673(compiled)X
  1988. +576 2896(into)N
  1989. +4 f
  1990. +771(object)X
  1991. +1052(modules)X
  1992. +1 f
  1993. +1383(,)X
  1994. +1452(which)X
  1995. +1732(are)X
  1996. +1895(then)X
  1997. +2106(combined)X
  1998. +2531(together)X
  1999. +2892(into)X
  2000. +3087(a)X
  2001. +3175(single)X
  2002. +3451(\256le.)X
  2003. +3668(This)X
  2004. +3885(\256le,)X
  2005. +576 3048(known)N
  2006. +865(as)X
  2007. +973(the)X
  2008. +4 f
  2009. +1119(executable)X
  2010. +1570(\256le)X
  2011. +1 f
  2012. +1693(,)X
  2013. +1745(has)X
  2014. +1901(a)X
  2015. +1972(well-de\256ned)X
  2016. +2481(format)X
  2017. +2765(understood)X
  2018. +3219(by)X
  2019. +3342(the)X
  2020. +3487(operating)X
  2021. +3878(sys-)X
  2022. +576 3200(tem)N
  2023. +745(and)X
  2024. +908(can)X
  2025. +1066(readily)X
  2026. +1358(be)X
  2027. +1473(turned)X
  2028. +1743(into)X
  2029. +1917(an)X
  2030. +2032(executing)X
  2031. +2431(process.)X
  2032. +776 3380(An)N
  2033. +942(object)X
  2034. +1228(module)X
  2035. +1567(is)X
  2036. +1681(the)X
  2037. +1849(machine)X
  2038. +2226(code)X
  2039. +2458(equivalent)X
  2040. +2910(of)X
  2041. +3040(its)X
  2042. +3181(corresponding)X
  2043. +3781(source)X
  2044. +576 3532(module.)N
  2045. +953(It)X
  2046. +1052(contains)X
  2047. +1413(a)X
  2048. +4 f
  2049. +1496(text)X
  2050. +1 f
  2051. +1681(segment)X
  2052. +2042(\(machine)X
  2053. +2440(code)X
  2054. +2661(for)X
  2055. +2812(functions\))X
  2056. +3241(and)X
  2057. +3419(a)X
  2058. +4 f
  2059. +3501(data)X
  2060. +1 f
  2061. +3711(segment)X
  2062. +576 3684(\(machine)N
  2063. +1011(representations)X
  2064. +1670(of)X
  2065. +1826(global)X
  2066. +2143(and)X
  2067. +2358(static)X
  2068. +2638(variables,)X
  2069. +3086(string)X
  2070. +3381(constants,)X
  2071. +3839(etc.\).)X
  2072. +576 3836(Throughout)N
  2073. +1061(this)X
  2074. +1231(paper,)X
  2075. +1500(the)X
  2076. +1649(term)X
  2077. +2 f
  2078. +1857(module)X
  2079. +1 f
  2080. +2171(is)X
  2081. +2266(used)X
  2082. +2472(whenever)X
  2083. +2876(there)X
  2084. +3099(is)X
  2085. +3193(no)X
  2086. +3319(ambiguity)X
  2087. +3740(or)X
  2088. +3850(need)X
  2089. +576 3988(to)N
  2090. +677(distinguish)X
  2091. +1125(between)X
  2092. +1472(a)X
  2093. +1542(source)X
  2094. +1820(module)X
  2095. +2136(and)X
  2096. +2302(an)X
  2097. +2420(object)X
  2098. +2683(module.)X
  2099. +3047(When)X
  2100. +3304(a)X
  2101. +3374(source)X
  2102. +3652(module)X
  2103. +3968(is)X
  2104. +576 4140(compiled,)N
  2105. +989(the)X
  2106. +1137(compiler)X
  2107. +1510(generates)X
  2108. +1904(an)X
  2109. +4 f
  2110. +2025(object)X
  2111. +2290(\256le)X
  2112. +1 f
  2113. +2413(,)X
  2114. +2466(which,)X
  2115. +2754(in)X
  2116. +2858(addition)X
  2117. +3203(to)X
  2118. +3307(the)X
  2119. +3454(object)X
  2120. +3719(module,)X
  2121. +576 4292(contains)N
  2122. +930(global)X
  2123. +1204(symbol)X
  2124. +1520(de\256nitions)X
  2125. +1959(and)X
  2126. +2131(information)X
  2127. +2619(that)X
  2128. +2797(enables)X
  2129. +3120(this)X
  2130. +3293(module)X
  2131. +3616(to)X
  2132. +3725(be)X
  2133. +3850(relo-)X
  2134. +576 4444(cated.)N
  2135. +867(This)X
  2136. +1077(extra)X
  2137. +1309(information)X
  2138. +1803(is)X
  2139. +1906(necessary)X
  2140. +2319(because)X
  2141. +2663(global)X
  2142. +2943(symbols)X
  2143. +3302(de\256ned)X
  2144. +3624(in)X
  2145. +3737(a)X
  2146. +3818(given)X
  2147. +576 4596(module)N
  2148. +892(might)X
  2149. +1144(be)X
  2150. +1262(referenced)X
  2151. +1696(by)X
  2152. +1820(other)X
  2153. +2046(modules,)X
  2154. +2424(which)X
  2155. +2687(need)X
  2156. +2897(to)X
  2157. +3000(know)X
  2158. +3241(the)X
  2159. +3387(location)X
  2160. +3726(of)X
  2161. +3834(these)X
  2162. +576 4748(symbols.)N
  2163. +988(Furthermore,)X
  2164. +1537(the)X
  2165. +1699(compiler)X
  2166. +2086(or)X
  2167. +2210(assembler)X
  2168. +2639(does)X
  2169. +2859(not)X
  2170. +3025(know)X
  2171. +3281(the)X
  2172. +3442(location)X
  2173. +3796(in)X
  2174. +3914(the)X
  2175. +576 4900(address)N
  2176. +891(space)X
  2177. +1132(where)X
  2178. +1394(the)X
  2179. +1540(module)X
  2180. +1857(will)X
  2181. +2035(be)X
  2182. +2154(loaded)X
  2183. +2439(when)X
  2184. +2675(it)X
  2185. +2757(is)X
  2186. +2849(combined)X
  2187. +3257(with)X
  2188. +3456(other)X
  2189. +3682(modules.)X
  2190. +576 5052(Therefore,)N
  2191. +1012(relocation)X
  2192. +1430(information)X
  2193. +1917(must)X
  2194. +2135(be)X
  2195. +2257(recorded)X
  2196. +2625(with)X
  2197. +2827(the)X
  2198. +2976(object)X
  2199. +3243(\256le.)X
  2200. +3445(Related)X
  2201. +3771(groups)X
  2202. +576 5204(of)N
  2203. +684(object)X
  2204. +948(\256les)X
  2205. +1136(of)X
  2206. +1244(commonly)X
  2207. +1684(used)X
  2208. +1888(source)X
  2209. +2167(modules\320such)X
  2210. +2793(as)X
  2211. +2902(system)X
  2212. +3198(services,)X
  2213. +3561(input/output)X
  2214. +576 5356(operations,)N
  2215. +1027(and)X
  2216. +1192 0.3409(mathematical)AX
  2217. +1739(functions\320are)X
  2218. +2337(often)X
  2219. +2561(combined)X
  2220. +2967(into)X
  2221. +3142(archive)X
  2222. +3451(\256les,)X
  2223. +3660(or)X
  2224. +4 f
  2225. +3765(library)X
  2226. +576 5508(\256les)N
  2227. +1 f
  2228. +736(.)X
  2229. +813(As)X
  2230. +948(a)X
  2231. +1020(result,)X
  2232. +1287(users)X
  2233. +1513(can)X
  2234. +1676(specify)X
  2235. +1983(a)X
  2236. +2055(large)X
  2237. +2277(number)X
  2238. +2600(of)X
  2239. +2710(related)X
  2240. +3003(object)X
  2241. +3269(\256les)X
  2242. +3459(by)X
  2243. +3585(giving)X
  2244. +3861(only)X
  2245. +576 5660(one)N
  2246. +739(\256le)X
  2247. +886(name.)X
  2248. +
  2249. +4 p
  2250. +%%Page: 4 5
  2251. +5(Helvetica-Narrow)xf 5 f
  2252. +12 s 0 xH 0 xS 5 f
  2253. +1 f
  2254. +10 s
  2255. +0 32(--)N
  2256. +4323(--)X
  2257. +12 s
  2258. +2224 616(-)N
  2259. +2280(4)X
  2260. +2352(-)X
  2261. +3362(October)X
  2262. +3696(15,)X
  2263. +3840(1990)X
  2264. +776 1016(The)N
  2265. +952(activity)X
  2266. +1268(of)X
  2267. +1374(loading)X
  2268. +1690(and)X
  2269. +1856(relocating)X
  2270. +2269(object)X
  2271. +2532(modules)X
  2272. +2885(into)X
  2273. +3062(an)X
  2274. +3180(executable)X
  2275. +3620(\256le)X
  2276. +3770(is)X
  2277. +3861(gen-)X
  2278. +576 1168(erally)N
  2279. +825(referred)X
  2280. +1159(to)X
  2281. +1263(as)X
  2282. +4 f
  2283. +1372(link)X
  2284. +1556(editing)X
  2285. +1 f
  2286. +1858(or)X
  2287. +1967(simply)X
  2288. +4 f
  2289. +2257(linking)X
  2290. +1 f
  2291. +2540(.)X
  2292. +2616(This)X
  2293. +2815(activity)X
  2294. +3133(maps)X
  2295. +3364(each)X
  2296. +3569(module)X
  2297. +3886(to)X
  2298. +3989(a)X
  2299. +576 1320(section)N
  2300. +883(of)X
  2301. +997(the)X
  2302. +1149(virtual)X
  2303. +1436(address)X
  2304. +1759(space,)X
  2305. +2032(resolves)X
  2306. +2382(global)X
  2307. +2658(symbol)X
  2308. +2976(references)X
  2309. +3407(across)X
  2310. +3682(modules,)X
  2311. +576 1472(and)N
  2312. +764(allocates)X
  2313. +1151(storage)X
  2314. +1478(for)X
  2315. +1639(the)X
  2316. +1806(global)X
  2317. +2095(data)X
  2318. +2304(structures.)X
  2319. +2774(Each)X
  2320. +3015(module)X
  2321. +3352(is)X
  2322. +3464(then)X
  2323. +3678(relocated)X
  2324. +576 1624(accordingly)N
  2325. +1055(and)X
  2326. +1218(the)X
  2327. +1360(results)X
  2328. +1635(are)X
  2329. +1777(written)X
  2330. +2074(out)X
  2331. +2221(to)X
  2332. +2320(a)X
  2333. +2387(\256le)X
  2334. +2534(in)X
  2335. +2633(the)X
  2336. +2775(executable)X
  2337. +3212(format.)X
  2338. +776 1804(Object)N
  2339. +1068(modules)X
  2340. +1429(to)X
  2341. +1539(be)X
  2342. +1665(linked)X
  2343. +1941(together)X
  2344. +2292(can)X
  2345. +2462(be)X
  2346. +2589(taken)X
  2347. +2834(from)X
  2348. +3057(individual)X
  2349. +3484(object)X
  2350. +3756(\256les)X
  2351. +3952(or)X
  2352. +576 1956(library)N
  2353. +860(\256les.)X
  2354. +1095(A)X
  2355. +1191(typical)X
  2356. +1481(link)X
  2357. +1658(editor)X
  2358. +1910(usually)X
  2359. +2215(handle)X
  2360. +2499(these)X
  2361. +2724(two)X
  2362. +2895(types)X
  2363. +3125(of)X
  2364. +3232(\256les)X
  2365. +3418(differently.)X
  2366. +3899(For)X
  2367. +576 2108(a)N
  2368. +653(simple)X
  2369. +944(object)X
  2370. +1214(\256le,)X
  2371. +1395(the)X
  2372. +1548(object)X
  2373. +1819(module)X
  2374. +2143(it)X
  2375. +2232(contains)X
  2376. +2588(is)X
  2377. +2687(always)X
  2378. +2989(loaded)X
  2379. +3281(into)X
  2380. +3466(the)X
  2381. +3619(executable)X
  2382. +576 2260(\256le.)N
  2383. +777(For)X
  2384. +940(a)X
  2385. +1013(library)X
  2386. +1299(\256le,)X
  2387. +1475(since)X
  2388. +1702(not)X
  2389. +1854(all)X
  2390. +1980(modules)X
  2391. +2335(it)X
  2392. +2418(contains)X
  2393. +2768(are)X
  2394. +2915(generally)X
  2395. +3303(needed,)X
  2396. +3629(only)X
  2397. +3829(those)X
  2398. +576 2412(modules)N
  2399. +938(de\256ning)X
  2400. +1289(an)X
  2401. +1416(unresolved)X
  2402. +1874(external)X
  2403. +2221(reference)X
  2404. +2616(are)X
  2405. +2770(loaded.)X
  2406. +3111(Since)X
  2407. +3361(a)X
  2408. +3440(module)X
  2409. +3765(from)X
  2410. +3989(a)X
  2411. +576 2564(library)N
  2412. +860(may)X
  2413. +1053(itself)X
  2414. +1273(contain)X
  2415. +1583(references)X
  2416. +2005(to)X
  2417. +2106(other)X
  2418. +2330(modules,)X
  2419. +2706(loading)X
  2420. +3021(it)X
  2421. +3101(may)X
  2422. +3293(generate)X
  2423. +3646(additional)X
  2424. +576 2716(external)N
  2425. +917(references.)X
  2426. +1391(Therefore,)X
  2427. +1825(link)X
  2428. +2005(editors)X
  2429. +2297(are)X
  2430. +2445(responsible)X
  2431. +2913(to)X
  2432. +3019(search)X
  2433. +3296(through)X
  2434. +3626(the)X
  2435. +3775(library)X
  2436. +576 2868(\256les)N
  2437. +760(to)X
  2438. +859(ensure)X
  2439. +1134(all)X
  2440. +1255(required)X
  2441. +1600(modules)X
  2442. +1950(are)X
  2443. +2092(loaded.)X
  2444. +776 3048(The)N
  2445. +958(ability)X
  2446. +1237(for)X
  2447. +1381(a)X
  2448. +1456(linker)X
  2449. +1713(to)X
  2450. +1820 0.2812(automatically)AX
  2451. +2378(select)X
  2452. +2630(and)X
  2453. +2801(load)X
  2454. +2999(only)X
  2455. +3202(the)X
  2456. +3352(required)X
  2457. +3706(modules)X
  2458. +576 3200(from)N
  2459. +800(a)X
  2460. +880(library)X
  2461. +1174(\256le)X
  2462. +1334(is)X
  2463. +1435(very)X
  2464. +1643(important:)X
  2465. +2106(it)X
  2466. +2197(alleviates)X
  2467. +2599(the)X
  2468. +2753(need)X
  2469. +2971(for)X
  2470. +3119(a)X
  2471. +3198(user)X
  2472. +3394(to)X
  2473. +3505(keep)X
  2474. +3723(track)X
  2475. +3952(of)X
  2476. +576 3352(which)N
  2477. +842(modules)X
  2478. +1199(are)X
  2479. +1348(required.)X
  2480. +1748(However,)X
  2481. +2155(the)X
  2482. +2304(executable)X
  2483. +2748(\256le)X
  2484. +2902(might)X
  2485. +3159(still)X
  2486. +3336(contain)X
  2487. +3652(inaccessi-)X
  2488. +576 3504(ble)N
  2489. +730(functions)X
  2490. +1124(or)X
  2491. +1240(data)X
  2492. +1437(because)X
  2493. +1778(even)X
  2494. +1996(if)X
  2495. +2091(only)X
  2496. +2298(one)X
  2497. +2473(of)X
  2498. +2589(the)X
  2499. +2743(functions)X
  2500. +3137(de\256ned)X
  2501. +3456(in)X
  2502. +3566(a)X
  2503. +3644(module)X
  2504. +3968(is)X
  2505. +576 3656(needed,)N
  2506. +897(the)X
  2507. +1039(linker)X
  2508. +1288(loads)X
  2509. +1515(complete)X
  2510. +1893(the)X
  2511. +2035(module.)X
  2512. +776 3836(Figure)N
  2513. +1060(1)X
  2514. +1141(shows)X
  2515. +1413(an)X
  2516. +1537(example)X
  2517. +1898(of)X
  2518. +2012(linking)X
  2519. +2319(3)X
  2520. +2401(\256les:)X
  2521. +5 f
  2522. +2644(main.o)X
  2523. +1 f
  2524. +2881(,)X
  2525. +5 f
  2526. +2937(sub.o)X
  2527. +1 f
  2528. +3130(,)X
  2529. +3188(and)X
  2530. +5 f
  2531. +3359(libc.a)X
  2532. +1 f
  2533. +3542(.)X
  2534. +5 f
  2535. +3622(Main.o)X
  2536. +1 f
  2537. +3893(and)X
  2538. +5 f
  2539. +576 3988(sub.o)N
  2540. +1 f
  2541. +799(are)X
  2542. +947(object)X
  2543. +1213(\256les)X
  2544. +1402(and)X
  2545. +5 f
  2546. +1568(libc.a)X
  2547. +1 f
  2548. +1780(is)X
  2549. +1873(a)X
  2550. +1945(library)X
  2551. +2231(archive,)X
  2552. +2568(containing)X
  2553. +3004(object)X
  2554. +3269(\256les)X
  2555. +5 f
  2556. +3456(lib1.o)X
  2557. +1 f
  2558. +3644(,)X
  2559. +5 f
  2560. +3695(lib2.o)X
  2561. +1 f
  2562. +3883(,)X
  2563. +3936(...,)X
  2564. +5 f
  2565. +576 4140(libn.o)N
  2566. +1 f
  2567. +764(.)X
  2568. +847(As)X
  2569. +988(shown)X
  2570. +1273(in)X
  2571. +1383(the)X
  2572. +1536(\256gure,)X
  2573. +5 f
  2574. +1817(main.o)X
  2575. +1 f
  2576. +2089(contains)X
  2577. +2445(references)X
  2578. +2876(to)X
  2579. +5 f
  2580. +2985(sub.o)X
  2581. +1 f
  2582. +3214(and)X
  2583. +3389(the)X
  2584. +3543(function)X
  2585. +5 f
  2586. +3898(foo)X
  2587. +1 f
  2588. +4008(,)X
  2589. +576 4292(which)N
  2590. +839(is)X
  2591. +931(de\256ned)X
  2592. +1242(in)X
  2593. +5 f
  2594. +1343(lib1.o)X
  2595. +1 f
  2596. +1531(.)X
  2597. +1607(Function)X
  2598. +5 f
  2599. +1975(goo)X
  2600. +1 f
  2601. +2107(,)X
  2602. +2159(also)X
  2603. +2342(de\256ned)X
  2604. +2653(in)X
  2605. +5 f
  2606. +2754(lib1.o)X
  2607. +1 f
  2608. +2942(,)X
  2609. +2994(contains)X
  2610. +3343(a)X
  2611. +3414(reference)X
  2612. +3800(to)X
  2613. +5 f
  2614. +3900(hoo)X
  2615. +1 f
  2616. +576 4444(de\256ned)N
  2617. +892(in)X
  2618. +5 f
  2619. +998(lib2.o)X
  2620. +1 f
  2621. +1186(.)X
  2622. +1267(Since)X
  2623. +1514(the)X
  2624. +1665(smallest)X
  2625. +2014(unit)X
  2626. +2197(of)X
  2627. +2310(linking)X
  2628. +2617(is)X
  2629. +2715(an)X
  2630. +2840(object)X
  2631. +3110(module,)X
  2632. +5 f
  2633. +3455(lib1.o)X
  2634. +1 f
  2635. +3677(is)X
  2636. +3775(loaded)X
  2637. +576 4596(completely)N
  2638. +1046(into)X
  2639. +1237(the)X
  2640. +1396(executable)X
  2641. +1850(\256le,)X
  2642. +2038(even)X
  2643. +2261(though)X
  2644. +5 f
  2645. +2567(goo)X
  2646. +1 f
  2647. +2740(is)X
  2648. +2845(actually)X
  2649. +3191(not)X
  2650. +3354(referenced)X
  2651. +3801(at)X
  2652. +3911(all.)X
  2653. +576 4748(Furthermore,)N
  2654. +5 f
  2655. +1105(lib2.o)X
  2656. +1 f
  2657. +1319(is)X
  2658. +1409(also)X
  2659. +1590(loaded)X
  2660. +1874(because)X
  2661. +2206(it)X
  2662. +2287(de\256nes)X
  2663. +5 f
  2664. +2584(hoo)X
  2665. +1 f
  2666. +2716(,)X
  2667. +2767(which)X
  2668. +3029(is)X
  2669. +3120(referenced)X
  2670. +3554(by)X
  2671. +5 f
  2672. +3675(goo)X
  2673. +1 f
  2674. +3807(.)X
  2675. +3882(The)X
  2676. +576 4900(resultant)N
  2677. +932(executable)X
  2678. +1369(\256le)X
  2679. +1516(generated)X
  2680. +1915(will)X
  2681. +2089(contain)X
  2682. +2397(4)X
  2683. +2469(modules:)X
  2684. +5 f
  2685. +2868(main.o)X
  2686. +1 f
  2687. +3105(,)X
  2688. +5 f
  2689. +3151(sub.o)X
  2690. +1 f
  2691. +3344(,)X
  2692. +5 f
  2693. +3390(lib1.o)X
  2694. +1 f
  2695. +3578(,)X
  2696. +3626(and)X
  2697. +5 f
  2698. +3787(lib2.o)X
  2699. +1 f
  2700. +3975(.)X
  2701. +
  2702. +5 p
  2703. +%%Page: 5 6
  2704. +5(Helvetica-Narrow)xf 5 f
  2705. +12 s 0 xH 0 xS 5 f
  2706. +2 f
  2707. +1 f
  2708. +10 s
  2709. +0 32(--)N
  2710. +4323(--)X
  2711. +12 s
  2712. +2224 616(-)N
  2713. +2280(5)X
  2714. +2352(-)X
  2715. +3362(October)X
  2716. +3696(15,)X
  2717. +3840(1990)X
  2718. +10 f
  2719. +576 1168(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)N
  2720. +20 s
  2721. +1458 2218 MXY
  2722. +108 792 Dl
  2723. +1522 2900 MXY
  2724. +44 110 Dl
  2725. +12 -118 Dl
  2726. +1674 2002 MXY
  2727. +899 -107 Dl
  2728. +2463 1937 MXY
  2729. +110 -42 Dl
  2730. +2574 1894 MXY
  2731. +-117 -14 Dl
  2732. +10 s
  2733. +1458 2794 MXY
  2734. +0 432 Dl
  2735. +612 0 Dl
  2736. +0 -432 Dl
  2737. +-612 0 Dl
  2738. +1206 1858 MXY
  2739. +576 0 Dl
  2740. +0 467 Dl
  2741. +2326 MY
  2742. +-576 0 Dl
  2743. +0 -467 Dl
  2744. +2574 3370 MXY
  2745. +0 432 Dl
  2746. +612 0 Dl
  2747. +0 -432 Dl
  2748. +-612 0 Dl
  2749. +1822 MY
  2750. +0 647 Dl
  2751. +2470 MY
  2752. +612 0 Dl
  2753. +0 -647 Dl
  2754. +1822 MY
  2755. +-612 0 Dl
  2756. +2650 MY
  2757. +0 432 Dl
  2758. +612 0 Dl
  2759. +0 -432 Dl
  2760. +-612 0 Dl
  2761. +40 s
  2762. +2394 1642 MXY
  2763. +1008 0 Dl
  2764. +0 2267 Dl
  2765. +3910 MY
  2766. +-1008 0 Dl
  2767. +0 -2267 Dl
  2768. +20 s
  2769. +3114 2254 MXY
  2770. +D~  360 323 -468 288
  2771. + D~~
  2772. +3089 2782 MXY
  2773. +-83 84 Dl
  2774. +113 -35 Dl
  2775. +7 f
  2776. +9 s
  2777. +1286 2038(call)N
  2778. +1501(foo)X
  2779. +1365 1822(main.o)N
  2780. +1603 2758(sub.o)N
  2781. +2733 3334(libn.o)N
  2782. +2611 2722(hoo\(\))N
  2783. +2690 2290(call)N
  2784. +2905(hoo)X
  2785. +2733 2614(lib2.o)N
  2786. +2733 1786(lib1.o)N
  2787. +2611 2146(goo\(\))N
  2788. +2611 1930(foo\(\))N
  2789. +2733 1534(libc.a)N
  2790. +2841 3118(.)N
  2791. +2841 3154(.)N
  2792. +2841 3226(.)N
  2793. +2 f
  2794. +12 s
  2795. +1439 4110(Figure)N
  2796. +1725(1:)X
  2797. +1853(Linking)X
  2798. +2171(of)X
  2799. +2270(object)X
  2800. +2530(and)X
  2801. +2698(library)X
  2802. +2989(\256les.)X
  2803. +10 f
  2804. +576 4414(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)N
  2805. +
  2806. +6 p
  2807. +%%Page: 6 7
  2808. +5(Helvetica-Narrow)xf 5 f
  2809. +12 s 0 xH 0 xS 5 f
  2810. +1 f
  2811. +10 s
  2812. +0 32(--)N
  2813. +4323(--)X
  2814. +12 s
  2815. +2224 616(-)N
  2816. +2280(6)X
  2817. +2352(-)X
  2818. +3362(October)X
  2819. +3696(15,)X
  2820. +3840(1990)X
  2821. +1599 1016(DYNAMIC)N
  2822. +2080(VS.)X
  2823. +2250(STATIC)X
  2824. +2610(LINKING)X
  2825. +3 f
  2826. +576 1472(Static)N
  2827. +835(linking)X
  2828. +1147(and)X
  2829. +1325(its)X
  2830. +1445(limitations)X
  2831. +1 f
  2832. +576 1652(Most)N
  2833. +798(operating)X
  2834. +1187(systems)X
  2835. +1516(assume)X
  2836. +4 f
  2837. +1824(static)X
  2838. +2058(linking)X
  2839. +1 f
  2840. +2341(.)X
  2841. +2414(That)X
  2842. +2616(is,)X
  2843. +2730(the)X
  2844. +2874(link)X
  2845. +3050(editing)X
  2846. +3344(step)X
  2847. +3525(is)X
  2848. +3615(carried)X
  2849. +3909(out)X
  2850. +576 1804(only)N
  2851. +775(once)X
  2852. +985(to)X
  2853. +1088(produce)X
  2854. +1426(an)X
  2855. +1545(executable)X
  2856. +1986(\256le,)X
  2857. +2161(which)X
  2858. +2424(is)X
  2859. +2516(loaded)X
  2860. +2801(directly)X
  2861. +3124(into)X
  2862. +3302(memory)X
  2863. +3651(when)X
  2864. +3887(it)X
  2865. +3968(is)X
  2866. +576 1956(executed.)N
  2867. +997(During)X
  2868. +1299(the)X
  2869. +1447(lifetime)X
  2870. +1778(of)X
  2871. +1888(an)X
  2872. +2009(executing)X
  2873. +2414(process,)X
  2874. +2756(the)X
  2875. +2904(\(virtual\))X
  2876. +3250(locations)X
  2877. +3628(of)X
  2878. +3738(the)X
  2879. +3887(text)X
  2880. +576 2108(and)N
  2881. +748(data)X
  2882. +942(segments)X
  2883. +1333(cannot)X
  2884. +1623(change.)X
  2885. +1977(As)X
  2886. +2116(a)X
  2887. +2192(result,)X
  2888. +2463(these)X
  2889. +2694(operating)X
  2890. +3091(systems)X
  2891. +3427(can)X
  2892. +3593(safely)X
  2893. +3855(allo-)X
  2894. +576 2260(cate)N
  2895. +756(the)X
  2896. +898(remaining)X
  2897. +1313(address)X
  2898. +1625(space)X
  2899. +1863(for)X
  2900. +1999(the)X
  2901. +2141(stack)X
  2902. +2363(and)X
  2903. +2526(dynamic)X
  2904. +2882(data)X
  2905. +3067(storage)X
  2906. +3369(area.)X
  2907. +776 2440(Systems)N
  2908. +1127(that)X
  2909. +1303(employ)X
  2910. +1623(static)X
  2911. +1858(linking)X
  2912. +2162(require)X
  2913. +2466(all)X
  2914. +2594(global)X
  2915. +2867(symbols)X
  2916. +3219(to)X
  2917. +3326(be)X
  2918. +3449(well)X
  2919. +3647(de\256ned)X
  2920. +3962(at)X
  2921. +576 2592(link)N
  2922. +753(time.)X
  2923. +1000(This)X
  2924. +1198(requirement)X
  2925. +1690(is)X
  2926. +1780(a)X
  2927. +1849(disadvantage)X
  2928. +2378(because)X
  2929. +2709(all)X
  2930. +2832(object)X
  2931. +3094(and)X
  2932. +3259(library)X
  2933. +3542(\256les)X
  2934. +3728(must)X
  2935. +3941(be)X
  2936. +576 2744(available)N
  2937. +957(during)X
  2938. +1240(the)X
  2939. +1390(construction)X
  2940. +1898(of)X
  2941. +2010(an)X
  2942. +2133(executable)X
  2943. +2578(\256le.)X
  2944. +2782(As)X
  2945. +2921(a)X
  2946. +2997(result,)X
  2947. +3268(it)X
  2948. +3355(is)X
  2949. +3452(dif\256cult)X
  2950. +3790(to)X
  2951. +3898(test)X
  2952. +576 2896(and)N
  2953. +747(debug)X
  2954. +1014(portions)X
  2955. +1361(of)X
  2956. +1473(a)X
  2957. +1547(large)X
  2958. +1771(program)X
  2959. +2128 0.2604(incrementally)AX
  2960. +2690(before)X
  2961. +2967(the)X
  2962. +3116(whole)X
  2963. +3382(program)X
  2964. +3739(is)X
  2965. +3834(com-)X
  2966. +576 3048(pletely)N
  2967. +870(written.)X
  2968. +10 s
  2969. +1167 3008(\262)N
  2970. +12 s
  2971. +1238 3048(Furthermore,)N
  2972. +1774(the)X
  2973. +1924(entire)X
  2974. +2176(program)X
  2975. +2534(has)X
  2976. +2694(to)X
  2977. +2801(be)X
  2978. +2924(relinked)X
  2979. +3272(if)X
  2980. +3363(any)X
  2981. +3534(of)X
  2982. +3646(the)X
  2983. +3796(object)X
  2984. +576 3200(modules)N
  2985. +950(are)X
  2986. +1116(modi\256ed,)X
  2987. +1530(or)X
  2988. +1658(if)X
  2989. +1765(new)X
  2990. +1973(modules)X
  2991. +2347(are)X
  2992. +2513(to)X
  2993. +2635(be)X
  2994. +2773(added.)X
  2995. +3098(Relinking)X
  2996. +3525(of)X
  2997. +3652(all)X
  2998. +3796(object)X
  2999. +576 3352(modules)N
  3000. +938(can)X
  3001. +1108(be)X
  3002. +1235(very)X
  3003. +1442(time)X
  3004. +1650(consuming.)X
  3005. +2156(But)X
  3006. +2331(unfortunately)X
  3007. +2886(with)X
  3008. +3094(static)X
  3009. +3335(linking,)X
  3010. +3669(it)X
  3011. +3760(is)X
  3012. +3861(una-)X
  3013. +576 3504(voidable)N
  3014. +932(even)X
  3015. +1138(in)X
  3016. +1237(situations)X
  3017. +1630(where)X
  3018. +1889(most)X
  3019. +2100(of)X
  3020. +2204(the)X
  3021. +2346(object)X
  3022. +2606(modules)X
  3023. +2956(remain)X
  3024. +3248(unchanged.)X
  3025. +776 3684(These)N
  3026. +1033(drawbacks)X
  3027. +1471(make)X
  3028. +1707(static)X
  3029. +1938(linking)X
  3030. +2238(unsuitable)X
  3031. +2661(for)X
  3032. +2800(certain)X
  3033. +3090(applications.)X
  3034. +3631(For)X
  3035. +3791(exam-)X
  3036. +576 3836(ple,)N
  3037. +747(a)X
  3038. +819(graph)X
  3039. +1066(plotting)X
  3040. +1394(program)X
  3041. +1748(may)X
  3042. +1942(permit)X
  3043. +2222(users)X
  3044. +2447(to)X
  3045. +2550(specify)X
  3046. +2856(their)X
  3047. +3061(own)X
  3048. +3254(arithmetic)X
  3049. +3674(functions)X
  3050. +576 3988(to)N
  3051. +675(be)X
  3052. +790(plotted.)X
  3053. +1130(It)X
  3054. +1213(would)X
  3055. +1477(be)X
  3056. +1592(most)X
  3057. +1803(convenient)X
  3058. +2250(if)X
  3059. +2333(users)X
  3060. +2554(could)X
  3061. +2792(de\256ne)X
  3062. +3051(their)X
  3063. +3252(own)X
  3064. +3441(functions)X
  3065. +3824(using)X
  3066. +576 4140(the)N
  3067. +735(programming)X
  3068. +1300(language)X
  3069. +1689(with)X
  3070. +1901(which)X
  3071. +2177(they)X
  3072. +2384(were)X
  3073. +2611(most)X
  3074. +2838(familiar,)X
  3075. +3208(and)X
  3076. +3387(then)X
  3077. +3593(incorporate)X
  3078. +576 4292(these)N
  3079. +809(new)X
  3080. +1004(functions)X
  3081. +1397(into)X
  3082. +1582(the)X
  3083. +1736(plotting)X
  3084. +2072(program.)X
  3085. +2482(However,)X
  3086. +2894(the)X
  3087. +3048(use)X
  3088. +3212(of)X
  3089. +3328(static)X
  3090. +3568(linking)X
  3091. +3877(pre-)X
  3092. +576 4444(cludes)N
  3093. +852(this)X
  3094. +1021(obvious)X
  3095. +1355(approach)X
  3096. +1738(because)X
  3097. +2073(the)X
  3098. +2221(text)X
  3099. +2395(segment)X
  3100. +2745(of)X
  3101. +2854(a)X
  3102. +2926(program)X
  3103. +3281(cannot)X
  3104. +3567(be)X
  3105. +3687(changed.)X
  3106. +576 4596(Instead,)N
  3107. +919(most)X
  3108. +1147(plotting)X
  3109. +1488(programs)X
  3110. +1892(incorporate)X
  3111. +2372(their)X
  3112. +2590(own)X
  3113. +2797(special)X
  3114. +3107(interpreted)X
  3115. +3567(language)X
  3116. +3957(in)X
  3117. +576 4748(which)N
  3118. +847(users)X
  3119. +1079(de\256ne)X
  3120. +1349(their)X
  3121. +1561(own)X
  3122. +1761(functions.)X
  3123. +2202(Consequently,)X
  3124. +2790(users)X
  3125. +3022(are)X
  3126. +3175(forced)X
  3127. +3456(to)X
  3128. +3566(learn)X
  3129. +3794(a)X
  3130. +3872(new)X
  3131. +576 4900(language,)N
  3132. +979(which)X
  3133. +1245(might)X
  3134. +1501(not)X
  3135. +1655(be)X
  3136. +1777(as)X
  3137. +1888(powerful)X
  3138. +2266(as)X
  3139. +2377(a)X
  3140. +2452(general)X
  3141. +2768(purpose)X
  3142. +3104(programming)X
  3143. +3660(language,)X
  3144. +576 5052(thus)N
  3145. +769(limiting)X
  3146. +1108(the)X
  3147. +1259(expressiveness)X
  3148. +1863(of)X
  3149. +1976(the)X
  3150. +2126(users.)X
  3151. +2403(Furthermore,)X
  3152. +2940(the)X
  3153. +3090(design)X
  3154. +3373(and)X
  3155. +3544(implementa-)X
  3156. +576 5204(tion)N
  3157. +753(of)X
  3158. +860(an)X
  3159. +978(interpreter)X
  3160. +1407(for)X
  3161. +1546(such)X
  3162. +1749(a)X
  3163. +1819(language)X
  3164. +2195(increases)X
  3165. +2576(the)X
  3166. +2722(complexity)X
  3167. +3184(and)X
  3168. +3351(development)X
  3169. +3877(cost)X
  3170. +576 5356(of)N
  3171. +706(the)X
  3172. +873(originally)X
  3173. +1297(very)X
  3174. +1517(simple)X
  3175. +1823(program.)X
  3176. +2246(Ef\256ciency)X
  3177. +2691(of)X
  3178. +2820(the)X
  3179. +2987(program)X
  3180. +3362(is)X
  3181. +3475(also)X
  3182. +3679(degraded)X
  3183. +576 5508(because,)N
  3184. +929(in)X
  3185. +1028(general,)X
  3186. +1360(interpreted)X
  3187. +1802(code)X
  3188. +2008(executes)X
  3189. +2364(more)X
  3190. +2586(slowly)X
  3191. +2866(than)X
  3192. +3056(native)X
  3193. +3316(machine)X
  3194. +3667(code.)X
  3195. +10 s
  3196. +10 f
  3197. +576 5604(h)N
  3198. +592(hhhhhhhhhhhhhh)X
  3199. +1 f
  3200. +656 5714(\262)N
  3201. +736(The)X
  3202. +881(best)X
  3203. +1030(a)X
  3204. +1086(programmer)X
  3205. +1503(can)X
  3206. +1635(do)X
  3207. +1735(is)X
  3208. +1808(to)X
  3209. +1890(write)X
  3210. +2075(dummy)X
  3211. +2339(routines)X
  3212. +2617(for)X
  3213. +2731(the)X
  3214. +2849(un\256nished)X
  3215. +3202(part.)X
  3216. +
  3217. +7 p
  3218. +%%Page: 7 8
  3219. +5(Helvetica-Narrow)xf 5 f
  3220. +10 s 0 xH 0 xS 5 f
  3221. +12 s
  3222. +1 f
  3223. +10 s
  3224. +0 32(--)N
  3225. +4323(--)X
  3226. +12 s
  3227. +2224 616(-)N
  3228. +2280(7)X
  3229. +2352(-)X
  3230. +3362(October)X
  3231. +3696(15,)X
  3232. +3840(1990)X
  3233. +3 f
  3234. +576 1016(Dynamic)N
  3235. +968(linking)X
  3236. +1 f
  3237. +576 1196(Unlike)N
  3238. +866(static)X
  3239. +1098(linking,)X
  3240. +4 f
  3241. +1424(dynamic)X
  3242. +1790(linking)X
  3243. +1 f
  3244. +2102(allows)X
  3245. +2382(a)X
  3246. +2454(process)X
  3247. +2771(to)X
  3248. +2875(add,)X
  3249. +3067(remove,)X
  3250. +3409(replace,)X
  3251. +3741(or)X
  3252. +3850(relo-)X
  3253. +576 1348(cate)N
  3254. +766(object)X
  3255. +1036(modules)X
  3256. +1396(within)X
  3257. +1676(its)X
  3258. +1801(address)X
  3259. +2123(space)X
  3260. +2371(during)X
  3261. +2656(its)X
  3262. +2781(execution.)X
  3263. +3237(In)X
  3264. +3350(other)X
  3265. +3581(words,)X
  3266. +3872(pro-)X
  3267. +576 1500(grams)N
  3268. +841(are)X
  3269. +989(allowed)X
  3270. +1324(to)X
  3271. +1429(change.)X
  3272. +1780(During)X
  3273. +2082(the)X
  3274. +2230(lifetime)X
  3275. +2561(of)X
  3276. +2671(its)X
  3277. +2792(execution,)X
  3278. +3222(a)X
  3279. +3296(program)X
  3280. +3653(may)X
  3281. +3850(have)X
  3282. +576 1652(new)N
  3283. +773(modules)X
  3284. +1135(added,)X
  3285. +1425(old)X
  3286. +1584(modules)X
  3287. +1946(removed,)X
  3288. +2343(or)X
  3289. +2459(even)X
  3290. +2677(evolve)X
  3291. +2970(into)X
  3292. +3156(a)X
  3293. +3235(completely)X
  3294. +3700(different)X
  3295. +576 1804(program.)N
  3296. +989(For)X
  3297. +1161(compiled)X
  3298. +1559(languages,)X
  3299. +2007(the)X
  3300. +2164(traditional)X
  3301. +2600(concept)X
  3302. +2939(that)X
  3303. +3123(the)X
  3304. +3281(code)X
  3305. +3503(of)X
  3306. +3623(a)X
  3307. +3706(program)X
  3308. +576 1956(does)N
  3309. +776(not)X
  3310. +923(change)X
  3311. +1220(is)X
  3312. +1308(no)X
  3313. +1428(longer)X
  3314. +1698(valid.)X
  3315. +776 2136(Some)N
  3316. +1036(existing)X
  3317. +1382(systems)X
  3318. +1727(support)X
  3319. +2056(what)X
  3320. +2284(they)X
  3321. +2491(call)X
  3322. +2672(dynamic)X
  3323. +3045(linking)X
  3324. +3359(but)X
  3325. +3524(it)X
  3326. +3620(is)X
  3327. +3726(actually)X
  3328. +576 2288(load-time)N
  3329. +971(linking.)X
  3330. +1317(For)X
  3331. +1474(example,)X
  3332. +1849(in)X
  3333. +1948(SunOS)X
  3334. +2243(version)X
  3335. +2550(4,)X
  3336. +2646(link)X
  3337. +2820(editing)X
  3338. +3112(consists)X
  3339. +3440(of)X
  3340. +3544(two)X
  3341. +3712(phases)X
  3342. +10 s
  3343. +2248(2)Y
  3344. +12 s
  3345. +2288(.)Y
  3346. +576 2440(After)N
  3347. +805(the)X
  3348. +949(static)X
  3349. +1179(link)X
  3350. +1355(phase,)X
  3351. +1624(the)X
  3352. +1768(executable)X
  3353. +2208(\256le)X
  3354. +2358(created)X
  3355. +2664(contains)X
  3356. +3012(only)X
  3357. +3210(references)X
  3358. +3633(to,)X
  3359. +3759(but)X
  3360. +3909(not)X
  3361. +576 2592(the)N
  3362. +723(actual)X
  3363. +983(code)X
  3364. +1194(for)X
  3365. +1334(the)X
  3366. +1480(library)X
  3367. +1765(routines.)X
  3368. +2151(Integration)X
  3369. +2602(of)X
  3370. +2710(these)X
  3371. +2936(routines)X
  3372. +3274(with)X
  3373. +3473(the)X
  3374. +3619(executable)X
  3375. +576 2744(\256le)N
  3376. +732(is)X
  3377. +829(carried)X
  3378. +1130(out)X
  3379. +1286(by)X
  3380. +1415(the)X
  3381. +1566(load-time)X
  3382. +1969(link)X
  3383. +2152(phase,)X
  3384. +2428(during)X
  3385. +2712(which)X
  3386. +2980(a)X
  3387. +3056(linker)X
  3388. +3314(is)X
  3389. +3412(called)X
  3390. +3677(to)X
  3391. +3786(search)X
  3392. +576 2896(and)N
  3393. +747(load)X
  3394. +945(the)X
  3395. +1095(missing)X
  3396. +1426(routines)X
  3397. +1768(from)X
  3398. +1987(the)X
  3399. +2137(library)X
  3400. +2426(before)X
  3401. +2704(control)X
  3402. +3009(is)X
  3403. +3105(passed)X
  3404. +3393(to)X
  3405. +3499(the)X
  3406. +3648(main)X
  3407. +3872(pro-)X
  3408. +576 3048(cedure.)N
  3409. +908(This)X
  3410. +1106(system)X
  3411. +1400(requires)X
  3412. +1737(all)X
  3413. +1862(global)X
  3414. +2131(symbols)X
  3415. +2479(to)X
  3416. +2582(be)X
  3417. +2701(declared)X
  3418. +3056(in)X
  3419. +3159(the)X
  3420. +3305(library,)X
  3421. +3614(though)X
  3422. +3909(not)X
  3423. +576 3200(necessarily)N
  3424. +1040(de\256ned,)X
  3425. +1383(during)X
  3426. +1670(the)X
  3427. +1824(static)X
  3428. +2064(link)X
  3429. +2250(phase.)X
  3430. +2552(After)X
  3431. +2790(execution)X
  3432. +3200(begins)X
  3433. +3486(and)X
  3434. +3660(control)X
  3435. +3968(is)X
  3436. +576 3352(passed)N
  3437. +857(to)X
  3438. +957(the)X
  3439. +1100(main)X
  3440. +1318(procedure,)X
  3441. +1753(no)X
  3442. +1875(modules)X
  3443. +2227(can)X
  3444. +2387(be)X
  3445. +2504(added)X
  3446. +2760(or)X
  3447. +2866(removed.)X
  3448. +3277(Furthermore,)X
  3449. +3808(if)X
  3450. +3893(any)X
  3451. +576 3504(external)N
  3452. +925(symbol)X
  3453. +1246(reference)X
  3454. +1642(cannot)X
  3455. +1936(be)X
  3456. +2064(resolved,)X
  3457. +2451(the)X
  3458. +2606(program)X
  3459. +2969(will)X
  3460. +3156(be)X
  3461. +3284(aborted.)X
  3462. +3658(A)X
  3463. +3764(similar)X
  3464. +576 3656(approach)N
  3465. +964(is)X
  3466. +1064(used)X
  3467. +1276(by)X
  3468. +1408(HP-UX)X
  3469. +10 s
  3470. +1700 3616(3)N
  3471. +12 s
  3472. +3656(,)Y
  3473. +1800(UNIX)X
  3474. +2075(System)X
  3475. +2394(V)X
  3476. +2499(Release)X
  3477. +2835(4)X
  3478. +10 s
  3479. +3616(4)Y
  3480. +12 s
  3481. +3656(,)Y
  3482. +2983(and)X
  3483. +3158(VMS)X
  3484. +10 s
  3485. +3365 3616(5)N
  3486. +12 s
  3487. +3656(.)Y
  3488. +3489(In)X
  3489. +3605(addition)X
  3490. +3957(to)X
  3491. +576 3808(load-time)N
  3492. +976(linking,)X
  3493. +1303(OS/2)X
  3494. +10 s
  3495. +1500 3768(6)N
  3496. +12 s
  3497. +1570 3808(also)N
  3498. +1755(supports)X
  3499. +2110(run-time)X
  3500. +2472(linking.)X
  3501. +2823(But)X
  3502. +2992(this)X
  3503. +3161(scheme)X
  3504. +3479(requires)X
  3505. +3818(much)X
  3506. +576 3960(operating)N
  3507. +968(system)X
  3508. +1263(support)X
  3509. +1580(and)X
  3510. +1748(dynamically)X
  3511. +2254(linked)X
  3512. +2524(modules)X
  3513. +2879(cannot)X
  3514. +3165(reference)X
  3515. +3553(any)X
  3516. +3721(external)X
  3517. +576 4112(symbols)N
  3518. +929(de\256ned)X
  3519. +1245(by)X
  3520. +1374(other)X
  3521. +1605(modules)X
  3522. +1964(except)X
  3523. +2249(the)X
  3524. +2400(module)X
  3525. +2722(entry)X
  3526. +2953(point.)X
  3527. +3232(Old)X
  3528. +3408(systems)X
  3529. +3744(such)X
  3530. +3952(as)X
  3531. +576 4264(MULTICS)N
  3532. +10 s
  3533. +997 4224(7)N
  3534. +12 s
  3535. +1101 4264(and)N
  3536. +1304(languages)X
  3537. +1753(such)X
  3538. +1993(as)X
  3539. +2137(COBOL)X
  3540. +2526(also)X
  3541. +2745(support)X
  3542. +3097(some)X
  3543. +3364(kind)X
  3544. +3599(of)X
  3545. +3743(\257exible)X
  3546. +576 4416(linking/loading)N
  3547. +1204(mechanism.)X
  3548. +1730(However,)X
  3549. +2145(none)X
  3550. +2371(of)X
  3551. +2489(the)X
  3552. +2645(systems)X
  3553. +2987(mentioned)X
  3554. +3432(above)X
  3555. +3700(allows)X
  3556. +3989(a)X
  3557. +576 4568(program)N
  3558. +926(to)X
  3559. +1025(dynamically)X
  3560. +1526(modify)X
  3561. +1828(its)X
  3562. +1943(functionality)X
  3563. +2460(during)X
  3564. +2735(the)X
  3565. +2877(execution.)X
  3566. +776 4748(One)N
  3567. +964(incremental)X
  3568. +1448(compilation)X
  3569. +1937(system)X
  3570. +10 s
  3571. +2204 4708(8)N
  3572. +12 s
  3573. +2272 4748(uses)N
  3574. +2466(a)X
  3575. +2538(different)X
  3576. +2899(approach:)X
  3577. +3332(it)X
  3578. +3415(provides)X
  3579. +3775(library)X
  3580. +576 4900(procedures)N
  3581. +1022(that)X
  3582. +1191(load)X
  3583. +1381(additional)X
  3584. +1791(object)X
  3585. +2051(modules)X
  3586. +2401(into)X
  3587. +2575(the)X
  3588. +2717(data)X
  3589. +2902(area)X
  3590. +3087(of)X
  3591. +3191(a)X
  3592. +3258(running)X
  3593. +3581(process)X
  3594. +3893(and)X
  3595. +576 5052(allows)N
  3596. +858(these)X
  3597. +1087(modules)X
  3598. +1444(to)X
  3599. +1550(be)X
  3600. +1673(executed.)X
  3601. +2096(This)X
  3602. +2299(system)X
  3603. +2598(does)X
  3604. +2806(not)X
  3605. +2961(relocate)X
  3606. +3299(or)X
  3607. +3411(resolve)X
  3608. +3721(external)X
  3609. +576 5204(symbol)N
  3610. +886(references.)X
  3611. +1357(Instead,)X
  3612. +1686(it)X
  3613. +1767(locates)X
  3614. +2062(every)X
  3615. +2303(symbol)X
  3616. +2612(indirectly)X
  3617. +3008(through)X
  3618. +3333(an)X
  3619. +3450(on-line)X
  3620. +3749(symbol)X
  3621. +576 5356(table)N
  3622. +799(pointed)X
  3623. +1123(to)X
  3624. +1233(by)X
  3625. +1364(a)X
  3626. +1442(special)X
  3627. +1745(reserved)X
  3628. +2106(register,)X
  3629. +2454(thus)X
  3630. +2649(causing)X
  3631. +2978(a)X
  3632. +3056(degradation)X
  3633. +3546(in)X
  3634. +3657(execution)X
  3635. +576 5508(speed.)N
  3636. +872(Furthermore,)X
  3637. +1406(this)X
  3638. +1574(system)X
  3639. +1870(requires)X
  3640. +2209(extensive)X
  3641. +2602(modi\256cation)X
  3642. +3118(to)X
  3643. +3222(the)X
  3644. +3369(compiler,)X
  3645. +3765(assem-)X
  3646. +576 5660(bler,)N
  3647. +783(and)X
  3648. +955(the)X
  3649. +1106(libraries)X
  3650. +1455(to)X
  3651. +1563(accomplish)X
  3652. +2035(this)X
  3653. +2207(special)X
  3654. +2508(addressing)X
  3655. +2952(scheme.)X
  3656. +3322(While)X
  3657. +3592(this)X
  3658. +3765(system)X
  3659. +576 5812(allows)N
  3660. +860(modules)X
  3661. +1219(to)X
  3662. +1327(be)X
  3663. +1451(added)X
  3664. +1714 0.2604(incrementally)AX
  3665. +2278(to)X
  3666. +2386(an)X
  3667. +2510(executing)X
  3668. +2918(process,)X
  3669. +3262(old)X
  3670. +3417(modules)X
  3671. +3775(cannot)X
  3672. +
  3673. +8 p
  3674. +%%Page: 8 9
  3675. +5(Helvetica-Narrow)xf 5 f
  3676. +12 s 0 xH 0 xS 5 f
  3677. +1 f
  3678. +10 s
  3679. +0 32(--)N
  3680. +4323(--)X
  3681. +12 s
  3682. +2224 616(-)N
  3683. +2280(8)X
  3684. +2352(-)X
  3685. +3362(October)X
  3686. +3696(15,)X
  3687. +3840(1990)X
  3688. +576 1016(be)N
  3689. +695(removed.)X
  3690. +1108(Consequently,)X
  3691. +1689(using)X
  3692. +1925(this)X
  3693. +2092(system)X
  3694. +2387(to)X
  3695. +2490(implement)X
  3696. +2931(applications)X
  3697. +3425(such)X
  3698. +3629(as)X
  3699. +3737(interac-)X
  3700. +576 1168(tive)N
  3701. +760(program)X
  3702. +1125(development)X
  3703. +1661(may)X
  3704. +1865(not)X
  3705. +2026(be)X
  3706. +2155(practical)X
  3707. +2526(because)X
  3708. +2869(obsolete)X
  3709. +3228(modules)X
  3710. +3592(accumulate)X
  3711. +576 1320(and)N
  3712. +739(may)X
  3713. +929(eventually)X
  3714. +1355(\256ll)X
  3715. +1486(the)X
  3716. +1628(memory)X
  3717. +1973(space.)X
  3718. +
  3719. +9 p
  3720. +%%Page: 9 10
  3721. +5(Helvetica-Narrow)xf 5 f
  3722. +12 s 0 xH 0 xS 5 f
  3723. +1 f
  3724. +10 s
  3725. +0 32(--)N
  3726. +4323(--)X
  3727. +12 s
  3728. +2224 616(-)N
  3729. +2280(9)X
  3730. +2352(-)X
  3731. +3362(October)X
  3732. +3696(15,)X
  3733. +3840(1990)X
  3734. +1445 1016(DLD)N
  3735. +1666(\320)X
  3736. +1786(A)X
  3737. +1879(GENUINE)X
  3738. +2329(DYNAMIC)X
  3739. +2810(LINKER)X
  3740. +576 1348(This)N
  3741. +773(section)X
  3742. +1072(describes)X
  3743. +1456(the)X
  3744. +1600(major)X
  3745. +1851(design)X
  3746. +2128(and)X
  3747. +2293 0.2548(implementation)AX
  3748. +2925(issues)X
  3749. +3181(of)X
  3750. +3288(a)X
  3751. +3358(software)X
  3752. +3716(package)X
  3753. +576 1500(called)N
  3754. +2 f
  3755. +838(dld)X
  3756. +1 f
  3757. +992(that)X
  3758. +1168(provides)X
  3759. +1529(all)X
  3760. +1656(the)X
  3761. +1804(functionalities)X
  3762. +2386(of)X
  3763. +2496(a)X
  3764. +2569(dynamic)X
  3765. +2931(linking)X
  3766. +3234(system.)X
  3767. +3579(The)X
  3768. +3759(current)X
  3769. +576 1652 0.2548(implementation)AN
  3770. +10 s
  3771. +1182 1612(\262)N
  3772. +12 s
  3773. +1261 1652(of)N
  3774. +2 f
  3775. +1381(dld)X
  3776. +1 f
  3777. +1544(is)X
  3778. +1648(a)X
  3779. +1731(collection)X
  3780. +2152(of)X
  3781. +2272(library)X
  3782. +2569(routines)X
  3783. +2919(that)X
  3784. +3104(are)X
  3785. +3262(called)X
  3786. +3533(by)X
  3787. +3669(programs)X
  3788. +576 1804(written)N
  3789. +879(in)X
  3790. +984(C)X
  3791. +1078(running)X
  3792. +1407(under)X
  3793. +1656(the)X
  3794. +1804(UNIX)X
  3795. +2072(operating)X
  3796. +2465(system.)X
  3797. +2809(No)X
  3798. +2955(modi\256cation)X
  3799. +3471(of)X
  3800. +3580(the)X
  3801. +3727(existing)X
  3802. +576 1956(compiler)N
  3803. +955(or)X
  3804. +1071(assembler)X
  3805. +1492(is)X
  3806. +1592(necessary.)X
  3807. +2050(The)X
  3808. +2236(standard)X
  3809. +2598(UNIX)X
  3810. +2873(system)X
  3811. +3176(linker)X
  3812. +3437(is)X
  3813. +3537(used)X
  3814. +3749(only)X
  3815. +3957(to)X
  3816. +576 2108(create)N
  3817. +837(the)X
  3818. +985(initial)X
  3819. +1241(executable)X
  3820. +1684(\256le.)X
  3821. +1885(All)X
  3822. +2038(the)X
  3823. +2186(dynamic)X
  3824. +2547(link)X
  3825. +2726(editing)X
  3826. +3023(is)X
  3827. +3116(carried)X
  3828. +3413(out)X
  3829. +3565(by)X
  3830. +3690(invoking)X
  3831. +576 2260(routines)N
  3832. +929(provided)X
  3833. +1314(by)X
  3834. +2 f
  3835. +1453(dld)X
  3836. +1 f
  3837. +1576(.)X
  3838. +1667(Although)X
  3839. +2 f
  3840. +2073(dld)X
  3841. +1 f
  3842. +2239(is)X
  3843. +2346(targeted)X
  3844. +2700(for)X
  3845. +2855(C)X
  3846. +2963(and)X
  3847. +3146(UNIX,)X
  3848. +3453(the)X
  3849. +3615(underlying)X
  3850. +576 2412(concept\320the)N
  3851. +1124(use)X
  3852. +1286(of)X
  3853. +1400(library)X
  3854. +1691(functions)X
  3855. +2082(to)X
  3856. +2190(build)X
  3857. +2421(a)X
  3858. +2497(dynamic)X
  3859. +2862(linker\320is)X
  3860. +3280(applicable)X
  3861. +3710(to)X
  3862. +3818(many)X
  3863. +576 2564(other)N
  3864. +798(programming)X
  3865. +1346(languages)X
  3866. +1755(and)X
  3867. +1918(operating)X
  3868. +2306(systems.)X
  3869. +3 f
  3870. +576 2868(An)N
  3871. +722(overview)X
  3872. +1115(of)X
  3873. +1219(dld)X
  3874. +2 f
  3875. +576 3048(Dld)N
  3876. +1 f
  3877. +('s)S
  3878. +821(two)X
  3879. +997(basic)X
  3880. +1227(operations)X
  3881. +1660(are)X
  3882. +1810(``link'')X
  3883. +2120(and)X
  3884. +2291(``unlink''.)X
  3885. +2745(It)X
  3886. +2836(also)X
  3887. +3023(provides)X
  3888. +3386(supporting)X
  3889. +3829(func-)X
  3890. +576 3200(tions)N
  3891. +787(for)X
  3892. +923(looking)X
  3893. +1241(up)X
  3894. +1361(the)X
  3895. +1503(addresses)X
  3896. +1895(of)X
  3897. +1999(global)X
  3898. +2264(symbols)X
  3899. +2608(and)X
  3900. +2771(entry)X
  3901. +2993(points)X
  3902. +3252(of)X
  3903. +3356(functions.)X
  3904. +776 3380(The)N
  3905. +958(link)X
  3906. +1140(operation)X
  3907. +1536(is)X
  3908. +1632(performed)X
  3909. +2065(by)X
  3910. +2193(the)X
  3911. +2343(function)X
  3912. +5 f
  3913. +2694(dlink\(char)X
  3914. +3056(*\256lename\))X
  3915. +1 f
  3916. +3411(,)X
  3917. +3468(where)X
  3918. +5 f
  3919. +3734(\256lename)X
  3920. +1 f
  3921. +576 3532(speci\256es)N
  3922. +934(either)X
  3923. +1181(a)X
  3924. +1251(relocatable)X
  3925. +1702(object)X
  3926. +1965(\256le)X
  3927. +2115(or)X
  3928. +2222(an)X
  3929. +2340(object)X
  3930. +2603(library.)X
  3931. +2935(If)X
  3932. +3026(the)X
  3933. +3171(speci\256ed)X
  3934. +3540(\256le)X
  3935. +3690(is)X
  3936. +3781(a)X
  3937. +3850(relo-)X
  3938. +576 3684(catable)N
  3939. +879(object)X
  3940. +1144(\256le,)X
  3941. +1320(it)X
  3942. +1403(is)X
  3943. +1496(completely)X
  3944. +1954(loaded)X
  3945. +2240(into)X
  3946. +2420(memory.)X
  3947. +2819(If)X
  3948. +2913(it)X
  3949. +2997(is)X
  3950. +3091(a)X
  3951. +3164(library)X
  3952. +3451(\256le,)X
  3953. +3628(only)X
  3954. +3829(those)X
  3955. +576 3836(modules)N
  3956. +942(de\256ning)X
  3957. +1297(an)X
  3958. +1427(unresolved)X
  3959. +1888(external)X
  3960. +2238(reference)X
  3961. +2636(are)X
  3962. +2793(loaded.)X
  3963. +3137(Since)X
  3964. +3390(a)X
  3965. +3472(module)X
  3966. +3800(in)X
  3967. +3914(the)X
  3968. +576 3988(library)N
  3969. +868(may)X
  3970. +1069(itself)X
  3971. +1297(reference)X
  3972. +1692(other)X
  3973. +1926(routines)X
  3974. +2272(in)X
  3975. +2383(the)X
  3976. +2537(library,)X
  3977. +2854(loading)X
  3978. +3179(it)X
  3979. +3269(may)X
  3980. +3471(generate)X
  3981. +3834(more)X
  3982. +576 4140(unresolved)N
  3983. +1037(external)X
  3984. +1387(references)X
  3985. +1822(\(as)X
  3986. +1973(was)X
  3987. +2161(seen)X
  3988. +2371(in)X
  3989. +2485(the)X
  3990. +2641(example)X
  3991. +3006(in)X
  3992. +3119(\256gure)X
  3993. +3381(1\).)X
  3994. +3547(Therefore,)X
  3995. +3989(a)X
  3996. +576 4292(library)N
  3997. +879(\256le)X
  3998. +1048(is)X
  3999. +1158(searched)X
  4000. +1541(repeatedly)X
  4001. +1989(until)X
  4002. +2212(a)X
  4003. +2301(scan)X
  4004. +2518(through)X
  4005. +2864(all)X
  4006. +3008(library)X
  4007. +3312(members)X
  4008. +3712(is)X
  4009. +3823(made)X
  4010. +576 4444(without)N
  4011. +901(having)X
  4012. +1194(to)X
  4013. +1300(load)X
  4014. +1497(any)X
  4015. +1667(new)X
  4016. +1858(modules.)X
  4017. +2263(Since)X
  4018. +2508(a)X
  4019. +2582(UNIX)X
  4020. +2852(process)X
  4021. +3171(cannot)X
  4022. +3458(expand)X
  4023. +3766(its)X
  4024. +3887(text)X
  4025. +576 4596(segment,)N
  4026. +5 f
  4027. +948(dlink)X
  4028. +1 f
  4029. +1138(allocates)X
  4030. +1506(storage)X
  4031. +1814(for)X
  4032. +1956(all)X
  4033. +2083(these)X
  4034. +2311(new)X
  4035. +2501(modules)X
  4036. +2857(from)X
  4037. +3074(the)X
  4038. +3222(dynamic)X
  4039. +3584(data)X
  4040. +3775(area\320)X
  4041. +576 4748(the)N
  4042. +2 f
  4043. +735(heap)X
  4044. +1 f
  4045. +922(\320using)X
  4046. +5 f
  4047. +1265(malloc)X
  4048. +1 f
  4049. +1492(,)X
  4050. +1557(UNIX's)X
  4051. +1906(memory)X
  4052. +2268(allocator)X
  4053. +2647(\(assuming)X
  4054. +3083(the)X
  4055. +3241(system)X
  4056. +3548(has)X
  4057. +3716(writable)X
  4058. +576 4900(executable)N
  4059. +1016(memory\).)X
  4060. +1444(After)X
  4061. +1674(all)X
  4062. +1798(modules)X
  4063. +2151(are)X
  4064. +2296(loaded,)X
  4065. +5 f
  4066. +2602(dlink)X
  4067. +1 f
  4068. +2790(resolves)X
  4069. +3132(as)X
  4070. +3239(many)X
  4071. +3480(external)X
  4072. +3818(refer-)X
  4073. +576 5052(ences)N
  4074. +817(as)X
  4075. +924(possible.)X
  4076. +1314(Note)X
  4077. +1528(that)X
  4078. +1699(some)X
  4079. +1928(symbols)X
  4080. +2274(might)X
  4081. +2525(still)X
  4082. +2696(be)X
  4083. +2813(unde\256ned)X
  4084. +3218(at)X
  4085. +3314(this)X
  4086. +3479(stage,)X
  4087. +3727(because)X
  4088. +576 5204(the)N
  4089. +718(modules)X
  4090. +1068(de\256ning)X
  4091. +1407(them)X
  4092. +1624(have)X
  4093. +1830(not)X
  4094. +1977(yet)X
  4095. +2119(been)X
  4096. +2325(loaded.)X
  4097. +10 s
  4098. +10 f
  4099. +576 5402(h)N
  4100. +592(hhhhhhhhhhhhhh)X
  4101. +1 f
  4102. +656 5512(\262)N
  4103. +736(A)X
  4104. +816(number)X
  4105. +1083(of)X
  4106. +1172(functions)X
  4107. +1492(in)X
  4108. +1577(the)X
  4109. +1698(current)X
  4110. +1949(implementation)X
  4111. +2474(of)X
  4112. +2 f
  4113. +2564(dld)X
  4114. +1 f
  4115. +2689(are)X
  4116. +2811(borrowed)X
  4117. +3142(and)X
  4118. +3281(modi\256ed)X
  4119. +3588(from)X
  4120. +576 5608(the)N
  4121. +2 f
  4122. +694(ld)X
  4123. +1 f
  4124. +776(link)X
  4125. +920(editor)X
  4126. +1127(developed)X
  4127. +1477(by)X
  4128. +1577(the)X
  4129. +1695(GNU)X
  4130. +1889(project)X
  4131. +2132(of)X
  4132. +2219(the)X
  4133. +2337(Free)X
  4134. +2500(Software)X
  4135. +2810(Foundation.)X
  4136. +
  4137. +10 p
  4138. +%%Page: 10 11
  4139. +5(Helvetica-Narrow)xf 5 f
  4140. +10 s 0 xH 0 xS 5 f
  4141. +12 s
  4142. +1 f
  4143. +10 s
  4144. +0 32(--)N
  4145. +4323(--)X
  4146. +12 s
  4147. +2200 616(-)N
  4148. +2256(10)X
  4149. +2376(-)X
  4150. +3362(October)X
  4151. +3696(15,)X
  4152. +3840(1990)X
  4153. +776 1016(Unlinking)N
  4154. +1212(a)X
  4155. +1301(module)X
  4156. +1636(is)X
  4157. +1746(simply)X
  4158. +2055(the)X
  4159. +2220(reverse)X
  4160. +2545(of)X
  4161. +2672(the)X
  4162. +2837(link)X
  4163. +3034(operation.)X
  4164. +3493(The)X
  4165. +3690(speci\256ed)X
  4166. +576 1168(module)N
  4167. +892(is)X
  4168. +983(removed)X
  4169. +1347(and)X
  4170. +1513(the)X
  4171. +1658(memory)X
  4172. +2006(allocated)X
  4173. +2382(to)X
  4174. +2484(it)X
  4175. +2565(is)X
  4176. +2655(reclaimed.)X
  4177. +3110(Additionally,)X
  4178. +3647(resolution)X
  4179. +576 1320(of)N
  4180. +684(external)X
  4181. +1023(references)X
  4182. +1447(must)X
  4183. +1662(be)X
  4184. +1781(undone.)X
  4185. +2140(For)X
  4186. +2301(instance,)X
  4187. +2669(if)X
  4188. +2756(the)X
  4189. +2902(module)X
  4190. +5 f
  4191. +3217(foo)X
  4192. +1 f
  4193. +3355(is)X
  4194. +3447(to)X
  4195. +3551(be)X
  4196. +3671(unlinked,)X
  4197. +576 1472(all)N
  4198. +713(references)X
  4199. +1149(to)X
  4200. +1264(any)X
  4201. +1443(symbols)X
  4202. +1802(de\256ned)X
  4203. +2124(in)X
  4204. +5 f
  4205. +2236(foo)X
  4206. +1 f
  4207. +2385(from)X
  4208. +2611(other)X
  4209. +2848(parts)X
  4210. +3074(of)X
  4211. +3193(the)X
  4212. +3350(program)X
  4213. +3715(must)X
  4214. +3941(be)X
  4215. +576 1624(marked)N
  4216. +953(``unde\256ned''.)X
  4217. +2 f
  4218. +1596(Dld)X
  4219. +1 f
  4220. +1828(provides)X
  4221. +2247(two)X
  4222. +2479(functions)X
  4223. +2925(for)X
  4224. +3126(unlinking)X
  4225. +3584(a)X
  4226. +3716(module:)X
  4227. +5 f
  4228. +576 1776(unlink_by_\256le\(char)N
  4229. +1253(*\256lename,)X
  4230. +1626(int)X
  4231. +1748(hard\))X
  4232. +1 f
  4233. +1973(and)X
  4234. +5 f
  4235. +2150(unlink_by_symbol\(char)X
  4236. +2976(*symbol,)X
  4237. +3300(int)X
  4238. +3421(hard\))X
  4239. +1 f
  4240. +3605(.)X
  4241. +3693(The)X
  4242. +3883(\256rst)X
  4243. +576 1928(function)N
  4244. +942(requires)X
  4245. +1297(as)X
  4246. +1422(a)X
  4247. +1511(parameter)X
  4248. +1943(the)X
  4249. +2107(\256lename)X
  4250. +2485(corresponding)X
  4251. +3081(to)X
  4252. +3202(a)X
  4253. +3291(module)X
  4254. +3626(previously)X
  4255. +576 2080(linked)N
  4256. +844(in)X
  4257. +946(by)X
  4258. +5 f
  4259. +1067(dlink)X
  4260. +1 f
  4261. +1228(,)X
  4262. +1279(while)X
  4263. +1520(the)X
  4264. +1665(second)X
  4265. +1959(function)X
  4266. +2307(unlinks)X
  4267. +2617(the)X
  4268. +2762(module)X
  4269. +3077(that)X
  4270. +3248(de\256nes)X
  4271. +3546(the)X
  4272. +3690(speci\256ed)X
  4273. +576 2232(symbol.)N
  4274. +776 2412(Figure)N
  4275. +1058(2)X
  4276. +1137(shows)X
  4277. +1407(a)X
  4278. +1481(simple)X
  4279. +1770(example)X
  4280. +2129(illustrating)X
  4281. +2579(some)X
  4282. +2814(of)X
  4283. +2926(the)X
  4284. +2 f
  4285. +3076(dld)X
  4286. +1 f
  4287. +3231(functions.)X
  4288. +3669(This)X
  4289. +3872(pro-)X
  4290. +576 2564(gram)N
  4291. +805(repeatedly)X
  4292. +1238(reads)X
  4293. +1472(from)X
  4294. +1690(the)X
  4295. +1839(standard)X
  4296. +2195(input)X
  4297. +2423(the)X
  4298. +2571(name)X
  4299. +2810(of)X
  4300. +2920(an)X
  4301. +3041(object)X
  4302. +3307(\256le)X
  4303. +3460(and)X
  4304. +3629(that)X
  4305. +3804(of)X
  4306. +3914(the)X
  4307. +576 2716(user)N
  4308. +763(function)X
  4309. +1111(to)X
  4310. +1213(be)X
  4311. +1331(executed.)X
  4312. +1749(It)X
  4313. +1835(then)X
  4314. +2029(links)X
  4315. +2244(in)X
  4316. +2347(the)X
  4317. +2493(speci\256ed)X
  4318. +2863(\256le,)X
  4319. +3038(executes)X
  4320. +3398(the)X
  4321. +3544(named)X
  4322. +3829(func-)X
  4323. +576 2868(tion,)N
  4324. +774(and)X
  4325. +937(\256nally)X
  4326. +1207(removes)X
  4327. +1557(it)X
  4328. +1635(from)X
  4329. +1846(the)X
  4330. +1988(memory.)X
  4331. +776 3048(On)N
  4332. +920(line)X
  4333. +1092(13,)X
  4334. +1239(the)X
  4335. +1384(function)X
  4336. +5 f
  4337. +1730(dld_init\(char)X
  4338. +2183(*\256lename\))X
  4339. +1 f
  4340. +2565(performs)X
  4341. +2940(the)X
  4342. +3086(required)X
  4343. +3435 0.2788(initialization)AX
  4344. +3952(of)X
  4345. +576 3200(the)N
  4346. +2 f
  4347. +721(dld)X
  4348. +1 f
  4349. +871(package.)X
  4350. +1262(It)X
  4351. +1348(takes)X
  4352. +1573(as)X
  4353. +1680(argument)X
  4354. +2071(the)X
  4355. +2216(initial)X
  4356. +2469(executable)X
  4357. +2909(\256le)X
  4358. +3059(of)X
  4359. +3166(the)X
  4360. +3311(program)X
  4361. +3664(and)X
  4362. +3829(loads)X
  4363. +576 3352(the)N
  4364. +731(symbol)X
  4365. +1051(table)X
  4366. +1276(information)X
  4367. +1768(of)X
  4368. +1885(this)X
  4369. +2061(\256le)X
  4370. +2221(into)X
  4371. +2409(memory.)X
  4372. +2816(Line)X
  4373. +3031(24)X
  4374. +3165(demonstrates)X
  4375. +3711(how)X
  4376. +3914(the)X
  4377. +576 3504(entry)N
  4378. +815(point)X
  4379. +1054(of)X
  4380. +1175(a)X
  4381. +1259 0.2022(dynamically-linked)AX
  4382. +2050(function)X
  4383. +2411(can)X
  4384. +2585(be)X
  4385. +2716(obtained.)X
  4386. +3136(The)X
  4387. +3326(value)X
  4388. +3575(returned)X
  4389. +3936(by)X
  4390. +5 f
  4391. +576 3656(get_func\(char)N
  4392. +1080(*func_name\))X
  4393. +1 f
  4394. +1559(can)X
  4395. +1725(later)X
  4396. +1929(be)X
  4397. +2052(used)X
  4398. +2260(as)X
  4399. +2372(a)X
  4400. +2447(pointer)X
  4401. +2752(to)X
  4402. +2859(the)X
  4403. +3009(function,)X
  4404. +3386(as)X
  4405. +3498(shown)X
  4406. +3780(in)X
  4407. +3887(line)X
  4408. +576 3808(27.)N
  4409. +786(The)X
  4410. +1002(predicate)X
  4411. +1422(function)X
  4412. +5 f
  4413. +1807(function_executable_p\(char)X
  4414. +2797(*func_name\))X
  4415. +1 f
  4416. +3311(tells)X
  4417. +3538(whether)X
  4418. +3914(the)X
  4419. +576 3960(speci\256ed)N
  4420. +958(function)X
  4421. +1319(can)X
  4422. +1493(be)X
  4423. +1624(safely)X
  4424. +1894(executed,)X
  4425. +2301(i.e.,)X
  4426. +2484(whether)X
  4427. +2835(the)X
  4428. +2994(execution)X
  4429. +3410(of)X
  4430. +3531(this)X
  4431. +3711(function)X
  4432. +576 4112(might)N
  4433. +827(lead)X
  4434. +1014(to)X
  4435. +1115(referencing)X
  4436. +1580(any)X
  4437. +1745(unde\256ned)X
  4438. +2149(symbols.)X
  4439. +2542(The)X
  4440. +2717(precise)X
  4441. +3015(de\256nition)X
  4442. +3409(of)X
  4443. +3514(this)X
  4444. +3678(predicate)X
  4445. +576 4264(function)N
  4446. +926(is)X
  4447. +1019(described)X
  4448. +1417(later.)X
  4449. +1666(In)X
  4450. +1775(this)X
  4451. +1943(example)X
  4452. +2299(\(line)X
  4453. +2505(29\),)X
  4454. +5 f
  4455. +2684(unlink_by_symbol)X
  4456. +1 f
  4457. +3338(is)X
  4458. +3432(used)X
  4459. +3638(to)X
  4460. +3743(remove)X
  4461. +576 4416(the)N
  4462. +718(new)X
  4463. +902(module.)X
  4464. +3 f
  4465. +576 4720(Semantics)N
  4466. +1016(of)X
  4467. +1120(unlink)X
  4468. +1 f
  4469. +576 4900(As)N
  4470. +717(seen)X
  4471. +923(above,)X
  4472. +1212(the)X
  4473. +1366(unlink)X
  4474. +1648(functions)X
  4475. +2042(actually)X
  4476. +2384(take)X
  4477. +2581(two)X
  4478. +2761(parameters.)X
  4479. +3268(The)X
  4480. +3454(\256rst)X
  4481. +3639(one)X
  4482. +3814(is)X
  4483. +3914(the)X
  4484. +576 5052(name)N
  4485. +811(of)X
  4486. +917(a)X
  4487. +986(symbol)X
  4488. +1295(or)X
  4489. +1401(\256le,)X
  4490. +1574(while)X
  4491. +1814(the)X
  4492. +1958(second)X
  4493. +2251(one)X
  4494. +2415(is)X
  4495. +2504(a)X
  4496. +2572(boolean)X
  4497. +2902(parameter.)X
  4498. +3361(When)X
  4499. +3616(the)X
  4500. +3759(param-)X
  4501. +576 5204(eter)N
  4502. +5 f
  4503. +745(hard)X
  4504. +1 f
  4505. +929(is)X
  4506. +1019(zero)X
  4507. +1212(\()X
  4508. +2 f
  4509. +1244(soft)X
  4510. +1410(unlink)X
  4511. +1 f
  4512. +1651(\),)X
  4513. +1734(the)X
  4514. +1879(speci\256ed)X
  4515. +2248(module)X
  4516. +2564(is)X
  4517. +2655(marked)X
  4518. +2971(as)X
  4519. +4 f
  4520. +3078(removable)X
  4521. +1 f
  4522. +3517(but)X
  4523. +3667(it)X
  4524. +3748(is)X
  4525. +3839(actu-)X
  4526. +576 5356(ally)N
  4527. +758(removed)X
  4528. +1132(from)X
  4529. +1356(memory)X
  4530. +1714(only)X
  4531. +1922(if)X
  4532. +2018(it)X
  4533. +2108(is)X
  4534. +2208(not)X
  4535. +2367(referenced)X
  4536. +2810(by)X
  4537. +2942(any)X
  4538. +3117(other)X
  4539. +3351(modules.)X
  4540. +3761(On)X
  4541. +3914(the)X
  4542. +576 5508(other)N
  4543. +802(hand,)X
  4544. +1041(if)X
  4545. +1128(the)X
  4546. +1274(parameter)X
  4547. +5 f
  4548. +1686(hard)X
  4549. +1 f
  4550. +1872(is)X
  4551. +1964(non-zero)X
  4552. +2334(\()X
  4553. +2 f
  4554. +2366(hard)X
  4555. +2575(unlink)X
  4556. +1 f
  4557. +2816(\),)X
  4558. +2900(this)X
  4559. +3068(module)X
  4560. +3386(is)X
  4561. +3479(removed)X
  4562. +3845(from)X
  4563. +576 5660(memory)N
  4564. +930(unconditionally.)X
  4565. +1616(Since)X
  4566. +1863(unlinking)X
  4567. +2265(a)X
  4568. +2341(module)X
  4569. +2662(may)X
  4570. +2860(leave)X
  4571. +3096(some)X
  4572. +3331(remaining)X
  4573. +3754(remov-)X
  4574. +576 5812(able)N
  4575. +794(modules)X
  4576. +1177(unreferenced,)X
  4577. +1761(a)X
  4578. +1861(garbage)X
  4579. +2223(collector)X
  4580. +2618(is)X
  4581. +2740(always)X
  4582. +3065(called)X
  4583. +3354(to)X
  4584. +3487(remove)X
  4585. +3834(these)X
  4586. +
  4587. +11 p
  4588. +%%Page: 11 12
  4589. +5(Helvetica-Narrow)xf 5 f
  4590. +12 s 0 xH 0 xS 5 f
  4591. +1 f
  4592. +10 s
  4593. +0 32(--)N
  4594. +4323(--)X
  4595. +12 s
  4596. +2200 616(-)N
  4597. +2256(11)X
  4598. +2376(-)X
  4599. +3362(October)X
  4600. +3696(15,)X
  4601. +3840(1990)X
  4602. +2 f
  4603. +10 f
  4604. +576 1168(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)N
  4605. +7 f
  4606. +9 s
  4607. +842 1448(1)N
  4608. +971(/*)X
  4609. +1100(The)X
  4610. +1272(name)X
  4611. +1487(of)X
  4612. +1616(the)X
  4613. +1788(object)X
  4614. +2089(file)X
  4615. +2304(and)X
  4616. +2476(the)X
  4617. +2648(function)X
  4618. +3035(name)X
  4619. +3250(are)X
  4620. +3422(read)X
  4621. +3637(from)X
  4622. +3852(the)X
  4623. +842 1528(2)N
  4624. +1100(stdin.)X
  4625. +1444(The)X
  4626. +1616(named)X
  4627. +1874(function)X
  4628. +2261(is)X
  4629. +2390(invoked)X
  4630. +2734(through)X
  4631. +3078(a)X
  4632. +3164(pointer.)X
  4633. +3594(For)X
  4634. +842 1608(3)N
  4635. +1100(illustrative)X
  4636. +1659(purpose)X
  4637. +2003(the)X
  4638. +2175(object)X
  4639. +2476(file)X
  4640. +2691(is)X
  4641. +2820(unlinked)X
  4642. +3207(right)X
  4643. +3465(after)X
  4644. +3723(the)X
  4645. +842 1688(4)N
  4646. +1100(invocation.)X
  4647. +842 1768(5)N
  4648. +971(*/)X
  4649. +842 1848(6)N
  4650. +971(#include)X
  4651. +1358(<stdio.h>)X
  4652. +842 1928(7)N
  4653. +971(#include)X
  4654. +1358("dld.h")X
  4655. +842 2008(8)N
  4656. +842 2088(9)N
  4657. +971(main)X
  4658. +1186(\(int)X
  4659. +1401(argc,)X
  4660. +1659(char)X
  4661. +1874(**argv\))X
  4662. +2218({)X
  4663. +799 2168(10)N
  4664. +799 2248(11)N
  4665. +1143(char)X
  4666. +1358(file_name[80],)X
  4667. +2003(func_name[80];)X
  4668. +799 2328(12)N
  4669. +799 2408(13)N
  4670. +8 f
  4671. +1143(dld_init)X
  4672. +7 f
  4673. +1530(\(argv[0]\);)X
  4674. +799 2488(14)N
  4675. +799 2568(15)N
  4676. +1143(printf)X
  4677. +1444(\("object)X
  4678. +1831(file?)X
  4679. +2089("\);)X
  4680. +799 2648(16)N
  4681. +1143(while)X
  4682. +1401(\(gets\(file_name\))X
  4683. +2132(!=)X
  4684. +2261(NULL\))X
  4685. +2519({)X
  4686. +799 2728(17)N
  4687. +1315(register)X
  4688. +1702(void)X
  4689. +1917(\(*func\))X
  4690. +2261(\(\);)X
  4691. +799 2808(18)N
  4692. +799 2888(19)N
  4693. +8 f
  4694. +1315(dlink)X
  4695. +7 f
  4696. +1573(\(file_name\);)X
  4697. +799 2968(20)N
  4698. +799 3048(21)N
  4699. +1315(printf)X
  4700. +1616(\("function)X
  4701. +2089(name?)X
  4702. +2347("\);)X
  4703. +799 3128(22)N
  4704. +1315(gets\(func_name\);)X
  4705. +799 3208(23)N
  4706. +799 3288(24)N
  4707. +1315(func)X
  4708. +1530(=)X
  4709. +1616(\(void)X
  4710. +1874(\(*\))X
  4711. +2046(\(\)\))X
  4712. +8 f
  4713. +2218(get_func)X
  4714. +7 f
  4715. +2605(\(func_name\);)X
  4716. +799 3368(25)N
  4717. +799 3448(26)N
  4718. +1315(if)X
  4719. +1444(\()X
  4720. +8 f
  4721. +1487 -0.1969(function_executable_p)AX
  4722. +7 f
  4723. +2433(\(func_name\)\))X
  4724. +799 3528(27)N
  4725. +1487(\(*func\))X
  4726. +1831(\(\);)X
  4727. +799 3608(28)N
  4728. +799 3688(29)N
  4729. +8 f
  4730. +1315(unlink_by_symbol)X
  4731. +7 f
  4732. +2046(\(func_name,)X
  4733. +2562(1\);)X
  4734. +799 3768(30)N
  4735. +799 3848(31)N
  4736. +1315(printf)X
  4737. +1616(\("object)X
  4738. +2003(file?)X
  4739. +2261("\);)X
  4740. +799 3928(32)N
  4741. +1143(})X
  4742. +799 4008(33)N
  4743. +971(})X
  4744. +2 f
  4745. +12 s
  4746. +1345 4208(Figure)N
  4747. +1631(2:)X
  4748. +1759(Simple)X
  4749. +2045(illustration)X
  4750. +2497(of)X
  4751. +2596(the)X
  4752. +2738(dld)X
  4753. +2885(functions.)X
  4754. +10 f
  4755. +576 4512(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)N
  4756. +1 f
  4757. +576 4968(unreferenced)N
  4758. +1107(modules.)X
  4759. +1509(As)X
  4760. +1643(a)X
  4761. +1714(special)X
  4762. +2010(case,)X
  4763. +2228(library)X
  4764. +2513(modules)X
  4765. +2867(are)X
  4766. +3013(always)X
  4767. +3308(considered)X
  4768. +3754(remov-)X
  4769. +576 5120(able)N
  4770. +761(and)X
  4771. +924(are)X
  4772. +1066 0.2305(garbage-collected)AX
  4773. +1776(whenever)X
  4774. +2174(they)X
  4775. +2364(are)X
  4776. +2506(not)X
  4777. +2653(referenced)X
  4778. +3084(by)X
  4779. +3204(other)X
  4780. +3426(modules.)X
  4781. +10 s
  4782. +3776 5080(\262)N
  4783. +10 f
  4784. +576 5402(h)N
  4785. +592(hhhhhhhhhhhhhh)X
  4786. +1 f
  4787. +656 5512(\262)N
  4788. +736(In)X
  4789. +840(the)X
  4790. +975(next)X
  4791. +1150(version)X
  4792. +1423(of)X
  4793. +2 f
  4794. +1527(dld)X
  4795. +1 f
  4796. +1629(,)X
  4797. +1686(users)X
  4798. +1888(will)X
  4799. +2049(be)X
  4800. +2162(allowed)X
  4801. +2453(to)X
  4802. +2552(explicitly)X
  4803. +2891(keep)X
  4804. +3080(a)X
  4805. +3153(library)X
  4806. +3404(module)X
  4807. +3682(in)X
  4808. +576 5608(memory)N
  4809. +863(even)X
  4810. +1035(if)X
  4811. +1104(it)X
  4812. +1168(is)X
  4813. +1241(not)X
  4814. +1363 0.3625(referenced.)AX
  4815. +
  4816. +12 p
  4817. +%%Page: 12 13
  4818. +5(Helvetica-Narrow)xf 5 f
  4819. +10 s 0 xH 0 xS 5 f
  4820. +12 s
  4821. +1 f
  4822. +10 s
  4823. +0 32(--)N
  4824. +4323(--)X
  4825. +12 s
  4826. +2200 616(-)N
  4827. +2256(12)X
  4828. +2376(-)X
  4829. +3362(October)X
  4830. +3696(15,)X
  4831. +3840(1990)X
  4832. +2 f
  4833. +10 f
  4834. +576 1168(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)N
  4835. +1 f
  4836. +2718 2995 MXY
  4837. +216 216 De
  4838. +1278 1628 MXY
  4839. +216 216 De
  4840. +2034 MX
  4841. +216 216 De
  4842. +2034 2204 MXY
  4843. +216 216 De
  4844. +2732 MX
  4845. +259 259 De
  4846. +2754 1628 MXY
  4847. +216 216 De
  4848. +3114 MX
  4849. +216 216 De
  4850. +2754 2204 MXY
  4851. +216 216 De
  4852. +1566 3571 MXY
  4853. +216 216 De
  4854. +1854 2995 MXY
  4855. +216 216 De
  4856. +2790 3103 MXY
  4857. +-14 24 Dl
  4858. +2761 3151 MXY
  4859. +-14 24 Dl
  4860. +2732 3199 MXY
  4861. +-14 24 Dl
  4862. +2704 3247 MXY
  4863. +-14 24 Dl
  4864. +2675 3295 MXY
  4865. +-14 24 Dl
  4866. +2646 3343 MXY
  4867. +-14 24 Dl
  4868. +2617 3391 MXY
  4869. +-14 24 Dl
  4870. +2588 3439 MXY
  4871. +-14 24 Dl
  4872. +2591 3406 MXY
  4873. +-17 57 Dl
  4874. +3464 MY
  4875. +42 -42 Dl
  4876. +1386 1736 MXY
  4877. +0 28 Dl
  4878. +1791 MY
  4879. +0 28 Dl
  4880. +1846 MY
  4881. +0 28 Dl
  4882. +1901 MY
  4883. +0 28 Dl
  4884. +1957 MY
  4885. +0 28 Dl
  4886. +2012 MY
  4887. +0 28 Dl
  4888. +2067 MY
  4889. +0 28 Dl
  4890. +1371 2037 MXY
  4891. +14 58 Dl
  4892. +1386 2096 MXY
  4893. +14 -58 Dl
  4894. +2142 1736 MXY
  4895. +0 360 Dl
  4896. +2113 1980 MXY
  4897. +28 115 Dl
  4898. +2142 2096 MXY
  4899. +28 -115 Dl
  4900. +2862 1736 MXY
  4901. +0 360 Dl
  4902. +2833 1980 MXY
  4903. +28 115 Dl
  4904. +2862 2096 MXY
  4905. +28 -115 Dl
  4906. +3158 1729 MXY
  4907. +-223 367 Dl
  4908. +2969 1983 MXY
  4909. +-35 113 Dl
  4910. +84 -83 Dl
  4911. +1912 3096 MXY
  4912. +-194 374 Dl
  4913. +1744 3355 MXY
  4914. +-27 115 Dl
  4915. +78 -88 Dl
  4916. +11 s
  4917. +2490 3936(\(d2\))N
  4918. +2658(hard)X
  4919. +2836(unlink)X
  4920. +1522 3934(\(d1\))N
  4921. +1690(soft)X
  4922. +1844(unlink)X
  4923. +2 f
  4924. +2799 3031(B)N
  4925. +2835 1663(A)N
  4926. +2113 2239(C)N
  4927. +2833(C)X
  4928. +2115 1663(A)N
  4929. +3195(B)X
  4930. +1359(A)X
  4931. +1 f
  4932. +2994 2527(\(c\))N
  4933. +2091(\(b\))X
  4934. +1360(\(a\))X
  4935. +2 f
  4936. +1645 3607(C)N
  4937. +1935 3031(B)N
  4938. +1295 4117(Figure)N
  4939. +1557(3:)X
  4940. +1674(Illustration)X
  4941. +2094(of)X
  4942. +2185(the)X
  4943. +2315(two)X
  4944. +2465(different)X
  4945. +2787(unlink)X
  4946. +3030(options.)X
  4947. +10 f
  4948. +576 4421(h)N
  4949. +600(hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh)X
  4950. +1 f
  4951. +12 s
  4952. +776 4725(The)N
  4953. +953(semantics)X
  4954. +1360(of)X
  4955. +1467(these)X
  4956. +1692(two)X
  4957. +1863(unlinking)X
  4958. +2260(options)X
  4959. +2571(can)X
  4960. +2733(best)X
  4961. +2916(be)X
  4962. +3035(explained)X
  4963. +3438(by)X
  4964. +3562(an)X
  4965. +3681(example.)X
  4966. +576 4877(Consider)N
  4967. +951(two)X
  4968. +1123(modules,)X
  4969. +2 f
  4970. +1500(A)X
  4971. +1 f
  4972. +1586(and)X
  4973. +2 f
  4974. +1752(B)X
  4975. +1 f
  4976. +1811(,)X
  4977. +1862(both)X
  4978. +2060(containing)X
  4979. +2494(a)X
  4980. +2564(call)X
  4981. +2731(to)X
  4982. +2833(a)X
  4983. +2903(function)X
  4984. +3251(de\256ned)X
  4985. +3561(in)X
  4986. +2 f
  4987. +3663(C)X
  4988. +1 f
  4989. +3727(.)X
  4990. +3802(These)X
  4991. +576 5029(modules)N
  4992. +927(are)X
  4993. +1070(linked)X
  4994. +1336(and)X
  4995. +1500(removed)X
  4996. +1862(in)X
  4997. +1962(the)X
  4998. +2105(order)X
  4999. +2333(as)X
  5000. +2438(shown)X
  5001. +2713(in)X
  5002. +2813(\256gure)X
  5003. +3062(3.)X
  5004. +2 f
  5005. +3183(A)X
  5006. +1 f
  5007. +3268(is)X
  5008. +3358(linked)X
  5009. +3625(in)X
  5010. +3726(\256rst)X
  5011. +3901(\(a\).)X
  5012. +576 5181(Then)N
  5013. +2 f
  5014. +811(C)X
  5015. +1 f
  5016. +912(is)X
  5017. +1013(also)X
  5018. +1205(linked)X
  5019. +1483(\(b\).)X
  5020. +1680(When)X
  5021. +2 f
  5022. +1947(B)X
  5023. +1 f
  5024. +2043(is)X
  5025. +2144(linked)X
  5026. +2421(in,)X
  5027. +2556(all)X
  5028. +2689(its)X
  5029. +2816(external)X
  5030. +3163(symbol)X
  5031. +3482(references)X
  5032. +3914(are)X
  5033. +576 5333(resolved)N
  5034. +928(successfully)X
  5035. +1424(because)X
  5036. +2 f
  5037. +1755(C)X
  5038. +1 f
  5039. +1845(has)X
  5040. +1999(already)X
  5041. +2309(been)X
  5042. +2517(loaded)X
  5043. +2800(into)X
  5044. +2976(memory.)X
  5045. +3372(Thus,)X
  5046. +2 f
  5047. +3615(C)X
  5048. +1 f
  5049. +3706(does)X
  5050. +3909(not)X
  5051. +576 5485(need)N
  5052. +782(to)X
  5053. +881(be)X
  5054. +996(linked)X
  5055. +1261(in)X
  5056. +1360(again.)X
  5057. +1641(Instead,)X
  5058. +1967(it)X
  5059. +2045(is)X
  5060. +2133(shared)X
  5061. +2408(by)X
  5062. +2528(both)X
  5063. +2 f
  5064. +2723(A)X
  5065. +1 f
  5066. +2806(and)X
  5067. +2 f
  5068. +2969(B)X
  5069. +1 f
  5070. +3052(\(c\).)X
  5071. +776 5665(Now,)N
  5072. +1011(suppose)X
  5073. +1345(that)X
  5074. +2 f
  5075. +1515(A)X
  5076. +1 f
  5077. +1599(is)X
  5078. +1688(unlinked,)X
  5079. +2075(and)X
  5080. +2240(in)X
  5081. +2341(order)X
  5082. +2570(to)X
  5083. +2671(clean)X
  5084. +2901(up)X
  5085. +3023(any)X
  5086. +3188(module)X
  5087. +3503(referenced)X
  5088. +3936(by)X
  5089. +2 f
  5090. +576 5817(A)N
  5091. +1 f
  5092. +635(,)X
  5093. +2 f
  5094. +691(C)X
  5095. +1 f
  5096. +787(is)X
  5097. +883(being)X
  5098. +1129(unlinked,)X
  5099. +1522(too.)X
  5100. +1725(Should)X
  5101. +2 f
  5102. +2029(C)X
  5103. +1 f
  5104. +2093(,)X
  5105. +2149(which)X
  5106. +2416(is)X
  5107. +2512(currently)X
  5108. +2892(referenced)X
  5109. +3331(by)X
  5110. +2 f
  5111. +3459(B)X
  5112. +1 f
  5113. +3518(,)X
  5114. +3573(be)X
  5115. +3695(removed)X
  5116. +
  5117. +13 p
  5118. +%%Page: 13 14
  5119. +5(Helvetica-Narrow)xf 5 f
  5120. +12 s 0 xH 0 xS 5 f
  5121. +1 f
  5122. +10 s
  5123. +0 32(--)N
  5124. +4323(--)X
  5125. +12 s
  5126. +2200 616(-)N
  5127. +2256(13)X
  5128. +2376(-)X
  5129. +3362(October)X
  5130. +3696(15,)X
  5131. +3840(1990)X
  5132. +576 1016(from)N
  5133. +793(memory?)X
  5134. +1211(Both)X
  5135. +1428(possible)X
  5136. +1773(semantics)X
  5137. +2183(are)X
  5138. +2331(reasonable.)X
  5139. +2821(If)X
  5140. +2 f
  5141. +2915(unlinking)X
  5142. +1 f
  5143. +3309(a)X
  5144. +3382(module)X
  5145. +3701(means)X
  5146. +3978(it)X
  5147. +576 1168(may)N
  5148. +779(be)X
  5149. +907(removed)X
  5150. +1281(if)X
  5151. +1377(it)X
  5152. +1468(is)X
  5153. +1569(not)X
  5154. +1729(being)X
  5155. +1980(referenced)X
  5156. +2424(anymore,)X
  5157. +2 f
  5158. +2821(C)X
  5159. +1 f
  5160. +2921(should)X
  5161. +3213(not)X
  5162. +3372(be)X
  5163. +3499(removed)X
  5164. +3872(\(d1\))X
  5165. +576 1320(because)N
  5166. +906(it)X
  5167. +985(is)X
  5168. +1074(still)X
  5169. +1244(referenced)X
  5170. +1677(by)X
  5171. +2 f
  5172. +1799(B)X
  5173. +1 f
  5174. +1858(.)X
  5175. +1932(On)X
  5176. +2075(the)X
  5177. +2219(other)X
  5178. +2443(hand,)X
  5179. +2680(if)X
  5180. +2 f
  5181. +2765(unlinking)X
  5182. +1 f
  5183. +3155(literally)X
  5184. +3482(means)X
  5185. +3754(remov-)X
  5186. +576 1472(ing)N
  5187. +726(the)X
  5188. +871(speci\256ed)X
  5189. +1240(module,)X
  5190. +2 f
  5191. +1580(C)X
  5192. +1 f
  5193. +1671(should)X
  5194. +1954(be)X
  5195. +2071(removed,)X
  5196. +2458(resulting)X
  5197. +2821(in)X
  5198. +2 f
  5199. +2922(B)X
  5200. +1 f
  5201. +2981('s)X
  5202. +3076(reference)X
  5203. +3461(to)X
  5204. +2 f
  5205. +3562(C)X
  5206. +1 f
  5207. +3652(becoming)X
  5208. +576 1624(unresolved)N
  5209. +1022(\(d2\).)X
  5210. +776 1804(Applications)N
  5211. +1302(might)X
  5212. +1561(require)X
  5213. +1869(either)X
  5214. +2124(or)X
  5215. +2239(both)X
  5216. +2445(unlink)X
  5217. +2726(options.)X
  5218. +3092(Thus,)X
  5219. +2 f
  5220. +3343(dld)X
  5221. +1 f
  5222. +3501(supports)X
  5223. +3861(both)X
  5224. +576 1956(options)N
  5225. +888(and)X
  5226. +1056(leaves)X
  5227. +1326(the)X
  5228. +1473(decision)X
  5229. +1823(to)X
  5230. +1927(the)X
  5231. +2074(programmer.)X
  5232. +2627(For)X
  5233. +2788(example,)X
  5234. +3167(if)X
  5235. +3254(the)X
  5236. +3400(module)X
  5237. +3717(de\256ning)X
  5238. +576 2108(a)N
  5239. +656(commonly)X
  5240. +1105(used)X
  5241. +1318(function)X
  5242. +1676(is)X
  5243. +1777(to)X
  5244. +1890(be)X
  5245. +2019(replaced)X
  5246. +2384(by)X
  5247. +2518(an)X
  5248. +2647(enhanced)X
  5249. +3049(version,)X
  5250. +3394(a)X
  5251. +3475(hard)X
  5252. +3684(unlink)X
  5253. +3968(is)X
  5254. +576 2260(desirable.)N
  5255. +1000(A)X
  5256. +1097(new)X
  5257. +1285(version)X
  5258. +1596(could)X
  5259. +1837(then)X
  5260. +2030(be)X
  5261. +2148(linked)X
  5262. +2416(in,)X
  5263. +2542(and)X
  5264. +2708(all)X
  5265. +2832(references)X
  5266. +3255(to)X
  5267. +3357(the)X
  5268. +3502(original)X
  5269. +3829(func-)X
  5270. +576 2412(tion)N
  5271. +755(would)X
  5272. +1024(be)X
  5273. +1144(modi\256ed)X
  5274. +1515(to)X
  5275. +1619(point)X
  5276. +1846(to)X
  5277. +1951(this)X
  5278. +2120(new)X
  5279. +2310(function.)X
  5280. +2709(On)X
  5281. +2856(the)X
  5282. +3004(other)X
  5283. +3232(hand,)X
  5284. +3473(some)X
  5285. +3706(modules)X
  5286. +576 2564(might)N
  5287. +830(be)X
  5288. +950(referenced)X
  5289. +1386(from)X
  5290. +1602(many)X
  5291. +1845(different)X
  5292. +2206(places)X
  5293. +2476(in)X
  5294. +2580(the)X
  5295. +2727(program.)X
  5296. +3130(It)X
  5297. +3218(is)X
  5298. +3311(not)X
  5299. +3462(easy)X
  5300. +3661(for)X
  5301. +3801(a)X
  5302. +3872(pro-)X
  5303. +576 2716(grammer)N
  5304. +951(to)X
  5305. +1053(keep)X
  5306. +1263(track)X
  5307. +1484(whether)X
  5308. +1822(a)X
  5309. +1893(module)X
  5310. +2210(is)X
  5311. +2302(no)X
  5312. +2426(longer)X
  5313. +2700(referenced)X
  5314. +3135(by)X
  5315. +3259(others)X
  5316. +3522(and)X
  5317. +3689(thus)X
  5318. +3877(safe)X
  5319. +576 2868(to)N
  5320. +689(be)X
  5321. +818(removed)X
  5322. +1193(from)X
  5323. +1418(memory.)X
  5324. +1825(The)X
  5325. +2013(programmer)X
  5326. +2527(might)X
  5327. +2789(even)X
  5328. +3008(be)X
  5329. +3136(unaware)X
  5330. +3499(of)X
  5331. +3616(some)X
  5332. +3856(such)X
  5333. +576 3020(references.)N
  5334. +1052(For)X
  5335. +1217(example,)X
  5336. +1600(functions)X
  5337. +1990(such)X
  5338. +2198(as)X
  5339. +5 f
  5340. +2308(strlen)X
  5341. +1 f
  5342. +2532(and)X
  5343. +5 f
  5344. +2701(malloc)X
  5345. +1 f
  5346. +2960(are)X
  5347. +3110(referenced)X
  5348. +3549(by)X
  5349. +3677(at)X
  5350. +3779(least)X
  5351. +3989(a)X
  5352. +576 3172(dozen)N
  5353. +833(other)X
  5354. +1058(library)X
  5355. +1342(functions)X
  5356. +1727(in)X
  5357. +1829(the)X
  5358. +1974(C)X
  5359. +2065(library)X
  5360. +2349(of)X
  5361. +2456(BSD)X
  5362. +2669(UNIX.)X
  5363. +2983(Thus,)X
  5364. +3226(these)X
  5365. +3450(functions)X
  5366. +3834(often)X
  5367. +576 3324(need)N
  5368. +784(to)X
  5369. +885(be)X
  5370. +1002(kept)X
  5371. +1194(in)X
  5372. +1295(memory)X
  5373. +1642(even)X
  5374. +1850(if)X
  5375. +1935(the)X
  5376. +2079(main)X
  5377. +2298(program)X
  5378. +2650(does)X
  5379. +2853(not)X
  5380. +3003(invoke)X
  5381. +3292(them)X
  5382. +3512(explicitly.)X
  5383. +3952(In)X
  5384. +576 3476(these)N
  5385. +801(cases,)X
  5386. +1055(it)X
  5387. +1136(is)X
  5388. +1227(desirable)X
  5389. +1602(to)X
  5390. +1703(use)X
  5391. +1857(soft)X
  5392. +2027(unlink)X
  5393. +2299(so)X
  5394. +2410(that)X
  5395. +2581(the)X
  5396. +2725(speci\256ed)X
  5397. +3093(module)X
  5398. +3408(is)X
  5399. +3498(removed)X
  5400. +3861(only)X
  5401. +576 3628(when)N
  5402. +808(it)X
  5403. +886(is)X
  5404. +974(no)X
  5405. +1094(longer)X
  5406. +1364(needed.)X
  5407. +3 f
  5408. +576 3932(Implementation)N
  5409. +1256(of)X
  5410. +1360(unlink)X
  5411. +1 f
  5412. +576 4112(The)N
  5413. +761 0.2548(implementation)AX
  5414. +1402(of)X
  5415. +1517(the)X
  5416. +1670(unlink)X
  5417. +1951(functions)X
  5418. +2344(is)X
  5419. +2443(built)X
  5420. +2655(around)X
  5421. +2957(a)X
  5422. +3036(simple)X
  5423. +3329(garbage)X
  5424. +3670(collector.)X
  5425. +576 4264(For)N
  5426. +740(each)X
  5427. +948(module)X
  5428. +2 f
  5429. +1268(x)X
  5430. +1 f
  5431. +1311(,)X
  5432. +1366(a)X
  5433. +1440(reference)X
  5434. +1830(count)X
  5435. +2075(records)X
  5436. +2389(the)X
  5437. +2538(number)X
  5438. +2863(of)X
  5439. +2973(modules)X
  5440. +3329(that)X
  5441. +3504(reference)X
  5442. +3893(any)X
  5443. +576 4416(symbol)N
  5444. +886(de\256ned)X
  5445. +1196(in)X
  5446. +2 f
  5447. +1298(x)X
  5448. +1 f
  5449. +1341(.)X
  5450. +1416(If)X
  5451. +2 f
  5452. +1507(x)X
  5453. +1 f
  5454. +1577(is)X
  5455. +1668(explicitly)X
  5456. +2060(linked)X
  5457. +2328(in)X
  5458. +2430(by)X
  5459. +5 f
  5460. +2551(dlink)X
  5461. +1 f
  5462. +2739(\(as)X
  5463. +2878(opposed)X
  5464. +3225(to)X
  5465. +3327(implicit)X
  5466. +3656(linking)X
  5467. +3957(in)X
  5468. +576 4568(the)N
  5469. +724(case)X
  5470. +919(for)X
  5471. +1060(library)X
  5472. +1346(modules\),)X
  5473. +1757(it)X
  5474. +1840(is)X
  5475. +1933(considered)X
  5476. +2379(being)X
  5477. +2622(referenced)X
  5478. +3058(by)X
  5479. +3183(the)X
  5480. +3330(process)X
  5481. +3647(itself,)X
  5482. +3893(and)X
  5483. +576 4720(thus)N
  5484. +762(its)X
  5485. +879(reference)X
  5486. +1264(count)X
  5487. +1504(is)X
  5488. +1594(at)X
  5489. +1690(least)X
  5490. +1893(one.)X
  5491. +2106(A)X
  5492. +2201(soft)X
  5493. +2371(unlink)X
  5494. +2643(of)X
  5495. +2 f
  5496. +2749(x)X
  5497. +1 f
  5498. +2818(causes)X
  5499. +3095(its)X
  5500. +3212(reference)X
  5501. +3598(count)X
  5502. +3839(to)X
  5503. +3941(be)X
  5504. +576 4872(decremented)N
  5505. +1095(by)X
  5506. +1217(one,)X
  5507. +1406(while)X
  5508. +1646(a)X
  5509. +1715(hard)X
  5510. +1912(unlink)X
  5511. +2184(simply)X
  5512. +2472(resets)X
  5513. +2717(the)X
  5514. +2861(count)X
  5515. +3101(to)X
  5516. +3202(zero.)X
  5517. +3442(Furthermore,)X
  5518. +3973(if)X
  5519. +2 f
  5520. +576 5024(x)N
  5521. +1 f
  5522. +619('s)X
  5523. +721(reference)X
  5524. +1113(count)X
  5525. +1360(becomes)X
  5526. +1730(zero,)X
  5527. +1953(the)X
  5528. +2104(reference)X
  5529. +2496(counts)X
  5530. +2780(of)X
  5531. +2893(all)X
  5532. +3023(modules)X
  5533. +3382(that)X
  5534. +2 f
  5535. +3560(x)X
  5536. +1 f
  5537. +3636(references)X
  5538. +576 5176(are)N
  5539. +732(also)X
  5540. +925(decremented)X
  5541. +1456(by)X
  5542. +1590(one.)X
  5543. +1815(When)X
  5544. +2083(all)X
  5545. +2218(reference)X
  5546. +2614(counts)X
  5547. +2902(have)X
  5548. +3121(been)X
  5549. +3340(updated,)X
  5550. +3706(modules)X
  5551. +576 5328(whose)N
  5552. +845(reference)X
  5553. +1228(counts)X
  5554. +1503(are)X
  5555. +1645(zero)X
  5556. +1835(are)X
  5557. +1977(actually)X
  5558. +2307(removed)X
  5559. +2668(by)X
  5560. +2788(the)X
  5561. +2930(garbage)X
  5562. +3259(collector.)X
  5563. +776 5508(In)N
  5564. +888(addition)X
  5565. +1236(to)X
  5566. +1343(the)X
  5567. +1493(garbage)X
  5568. +1830(collector,)X
  5569. +2 f
  5570. +2224(dld)X
  5571. +1 f
  5572. +2379(maintains)X
  5573. +2786(data)X
  5574. +2979(structures)X
  5575. +3385(to)X
  5576. +3492(hold)X
  5577. +3695(informa-)X
  5578. +576 5660(tion)N
  5579. +758(necessary)X
  5580. +1164(to)X
  5581. +1271(support)X
  5582. +1591(unlinking.)X
  5583. +2040(Corresponding)X
  5584. +2643(to)X
  5585. +2750(each)X
  5586. +2959(module)X
  5587. +3280(is)X
  5588. +3376(a)X
  5589. +3451(list)X
  5590. +3601(of)X
  5591. +3712(symbols)X
  5592. +576 5812(that)N
  5593. +758(it)X
  5594. +849(references,)X
  5595. +1306(a)X
  5596. +1386(list)X
  5597. +1542(of)X
  5598. +1660(symbols)X
  5599. +2018(that)X
  5600. +2201(it)X
  5601. +2293(de\256nes,)X
  5602. +2627(and)X
  5603. +2804(a)X
  5604. +2885(list)X
  5605. +3041(of)X
  5606. +3159(relocation)X
  5607. +3583(instructions)X
  5608. +
  5609. +14 p
  5610. +%%Page: 14 15
  5611. +5(Helvetica-Narrow)xf 5 f
  5612. +12 s 0 xH 0 xS 5 f
  5613. +1 f
  5614. +10 s
  5615. +0 32(--)N
  5616. +4323(--)X
  5617. +12 s
  5618. +2200 616(-)N
  5619. +2256(14)X
  5620. +2376(-)X
  5621. +3362(October)X
  5622. +3696(15,)X
  5623. +3840(1990)X
  5624. +576 1016(\(known)N
  5625. +905(as)X
  5626. +1021(an)X
  5627. +2 f
  5628. +1148(nlist)X
  5629. +1 f
  5630. +1350(in)X
  5631. +1461(UNIX\).)X
  5632. +1815(This)X
  5633. +2021(information)X
  5634. +2511(is)X
  5635. +2610(needed)X
  5636. +2918(to)X
  5637. +3028(update)X
  5638. +3320(the)X
  5639. +3473(online)X
  5640. +3749(symbol)X
  5641. +576 1168(table)N
  5642. +802(in)X
  5643. +915(order)X
  5644. +1156(to)X
  5645. +1269(re\257ect)X
  5646. +1548(the)X
  5647. +1704(disappearance)X
  5648. +2288(of)X
  5649. +2406(the)X
  5650. +2562(unlinked)X
  5651. +2937(modules)X
  5652. +3301(from)X
  5653. +3526(the)X
  5654. +3682(program.)X
  5655. +576 1320(When)N
  5656. +832(a)X
  5657. +901(module)X
  5658. +2 f
  5659. +1216(y)X
  5660. +1 f
  5661. +1285(is)X
  5662. +1375(to)X
  5663. +1476(be)X
  5664. +1593(removed)X
  5665. +1956(from)X
  5666. +2169(memory,)X
  5667. +2540(its)X
  5668. +2656(reference)X
  5669. +3040(list)X
  5670. +3183(is)X
  5671. +3272(used)X
  5672. +3473(to)X
  5673. +3573(locate)X
  5674. +3829(those)X
  5675. +576 1472(modules)N
  5676. +935(whose)X
  5677. +1214(reference)X
  5678. +1607(counts)X
  5679. +1892(should)X
  5680. +2182(be)X
  5681. +2307(decremented.)X
  5682. +2882(Symbols)X
  5683. +3252(de\256ned)X
  5684. +3569(by)X
  5685. +2 f
  5686. +3699(y)X
  5687. +1 f
  5688. +3776(should)X
  5689. +576 1624(be)N
  5690. +694(deleted)X
  5691. +1000(from)X
  5692. +1214(the)X
  5693. +1359(symbol)X
  5694. +1669(table.)X
  5695. +1931(Other)X
  5696. +2176(modules)X
  5697. +2528(that)X
  5698. +2699(reference)X
  5699. +3084(any)X
  5700. +3249(symbol)X
  5701. +3558(de\256ned)X
  5702. +3867(by)X
  5703. +2 f
  5704. +3989(y)X
  5705. +1 f
  5706. +576 1776(now)N
  5707. +765(contain)X
  5708. +1073(unde\256ned)X
  5709. +1476(references.)X
  5710. +1944(These)X
  5711. +2198(modules)X
  5712. +2549(should)X
  5713. +2830(be)X
  5714. +2946(``reversely'')X
  5715. +3452(patched)X
  5716. +3777(so)X
  5717. +3887(that)X
  5718. +576 1928(instructions)N
  5719. +1058(pointing)X
  5720. +1412(to)X
  5721. +1520(locations)X
  5722. +1901(previously)X
  5723. +2340(in)X
  5724. +2 f
  5725. +2448(y)X
  5726. +1 f
  5727. +2491('s)X
  5728. +2593(address)X
  5729. +2914(space)X
  5730. +3161(are)X
  5731. +3312(reset.)X
  5732. +3575(In)X
  5733. +3687(short,)X
  5734. +3935(all)X
  5735. +2 f
  5736. +576 2080(dld)N
  5737. +1 f
  5738. +699('s)X
  5739. +795(data)X
  5740. +983(structures)X
  5741. +1384(have)X
  5742. +1593(to)X
  5743. +1695(be)X
  5744. +1813(set)X
  5745. +1947(to)X
  5746. +2049(the)X
  5747. +2194(state)X
  5748. +2398(as)X
  5749. +2505(if)X
  5750. +2 f
  5751. +2591(y)X
  5752. +1 f
  5753. +2661(had)X
  5754. +2827(never)X
  5755. +3069(been)X
  5756. +3279(linked)X
  5757. +3548(into)X
  5758. +3726(the)X
  5759. +3872(pro-)X
  5760. +576 2232(gram.)N
  5761. +776 2412(Finally,)N
  5762. +1106(side-effects\320such)X
  5763. +1855(as)X
  5764. +1968(modi\256cation)X
  5765. +2488(of)X
  5766. +2601(global)X
  5767. +2875(variables,)X
  5768. +3281(input/output)X
  5769. +3786(opera-)X
  5770. +576 2564(tions,)N
  5771. +812(and)X
  5772. +976(allocations)X
  5773. +1418(of)X
  5774. +1522(new)X
  5775. +1706(memory)X
  5776. +2051(blocks\320caused)X
  5777. +2684(by)X
  5778. +2804(the)X
  5779. +2946(execution)X
  5780. +3345(of)X
  5781. +3449(any)X
  5782. +3612(function)X
  5783. +3957(in)X
  5784. +576 2716(a)N
  5785. +648(module)X
  5786. +966(are)X
  5787. +1113(not)X
  5788. +1265(reversed)X
  5789. +1620(when)X
  5790. +1857(the)X
  5791. +2004(module)X
  5792. +2322(is)X
  5793. +2415(unlinked.)X
  5794. +2829(If)X
  5795. +2922(these)X
  5796. +3150(side-effects)X
  5797. +3624(need)X
  5798. +3836(to)X
  5799. +3941(be)X
  5800. +576 2868(undone,)N
  5801. +907(they)X
  5802. +1097(must)X
  5803. +1308(be)X
  5804. +1423(undone)X
  5805. +1730(explicitly)X
  5806. +2119(by)X
  5807. +2239(the)X
  5808. +2381(programmers.)X
  5809. +3 f
  5810. +576 3172(Deciding)N
  5811. +963(if)X
  5812. +1046(a)X
  5813. +1118(function)X
  5814. +1483(is)X
  5815. +1571(executable)X
  5816. +1 f
  5817. +576 3352(Since)N
  5818. +2 f
  5819. +818(dld)X
  5820. +1 f
  5821. +969(allows)X
  5822. +1248(modules)X
  5823. +1602(to)X
  5824. +1705(be)X
  5825. +1824(added)X
  5826. +2082(to)X
  5827. +2185(or)X
  5828. +2293(removed)X
  5829. +2658(from)X
  5830. +2873(an)X
  5831. +2992(executing)X
  5832. +3395(process)X
  5833. +3711(dynami-)X
  5834. +576 3504(cally,)N
  5835. +818(some)X
  5836. +1051(global)X
  5837. +1322(symbols)X
  5838. +1672(may)X
  5839. +1868(not)X
  5840. +2020(be)X
  5841. +2140(de\256ned.)X
  5842. +2500(As)X
  5843. +2635(a)X
  5844. +2707(result,)X
  5845. +2974(an)X
  5846. +3094(invocation)X
  5847. +3530(of)X
  5848. +3639(a)X
  5849. +3711(function)X
  5850. +576 3656(might)N
  5851. +836(reference)X
  5852. +1230(an)X
  5853. +1356(unde\256ned)X
  5854. +1770(symbol.)X
  5855. +2136(To)X
  5856. +2278(solve)X
  5857. +2517(this)X
  5858. +2692(problem,)X
  5859. +2 f
  5860. +3073(dld)X
  5861. +1 f
  5862. +3232(provides)X
  5863. +3599(a)X
  5864. +3678(predicate)X
  5865. +576 3808(function)N
  5866. +5 f
  5867. +931(function_executable_p)X
  5868. +1 f
  5869. +1720(,)X
  5870. +1780(which,)X
  5871. +2075(as)X
  5872. +2191(shown)X
  5873. +2477(earlier)X
  5874. +2760(in)X
  5875. +2871(\256gure)X
  5876. +3131(2,)X
  5877. +3239(takes)X
  5878. +3473(as)X
  5879. +3589(argument)X
  5880. +3989(a)X
  5881. +576 3960(function)N
  5882. +921(name)X
  5883. +1154(and)X
  5884. +1317(returns)X
  5885. +1608(non-zero)X
  5886. +1974(only)X
  5887. +2169(if)X
  5888. +2252(the)X
  5889. +2394(named)X
  5890. +2675(function)X
  5891. +3020(is)X
  5892. +3108(executable.)X
  5893. +776 4140(A)N
  5894. +882(function)X
  5895. +1240(is)X
  5896. +2 f
  5897. +1341(executable)X
  5898. +1 f
  5899. +1791(if)X
  5900. +1887(and)X
  5901. +2063(only)X
  5902. +2271(if)X
  5903. +2367(all)X
  5904. +2501(its)X
  5905. +2629(external)X
  5906. +2977(references)X
  5907. +3410(have)X
  5908. +3630(been)X
  5909. +3850(fully)X
  5910. +576 4292(resolved)N
  5911. +928(and)X
  5912. +1093(all)X
  5913. +1216(functions)X
  5914. +1600(that)X
  5915. +1771(it)X
  5916. +1851(might)X
  5917. +2102(call)X
  5918. +2268(are)X
  5919. +2412(executable.)X
  5920. +2899(This)X
  5921. +3095(recursive)X
  5922. +3473(de\256nition)X
  5923. +3867(sug-)X
  5924. +576 4444(gests)N
  5925. +799(that)X
  5926. +975(determining)X
  5927. +1472(whether)X
  5928. +1813(a)X
  5929. +1887(given)X
  5930. +2132(function)X
  5931. +2485(is)X
  5932. +2581(executable)X
  5933. +3026(is)X
  5934. +3122(non-trivial.)X
  5935. +3609(Since)X
  5936. +3855(each)X
  5937. +576 4596(function)N
  5938. +925(might)X
  5939. +1178(invoke)X
  5940. +1468(other)X
  5941. +1694(functions,)X
  5942. +2104(the)X
  5943. +2250(number)X
  5944. +2572(of)X
  5945. +2680(functions)X
  5946. +3066(that)X
  5947. +3239(can)X
  5948. +3400(be)X
  5949. +3518(reached)X
  5950. +3845(from)X
  5951. +576 4748(the)N
  5952. +721(original)X
  5953. +1048(invocation)X
  5954. +1482(can)X
  5955. +1643(be)X
  5956. +1761(very)X
  5957. +1959(large.)X
  5958. +2227(If)X
  5959. +2319(any)X
  5960. +2486(of)X
  5961. +2594(these)X
  5962. +2820(functions)X
  5963. +3206(is)X
  5964. +3298(not)X
  5965. +3449(executable,)X
  5966. +3914(the)X
  5967. +576 4900(original)N
  5968. +916(invocation)X
  5969. +1363(is)X
  5970. +1467(also)X
  5971. +1662(not)X
  5972. +1825(executable.)X
  5973. +2326(Consequently,)X
  5974. +2919(determining)X
  5975. +3425(if)X
  5976. +3524(a)X
  5977. +3607(function)X
  5978. +3968(is)X
  5979. +576 5052(executable)N
  5980. +1032(could)X
  5981. +1289(involve)X
  5982. +1621(the)X
  5983. +1782(examination)X
  5984. +2302(of)X
  5985. +2425(a)X
  5986. +2511(large)X
  5987. +2747(number)X
  5988. +3084(of)X
  5989. +3207(other)X
  5990. +3449(functions.)X
  5991. +3899(For)X
  5992. +576 5204(example,)N
  5993. +963(the)X
  5994. +1117(executable)X
  5995. +1565(\256le)X
  5996. +1723(for)X
  5997. +2 f
  5998. +1870(gdb)X
  5999. +1 f
  6000. +(,)S
  6001. +2073(a)X
  6002. +2151(popular)X
  6003. +2480(UNIX)X
  6004. +2754(debugger,)X
  6005. +3171(contains)X
  6006. +3527(174)X
  6007. +3706(modules)X
  6008. +576 5356(\(object)N
  6009. +900(\256les\))X
  6010. +1148(and)X
  6011. +1343(635)X
  6012. +1543(global)X
  6013. +1840(functions.)X
  6014. +2302(The)X
  6015. +2508(ef\256ciency)X
  6016. +2944(of)X
  6017. +3080(the)X
  6018. +3254(algorithm)X
  6019. +10 s
  6020. +3629 5316(\262)N
  6021. +12 s
  6022. +3725 5356(used)N
  6023. +3957(to)X
  6024. +10 s
  6025. +10 f
  6026. +576 5452(h)N
  6027. +592(hhhhhhhhhhhhhh)X
  6028. +1 f
  6029. +656 5562(\262)N
  6030. +736(An)X
  6031. +858(optimal)X
  6032. +1126(algorithm)X
  6033. +1461(with)X
  6034. +1627(respect)X
  6035. +1879(to)X
  6036. +1965(the)X
  6037. +2087(order)X
  6038. +2281(of)X
  6039. +2372(complexity)X
  6040. +2756(exists,)X
  6041. +2982(but)X
  6042. +3108(its)X
  6043. +3207(detailed)X
  6044. +3485(descrip-)X
  6045. +576 5658(tion)N
  6046. +728(is)X
  6047. +808(beyond)X
  6048. +1071(the)X
  6049. +1196(scope)X
  6050. +1406(of)X
  6051. +1500(this)X
  6052. +1642(paper.)X
  6053. +1888(Furthermore,)X
  6054. +2336(the)X
  6055. +2461(current)X
  6056. +2716(implementation)X
  6057. +3245(employs)X
  6058. +3543(a)X
  6059. +3606(sub-)X
  6060. +576 5754(optimal)N
  6061. +842(but)X
  6062. +966(much)X
  6063. +1166(simpler)X
  6064. +1428(solution.)X
  6065. +1747(This)X
  6066. +1911(solution)X
  6067. +2190(has)X
  6068. +2319(a)X
  6069. +2377(very)X
  6070. +2542(small)X
  6071. +2737(overhead)X
  6072. +3054(and)X
  6073. +3192(thus)X
  6074. +3347(works)X
  6075. +3565(faster)X
  6076. +576 5850(than)N
  6077. +734(the)X
  6078. +852(optimal)X
  6079. +1116(solution)X
  6080. +1393(as)X
  6081. +1480(long)X
  6082. +1642(as)X
  6083. +1729(the)X
  6084. +1847(number)X
  6085. +2112(of)X
  6086. +2199(modules)X
  6087. +2490(is)X
  6088. +2563(not)X
  6089. +2685(too)X
  6090. +2807(large.)X
  6091. +
  6092. +15 p
  6093. +%%Page: 15 16
  6094. +5(Helvetica-Narrow)xf 5 f
  6095. +10 s 0 xH 0 xS 5 f
  6096. +12 s
  6097. +1 f
  6098. +10 s
  6099. +0 32(--)N
  6100. +4323(--)X
  6101. +12 s
  6102. +2200 616(-)N
  6103. +2256(15)X
  6104. +2376(-)X
  6105. +3362(October)X
  6106. +3696(15,)X
  6107. +3840(1990)X
  6108. +576 1016(implement)N
  6109. +5 f
  6110. +1011(function_executable_p)X
  6111. +1 f
  6112. +1824(is)X
  6113. +1912(thus)X
  6114. +2096(of)X
  6115. +2200(practical)X
  6116. +2557(concern.)X
  6117. +776 1196(Several)N
  6118. +1093(methods)X
  6119. +1447(can)X
  6120. +1609(be)X
  6121. +1728(used)X
  6122. +1932(to)X
  6123. +2035(speed)X
  6124. +2282(up)X
  6125. +2406(this)X
  6126. +2573(algorithm.)X
  6127. +3024(First,)X
  6128. +3252(the)X
  6129. +2 f
  6130. +3398 0.2865(executability)AX
  6131. +1 f
  6132. +3920(for)X
  6133. +576 1348(each)N
  6134. +778(function)X
  6135. +1124(could)X
  6136. +1363(be)X
  6137. +1479(actually)X
  6138. +1810(calculated)X
  6139. +2227(only)X
  6140. +2423(once,)X
  6141. +2654(and)X
  6142. +2818(the)X
  6143. +2960(results)X
  6144. +3235(kept)X
  6145. +3425(in)X
  6146. +3524(a)X
  6147. +3591(table.)X
  6148. +3851(Sub-)X
  6149. +576 1500(sequent)N
  6150. +899(calls)X
  6151. +1105(to)X
  6152. +5 f
  6153. +1207(function_executable_p)X
  6154. +1 f
  6155. +2025(would)X
  6156. +2294(then)X
  6157. +2489(involve)X
  6158. +2807(only)X
  6159. +3007(a)X
  6160. +3080(table)X
  6161. +3298(lookup.)X
  6162. +3643(This)X
  6163. +3844(table)X
  6164. +576 1652(would)N
  6165. +842(be)X
  6166. +959(invalidated)X
  6167. +1414(whenever)X
  6168. +1814(a)X
  6169. +1883(link)X
  6170. +2059(or)X
  6171. +2165(unlink)X
  6172. +2436(operation)X
  6173. +2825(is)X
  6174. +2914(performed,)X
  6175. +3364(and)X
  6176. +3528(would)X
  6177. +3793(not)X
  6178. +3941(be)X
  6179. +576 1804(updated)N
  6180. +912(until)X
  6181. +1120(the)X
  6182. +1269(next)X
  6183. +1466(call)X
  6184. +1637(to)X
  6185. +5 f
  6186. +1741(function_executable_p)X
  6187. +1 f
  6188. +2530(.)X
  6189. +2609(As)X
  6190. +2746(a)X
  6191. +2821(result,)X
  6192. +3091(unnecessary)X
  6193. +3593(recomputa-)X
  6194. +576 1956(tion)N
  6195. +779(of)X
  6196. +912(the)X
  6197. +1083(table)X
  6198. +1324(between)X
  6199. +1698(consecutive)X
  6200. +2206(link)X
  6201. +2409(or)X
  6202. +2542(unlink)X
  6203. +2841(operations)X
  6204. +3294(could)X
  6205. +3560(be)X
  6206. +3703(avoided.)X
  6207. +576 2108(Second,)N
  6208. +912(when)X
  6209. +1149(new)X
  6210. +1338(modules)X
  6211. +1693(are)X
  6212. +1840(added)X
  6213. +2099(or)X
  6214. +2208(removed,)X
  6215. +2598(minimal)X
  6216. +2949(changes)X
  6217. +3288(to)X
  6218. +3392(the)X
  6219. +3539(table)X
  6220. +3756(of)X
  6221. +3866(exe-)X
  6222. +576 2260(cutable)N
  6223. +893(functions)X
  6224. +1288(should)X
  6225. +1581(be)X
  6226. +1709(made.)X
  6227. +2003(There)X
  6228. +2265(is)X
  6229. +2366(no)X
  6230. +2499(need)X
  6231. +2718(to)X
  6232. +2830(rewrite)X
  6233. +3140(the)X
  6234. +3295(whole)X
  6235. +3567(table.)X
  6236. +3840(Only)X
  6237. +576 2412(those)N
  6238. +812(functions)X
  6239. +1203(affected)X
  6240. +1547(by)X
  6241. +1676(the)X
  6242. +1827(changes)X
  6243. +2170(should)X
  6244. +2459(be)X
  6245. +2583(examined.)X
  6246. +3039(Lastly,)X
  6247. +3338(although)X
  6248. +3709(an)X
  6249. +3834(algo-)X
  6250. +576 2564(rithm)N
  6251. +812(that)X
  6252. +984(\256nds)X
  6253. +1197(out)X
  6254. +1347(the)X
  6255. +1492 0.2552(executability)AX
  6256. +2018(of)X
  6257. +2125(a)X
  6258. +2195(given)X
  6259. +2436(function)X
  6260. +2784(can)X
  6261. +2945(be)X
  6262. +3063(used)X
  6263. +3266(repeatedly)X
  6264. +3695(on)X
  6265. +3818(every)X
  6266. +576 2716(de\256ned)N
  6267. +887(function,)X
  6268. +1260(this)X
  6269. +1427(method)X
  6270. +1745(is)X
  6271. +1838(in)X
  6272. +1942(general)X
  6273. +2255(very)X
  6274. +2455(inef\256cient)X
  6275. +2875(because)X
  6276. +3209(a)X
  6277. +3281(lot)X
  6278. +3412(of)X
  6279. +3521(the)X
  6280. +3668(computa-)X
  6281. +576 2868(tion)N
  6282. +757(is)X
  6283. +851(duplicated.)X
  6284. +1331(Instead,)X
  6285. +1663(a)X
  6286. +1736(different)X
  6287. +2098(algorithm)X
  6288. +2503(that)X
  6289. +2678(\256nishes)X
  6290. +3001(all)X
  6291. +3128(the)X
  6292. +3276(computation)X
  6293. +3788(in)X
  6294. +3893(one)X
  6295. +576 3020(single)N
  6296. +830(pass)X
  6297. +1019(could)X
  6298. +1257(be)X
  6299. +1372(used.)X
  6300. +
  6301. +16 p
  6302. +%%Page: 16 17
  6303. +5(Helvetica-Narrow)xf 5 f
  6304. +12 s 0 xH 0 xS 5 f
  6305. +1 f
  6306. +10 s
  6307. +0 32(--)N
  6308. +4323(--)X
  6309. +12 s
  6310. +2200 616(-)N
  6311. +2256(16)X
  6312. +2376(-)X
  6313. +3362(October)X
  6314. +3696(15,)X
  6315. +3840(1990)X
  6316. +1780 1016(APPLICATIONS)N
  6317. +2485(OF)X
  6318. +2631(DLD)X
  6319. +576 1348(The)N
  6320. +758(\257exibility)X
  6321. +1165(provided)X
  6322. +1539(by)X
  6323. +2 f
  6324. +1667(dld)X
  6325. +1 f
  6326. +1822(allows)X
  6327. +2105(a)X
  6328. +2180(new)X
  6329. +2372(style)X
  6330. +2586(in)X
  6331. +2693(writing)X
  6332. +3004(programs)X
  6333. +3400(using)X
  6334. +3641(compiled-)X
  6335. +576 1500(based)N
  6336. +829(programming)X
  6337. +1387(languages)X
  6338. +1806(and)X
  6339. +1979(makes)X
  6340. +2259(many)X
  6341. +2507(new)X
  6342. +2701(kinds)X
  6343. +2943(of)X
  6344. +3057(applications)X
  6345. +3556(possible.)X
  6346. +3952(In)X
  6347. +576 1652(particular,)N
  6348. +1009(dynamic)X
  6349. +1380(linking)X
  6350. +1692(combines)X
  6351. +2100(the)X
  6352. +2257(ef\256ciency)X
  6353. +2676(of)X
  6354. +2795(executing)X
  6355. +3209(native)X
  6356. +3484(machine)X
  6357. +3850(code)X
  6358. +576 1804(with)N
  6359. +778(the)X
  6360. +927(\257exibility)X
  6361. +1333(of)X
  6362. +1444(runtime)X
  6363. +1774(program)X
  6364. +2130(modi\256cation.)X
  6365. +2 f
  6366. +2695(Dld)X
  6367. +1 f
  6368. +2869(is)X
  6369. +2963(especially)X
  6370. +3379(useful)X
  6371. +3644(for)X
  6372. +3786(highly)X
  6373. +576 1956(interactive)N
  6374. +1011(programs)X
  6375. +1401(whose)X
  6376. +1674(functionalities)X
  6377. +2254(change)X
  6378. +2555(in)X
  6379. +2658(response)X
  6380. +3022(to)X
  6381. +3125(their)X
  6382. +3330(user's)X
  6383. +3587(input.)X
  6384. +3861(This)X
  6385. +576 2108(section)N
  6386. +873(describes)X
  6387. +1255(several)X
  6388. +1552(interesting)X
  6389. +1983(applications)X
  6390. +2473(of)X
  6391. +2 f
  6392. +2577(dld)X
  6393. +1 f
  6394. +2700(.)X
  6395. +3 f
  6396. +576 2412(Program)N
  6397. +969(customization)X
  6398. +1 f
  6399. +576 2592(Many)N
  6400. +829(sophisticated)X
  6401. +1361(software)X
  6402. +1722(packages)X
  6403. +2105(usually)X
  6404. +2413(allow)X
  6405. +2657(some)X
  6406. +2890(form)X
  6407. +3107(of)X
  6408. +3217(customization)X
  6409. +3788(by)X
  6410. +3914(the)X
  6411. +576 2744(user.)N
  6412. +826(Depending)X
  6413. +1290(on)X
  6414. +1428(their)X
  6415. +1647(personal)X
  6416. +2015(preference,)X
  6417. +2488(users)X
  6418. +2727(can)X
  6419. +2903(specify)X
  6420. +3223(how)X
  6421. +3430(these)X
  6422. +3669(programs)X
  6423. +576 2896(should)N
  6424. +863(interact)X
  6425. +1184(with)X
  6426. +1387(them.)X
  6427. +1660(Usually)X
  6428. +1991(these)X
  6429. +2221(programs)X
  6430. +2616(provide)X
  6431. +2942(a)X
  6432. +3017(group)X
  6433. +3273(of)X
  6434. +3385(different)X
  6435. +3749(options)X
  6436. +576 3048(from)N
  6437. +791(which)X
  6438. +1054(users)X
  6439. +1279(can)X
  6440. +1441(select)X
  6441. +1689(those)X
  6442. +1920(that)X
  6443. +2092(suit)X
  6444. +2258(their)X
  6445. +2462(needs.)X
  6446. +2756(For)X
  6447. +2916(example,)X
  6448. +3294(in)X
  6449. +3396(the)X
  6450. +3541(UNIX)X
  6451. +3807(editor)X
  6452. +2 f
  6453. +576 3200(vi)N
  6454. +1 f
  6455. +10 s
  6456. +646 3160(9)N
  6457. +12 s
  6458. +715 3200(a)N
  6459. +787(user)X
  6460. +976(can)X
  6461. +1139(specify)X
  6462. +1446(whether)X
  6463. +1785(the)X
  6464. +1933(input)X
  6465. +2161(text)X
  6466. +2336(should)X
  6467. +2622(be)X
  6468. +2743(wrapped)X
  6469. +3104(around)X
  6470. +3401 0.2812(automatically)AX
  6471. +3957(to)X
  6472. +576 3352(the)N
  6473. +723(next)X
  6474. +918(line)X
  6475. +1092(when)X
  6476. +1329(input)X
  6477. +1556(gets)X
  6478. +1740(past)X
  6479. +1924(a)X
  6480. +1995(certain)X
  6481. +2286(column.)X
  6482. +2651(As)X
  6483. +2785(another)X
  6484. +3102(example,)X
  6485. +3481(some)X
  6486. +3712(versions)X
  6487. +576 3504(of)N
  6488. +681(the)X
  6489. +824(UNIX)X
  6490. +1088(command)X
  6491. +1493(interpreter)X
  6492. +2 f
  6493. +1920(csh)X
  6494. +1 f
  6495. +2073(provide)X
  6496. +2392(an)X
  6497. +2508(option)X
  6498. +2779(to)X
  6499. +2879(log)X
  6500. +3027(out)X
  6501. +3176(the)X
  6502. +3320(user)X
  6503. +3506 0.2812(automatically)AX
  6504. +576 3656(when)N
  6505. +808(it)X
  6506. +886(has)X
  6507. +1038(been)X
  6508. +1244(idle)X
  6509. +1413(for)X
  6510. +1549(a)X
  6511. +1616(user-speci\256ed)X
  6512. +2174(number)X
  6513. +2492(of)X
  6514. +2596(minutes.)X
  6515. +776 3836(This)N
  6516. +979(method)X
  6517. +1300(of)X
  6518. +1413(providing)X
  6519. +1820(program)X
  6520. +2179(customization)X
  6521. +2753(is)X
  6522. +2850(limited)X
  6523. +3157(in)X
  6524. +3265(the)X
  6525. +3416(sense)X
  6526. +3657(that)X
  6527. +3835(users)X
  6528. +576 3988(can)N
  6529. +735(only)X
  6530. +930(choose)X
  6531. +1221(their)X
  6532. +1422(preference)X
  6533. +1853(from)X
  6534. +2064(a)X
  6535. +2131(set)X
  6536. +2262(of)X
  6537. +2366(prede\256ned)X
  6538. +2796(options.)X
  6539. +3151(Whatever)X
  6540. +3550(is)X
  6541. +3638(not)X
  6542. +3785(antici-)X
  6543. +576 4140(pated)N
  6544. +809(will)X
  6545. +983(not)X
  6546. +1130(be)X
  6547. +1245(available.)X
  6548. +1666(For)X
  6549. +1823(example,)X
  6550. +2198(it)X
  6551. +2277(is)X
  6552. +2366(not)X
  6553. +2514(possible)X
  6554. +2854(to)X
  6555. +2954(customize)X
  6556. +2 f
  6557. +3370(vi)X
  6558. +1 f
  6559. +3465(so)X
  6560. +3575(that)X
  6561. +3745(when)X
  6562. +3978(it)X
  6563. +576 4292(breaks)N
  6564. +861(up)X
  6565. +991(a)X
  6566. +1068(long)X
  6567. +1273(line,)X
  6568. +1476(it)X
  6569. +1564(also)X
  6570. +1753(right-justi\256es)X
  6571. +2300(the)X
  6572. +2452(current)X
  6573. +2759(line)X
  6574. +2938(to)X
  6575. +3047(a)X
  6576. +3124(speci\256c)X
  6577. +3452(column.)X
  6578. +3823(Like-)X
  6579. +576 4444(wise,)N
  6580. +802(it)X
  6581. +882(is)X
  6582. +972(not)X
  6583. +1121(possible)X
  6584. +1462(to)X
  6585. +1563(tell)X
  6586. +2 f
  6587. +1713(csh)X
  6588. +1 f
  6589. +1867(to)X
  6590. +1968 0.2812(automatically)AX
  6591. +2520(log)X
  6592. +2669(out)X
  6593. +2818(at,)X
  6594. +2938(say,)X
  6595. +3117(5:30pm)X
  6596. +3438(simply)X
  6597. +3727(because)X
  6598. +576 4596(the)N
  6599. +732(need)X
  6600. +952(for)X
  6601. +1102(this)X
  6602. +1279(functionality)X
  6603. +1810(was)X
  6604. +1997(not)X
  6605. +2158(anticipated.)X
  6606. +2668(One)X
  6607. +2866(possible)X
  6608. +3219(solution)X
  6609. +3567(is)X
  6610. +3668(to)X
  6611. +3780(let)X
  6612. +3914(the)X
  6613. +576 4748(users)N
  6614. +798(modify)X
  6615. +1102(these)X
  6616. +1326(programs)X
  6617. +1715(according)X
  6618. +2121(to)X
  6619. +2222(their)X
  6620. +2425(own)X
  6621. +2616(preference)X
  6622. +3049(and)X
  6623. +3214(have)X
  6624. +3422(separate)X
  6625. +3764(private)X
  6626. +576 4900(copies)N
  6627. +853(for)X
  6628. +996(each)X
  6629. +1204(of)X
  6630. +1315(them.)X
  6631. +1586(Obviously,)X
  6632. +2040(this)X
  6633. +2209(method)X
  6634. +2528(requires)X
  6635. +2868(a)X
  6636. +2941(lot)X
  6637. +3073(of)X
  6638. +3183(disk)X
  6639. +3373(space)X
  6640. +3617(and)X
  6641. +3786(makes)X
  6642. +576 5052(system)N
  6643. +867(software)X
  6644. +1222(very)X
  6645. +1417(hard)X
  6646. +1612(to)X
  6647. +1711(maintain)X
  6648. +2073(and)X
  6649. +2236(upgrade.)X
  6650. +2 f
  6651. +776 5232(Dld)N
  6652. +1 f
  6653. +948(provides)X
  6654. +1307(a)X
  6655. +1378(better)X
  6656. +1626(solution)X
  6657. +1964(by)X
  6658. +2088(allowing)X
  6659. +2453(users)X
  6660. +2678(to)X
  6661. +2781(add)X
  6662. +2949(or)X
  6663. +3058(remove)X
  6664. +3376(new)X
  6665. +3565(functions)X
  6666. +3952(or)X
  6667. +576 5384(modify)N
  6668. +884(the)X
  6669. +1032(application)X
  6670. +1491(programs)X
  6671. +1883(to)X
  6672. +1987(suit)X
  6673. +2155(their)X
  6674. +2361(own)X
  6675. +2555(preference.)X
  6676. +3039(The)X
  6677. +3218(system)X
  6678. +3514(then)X
  6679. +3709(needs)X
  6680. +3957(to)X
  6681. +576 5536(keep)N
  6682. +786(only)X
  6683. +985(one)X
  6684. +1152(copy)X
  6685. +1367(of)X
  6686. +1475(each)X
  6687. +1680(program)X
  6688. +2034(that)X
  6689. +2207(is)X
  6690. +2300(loaded)X
  6691. +2586(with)X
  6692. +2786(default)X
  6693. +3083(options.)X
  6694. +3443(If)X
  6695. +3536(users)X
  6696. +3762(are)X
  6697. +3909(not)X
  6698. +576 5688(satis\256ed)N
  6699. +925(with)X
  6700. +1130(any)X
  6701. +1303(of)X
  6702. +1417(the)X
  6703. +1569(options)X
  6704. +1886(provided,)X
  6705. +2286(they)X
  6706. +2485(can)X
  6707. +2652(then)X
  6708. +2851(link)X
  6709. +3034(in)X
  6710. +3142(their)X
  6711. +3352(own)X
  6712. +3550(routines)X
  6713. +3893(and)X
  6714. +576 5840(tell)N
  6715. +729(the)X
  6716. +876(program)X
  6717. +1231(to)X
  6718. +1335(use)X
  6719. +1493(these)X
  6720. +1721(user-de\256ned)X
  6721. +2226(functions)X
  6722. +2614(instead)X
  6723. +2917(of)X
  6724. +3027(the)X
  6725. +3175(defaults.)X
  6726. +3558(Referring)X
  6727. +3957(to)X
  6728. +
  6729. +17 p
  6730. +%%Page: 17 18
  6731. +5(Helvetica-Narrow)xf 5 f
  6732. +12 s 0 xH 0 xS 5 f
  6733. +1 f
  6734. +10 s
  6735. +0 32(--)N
  6736. +4323(--)X
  6737. +12 s
  6738. +2200 616(-)N
  6739. +2256(17)X
  6740. +2376(-)X
  6741. +3362(October)X
  6742. +3696(15,)X
  6743. +3840(1990)X
  6744. +576 1016(the)N
  6745. +722(previous)X
  6746. +2 f
  6747. +1081(csh)X
  6748. +1 f
  6749. +1237(example,)X
  6750. +1616(if)X
  6751. +2 f
  6752. +1702(dld)X
  6753. +1 f
  6754. +1852(is)X
  6755. +1943(used,)X
  6756. +2170(a)X
  6757. +2240(user)X
  6758. +2427(could)X
  6759. +2668(perform)X
  6760. +3005(the)X
  6761. +3150(following)X
  6762. +3551(steps)X
  6763. +3770(to)X
  6764. +3872(cus-)X
  6765. +576 1168(tomize)N
  6766. +863(the)X
  6767. +1005(autologout)X
  6768. +1441(feature:)X
  6769. +10 f
  6770. +976 1348(g)N
  6771. +1 f
  6772. +1176(Use)X
  6773. +5 f
  6774. +1347(unlink_by_symbol)X
  6775. +1 f
  6776. +1996(to)X
  6777. +2095(unlink)X
  6778. +2365(the)X
  6779. +2507(function)X
  6780. +2852(that)X
  6781. +3021(handles)X
  6782. +3339(autologout.)X
  6783. +10 f
  6784. +976 1528(g)N
  6785. +1 f
  6786. +1176(Modify)X
  6787. +1512(the)X
  6788. +1678(way)X
  6789. +1887(the)X
  6790. +2054(autologout)X
  6791. +2515(function)X
  6792. +2885(interprets)X
  6793. +3298(its)X
  6794. +3438(argument.)X
  6795. +3899(For)X
  6796. +1176 1680(example,)N
  6797. +1553("17:30")X
  6798. +1876(means)X
  6799. +2148(logout)X
  6800. +2420(at)X
  6801. +2516(5:30pm)X
  6802. +2836(while)X
  6803. +3076("17")X
  6804. +3276(means)X
  6805. +3548(logout)X
  6806. +3820(if)X
  6807. +2 f
  6808. +3904(csh)X
  6809. +1 f
  6810. +1176 1832(has)N
  6811. +1339(been)X
  6812. +1556(idle)X
  6813. +1736(for)X
  6814. +1883(17)X
  6815. +2014(minutes.)X
  6816. +2402(Also)X
  6817. +2618(make)X
  6818. +2862(necessary)X
  6819. +3271(adjustments)X
  6820. +3766(so)X
  6821. +3887(that)X
  6822. +1176 1984(the)N
  6823. +1318(alarm)X
  6824. +1562(clock)X
  6825. +1795(is)X
  6826. +1883(set)X
  6827. +2014(correctly.)X
  6828. +10 f
  6829. +976 2164(g)N
  6830. +1 f
  6831. +1176(Compile)X
  6832. +1532(this)X
  6833. +1695(new)X
  6834. +1879(autologout)X
  6835. +2315(function.)X
  6836. +10 f
  6837. +976 2344(g)N
  6838. +1 f
  6839. +1176(Use)X
  6840. +5 f
  6841. +1347(dlink)X
  6842. +1 f
  6843. +1532(to)X
  6844. +1631(link)X
  6845. +1805(this)X
  6846. +1968(function)X
  6847. +2313(into)X
  6848. +2 f
  6849. +2487(csh)X
  6850. +1 f
  6851. +(.)S
  6852. +776 2524(Note)N
  6853. +996(that)X
  6854. +1174(this)X
  6855. +1346(method)X
  6856. +1669(requires)X
  6857. +2013(users)X
  6858. +2244(to)X
  6859. +2353(have)X
  6860. +2569(some)X
  6861. +2806(knowledge)X
  6862. +3262(on)X
  6863. +3392(the)X
  6864. +3544(implementa-)X
  6865. +576 2676(tion)N
  6866. +766(of)X
  6867. +886(the)X
  6868. +1044(application)X
  6869. +1513(programs.)X
  6870. +1964(Alternatively,)X
  6871. +2537(the)X
  6872. +2695(application)X
  6873. +3163(programs)X
  6874. +3565(can)X
  6875. +3738(provide)X
  6876. +576 2828(``hooks'')N
  6877. +958(or)X
  6878. +1063(some)X
  6879. +1291(well-de\256ned,)X
  6880. +1821(uniform)X
  6881. +2156(interface)X
  6882. +2519(to)X
  6883. +2619(which)X
  6884. +2880(the)X
  6885. +3024(users)X
  6886. +3247(can)X
  6887. +3407(attach)X
  6888. +3664(their)X
  6889. +3867(own)X
  6890. +576 2980(customized)N
  6891. +1054(routines.)X
  6892. +1451(Users)X
  6893. +1708(should)X
  6894. +2002(follow)X
  6895. +2291(the)X
  6896. +2447(speci\256ed)X
  6897. +2827(convention)X
  6898. +3293(when)X
  6899. +3539(writing)X
  6900. +3855(their)X
  6901. +576 3132(own)N
  6902. +771(functions)X
  6903. +1159(and)X
  6904. +1328(the)X
  6905. +1476(application)X
  6906. +1935(programs)X
  6907. +2328(may)X
  6908. +2524(provide)X
  6909. +2848(a)X
  6910. +2921(special)X
  6911. +3219(routine)X
  6912. +3522(to)X
  6913. +3627(handle)X
  6914. +3914(the)X
  6915. +576 3284(loading)N
  6916. +892(of)X
  6917. +999(the)X
  6918. +1144(user-de\256ned)X
  6919. +1646(functions.)X
  6920. +2079(This)X
  6921. +2277(routine)X
  6922. +2577(should)X
  6923. +2860(hide)X
  6924. +3053(from)X
  6925. +3267(the)X
  6926. +3412(users)X
  6927. +3636(the)X
  6928. +3780(details)X
  6929. +576 3436(of)N
  6930. +680(invoking)X
  6931. +2 f
  6932. +1046(dld)X
  6933. +1 f
  6934. +1193(and)X
  6935. +1356(of)X
  6936. +1460(setting)X
  6937. +1741(up)X
  6938. +1861(the)X
  6939. +2003(function)X
  6940. +2348(entry)X
  6941. +2570(points.)X
  6942. +3 f
  6943. +576 3740(Incremental)N
  6944. +1102(program)X
  6945. +1489(development)X
  6946. +1 f
  6947. +576 3920(Since)N
  6948. +2 f
  6949. +823(dld)X
  6950. +1 f
  6951. +979(does)X
  6952. +1188(not)X
  6953. +1344(require)X
  6954. +1650(all)X
  6955. +1780(source)X
  6956. +2064(modules)X
  6957. +2423(to)X
  6958. +2531(be)X
  6959. +2655(available)X
  6960. +3037(when)X
  6961. +3278(creating)X
  6962. +3623(an)X
  6963. +3748(execut-)X
  6964. +576 4072(able)N
  6965. +776(\256le,)X
  6966. +962(it)X
  6967. +1055(makes)X
  6968. +1340(incremental)X
  6969. +1835(program)X
  6970. +2200(development)X
  6971. +2737(possible.)X
  6972. +3138(Programmers)X
  6973. +3694(can)X
  6974. +3866(start)X
  6975. +576 4224(testing)N
  6976. +859(their)X
  6977. +1062(programs)X
  6978. +1451(before)X
  6979. +1723(they)X
  6980. +1915(\256nish)X
  6981. +2154(writing)X
  6982. +2458(the)X
  6983. +2603(complete)X
  6984. +2984(program)X
  6985. +3337(without)X
  6986. +3658(providing)X
  6987. +576 4376(dummy)N
  6988. +905(de\256nitions)X
  6989. +1346(for)X
  6990. +1493(the)X
  6991. +1646(missing)X
  6992. +1980(procedures.)X
  6993. +2485(As)X
  6994. +2626(long)X
  6995. +2832(as)X
  6996. +2947(the)X
  6997. +3100(test)X
  6998. +3269(input)X
  6999. +3502(data)X
  7000. +3698(does)X
  7001. +3909(not)X
  7002. +576 4528(cause)N
  7003. +831(the)X
  7004. +990(program)X
  7005. +1357(to)X
  7006. +1473(reference)X
  7007. +1873(modules)X
  7008. +2240(that)X
  7009. +2426(have)X
  7010. +2649(not)X
  7011. +2813(yet)X
  7012. +2972(been)X
  7013. +3195(linked)X
  7014. +3477(\(i.e.,)X
  7015. +3692(does)X
  7016. +3909(not)X
  7017. +576 4680(invoke)N
  7018. +884(a)X
  7019. +972(function)X
  7020. +5 f
  7021. +1336(f)X
  7022. +1 f
  7023. +1403(such)X
  7024. +1624(that)X
  7025. +5 f
  7026. +1812(function_executable_p\(f\))X
  7027. +1 f
  7028. +2720(returns)X
  7029. +3032(zero\),)X
  7030. +3299(the)X
  7031. +3462(execution)X
  7032. +3882(will)X
  7033. +576 4832(proceed)N
  7034. +931(smoothly.)X
  7035. +1388(Programmers)X
  7036. +1957(can)X
  7037. +2142(therefore)X
  7038. +2541(develop)X
  7039. +2897(programs)X
  7040. +3311 0.2604(incrementally)AX
  7041. +3893(and)X
  7042. +576 4984(carry)N
  7043. +802(out)X
  7044. +953(thorough)X
  7045. +1328(tests)X
  7046. +1527(on)X
  7047. +1651(individual)X
  7048. +2069(modules)X
  7049. +2422(before)X
  7050. +2695(working)X
  7051. +3042(on)X
  7052. +3165(the)X
  7053. +3310(next)X
  7054. +3503(one.)X
  7055. +3717(Further-)X
  7056. +576 5136(more,)N
  7057. +839(when)X
  7058. +1088(new)X
  7059. +1289(modules)X
  7060. +1656(are)X
  7061. +1815(added)X
  7062. +2086 0.2404(incrementally,)AX
  7063. +2682(the)X
  7064. +2842(dynamic)X
  7065. +3216(linker)X
  7066. +3483(needs)X
  7067. +3744(only)X
  7068. +3957(to)X
  7069. +576 5288(resolve)N
  7070. +892(external)X
  7071. +1241(symbol)X
  7072. +1561(references)X
  7073. +1994(related)X
  7074. +2294(to)X
  7075. +2406(these)X
  7076. +2641(new)X
  7077. +2838(modules.)X
  7078. +3249(In)X
  7079. +3366(contrast,)X
  7080. +3732(if)X
  7081. +3828(static)X
  7082. +576 5440(linking)N
  7083. +874(is)X
  7084. +963(used,)X
  7085. +1188(link)X
  7086. +1363(editing)X
  7087. +1656(of)X
  7088. +1761(the)X
  7089. +1904(whole)X
  7090. +2164(program)X
  7091. +2515(has)X
  7092. +2668(to)X
  7093. +2768(be)X
  7094. +2884(started)X
  7095. +3167(anew.)X
  7096. +3444(In)X
  7097. +3550(other)X
  7098. +3774(words,)X
  7099. +576 5592(the)N
  7100. +718(use)X
  7101. +870(of)X
  7102. +974(dynamic)X
  7103. +1330(linking)X
  7104. +1627(can)X
  7105. +1785(in)X
  7106. +1884(general)X
  7107. +2192(speed)X
  7108. +2435(up)X
  7109. +2555(the)X
  7110. +2697(program)X
  7111. +3047(development)X
  7112. +3569(cycle.)X
  7113. +
  7114. +18 p
  7115. +%%Page: 18 19
  7116. +5(Helvetica-Narrow)xf 5 f
  7117. +12 s 0 xH 0 xS 5 f
  7118. +1 f
  7119. +10 s
  7120. +0 32(--)N
  7121. +4323(--)X
  7122. +12 s
  7123. +2200 616(-)N
  7124. +2256(18)X
  7125. +2376(-)X
  7126. +3362(October)X
  7127. +3696(15,)X
  7128. +3840(1990)X
  7129. +776 1016(Some)N
  7130. +1046(systems)X
  7131. +10 s
  7132. +1350 976(10,)N
  7133. +1463(11)X
  7134. +12 s
  7135. +1594 1016(support)N
  7136. +1933(incremental)X
  7137. +2440(program)X
  7138. +2817(development)X
  7139. +3367(by)X
  7140. +3515(providing)X
  7141. +3941(an)X
  7142. +576 1168(interactive)N
  7143. +1021(interpreter)X
  7144. +1460(for)X
  7145. +1609(the)X
  7146. +1764(underlying)X
  7147. +2218(programming)X
  7148. +2779(language.)X
  7149. +3212(These)X
  7150. +3478(systems)X
  7151. +3818(allow)X
  7152. +576 1320(programs)N
  7153. +978(to)X
  7154. +1092(be)X
  7155. +1222(written,)X
  7156. +1558(tested,)X
  7157. +1846(and)X
  7158. +2024(modi\256ed)X
  7159. +2405 0.2404(interactively.)AX
  7160. +2976(However,)X
  7161. +3392(interpreted)X
  7162. +3850(code)X
  7163. +576 1472(usually)N
  7164. +880(runs)X
  7165. +1070(more)X
  7166. +1293(slowly)X
  7167. +1574(than)X
  7168. +1765(native)X
  7169. +2026(machine)X
  7170. +2378(code.)X
  7171. +2633(The)X
  7172. +2808(performance)X
  7173. +3320(of)X
  7174. +3425(an)X
  7175. +3541(interpreter)X
  7176. +3968(is)X
  7177. +576 1624(often)N
  7178. +806(unacceptable)X
  7179. +1342(when)X
  7180. +1582(executing)X
  7181. +1989(computationally)X
  7182. +2649(intensive)X
  7183. +3030(programs.)X
  7184. +3474(With)X
  7185. +3700(dynamic)X
  7186. +576 1776(linking,)N
  7187. +900(interpreted)X
  7188. +1345(and)X
  7189. +1511(\(possibly)X
  7190. +1890(optimized\))X
  7191. +2335(compiled)X
  7192. +2721(code)X
  7193. +2930(can)X
  7194. +3091(be)X
  7195. +3209(mixed)X
  7196. +3477(together.)X
  7197. +3867(Pro-)X
  7198. +576 1928(grammers)N
  7199. +987(might)X
  7200. +1238(use)X
  7201. +1392(compiled)X
  7202. +1777(versions)X
  7203. +2123(of)X
  7204. +2229(the)X
  7205. +2374(parts)X
  7206. +2588(of)X
  7207. +2695(the)X
  7208. +2840(program)X
  7209. +3193(that)X
  7210. +3365(have)X
  7211. +3574(been)X
  7212. +3783(tested,)X
  7213. +576 2080(while)N
  7214. +824(at)X
  7215. +928(the)X
  7216. +1079(same)X
  7217. +1310(time)X
  7218. +1515(they)X
  7219. +1714(can)X
  7220. +1881(use)X
  7221. +2042(interpreted)X
  7222. +2493(versions)X
  7223. +2846(of)X
  7224. +2959(the)X
  7225. +3110(modules)X
  7226. +3469(on)X
  7227. +3598(which)X
  7228. +3866(they)X
  7229. +576 2232(are)N
  7230. +719(currently)X
  7231. +1092(working.)X
  7232. +1485(The)X
  7233. +1660(compiled)X
  7234. +2044(modules)X
  7235. +2396(are)X
  7236. +2540(dynamically)X
  7237. +3043(linked)X
  7238. +3310(into)X
  7239. +3486(the)X
  7240. +3630(interpreter)X
  7241. +576 2384(of)N
  7242. +684(these)X
  7243. +910(systems.)X
  7244. +1290(These)X
  7245. +1548(systems)X
  7246. +1880(also)X
  7247. +2063(provide)X
  7248. +2385(the)X
  7249. +2531(necessary)X
  7250. +2933(interface)X
  7251. +3298(for)X
  7252. +3437(the)X
  7253. +3582(interactions)X
  7254. +576 2536(between)N
  7255. +921(the)X
  7256. +1063(interpreted)X
  7257. +1505(and)X
  7258. +1668(compiled)X
  7259. +2051(code.)X
  7260. +776 2716(As)N
  7261. +917(an)X
  7262. +1043(example,)X
  7263. +1429(suppose)X
  7264. +1773(a)X
  7265. +1851(graphical)X
  7266. +2245(front)X
  7267. +2467(end)X
  7268. +2641(is)X
  7269. +2741(to)X
  7270. +2852(be)X
  7271. +2979(added)X
  7272. +3245(to)X
  7273. +3356(an)X
  7274. +3483(existing)X
  7275. +3824(chess)X
  7276. +576 2868(playing)N
  7277. +897(program,)X
  7278. +1279(which)X
  7279. +1546(is)X
  7280. +1642(computationally)X
  7281. +2301(intensive.)X
  7282. +2729(During)X
  7283. +3032(its)X
  7284. +3154(development,)X
  7285. +3707(code)X
  7286. +3920(for)X
  7287. +576 3020(this)N
  7288. +745(graphical)X
  7289. +1134(front)X
  7290. +1352(end)X
  7291. +1522(is)X
  7292. +1617(frequently)X
  7293. +2044(modi\256ed,)X
  7294. +2441(and)X
  7295. +2611(so)X
  7296. +2727(it)X
  7297. +2812(is)X
  7298. +2907(best)X
  7299. +3093(run)X
  7300. +3252(under)X
  7301. +3502(an)X
  7302. +3624(interactive)X
  7303. +576 3172(interpreter.)N
  7304. +1062(However,)X
  7305. +1473(executing)X
  7306. +1883(the)X
  7307. +2036(chess)X
  7308. +2279(playing)X
  7309. +2603(routines)X
  7310. +2948(under)X
  7311. +3202(the)X
  7312. +3355(interpreter)X
  7313. +3792(would)X
  7314. +576 3324(be)N
  7315. +710(unreasonably)X
  7316. +1266(slow.)X
  7317. +1538(With)X
  7318. +2 f
  7319. +1774(dld)X
  7320. +1 f
  7321. +1897(,)X
  7322. +1964(compiled)X
  7323. +2366(code)X
  7324. +2591(for)X
  7325. +2746(the)X
  7326. +2907(chess)X
  7327. +3158(program)X
  7328. +3527(itself)X
  7329. +3763(can)X
  7330. +3941(be)X
  7331. +576 3476(dynamically)N
  7332. +1089(linked)X
  7333. +1366(into)X
  7334. +1552(the)X
  7335. +1706(interpreter,)X
  7336. +2168(and)X
  7337. +2343(can)X
  7338. +2513(be)X
  7339. +2640(executed)X
  7340. +3019(at)X
  7341. +3125(the)X
  7342. +3279(same)X
  7343. +3513(speed)X
  7344. +3768(as)X
  7345. +3884(if)X
  7346. +3978(it)X
  7347. +576 3628(were)N
  7348. +799(statically)X
  7349. +1184(linked.)X
  7350. +1509(Thus,)X
  7351. +2 f
  7352. +1761(dld)X
  7353. +1 f
  7354. +1921(combines)X
  7355. +2327(the)X
  7356. +2482(ability)X
  7357. +2766(of)X
  7358. +2883(an)X
  7359. +3011(interpreter)X
  7360. +3450(to)X
  7361. +3562(\257exibly)X
  7362. +3893(and)X
  7363. +576 3780(completely)N
  7364. +1034(control)X
  7365. +1336(the)X
  7366. +1483(execution)X
  7367. +1887(of)X
  7368. +1996(the)X
  7369. +2143(still)X
  7370. +2317(developing)X
  7371. +2774(routines)X
  7372. +3113(with)X
  7373. +3312(the)X
  7374. +3458(high)X
  7375. +3657(execution)X
  7376. +576 3932(ef\256ciency)N
  7377. +980(achieved)X
  7378. +1347(by)X
  7379. +1467(the)X
  7380. +1609(optimized)X
  7381. +2019(machine)X
  7382. +2370(code.)X
  7383. +3 f
  7384. +576 4236(Support)N
  7385. +935(for)X
  7386. +1082(debugging)X
  7387. +1532(and)X
  7388. +1710(testing)X
  7389. +1 f
  7390. +576 4416(A)N
  7391. +686(dynamic)X
  7392. +1059(linker)X
  7393. +1325(also)X
  7394. +1521(makes)X
  7395. +1808(possible)X
  7396. +2164(the)X
  7397. +2323 0.2548(implementation)AX
  7398. +2971(of)X
  7399. +3093(many)X
  7400. +3349(useful)X
  7401. +3626(debugging)X
  7402. +576 4568(features.)N
  7403. +956(A)X
  7404. +1052(debugger)X
  7405. +1437(can)X
  7406. +1597(be)X
  7407. +1714(used)X
  7408. +1916(as)X
  7409. +2022(an)X
  7410. +2139(interactive)X
  7411. +2573(interface)X
  7412. +2937(to)X
  7413. +3038(control)X
  7414. +3337(the)X
  7415. +3481(reconstruction)X
  7416. +576 4720(of)N
  7417. +685(the)X
  7418. +832(user)X
  7419. +1021(program)X
  7420. +1376(and)X
  7421. +1544(the)X
  7422. +1691(execution)X
  7423. +2095(of)X
  7424. +2205(the)X
  7425. +2 f
  7426. +2353(inferior)X
  7427. +1 f
  7428. +2677(process,)X
  7429. +3019(i.e.,)X
  7430. +3191(the)X
  7431. +3339(process)X
  7432. +3657(executing)X
  7433. +576 4872(the)N
  7434. +720(program)X
  7435. +1072(being)X
  7436. +1312(debugged.)X
  7437. +1760(For)X
  7438. +1919(example,)X
  7439. +2296(a)X
  7440. +2365(programmer)X
  7441. +2866(can)X
  7442. +3025(use)X
  7443. +3178(a)X
  7444. +3246(debugger)X
  7445. +3629(to)X
  7446. +3729(stop)X
  7447. +3914(the)X
  7448. +576 5024(inferior)N
  7449. +893(process)X
  7450. +1209(and)X
  7451. +1376(invoke)X
  7452. +2 f
  7453. +1666(dld)X
  7454. +1 f
  7455. +1817(to)X
  7456. +1920(remove)X
  7457. +2237(the)X
  7458. +2384(erroneous)X
  7459. +2792(routines,)X
  7460. +3155(correct)X
  7461. +3452(them,)X
  7462. +3698(and)X
  7463. +3866(then)X
  7464. +576 5176(link)N
  7465. +761(them)X
  7466. +988(in)X
  7467. +1097(again.)X
  7468. +1388(New)X
  7469. +1603(debugging)X
  7470. +2043(routines)X
  7471. +2387(can)X
  7472. +2555(be)X
  7473. +2680(linked)X
  7474. +2955(into)X
  7475. +3139(the)X
  7476. +3291(inferior)X
  7477. +3614(process)X
  7478. +3936(on)X
  7479. +576 5328(demand.)N
  7480. +955(This)X
  7481. +1152(feature)X
  7482. +1446(is)X
  7483. +1536(particularly)X
  7484. +2007(useful)X
  7485. +2268(when)X
  7486. +2502(the)X
  7487. +2647(need)X
  7488. +2856(for)X
  7489. +2995(such)X
  7490. +3198(debugging)X
  7491. +3631(routines)X
  7492. +3968(is)X
  7493. +576 5480(not)N
  7494. +733(realized)X
  7495. +1073(until)X
  7496. +1284(the)X
  7497. +1436(program)X
  7498. +1796(has)X
  7499. +1958(been)X
  7500. +2174(executing)X
  7501. +2583(for)X
  7502. +2729(a)X
  7503. +2806(long)X
  7504. +3011(time)X
  7505. +3216(and)X
  7506. +3388(\256nally)X
  7507. +3667(arrives)X
  7508. +3962(at)X
  7509. +576 5632(some)N
  7510. +803(state)X
  7511. +1004(of)X
  7512. +1108(critical)X
  7513. +1401(importance)X
  7514. +1859(for)X
  7515. +1995(debugging.)X
  7516. +
  7517. +19 p
  7518. +%%Page: 19 20
  7519. +5(Helvetica-Narrow)xf 5 f
  7520. +12 s 0 xH 0 xS 5 f
  7521. +1 f
  7522. +10 s
  7523. +0 32(--)N
  7524. +4323(--)X
  7525. +12 s
  7526. +2200 616(-)N
  7527. +2256(19)X
  7528. +2376(-)X
  7529. +3362(October)X
  7530. +3696(15,)X
  7531. +3840(1990)X
  7532. +776 1016(Just)N
  7533. +962(as)X
  7534. +1079(incremental)X
  7535. +1572(program)X
  7536. +1936(testing)X
  7537. +2231(is)X
  7538. +2333(made)X
  7539. +2580(possible,)X
  7540. +2 f
  7541. +2957(dld)X
  7542. +1 f
  7543. +3118(allows)X
  7544. +3407(un\256nished)X
  7545. +3845(frag-)X
  7546. +576 1168(ments)N
  7547. +840(of)X
  7548. +954(a)X
  7549. +1030(program)X
  7550. +1389(to)X
  7551. +1497(be)X
  7552. +1621(debugged.)X
  7553. +2076(For)X
  7554. +2242(example,)X
  7555. +2626(a)X
  7556. +2702(programmer)X
  7557. +3211(might)X
  7558. +3469(want)X
  7559. +3689(to)X
  7560. +3797(debug)X
  7561. +576 1320(and)N
  7562. +740(test)X
  7563. +899(the)X
  7564. +1042(symbol)X
  7565. +1351(table)X
  7566. +1565(routines)X
  7567. +1901(of)X
  7568. +2007(a)X
  7569. +2076(compiler)X
  7570. +2445(before)X
  7571. +2717(moving)X
  7572. +3037(on)X
  7573. +3159(to)X
  7574. +3260(\256nish)X
  7575. +3499(the)X
  7576. +3643(rest)X
  7577. +3808(of)X
  7578. +3914(the)X
  7579. +576 1472(program.)N
  7580. +983(S/he)X
  7581. +1187(might)X
  7582. +1445(set)X
  7583. +1585(up)X
  7584. +1714(a)X
  7585. +1790(debugger)X
  7586. +2181(for)X
  7587. +2326(the)X
  7588. +2476(program)X
  7589. +2834(shown)X
  7590. +3116(in)X
  7591. +3223(\256gure)X
  7592. +3479(2,)X
  7593. +3583(and)X
  7594. +3754(specify)X
  7595. +576 1624(that)N
  7596. +759(these)X
  7597. +996(functions)X
  7598. +1393(are)X
  7599. +1550(to)X
  7600. +1664(be)X
  7601. +1794(linked)X
  7602. +2074(in)X
  7603. +2188(and)X
  7604. +2366(invoked.)X
  7605. +2763(The)X
  7606. +2952(programmer)X
  7607. +3467(could)X
  7608. +3720(then)X
  7609. +3925(set)X
  7610. +576 1776(breakpoints,)N
  7611. +1081(examine)X
  7612. +1440(or)X
  7613. +1551(modify)X
  7614. +1860(program)X
  7615. +2217(variables,)X
  7616. +2620(or)X
  7617. +2731(single)X
  7618. +2992(step)X
  7619. +3178(through)X
  7620. +3508(the)X
  7621. +3657(execution)X
  7622. +576 1928(of)N
  7623. +680(statements)X
  7624. +1111(in)X
  7625. +1210(these)X
  7626. +1432(functions)X
  7627. +1814(in)X
  7628. +1913(the)X
  7629. +2055(same)X
  7630. +2278(way)X
  7631. +2463(as)X
  7632. +2568(debugging)X
  7633. +2999(a)X
  7634. +3067(complete)X
  7635. +3446(program.)X
  7636. +3845(Note)X
  7637. +576 2080(that)N
  7638. +750(information)X
  7639. +1234(such)X
  7640. +1439(as)X
  7641. +1548(line)X
  7642. +1722(numbers)X
  7643. +2081(or)X
  7644. +2189(variable)X
  7645. +2528(names)X
  7646. +2802(of)X
  7647. +2910(these)X
  7648. +3136(functions)X
  7649. +3522(would)X
  7650. +3790(not)X
  7651. +3941(be)X
  7652. +576 2232(known)N
  7653. +883(by)X
  7654. +1025(the)X
  7655. +1189(debugger,)X
  7656. +1617(and)X
  7657. +1803(must)X
  7658. +2037(be)X
  7659. +2175(loaded)X
  7660. +2479(explicitly)X
  7661. +2891(if)X
  7662. +2997(source-level)X
  7663. +3515(debugging)X
  7664. +3968(is)X
  7665. +576 2384(desired.)N
  7666. +931(Incremental)X
  7667. +1421(loading)X
  7668. +1739(of)X
  7669. +1847(symbol)X
  7670. +2158(table)X
  7671. +2374(information)X
  7672. +2857(is)X
  7673. +2949(supported)X
  7674. +3356(by)X
  7675. +3480(some)X
  7676. +3711(state-of-)X
  7677. +576 2536(the-art)N
  7678. +852(debuggers,)X
  7679. +1295(such)X
  7680. +1495(as)X
  7681. +1599(Dalek)X
  7682. +10 s
  7683. +1829 2496(12)N
  7684. +12 s
  7685. +1933 2536(and)N
  7686. +2 f
  7687. +2096(gdb)X
  7688. +1 f
  7689. +10 s
  7690. +2496(13)Y
  7691. +12 s
  7692. +2536(.)Y
  7693. +776 2716(Another)N
  7694. +1119(important)X
  7695. +1522(debugging)X
  7696. +1956(application)X
  7697. +2414(for)X
  7698. +2 f
  7699. +2555(dld)X
  7700. +1 f
  7701. +2707(is)X
  7702. +2800(to)X
  7703. +2904(help)X
  7704. +3099(speed)X
  7705. +3347(up)X
  7706. +3472(the)X
  7707. +3619(interaction)X
  7708. +576 2868(between)N
  7709. +953(the)X
  7710. +1127(debugger)X
  7711. +1541(and)X
  7712. +1736(the)X
  7713. +1910(inferior)X
  7714. +2255(process.)X
  7715. +2647(Under)X
  7716. +2943(most)X
  7717. +3186(operating)X
  7718. +3606(systems,)X
  7719. +3989(a)X
  7720. +576 3020(debugger)N
  7721. +958(can)X
  7722. +1116(only)X
  7723. +1311(control)X
  7724. +1609(the)X
  7725. +1752(execution)X
  7726. +2152(or)X
  7727. +2257(modify)X
  7728. +2560(the)X
  7729. +2703(memory)X
  7730. +3049(image)X
  7731. +3310(of)X
  7732. +3415(the)X
  7733. +3558(inferior)X
  7734. +3872(pro-)X
  7735. +576 3172(cess)N
  7736. +780(through)X
  7737. +1123(a)X
  7738. +1210(protected)X
  7739. +1613(system)X
  7740. +1924(call,)X
  7741. +2132(e.g.,)X
  7742. +5 f
  7743. +2337(ptrace)X
  7744. +1 f
  7745. +2599(in)X
  7746. +2717(UNIX.)X
  7747. +3047(This)X
  7748. +3261(system)X
  7749. +3571(call)X
  7750. +3754(usually)X
  7751. +576 3324(involves)N
  7752. +933(a)X
  7753. +1007(considerable)X
  7754. +1525(amount)X
  7755. +1845(of)X
  7756. +1956(overhead.)X
  7757. +2389(For)X
  7758. +2554(example,)X
  7759. +2937(each)X
  7760. +3146(call)X
  7761. +3318(to)X
  7762. +5 f
  7763. +3423(ptrace)X
  7764. +1 f
  7765. +3674(results)X
  7766. +3957(in)X
  7767. +576 3476(two)N
  7768. +756(context)X
  7769. +1076(switches)X
  7770. +1443(between)X
  7771. +1800(the)X
  7772. +1954(debugger)X
  7773. +2348(and)X
  7774. +2522(the)X
  7775. +2675(inferior)X
  7776. +2999(processes.)X
  7777. +3450(However,)X
  7778. +3861(with)X
  7779. +576 3628(the)N
  7780. +727(help)X
  7781. +926(of)X
  7782. +1039(dynamic)X
  7783. +1404(linking,)X
  7784. +1734(a)X
  7785. +1810(debugger)X
  7786. +2201(can)X
  7787. +2368(inject)X
  7788. +2616(the)X
  7789. +2767(most)X
  7790. +2987(frequently)X
  7791. +3416(used)X
  7792. +3626(debugging)X
  7793. +576 3780(functions)N
  7794. +982(into)X
  7795. +1180(the)X
  7796. +1345(inferior)X
  7797. +1681(process's)X
  7798. +2085(address)X
  7799. +2420(space,)X
  7800. +2705(insert)X
  7801. +2966(calls)X
  7802. +3190(to)X
  7803. +3312(these)X
  7804. +3557(functions)X
  7805. +3962(at)X
  7806. +576 3932(appropriate)N
  7807. +1040(locations)X
  7808. +1413(in)X
  7809. +1513(the)X
  7810. +1656(inferior's)X
  7811. +2039(code,)X
  7812. +2270(and)X
  7813. +2434(then)X
  7814. +2625(allow)X
  7815. +2864(the)X
  7816. +3007(inferior)X
  7817. +3322(process)X
  7818. +3636(to)X
  7819. +3737(execute)X
  7820. +576 4084(without)N
  7821. +896(any)X
  7822. +1061(intervention)X
  7823. +1553(from)X
  7824. +1765(the)X
  7825. +1908(debugger.)X
  7826. +2339(Control)X
  7827. +2658(is)X
  7828. +2747(passed)X
  7829. +3028(back)X
  7830. +3235(to)X
  7831. +3335(the)X
  7832. +3478(debugger)X
  7833. +3861(only)X
  7834. +576 4236(when)N
  7835. +808(necessary.)X
  7836. +776 4416(For)N
  7837. +938(example,)X
  7838. +1318(consider)X
  7839. +1673(a)X
  7840. +1745(conditional)X
  7841. +2209(breakpoint)X
  7842. +2651(that)X
  7843. +2826(is)X
  7844. +2920(put)X
  7845. +3073(into)X
  7846. +3253(the)X
  7847. +3401(inferior)X
  7848. +3720(process.)X
  7849. +576 4568(That)N
  7850. +790(is,)X
  7851. +915(the)X
  7852. +1070(inferior)X
  7853. +1396(process)X
  7854. +1721(is)X
  7855. +1822(allowed)X
  7856. +2164(to)X
  7857. +2276(execute)X
  7858. +2608(and)X
  7859. +2784(the)X
  7860. +2939(breakpoint)X
  7861. +3387(is)X
  7862. +3487(effective)X
  7863. +3861(only)X
  7864. +576 4720(when)N
  7865. +815(some)X
  7866. +1049(speci\256ed)X
  7867. +1422(condition)X
  7868. +1817(is)X
  7869. +1912(satis\256ed.)X
  7870. +2306(Evaluation)X
  7871. +2755(of)X
  7872. +2866(the)X
  7873. +3015(condition)X
  7874. +3411(might)X
  7875. +3668(involve)X
  7876. +3989(a)X
  7877. +576 4872(large)N
  7878. +795(amount)X
  7879. +1110(of)X
  7880. +1216(data,)X
  7881. +1426(e.g.,)X
  7882. +1614(checking)X
  7883. +1987(if)X
  7884. +2071(an)X
  7885. +2187(array)X
  7886. +2410(is)X
  7887. +2499(sorted.)X
  7888. +2807(Also,)X
  7889. +3037(the)X
  7890. +3180(inferior)X
  7891. +3494(process)X
  7892. +3807(might)X
  7893. +576 5024(hit)N
  7894. +727(the)X
  7895. +894(breakpoint)X
  7896. +1355(many)X
  7897. +1618(times)X
  7898. +1876(before)X
  7899. +2172(the)X
  7900. +2340(given)X
  7901. +2604(condition)X
  7902. +3018(becomes)X
  7903. +3405(true.)X
  7904. +3653(If)X
  7905. +3767(all)X
  7906. +3914(the)X
  7907. +576 5176(required)N
  7908. +928(information)X
  7909. +1414(is)X
  7910. +1509(transferred)X
  7911. +1957(via)X
  7912. +2105(a)X
  7913. +2178(system)X
  7914. +2475(call)X
  7915. +2645(to)X
  7916. +2750(the)X
  7917. +2898(debugger)X
  7918. +3286(everytime)X
  7919. +3702(the)X
  7920. +3850(infe-)X
  7921. +576 5328(rior)N
  7922. +745(process)X
  7923. +1063(hits)X
  7924. +1232(the)X
  7925. +1380(breakpoint,)X
  7926. +1846(the)X
  7927. +1994(overhead)X
  7928. +2377(involved)X
  7929. +2744(would)X
  7930. +3014(be)X
  7931. +3135(very)X
  7932. +3337(high.)X
  7933. +3587(With)X
  7934. +2 f
  7935. +3811(dld)X
  7936. +1 f
  7937. +3934(,)X
  7938. +3989(a)X
  7939. +576 5480(conditional)N
  7940. +1047(breakpoint)X
  7941. +1496(can)X
  7942. +1667(be)X
  7943. +1795(implemented)X
  7944. +2335(by)X
  7945. +2467(inserting)X
  7946. +2840(code)X
  7947. +3058(for)X
  7948. +3206(the)X
  7949. +3360(evaluation)X
  7950. +3798(of)X
  7951. +3914(the)X
  7952. +576 5632(condition)N
  7953. +977(into)X
  7954. +1164(the)X
  7955. +1319(inferior)X
  7956. +1645(process.)X
  7957. +2018(Only)X
  7958. +2247(when)X
  7959. +2492(the)X
  7960. +2647(speci\256ed)X
  7961. +3026(condition)X
  7962. +3427(is)X
  7963. +3529(satis\256ed)X
  7964. +3882(will)X
  7965. +576 5784(control)N
  7966. +879(be)X
  7967. +1000(passed)X
  7968. +1285(back)X
  7969. +1496(to)X
  7970. +1600(the)X
  7971. +1747(debugger.)X
  7972. +2182(This)X
  7973. +2382(scheme)X
  7974. +2700(can)X
  7975. +2863(be)X
  7976. +2983(achieved)X
  7977. +3355(as)X
  7978. +3464(follows:)X
  7979. +3832(First,)X
  7980. +
  7981. +20 p
  7982. +%%Page: 20 21
  7983. +5(Helvetica-Narrow)xf 5 f
  7984. +12 s 0 xH 0 xS 5 f
  7985. +1 f
  7986. +10 s
  7987. +0 32(--)N
  7988. +4323(--)X
  7989. +12 s
  7990. +2200 616(-)N
  7991. +2256(20)X
  7992. +2376(-)X
  7993. +3362(October)X
  7994. +3696(15,)X
  7995. +3840(1990)X
  7996. +576 1016(the)N
  7997. +722(debugging)X
  7998. +1156(code)X
  7999. +1366(is)X
  8000. +1458(linked)X
  8001. +1727(into)X
  8002. +1905(the)X
  8003. +2051(inferior)X
  8004. +2368(process's)X
  8005. +2754(address)X
  8006. +3071(space.)X
  8007. +3362(Second,)X
  8008. +3698(a)X
  8009. +3770(branch)X
  8010. +576 1168(instruction)N
  8011. +1013(is)X
  8012. +1102(overwritten)X
  8013. +1571(into)X
  8014. +1746(the)X
  8015. +1889(location)X
  8016. +2225(of)X
  8017. +2330(the)X
  8018. +2473(breakpoint)X
  8019. +2910(so)X
  8020. +3020(that)X
  8021. +3190(the)X
  8022. +3332(debugging)X
  8023. +3762(code)X
  8024. +3968(is)X
  8025. +576 1320(executed)N
  8026. +955(instead.)X
  8027. +1312(Lastly,)X
  8028. +1613(the)X
  8029. +1767(machine)X
  8030. +2130(instructions)X
  8031. +2615(that)X
  8032. +2797(were)X
  8033. +3021(originally)X
  8034. +3433(in)X
  8035. +3545(this)X
  8036. +3721(location)X
  8037. +576 1472(are)N
  8038. +728(moved)X
  8039. +1024(to)X
  8040. +1133(the)X
  8041. +1285(end)X
  8042. +1458(of)X
  8043. +1572(the)X
  8044. +1724(debugging)X
  8045. +2164(code.)X
  8046. +2428(By)X
  8047. +2574(cleverly)X
  8048. +2919(rearranging)X
  8049. +3397(and)X
  8050. +3570(relocating)X
  8051. +3989(a)X
  8052. +576 1624(few)N
  8053. +757(machine)X
  8054. +1121(instructions,)X
  8055. +1631(the)X
  8056. +1786(insertion)X
  8057. +2161(of)X
  8058. +2279(the)X
  8059. +2435(branch)X
  8060. +2735(to)X
  8061. +2848(and)X
  8062. +3025(from)X
  8063. +3250(the)X
  8064. +3406(debugging)X
  8065. +3850(code)X
  8066. +576 1776(becomes)N
  8067. +940(transparent)X
  8068. +1395(to)X
  8069. +1496(the)X
  8070. +1640(original)X
  8071. +1966(execution.)X
  8072. +2415(Since)X
  8073. +2655(many)X
  8074. +2895(unnecessary)X
  8075. +3391(context)X
  8076. +3701(switches)X
  8077. +576 1928(and)N
  8078. +742(data)X
  8079. +930(transfers)X
  8080. +1288(between)X
  8081. +1636(the)X
  8082. +1781(debugger)X
  8083. +2166(and)X
  8084. +2332(the)X
  8085. +2477(inferior)X
  8086. +2793(are)X
  8087. +2938(eliminated,)X
  8088. +3398(the)X
  8089. +3544(ef\256ciency)X
  8090. +3952(of)X
  8091. +576 2080(interactive)N
  8092. +1008(debugging)X
  8093. +1438(is)X
  8094. +1526(greatly)X
  8095. +1818(improved.)X
  8096. +776 2260(An)N
  8097. +917(alternative)X
  8098. +1349(way)X
  8099. +1534(dynamic)X
  8100. +1891(linking)X
  8101. +2189(can)X
  8102. +2348(be)X
  8103. +2464(used)X
  8104. +2665(to)X
  8105. +2765(speed)X
  8106. +3009(up)X
  8107. +3130(the)X
  8108. +3273(interaction)X
  8109. +3711(between)X
  8110. +576 2412(the)N
  8111. +735(debugger)X
  8112. +1134(and)X
  8113. +1314(the)X
  8114. +1473(inferior)X
  8115. +1803(process)X
  8116. +2132(involves)X
  8117. +2499(the)X
  8118. +2658(use)X
  8119. +2827(of)X
  8120. +2948(shared)X
  8121. +3240(memory)X
  8122. +10 s
  8123. +3561 2372(14)N
  8124. +12 s
  8125. +2412(.)Y
  8126. +3730(A)X
  8127. +3839(large)X
  8128. +576 2564(block)N
  8129. +819(of)X
  8130. +928(memory)X
  8131. +1278(is)X
  8132. +1371(allocated)X
  8133. +1749(and)X
  8134. +1917(shared)X
  8135. +2197(between)X
  8136. +2548(the)X
  8137. +2696(debugger)X
  8138. +3084(and)X
  8139. +3253(the)X
  8140. +3401(inferior)X
  8141. +3720(process.)X
  8142. +576 2716(Then)N
  8143. +817(the)X
  8144. +978(program)X
  8145. +1347(to)X
  8146. +1465(be)X
  8147. +1599(debugged)X
  8148. +2016(is)X
  8149. +2123(dynamically)X
  8150. +2643(linked)X
  8151. +2927(and)X
  8152. +3109(loaded)X
  8153. +3408(into)X
  8154. +3600(this)X
  8155. +3781(shared)X
  8156. +576 2868(memory.)N
  8157. +970(Control)X
  8158. +1289(of)X
  8159. +1394(the)X
  8160. +1537(inferior)X
  8161. +1851(process)X
  8162. +2164(is)X
  8163. +2253(then)X
  8164. +2444(passed)X
  8165. +2726(to)X
  8166. +2827(the)X
  8167. +2971(main)X
  8168. +3190(procedure)X
  8169. +3601(of)X
  8170. +3707(this)X
  8171. +3872(pro-)X
  8172. +576 3020(gram.)N
  8173. +855(As)X
  8174. +994(a)X
  8175. +1070(result,)X
  8176. +1341(any)X
  8177. +1513(update)X
  8178. +1803(of)X
  8179. +1916(data)X
  8180. +2110(made)X
  8181. +2352(by)X
  8182. +2481(this)X
  8183. +2653(program)X
  8184. +3011(is)X
  8185. +3107(readily)X
  8186. +3407(observed)X
  8187. +3786(by)X
  8188. +3914(the)X
  8189. +576 3172(debugger)N
  8190. +980(without)X
  8191. +1320(any)X
  8192. +1505(system)X
  8193. +1819(call.)X
  8194. +2054(Also,)X
  8195. +2306(instructions)X
  8196. +2802(of)X
  8197. +2929(this)X
  8198. +3115(program)X
  8199. +3488(can)X
  8200. +3669(easily)X
  8201. +3941(be)X
  8202. +576 3324(modi\256ed)N
  8203. +943(because)X
  8204. +1273(they)X
  8205. +1464(are)X
  8206. +1607(loaded)X
  8207. +1889(in)X
  8208. +1989(the)X
  8209. +2132(shared)X
  8210. +2408(memory,)X
  8211. +2778(to)X
  8212. +2877(which)X
  8213. +3136(the)X
  8214. +3278(debugger)X
  8215. +3660(has)X
  8216. +3812(direct)X
  8217. +576 3476(write)N
  8218. +798(access.)X
  8219. +
  8220. +21 p
  8221. +%%Page: 21 22
  8222. +5(Helvetica-Narrow)xf 5 f
  8223. +12 s 0 xH 0 xS 5 f
  8224. +1 f
  8225. +10 s
  8226. +0 32(--)N
  8227. +4323(--)X
  8228. +12 s
  8229. +2200 616(-)N
  8230. +2256(21)X
  8231. +2376(-)X
  8232. +3362(October)X
  8233. +3696(15,)X
  8234. +3840(1990)X
  8235. +2022 1016(DISCUSSION)N
  8236. +576 1348(The)N
  8237. +765(ability)X
  8238. +1051(to)X
  8239. +1165(dynamically)X
  8240. +1681(link)X
  8241. +1870(and)X
  8242. +2048(unlink)X
  8243. +2333(object)X
  8244. +2608(modules)X
  8245. +2973(from)X
  8246. +3199(an)X
  8247. +3329(executing)X
  8248. +3744(process)X
  8249. +576 1500(provides)N
  8250. +935(much)X
  8251. +1177(\257exibility)X
  8252. +1579(in)X
  8253. +1681(the)X
  8254. +1826(construction)X
  8255. +2329(of)X
  8256. +2436(a)X
  8257. +2506(program.)X
  8258. +2907(This)X
  8259. +3105(ability)X
  8260. +3379(allows)X
  8261. +3657(the)X
  8262. +3802(build-)X
  8263. +576 1652(ing)N
  8264. +737(blocks)X
  8265. +1026(of)X
  8266. +1144(a)X
  8267. +1225(program)X
  8268. +1589(to)X
  8269. +1702(change)X
  8270. +2014(or)X
  8271. +2133(evolve)X
  8272. +2429(with)X
  8273. +2639(time:)X
  8274. +2901(it)X
  8275. +2994(turns)X
  8276. +3225(a)X
  8277. +3307(``program'')X
  8278. +3800(into)X
  8279. +3989(a)X
  8280. +576 1804(dynamic)N
  8281. +937(entity.)X
  8282. +1234(The)X
  8283. +1413(functionalities)X
  8284. +1994(of)X
  8285. +2103(such)X
  8286. +2308(a)X
  8287. +2380(program)X
  8288. +2735(can)X
  8289. +2898(be)X
  8290. +3018(changed)X
  8291. +3368(in)X
  8292. +3472(response)X
  8293. +3837(to)X
  8294. +3941(its)X
  8295. +576 1956(interactions)N
  8296. +1070(with)X
  8297. +1285(the)X
  8298. +1447(environment.)X
  8299. +2026(As)X
  8300. +2176(a)X
  8301. +2263(result,)X
  8302. +2545(dynamic)X
  8303. +2921(link)X
  8304. +3115(editing)X
  8305. +3427(makes)X
  8306. +3717(possible)X
  8307. +576 2108(many)N
  8308. +814(new)X
  8309. +998(kinds)X
  8310. +1230(of)X
  8311. +1334(applications)X
  8312. +1824(that)X
  8313. +1993(would)X
  8314. +2257(otherwise)X
  8315. +2655(be)X
  8316. +2770(very)X
  8317. +2965(hard)X
  8318. +3160(to)X
  8319. +3259(implement.)X
  8320. +776 2288(Systems)N
  8321. +1130(with)X
  8322. +1335(similar)X
  8323. +1637(capabilities)X
  8324. +2111(have)X
  8325. +2327(been)X
  8326. +2543(introduced)X
  8327. +2989(before.)X
  8328. +3318(For)X
  8329. +3486(example,)X
  8330. +3872(pro-)X
  8331. +576 2440(grams)N
  8332. +836(written)X
  8333. +1134(in)X
  8334. +1234(languages)X
  8335. +1644(such)X
  8336. +1845(as)X
  8337. +1950(LISP)X
  8338. +2172(or)X
  8339. +2277(Prolog)X
  8340. +2558(can)X
  8341. +2717(load)X
  8342. +2908(in)X
  8343. +3008(and)X
  8344. +3171(execute)X
  8345. +3490(new)X
  8346. +3674(functions)X
  8347. +576 2592(at)N
  8348. +670(any)X
  8349. +833(time)X
  8350. +1029(during)X
  8351. +1304(their)X
  8352. +1506(execution.)X
  8353. +1954(However,)X
  8354. +2355(with)X
  8355. +2551(only)X
  8356. +2747(static)X
  8357. +2976(linking,)X
  8358. +3298(these)X
  8359. +3521(systems)X
  8360. +3850(have)X
  8361. +576 2744(to)N
  8362. +691(be)X
  8363. +822(built)X
  8364. +1039(on)X
  8365. +1175(top)X
  8366. +1338(of)X
  8367. +1458(an)X
  8368. +1588(interpreter)X
  8369. +2029(or)X
  8370. +2148(a)X
  8371. +2230(simulated)X
  8372. +2644(machine,)X
  8373. +3034(which)X
  8374. +3308(always)X
  8375. +3614(runs)X
  8376. +3818(many)X
  8377. +576 2896(times)N
  8378. +812(slower)X
  8379. +1096(than)X
  8380. +1290(real)X
  8381. +1463(machines.)X
  8382. +1903(Dynamic)X
  8383. +2284(link)X
  8384. +2462(editing,)X
  8385. +2782(on)X
  8386. +2906(the)X
  8387. +3052(other)X
  8388. +3278(hand,)X
  8389. +3517(combines)X
  8390. +3914(the)X
  8391. +576 3048(high)N
  8392. +806(execution)X
  8393. +1240(speed)X
  8394. +1518(of)X
  8395. +1657(native)X
  8396. +1952(machine)X
  8397. +2338(code)X
  8398. +2579(with)X
  8399. +2808(the)X
  8400. +2984(\257exibility)X
  8401. +3417(of)X
  8402. +3555(dynamically)X
  8403. +576 3200(modi\256able)N
  8404. +1012(programs.)X
  8405. +776 3380(As)N
  8406. +922(a)X
  8407. +1005(positive)X
  8408. +1350(side)X
  8409. +1545(effect,)X
  8410. +2 f
  8411. +1829(dld)X
  8412. +1 f
  8413. +1992(helps)X
  8414. +2235(speed)X
  8415. +2494(up)X
  8416. +2630(the)X
  8417. +2788(program)X
  8418. +3154(development)X
  8419. +3692(cycle)X
  8420. +3936(by)X
  8421. +576 3532(allowing)N
  8422. +963(incremental)X
  8423. +1469(program)X
  8424. +1845(construction)X
  8425. +2371(and)X
  8426. +2560(online)X
  8427. +2851(maintenance.)X
  8428. +3437(As)X
  8429. +3592(the)X
  8430. +3759(sample)X
  8431. +576 3684(applications)N
  8432. +1073(illustrate,)X
  8433. +1466(when)X
  8434. +1705(new)X
  8435. +1896(modules)X
  8436. +2253(are)X
  8437. +2402(added)X
  8438. +2663(to)X
  8439. +2769(a)X
  8440. +2843(program,)X
  8441. +3225(only)X
  8442. +3428(part)X
  8443. +3610(of)X
  8444. +3722(the)X
  8445. +3872(pro-)X
  8446. +576 3836(gram)N
  8447. +808(needs)X
  8448. +1061(to)X
  8449. +1170(be)X
  8450. +1295(modi\256ed\320the)X
  8451. +1884(rest)X
  8452. +2056(of)X
  8453. +2169(the)X
  8454. +2320(program)X
  8455. +2679(need)X
  8456. +2894(not)X
  8457. +3050(be)X
  8458. +3174(relinked.)X
  8459. +3571(Incremental)X
  8460. +576 3988(linking)N
  8461. +878(can)X
  8462. +1041(save)X
  8463. +1241(a)X
  8464. +1313(considerable)X
  8465. +1830(amount)X
  8466. +2149(of)X
  8467. +2259(time,)X
  8468. +2485(especially)X
  8469. +2901(for)X
  8470. +3043(large)X
  8471. +3266(programs)X
  8472. +3659(that)X
  8473. +3834(often)X
  8474. +576 4140(take)N
  8475. +776(many)X
  8476. +1029(minutes)X
  8477. +1373(to)X
  8478. +1487(link.)X
  8479. +1724(Furthermore,)X
  8480. +2268(the)X
  8481. +2425(size)X
  8482. +2614(of)X
  8483. +2733(the)X
  8484. +2890(executable)X
  8485. +3341(\256les)X
  8486. +3539(and)X
  8487. +3716(the)X
  8488. +3872(disk)X
  8489. +576 4292(storage)N
  8490. +880(requirements)X
  8491. +1409(can)X
  8492. +1569(be)X
  8493. +1686(reduced)X
  8494. +2017(because)X
  8495. +2348(the)X
  8496. +2492(system)X
  8497. +2785(can)X
  8498. +2945(now)X
  8499. +3136(keep)X
  8500. +3344(only)X
  8501. +3541(one)X
  8502. +3706(copy)X
  8503. +3920(for)X
  8504. +576 4444(the)N
  8505. +720(commonly)X
  8506. +1158(used)X
  8507. +1360(library)X
  8508. +1643(routines)X
  8509. +1979(and)X
  8510. +2144(have)X
  8511. +2352(them)X
  8512. +2571(dynamically)X
  8513. +3073(linked)X
  8514. +3339(into)X
  8515. +3514(the)X
  8516. +3657(executing)X
  8517. +576 4596(process)N
  8518. +888(on)X
  8519. +1008(demand.)X
  8520. +776 4776(Another)N
  8521. +1126(potential)X
  8522. +1499(optimization)X
  8523. +2022(of)X
  8524. +2137(storage)X
  8525. +2450(requirement)X
  8526. +2951(is)X
  8527. +3050(to)X
  8528. +3160(allow)X
  8529. +3409(commonly)X
  8530. +3856(used)X
  8531. +576 4928(library)N
  8532. +896(routines)X
  8533. +1269(to)X
  8534. +1407(be)X
  8535. +1561(shared)X
  8536. +1875(among)X
  8537. +2200(multiple)X
  8538. +2584(processes.)X
  8539. +3062(Many)X
  8540. +3348(new)X
  8541. +3570(versions)X
  8542. +3952(of)X
  8543. +576 5080(UNIX)N
  8544. +10 s
  8545. +815 5040(2,)N
  8546. +888(3,)X
  8547. +961(4,)X
  8548. +1034(6)X
  8549. +12 s
  8550. +1100 5080(already)N
  8551. +1410(support)X
  8552. +1724(shared)X
  8553. +2002(library.)X
  8554. +2334(Although)X
  8555. +2724(the)X
  8556. +2869(current)X
  8557. +3169 0.2548(implementation)AX
  8558. +3802(of)X
  8559. +2 f
  8560. +3909(dld)X
  8561. +1 f
  8562. +576 5232(allocates)N
  8563. +949(storage)X
  8564. +1262(for)X
  8565. +1409(the)X
  8566. +1562(dynamically)X
  8567. +2073(linked)X
  8568. +2348(library)X
  8569. +2639(modules)X
  8570. +2999(in)X
  8571. +3108(the)X
  8572. +3260(private)X
  8573. +3562(data)X
  8574. +3757(area)X
  8575. +3952(of)X
  8576. +576 5384(individual)N
  8577. +993(process,)X
  8578. +1331(a)X
  8579. +1400(simple)X
  8580. +1683(modi\256cation)X
  8581. +2197(would)X
  8582. +2464(allow)X
  8583. +2705(the)X
  8584. +2850(process)X
  8585. +3165(to)X
  8586. +3267(use)X
  8587. +3422(the)X
  8588. +3567(shared)X
  8589. +3845(copy)X
  8590. +576 5536(instead.)N
  8591. +776 5716(The)N
  8592. +958(price)X
  8593. +1183(for)X
  8594. +1328(the)X
  8595. +1479(\257exibility)X
  8596. +1887(provided)X
  8597. +2262(by)X
  8598. +2 f
  8599. +2391(dld)X
  8600. +1 f
  8601. +2547(is)X
  8602. +2644(perhaps)X
  8603. +2976(the)X
  8604. +3127(overhead)X
  8605. +3513(in)X
  8606. +3621(processing)X
  8607. +576 5868(time)N
  8608. +776(for)X
  8609. +916(the)X
  8610. +1062(link)X
  8611. +1240(editing)X
  8612. +1536(and)X
  8613. +1702(the)X
  8614. +1847(extra)X
  8615. +2067(memory)X
  8616. +2415(required)X
  8617. +2763(for)X
  8618. +2902(holding)X
  8619. +3223(the)X
  8620. +3368(symbol)X
  8621. +3678(table)X
  8622. +3893(and)X
  8623. +
  8624. +22 p
  8625. +%%Page: 22 23
  8626. +5(Helvetica-Narrow)xf 5 f
  8627. +12 s 0 xH 0 xS 5 f
  8628. +1 f
  8629. +10 s
  8630. +0 32(--)N
  8631. +4323(--)X
  8632. +12 s
  8633. +2200 616(-)N
  8634. +2256(22)X
  8635. +2376(-)X
  8636. +3362(October)X
  8637. +3696(15,)X
  8638. +3840(1990)X
  8639. +576 1016(other)N
  8640. +808(bookkeeping)X
  8641. +1339(information.)X
  8642. +1876(In)X
  8643. +1990(practice,)X
  8644. +2354(the)X
  8645. +2506(time)X
  8646. +2712(spent)X
  8647. +2949(in)X
  8648. +3058(performing)X
  8649. +3525(both)X
  8650. +3730(the)X
  8651. +3882(link)X
  8652. +576 1168(and)N
  8653. +746(the)X
  8654. +895(unlink)X
  8655. +1172(operations)X
  8656. +1604(is)X
  8657. +1699(very)X
  8658. +1901(small)X
  8659. +2141(when)X
  8660. +2380(compared)X
  8661. +2791(with)X
  8662. +2993(that)X
  8663. +3169(spent)X
  8664. +3403(in)X
  8665. +3509(executing)X
  8666. +3914(the)X
  8667. +576 1320(program)N
  8668. +932(itself.)X
  8669. +1203(Once)X
  8670. +1436(the)X
  8671. +1584(linking)X
  8672. +1887(is)X
  8673. +1981(\256nished,)X
  8674. +2339(the)X
  8675. +2487(program)X
  8676. +2843(can)X
  8677. +3008(execute)X
  8678. +3334(at)X
  8679. +3435(the)X
  8680. +3584(same)X
  8681. +3813(speed)X
  8682. +576 1472(as)N
  8683. +688(if)X
  8684. +779(it)X
  8685. +864(were)X
  8686. +1082(statically)X
  8687. +1462(linked.)X
  8688. +1782(Although)X
  8689. +2176(a)X
  8690. +2250(dynamically)X
  8691. +2758(linked)X
  8692. +3030(function)X
  8693. +3382(must)X
  8694. +3600(be)X
  8695. +3722(invoked)X
  8696. +576 1624(indirectly)N
  8697. +985(through)X
  8698. +1323(a)X
  8699. +1405(pointer)X
  8700. +1717(\(as)X
  8701. +1868(shown)X
  8702. +2157(in)X
  8703. +2271(\256gure)X
  8704. +2535(2\),)X
  8705. +2679(this)X
  8706. +2858(indirection)X
  8707. +3316(involves)X
  8708. +3682(only)X
  8709. +3893(one)X
  8710. +576 1776(extra)N
  8711. +795(pointer)X
  8712. +1094(reference.)X
  8713. +1527(That)X
  8714. +1730(extra)X
  8715. +1948(cost)X
  8716. +2128(is)X
  8717. +2217(negligible)X
  8718. +2628(compared)X
  8719. +3033(with)X
  8720. +3229(the)X
  8721. +3372(cost)X
  8722. +3552(of)X
  8723. +3657(executing)X
  8724. +576 1928(typically)N
  8725. +939(hundreds)X
  8726. +1316(of)X
  8727. +1421(machine)X
  8728. +1773(instructions)X
  8729. +2247(in)X
  8730. +2347(the)X
  8731. +2490(body)X
  8732. +2707(of)X
  8733. +2812(a)X
  8734. +2881(function.)X
  8735. +3276(In)X
  8736. +3382(addition,)X
  8737. +3748(prelim-)X
  8738. +576 2080(inary)N
  8739. +799(studies)X
  8740. +1091(show)X
  8741. +1318(that)X
  8742. +1488(the)X
  8743. +1631(vast)X
  8744. +1811(majority)X
  8745. +2163(of)X
  8746. +2268(the)X
  8747. +2411(time)X
  8748. +2608(spent)X
  8749. +2835(in)X
  8750. +5 f
  8751. +2932(dlink)X
  8752. +1 f
  8753. +3117(is)X
  8754. +3205(for)X
  8755. +3341(reading)X
  8756. +3654(the)X
  8757. +3796(object)X
  8758. +576 2232(\256les)N
  8759. +772(or)X
  8760. +888(libraries)X
  8761. +1240(from)X
  8762. +1463(disk.)X
  8763. +1707(In)X
  8764. +1823(other)X
  8765. +2057(words,)X
  8766. +2351(the)X
  8767. +2505(overhead)X
  8768. +2894(in)X
  8769. +3006(resolving)X
  8770. +3401(external)X
  8771. +3749(symbol)X
  8772. +576 2384(references)N
  8773. +996(and)X
  8774. +1159(maintaining)X
  8775. +1644(the)X
  8776. +1786(symbol)X
  8777. +2093(table)X
  8778. +2305(is)X
  8779. +2393(insigni\256cant.)X
  8780. +776 2564(The)N
  8781. +950(current)X
  8782. +1247 0.2548(implementation)AX
  8783. +1877(of)X
  8784. +5 f
  8785. +1979(function_executable_p)X
  8786. +1 f
  8787. +2793(is)X
  8788. +2882(not)X
  8789. +3030(complete)X
  8790. +3409(according)X
  8791. +3814(to)X
  8792. +3914(the)X
  8793. +576 2716(given)N
  8794. +832(de\256nition)X
  8795. +1243(of)X
  8796. +1365 0.2356(executability.)AX
  8797. +1953(External)X
  8798. +2321(references)X
  8799. +2758(through)X
  8800. +3098(pointers)X
  8801. +3449(are)X
  8802. +3608(not)X
  8803. +3772(traced.)X
  8804. +576 2868(That)N
  8805. +789(is,)X
  8806. +913(this)X
  8807. +1089(function)X
  8808. +1447(will)X
  8809. +1634(still)X
  8810. +1816(return)X
  8811. +2083(non-zero)X
  8812. +2462(if)X
  8813. +2558(the)X
  8814. +2713(named)X
  8815. +3007(function)X
  8816. +3365(uses)X
  8817. +3567(a)X
  8818. +3647(pointer)X
  8819. +3957(to)X
  8820. +576 3020(indirectly)N
  8821. +993(call)X
  8822. +1180(another)X
  8823. +1516(function)X
  8824. +1883(that)X
  8825. +2074(has)X
  8826. +2248(already)X
  8827. +2578(been)X
  8828. +2806(unlinked.)X
  8829. +3237(Furthermore,)X
  8830. +3788(if)X
  8831. +3893(one)X
  8832. +576 3172(external)N
  8833. +913(reference)X
  8834. +1298(of)X
  8835. +1404(an)X
  8836. +1521(object)X
  8837. +1783(module)X
  8838. +2098(is)X
  8839. +2188(unresolved,)X
  8840. +2660(all)X
  8841. +2783(functions)X
  8842. +3167(de\256ned)X
  8843. +3476(in)X
  8844. +3577(this)X
  8845. +3743(module)X
  8846. +576 3324(are)N
  8847. +723(considered)X
  8848. +1169(unexecutable.)X
  8849. +1755(This)X
  8850. +1955(approximation)X
  8851. +2546(results)X
  8852. +2826(in)X
  8853. +2930(a)X
  8854. +3001(very)X
  8855. +3200(ef\256cient)X
  8856. +3544(implementa-)X
  8857. +576 3476(tion,)N
  8858. +774(albeit)X
  8859. +1013(conservative.)X
  8860. +776 3656(Like)N
  8861. +979(many)X
  8862. +1219(other)X
  8863. +1443(powerful)X
  8864. +1816(tools,)X
  8865. +2053(there)X
  8866. +2272(is)X
  8867. +2362(always)X
  8868. +2655(a)X
  8869. +2724(danger)X
  8870. +3012(that)X
  8871. +2 f
  8872. +3184(dld)X
  8873. +1 f
  8874. +3334(could)X
  8875. +3575(be)X
  8876. +3693(misused.)X
  8877. +576 3808(Similar)N
  8878. +910(to)X
  8879. +1035(its)X
  8880. +1176(static)X
  8881. +1430(counterpart,)X
  8882. +1943(a)X
  8883. +2036(dynamic)X
  8884. +2418(linker)X
  8885. +2692(simply)X
  8886. +3003(combines)X
  8887. +3421(object)X
  8888. +3706(modules)X
  8889. +576 3960(together)N
  8890. +924(and)X
  8891. +1096(does)X
  8892. +1305(not)X
  8893. +1461(provide)X
  8894. +1788(any)X
  8895. +1960(extra)X
  8896. +2186(protection)X
  8897. +2610(on)X
  8898. +2739(the)X
  8899. +2890(existing)X
  8900. +3228(code)X
  8901. +3443(against)X
  8902. +3749(corrup-)X
  8903. +576 4112(tion.)N
  8904. +801(For)X
  8905. +961(example,)X
  8906. +2 f
  8907. +1339(dld)X
  8908. +1 f
  8909. +1489(does)X
  8910. +1692(not)X
  8911. +1842(check)X
  8912. +2094(if)X
  8913. +2180(a)X
  8914. +2250(function)X
  8915. +2598(to)X
  8916. +2700(be)X
  8917. +2818(unlinked)X
  8918. +3182(is)X
  8919. +3273(still)X
  8920. +3445(active)X
  8921. +3703(\(i.e.,)X
  8922. +3904(has)X
  8923. +576 4264(a)N
  8924. +649(corresponding)X
  8925. +1229(activation)X
  8926. +1640(record)X
  8927. +1917(on)X
  8928. +2044(the)X
  8929. +2193(stack\).)X
  8930. +2502(If)X
  8931. +2597(such)X
  8932. +2804(a)X
  8933. +2878(function)X
  8934. +3230(is)X
  8935. +3325(unlinked,)X
  8936. +3717(the)X
  8937. +3866(exe-)X
  8938. +576 4416(cuting)N
  8939. +848(process)X
  8940. +1167(might)X
  8941. +1423(crash)X
  8942. +1657(when)X
  8943. +1896(control)X
  8944. +2200(is)X
  8945. +2295(passed)X
  8946. +2582(back)X
  8947. +2795(to)X
  8948. +2900(it)X
  8949. +2984(because)X
  8950. +3319(the)X
  8951. +3467(memory)X
  8952. +3818(origi-)X
  8953. +576 4568(nally)N
  8954. +806(holding)X
  8955. +1137(the)X
  8956. +1292(code)X
  8957. +1511(for)X
  8958. +1660(the)X
  8959. +1815(function)X
  8960. +2173(might)X
  8961. +2435(have)X
  8962. +2654(been)X
  8963. +2873(garbage)X
  8964. +3216(collected)X
  8965. +3603(and)X
  8966. +3780(reallo-)X
  8967. +576 4720(cated.)N
  8968. +862(Also,)X
  8969. +1101(a)X
  8970. +1178(function)X
  8971. +1533(that)X
  8972. +1712(was)X
  8973. +1895(executable)X
  8974. +2342(at)X
  8975. +2446(one)X
  8976. +2619(point)X
  8977. +2851(in)X
  8978. +2960(time)X
  8979. +3166(might)X
  8980. +3425(not)X
  8981. +3582(be)X
  8982. +3706(so)X
  8983. +3824(when)X
  8984. +576 4872(other)N
  8985. +804(routines)X
  8986. +1144(are)X
  8987. +1293(removed.)X
  8988. +1709(Therefore,)X
  8989. +2144(the)X
  8990. +2 f
  8991. +2293 0.2865(executability)AX
  8992. +1 f
  8993. +2818(of)X
  8994. +2929(a)X
  8995. +3003(function)X
  8996. +3355(should)X
  8997. +3642(in)X
  8998. +3748(general)X
  8999. +576 5024(be)N
  9000. +719(veri\256ed)X
  9001. +1065(everytime)X
  9002. +1503(before)X
  9003. +1801(it)X
  9004. +1907(is)X
  9005. +2023(called,)X
  9006. +2329(or)X
  9007. +2460(everytime)X
  9008. +2897(after)X
  9009. +3125(modules)X
  9010. +3502(are)X
  9011. +3671(added)X
  9012. +3952(or)X
  9013. +576 5176(removed.)N
  9014. +776 5356(Another)N
  9015. +1115(potential)X
  9016. +1477(hazard)X
  9017. +1758(occurs)X
  9018. +2033(when)X
  9019. +2266(a)X
  9020. +2334(dynamically)X
  9021. +2836(linked)X
  9022. +3102(routine)X
  9023. +3400(is)X
  9024. +3489(erroneous)X
  9025. +3893(and)X
  9026. +576 5508(its)N
  9027. +693(invocation)X
  9028. +1126(could)X
  9029. +1366(crash)X
  9030. +1595(the)X
  9031. +1738(executing)X
  9032. +2138(process.)X
  9033. +2499(Thus,)X
  9034. +2740(programs)X
  9035. +3128(that)X
  9036. +3298(allow)X
  9037. +3537(user)X
  9038. +3722(custom-)X
  9039. +576 5660(ization)N
  9040. +872(by)X
  9041. +1001(means)X
  9042. +1280(of)X
  9043. +1393(dynamic)X
  9044. +1758(linking)X
  9045. +2064(expose)X
  9046. +2364(themselves)X
  9047. +2826(to)X
  9048. +2935(potential)X
  9049. +3307(misuse)X
  9050. +3608(or)X
  9051. +3722(destruc-)X
  9052. +576 5812(tion.)N
  9053. +799(In)X
  9054. +904(particular,)X
  9055. +1322(privileged)X
  9056. +1737(system)X
  9057. +2028(commands)X
  9058. +2469(should)X
  9059. +2749(never)X
  9060. +2987(allow)X
  9061. +3225(user)X
  9062. +3409(modi\256cation)X
  9063. +3920(for)X
  9064. +
  9065. +23 p
  9066. +%%Page: 23 24
  9067. +5(Helvetica-Narrow)xf 5 f
  9068. +12 s 0 xH 0 xS 5 f
  9069. +1 f
  9070. +10 s
  9071. +0 32(--)N
  9072. +4323(--)X
  9073. +12 s
  9074. +2200 616(-)N
  9075. +2256(23)X
  9076. +2376(-)X
  9077. +3362(October)X
  9078. +3696(15,)X
  9079. +3840(1990)X
  9080. +576 1016(the)N
  9081. +721(same)X
  9082. +946(reason)X
  9083. +1224(that)X
  9084. +1396(privileged)X
  9085. +1814(UNIX)X
  9086. +2080(commands)X
  9087. +2524(should)X
  9088. +2807(not)X
  9089. +2957(allow)X
  9090. +3198(shell)X
  9091. +3407(escapes)X
  9092. +10 s
  9093. +3701 976(15)N
  9094. +12 s
  9095. +1016(.)Y
  9096. +3856(Oth-)X
  9097. +576 1168(erwise,)N
  9098. +877(an)X
  9099. +994(intruder)X
  9100. +1325(can)X
  9101. +1485(easily)X
  9102. +1736(gain)X
  9103. +1928(unauthorized)X
  9104. +2457(access)X
  9105. +2729(to)X
  9106. +2830(system)X
  9107. +3122(resources)X
  9108. +3510(by)X
  9109. +3631(modifying)X
  9110. +576 1320(an)N
  9111. +695(existing)X
  9112. +1029(privileged)X
  9113. +1449(command.)X
  9114. +1906(For)X
  9115. +2068(other)X
  9116. +2295(application)X
  9117. +2753(programs,)X
  9118. +3169(a)X
  9119. +3241(well-de\256ned,)X
  9120. +3775(simple)X
  9121. +576 1472(interface)N
  9122. +938(should)X
  9123. +1218(be)X
  9124. +1333(designed)X
  9125. +1699(for)X
  9126. +1835(users)X
  9127. +2056(to)X
  9128. +2155(hook-in)X
  9129. +2478(their)X
  9130. +2679(own)X
  9131. +2868(functions.)X
  9132. +
  9133. +24 p
  9134. +%%Page: 24 25
  9135. +5(Helvetica-Narrow)xf 5 f
  9136. +12 s 0 xH 0 xS 5 f
  9137. +1 f
  9138. +10 s
  9139. +0 32(--)N
  9140. +4323(--)X
  9141. +12 s
  9142. +2200 616(-)N
  9143. +2256(24)X
  9144. +2376(-)X
  9145. +3362(October)X
  9146. +3696(15,)X
  9147. +3840(1990)X
  9148. +1995 1016(CONCLUSION)N
  9149. +576 1348(This)N
  9150. +778(paper)X
  9151. +1023(describes)X
  9152. +1412(a)X
  9153. +1486(concept)X
  9154. +1817(of)X
  9155. +1928(genuine)X
  9156. +2264(dynamic)X
  9157. +2627(link)X
  9158. +2808(editing)X
  9159. +3107(and)X
  9160. +3277(the)X
  9161. +3426 0.2548(implementation)AX
  9162. +576 1500(of)N
  9163. +696(a)X
  9164. +779(working)X
  9165. +1139(dynamic)X
  9166. +1511(linker)X
  9167. +2 f
  9168. +1776(dld)X
  9169. +1 f
  9170. +1899(.)X
  9171. +1987(This)X
  9172. +2198(new)X
  9173. +2398(approach)X
  9174. +2791(of)X
  9175. +2911(dynamic)X
  9176. +3283(link)X
  9177. +3473(editing)X
  9178. +3781(allows)X
  9179. +576 1652(users)N
  9180. +801(to)X
  9181. +905(add,)X
  9182. +1097(remove,)X
  9183. +1439(or)X
  9184. +1548(modify)X
  9185. +1855(compiled)X
  9186. +2243(object)X
  9187. +2508(modules)X
  9188. +2863(of)X
  9189. +2972(a)X
  9190. +3044(program)X
  9191. +3399(while)X
  9192. +3642(it)X
  9193. +3725(is)X
  9194. +3818(being)X
  9195. +576 1804(executed.)N
  9196. +1019(As)X
  9197. +1177(a)X
  9198. +1272(result,)X
  9199. +1562(application)X
  9200. +2043(programs)X
  9201. +2458(using)X
  9202. +2718(dynamic)X
  9203. +3102(linking)X
  9204. +3427(enjoy)X
  9205. +3692(both)X
  9206. +3914(the)X
  9207. +576 1956(ef\256ciency)N
  9208. +987(of)X
  9209. +1099(executing)X
  9210. +1506(native)X
  9211. +1774(machine)X
  9212. +2133(code)X
  9213. +2347(and)X
  9214. +2518(the)X
  9215. +2668(\257exibility)X
  9216. +3075(of)X
  9217. +3187(modifying)X
  9218. +3620(their)X
  9219. +3829(func-)X
  9220. +576 2108(tionalities)N
  9221. +982(in)X
  9222. +1082(response)X
  9223. +1443(to)X
  9224. +1543(the)X
  9225. +1686(changing)X
  9226. +2064(environment.)X
  9227. +2624(A)X
  9228. +2718(large)X
  9229. +2936(number)X
  9230. +3254(of)X
  9231. +3358(new)X
  9232. +3542(applications,)X
  9233. +576 2260(such)N
  9234. +776(as)X
  9235. +880(those)X
  9236. +1107(presented,)X
  9237. +1524(are)X
  9238. +1666(thus)X
  9239. +1850(made)X
  9240. +2083(possible.)X
  9241. +2 f
  9242. +776 2440(Dld)N
  9243. +1 f
  9244. +953(has)X
  9245. +1114(been)X
  9246. +1329(implemented)X
  9247. +1866(for)X
  9248. +2011(VAX)X
  9249. +2251(machines)X
  9250. +2648(running)X
  9251. +2980(Ultrix,)X
  9252. +3267(and)X
  9253. +3440(for)X
  9254. +3586(SUN)X
  9255. +3811(3)X
  9256. +3893(and)X
  9257. +576 2592(SPARC)N
  9258. +911(workstations)X
  9259. +1434(running)X
  9260. +1765(Sun)X
  9261. +1946(Operating)X
  9262. +2363(System)X
  9263. +2678(version)X
  9264. +2993(3.4)X
  9265. +3145(or)X
  9266. +3257(4.0.)X
  9267. +3457(It)X
  9268. +3547(is)X
  9269. +3642(a)X
  9270. +3716(package)X
  9271. +576 2744(of)N
  9272. +704(library)X
  9273. +1009(functions)X
  9274. +1415(callable)X
  9275. +1764(by)X
  9276. +1908(C)X
  9277. +2020(programs;)X
  9278. +2458(it)X
  9279. +2560(requires)X
  9280. +2918(no)X
  9281. +3062(modi\256cation)X
  9282. +3598(of)X
  9283. +3727(existing)X
  9284. +576 2896(software,)N
  9285. +971(such)X
  9286. +1187(as)X
  9287. +1307(the)X
  9288. +1465(compiler)X
  9289. +1848(and)X
  9290. +2027(the)X
  9291. +2185(assembler.)X
  9292. +2657(Programs)X
  9293. +3064(using)X
  9294. +2 f
  9295. +3311(dld)X
  9296. +1 f
  9297. +3473(suffer)X
  9298. +3736(a)X
  9299. +3818(slight)X
  9300. +576 3048(overhead)N
  9301. +959(in)X
  9302. +1064(loading)X
  9303. +1383(new)X
  9304. +1573(modules)X
  9305. +1929(from)X
  9306. +2146(disk)X
  9307. +2336(and)X
  9308. +2506(performing)X
  9309. +2970(runtime)X
  9310. +3301(link)X
  9311. +3482(editing.)X
  9312. +3829(Once)X
  9313. +576 3200(these)N
  9314. +810(steps)X
  9315. +1038(are)X
  9316. +1192(completed,)X
  9317. +1654(statements)X
  9318. +2097(in)X
  9319. +2208(the)X
  9320. +2362(newly)X
  9321. +2633(added)X
  9322. +2899(routines)X
  9323. +3245(execute)X
  9324. +3576(at)X
  9325. +3681(the)X
  9326. +3834(same)X
  9327. +576 3352(speed)N
  9328. +835(as)X
  9329. +956(if)X
  9330. +1056(they)X
  9331. +1263(were)X
  9332. +1491(statically)X
  9333. +1881(linked.)X
  9334. +2 f
  9335. +2211(Dld)X
  9336. +1 f
  9337. +2396(can)X
  9338. +2571(be)X
  9339. +2703(obtained)X
  9340. +3076(free)X
  9341. +3267(of)X
  9342. +3388(charge)X
  9343. +3686(from)X
  9344. +3914(the)X
  9345. +576 3504(authors.)N
  9346. +
  9347. +25 p
  9348. +%%Page: 25 26
  9349. +5(Helvetica-Narrow)xf 5 f
  9350. +12 s 0 xH 0 xS 5 f
  9351. +1 f
  9352. +10 s
  9353. +0 32(--)N
  9354. +4323(--)X
  9355. +12 s
  9356. +2200 616(-)N
  9357. +2256(25)X
  9358. +2376(-)X
  9359. +3362(October)X
  9360. +3696(15,)X
  9361. +3840(1990)X
  9362. +1824 1016(ACKNOWLEDGMENT)N
  9363. +576 1348(Many)N
  9364. +826(thanks)X
  9365. +1103(to)X
  9366. +1204(Richard)X
  9367. +1535(Stallman)X
  9368. +1904(and)X
  9369. +2069(others)X
  9370. +2330(who)X
  9371. +2521(made)X
  9372. +2756(the)X
  9373. +2900(GNU)X
  9374. +2 f
  9375. +3133(ld)X
  9376. +1 f
  9377. +3234(available)X
  9378. +3609(to)X
  9379. +3711(the)X
  9380. +3856(pub-)X
  9381. +576 1500(lic.)N
  9382. +746(A)X
  9383. +840(number)X
  9384. +1159(of)X
  9385. +1264(functions)X
  9386. +1647(from)X
  9387. +2 f
  9388. +1859(ld)X
  9389. +1 f
  9390. +1959(are)X
  9391. +2102(modi\256ed)X
  9392. +2469(and)X
  9393. +2633(used)X
  9394. +2834(as)X
  9395. +2939(the)X
  9396. +3082(basis)X
  9397. +3298(of)X
  9398. +3402(the)X
  9399. +3544(implementa-)X
  9400. +576 1652(tion)N
  9401. +758(of)X
  9402. +2 f
  9403. +870(dld)X
  9404. +1 f
  9405. +993(.)X
  9406. +1073(Rick)X
  9407. +1287(Crawford,)X
  9408. +1711(Carole)X
  9409. +2000(McNamee,)X
  9410. +2457(Chris)X
  9411. +2697(Wee,)X
  9412. +2930(and)X
  9413. +3101(the)X
  9414. +3251(anonymous)X
  9415. +3727(referees)X
  9416. +576 1804(provided)N
  9417. +943(very)X
  9418. +1139(useful)X
  9419. +1399(comments)X
  9420. +1820(on)X
  9421. +1941(earlier)X
  9422. +2213(drafts)X
  9423. +2457(of)X
  9424. +2562(this)X
  9425. +2726(paper.)X
  9426. +3013(Various)X
  9427. +3342(people)X
  9428. +3623(around)X
  9429. +3914(the)X
  9430. +576 1956(world)N
  9431. +844(who)X
  9432. +1053(beta-tested)X
  9433. +2 f
  9434. +1515(dld)X
  9435. +1 f
  9436. +1683(have)X
  9437. +1910(provided)X
  9438. +2297(valuable)X
  9439. +2669(feedback.)X
  9440. +3110(Their)X
  9441. +3364(help)X
  9442. +3575(is)X
  9443. +3684(sincerely)X
  9444. +576 2108(appreciated.)N
  9445. +
  9446. +26 p
  9447. +%%Page: 26 27
  9448. +5(Helvetica-Narrow)xf 5 f
  9449. +12 s 0 xH 0 xS 5 f
  9450. +1 f
  9451. +10 s
  9452. +0 32(--)N
  9453. +4323(--)X
  9454. +12 s
  9455. +2200 616(-)N
  9456. +2256(26)X
  9457. +2376(-)X
  9458. +3362(October)X
  9459. +3696(15,)X
  9460. +3840(1990)X
  9461. +3 f
  9462. +576 1016(References)N
  9463. +1 f
  9464. +576 1224(1.)N
  9465. +776(L.)X
  9466. +894(L.)X
  9467. +1012(Beck,)X
  9468. +2 f
  9469. +1269(System)X
  9470. +1571(Software:)X
  9471. +2004(An)X
  9472. +2146(Introduction)X
  9473. +2663(to)X
  9474. +2774(System)X
  9475. +3077(Programming,)X
  9476. +1 f
  9477. +3675(Addison-)X
  9478. +776 1376(Wesley)N
  9479. +1089(Pub.)X
  9480. +1286(Co.,)X
  9481. +1470(Reading,)X
  9482. +1839(Mass.,)X
  9483. +2113(1985.)X
  9484. +576 1556(2.)N
  9485. +776(R.)X
  9486. +914(A.)X
  9487. +1057(Gingell,)X
  9488. +1420(M.)X
  9489. +1580(Lee,)X
  9490. +1800(X.)X
  9491. +1944(T.)X
  9492. +2078(Dang,)X
  9493. +2361(and)X
  9494. +2551(M.)X
  9495. +2711(S.)X
  9496. +2839(Weeks,)X
  9497. +3176(``Shared)X
  9498. +3558(Libraries)X
  9499. +3957(in)X
  9500. +776 1708(SunOS,'')N
  9501. +1181(in)X
  9502. +2 f
  9503. +1302(USENIX)X
  9504. +1679(Conference)X
  9505. +2169(Proceedings)X
  9506. +1 f
  9507. +2650(,)X
  9508. +2719(pp.)X
  9509. +2884(131-145,)X
  9510. +3273(USENIX,)X
  9511. +3693(Phoenix,)X
  9512. +776 1860(AZ,)N
  9513. +952(Summer)X
  9514. +1302(1987.)X
  9515. +576 2040(3.)N
  9516. +776(M.)X
  9517. +948(Sabatella,)X
  9518. +1389(``Issues)X
  9519. +1750(in)X
  9520. +1888(Shared)X
  9521. +2218(Libraries)X
  9522. +2630(Design,'')X
  9523. +3054(in)X
  9524. +2 f
  9525. +3193(USENIX)X
  9526. +3588(Conference)X
  9527. +776 2192(Proceedings)N
  9528. +1 f
  9529. +1257(,)X
  9530. +1305(pp.)X
  9531. +1449(11-23,)X
  9532. +1721(USENIX,)X
  9533. +2120(Anaheim,)X
  9534. +2521(CA,)X
  9535. +2702(June)X
  9536. +2902(1990.)X
  9537. +576 2372(4.)N
  9538. +776(AT&T,)X
  9539. +2 f
  9540. +1117(ANSI)X
  9541. +1375(C)X
  9542. +1494(&)X
  9543. +1624(Programming)X
  9544. +2217(Support)X
  9545. +2576(Tools,)X
  9546. +1 f
  9547. +2869(UNIX)X
  9548. +3164(System)X
  9549. +3503(V)X
  9550. +3628(Release)X
  9551. +3984(4)X
  9552. +776 2524(Programmer's)N
  9553. +1350(Guide,)X
  9554. +1633(Prentice-Hall,)X
  9555. +2195(Englewood)X
  9556. +2657(Cliffs,)X
  9557. +2924(NJ,)X
  9558. +3078(1990.)X
  9559. +576 2704(5.)N
  9560. +776(J.)X
  9561. +862(Hobbs,)X
  9562. +1162(``Installed)X
  9563. +1584(Shareable)X
  9564. +1990(Images,'')X
  9565. +2 f
  9566. +2382(Dec.)X
  9567. +2587(Professional)X
  9568. +1 f
  9569. +3073(,)X
  9570. +3123(vol.)X
  9571. +3296(6,)X
  9572. +3394(no.)X
  9573. +3540(4,)X
  9574. +3638(pp.)X
  9575. +3784(78-82,)X
  9576. +776 2856(April)N
  9577. +1003(1987.)X
  9578. +576 3036(6.)N
  9579. +776(G.)X
  9580. +904(Letwin,)X
  9581. +1236(``Dynamic)X
  9582. +1688(Linking)X
  9583. +2028(in)X
  9584. +2138(OS/2,'')X
  9585. +2 f
  9586. +2458(Byte)X
  9587. +1 f
  9588. +2630(,)X
  9589. +2690(vol.)X
  9590. +2873(13,)X
  9591. +3029(no.)X
  9592. +3185(4,)X
  9593. +3293(pp.)X
  9594. +3449(273-280,)X
  9595. +3829(April)X
  9596. +776 3188(1988.)N
  9597. +576 3368(7.)N
  9598. +776(R.)X
  9599. +896(C.)X
  9600. +1016(Daley)X
  9601. +1278(and)X
  9602. +1449(J.)X
  9603. +1542(B.)X
  9604. +1662(Dennis,)X
  9605. +1990(``Virtual)X
  9606. +2359(Memory,)X
  9607. +2746(Processes,)X
  9608. +3175(and)X
  9609. +3347(Sharing)X
  9610. +3679(in)X
  9611. +3787(MUL-)X
  9612. +776 3520(TICS,'')N
  9613. +2 f
  9614. +1096(Communications)X
  9615. +1771(of)X
  9616. +1870(the)X
  9617. +2012(ACM)X
  9618. +1 f
  9619. +2215(,)X
  9620. +2263(vol.)X
  9621. +2434(11,)X
  9622. +2578(no.)X
  9623. +2722(5,)X
  9624. +2818(pp.)X
  9625. +2962(306-312,)X
  9626. +3330(May)X
  9627. +3530(1968.)X
  9628. +576 3700(8.)N
  9629. +776(M.)X
  9630. +937(K.)X
  9631. +1082(Crowe,)X
  9632. +1414(``Dynamic)X
  9633. +1883(Compilation)X
  9634. +2417(in)X
  9635. +2545(the)X
  9636. +2716(Unix)X
  9637. +2961(Environment,'')X
  9638. +2 f
  9639. +3605(Software\320)X
  9640. +776 3852(Practice)N
  9641. +1127(and)X
  9642. +1295(Experience)X
  9643. +1 f
  9644. +1729(,)X
  9645. +1777(vol.)X
  9646. +1948(17,)X
  9647. +2092(no.)X
  9648. +2236(7,)X
  9649. +2332(pp.)X
  9650. +2476(455-467,)X
  9651. +2844(July)X
  9652. +3028(1987.)X
  9653. +576 4032(9.)N
  9654. +776(W.)X
  9655. +926(Joy)X
  9656. +1094(and)X
  9657. +1268(M.)X
  9658. +1412(Horton,)X
  9659. +2 f
  9660. +1743(An)X
  9661. +1885(Introduction)X
  9662. +2401(to)X
  9663. +2511(Display)X
  9664. +2845(Editing)X
  9665. +3164(with)X
  9666. +3365(Vi,)X
  9667. +1 f
  9668. +3510(University)X
  9669. +3952(of)X
  9670. +776 4184(California)N
  9671. +1191(at)X
  9672. +1285(Berkeley,)X
  9673. +1681(Computer)X
  9674. +2090(Science)X
  9675. +2414(Division,)X
  9676. +2793(May)X
  9677. +2993(1986.)X
  9678. +576 4364(10.)N
  9679. +776(S.)X
  9680. +883(Kaufer,)X
  9681. +1204(R.)X
  9682. +1322(Lopez,)X
  9683. +1617(and)X
  9684. +1786(S.)X
  9685. +1893(Pratap,)X
  9686. +2193(``Saber-C\320An)X
  9687. +2815(Interpreter-based)X
  9688. +3503(Programming)X
  9689. +776 4516(Environment)N
  9690. +1313(for)X
  9691. +1459(the)X
  9692. +1611(C)X
  9693. +1709(Language,'')X
  9694. +2211(in)X
  9695. +2 f
  9696. +2320(USENIX)X
  9697. +2685(Conference)X
  9698. +3163(Proceedings)X
  9699. +1 f
  9700. +3644(,)X
  9701. +3702(pp.)X
  9702. +3856(161-)X
  9703. +776 4668(171,)N
  9704. +968(USENIX,)X
  9705. +1367(San)X
  9706. +1535(Francisco,)X
  9707. +1957(Summer)X
  9708. +2307(1988.)X
  9709. +576 4848(11.)N
  9710. +776(B.)X
  9711. +891(B.)X
  9712. +1006(Chase,)X
  9713. +1292(``Selective)X
  9714. +1737(Interpretation)X
  9715. +2289(as)X
  9716. +2396(a)X
  9717. +2467(Technique)X
  9718. +2902(for)X
  9719. +3042(Debugging)X
  9720. +3497(Computation-)X
  9721. +776 5000(ally)N
  9722. +947(Intensive)X
  9723. +1326(Programs,'')X
  9724. +2 f
  9725. +1808(Proc.)X
  9726. +2045(of)X
  9727. +2146(the)X
  9728. +2290(SIGPLAN)X
  9729. +2700(87)X
  9730. +2821(Symposium)X
  9731. +3283(on)X
  9732. +3404(Interpreters)X
  9733. +3888(and)X
  9734. +776 5152(Interpretive)N
  9735. +1255(Techniques)X
  9736. +1 f
  9737. +1693(,)X
  9738. +1741(pp.)X
  9739. +1885(113-124,)X
  9740. +2253(St.)X
  9741. +2381(Paul,)X
  9742. +2600(MN,)X
  9743. +2802(July)X
  9744. +2986(87.)X
  9745. +576 5332(12.)N
  9746. +776(R.)X
  9747. +903(A.)X
  9748. +1035(Olsson,)X
  9749. +1364(R.)X
  9750. +1491(H.)X
  9751. +1623(Crawford,)X
  9752. +2054(and)X
  9753. +2233(W.)X
  9754. +2388(W.)X
  9755. +2543(Ho,)X
  9756. +2724(``Dalek:)X
  9757. +3109(a)X
  9758. +3192(GNU,)X
  9759. +3463(improved)X
  9760. +3872(pro-)X
  9761. +776 5484(grammable)N
  9762. +1290(debugger,'')X
  9763. +1816(in)X
  9764. +2 f
  9765. +1971(USENIX)X
  9766. +2382(Conference)X
  9767. +2905(Proceedings)X
  9768. +1 f
  9769. +3386(,)X
  9770. +3489(pp.)X
  9771. +3688(221-231,)X
  9772. +776 5636(USENIX,)N
  9773. +1175(Anaheim,)X
  9774. +1576(CA,)X
  9775. +1757(June)X
  9776. +1957(1990.)X
  9777. +
  9778. +27 p
  9779. +%%Page: 27 28
  9780. +5(Helvetica-Narrow)xf 5 f
  9781. +12 s 0 xH 0 xS 5 f
  9782. +1 f
  9783. +10 s
  9784. +0 32(--)N
  9785. +4323(--)X
  9786. +12 s
  9787. +2200 616(-)N
  9788. +2256(27)X
  9789. +2376(-)X
  9790. +3362(October)X
  9791. +3696(15,)X
  9792. +3840(1990)X
  9793. +576 1016(13.)N
  9794. +776(R.)X
  9795. +898(M.)X
  9796. +1042(Stallman,)X
  9797. +2 f
  9798. +1444(GDB)X
  9799. +1676(Manual)X
  9800. +2010(\(The)X
  9801. +2221(GNU)X
  9802. +2458(Source-Level)X
  9803. +3001(Debugger\),)X
  9804. +3476(Third)X
  9805. +3724(Edition,)X
  9806. +1 f
  9807. +776 1168(Free)N
  9808. +971(Software)X
  9809. +1342(Foundation,)X
  9810. +1828(Cambridge,)X
  9811. +2304(MA,)X
  9812. +2506(Jan.)X
  9813. +2682(1989.)X
  9814. +576 1348(14.)N
  9815. +776(Z.)X
  9816. +890(Aral)X
  9817. +1092(and)X
  9818. +1262(I.)X
  9819. +1349(Gertner,)X
  9820. +1698(``High-Level)X
  9821. +2237(Debugging)X
  9822. +2695(in)X
  9823. +2802(Parasight,'')X
  9824. +2 f
  9825. +3280(ACM)X
  9826. +3515(Workshop)X
  9827. +3936(on)X
  9828. +776 1500(Parallel)N
  9829. +1116(and)X
  9830. +1284(Distributed)X
  9831. +1746(Debugging)X
  9832. +1 f
  9833. +2173(,)X
  9834. +2221(pp.)X
  9835. +2365(151-162,)X
  9836. +2733(Madison,)X
  9837. +3117(WI,)X
  9838. +3288(May)X
  9839. +3488(1988.)X
  9840. +576 1680(15.)N
  9841. +776(P.)X
  9842. +894(H.)X
  9843. +1028(Wood)X
  9844. +1304(and)X
  9845. +1484(S.)X
  9846. +1602(G.)X
  9847. +1736(Kochan,)X
  9848. +2 f
  9849. +2101(UNIX)X
  9850. +2367(System)X
  9851. +2676(Security,)X
  9852. +1 f
  9853. +3058(Hayden)X
  9854. +3399(Book)X
  9855. +3649(Co.,)X
  9856. +3851(Has-)X
  9857. +776 1832(brouck)N
  9858. +1067(Heights,)X
  9859. +1414(NJ,)X
  9860. +1568(1985.)X
  9861. +10 s
  9862. +0 6360(--)N
  9863. +4323(--)X
  9864. +
  9865. +28 p
  9866. +%%Trailer
  9867. +xt
  9868. +
  9869. +xs
  9870. diff -rup --new-file baseline/fsf/dld/doc/dld.ps amiga/fsf/dld/doc/dld.ps
  9871. --- baseline/fsf/dld/doc/dld.ps    Wed Dec 31 17:00:00 1969
  9872. +++ amiga/fsf/dld/doc/dld.ps    Sat Sep 28 00:00:00 1996
  9873. @@ -0,0 +1,1206 @@
  9874. +%!PS-Adobe-2.0
  9875. +%%Creator: dvips 5.45 Copyright 1986-91 Radical Eye Software
  9876. +%%Title: dld.dvi
  9877. +%%Pages: 9 1
  9878. +%%BoundingBox: 0 0 612 792
  9879. +%%EndComments
  9880. +%%BeginProcSet: tex.pro
  9881. +/TeXDict 200 dict def TeXDict begin /N /def load def /B{bind def}N /S /exch
  9882. +load def /X{S N}B /TR /translate load N /isls false N /vsize 10 N /@rigin{
  9883. +isls{[0 1 -1 0 0 0]concat}if 72 Resolution div 72 VResolution div neg scale
  9884. +Resolution VResolution vsize neg mul TR matrix currentmatrix dup dup 4 get
  9885. +round 4 exch put dup dup 5 get round 5 exch put setmatrix}N /@letter{/vsize 10
  9886. +N}B /@landscape{/isls true N /vsize -1 N}B /@a4{/vsize 10.6929133858 N}B /@a3{
  9887. +/vsize 15.5531 N}B /@ledger{/vsize 16 N}B /@legal{/vsize 13 N}B /@manualfeed{
  9888. +statusdict /manualfeed true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N
  9889. +/FBB[0 0 0 0]N /nn 0 N /IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin
  9890. +/FontType 3 N /FontMatrix fntrx N /FontBBox FBB N string /base X array
  9891. +/BitMaps X /BuildChar{CharBuilder}N /Encoding IE N end dup{/foo setfont}2
  9892. +array copy cvx N load 0 nn put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}
  9893. +B /dfs{div /sf X /fntrx[sf 0 0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont
  9894. +setfont}B /ch-width{ch-data dup length 5 sub get}B /ch-height{ch-data dup
  9895. +length 4 sub get}B /ch-xoff{128 ch-data dup length 3 sub get sub}B /ch-yoff{
  9896. +ch-data dup length 2 sub get 127 sub}B /ch-dx{ch-data dup length 1 sub get}B
  9897. +/ch-image{ch-data dup type /stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0
  9898. +N /rw 0 N /rc 0 N /gp 0 N /cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S
  9899. +dup /base get 2 index get S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0
  9900. +ch-xoff ch-yoff ch-height sub ch-xoff ch-width add ch-yoff setcachedevice
  9901. +ch-width ch-height true[1 0 0 -1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}
  9902. +imagemask restore}B /D{/cc X dup type /stringtype ne{]}if nn /base get cc ctr
  9903. +put nn /BitMaps get S ctr S sf 1 ne{dup dup length 1 sub dup 2 index S get sf
  9904. +div put}if put /ctr ctr 1 add N}B /I{cc 1 add D}B /bop{userdict /bop-hook
  9905. +known{bop-hook}if /SI save N @rigin 0 0 moveto}N /eop{clear SI restore
  9906. +showpage userdict /eop-hook known{eop-hook}if}N /@start{userdict /start-hook
  9907. +known{start-hook}if /VResolution X /Resolution X 1000 div /DVImag X /IE 256
  9908. +array N 0 1 255{IE S 1 string dup 0 3 index put cvn put}for}N /p /show load N
  9909. +/RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley 0 N /v{/ruley X
  9910. +/rulex X V}B /V statusdict begin /product where{pop product 0 7 getinterval
  9911. +(Display)eq}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale rulex ruley false
  9912. +RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex ruley scale 1 1
  9913. +false RMat{BDot}imagemask grestore}}ifelse B /a{moveto}B /delta 0 N /tail{dup
  9914. +/delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}B /d{-3 M}
  9915. +B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{4 M}B /w{0
  9916. +rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1 w}B /r{p 2 w}
  9917. +B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B
  9918. +/eos{clear SS restore}B end
  9919. +%%EndProcSet
  9920. +TeXDict begin 1000 300 300 @start /Fa 5 117 df<387CFEFEFE7C38000000000000387C
  9921. +FEFEFE7C3807147D930D>58 D<FFC007FEFFC007FE0FE000600FF000600DF800600DF800600CFC
  9922. +00600C7E00600C7E00600C3F00600C1F80600C0FC0600C0FC0600C07E0600C03F0600C03F8600C
  9923. +01F8600C00FC600C007E600C007E600C003F600C001FE00C000FE00C000FE00C0007E00C0003E0
  9924. +0C0003E00C0001E00C0000E0FFC00060FFC000601F1F7E9E24>78 D<03F8000FFE001F0F003E07
  9925. +803C07807C07C07C07C0FC07C0FFFFC0FFFFC0FC0000FC0000FC00007C00007C00003E00C03E00
  9926. +C01F038007FF0001FC0012147F9315>101 D<01F8000FFF001F0F803E07C07C03E07C03E07C03
  9927. +E0FC03F0FC03F0FC03F0FC03F0FC03F0FC03F0FC03F07C03E07C03E03E07C01F0F800FFF0003FC
  9928. +0014147F9317>111 D<0300030003000300070007000F000F003F00FFF8FFF81F001F001F001F
  9929. +001F001F001F001F001F001F001F181F181F181F181F180F3007F003E00D1D7F9C12>116
  9930. +D E /Fb 1 59 df<60F0F06004047C830C>58 D E /Fc 27 121 df<3C7EFFFFFFFF7E3C08087D
  9931. +870F>46 D<00380000780001F800FFF800FFF800FFF80003F80003F80003F80003F80003F80003
  9932. +F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003F80003
  9933. +F80003F80003F80003F80003F80003F80003F80003F8007FFFC07FFFC07FFFC012237CA21B>49
  9934. +D<01FC0003FF0007FF800F0FC01F0FE03F87F03FC7F03FC7F03FC7F01F87F00F07E0000FE0000F
  9935. +C0000F80001F0001FE0001FF80000FC00007E00007F00003F80003F80803FC3E03FC7F03FCFF83
  9936. +FCFF83FCFF83FCFF83F87F03F87E07F03E0FE01FFFC00FFF8001FC0016237EA21B>51
  9937. +D<FFFFFFF0FFFFFFF0FFFFFFF007F807F007F801F807F800F807F8007807F8003807F8003807F8
  9938. +003807F8383807F8381C07F8381C07F8381C07F8780007F8F80007FFF80007FFF80007FFF80007
  9939. +F8F80007F8780007F8380007F8380E07F8380E07F8381C07F8001C07F8001C07F8001C07F8003C
  9940. +07F8003807F8007807F8007807F801F807F807F8FFFFFFF0FFFFFFF0FFFFFFF01F257EA424>69
  9941. +D<FFFFFFE0FFFFFFE0FFFFFFE007F80FE007F803F007F801F007F800F007F8007007F8007007F8
  9942. +007007F8007007F8703807F8703807F8703807F8700007F8F00007F9F00007FFF00007FFF00007
  9943. +FFF00007F9F00007F8F00007F8700007F8700007F8700007F8700007F8000007F8000007F80000
  9944. +07F8000007F8000007F8000007F8000007F80000FFFFE000FFFFE000FFFFE0001D257EA422>I<
  9945. +FFFFC0FFFFC0FFFFC007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800
  9946. +07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800
  9947. +07F80007F80007F80007F80007F80007F80007F80007F800FFFFC0FFFFC0FFFFC012257EA416>
  9948. +73 D<FFFFE000FFFFE000FFFFE00007F8000007F8000007F8000007F8000007F8000007F80000
  9949. +07F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F800
  9950. +0007F8000007F8000007F8000007F8007007F8007007F8007007F800E007F800E007F800E007F8
  9951. +00E007F801E007F803E007F803E007F807E007F81FC0FFFFFFC0FFFFFFC0FFFFFFC01C257EA421
  9952. +>76 D<FFFFFE00FFFFFFC0FFFFFFE007F80FF007F803F807F801FC07F801FC07F801FE07F801FE
  9953. +07F801FE07F801FE07F801FE07F801FE07F801FE07F801FC07F803FC07F803F807F80FF007FFFF
  9954. +E007FFFF8007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8000007F8
  9955. +000007F8000007F8000007F8000007F8000007F80000FFFFC000FFFFC000FFFFC0001F257EA425
  9956. +>80 D<FFFFC0FFF8FFFFC0FFF8FFFFC0FFF807F800070007F800070007F800070007F800070007
  9957. +F800070007F800070007F800070007F800070007F800070007F800070007F800070007F8000700
  9958. +07F800070007F800070007F800070007F800070007F800070007F800070007F800070007F80007
  9959. +0007F800070007F800070007F800070007F800070007F800070003F8000E0003F8000E0001FC00
  9960. +0E0001FC001C0000FE003800007F81F000001FFFE000000FFFC0000001FE000025257EA42A>85
  9961. +D<07FC001FFF003E0F807F07C07F03E07F03F03E03F01C03F00003F0003FF003FFF00FF3F01F83
  9962. +F03E03F07E03F0FC03F0FC03F0FC03F0FC03F0FC07F07E07F03E0DFF1FF8FF03F07F18187E971B
  9963. +>97 D<FFC00000FFC00000FFC000000FC000000FC000000FC000000FC000000FC000000FC00000
  9964. +0FC000000FC000000FC000000FC000000FC000000FCFC0000FFFF0000FF87C000FE03E000FC03F
  9965. +000FC01F000FC01F800FC01F800FC01FC00FC01FC00FC01FC00FC01FC00FC01FC00FC01FC00FC0
  9966. +1FC00FC01FC00FC01F800FC01F800FC03F000FC03F000FE03E000FF0FC000F3FF0000E0FC0001A
  9967. +267FA51E>I<00FE0003FF800F87C01F0FE03F0FE03F0FE07E07C07E0380FE0000FE0000FE0000
  9968. +FE0000FE0000FE0000FE0000FE00007E00007E00E03F00E03F01C01F01C00F878003FF0000FC00
  9969. +13187E9718>I<00FC0007FF000F87801F03C03F03E03E03E07E01E07E01F0FE01F0FE01F0FFFF
  9970. +F0FFFFF0FE0000FE0000FE0000FE00007E00007E00703F00703F00E01F00E00F83C003FF0000FE
  9971. +0014187E9719>101 D<01FC1C07FF7E0F07FF1F07DF3E03EE7E03F47E03F07E03F07E03F07E03
  9972. +F07E03F03E03E01F07C00F07801FFF0039FC003800003800003800003C00003FFFC03FFFF01FFF
  9973. +F80FFFFC1FFFFE7C007E78003FF8001FF8001FF8001FF8001F7C003E3C003C1F00F80FFFF001FF
  9974. +8018247F971B>103 D<FFC00000FFC00000FFC000000FC000000FC000000FC000000FC000000F
  9975. +C000000FC000000FC000000FC000000FC000000FC000000FC000000FC3E0000FCFF8000FDC7C00
  9976. +0FF07C000FE07E000FE07E000FE07E000FC07E000FC07E000FC07E000FC07E000FC07E000FC07E
  9977. +000FC07E000FC07E000FC07E000FC07E000FC07E000FC07E000FC07E000FC07E00FFFCFFE0FFFC
  9978. +FFE0FFFCFFE01B267EA51E>I<0F001F803FC03FC03FC03FC01F800F0000000000000000000000
  9979. +00000000FFC0FFC0FFC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00F
  9980. +C00FC00FC00FC0FFF8FFF8FFF80D277FA60F>I<FFC00000FFC00000FFC000000FC000000FC000
  9981. +000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC000000FC3
  9982. +FF800FC3FF800FC3FF800FC070000FC0E0000FC1C0000FC380000FC700000FCE00000FDE00000F
  9983. +FF00000FFF80000FEF80000FCFC0000F87E0000F83E0000F83F0000F81F0000F80F8000F80FC00
  9984. +0F807C00FFF1FFC0FFF1FFC0FFF1FFC01A267FA51D>107 D<FFC0FFC0FFC00FC00FC00FC00FC0
  9985. +0FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00FC00F
  9986. +C00FC00FC00FC00FC00FC00FC00FC00FC0FFFCFFFCFFFC0E267FA50F>I<FF83F00FC000FF8FFC
  9987. +3FF000FF9C3E70F8000FB03EC0F8000FB03FC0FC000FE03F80FC000FE03F80FC000FC03F00FC00
  9988. +0FC03F00FC000FC03F00FC000FC03F00FC000FC03F00FC000FC03F00FC000FC03F00FC000FC03F
  9989. +00FC000FC03F00FC000FC03F00FC000FC03F00FC000FC03F00FC000FC03F00FC000FC03F00FC00
  9990. +FFFCFFF3FFC0FFFCFFF3FFC0FFFCFFF3FFC02A187E972D>I<FF83E000FF8FF800FF9C7C000FB0
  9991. +7C000FE07E000FE07E000FE07E000FC07E000FC07E000FC07E000FC07E000FC07E000FC07E000F
  9992. +C07E000FC07E000FC07E000FC07E000FC07E000FC07E000FC07E000FC07E00FFFCFFE0FFFCFFE0
  9993. +FFFCFFE01B187E971E>I<00FC0007FF800F87C01F03E03E01F03E01F07E01F87E01F8FE01FCFE
  9994. +01FCFE01FCFE01FCFE01FCFE01FCFE01FCFE01FC7E01F87E01F87E01F83F03F01F03E00F87C007
  9995. +FF8001FE0016187E971B>I<FFCFC000FFFFF000FFF87C000FE07E000FC03F000FC03F000FC03F
  9996. +800FC01F800FC01FC00FC01FC00FC01FC00FC01FC00FC01FC00FC01FC00FC01FC00FC01FC00FC0
  9997. +1F800FC03F800FC03F000FC03F000FE07E000FF0FC000FFFF0000FCFC0000FC000000FC000000F
  9998. +C000000FC000000FC000000FC000000FC000000FC00000FFFC0000FFFC0000FFFC00001A237F97
  9999. +1E>I<FF9F00FFBFC0FFE3E00FE7F00FE7F00FC7F00FC3E00FC1C00FC0000FC0000FC0000FC000
  10000. +0FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC0000FC000FFFE00FFFE00FFFE0014187F
  10001. +9717>114 D<07F3001FFF00381F00700F00F00700F00700F00700F80000FF00007FF0007FFC00
  10002. +3FFE000FFF0003FF00003F80000F80600780E00780E00780F00700F00700FC1E00FFFC00C7F000
  10003. +11187E9716>I<01C001C001C001C001C003C003C003C007C007C00FC03FFEFFFEFFFE0FC00FC0
  10004. +0FC00FC00FC00FC00FC00FC00FC00FC00FC00FC70FC70FC70FC70FC70FC707C707EE03FC00F810
  10005. +237FA215>I<FFC7FE00FFC7FE00FFC7FE000FC07E000FC07E000FC07E000FC07E000FC07E000F
  10006. +C07E000FC07E000FC07E000FC07E000FC07E000FC07E000FC07E000FC07E000FC07E000FC07E00
  10007. +0FC07E000FC0FE0007C0FE0007C1FFE003FF7FE000FE7FE01B187E971E>I<FFF1FF80FFF1FF80
  10008. +FFF1FF8007C0700007E0F00003F1E00001F1C00001FBC00000FF8000007F0000007E0000003F00
  10009. +00003F0000003F8000007FC00000F7C00000E7E00001E3F00003C1F0000781F8000700FC00FFE3
  10010. +FFC0FFE3FFC0FFE3FFC01A187F971D>120 D E /Fd 61 126 df<70F8F8F8F8F8F8F8F8F8F8F8
  10011. +F8F8F8F8F870000000000070F8F8F870051C779B18>33 D<4010E038F078E038E038E038E038E0
  10012. +38E038E038E038E038E03860300D0E7B9C18>I<007000F001E003C007800F001E001C00380038
  10013. +007000700070007000E000E000E000E000E000E000E000E0007000700070007000380038001C00
  10014. +1E000F00078003C001F000F000700C24799F18>40 D<6000F00078003C001E000F000780038001
  10015. +C001C000E000E000E000E00070007000700070007000700070007000E000E000E000E001C001C0
  10016. +038007800F001E003C007800F00060000C247C9F18>I<01C00001C00001C00001C000C1C180F1
  10017. +C780F9CF807FFF001FFC0007F00007F0001FFC007FFF00F9CF80F1C780C1C18001C00001C00001
  10018. +C00001C00011147D9718>I<1C3E7E7F3F1F070E1E7CF860080C788518>44
  10019. +D<3078FCFC78300606778518>46 D<000300000780000780000F80000F00001F00001E00001E00
  10020. +003E00003C00007C0000780000780000F80000F00001F00001E00003E00003C00003C00007C000
  10021. +0780000F80000F00000F00001F00001E00003E00003C00003C00007C0000780000F80000F00000
  10022. +F0000060000011247D9F18>I<01F00007FC000FFE001F1F001C07003803807803C07001C07001
  10023. +C0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0E000E0F001E07001C07001C07803
  10024. +C03803801C07001F1F000FFE0007FC0001F000131C7E9B18>I<183C7E7E3C1800000000000000
  10025. +00183C7E7E3E1E0E1C3C78F060071A789318>59 D<7FFFC0FFFFE0FFFFE0FFFFE0000000000000
  10026. +000000000000FFFFE0FFFFE0FFFFE07FFFC0130C7E9318>61 D<00700000F80000F80000D80000
  10027. +D80001DC0001DC0001DC00018C00038E00038E00038E00038E0003060007070007070007070007
  10028. +07000FFF800FFF800FFF800E03800E03801C01C01C01C07F07F0FF8FF87F07F0151C7F9B18>65
  10029. +D<FFFC00FFFF00FFFF801C03C01C01C01C00E01C00E01C00E01C00E01C01E01C01C01C07C01FFF
  10030. +801FFF001FFFC01C03C01C00E01C00F01C00701C00701C00701C00701C00F01C00E01C03E0FFFF
  10031. +C0FFFF80FFFE00141C7F9B18>I<00F8E003FEE007FFE00F07E01E03E03C01E03800E07000E070
  10032. +00E0700000E00000E00000E00000E00000E00000E00000E00000E000007000007000E07000E038
  10033. +00E03C00E01E01C00F07C007FF8003FE0000F800131C7E9B18>I<7FF800FFFE007FFF001C0F80
  10034. +1C03C01C03C01C01E01C00E01C00E01C00F01C00701C00701C00701C00701C00701C00701C0070
  10035. +1C00701C00F01C00E01C00E01C01E01C01C01C03C01C0F807FFF00FFFE007FF800141C7F9B18>
  10036. +I<FFFFF0FFFFF0FFFFF01C00701C00701C00701C00701C00001C00001C0E001C0E001C0E001FFE
  10037. +001FFE001FFE001C0E001C0E001C0E001C00001C00001C00381C00381C00381C00381C0038FFFF
  10038. +F8FFFFF8FFFFF8151C7F9B18>I<FFFFE0FFFFE0FFFFE01C00E01C00E01C00E01C00E01C00001C
  10039. +00001C1C001C1C001C1C001FFC001FFC001FFC001C1C001C1C001C1C001C00001C00001C00001C
  10040. +00001C00001C00001C0000FFC000FFC000FFC000131C7E9B18>I<01F1C003FDC00FFFC01F0FC0
  10041. +1C03C03803C03801C07001C07001C0700000E00000E00000E00000E00000E00000E00FF0E01FF0
  10042. +E00FF07001C07001C07003C03803C03803C01C07C01F0FC00FFFC003FDC001F1C0141C7E9B18>
  10043. +I<7F07F0FF8FF87F07F01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01FFF
  10044. +C01FFFC01FFFC01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C01C07F07
  10045. +F0FF8FF87F07F0151C7F9B18>I<7FFF00FFFF807FFF0001C00001C00001C00001C00001C00001
  10046. +C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001C00001
  10047. +C00001C00001C00001C0007FFF00FFFF807FFF00111C7D9B18>I<01FFC003FFC001FFC0000E00
  10048. +000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00
  10049. +000E00000E00000E00000E00000E00F00E00F00E00F03C007FFC003FF0000FC000121C7D9B18>
  10050. +I<7FE000FFE0007FE0000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00
  10051. +000E00000E00000E00000E00000E00000E00000E00000E00700E00700E00700E00700E00707FFF
  10052. +F0FFFFF07FFFF0141C7F9B18>76 D<FC01F8FE03F8FE03F83B06E03B06E03B06E03B06E03B8EE0
  10053. +3B8EE0398CE0398CE039DCE039DCE039DCE038D8E038D8E038F8E03870E03870E03800E03800E0
  10054. +3800E03800E03800E03800E0FE03F8FE03F8FE03F8151C7F9B18>I<7E07F0FF0FF87F07F01D81
  10055. +C01D81C01D81C01DC1C01CC1C01CC1C01CE1C01CE1C01CE1C01C61C01C71C01C71C01C31C01C39
  10056. +C01C39C01C39C01C19C01C19C01C1DC01C0DC01C0DC01C0DC07F07C0FF87C07F03C0151C7F9B18
  10057. +>I<0FF8003FFE007FFF00780F00700700F00780E00380E00380E00380E00380E00380E00380E0
  10058. +0380E00380E00380E00380E00380E00380E00380E00380E00380E00380F00780700700780F007F
  10059. +FF003FFE000FF800111C7D9B18>I<FFFE00FFFF80FFFFC01C03C01C01E01C00E01C00701C0070
  10060. +1C00701C00701C00701C00E01C01E01C03C01FFFC01FFF801FFE001C00001C00001C00001C0000
  10061. +1C00001C00001C00001C0000FF8000FF8000FF8000141C7F9B18>I<7FF800FFFE007FFF001C0F
  10062. +801C03801C03C01C01C01C01C01C01C01C03C01C03801C0F801FFF001FFE001FFE001C0F001C07
  10063. +001C03801C03801C03801C03801C03801C039C1C039C1C039C7F01F8FF81F87F00F0161C7F9B18
  10064. +>82 D<03F3801FFF803FFF807C0F80700780E00380E00380E00380E000007000007800003F0000
  10065. +1FF00007FE0000FF00000F800003C00001C00000E00000E06000E0E000E0E001E0F001C0F80780
  10066. +FFFF80FFFE00E7F800131C7E9B18>I<7FFFF8FFFFF8FFFFF8E07038E07038E07038E070380070
  10067. +000070000070000070000070000070000070000070000070000070000070000070000070000070
  10068. +0000700000700000700000700007FF0007FF0007FF00151C7F9B18>I<FF83FEFF83FEFF83FE1C
  10069. +00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C00701C
  10070. +00701C00701C00701C00701C00701C00700E00E00F01E00783C003FF8001FF00007C00171C809B
  10071. +18>I<7F8FE07F9FE07F8FE00E07000F0700070E00078E00039C0003DC0001F80001F80000F000
  10072. +00F00000700000F00000F80001F80001DC00039E00038E00070F000707000E07800E03801E03C0
  10073. +7F07F0FF8FF87F07F0151C7F9B18>88 D<FF07F8FF07F8FF07F81C01C01E03C00E03800F078007
  10074. +0700070700038E00038E0001DC0001DC0001DC0000F80000F80000700000700000700000700000
  10075. +700000700000700000700000700001FC0003FE0001FC00151C7F9B18>I<FFF8FFF8FFF8E000E0
  10076. +00E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000
  10077. +E000E000E000E000E000E000E000E000E000FFF8FFF8FFF80D24779F18>91
  10078. +D<FFF8FFF8FFF80038003800380038003800380038003800380038003800380038003800380038
  10079. +00380038003800380038003800380038003800380038003800380038FFF8FFF8FFF80D247F9F18
  10080. +>93 D<7FFF00FFFF80FFFF807FFF0011047D7F18>95 D<1FE0003FF8007FFC00781E00300E0000
  10081. +070000070000FF0007FF001FFF007F0700780700E00700E00700E00700F00F00781F003FFFF01F
  10082. +FBF007E1F014147D9318>97 D<7E0000FE00007E00000E00000E00000E00000E00000E00000E3E
  10083. +000EFF800FFFC00FC1E00F80E00F00700E00700E00380E00380E00380E00380E00380E00380F00
  10084. +700F00700F80E00FC1E00FFFC00EFF80063E00151C809B18>I<01FE0007FF001FFF803E078038
  10085. +0300700000700000E00000E00000E00000E00000E00000E000007000007001C03801C03E03C01F
  10086. +FF8007FF0001FC0012147D9318>I<001F80003F80001F80000380000380000380000380000380
  10087. +03E3800FFB801FFF803C1F80380F80700780700380E00380E00380E00380E00380E00380E00380
  10088. +700780700780380F803C1F801FFFF00FFBF803E3F0151C7E9B18>I<01F00007FC001FFE003E0F
  10089. +00380780700380700380E001C0E001C0FFFFC0FFFFC0FFFFC0E000007000007001C03801C03E03
  10090. +C01FFF8007FF0001FC0012147D9318>I<001F80007FC000FFE000E1E001C0C001C00001C00001
  10091. +C0007FFFC0FFFFC0FFFFC001C00001C00001C00001C00001C00001C00001C00001C00001C00001
  10092. +C00001C00001C00001C00001C0007FFF007FFF007FFF00131C7F9B18>I<01E1F007FFF80FFFF8
  10093. +1E1E301C0E003807003807003807003807003807001C0E001E1E001FFC001FF80039E000380000
  10094. +1C00001FFE001FFFC03FFFE07801F0700070E00038E00038E00038E000387800F07E03F01FFFC0
  10095. +0FFF8001FC00151F7F9318>I<7E0000FE00007E00000E00000E00000E00000E00000E00000E3E
  10096. +000EFF800FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00
  10097. +E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC171C809B18>I<03800007C00007C00007C00003
  10098. +80000000000000000000000000007FC000FFC0007FC00001C00001C00001C00001C00001C00001
  10099. +C00001C00001C00001C00001C00001C00001C00001C00001C000FFFF00FFFF80FFFF00111D7C9C
  10100. +18>I<0038007C007C007C003800000000000000000FFC1FFC0FFC001C001C001C001C001C001C
  10101. +001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C001C6038F078FFF07F
  10102. +E03F800E277E9C18>I<FE0000FE0000FE00000E00000E00000E00000E00000E00000E3FF00E7F
  10103. +F00E3FF00E07800E0F000E1E000E3C000E78000EF0000FF8000FFC000F9C000F0E000E0F000E07
  10104. +000E03800E03C0FFC7F8FFC7F8FFC7F8151C7F9B18>I<7FE000FFE0007FE00000E00000E00000
  10105. +E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000
  10106. +E00000E00000E00000E00000E00000E00000E0007FFFC0FFFFE07FFFC0131C7E9B18>I<7CE0E0
  10107. +00FFFBF8007FFFF8001F1F1C001E1E1C001E1E1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C
  10108. +1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C001C1C1C007F1F1F00FFBFBF807F1F1F0019
  10109. +14819318>I<7E3E00FEFF807FFFC00FC1C00F80E00F00E00E00E00E00E00E00E00E00E00E00E0
  10110. +0E00E00E00E00E00E00E00E00E00E00E00E07FC3FCFFE7FE7FC3FC1714809318>I<01F0000FFE
  10111. +001FFF003E0F803803807001C07001C0E000E0E000E0E000E0E000E0E000E0F001E07001C07803
  10112. +C03C07803E0F801FFF000FFE0001F00013147E9318>I<7E3E00FEFF807FFFC00FC1E00F80E00F
  10113. +00700E00700E00380E00380E00380E00380E00380E00380F00700F00700F80E00FC1E00FFFC00E
  10114. +FF800E3E000E00000E00000E00000E00000E00000E00000E00007FC000FFE0007FC000151E8093
  10115. +18>I<7F87E0FF9FF07FBFF803F87803F03003E00003C00003C000038000038000038000038000
  10116. +0380000380000380000380000380007FFE00FFFF007FFE0015147F9318>114
  10117. +D<07F7003FFF007FFF00780F00E00700E00700E007007C00007FE0001FFC0003FE00001F006007
  10118. +80E00380E00380F00380F80F00FFFF00FFFC00E7F00011147D9318>I<01800003800003800003
  10119. +80000380007FFFC0FFFFC0FFFFC003800003800003800003800003800003800003800003800003
  10120. +80000380400380E00380E00380E001C1C001FFC000FF80003E0013197F9818>I<7E07E0FE0FE0
  10121. +7E07E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E00E0
  10122. +0E01E00F03E007FFFC03FFFE01FCFC1714809318>I<7F8FF0FF8FF87F8FF01E03C00E03800E03
  10123. +800E0380070700070700070700038E00038E00038E00038E0001DC0001DC0001DC0000F80000F8
  10124. +0000700015147F9318>I<FF8FF8FF8FF8FF8FF83800E03800E03800E01C01C01C01C01C71C01C
  10125. +F9C01CF9C01CD9C01CD9C00DDD800DDD800DDD800D8D800F8F800F8F8007070015147F9318>I<
  10126. +7F8FF07F9FF07F8FF0070700078E00039E0001DC0001F80000F80000700000F00000F80001DC00
  10127. +039E00038E000707000F07807F8FF0FF8FF87F8FF015147F9318>I<7F8FF0FF8FF87F8FF00E01
  10128. +C00E03800E0380070380070700070700038700038600038E0001CE0001CE0000CC0000CC0000DC
  10129. +0000780000780000780000700000700000700000F00000E00079E0007BC0007F80003F00001E00
  10130. +00151E7F9318>I<0007E0001FE0007FE000780000E00000E00000E00000E00000E00000E00000
  10131. +E00000E00000E00000E00000E00001E0007FC000FF8000FF80007FC00001E00000E00000E00000
  10132. +E00000E00000E00000E00000E00000E00000E00000E00000E000007800007FE0001FE00007E013
  10133. +247E9F18>123 D<7C0000FF0000FFC00003C00000E00000E00000E00000E00000E00000E00000
  10134. +E00000E00000E00000E00000E00000F000007FC0003FE0003FE0007FC000F00000E00000E00000
  10135. +E00000E00000E00000E00000E00000E00000E00000E00000E00003C000FFC000FF00007C000013
  10136. +247E9F18>125 D E /Fe 48 123 df<0001FF0000001FFFC000007F80F00000FC00F80001F801
  10137. +F80003F803FC0007F003FC0007F003FC0007F003FC0007F001F80007F000F00007F000000007F0
  10138. +00000007F000000007F0000000FFFFFFFC00FFFFFFFC00FFFFFFFC0007F001FC0007F001FC0007
  10139. +F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC00
  10140. +07F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC0007F001FC
  10141. +0007F001FC0007F001FC0007F001FC007FFF1FFFC07FFF1FFFC07FFF1FFFC0222A7FA926>12
  10142. +D<1C003E007F00FF80FF80FF807F003E001C0009097B8813>46 D<003F800001FFF00007E0FC00
  10143. +0FC07E001F803F001F803F003F001F803F001F807F001FC07F001FC07F001FC07F001FC0FF001F
  10144. +E0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF001FE0FF00
  10145. +1FE0FF001FE0FF001FE0FF001FE0FF001FE07F001FC07F001FC07F001FC07F001FC03F001F803F
  10146. +001F801F803F001F803F000FC07E0007E0FC0001FFF000003F80001B277DA622>48
  10147. +D<000E00001E00007E0007FE00FFFE00FFFE00F8FE0000FE0000FE0000FE0000FE0000FE0000FE
  10148. +0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE
  10149. +0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE007FFFFE7FFFFE7FFF
  10150. +FE17277BA622>I<00FF800003FFF0000FFFFC001F03FE003800FF007C007F80FE003FC0FF003F
  10151. +C0FF003FE0FF001FE0FF001FE07E001FE03C003FE000003FE000003FC000003FC000007F800000
  10152. +7F000000FE000000FC000001F8000003F0000003E00000078000000F0000001E0000003C00E000
  10153. +7000E000E000E001C001C0038001C0070001C00FFFFFC01FFFFFC03FFFFFC07FFFFFC0FFFFFF80
  10154. +FFFFFF80FFFFFF801B277DA622>I<007F800003FFF00007FFFC000F81FE001F00FF003F80FF00
  10155. +3F807F803F807F803F807F801F807F800F007F800000FF000000FF000000FE000001FC000001F8
  10156. +000007F00000FFC00000FFF0000001FC0000007E0000007F0000007F8000003FC000003FC00000
  10157. +3FE000003FE03C003FE07E003FE0FF003FE0FF003FE0FF003FC0FF007FC07E007F807C007F003F
  10158. +01FE001FFFFC0007FFF00000FF80001B277DA622>I<00000E0000001E0000003E0000007E0000
  10159. +00FE000000FE000001FE000003FE0000077E00000E7E00000E7E00001C7E0000387E0000707E00
  10160. +00E07E0000E07E0001C07E0003807E0007007E000E007E000E007E001C007E0038007E0070007E
  10161. +00E0007E00FFFFFFF8FFFFFFF8FFFFFFF80000FE000000FE000000FE000000FE000000FE000000
  10162. +FE000000FE000000FE00007FFFF8007FFFF8007FFFF81D277EA622>I<0C0003000F803F000FFF
  10163. +FE000FFFFC000FFFF8000FFFF0000FFFE0000FFFC0000FFE00000E0000000E0000000E0000000E
  10164. +0000000E0000000E0000000E7FC0000FFFF8000F80FC000E003E000C003F0000001F8000001FC0
  10165. +00001FC000001FE000001FE018001FE07C001FE0FE001FE0FE001FE0FE001FE0FE001FC0FC001F
  10166. +C078003F8078003F803C007F001F01FE000FFFF80003FFF00000FF80001B277DA622>I<0007F0
  10167. +00003FFC0000FFFE0001FC0F0003F01F8007E03F800FC03F801FC03F801F803F803F801F003F80
  10168. +00007F0000007F0000007F000000FF000000FF0FC000FF3FF800FF707C00FFC03E00FFC03F00FF
  10169. +801F80FF801FC0FF001FC0FF001FE0FF001FE0FF001FE07F001FE07F001FE07F001FE07F001FE0
  10170. +3F001FE03F001FC01F801FC01F803F800FC03F0007E07E0003FFFC0000FFF000003FC0001B277D
  10171. +A622>I<380000003E0000003FFFFFF03FFFFFF03FFFFFF07FFFFFE07FFFFFC07FFFFF807FFFFF
  10172. +0070000E0070000E0070001C00E0003800E0007000E000E0000000E0000001C000000380000007
  10173. +800000078000000F0000000F0000001F0000001F0000003F0000003E0000003E0000007E000000
  10174. +7E0000007E0000007E000000FE000000FE000000FE000000FE000000FE000000FE000000FE0000
  10175. +00FE0000007C0000003800001C297CA822>I<003FC00001FFF00003FFFC0007C07E000F003F00
  10176. +1E001F001E000F803E000F803E000F803F000F803F000F803FC00F003FF01F001FFC1E001FFE3C
  10177. +000FFFF80007FFE00003FFF80001FFFC0001FFFE0007FFFF000F0FFF801E03FFC03C01FFC07C00
  10178. +7FE078001FE0F80007E0F80007E0F80003E0F80003E0F80003E0F80003C07C0003C07C0007803F
  10179. +000F001FC03E000FFFFC0003FFF800007FC0001B277DA622>I<007F800001FFF00007FFF8000F
  10180. +E0FC001F807E003F803F007F003F007F001F80FF001F80FF001FC0FF001FC0FF001FC0FF001FE0
  10181. +FF001FE0FF001FE0FF001FE07F001FE07F003FE03F003FE01F807FE00F807FE007C1DFE003FF9F
  10182. +E0007E1FE000001FE000001FC000001FC000001FC000003F801F003F803F803F003F803F003F80
  10183. +7E003F807C001F01F8001E03F0000FFFE00007FF800001FE00001B277DA622>I<00003FF00180
  10184. +0003FFFE0380000FFFFF8780003FF007DF8000FF8001FF8001FE00007F8003FC00003F8007F000
  10185. +001F800FF000000F801FE0000007801FE0000007803FC0000007803FC0000003807FC000000380
  10186. +7F80000003807F8000000000FF8000000000FF8000000000FF8000000000FF8000000000FF8000
  10187. +000000FF8000000000FF8000000000FF8000000000FF80000000007F80000000007F8000000000
  10188. +7FC0000003803FC0000003803FC0000003801FE0000003801FE0000007000FF00000070007F000
  10189. +000E0003FC00001E0001FE00003C0000FF8000F800003FF007E000000FFFFFC0000003FFFF0000
  10190. +00003FF8000029297CA832>67 D<FFFFFFF80000FFFFFFFF8000FFFFFFFFE00003FC001FF80003
  10191. +FC0007FC0003FC0001FE0003FC0000FF0003FC00007F8003FC00003FC003FC00001FC003FC0000
  10192. +1FE003FC00001FE003FC00000FF003FC00000FF003FC00000FF003FC00000FF003FC00000FF803
  10193. +FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC00000FF803FC0000
  10194. +0FF803FC00000FF803FC00000FF803FC00000FF003FC00000FF003FC00000FF003FC00001FE003
  10195. +FC00001FE003FC00001FC003FC00003FC003FC00007F8003FC00007F0003FC0001FE0003FC0003
  10196. +FC0003FC001FF800FFFFFFFFE000FFFFFFFF8000FFFFFFFC00002D297DA835>I<FFFFFFFFE0FF
  10197. +FFFFFFE0FFFFFFFFE003FC001FE003FC0007F003FC0001F003FC0001F003FC0000F003FC000070
  10198. +03FC00007003FC00007003FC01C07803FC01C03803FC01C03803FC01C03803FC03C00003FC03C0
  10199. +0003FC0FC00003FFFFC00003FFFFC00003FFFFC00003FC0FC00003FC03C00003FC03C00003FC01
  10200. +C00E03FC01C00E03FC01C00E03FC01C01C03FC00001C03FC00001C03FC00001C03FC00003C03FC
  10201. +00003803FC00007803FC0000F803FC0001F803FC0003F803FC001FF8FFFFFFFFF0FFFFFFFFF0FF
  10202. +FFFFFFF027297DA82D>I<FFFFFFFFC0FFFFFFFFC0FFFFFFFFC003FC003FC003FC000FE003FC00
  10203. +03E003FC0001E003FC0001E003FC0000E003FC0000E003FC0000E003FC0000F003FC03807003FC
  10204. +03807003FC03807003FC03800003FC07800003FC07800003FC1F800003FFFF800003FFFF800003
  10205. +FFFF800003FC1F800003FC07800003FC07800003FC03800003FC03800003FC03800003FC038000
  10206. +03FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0000
  10207. +0003FC000000FFFFFC0000FFFFFC0000FFFFFC000024297DA82B>I<FFFFFCFFFFFCFFFFFC01FE
  10208. +0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
  10209. +0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE
  10210. +0001FE0001FE0001FE0001FE0001FE0001FE0001FE0001FE00FFFFFCFFFFFCFFFFFC16297EA81A
  10211. +>73 D<FFFFFC0000FFFFFC0000FFFFFC000003FC00000003FC00000003FC00000003FC00000003
  10212. +FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC000000
  10213. +03FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC0000
  10214. +0003FC00000003FC0001C003FC0001C003FC0001C003FC0001C003FC0003C003FC00038003FC00
  10215. +038003FC00078003FC00078003FC000F8003FC000F8003FC001F8003FC007F8003FC01FF00FFFF
  10216. +FFFF00FFFFFFFF00FFFFFFFF0022297DA829>76 D<FFFE0000001FFFC0FFFE0000001FFFC0FFFF
  10217. +0000003FFFC003FF0000003FF00003FF0000003FF00003BF80000077F00003BF80000077F00003
  10218. +9FC00000E7F000039FC00000E7F000038FE00001C7F000038FE00001C7F0000387F0000387F000
  10219. +0387F0000387F0000387F0000387F0000383F8000707F0000383F8000707F0000381FC000E07F0
  10220. +000381FC000E07F0000380FE001C07F0000380FE001C07F0000380FF003807F00003807F003807
  10221. +F00003807F003807F00003803F807007F00003803F807007F00003801FC0E007F00003801FC0E0
  10222. +07F00003800FE1C007F00003800FE1C007F00003800FE1C007F000038007F38007F000038007F3
  10223. +8007F000038003FF0007F000038003FF0007F000038001FE0007F000038001FE0007F000038000
  10224. +FC0007F000038000FC0007F000FFFE00FC01FFFFC0FFFE007801FFFFC0FFFE007801FFFFC03A29
  10225. +7DA841>I<FFFC0000FFFEFFFE0000FFFEFFFF0000FFFE03FF8000038003FF8000038003BFC000
  10226. +0380039FE0000380039FF0000380038FF80003800387F80003800383FC0003800381FE00038003
  10227. +81FF0003800380FF80038003807FC0038003803FC0038003801FE0038003800FF0038003800FF8
  10228. +0380038007FC0380038003FC0380038001FE0380038000FF0380038000FF83800380007FC38003
  10229. +80003FE3800380001FE3800380000FF38003800007FB8003800007FF8003800003FF8003800001
  10230. +FF8003800000FF80038000007F80038000007F80038000003F80038000001F80038000000F80FF
  10231. +FE00000780FFFE00000380FFFE000003802F297DA836>I<FFFFFFF800FFFFFFFF00FFFFFFFFC0
  10232. +03FC003FE003FC000FF003FC0007F803FC0007FC03FC0003FC03FC0003FE03FC0003FE03FC0003
  10233. +FE03FC0003FE03FC0003FE03FC0003FE03FC0003FE03FC0003FC03FC0007FC03FC0007F803FC00
  10234. +0FF003FC003FE003FFFFFF8003FFFFFE0003FC00000003FC00000003FC00000003FC00000003FC
  10235. +00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003FC00000003
  10236. +FC00000003FC00000003FC00000003FC000000FFFFF00000FFFFF00000FFFFF0000027297DA82F
  10237. +>80 D<FFFFFFE00000FFFFFFFE0000FFFFFFFF800003FC007FE00003FC000FF00003FC0007F800
  10238. +03FC0007FC0003FC0003FC0003FC0003FE0003FC0003FE0003FC0003FE0003FC0003FE0003FC00
  10239. +03FE0003FC0003FE0003FC0003FC0003FC0007F80003FC0007F80003FC001FE00003FC007FC000
  10240. +03FFFFFE000003FFFFF0000003FC00FC000003FC007F000003FC003F800003FC003F800003FC00
  10241. +1FC00003FC001FE00003FC001FE00003FC001FE00003FC001FE00003FC001FE00003FC001FF000
  10242. +03FC001FF00003FC001FF00003FC001FF00703FC001FF80703FC000FF80703FC0007F80EFFFFF0
  10243. +03FE1CFFFFF001FFF8FFFFF0003FF030297DA834>82 D<007F806003FFF0E007FFF9E00F807FE0
  10244. +1F001FE03E0007E07C0003E07C0001E0FC0001E0FC0001E0FC0000E0FE0000E0FE0000E0FF0000
  10245. +00FFC000007FFE00007FFFE0003FFFFC001FFFFE000FFFFF8007FFFFC003FFFFE000FFFFE00007
  10246. +FFF000007FF000000FF8000007F8000003F8600001F8E00001F8E00001F8E00001F8F00001F0F0
  10247. +0001F0F80003F0FC0003E0FF0007C0FFE01F80F3FFFF00E0FFFE00C01FF0001D297CA826>I<FF
  10248. +FFF001FFFCFFFFF001FFFCFFFFF001FFFC03FC0000070003FC0000070003FC0000070003FC0000
  10249. +070003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003
  10250. +FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC0000
  10251. +070003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003FC0000070003
  10252. +FC0000070003FC0000070003FC0000070003FC0000070003FC0000070001FC00000E0001FE0000
  10253. +0E0000FE00001C00007E00001C00007F00003800003FC000F000000FF007E0000007FFFFC00000
  10254. +01FFFF000000001FF800002E297DA835>85 D<01FF800007FFF0000F81F8001FC07E001FC07E00
  10255. +1FC03F000F803F8007003F8000003F8000003F8000003F80000FFF8000FFFF8007FC3F800FE03F
  10256. +803F803F803F003F807F003F80FE003F80FE003F80FE003F80FE003F807E007F807F00DF803F83
  10257. +9FFC0FFF0FFC01FC03FC1E1B7E9A21>97 D<FFE0000000FFE0000000FFE00000000FE00000000F
  10258. +E00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE0000000
  10259. +0FE00000000FE00000000FE00000000FE1FE00000FE7FF80000FFE07E0000FF801F0000FF000F8
  10260. +000FE000FC000FE000FE000FE0007F000FE0007F000FE0007F000FE0007F800FE0007F800FE000
  10261. +7F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F000FE0007F000FE0007F000FE0
  10262. +00FE000FE000FC000FF001F8000FF803F0000F9E07E0000F07FF80000E01FC0000212A7EA926>
  10263. +I<001FF80000FFFE0003F01F0007E03F800FC03F801F803F803F801F007F800E007F0000007F00
  10264. +0000FF000000FF000000FF000000FF000000FF000000FF000000FF0000007F0000007F0000007F
  10265. +8000003F8001C01F8001C00FC0038007E0070003F01E0000FFFC00001FE0001A1B7E9A1F>I<00
  10266. +003FF80000003FF80000003FF800000003F800000003F800000003F800000003F800000003F800
  10267. +000003F800000003F800000003F800000003F800000003F800000003F800000003F800001FE3F8
  10268. +0000FFFBF80003F03FF80007E00FF8000FC007F8001F8003F8003F8003F8007F0003F8007F0003
  10269. +F8007F0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF0003F800FF00
  10270. +03F8007F0003F8007F0003F8007F0003F8003F8003F8001F8003F8000F8007F80007C00FF80003
  10271. +F03BFF8000FFF3FF80003FC3FF80212A7EA926>I<003FE00001FFF80003F07E0007C01F000F80
  10272. +1F801F800F803F800FC07F000FC07F0007C07F0007E0FF0007E0FF0007E0FFFFFFE0FFFFFFE0FF
  10273. +000000FF000000FF0000007F0000007F0000007F0000003F8000E01F8000E00FC001C007E00380
  10274. +03F81F0000FFFE00001FF0001B1B7E9A20>I<0007F0003FFC00FE3E01F87F03F87F03F07F07F0
  10275. +7F07F03E07F00007F00007F00007F00007F00007F00007F000FFFFC0FFFFC0FFFFC007F00007F0
  10276. +0007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F00007F0
  10277. +0007F00007F00007F00007F00007F00007F0007FFF807FFF807FFF80182A7EA915>I<00FF81F0
  10278. +03FFE7F80FC1FE7C1F80FC7C1F007C383F007E107F007F007F007F007F007F007F007F007F007F
  10279. +007F007F003F007E001F007C001F80FC000FC1F8001FFFE00018FF800038000000380000003C00
  10280. +00003E0000003FFFF8001FFFFF001FFFFF800FFFFFC007FFFFE01FFFFFF03E0007F07C0001F8F8
  10281. +0000F8F80000F8F80000F8F80000F87C0001F03C0001E01F0007C00FC01F8003FFFE00007FF000
  10282. +1E287E9A22>I<FFE0000000FFE0000000FFE00000000FE00000000FE00000000FE00000000FE0
  10283. +0000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000F
  10284. +E00000000FE07F00000FE1FFC0000FE787E0000FEE03F0000FF803F0000FF803F8000FF003F800
  10285. +0FF003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8
  10286. +000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003
  10287. +F8000FE003F800FFFE3FFF80FFFE3FFF80FFFE3FFF80212A7DA926>I<07000F801FC03FE03FE0
  10288. +3FE01FC00F8007000000000000000000000000000000FFE0FFE0FFE00FE00FE00FE00FE00FE00F
  10289. +E00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2B
  10290. +7DAA14>I<FFE00000FFE00000FFE000000FE000000FE000000FE000000FE000000FE000000FE0
  10291. +00000FE000000FE000000FE000000FE000000FE000000FE000000FE01FFC0FE01FFC0FE01FFC0F
  10292. +E007800FE00F000FE01E000FE03C000FE078000FE0E0000FE3C0000FE7C0000FEFE0000FFFE000
  10293. +0FFFF0000FF3F8000FE3F8000FC1FC000FC0FE000FC07F000FC07F000FC03F800FC01FC00FC00F
  10294. +C00FC00FE0FFFC3FFEFFFC3FFEFFFC3FFE1F2A7EA924>107 D<FFE0FFE0FFE00FE00FE00FE00F
  10295. +E00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
  10296. +0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2A7DA914>I<
  10297. +FFC07F800FF000FFC1FFE03FFC00FFC383F0707E000FC603F8C07F000FCC01F9803F000FD801FF
  10298. +003F800FF001FE003F800FF001FE003F800FE001FC003F800FE001FC003F800FE001FC003F800F
  10299. +E001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC00
  10300. +3F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE001FC003F800FE0
  10301. +01FC003F800FE001FC003F80FFFE1FFFC3FFF8FFFE1FFFC3FFF8FFFE1FFFC3FFF8351B7D9A3A>
  10302. +I<FFC07F0000FFC1FFC000FFC787E0000FCE03F0000FD803F0000FD803F8000FF003F8000FF003
  10303. +F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE0
  10304. +03F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000F
  10305. +E003F800FFFE3FFF80FFFE3FFF80FFFE3FFF80211B7D9A26>I<003FE00001FFFC0003F07E000F
  10306. +C01F801F800FC03F800FE03F0007E07F0007F07F0007F07F0007F0FF0007F8FF0007F8FF0007F8
  10307. +FF0007F8FF0007F8FF0007F8FF0007F8FF0007F87F0007F07F0007F03F800FE03F800FE01F800F
  10308. +C00FC01F8007F07F0001FFFC00003FE0001D1B7E9A22>I<FFE1FE0000FFE7FF8000FFFE07E000
  10309. +0FF803F0000FF001F8000FE000FC000FE000FE000FE000FF000FE0007F000FE0007F000FE0007F
  10310. +800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F800FE0007F000FE000
  10311. +FF000FE000FF000FE000FE000FE001FC000FF001F8000FF803F0000FFE0FE0000FE7FF80000FE1
  10312. +FC00000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000FE00000000F
  10313. +E00000000FE0000000FFFE000000FFFE000000FFFE00000021277E9A26>I<FFC1F0FFC7FCFFCE
  10314. +3E0FD87F0FD87F0FF07F0FF03E0FF01C0FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE0
  10315. +000FE0000FE0000FE0000FE0000FE0000FE0000FE0000FE000FFFF00FFFF00FFFF00181B7E9A1C
  10316. +>114 D<03FE300FFFF01E03F03800F0700070F00070F00070F80070FC0000FFE0007FFE007FFF
  10317. +803FFFE01FFFF007FFF800FFF80003FC0000FC60007CE0003CF0003CF00038F80038FC0070FF01
  10318. +E0F7FFC0C1FF00161B7E9A1B>I<00700000700000700000700000F00000F00000F00001F00003
  10319. +F00003F00007F0001FFFF0FFFFF0FFFFF007F00007F00007F00007F00007F00007F00007F00007
  10320. +F00007F00007F00007F00007F00007F00007F03807F03807F03807F03807F03807F03803F03803
  10321. +F87001F86000FFC0001F8015267FA51B>I<FFE03FF800FFE03FF800FFE03FF8000FE003F8000F
  10322. +E003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F800
  10323. +0FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8000FE003F8
  10324. +000FE003F8000FE007F80007E007F80007E00FF80003F03BFF8001FFF3FF80003FC3FF80211B7D
  10325. +9A26>I<FFFE03FF80FFFE03FF80FFFE03FF8007F000700007F000700007F800F00003F800E000
  10326. +03FC01E00001FC01C00001FC01C00000FE03800000FE038000007F070000007F070000007F8F00
  10327. +00003F8E0000003FDE0000001FDC0000001FDC0000000FF80000000FF80000000FF800000007F0
  10328. +00000007F000000003E000000003E000000001C00000211B7F9A24>I<FFFE7FFC0FFEFFFE7FFC
  10329. +0FFEFFFE7FFC0FFE0FE007E000E007F003F001C007F003F001C007F807F803C003F807F8038003
  10330. +F807F8038001FC0EFC070001FC0EFC070001FE1EFC0F0000FE1C7E0E0000FE1C7E0E0000FF383F
  10331. +1E00007F383F1C00007F783F3C00003FF01FB800003FF01FB800003FF01FF800001FE00FF00000
  10332. +1FE00FF000000FC007E000000FC007E000000FC007E00000078003C00000078003C0002F1B7F9A
  10333. +32>I<FFFC0FFF00FFFC0FFF00FFFC0FFF0007F003C00003F807800001FC07800000FE0F000000
  10334. +FF1E0000007F3C0000003FF80000001FF00000000FF00000000FF000000007F000000007F80000
  10335. +000FFC0000001FFE0000001EFE0000003C7F000000783F800000F01FC00001E01FE00001C00FE0
  10336. +0003C007F000FFF01FFF80FFF01FFF80FFF01FFF80211B7F9A24>I<FFFE03FF80FFFE03FF80FF
  10337. +FE03FF8007F000700007F000700007F800F00003F800E00003FC01E00001FC01C00001FC01C000
  10338. +00FE03800000FE038000007F070000007F070000007F8F0000003F8E0000003FDE0000001FDC00
  10339. +00001FDC0000000FF80000000FF80000000FF800000007F000000007F000000003E000000003E0
  10340. +00000001C000000001C000000003800000000380000038078000007C07000000FE0F000000FE0E
  10341. +000000FE1E000000FE3C0000007C780000003FE00000000FC000000021277F9A24>I<3FFFFF80
  10342. +3FFFFF803F007F003C00FE003801FE007803FC007803F8007007F800700FF000700FE000001FC0
  10343. +00003FC000007F8000007F000000FF000001FE038001FC038003F8038007F803800FF007800FE0
  10344. +07801FE007003FC00F003F801F007F007F00FFFFFF00FFFFFF00191B7E9A1F>I
  10345. +E /Ff 31 123 df<0003E0001C1800381800703C00E03C00E03801C00001C00001C00001C00001
  10346. +C0000380007FFFF00380700380700380700380700700E00700E00700E00700E00700E00700E00E
  10347. +01C00E01C00E01C00E01C00E01C00E01C01C03801E03C0FF0FF816207E9F19>12
  10348. +D<FFC0FFC00A027D8A0F>45 D<0000100000001800000038000000380000007800000078000000
  10349. +FC000001BC0000013C0000033C0000023C0000063C0000043E0000081E0000081E0000101E0000
  10350. +101E0000201E0000200F0000400F0000400F0000FFFF0000800F0001000F800100078002000780
  10351. +0200078004000780040007800C0007C03E0007C0FF807FFC1E207E9F22>65
  10352. +D<07FFFF00007C01E0003C00F0003C00780078003C0078003C0078001E0078001E0078001E0078
  10353. +001F00F0001F00F0001F00F0001F00F0001F00F0001F00F0001F01E0001E01E0003E01E0003E01
  10354. +E0003E01E0003C01E0007C03C0007803C000F003C000F003C001E003C003C003C0078007800F00
  10355. +07803C00FFFFE000201F7E9E23>68 D<0001FC04000F030C003C009C0070007C00E0003C01C000
  10356. +3803800018078000180F0000181F0000181E0000183E0000103C0000007C0000007C0000007C00
  10357. +00007C000000F8000000F8000000F8007FFCF80003E0780001E0780001E0780003C0780003C03C
  10358. +0003C03C0003C01C0003C00E0007C007000B800380118001E06080003F80001E217B9F24>71
  10359. +D<07FFC7FFC0007C00F800003C007800003C007800007800F000007800F000007800F000007800
  10360. +F000007800F000007800F00000F001E00000F001E00000F001E00000F001E00000FFFFE00000F0
  10361. +01E00001E003C00001E003C00001E003C00001E003C00001E003C00001E003C00003C007800003
  10362. +C007800003C007800003C007800003C007800003C007800007800F000007C00F8000FFF8FFF800
  10363. +221F7E9E22>I<07FFF000007E0000003C0000003C000000780000007800000078000000780000
  10364. +007800000078000000F0000000F0000000F0000000F0000000F0000000F0000001E0000001E000
  10365. +0001E0000001E0000001E0008001E0010003C0010003C0010003C0030003C0020003C0060003C0
  10366. +060007801E0007807C00FFFFFC00191F7E9E1C>76 D<07FFFF00007C03C0003C01E0003C00F000
  10367. +7800F0007800F8007800F8007800F8007800F8007800F000F001F000F001E000F003C000F00780
  10368. +00F00F0000FFF80001E0000001E0000001E0000001E0000001E0000001E0000003C0000003C000
  10369. +0003C0000003C0000003C0000003C000000780000007C00000FFFC00001D1F7E9E1F>80
  10370. +D<3FFFFFF03C0780F03007803060078030400F0010400F0010C00F0010800F0010800F0010800F
  10371. +0010001E0000001E0000001E0000001E0000001E0000001E0000003C0000003C0000003C000000
  10372. +3C0000003C0000003C000000780000007800000078000000780000007800000078000000F00000
  10373. +01F800007FFFE0001C1F7A9E21>84 D<07F8000C0C001E06001E07001C07000007000007000007
  10374. +0000FF0007C7001E07003C0E00780E00F00E10F00E10F00E10F01E10F02E20784F401F87801414
  10375. +7D9317>97 D<0700003F00000F00000700000700000E00000E00000E00000E00000E00000E0000
  10376. +1C00001C7C001D87001E03801C01C01C01C03801C03801E03801E03801E03801E03801E07003C0
  10377. +7003C0700380700780700700700E00E81C00C4380083E00013207B9F19>I<01FC07060E0F1C0F
  10378. +380E78007000F000F000F000F000E000E000E000E000F0027004300818300FC010147C9314>I<
  10379. +0000700003F00000F00000700000700000E00000E00000E00000E00000E00000E00001C000F9C0
  10380. +0305C00E03C01C03C03801C0780380700380F00380F00380F00380F00380E00700E00700E00700
  10381. +E00700E00700700F00301E00186F000F8FE014207C9F19>I<00F800070E000E07001C07003803
  10382. +80780380700380F00380F00380FFFF80F00000E00000E00000E00000E00000F001007002003004
  10383. +001C180007E00011147D9314>I<0007800018C00031E00061E000E1C000C00001C00001C00001
  10384. +C00001C00001C0000380007FF80003800003800003800003800007000007000007000007000007
  10385. +00000700000E00000E00000E00000E00000E00000E00001C00001E0000FFE00013207E9F0E>I<
  10386. +00000E003E1100E1A301C1C20381E00780E00701E00F01E00F01E00F01E00703C0070380078700
  10387. +04FC000800000800001800001C00000FFF000FFFC007FFE01800F0300030600030C00030C00030
  10388. +C000306000603000C01C070007FC00181F809417>I<00E00007E00001E00000E00000E00001C0
  10389. +0001C00001C00001C00001C00001C000038000038F800390E003A0E003C0600380600780E00700
  10390. +E00700E00700E00700E00700E00E01C00E01C00E01C00E01C00E01C00E01C01C03801E03C0FFCF
  10391. +F815207E9F19>I<01C003E003E003C0018000000000000000000000000003801F800780038003
  10392. +800700070007000700070007000E000E000E000E000E000E001C001E00FF800B1F7F9E0C>I<00
  10393. +E00007E00001E00000E00000E00001C00001C00001C00001C00001C00001C0000380000383FC03
  10394. +80F00380C0038180038100070400070800071800073800077C00071C000E1C000E0E000E0E000E
  10395. +0F000E07000E07801C03801E07C0FF8FF016207E9F18>107 D<00E007E001E000E000E001C001
  10396. +C001C001C001C001C00380038003800380038003800700070007000700070007000E000E000E00
  10397. +0E000E000E001C001E00FFC00B207F9F0C>I<0387C07C001F9861860007A072070003C0340300
  10398. +03803803000780780700070070070007007007000700700700070070070007007007000E00E00E
  10399. +000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E001C01C01C001E01E01E00FFCFFC
  10400. +FFC022147E9326>I<038F801F90E007A0E003C0600380600780E00700E00700E00700E00700E0
  10401. +0700E00E01C00E01C00E01C00E01C00E01C00E01C01C03801E03C0FFCFF815147E9319>I<00FC
  10402. +000387000E01801C00C03800E03800E07000F0F000F0F000F0F000F0F000F0E001E0E001E0E001
  10403. +C0E003C0F00380700700380E001C1C0007E00014147D9317>I<00E3E007EC3800F01C00E01E00
  10404. +E00E01C00E01C00F01C00F01C00F01C00F01C00F03801E03801E03801C03803C03803803807007
  10405. +40E00721C0071F000700000700000700000E00000E00000E00000E00001E0000FFC000181D8093
  10406. +19>I<038E001FB38007C78003C7800383000780000700000700000700000700000700000E0000
  10407. +0E00000E00000E00000E00000E00001C00001E0000FFE00011147E9312>114
  10408. +D<01F2060E080618061802380438001E001FE00FF003F8003C401C400C400C600C6018E010D060
  10409. +8FC00F147E9312>I<0080010001000100030007000F001E00FFF80E000E000E000E001C001C00
  10410. +1C001C001C001C00380038203820382038203840384018800F000D1C7C9B12>I<1C0380FC1F80
  10411. +3C07801C03801C0380380700380700380700380700380700380700700E00700E00700E00700E00
  10412. +701E00701E00703C00305E001F9FC012147B9319>I<1FF0FF03C07801C06001C04000E08000E1
  10413. +80007300007600003C00003C00001C00002E00004E000087000107000203800603800C01C03E03
  10414. +E0FF07FC18147F9318>120 D<0FF83F8001E00E0001C00C0001C0080000E0180000E0100000E0
  10415. +200000E0200000F040000070400000708000007080000071000000390000003A0000003E000000
  10416. +3C00000038000000180000001000000010000000200000002000000040000070C00000F0800000
  10417. +F1000000E20000007C000000191D809318>I<07FFE00701E00401C00C0380080700080E00101C
  10418. +0000380000700000700000E00001C0000380800700800E00801C01001C0100380300700E00FFFE
  10419. +0013147F9314>I E /Fg 11 117 df<1F003F807FC0FFE0FFE0FFE0FFE0FFE07FC03F801F000B
  10420. +0B7A8A17>46 D<0001E0000003E000000FE000007FE0001FFFE000FFFFE000FFBFE000E03FE000
  10421. +003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE0
  10422. +00003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003F
  10423. +E000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE000003FE00000
  10424. +3FE000003FE000003FE000003FE000003FE000003FE0007FFFFFF07FFFFFF07FFFFFF01C2E7AAD
  10425. +29>49 D<00FFE00003FFFC000FFFFF001F007F803C003FC07E001FE07F001FE0FF801FF0FF801F
  10426. +F0FF801FF0FF801FF07F001FF03E003FE01C003FC000007F800000FF000001FE000001F8000003
  10427. +F0000007E0000007C000000F8000000F0000000E0000000E0000001E0000001C0000001C000000
  10428. +1C0000001C0000001C0000001C0000001C00000000000000000000000000000000000000000000
  10429. +00000000001C0000007F000000FF800000FF800001FFC00001FFC00001FFC00000FF800000FF80
  10430. +00007F0000001C00001C327BB127>63 D<FFFFFE07FFFFF801FFFFFFFFFE07FFFFF801FFFFFFFF
  10431. +FE07FFFFF801FFFF03FF00000FFC000007E003FF80000FFC000003C001FF80000FFE0000038001
  10432. +FF800007FE0000038001FFC00007FE0000078000FFC00007FF0000070000FFE00003FF00000700
  10433. +007FE00003FF80000E00007FE00003FF80000E00007FF00003FF80001E00003FF00007FFC0001C
  10434. +00003FF80007FFC0001C00001FF80007FFE0003800001FF8000E7FE0003800001FFC000E7FE000
  10435. +7800000FFC001E7FF0007000000FFC001C3FF00070000007FE001C3FF000E0000007FE00381FF8
  10436. +00E0000007FF00381FF801E0000003FF00781FFC01C0000003FF00700FFC01C0000003FF80700F
  10437. +FC03C0000001FF80F00FFE0380000001FFC0E007FE0380000000FFC0E007FF0700000000FFC1C0
  10438. +03FF0700000000FFE1C003FF0F000000007FE3C003FF8E000000007FE38001FF8E000000003FF3
  10439. +8001FF9C000000003FF70000FFDC000000003FFF0000FFFC000000001FFF0000FFF8000000001F
  10440. +FE00007FF8000000000FFE00007FF0000000000FFC00003FF0000000000FFC00003FF000000000
  10441. +07FC00003FE00000000007F800001FE00000000007F800001FE00000000003F800001FC0000000
  10442. +0003F000000FC00000000001F000000F800000000001E0000007800000000000E0000007000000
  10443. +50317EB055>87 D<007FF8000003FFFF000007FFFFC0000FE01FE0001FF007F0001FF003F8001F
  10444. +F003FC001FF001FE000FE001FE0007C001FE00010001FE00000001FE00000001FE000001FFFE00
  10445. +003FFFFE0001FFF1FE0007FE01FE000FF001FE001FC001FE003F8001FE007F8001FE00FF0001FE
  10446. +00FF0001FE00FF0001FE00FF0001FE00FF0003FE007F8003FE007FC00EFE003FF03CFF000FFFF8
  10447. +7FF807FFF03FF800FF800FF825207E9F28>97 D<00000007E0000003FFE0000003FFE0000003FF
  10448. +E00000003FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE0000000
  10449. +1FE00000001FE00000001FE00000001FE00000001FE00000001FE00000001FE0000FF81FE0007F
  10450. +FF1FE001FFFFDFE003FE03FFE007F800FFE00FE0003FE01FE0001FE03FC0001FE03FC0001FE07F
  10451. +80001FE07F80001FE07F80001FE0FF80001FE0FF80001FE0FF80001FE0FF80001FE0FF80001FE0
  10452. +FF80001FE0FF80001FE0FF80001FE07F80001FE07F80001FE07F80001FE03FC0001FE03FC0001F
  10453. +E01FC0003FE00FE0007FE007F001FFE003FC07DFF001FFFF9FFF007FFE1FFF000FF01FFF28327D
  10454. +B12E>100 D<01F800000000FFF800000000FFF800000000FFF8000000000FF80000000007F800
  10455. +00000007F80000000007F80000000007F80000000007F80000000007F80000000007F800000000
  10456. +07F80000000007F80000000007F80000000007F80000000007F80000000007F80000000007F807
  10457. +F8000007F83FFF000007F87FFF800007F8F03FC00007F9C01FE00007FB000FE00007FE000FF000
  10458. +07FE000FF00007FC000FF00007FC000FF00007F8000FF00007F8000FF00007F8000FF00007F800
  10459. +0FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF000
  10460. +07F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F8000FF00007F800
  10461. +0FF00007F8000FF00007F8000FF000FFFFC1FFFF80FFFFC1FFFF80FFFFC1FFFF8029327DB12E>
  10462. +104 D<01C00007F0000FF8000FF8001FFC001FFC001FFC000FF8000FF80007F00001C000000000
  10463. +00000000000000000000000000000000000000000001F800FFF800FFF800FFF8000FF80007F800
  10464. +07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800
  10465. +07F80007F80007F80007F80007F80007F80007F80007F80007F80007F800FFFF80FFFF80FFFF80
  10466. +11337DB217>I<01F800FFF800FFF800FFF8000FF80007F80007F80007F80007F80007F80007F8
  10467. +0007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F8
  10468. +0007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F8
  10469. +0007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800FFFFC0FFFFC0FFFF
  10470. +C012327DB117>108 D<00FF870007FFEF001FFFFF003F007F003C001F0078000F00F8000700F8
  10471. +000700F8000700FC000700FF000000FFF800007FFFC0003FFFF0003FFFFC000FFFFE0007FFFF00
  10472. +01FFFF80001FFF800000FFC000001FC060000FC0E00007C0E00007C0F00007C0F8000780F8000F
  10473. +80FE000F00FF803E00FFFFFC00F3FFF800C07FC0001A207D9F21>115 D<003800003800003800
  10474. +00380000380000780000780000780000F80000F80001F80003F80007F8001FF800FFFFFEFFFFFE
  10475. +FFFFFE07F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F80007F800
  10476. +07F80007F80007F80007F80007F80707F80707F80707F80707F80707F80707F80703F80E03FC0E
  10477. +01FE1C00FFF8007FF0000FE0182E7EAD20>I E /Fh 10 122 df<1C007F007F00FF80FF80FF80
  10478. +7F007F001C0009097B8813>46 D<FFFFF00FFFFFFFFFF00FFFFFFFFFF00FFFFF03FC00003FC003
  10479. +FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC0000
  10480. +3FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003
  10481. +FC00003FC003FFFFFFFFC003FFFFFFFFC003FFFFFFFFC003FC00003FC003FC00003FC003FC0000
  10482. +3FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003
  10483. +FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC00003FC003FC0000
  10484. +3FC003FC00003FC0FFFFF00FFFFFFFFFF00FFFFFFFFFF00FFFFF30297EA835>72
  10485. +D<FFFFE0FFFFE01FFFC0FFFFE0FFFFE01FFFC0FFFFE0FFFFE01FFFC003FC0003FC0000700003FC
  10486. +0003FC0000700003FE0003FE0000F00001FE0001FE0000E00001FE0001FE0000E00001FF0001FF
  10487. +0001E00000FF0001FF0001C00000FF0001FF0001C000007F8003FF80038000007F8003FF800380
  10488. +00007FC007FFC0078000003FC0073FC0070000003FC0073FC0070000003FE00F3FE00F0000001F
  10489. +E00E1FE00E0000001FE00E1FE00E0000000FF01C0FF01C0000000FF01C0FF01C0000000FF01C0F
  10490. +F81C00000007F83807F83800000007F83807F83800000007FC7807FC7800000003FC7003FC7000
  10491. +000003FC7003FC7000000003FEF003FEF000000001FEE001FEE000000001FEE001FEE000000000
  10492. +FFC000FFC000000000FFC000FFC000000000FFC000FFC0000000007F80007F80000000007F8000
  10493. +7F80000000007F80007F80000000003F00003F00000000003F00003F00000000003F00003F0000
  10494. +0000001E00001E00000000001E00001E00000042297FA845>87 D<FFE00000FFE00000FFE00000
  10495. +0FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000000FE000
  10496. +000FE000000FE000000FE1FE000FE7FF800FFE07E00FF803F00FF001F80FE000FC0FE000FC0FE0
  10497. +007E0FE0007E0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0FE0007F0F
  10498. +E0007E0FE0007E0FE0007E0FE000FC0FE000FC0FF001F80FF803F00F9C0FE00F0FFF800E01FC00
  10499. +202A7EA925>98 D<07000F801FC03FE03FE03FE01FC00F80070000000000000000000000000000
  10500. +00FFE0FFE0FFE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0
  10501. +0FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2B7EAA12>105 D<FFE0FFE0FFE00FE00FE00FE00FE0
  10502. +0FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00F
  10503. +E00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE00FE0FFFEFFFEFFFE0F2A7EA912>108
  10504. +D<FFC07E00FFC1FF80FFC30FC00FC40FE00FC807E00FD807F00FD007F00FD007F00FE007F00FE0
  10505. +07F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00FE007F00F
  10506. +E007F00FE007F00FE007F00FE007F00FE007F0FFFE3FFFFFFE3FFFFFFE3FFF201B7D9A25>110
  10507. +D<003FE00001FFFC0003F07E000FC01F801F800FC03F0007E03F0007E07E0003F07E0003F07E00
  10508. +03F0FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F8FE0003F87E0003F07E
  10509. +0003F03F0007E03F0007E01F800FC00FC01F8007F07F0001FFFC00003FE0001D1B7E9A22>I<03
  10510. +FE300FFFF03E03F07800F07000F0F00070F00070F80070FE0000FFE0007FFF007FFFC03FFFE01F
  10511. +FFF007FFF800FFF80007FC0000FCE0007CE0003CF0003CF00038F80038FC0070FF01E0E7FFC0C1
  10512. +FF00161B7E9A1B>115 D<FFFE07FFFFFE07FFFFFE07FF07F000E007F000E007F801E003F801C0
  10513. +03F801C001FC038001FC038001FE078000FE070000FF0F00007F0E00007F0E00003F9C00003F9C
  10514. +00003FFC00001FF800001FF800000FF000000FF0000007F0000007E0000007E0000003C0000003
  10515. +C000000380000003800000078000380700007C070000FE0E0000FE0E0000FE1C0000FE3800007C
  10516. +7000003FE000000F80000020277F9A23>121 D E /Fi 1 14 df<0003FE0000000FFF8000003C
  10517. +01E00000F000780001C0001C00030000060006000003000C0000018018000000C018000000C030
  10518. +000000603000000060600000003060000000306000000030C000000018C000000018C000000018
  10519. +C000000018C000000018C000000018C000000018C000000018C000000018600000003060000000
  10520. +3060000000303000000060300000006018000000C018000000C00C000001800600000300030000
  10521. +060001C0001C0000F0007800003C01E000000FFF80000003FE000025277E9D2A>13
  10522. +D E /Fj 71 125 df<001F83E000F06E3001C078780380F8780300F03007007000070070000700
  10523. +700007007000070070000700700007007000FFFFFF800700700007007000070070000700700007
  10524. +007000070070000700700007007000070070000700700007007000070070000700700007007000
  10525. +070070000700700007007000070070007FE3FF001D20809F1B>11 D<003F0000E0C001C0C00381
  10526. +E00701E00701E0070000070000070000070000070000070000FFFFE00700E00700E00700E00700
  10527. +E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700E00700
  10528. +E00700E07FC3FE1720809F19>I<70F8FCFC74040404080810102040060E7C9F0D>39
  10529. +D<0020004000800100020006000C000C00180018003000300030007000600060006000E000E000
  10530. +E000E000E000E000E000E000E000E000E000E0006000600060007000300030003000180018000C
  10531. +000C000600020001000080004000200B2E7DA112>I<800040002000100008000C000600060003
  10532. +00030001800180018001C000C000C000C000E000E000E000E000E000E000E000E000E000E000E0
  10533. +00E000C000C000C001C001800180018003000300060006000C00080010002000400080000B2E7D
  10534. +A112>I<70F8FCFC74040404080810102040060E7C840D>44 D<FFC0FFC00A027F8A0F>I<70F8F8
  10535. +F87005057C840D>I<000100030003000600060006000C000C000C001800180018003000300030
  10536. +00600060006000C000C000C00180018001800300030003000600060006000C000C000C00180018
  10537. +001800300030003000600060006000C000C000C000102D7DA117>I<03F0000E1C001C0E001806
  10538. +00380700700380700380700380700380F003C0F003C0F003C0F003C0F003C0F003C0F003C0F003
  10539. +C0F003C0F003C0F003C0F003C0F003C07003807003807003807807803807001806001C0E000E1C
  10540. +0003F000121F7E9D17>I<018003800F80F3800380038003800380038003800380038003800380
  10541. +0380038003800380038003800380038003800380038003800380038007C0FFFE0F1E7C9D17>I<
  10542. +03F0000C1C00100E00200700400780800780F007C0F803C0F803C0F803C02007C00007C0000780
  10543. +000780000F00000E00001C0000380000700000600000C0000180000300000600400C0040180040
  10544. +1000803FFF807FFF80FFFF80121E7E9D17>I<03F0000C1C00100E00200F00780F807807807807
  10545. +80380F80000F80000F00000F00000E00001C0000380003F000003C00000E00000F000007800007
  10546. +800007C02007C0F807C0F807C0F807C0F00780400780400F00200E001C3C0003F000121F7E9D17
  10547. +>I<000600000600000E00000E00001E00002E00002E00004E00008E00008E00010E00020E0002
  10548. +0E00040E00080E00080E00100E00200E00200E00400E00C00E00FFFFF0000E00000E00000E0000
  10549. +0E00000E00000E00000E0000FFE0141E7F9D17>I<1803001FFE001FFC001FF8001FE000100000
  10550. +10000010000010000010000010000011F000161C00180E001007001007800003800003800003C0
  10551. +0003C00003C07003C0F003C0F003C0E00380400380400700200600100E000C380003E000121F7E
  10552. +9D17>I<007C000182000701000E03800C07801C0780380300380000780000700000700000F1F0
  10553. +00F21C00F40600F80700F80380F80380F003C0F003C0F003C0F003C0F003C07003C07003C07003
  10554. +803803803807001807000C0E00061C0001F000121F7E9D17>I<4000007FFFC07FFF807FFF8040
  10555. +010080020080020080040000080000080000100000200000200000400000400000C00000C00001
  10556. +C00001800003800003800003800003800007800007800007800007800007800007800007800003
  10557. +0000121F7D9D17>I<03F0000C0C00100600300300200180600180600180600180700180780300
  10558. +3E03003F06001FC8000FF00003F80007FC000C7E00103F00300F806003804001C0C001C0C000C0
  10559. +C000C0C000C0C000806001802001001002000C0C0003F000121F7E9D17>I<03F0000E18001C0C
  10560. +00380600380700700700700380F00380F00380F003C0F003C0F003C0F003C0F003C07007C07007
  10561. +C03807C0180BC00E13C003E3C0000380000380000380000700300700780600780E00700C002018
  10562. +001070000FC000121F7E9D17>I<70F8F8F8700000000000000000000070F8F8F87005147C930D>
  10563. +I<70F8F8F8700000000000000000000070F0F8F878080808101010202040051D7C930D>I<0001
  10564. +00000003800000038000000380000007C0000007C0000007C0000009E0000009E0000009E00000
  10565. +10F0000010F0000010F00000207800002078000020780000403C0000403C0000403C0000801E00
  10566. +00801E0000FFFE0001000F0001000F0001000F00020007800200078002000780040003C00E0003
  10567. +C01F0007E0FFC03FFE1F207F9F22>65 D<FFFFE0000F80380007801E0007801F0007800F000780
  10568. +0F8007800F8007800F8007800F8007800F8007800F0007801F0007801E0007803C0007FFF00007
  10569. +803C0007801E0007800F0007800F8007800780078007C0078007C0078007C0078007C0078007C0
  10570. +0780078007800F8007800F0007801F000F803C00FFFFF0001A1F7E9E20>I<000FC040007030C0
  10571. +01C009C0038005C0070003C00E0001C01E0000C01C0000C03C0000C07C0000407C000040780000
  10572. +40F8000000F8000000F8000000F8000000F8000000F8000000F8000000F8000000F80000007800
  10573. +00007C0000407C0000403C0000401C0000401E0000800E000080070001000380020001C0040000
  10574. +703800000FC0001A217D9F21>I<FFFFE0000F803C0007801E000780070007800380078003C007
  10575. +8001E0078001E0078001F0078000F0078000F0078000F8078000F8078000F8078000F8078000F8
  10576. +078000F8078000F8078000F8078000F8078000F0078000F0078000F0078001E0078001E0078003
  10577. +C0078003800780070007800E000F803C00FFFFE0001D1F7E9E23>I<FFFFFF000F800F00078003
  10578. +000780030007800100078001800780008007800080078000800780808007808000078080000780
  10579. +80000781800007FF80000781800007808000078080000780800007808000078000200780002007
  10580. +800020078000400780004007800040078000C0078000C0078001800F800F80FFFFFF801B1F7E9E
  10581. +1F>I<FFFFFF000F800F0007800300078003000780010007800180078000800780008007800080
  10582. +07800080078080000780800007808000078080000781800007FF80000781800007808000078080
  10583. +000780800007808000078000000780000007800000078000000780000007800000078000000780
  10584. +00000FC00000FFFE0000191F7E9E1E>I<FFF8FFF80F800F8007800F0007800F0007800F000780
  10585. +0F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007FFFF0007
  10586. +800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F0007800F00
  10587. +07800F0007800F0007800F0007800F000F800F80FFF8FFF81D1F7E9E22>72
  10588. +D<FFFC0FC007800780078007800780078007800780078007800780078007800780078007800780
  10589. +07800780078007800780078007800780078007800FC0FFFC0E1F7F9E10>I<FFFE000FC0000780
  10590. +000780000780000780000780000780000780000780000780000780000780000780000780000780
  10591. +0007800007800007800007800007800207800207800207800207800607800407800407800C0780
  10592. +1C0F807CFFFFFC171F7E9E1C>76 D<FF803FF807C007C007C0038005E0010005E0010004F00100
  10593. +0478010004780100043C0100043C0100041E0100040F0100040F010004078100040781000403C1
  10594. +000401E1000401E1000400F1000400F1000400790004003D0004003D0004001F0004001F000400
  10595. +0F0004000700040007000E0003001F000300FFE001001D1F7E9E22>78 D<001F800000F0F00001
  10596. +C0380007801E000F000F000E0007001E0007803C0003C03C0003C07C0003E0780001E0780001E0
  10597. +F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0F80001F0780001
  10598. +E07C0003E07C0003E03C0003C03C0003C01E0007800E0007000F000F0007801E0001C0380000F0
  10599. +F000001F80001C217D9F23>I<FFFFE0000F80780007801C0007801E0007800F0007800F800780
  10600. +0F8007800F8007800F8007800F8007800F8007800F0007801E0007801C000780780007FFE00007
  10601. +800000078000000780000007800000078000000780000007800000078000000780000007800000
  10602. +0780000007800000078000000FC00000FFFC0000191F7E9E1F>I<FFFF80000F80F00007807800
  10603. +07803C0007801E0007801E0007801F0007801F0007801F0007801F0007801E0007801E0007803C
  10604. +00078078000780F00007FF80000781C0000780E0000780F0000780700007807800078078000780
  10605. +780007807C0007807C0007807C0007807C0407807E0407803E040FC01E08FFFC0F10000003E01E
  10606. +207E9E21>82 D<07E0800C1980100780300380600180600180E00180E00080E00080E00080F000
  10607. +00F000007800007F00003FF0001FFC000FFE0003FF00001F800007800003C00003C00001C08001
  10608. +C08001C08001C08001C0C00180C00380E00300F00600CE0C0081F80012217D9F19>I<7FFFFFE0
  10609. +780F01E0600F0060400F0020400F0020C00F0030800F0010800F0010800F0010800F0010000F00
  10610. +00000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F
  10611. +0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000000F0000001F800007
  10612. +FFFE001C1F7E9E21>I<FFFC3FF80FC007C0078003800780010007800100078001000780010007
  10613. +800100078001000780010007800100078001000780010007800100078001000780010007800100
  10614. +07800100078001000780010007800100078001000780010007800100038002000380020001C002
  10615. +0001C0040000E008000070180000382000000FC0001D207E9E22>I<FFF003FE1F8000F80F0000
  10616. +600F800060078000400780004003C0008003C0008003C0008001E0010001E0010001F0010000F0
  10617. +020000F0020000F806000078040000780400003C0800003C0800003C0800001E1000001E100000
  10618. +1F3000000F2000000F20000007C0000007C0000007C00000038000000380000003800000010000
  10619. +1F207F9E22>I<FFF07FF81FF01F800FC007C00F00078003800F00078001000F0007C001000780
  10620. +07C00200078007C00200078007C0020003C009E0040003C009E0040003C009E0040003E010F00C
  10621. +0001E010F0080001E010F0080001F02078080000F02078100000F02078100000F0403C10000078
  10622. +403C20000078403C20000078C03E2000003C801E4000003C801E4000003C801E4000001F000F80
  10623. +00001F000F8000001F000F8000001E00078000000E00070000000E00070000000C000300000004
  10624. +000200002C207F9E2F>I<7FF83FF80FE00FC007C0070003C0020001E0040001F00C0000F00800
  10625. +00781000007C1000003C2000003E4000001E4000000F8000000F8000000780000003C0000007E0
  10626. +000005E0000009F0000018F8000010780000207C0000603C0000401E0000801F0001800F000100
  10627. +0780020007C0070003C01F8007E0FFE01FFE1F1F7F9E22>I<FEFEC0C0C0C0C0C0C0C0C0C0C0C0
  10628. +C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0C0FEFE072D7CA10D>91
  10629. +D<FEFE060606060606060606060606060606060606060606060606060606060606060606060606
  10630. +0606060606FEFE072D7FA10D>93 D<081020204040808080B8FCFC7C38060E7D9F0D>96
  10631. +D<1FE000303000781800781C00300E00000E00000E00000E0000FE00078E001E0E00380E00780E
  10632. +00F00E10F00E10F00E10F01E10781E103867200F83C014147E9317>I<0E0000FE00000E00000E
  10633. +00000E00000E00000E00000E00000E00000E00000E00000E00000E3E000EC3800F01C00F00E00E
  10634. +00E00E00700E00700E00780E00780E00780E00780E00780E00780E00700E00700E00E00F00E00D
  10635. +01C00CC300083E0015207F9F19>I<03F80E0C1C1E381E380C70007000F000F000F000F000F000
  10636. +F00070007000380138011C020E0C03F010147E9314>I<000380003F8000038000038000038000
  10637. +038000038000038000038000038000038000038003E380061B801C078038038038038070038070
  10638. +0380F00380F00380F00380F00380F00380F003807003807003803803803807801C07800E1B8003
  10639. +E3F815207E9F19>I<03F0000E1C001C0E00380700380700700700700380F00380F00380FFFF80
  10640. +F00000F00000F000007000007000003800801800800C010007060001F80011147F9314>I<007C
  10641. +00C6018F038F07060700070007000700070007000700FFF0070007000700070007000700070007
  10642. +0007000700070007000700070007000700070007007FF01020809F0E>I<0000E003E3300E3C30
  10643. +1C1C30380E00780F00780F00780F00780F00780F00380E001C1C001E380033E000200000200000
  10644. +3000003000003FFE001FFF800FFFC03001E0600070C00030C00030C00030C000306000603000C0
  10645. +1C038003FC00141F7F9417>I<0E0000FE00000E00000E00000E00000E00000E00000E00000E00
  10646. +000E00000E00000E00000E3E000E43000E81800F01C00F01C00E01C00E01C00E01C00E01C00E01
  10647. +C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC16207F9F19>I<1C
  10648. +003E003E003E001C000000000000000000000000000E007E000E000E000E000E000E000E000E00
  10649. +0E000E000E000E000E000E000E000E000E000E00FFC00A1F809E0C>I<00E001F001F001F000E0
  10650. +000000000000000000000000007007F000F0007000700070007000700070007000700070007000
  10651. +7000700070007000700070007000700070007000706070F060F0C061803F000C28829E0E>I<0E
  10652. +0000FE00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E00000E0FF00E
  10653. +03C00E03000E02000E04000E08000E10000E30000E70000EF8000F38000E1C000E1E000E0E000E
  10654. +07000E07800E03800E03C00E03E0FFCFF815207F9F18>I<0E00FE000E000E000E000E000E000E
  10655. +000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E000E00
  10656. +0E000E000E000E00FFE00B20809F0C>I<0E1F01F000FE618618000E81C81C000F00F00E000F00
  10657. +F00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E
  10658. +00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E000E00E00E00FFE7FE7FE0
  10659. +23147F9326>I<0E3E00FE43000E81800F01C00F01C00E01C00E01C00E01C00E01C00E01C00E01
  10660. +C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C0FFE7FC16147F9319>I<01F80007
  10661. +0E001C03803801C03801C07000E07000E0F000F0F000F0F000F0F000F0F000F0F000F07000E070
  10662. +00E03801C03801C01C0380070E0001F80014147F9317>I<0E3E00FEC3800F01C00F00E00E00E0
  10663. +0E00F00E00700E00780E00780E00780E00780E00780E00780E00700E00F00E00E00F01E00F01C0
  10664. +0EC3000E3E000E00000E00000E00000E00000E00000E00000E00000E0000FFE000151D7F9319>
  10665. +I<03E0800619801C05803C0780380380780380700380F00380F00380F00380F00380F00380F003
  10666. +807003807803803803803807801C0B800E138003E3800003800003800003800003800003800003
  10667. +80000380000380003FF8151D7E9318>I<0E78FE8C0F1E0F1E0F0C0E000E000E000E000E000E00
  10668. +0E000E000E000E000E000E000E000E00FFE00F147F9312>I<1F9030704030C010C010C010E000
  10669. +78007F803FE00FF00070803880188018C018C018E030D0608F800D147E9312>I<020002000200
  10670. +060006000E000E003E00FFF80E000E000E000E000E000E000E000E000E000E000E000E080E080E
  10671. +080E080E080610031001E00D1C7F9B12>I<0E01C0FE1FC00E01C00E01C00E01C00E01C00E01C0
  10672. +0E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E01C00E03C00603C0030DC001F1FC
  10673. +16147F9319>I<FF83F81E01E01C00C00E00800E00800E00800701000701000382000382000382
  10674. +0001C40001C40001EC0000E80000E80000700000700000700000200015147F9318>I<FF9FE1FC
  10675. +3C0780701C0300601C0380200E0380400E0380400E03C0400707C0800704C0800704E080038861
  10676. +000388710003C8730001D0320001D03A0000F03C0000E01C0000E01C0000601800004008001E14
  10677. +7F9321>I<7FC3FC0F01E00701C007018003810001C20000E40000EC00007800003800003C0000
  10678. +7C00004E000087000107000303800201C00601E01E01E0FF07FE1714809318>I<FF83F81E01E0
  10679. +1C00C00E00800E00800E008007010007010003820003820003820001C40001C40001EC0000E800
  10680. +00E800007000007000007000002000002000004000004000004000F08000F08000F10000620000
  10681. +3C0000151D7F9318>I<3FFF380E200E201C40384078407000E001E001C00380078007010E011E
  10682. +011C0338027006700EFFFE10147F9314>I<FFFFFC1601808C17>I<FFFFFFFFFFF02C01808C2D>
  10683. +I E /Fk 3 109 df<FFFFFFFFFFFFC0000000FFFFFFFFFFFFFE000000FFFFFFFFFFFFFFC00000
  10684. +FFFFFFFFFFFFFFF00000FFFFFFFFFFFFFFFC0000001FFF800007FFFF0000001FFF8000007FFF80
  10685. +00001FFF8000000FFFE000001FFF80000007FFF000001FFF80000001FFF800001FFF80000000FF
  10686. +FC00001FFF800000007FFE00001FFF800000003FFF00001FFF800000001FFF00001FFF80000000
  10687. +0FFF80001FFF800000000FFFC0001FFF8000000007FFC0001FFF8000000007FFE0001FFF800000
  10688. +0003FFE0001FFF8000000003FFF0001FFF8000000003FFF0001FFF8000000003FFF8001FFF8000
  10689. +000001FFF8001FFF8000000001FFF8001FFF8000000001FFFC001FFF8000000001FFFC001FFF80
  10690. +00000001FFFC001FFF8000000001FFFC001FFF8000000001FFFC001FFF8000000001FFFE001FFF
  10691. +8000000000FFFE001FFF8000000000FFFE001FFF8000000000FFFE001FFF8000000000FFFE001F
  10692. +FF8000000000FFFE001FFF8000000000FFFE001FFF8000000000FFFE001FFF8000000000FFFE00
  10693. +1FFF8000000000FFFE001FFF8000000000FFFE001FFF8000000000FFFE001FFF8000000000FFFE
  10694. +001FFF8000000001FFFE001FFF8000000001FFFC001FFF8000000001FFFC001FFF8000000001FF
  10695. +FC001FFF8000000001FFFC001FFF8000000001FFF8001FFF8000000001FFF8001FFF8000000001
  10696. +FFF8001FFF8000000003FFF0001FFF8000000003FFF0001FFF8000000003FFF0001FFF80000000
  10697. +07FFE0001FFF8000000007FFE0001FFF800000000FFFC0001FFF800000000FFF80001FFF800000
  10698. +001FFF80001FFF800000003FFF00001FFF800000003FFE00001FFF800000007FFC00001FFF8000
  10699. +0001FFF800001FFF80000003FFF000001FFF8000000FFFE000001FFF8000007FFFC000001FFF80
  10700. +0003FFFF0000FFFFFFFFFFFFFFFE0000FFFFFFFFFFFFFFF80000FFFFFFFFFFFFFFC00000FFFFFF
  10701. +FFFFFFFE000000FFFFFFFFFFFFC00000004F477CC65B>68 D<00000000007FC00000000000FFFF
  10702. +C00000000000FFFFC00000000000FFFFC00000000000FFFFC00000000000FFFFC0000000000003
  10703. +FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC00000000000
  10704. +01FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC000000000
  10705. +0001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000
  10706. +000001FFC0000000000001FFC0000000000001FFC0000000000001FFC0000000000001FFC00000
  10707. +000FFC01FFC0000000FFFF81FFC0000007FFFFE1FFC000001FFFFFF9FFC000007FFC03FFFFC000
  10708. +00FFF0007FFFC00001FFC0001FFFC00003FF80000FFFC00007FF000007FFC0000FFE000003FFC0
  10709. +000FFE000003FFC0001FFC000003FFC0001FFC000003FFC0003FFC000003FFC0003FFC000003FF
  10710. +C0007FF8000003FFC0007FF8000003FFC0007FF8000003FFC000FFF8000003FFC000FFF8000003
  10711. +FFC000FFF8000003FFC000FFF8000003FFC000FFF8000003FFC000FFF8000003FFC000FFF80000
  10712. +03FFC000FFF8000003FFC000FFF8000003FFC000FFF8000003FFC0007FF8000003FFC0007FF800
  10713. +0003FFC0007FF8000003FFC0003FF8000003FFC0003FFC000003FFC0003FFC000003FFC0001FFC
  10714. +000003FFC0001FFC000003FFC0000FFE000007FFC00007FF00000FFFC00003FF00001FFFC00001
  10715. +FFC0003FFFC00000FFE000FFFFE000007FF807FBFFFF80001FFFFFF3FFFF800007FFFFC3FFFF80
  10716. +0001FFFF03FFFF8000001FF803FFFF8039487CC742>100 D<007FC000FFFFC000FFFFC000FFFF
  10717. +C000FFFFC000FFFFC00003FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001
  10718. +FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
  10719. +01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC0
  10720. +0001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FF
  10721. +C00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001
  10722. +FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000
  10723. +01FFC00001FFC00001FFC00001FFC00001FFC000FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF
  10724. +8019487CC720>108 D E end
  10725. +%%EndProlog
  10726. +%%BeginSetup
  10727. +%%Feature: *Resolution 300
  10728. +TeXDict begin 
  10729. +%%EndSetup
  10730. +%%Page: 1 1
  10731. +bop 0 705 a Fk(Dld)p 0 738 1950 17 v 1319 789 a Fj(A)15 b(Dynamic)h
  10732. +(Link/Unlink)i(Editor)1682 843 y(V)l(ersion)e(3.2.3.)1277 897
  10733. +y(Cop)o(yrigh)o(t)1501 896 y(c)1490 897 y Fi(\015)f Fj(1991)f(W.)h(Wilson)h
  10734. +(Ho.)0 2534 y Fh(b)n(y)23 b(W.)g(Wilson)h(Ho)p 0 2570 1950
  10735. +9 v eop
  10736. +%%Page: 1 2
  10737. +bop 971 -58 a Fj(1)0 183 y Fg(1.)41 b(What)28 b(is)f(dld?)62
  10738. +354 y Ff(Dld)c Fj(is)e(a)f(library)h(pac)o(k)m(age)f(of)g(C)g(functions)h
  10739. +(that)f(p)q(erforms)g Ff(dynamic)h(link)h(editing)p Fj(.)37
  10740. +b(Programs)19 b(that)0 416 y(use)j(dld)h(can)f(add)g(compiled)i(ob)s(ject)d
  10741. +(co)q(de)h(to)g(or)f(remo)o(v)o(e)g(suc)o(h)h(co)q(de)h(from)e(a)g(pro)q
  10742. +(cess)h(an)o(ytime)g(during)0 478 y(its)d(execution.)31 b(Loading)20
  10743. +b(mo)q(dules,)g(searc)o(hing)f(libraries,)i(resolving)e(external)g
  10744. +(references,)h(and)f(allo)q(cating)0 540 y(storage)14 b(for)h(global)g(and)h
  10745. +(static)f(data)f(structures)h(are)g(all)h(p)q(erformed)g(at)e(run)i(time.)62
  10746. +677 y(Dld)g(is)g(no)o(w)e(a)o(v)m(ailable)j(for)e(V)-5 b(AX,)15
  10747. +b(Sun)h(3,)e(SP)l(AR)o(Cstation,)h(Sequen)o(t)h(Symmetry)l(,)f(and)g(A)o
  10748. +(tari)g(ST.)62 814 y(This)e(text)e(describ)q(es)j(ho)o(w)d(the)h(dld)h
  10749. +(functions)g(can)f(b)q(e)h(called)g(and)f(some)g(tec)o(hnical)h(details)g
  10750. +(that)e(should)i(b)q(e)0 877 y(a)o(w)o(are)f(of.)19 b(F)l(or)13
  10751. +b(the)h(in)o(ternals)g(of)f(dld)i(and)f(sample)g(applications,)h(please)f
  10752. +(refer)g(to)f Ff(An)g(Approac)o(h)h(to)f(Gen)o(uine)0 939 y(Dynamic)18
  10753. +b(Linking)p Fj(,)h(Soft)o(w)o(are{Practice)d(and)h(Exp)q(erirnce,)i(V)l(ol.)
  10754. +26 b(21\(4\),)16 b(375-390)g(\(April)i(1991\).)24 b(An)18 b(early)0
  10755. +1001 y(draft)d(of)f(that)h(pap)q(er)g(is)h(included)i(with)d(this)h
  10756. +(distribution.)0 1209 y Fe(1.1)35 b(Initializi)o(ng)20 b(Dld)62
  10757. +1346 y Fj(T)l(o)d(use)g(an)o(y)g(of)g(the)g(dld)h(functions,)g(y)o(ou)f(m)o
  10758. +(ust)f(include)k(the)d(header)g(\014le)i Fd(dld.h)d Fj(for)g(declaration)i
  10759. +(of)f(the)0 1408 y(functions)f(and)f(de\014nition)i(of)e(the)g(error)g(co)q
  10760. +(de)h(constan)o(ts.)62 1545 y(The)21 b(function)h Fd(dld_init)d
  10761. +Fj(m)o(ust)i(b)q(e)g(called)h(b)q(efore)f(an)o(y)g(other)f(dld)i(functions.)
  10762. +37 b(It)21 b(has)f(the)h(follo)o(wing)0 1607 y(syn)o(tax:)120
  10763. +1744 y Fd(int)i(dld_init)g(\(char)g(*)p Ff(path)p Fd(\))0 1881
  10764. +y Fj(where)15 b Ff(path)h Fj(is)f(a)g(string)g(con)o(taining)h(the)f(path)h
  10765. +(name)f(of)g(the)g(executable)h(\014le)h(of)d(the)i(executing)g(pro)q(cess.)
  10766. +62 2018 y(This)d(function)f(initialize)q(s)i(in)o(ternal)f(data)e(structures)
  10767. +h(of)f(dld)i(and)f(loads)g(in)o(to)g(memory)f(sym)o(b)q(ol)h(de\014nitions)0
  10768. +2080 y(of)17 b(the)g(executing)h(pro)q(cess.)27 b(By)17 b(doing)h(so,)f
  10769. +(other)f(dynamically)j(loaded)f(functions)g(can)g(reference)g(sym)o(b)q(ols)0
  10770. +2143 y(already)d(de\014ned)i(or)e(share)g(functions)h(already)f(exist)h(in)g
  10771. +(the)f(executing)h(pro)q(cess.)62 2280 y Fd(dld_init)i Fj(returns)g(0)g(when)
  10772. +h(successful;)i(otherwise,)e(it)f(returns)h(an)f(error)g(co)q(de)h(that)e(is)
  10773. +i(non-zero)g(\(see)0 2342 y(Section)d(1.10)e([De\014nition)i(of)f(Error)f(Co)
  10774. +q(des],)h(page)g(8\).)0 2533 y Fc(1.1.1)29 b(Lo)r(cating)18
  10775. +b(the)h(Executable)h(File)62 2670 y Fj(The)c(path)f(name)g(of)g(the)h
  10776. +(executing)g(pro)q(cess)g(as)f(required)h(b)o(y)f Fd(dld_init)g
  10777. +Fj(migh)o(t)g(not)g(b)q(e)h(easily)g(obtained)p eop
  10778. +%%Page: 2 3
  10779. +bop 971 -58 a Fj(2)0 183 y(all)13 b(the)g(time.)19 b(Not)12
  10780. +b(all)i(systems)e(passes)g(the)g(en)o(tire)h(path)g(name)f(of)g(the)h
  10781. +(executable)h(\014le)f(as)f(the)h(\014rst)f(argumen)o(t)0 246
  10782. +y(\()p Fd(argv[0])p Fj(\))d(to)i Fd(main)p Fj(.)18 b(In)11
  10783. +b(order)g(to)f(obtain)i(the)f(full)h(path)f(of)g(the)g(executable)h(\014le,)g
  10784. +(the)g Fd(dld_find_executable)0 308 y Fj(function)k(can)f(b)q(e)h(used.)21
  10785. +b(This)15 b(function)i(has)e(the)g(follo)o(wing)h(syn)o(tax:)120
  10786. +447 y Fd(char)23 b(*dld_find_executable)e(\(char)j(*)p Ff(command)r
  10787. +Fd(\))0 586 y(dld_find_executable)14 b Fj(returns)i(the)h(absolute)f(path)h
  10788. +(name)f(of)g(the)h(\014le)g(that)f(w)o(ould)h(b)q(e)g(executed)g(if)g
  10789. +Ff(com-)0 648 y(mand)k Fj(w)o(ere)e(giv)o(en)h(as)f(a)g(command.)32
  10790. +b(It)19 b(lo)q(oks)h(up)g(the)f(en)o(vironmen)o(t)h(v)m(ariable)g
  10791. +Ff(P)l(A)l(TH)p Fj(,)g(searc)o(hes)f(in)h(eac)o(h)0 710 y(of)c(the)h
  10792. +(directory)f(listed)i(for)e Ff(command)p Fj(,)g(and)h(returns)f(the)h
  10793. +(absolute)g(path)f(name)h(for)f(the)g(\014rst)g(o)q(ccurrence.)0
  10794. +772 y(Th)o(us,)f(it)g(is)h(advisable)g(to)f(in)o(v)o(ok)o(e)g
  10795. +Fd(dld_init)f Fj(as:)120 911 y Fd(main)23 b(\(int)h(argc,)f(char)g(**argv\))
  10796. +120 961 y({)215 1011 y Fb(:)7 b(:)g(:)215 1061 y Fd(if)24 b(\(dld_init)f
  10797. +(\(dld_find_executable)e(\(argv[0]\)\)\))h({)311 1111 y Fb(:)7
  10798. +b(:)g(:)215 1161 y Fd(})215 1210 y Fb(:)g(:)g(:)120 1260 y
  10799. +Fd(})120 1399 y Fa(Note:)30 b Fj(If)21 b(the)f(curren)o(t)h(pro)q(cess)g(is)g
  10800. +(executed)g(using)g(the)g Fd(execve)f Fj(call)h(without)g(passing)g(the)120
  10801. +1449 y(correct)16 b(path)g(name)h(as)f(argumen)o(t)g(0,)g Fd
  10802. +(dld_find_executable)c(\(argv[0]\))31 b Fj(will)18 b(also)e(fail)i(to)120
  10803. +1499 y(lo)q(cate)e(the)f(executable)h(\014le.)62 1638 y Fd
  10804. +(dld_find_executable)g Fj(returns)i(zero)f(if)i Fd(command)e
  10805. +Fj(is)i(not)e(found)i(in)f(an)o(y)g(of)g(the)g(directories)h(listed)g(in)0
  10806. +1700 y Fd(PATH)p Fj(.)0 1942 y Fe(1.2)35 b(Dynamically)21 b(Linking)h(in)g
  10807. +(New)g(Mo)r(dules)62 2081 y Fj(The)d(function)h Fd(dld_link)e
  10808. +Fj(dynamically)i(links)h(in)e(the)g(named)g(relo)q(catable)h(ob)s(ject)e(or)h
  10809. +(library)g(\014le)h(in)o(to)0 2143 y(memory)l(.)g(It)15 b(has)g(the)g(follo)o
  10810. +(wing)h(syn)o(tax:)120 2282 y Fd(int)23 b(dld_link)g(\(char)g(*)p
  10811. +Ff(\014lename)s Fd(\))0 2421 y Fj(where)11 b Ff(\014lename)k
  10812. +Fj(is)d(the)f(path)g(name)h(of)e(the)i(\014le)g(to)f(b)q(e)g(link)o(ed.)21
  10813. +b(Sp)q(eci\014cally)l(,)15 b(if)c(the)h(named)f(\014le)h(is)g(a)f(relo)q
  10814. +(catable)0 2483 y(ob)s(ject)h(\014le,)i(it)f(is)g(completely)h(loaded)f(in)o
  10815. +(to)g(memory)l(.)18 b(If)13 b(it)g(is)g(a)g(library)g(\014le,)h(only)f(those)
  10816. +f(mo)q(dules)i(de\014ning)g(an)0 2545 y(unresolv)o(ed)j(external)g(reference)
  10817. +h(are)e(loaded.)25 b(Since)18 b(a)e(mo)q(dule)i(in)f(the)f(library)i(ma)o(y)e
  10818. +(itself)h(reference)g(other)0 2608 y(routines)g(in)g(the)g(library)l(,)g
  10819. +(loading)h(it)e(ma)o(y)g(generate)g(more)g(unresolv)o(ed)i(external)f
  10820. +(references.)24 b(Therefore,)16 b(a)0 2670 y(library)f(\014le)h(is)f(searc)o
  10821. +(hed)f(rep)q(eatedly)i(un)o(til)f(a)f(scan)h(through)f(all)h(library)g(mem)o
  10822. +(b)q(ers)g(is)g(made)f(without)h(ha)o(ving)p eop
  10823. +%%Page: 3 4
  10824. +bop 971 -58 a Fj(3)0 183 y(to)15 b(load)g(an)o(y)g(new)g(mo)q(dules.)62
  10825. +320 y(Storage)g(for)h(the)g(text)g(and)g(data)g(of)f(the)i(dynamically)h
  10826. +(link)o(ed)g(mo)q(dules)f(is)f(allo)q(cated)i(using)e Fd(malloc)p
  10827. +Fj(.)22 b(In)0 382 y(other)15 b(w)o(ords,)f(they)h(are)g(k)o(ept)g(in)h(the)f
  10828. +Ff(heap)i Fj(of)e(the)g(executing)i(pro)q(cess.)62 519 y(After)f(all)i(mo)q
  10829. +(dules)f(are)f(loaded,)h Fd(dld_link)f Fj(resolv)o(es)g(as)g(man)o(y)g
  10830. +(external)h(references)g(as)f(p)q(ossible.)25 b(Note)0 582
  10831. +y(that)15 b(some)g(sym)o(b)q(ols)g(migh)o(t)g(still)i(b)q(e)f(unde\014ned)h
  10832. +(at)e(this)g(stage,)f(b)q(ecause)j(the)e(mo)q(dules)h(de\014ning)h(them)e(ha)
  10833. +o(v)o(e)0 644 y(not)g(y)o(et)g(b)q(een)h(loaded.)62 781 y(If)c(the)g(sp)q
  10834. +(eci\014ed)h(mo)q(dule)g(is)f(link)o(ed)h(successfully)l(,)h
  10835. +Fd(dld_link)c Fj(returns)h(0;)h(otherwise,)h(it)e(returns)h(a)f(non-zero)0
  10836. +843 y(error)j(co)q(de)i(\(see)f(Section)i(1.10)d([De\014nition)i(of)e(Error)h
  10837. +(Co)q(des],)f(page)h(8\).)0 1064 y Fe(1.3)35 b(Unlinking)22
  10838. +b(a)h(Mo)r(dule)62 1201 y Fj(The)14 b(ma)s(jor)e(di\013erence)j(b)q(et)o(w)o
  10839. +(een)e(dld)i(and)e(other)g(dynamic)i(link)o(er)f(is)g(that)f(dld)i(allo)o(ws)
  10840. +e(ob)s(ject)g(mo)q(dules)i(to)0 1263 y(b)q(e)h(remo)o(v)o(ed)g(from)f(the)h
  10841. +(pro)q(cess)g(an)o(ytime)g(during)g(execution.)23 b(Unlinking)18
  10842. +b(a)e(mo)q(dule)h(is)f(simply)h(the)f(rev)o(erse)0 1325 y(of)f(the)g(link)i
  10843. +(op)q(eration)e(\(see)h(Section)g(1.3.1)d([Imp)q(ortan)o(t)i(P)o(oin)o(ts)f
  10844. +(in)j(Using)e(Unlink],)i(page)e(4\).)k(The)d(sp)q(eci\014ed)0
  10845. +1387 y(mo)q(dule)e(is)f(remo)o(v)o(ed)f(and)g(the)h(memory)f(allo)q(cated)i
  10846. +(to)d(it)i(is)g(reclaimed.)21 b(Additionally)l(,)15 b(resolution)e(of)g
  10847. +(external)0 1450 y(references)j(m)o(ust)e(b)q(e)i(undone.)62
  10848. +1587 y(There)g(are)f(t)o(w)o(o)e(unlink)18 b(functions:)120
  10849. +1724 y Fd(int)23 b(dld_unlink_by_file)f(\(char)h(*)p Ff(path)p
  10850. +Fd(,)h(int)f Ff(hard)r Fd(\))120 1823 y(int)g(dld_unlink_by_symbol)f(\(char)h
  10851. +(*)p Ff(id)p Fd(,)h(int)g Ff(hard)r Fd(\))0 1960 y Fj(The)10
  10852. +b(t)o(w)o(o)f(unlink)j(functions)f(are)f(basically)i(the)e(same)g(except)h
  10853. +(that)e Fd(dld_unlink_by_file)f Fj(tak)o(es)h(as)h(argumen)o(t)0
  10854. +2022 y(the)18 b(path)f(name)h(\()p Ff(path)p Fj(\))f(of)g(a)g(\014le)i
  10855. +(corresp)q(onding)g(to)e(a)g(mo)q(dule)i(previously)g(link)o(ed)g(in)f(b)o(y)
  10856. +g Fd(dld_link)p Fj(,)f(but)0 2085 y Fd(dld_unlink_by_symbol)12
  10857. +b Fj(unlinks)18 b(the)d(mo)q(dule)h(that)f(de\014nes)h(the)f(sp)q(eci\014ed)i
  10858. +(sym)o(b)q(ol)f(\()p Ff(id)r Fj(\).)62 2222 y(Both)c(functions)g(tak)o(e)f(a)
  10859. +h(second)g(argumen)o(t)f Ff(hard)p Fj(.)18 b(When)13 b Ff(hard)g
  10860. +Fj(is)f(non-zero)g(\()p Ff(hard)g(unlink)s Fj(\),)h(the)f(sp)q(eci\014ed)0
  10861. +2284 y(mo)q(dule)k(is)f(remo)o(v)o(ed)f(from)g(memory)g(unconditionally)l(.)
  10862. +22 b(On)15 b(the)g(other)f(hand,)h(if)g Ff(hard)h Fj(is)f(zero)g(\()p
  10863. +Ff(soft)e(unlink)s Fj(\),)0 2346 y(this)f(mo)q(dule)g(is)f(remo)o(v)o(ed)g
  10864. +(from)f(memory)h(only)h(if)f(it)g(is)h(not)f(referenced)h(b)o(y)f(an)o(y)g
  10865. +(other)f(mo)q(dules.)20 b(F)l(urthermore,)0 2408 y(if)14 b(unlinking)i(a)d
  10866. +(mo)q(dule)h(results)g(in)g(lea)o(ving)h(some)e(other)g(mo)q(dules)h(b)q
  10867. +(eing)h(unreferenced,)g(these)e(unreferenced)0 2471 y(mo)q(dules)j(are)f
  10868. +(also)g(remo)o(v)o(ed.)62 2608 y(Hard)f(unlink)j(is)e(usually)g(used)g(when)g
  10869. +(y)o(ou)f(w)o(an)o(t)f(to)h(explicitly)j(remo)o(v)o(e)d(a)g(mo)q(dule)h(and)g
  10870. +(probably)g(replace)0 2670 y(it)h(b)o(y)f(a)h(di\013eren)o(t)f(mo)q(dule)i
  10871. +(with)f(the)g(same)f(name.)21 b(F)l(or)15 b(example,)h(y)o(ou)f(ma)o(y)g(w)o
  10872. +(an)o(t)g(to)g(replace)h(the)g(system's)p eop
  10873. +%%Page: 4 5
  10874. +bop 971 -58 a Fj(4)0 183 y Fd(printf)19 b Fj(b)o(y)h(y)o(our)f(o)o(wn)h(v)o
  10875. +(ersion.)34 b(When)20 b(y)o(ou)f(link)j(in)e(y)o(our)g(v)o(ersion)g(of)f
  10876. +Fd(printf)p Fj(,)h(dld)h(will)h(automatically)0 246 y(redirect)16
  10877. +b(all)g(references)g(to)e Fd(printf)h Fj(to)f(the)i(new)f(v)o(ersion.)62
  10878. +393 y(Soft)g(unlink)i(should)g(b)q(e)f(used)f(when)h(y)o(ou)f(are)g(not)g
  10879. +(sure)h(if)f(the)h(sp)q(eci\014ed)h(mo)q(dule)g(is)e(still)i(needed.)22
  10880. +b(If)15 b(y)o(ou)0 455 y(just)g(w)o(an)o(t)f(to)h(clean)h(up)f(unnecessary)h
  10881. +(functions,)g(it)f(is)h(alw)o(a)o(ys)e(safe)h(to)g(use)g(soft)g(unlink.)62
  10882. +603 y(Both)g(unlink)i(functions)f(returns)f(0)g(if)h(the)f(sp)q(eci\014ed)j
  10883. +(ob)s(ject)c(\014le)i(or)f(sym)o(b)q(ol)h(is)f(previously)i(loaded.)k(Oth-)0
  10884. +665 y(erwise,)15 b(they)h(return)f(a)g(non-zero)g(error)g(co)q(de)g(\(see)h
  10885. +(Section)g(1.10)e([De\014nition)i(of)f(Error)f(Co)q(des],)g(page)h(8\).)0
  10886. +968 y Fc(1.3.1)29 b(Imp)r(ortan)n(t)19 b(P)n(oin)n(ts)h(in)f(Using)g(Unlink)
  10887. +62 1115 y Fj(When)13 b(a)f(mo)q(dule)h(is)f(b)q(eing)i(unlink)o(ed,)g(dld)f
  10888. +(tries)g(to)e(clean)i(up)g(as)e(m)o(uc)o(h)i(as)e(it)i(can)f(to)f(restore)h
  10889. +(the)g(executing)0 1177 y(pro)q(cess)18 b(to)f(a)h(state)e(as)i(if)g(this)g
  10890. +(mo)q(dule)h(has)f(nev)o(er)g(b)q(een)h(link)o(ed.)29 b(This)18
  10891. +b(clean)h(up)f(includes)i(remo)o(ving)e(and)0 1240 y(reclaiming)g(the)e
  10892. +(memory)f(for)g(storing)h(the)g(text)f(and)h(data)f(segmen)o(t)h(of)f(the)h
  10893. +(mo)q(dule,)h(and)f Ff(un-de\014ning)22 b Fj(an)o(y)0 1302
  10894. +y(global)16 b(sym)o(b)q(ols)f(de\014ned)i(b)o(y)e(this)h(mo)q(dule.)62
  10895. +1450 y(Ho)o(w)o(ev)o(er,)j(side)h(e\013ects|suc)o(h)f(as)g(mo)q(di\014cation)
  10896. +h(of)f(global)g(v)m(ariables,)i(input/output)f(op)q(erations,)g(and)0
  10897. +1512 y(allo)q(cations)15 b(of)f(new)g(memory)g(blo)q(c)o(ks|caused)i(b)o(y)e
  10898. +(the)g(execution)h(of)f(an)o(y)g(function)h(in)g(this)f(mo)q(dule)i(are)d
  10899. +(not)0 1574 y(rev)o(ersed.)19 b(Th)o(us,)14 b(it)f(is)h(the)f(resp)q
  10900. +(onsibili)q(t)o(y)i(of)e(the)h(programmer)e(to)g(explicitly)k(carry)d(out)g
  10901. +(all)h(necessary)g(clean)0 1636 y(up)i(op)q(erations)f(b)q(efore)g(unlinking)
  10902. +j(a)d(mo)q(dule.)0 1955 y Fe(1.4)35 b(In)n(v)n(oking)24 b(Dynamically)c(Link)
  10903. +n(ed)j(F)-6 b(unctions)62 2103 y Fj(Dynamically)14 b(link)o(ed)g(functions)g
  10904. +(ma)o(y)e(still)i(b)q(e)f(in)o(v)o(ok)o(ed)g(from)e(mo)q(dules)j(\(e.g.,)e
  10905. +Fd(main)p Fj(\))f(that)h(do)h(not)f(con)o(tain)0 2165 y(references)20
  10906. +b(to)f(suc)o(h)g(functions.)33 b(The)20 b(function)g Fd(dld_get_func)e
  10907. +Fj(returns)h(the)h(en)o(try)e(p)q(oin)o(t)i(of)f(the)h(named)0
  10908. +2228 y(function.)g(This)15 b(returned)g(v)m(alue)g(can)g(later)f(b)q(e)h
  10909. +(used)g(as)e(a)h(p)q(oin)o(ter)h(to)f(the)g(function.)20 b(Similarly)l(,)d
  10910. +(the)d(address)0 2290 y(of)h(a)g(global)g(v)m(ariable)i(can)e(b)q(e)h
  10911. +(obtained)g(b)o(y)f(the)h(function)g Fd(dld_get_symbol)p Fj(:)120
  10912. +2423 y Fd(unsigned)23 b(long)g(dld_get_symbol)f(\(char)h(*)p
  10913. +Ff(id)r Fd(\))120 2522 y(unsigned)g(long)g(dld_get_func)f(\(char)h(*)p
  10914. +Ff(func)s Fd(\))0 2670 y Fj(A)15 b(t)o(ypical)h(use)g(of)f
  10915. +Fd(dld_get_func)e Fj(w)o(ould)j(b)q(e:)p eop
  10916. +%%Page: 5 6
  10917. +bop 971 -58 a Fj(5)120 119 y Fd({)215 169 y(void)24 b(\(*func\))f(\(\);)215
  10918. +218 y(int)h(error_code;)215 318 y Fb(:)7 b(:)g(:)215 418 y
  10919. +Fd(/*)24 b(First,)f(link)g(in)h(the)f(object)g(file)h("my_object_file.o".)287
  10920. +467 y(Proceed)f(only)g(if)h(the)f(link)h(operation)e(is)i(successful,)e(i.e.)
  10921. +i(it)f(returns)g(0.)287 517 y("my_new_func")f(is)i(a)f(function)g(defined)g
  10922. +(in)h("my_object_file.o".)287 567 y(Set)f(func)h(to)f(point)h(at)f(the)h
  10923. +(entry)f(point)g(of)h(this)f(function)g(and)g(then)287 617
  10924. +y(Invoke)g(it)h(indirectly)e(through)h(func.)g(*/)215 716 y(if)h
  10925. +(\(\(error_code)e(=)i(dld_link)f(\("my_object_file.o"\)\))e(==)i(0\))h({)311
  10926. +766 y(if)f(\(\(func)h(=)f(\(void)g(\(*\))h(\(\)\))f(get_func)g
  10927. +(\("my_new_func"\)\))f(!=)h(0\))406 816 y(\(*func\))g(\(\);)311
  10928. +866 y Fb(:)7 b(:)g(:)215 916 y Fd(})24 b(else)f({)215 1015
  10929. +y Fb(:)7 b(:)g(:)215 1065 y Fd(})120 1115 y(})62 1254 y Fj(Both)16
  10930. +b Fd(dld_get_func)f Fj(and)h Fd(dld_get_symbol)e Fj(return)i(zero)g(if)h(the)
  10931. +f(named)g(function)h(or)f(sym)o(b)q(ol)g(cannot)0 1316 y(b)q(e)g(found.)0
  10932. +1555 y Fe(1.5)35 b(Determining)20 b(If)j(a)g(F)-6 b(unction)23
  10933. +b(is)f(Executable)62 1694 y Fj(Since)f(dld)f(allo)o(ws)f(mo)q(dules)h(to)e(b)
  10934. +q(e)i(added)g(to)e(or)g(remo)o(v)o(ed)h(from)f(an)h(executing)h(pro)q(cess)f
  10935. +(dynamically)l(,)0 1756 y(some)d(global)g(sym)o(b)q(ols)g(ma)o(y)f(not)h(b)q
  10936. +(e)h(de\014ned.)23 b(As)16 b(a)f(result,)h(an)g(in)o(v)o(o)q(cation)h(of)e(a)
  10937. +h(function)g(migh)o(t)g(reference)0 1818 y(an)f(unde\014ned)i(sym)o(b)q(ol.)j
  10938. +(W)l(e)15 b(sa)o(y)f(that)h(a)f(function)i(is)f Ff(executable)k
  10939. +Fj(if)d(and)f(only)g(if)h(all)g(its)f(external)g(references)0
  10940. +1880 y(ha)o(v)o(e)g(b)q(een)h(fully)h(resolv)o(ed)e(and)h(all)g(functions)g
  10941. +(that)e(it)i(migh)o(t)f(call)h(are)f(executable.)62 2019 y(The)k(predicate)h
  10942. +(function)f Fd(dld_function_executable_p)c Fj(helps)20 b(solv)o(e)f(this)g
  10943. +(problem)g(b)o(y)f(tracing)h(the)0 2081 y(cross)13 b(references)i(b)q(et)o(w)
  10944. +o(een)f(mo)q(dules)h(and)e(returns)h(non-zero)g(only)g(if)h(the)e(named)h
  10945. +(function)h(is)f(executable.)21 b(It)0 2144 y(has)15 b(the)g(follo)o(wing)h
  10946. +(syn)o(tax:)120 2282 y Fd(int)23 b(dld_function_executable_p)e(\(char)i(*)p
  10947. +Ff(func)s Fd(\))62 2421 y Fj(Note)13 b(that)e(the)i(implemen)o(tation)h(of)e
  10948. +Fd(dld_function_executable_p)d Fj(is)k(not)g(complete)g(according)g(to)f(the)
  10949. +0 2483 y(\(recursiv)o(e\))18 b(de\014nition)h(of)e(executabilit)o(y)l(.)29
  10950. +b(External)17 b(references)i(through)e(p)q(oin)o(ters)h(are)f(not)g(traced.)
  10951. +27 b(That)0 2545 y(is,)22 b Fd(dld_function_executable)o(_p)17
  10952. +b Fj(will)22 b(still)g(return)e(non-zero)h(if)f(the)h(named)f(function)h
  10953. +(uses)g(a)e(p)q(oin)o(ter)0 2608 y(to)d(indirectly)j(call)e(another)f
  10954. +(function)i(whic)o(h)f(has)g(already)f(b)q(een)i(unlink)o(ed.)26
  10955. +b(F)l(urthermore,)16 b(if)h(one)g(external)0 2670 y(reference)22
  10956. +b(of)f(a)g(ob)s(ject)g(mo)q(dule)h(is)g(unresolv)o(ed,)h(all)f(functions)h
  10957. +(de\014ned)f(in)g(this)g(mo)q(dule)h(are)e(considered)p eop
  10958. +%%Page: 6 7
  10959. +bop 971 -58 a Fj(6)0 183 y(unexecutable.)22 b(Therefore,)14
  10960. +b Fd(dld_function_executable_p)e Fj(is)k(usually)g(to)q(o)f(conserv)m(ativ)o
  10961. +(e.)62 320 y(Ho)o(w)o(ev)o(er,)d(it)h(is)g(advisable)h(to)e(use)h
  10962. +Fd(dld_function_executable_p)c Fj(to)j(c)o(hec)o(k)h(if)g(a)f(function)i(is)f
  10963. +(executable)0 382 y(b)q(efore)k(its)f(in)o(v)o(o)q(cation.)24
  10964. +b(In)17 b(suc)o(h)g(a)f(dynamic)h(en)o(vironmen)o(t)f(where)h(ob)s(ject)f(mo)
  10965. +q(dules)h(are)f(b)q(eing)i(added)f(and)0 445 y(remo)o(v)o(ed,)h(a)f(function)
  10966. +i(that)e(is)h(executable)h(at)f(one)g(p)q(oin)o(t)g(in)h(time)f(migh)o(t)f
  10967. +(not)h(b)q(e)g(executable)i(at)d(another.)0 507 y(Under)d(most)e
  10968. +(circumstances,)j Fd(dld_function_executable_)o(p)c Fj(is)j(accurate.)19
  10969. +b(Also,)13 b(the)h(implemen)o(tation)g(of)0 569 y(this)i(function)g(has)f(b)q
  10970. +(een)h(optimized)h(and)e(it)g(is)h(relativ)o(ely)h(c)o(heap)e(to)g(use.)0
  10971. +792 y Fe(1.6)35 b(Listing)22 b(the)g(Unde\014ned)h(Sym)n(b)r(ols)62
  10972. +928 y Fj(The)15 b(function)h Fd(dld_list_undefined_sym)c Fj(returns)j(an)g
  10973. +(arra)o(y)f(of)g(unde\014ned)j(global)f(sym)o(b)q(ol)f(names.)20
  10974. +b(It)0 991 y(has)15 b(the)g(follo)o(wing)h(syn)o(tax:)120 1128
  10975. +y Fd(char)23 b(**dld_list_undefined_sym)e(\(\))0 1265 y Fj(The)e(list)g
  10976. +(returned)g(con)o(tains)f(all)h(the)g(sym)o(b)q(ols)f(that)g(ha)o(v)o(e)g(b)q
  10977. +(een)i(referenced)f(b)o(y)f(some)g(mo)q(dules)i(but)e(ha)o(v)o(e)0
  10978. +1327 y(not)e(b)q(een)i(de\014ned.)25 b(This)18 b(function)f(is)g(designed)h
  10979. +(for)e(debugging,)i(esp)q(ecially)h(in)e(the)g(case)g(when)g(a)f(function)0
  10980. +1389 y(is)g(found)f(to)g(b)q(e)h(not)e(executable)j(but)e(y)o(ou)g(do)g(not)g
  10981. +(kno)o(w)g(what)f(the)i(missing)g(sym)o(b)q(ols)f(are.)62 1526
  10982. +y(The)e(length)f(of)g(the)g(arra)o(y)f(is)h(giv)o(en)h(b)o(y)f(the)g(global)g
  10983. +(v)m(ariable)i Fd(dld_undefined_sym_count)p Fj(,)9 b(whic)o(h)k(alw)o(a)o(ys)
  10984. +0 1589 y(holds)j(the)g(curren)o(t)g(total)f(n)o(um)o(b)q(er)h(of)f
  10985. +(unde\014ned)j(global)e(sym)o(b)q(ols.)22 b(Note)15 b(that)g(all)h(C)g(sym)o
  10986. +(b)q(ols)g(are)f(listed)i(in)0 1651 y(their)f(in)o(ternal)g(represen)o
  10987. +(tation|i.e.,)f(they)g(are)g(pre\014xed)h(b)o(y)g(the)f(underscore)h(c)o
  10988. +(haracter)e(`)p Fd(_)p Fj('.)62 1788 y(Storage)h(for)h(the)g(arra)o(y)e
  10989. +(returned)j(is)f(allo)q(cated)h(b)o(y)f Fd(malloc)p Fj(.)21
  10990. +b(It)16 b(is)h(the)f(programmer's)e(resp)q(onsibilit)o(y)19
  10991. +b(to)0 1850 y(release)d(this)f(storage)f(b)o(y)i Fd(free)e
  10992. +Fj(when)i(it)f(is)h(not)f(needed)h(an)o(ymore.)0 2072 y Fe(1.7)35
  10993. +b(Explicitly)20 b(Referencing)g(a)k(Sym)n(b)r(ol)62 2209 y
  10994. +Fj(Normally)l(,)19 b(a)e(library)h(mo)q(dule)g(is)g(loaded)h(only)e(when)h
  10995. +(it)g(de\014nes)h(one)e(of)g(more)g(sym)o(b)q(ols)h(that)f(has)g(b)q(een)0
  10996. +2271 y(referenced.)27 b(T)l(o)17 b(force)g(a)g(library)h(routine)g(to)e(b)q
  10997. +(e)i(loaded,)h(one)e(need)h(to)f(explicitly)j(create)d(a)g(reference)h(to)e
  10998. +(a)0 2334 y(sym)o(b)q(ol)h(de\014ned)h(b)o(y)e(that)g(library)h(routine.)24
  10999. +b(The)16 b(function)h Fd(dld_create_reference)d Fj(is)j(designed)h(for)e
  11000. +(this)0 2396 y(purp)q(ose:)120 2533 y Fd(int)23 b(dld_create_reference)f
  11001. +(\(char)h(*)p Ff(name)s Fd(\))0 2670 y Fj(Usually)18 b Ff(name)g
  11002. +Fj(is)f(the)g(name)f(of)g(the)g(library)h(routine)g(that)f(should)h(b)q(e)g
  11003. +(loaded,)g(but)g(it)f(can)h(b)q(e)g(an)o(y)f(sym)o(b)q(ol)p
  11004. +eop
  11005. +%%Page: 7 8
  11006. +bop 971 -58 a Fj(7)0 183 y(de\014ned)15 b(b)o(y)e(that)g(routine.)20
  11007. +b(After)13 b(suc)o(h)h(a)g(reference)g(has)f(b)q(een)i(created,)f(linking)h
  11008. +(the)f(appropriate)g(library)g(b)o(y)0 246 y Fd(dld_link)g
  11009. +Fj(w)o(ould)i(cause)f(the)g(required)i(library)f(routine)f(to)g(b)q(e)h
  11010. +(loaded.)62 383 y(If)e(the)g(call)g(is)g(successful,)h Fd
  11011. +(dld_create_reference)c Fj(returns)i(0;)h(otherwise,)f(it)h(returns)g(a)f
  11012. +(non-zero)h(error)0 445 y(co)q(de)i(\(see)f(Section)h(1.10)e([De\014nition)i
  11013. +(of)f(Error)f(Co)q(des],)h(page)g(8\).)62 582 y(The)e(library)h(routine)f
  11014. +(loaded)h(b)o(y)f(this)g(metho)q(d)g(can)g(b)q(e)h(unlink)o(ed)h(b)o(y)e
  11015. +Fd(dld_unlink_by_symbol)f(\()p Ff(name)s Fd(\))p Fj(.)0 645
  11016. +y(Once)17 b(it)e(has)h(b)q(een)h(unlink)o(ed,)g(the)f(corresp)q(onding)g
  11017. +(reference)h(created)e(b)o(y)h Fd(dld_create_reference)d Fj(is)j(also)0
  11018. +707 y(remo)o(v)o(ed)f(so)f(that)h(this)h(routine)f(will)i(not)e(b)q(e)h
  11019. +(loaded)g(in)g(again)f(b)o(y)g(subsequen)o(t)h(linking)h(of)e(the)g(library)l
  11020. +(.)0 934 y Fe(1.8)35 b(Explicitly)20 b(De\014ning)i(a)h(Sym)n(b)r(ol)62
  11021. +1071 y Fj(Dld)17 b(allo)o(ws)f(a)g(programmer)f(to)g(explicitly)k(de\014ne)e
  11022. +(global)g(sym)o(b)q(ols.)23 b(That)15 b(is,)h(a)g(programmer)f(can)h(force)0
  11023. +1133 y(a)g(sym)o(b)q(ol)i(to)e(ha)o(v)o(e)g(storage)g(assigned)h(for)f(it.)25
  11024. +b(This)17 b(is)h(esp)q(ecially)h(useful)f(in)f(incremen)o(tal)h(program)e
  11025. +(testing)0 1196 y(where)e(the)g(function)g(b)q(eing)h(tested)f(needs)h(to)e
  11026. +(access)h(some)f(global)h(v)m(ariables)i(whic)o(h)e(are)g(de\014ned)h(b)o(y)e
  11027. +(another)0 1258 y(function)19 b(not)f(y)o(et)g(link)o(ed)j(in)e(\(or)e(ev)o
  11028. +(en)i(not)f(y)o(et)g(written\).)30 b(There)19 b(are)f(t)o(w)o(o)f(functions)i
  11029. +(related)g(to)f(explicit)0 1320 y(de\014nition:)120 1458 y
  11030. +Fd(int)23 b(dld_define_sym)f(\(char)i(*)p Ff(name)p Fd(,)f(unsigned)g(int)g
  11031. +Ff(size)s Fd(\))120 1507 y(void)g(dld_remove_defined_symbol)e(\(char)i(*)p
  11032. +Ff(name)s Fd(\))0 1645 y(dld_define_sym)10 b Fj(forces)i(dld)i(to)e(allo)q
  11033. +(cate)h Ff(size)j Fj(b)o(ytes)c(for)f(sym)o(b)q(ol)i Ff(name)p
  11034. +Fj(.)19 b(It)13 b(can)f(b)q(e)h(called)h(b)q(efore)f(or)f(after)f(a)0
  11035. +1707 y(reference)i(to)f Ff(name)j Fj(is)e(made.)19 b(If)12
  11036. +b(references)h(to)f Ff(name)j Fj(already)e(exist)g(when)g(it)f(is)h
  11037. +(de\014ned,)h(all)g(suc)o(h)e(references)0 1769 y(are)j(directed)h(to)f(p)q
  11038. +(oin)o(t)g(to)g(the)g(correct)g(address)g(allo)q(cated)i(for)d
  11039. +Ff(name)p Fj(.)62 1907 y Fd(dld_define_sym)i Fj(returns)h(0)h(if)g
  11040. +(successful.)28 b(Otherwise,)19 b(it)f(returns)f(a)h(non-zero)f(error)g(co)q
  11041. +(de)i(\(see)e(Sec-)0 1969 y(tion)e(1.10)f([De\014nition)j(of)d(Error)h(Co)q
  11042. +(des],)f(page)h(8\).)k(The)d(t)o(ypical)g(error)e(is)i(a)f(m)o(ultiple)i
  11043. +(de\014nition)g(of)e Ff(name)p Fj(.)62 2106 y(When)c(the)f(de\014nition)i(of)
  11044. +e Ff(name)i Fj(is)f(no)f(longer)h(needed,)h(it)e(can)g(b)q(e)h(remo)o(v)o(ed)
  11045. +f(b)o(y)g Fd(dld_remove_define_symbol)p Fj(.)0 2333 y Fe(1.9)35
  11046. +b(Prin)n(ting)22 b(out)h(the)g(Error)h(Messages)62 2470 y Fj(The)19
  11047. +b(function)g Fd(dld_perror)e Fj(prin)o(ts)i(out)f(a)g(short)f(message)h
  11048. +(explaining)j(the)d(error)g(returns)g(b)o(y)h(the)f(last)0
  11049. +2533 y(dld)e(functions:)120 2670 y Fd(void)23 b(dld_perror)g(\(char)g(*)p
  11050. +Ff(user)p Fd(_)p Ff(mesg)t Fd(\))p eop
  11051. +%%Page: 8 9
  11052. +bop 971 -58 a Fj(8)0 183 y(where)15 b Ff(user)p Fd(_)p Ff(mesg)k
  11053. +Fj(is)d(a)f(user-supplied)j(string)d(prep)q(ended)i(to)e(the)g(error)f
  11054. +(message.)0 407 y Fe(1.10)36 b(De\014nition)21 b(of)i(Error)h(Co)r(des)62
  11055. +544 y Fj(The)19 b(dld)g(functions)g(return)f(a)f(non-zero)i(error)e(co)q(de)i
  11056. +(when)f(they)g(fail.)30 b(The)18 b(de\014nitions)i(of)d(these)i(error)0
  11057. +607 y(co)q(des)d(are:)120 730 y Fd(DLD_ENOFILE)186 b Fj(cannot)15
  11058. +b(op)q(en)h(\014le.)120 792 y Fd(DLD_EBADMAGIC)138 b Fj(bad)15
  11059. +b(magic)h(n)o(um)o(b)q(er.)120 854 y Fd(DLD_EBADHEADER)114
  11060. +b Fj(failure)16 b(reading)g(header.)120 916 y Fd(DLD_ENOTEXT)186
  11061. +b Fj(premature)15 b(eof)g(in)h(text)f(section.)120 979 y Fd(DLD_ENOSYMBOLS)
  11062. +114 b Fj(premature)15 b(eof)g(in)h(sym)o(b)q(ols.)120 1041
  11063. +y Fd(DLD_ENOSTRINGS)114 b Fj(bad)15 b(string)h(table.)120 1103
  11064. +y Fd(DLD_ENOTXTRELOC)90 b Fj(premature)15 b(eof)g(in)h(text)f(relo)q(cation.)
  11065. +120 1165 y Fd(DLD_ENODATA)186 b Fj(premature)15 b(eof)g(in)h(data)e(section.)
  11066. +120 1228 y Fd(DLD_ENODATRELOC)90 b Fj(premature)15 b(eof)g(in)h(data)e(relo)q
  11067. +(cation.)120 1290 y Fd(DLD_EMULTDEFS)138 b Fj(m)o(ultiple)17
  11068. +b(de\014nitions)g(of)e(sym)o(b)q(ol.)120 1352 y Fd(DLD_EBADLIBRARY)90
  11069. +b Fj(malformed)15 b(library)h(arc)o(hiv)o(e.)120 1414 y Fd(DLD_EBADCOMMON)114
  11070. +b Fj(common)15 b(blo)q(c)o(k)h(not)f(supp)q(orted.)120 1477
  11071. +y Fd(DLD_EBADOBJECT)114 b Fj(malformed)15 b(input)h(\014le)h(\(not)d(ob)s
  11072. +(ject)h(\014le)h(or)f(arc)o(hiv)o(e\).)120 1539 y Fd(DLD_EBADRELOC)138
  11073. +b Fj(bad)15 b(relo)q(cation)h(info.)120 1601 y Fd(DLD_ENOMEMORY)138
  11074. +b Fj(virtual)16 b(memory)e(exhausted.)120 1664 y Fd(DLD_EUNDEFSYM)138
  11075. +b Fj(unde\014ned)17 b(sym)o(b)q(ol.)p eop
  11076. +%%Trailer
  11077. +end
  11078. +userdict /end-hook known{end-hook}if
  11079. +%%EOF
  11080. diff -rup --new-file baseline/fsf/dld/doc/dld.texinfo amiga/fsf/dld/doc/dld.texinfo
  11081. --- baseline/fsf/dld/doc/dld.texinfo    Wed Dec 31 17:00:00 1969
  11082. +++ amiga/fsf/dld/doc/dld.texinfo    Sat Sep 28 00:00:00 1996
  11083. @@ -0,0 +1,509 @@
  11084. +\input texinfo @c -*- texinfo -*-
  11085. +@c %**start of header
  11086. +@setfilename dld.info
  11087. +@settitle Dld
  11088. +@c %**end of header
  11089. +
  11090. +@iftex
  11091. +@finalout
  11092. +@end iftex
  11093. +
  11094. +@ifinfo
  11095. +This file documents dld, a dynamic link/unlink editor.
  11096. +
  11097. +This is edition 1.2 of the dld documentation.
  11098. +
  11099. +Copyright (C) 1991 W. Wilson Ho.
  11100. +
  11101. +Permission is granted to make and distribute verbatim copies of
  11102. +this manual provided the copyright notice and this permission notice
  11103. +are preserved on all copies.
  11104. +
  11105. +Permission is granted to copy and distribute modified versions of this
  11106. +manual under the conditions for verbatim copying, provided that the entire
  11107. +resulting derived work is distributed under the terms of a permission
  11108. +notice identical to this one.
  11109. +@end ifinfo
  11110. +
  11111. +@iftex
  11112. +@titlepage
  11113. +@title Dld
  11114. +@subtitle A Dynamic Link/Unlink Editor
  11115. +@subtitle Version 3.2.3.
  11116. +@subtitle Copyright @copyright{} 1991 W. Wilson Ho.
  11117. +@author by W. Wilson Ho
  11118. +@end titlepage
  11119. +@setchapternewpage off
  11120. +@headings off
  11121. +@everyheading @| @thispage @|
  11122. +@end iftex
  11123. +
  11124. +@node Top, dld_init, (dir), (dir)
  11125. +@comment  node-name,  next,  previous,  up
  11126. +@chapter What is dld?
  11127. +
  11128. +@dfn{Dld} is a library package of C functions that performs @dfn{dynamic
  11129. +link editing}.  Programs that use dld can add compiled object
  11130. +code to or remove such code from a process anytime during its execution.
  11131. +Loading modules, searching libraries, resolving external references, and
  11132. +allocating storage for global and static data structures are all
  11133. +performed at run time.
  11134. +
  11135. +Dld is now available for VAX, Sun 3, SPARCstation, Sequent Symmetry, and
  11136. +Atari ST.
  11137. +
  11138. +This text describes how the dld functions can be called and some
  11139. +technical details that should be aware of.  For the internals of dld and
  11140. +sample applications, please refer to @cite{An Approach to Genuine
  11141. +Dynamic Linking}, Software--Practice and Experirnce, Vol. 21(4), 375-390
  11142. +(April 1991).  An early draft of that paper is included with this
  11143. +distribution.
  11144. +
  11145. +@menu
  11146. +* dld_init::            Initializing Dld
  11147. +* dld_link::            Dynamically Linking in New Modules
  11148. +* dld_unlink::            Unlinking a Module
  11149. +* dld_get_func::        Invoking Dynamically Linked Functions
  11150. +* Executability::        Determining If a Function is Executable
  11151. +* dld_list_undefined_sym::    Listing the Undefined Symbols
  11152. +* dld_create_reference::    Explicitly Referencing a Symbol
  11153. +* Explicit Definition::        Explicitly Defining a Symbol
  11154. +* dld_perror::            Printing out the Error Messages
  11155. +* Error Codes::            Definition of Error Codes
  11156. +@end menu
  11157. +
  11158. +@node dld_init, dld_link, Top, Top
  11159. +@comment  node-name,  next,  previous,  up
  11160. +@section Initializing Dld
  11161. +
  11162. +To use any of the dld functions, you must include the header file
  11163. +@code{dld.h} for declaration of the functions and definition of the
  11164. +error code constants.
  11165. +
  11166. +The function @code{dld_init} must be called before any other dld
  11167. +functions.  It has the following syntax:
  11168. +
  11169. +@example
  11170. +int dld_init (char *@var{path})
  11171. +@end example
  11172. +
  11173. +@noindent
  11174. +where @var{path} is a string containing the path name of the executable
  11175. +file of the executing process.
  11176. +
  11177. +This function initializes internal data structures of dld and
  11178. +loads into memory symbol definitions of the executing process.  By doing
  11179. +so, other dynamically loaded functions can reference symbols already
  11180. +defined or share functions already exist in the executing process.
  11181. +
  11182. +@code{dld_init} returns 0 when successful; otherwise, it returns an
  11183. +error code that is non-zero (@pxref{Error Codes, , Definition of Error
  11184. +Codes}).  
  11185. +
  11186. +@menu
  11187. +* dld_find_executable::        Locating the Executable File
  11188. +@end menu
  11189. +
  11190. +@node dld_find_executable,  , dld_init, dld_init
  11191. +@comment  node-name,  next,  previous,  up
  11192. +@subsection Locating the Executable File
  11193. +
  11194. +The path name of the executing process as required by @code{dld_init}
  11195. +might not be easily obtained all the time.  Not all systems passes the
  11196. +entire path name of the executable file as the first argument
  11197. +(@code{argv[0]}) to @code{main}.  In order to obtain the full path of
  11198. +the executable file, the @code{dld_find_executable} function can be
  11199. +used.  This function has the following syntax:
  11200. +
  11201. +@example
  11202. +char *dld_find_executable (char *@var{command})
  11203. +@end example
  11204. +
  11205. +@noindent
  11206. +@code{dld_find_executable} returns the absolute path name of the file
  11207. +that would be executed if @var{command} were given as a command.  It
  11208. +looks up the environment variable @var{PATH}, searches in each of the
  11209. +directory listed for @var{command}, and returns the absolute path name
  11210. +for the first occurrence.  Thus, it is advisable to invoke
  11211. +@code{dld_init} as:
  11212. +
  11213. +@example
  11214. +main (int argc, char **argv)
  11215. +@{
  11216. +    @dots{}
  11217. +    if (dld_init (dld_find_executable (argv[0]))) @{
  11218. +        @dots{}
  11219. +    @}
  11220. +    @dots{}
  11221. +@}
  11222. +@end example
  11223. +
  11224. +@quotation
  11225. +@strong{Note:} If the current process is executed using the
  11226. +@code{execve} call without passing the correct path name as argument 0,
  11227. +@code{dld_find_executable (argv[0]) } will also fail to locate the
  11228. +executable file.
  11229. +@end quotation
  11230. +
  11231. +@code{dld_find_executable} returns zero if @code{command} is not found
  11232. +in any of the directories listed in @code{PATH}.
  11233. +
  11234. +@node dld_link, dld_unlink, dld_init, Top
  11235. +@comment  node-name,  next,  previous,  up
  11236. +@section Dynamically Linking in New Modules
  11237. +
  11238. +The function @code{dld_link} dynamically links in the named relocatable
  11239. +object or library file into memory.  It has the following syntax:
  11240. +
  11241. +@example
  11242. +int dld_link (char *@var{filename})
  11243. +@end example
  11244. +
  11245. +@noindent
  11246. +where @var{filename} is the path name of the file to be linked.
  11247. +Specifically, if the named file is a relocatable object file, it is
  11248. +completely loaded into memory.  If it is a library file, only those
  11249. +modules defining an unresolved external reference are loaded.  Since a
  11250. +module in the library may itself reference other routines in the
  11251. +library, loading it may generate more unresolved external references.
  11252. +Therefore, a library file is searched repeatedly until a scan through
  11253. +all library members is made without having to load any new modules.
  11254. +
  11255. +Storage for the text and data of the dynamically linked modules is
  11256. +allocated using @code{malloc}.  In other words, they are kept in the
  11257. +@emph{heap} of the executing process.
  11258. +
  11259. +After all modules are loaded, @code{dld_link} resolves as many external
  11260. +references as possible.  Note that some symbols might still be undefined
  11261. +at this stage, because the modules defining them have not yet been
  11262. +loaded.
  11263. +
  11264. +If the specified module is linked successfully, @code{dld_link} returns
  11265. +0; otherwise, it returns a non-zero error code (@pxref{Error Codes, ,
  11266. +Definition of Error Codes}).
  11267. +
  11268. +@node dld_unlink, dld_get_func, dld_link, Top
  11269. +@comment  node-name,  next,  previous,  up
  11270. +@section Unlinking a Module
  11271. +
  11272. +The major difference between dld and other dynamic linker is that
  11273. +dld allows object modules to be removed from the process anytime
  11274. +during execution.  Unlinking a module is simply the reverse of the link
  11275. +operation (@pxref{Side Effect, , Important Points in Using Unlink}).
  11276. +The specified module is removed and the memory allocated to it is
  11277. +reclaimed.  Additionally, resolution of external references must be
  11278. +undone.
  11279. +
  11280. +There are two unlink functions:
  11281. +
  11282. +@example
  11283. +int dld_unlink_by_file (char *@var{path}, int @var{hard})
  11284. +
  11285. +int dld_unlink_by_symbol (char *@var{id}, int @var{hard})
  11286. +@end example
  11287. +
  11288. +@noindent
  11289. +The two unlink functions are basically the same except that
  11290. +@code{dld_unlink_by_file} takes as argument the path name (@var{path})
  11291. +of a file corresponding to a module previously linked in by
  11292. +@code{dld_link}, but @code{dld_unlink_by_symbol} unlinks the module that
  11293. +defines the specified symbol (@var{id}).
  11294. +
  11295. +Both functions take a second argument @var{hard}.  When @var{hard}
  11296. +is non-zero (@dfn{hard unlink}), the specified module is removed from
  11297. +memory unconditionally.  On the other hand, if @var{hard} is zero
  11298. +(@dfn{soft unlink}), this module is removed from memory only if it is
  11299. +not referenced by any other modules.  Furthermore, if unlinking a module
  11300. +results in leaving some other modules being unreferenced, these
  11301. +unreferenced modules are also removed.
  11302. +
  11303. +Hard unlink is usually used when you want to explicitly remove a module
  11304. +and probably replace it by a different module with the same name.  For
  11305. +example, you may want to replace the system's @code{printf} by your own
  11306. +version.  When you link in your version of @code{printf}, dld
  11307. +will automatically redirect all references to @code{printf} to the new
  11308. +version.
  11309. +
  11310. +Soft unlink should be used when you are not sure if the specified module
  11311. +is still needed.  If you just want to clean up unnecessary functions, it
  11312. +is always safe to use soft unlink.
  11313. +
  11314. +Both unlink functions returns 0 if the specified object file or symbol
  11315. +is previously loaded.  Otherwise, they return a non-zero error code
  11316. +(@pxref{Error Codes, , Definition of Error Codes}).
  11317. +
  11318. +@menu
  11319. +* Side Effect::            Important Points in Using Unlink.
  11320. +@end menu
  11321. +
  11322. +@node Side Effect,  , dld_unlink, dld_unlink
  11323. +@comment  node-name,  next,  previous,  up
  11324. +@subsection Important Points in Using Unlink
  11325. +
  11326. +When a module is being unlinked, dld tries to clean up as much as
  11327. +it can to restore the executing process to a state as if this module has
  11328. +never been linked.  This clean up includes removing and reclaiming the
  11329. +memory for storing the text and data segment of the module, and
  11330. +@dfn{un-defining} any global symbols defined by this module.
  11331. +
  11332. +However, side effects---such as modification of global variables,
  11333. +input/output operations, and allocations of new memory blocks---caused
  11334. +by the execution of any function in this module are not reversed.  Thus,
  11335. +it is the responsibility of the programmer to explicitly carry out all
  11336. +necessary clean up operations before unlinking a module.
  11337. +
  11338. +@node dld_get_func, Executability, dld_unlink, Top
  11339. +@comment  node-name,  next,  previous,  up
  11340. +@section Invoking Dynamically Linked Functions
  11341. +
  11342. +Dynamically linked functions may still be invoked from modules (e.g.,
  11343. +@code{main}) that do not contain references to such functions.  The
  11344. +function @code{dld_get_func} returns the entry point of the named
  11345. +function.  This returned value can later be used as a pointer to the
  11346. +function.  Similarly, the address of a global variable can be obtained
  11347. +by the function @code{dld_get_symbol}:
  11348. +
  11349. +@group
  11350. +@example
  11351. +unsigned long dld_get_symbol (char *@var{id})
  11352. +
  11353. +unsigned long dld_get_func (char *@var{func})
  11354. +@end example
  11355. +@end group
  11356. +
  11357. +@noindent
  11358. +A typical use of @code{dld_get_func} would be:
  11359. +
  11360. +@group
  11361. +@example
  11362. +@{
  11363. +    void (*func) ();
  11364. +    int error_code;
  11365. +
  11366. +    @dots{}
  11367. +
  11368. +    /* First, link in the object file "my_object_file.o".
  11369. +       Proceed only if the link operation is successful, i.e. it returns 0.
  11370. +       "my_new_func" is a function defined in "my_object_file.o".
  11371. +       Set func to point at the entry point of this function and then
  11372. +       Invoke it indirectly through func. */
  11373. +
  11374. +    if ((error_code = dld_link ("my_object_file.o")) == 0) @{
  11375. +        if ((func = (void (*) ()) get_func ("my_new_func")) != 0)
  11376. +            (*func) ();
  11377. +        @dots{}
  11378. +    @} else @{
  11379. +
  11380. +    @dots{}
  11381. +    @}
  11382. +@}
  11383. +@end example
  11384. +@end group
  11385. +
  11386. +Both @code{dld_get_func} and @code{dld_get_symbol} return zero if the
  11387. +named function or symbol cannot be found.
  11388. +
  11389. +@node Executability, dld_list_undefined_sym, dld_get_func, Top
  11390. +@comment  node-name,  next,  previous,  up
  11391. +@section Determining If a Function is Executable
  11392. +
  11393. +Since dld allows modules to be added to or removed from an executing
  11394. +process dynamically, some global symbols may not be defined.  As a
  11395. +result, an invocation of a function might reference an undefined symbol.
  11396. +We say that a function is @dfn{executable} if and only if all its
  11397. +external references have been fully resolved and all functions that it
  11398. +might call are executable.
  11399. +
  11400. +The predicate function @code{dld_function_executable_p} helps solve this
  11401. +problem by tracing the cross references between modules and returns
  11402. +non-zero only if the named function is executable.  It has the following
  11403. +syntax:
  11404. +
  11405. +@example
  11406. +int dld_function_executable_p (char *@var{func})
  11407. +@end example
  11408. +
  11409. +Note that the implementation of @code{dld_function_executable_p} is not
  11410. +complete according to the (recursive) definition of executability.
  11411. +External references through pointers are not traced.  That is,
  11412. +@code{dld_function_executable_p} will still return non-zero if the named
  11413. +function uses a pointer to indirectly call another function which has
  11414. +already been unlinked.  Furthermore, if one external reference of a
  11415. +object module is unresolved, all functions defined in this module are
  11416. +considered unexecutable.  Therefore, @code{dld_function_executable_p} is
  11417. +usually too conservative.
  11418. +
  11419. +However, it is advisable to use @code{dld_function_executable_p} to
  11420. +check if a function is executable before its invocation.  In such a
  11421. +dynamic environment where object modules are being added and removed, a
  11422. +function that is executable at one point in time might not be executable
  11423. +at another.  Under most circumstances, @code{dld_function_executable_p}
  11424. +is accurate.  Also, the implementation of this function has been
  11425. +optimized and it is relatively cheap to use.
  11426. +
  11427. +@node  dld_list_undefined_sym, dld_create_reference, Executability, Top
  11428. +@comment  node-name,  next,  previous,  up
  11429. +@section Listing the Undefined Symbols
  11430. +
  11431. +The function @code{dld_list_undefined_sym} returns an array of undefined
  11432. +global symbol names.  It has the following syntax:
  11433. +
  11434. +@example
  11435. +char **dld_list_undefined_sym ()
  11436. +@end example
  11437. +
  11438. +@noindent
  11439. +The list returned contains all the symbols that have been referenced
  11440. +by some modules but have not been defined.  This function is designed
  11441. +for debugging, especially in the case when a function is found to be not
  11442. +executable but you do not know what the missing symbols are.
  11443. +
  11444. +The length of the array is given by the global variable
  11445. +@code{dld_undefined_sym_count}, which always holds the current total
  11446. +number of undefined global symbols.  Note that all C symbols are listed
  11447. +in their internal representation---i.e., they are prefixed by the
  11448. +underscore character @samp{_}.
  11449. +
  11450. +Storage for the array returned is allocated by @code{malloc}.  It is the
  11451. +programmer's responsibility to release this storage by @code{free} when
  11452. +it is not needed anymore.
  11453. +
  11454. +@node dld_create_reference, Explicit Definition, dld_list_undefined_sym, Top
  11455. +@comment  node-name,  next,  previous,  up
  11456. +@section Explicitly Referencing a Symbol
  11457. +
  11458. +Normally, a library module is loaded only when it defines one of more
  11459. +symbols that has been referenced.  To force a library routine to be
  11460. +loaded, one need to explicitly create a reference to a symbol defined by
  11461. +that library routine.  The function @code{dld_create_reference} is
  11462. +designed for this purpose:
  11463. +
  11464. +@example
  11465. +int dld_create_reference (char *@var{name})
  11466. +@end example
  11467. +
  11468. +@noindent
  11469. +Usually @var{name} is the name of the library routine that should be
  11470. +loaded, but it can be any symbol defined by that routine.  After such a
  11471. +reference has been created, linking the appropriate library by
  11472. +@code{dld_link} would cause the required library routine to be loaded.
  11473. +
  11474. +If the call is successful, @code{dld_create_reference} returns 0;
  11475. +otherwise, it returns a non-zero error code (@pxref{Error Codes, ,
  11476. +Definition of Error Codes}).
  11477. +
  11478. +The library routine loaded by this method can be unlinked by
  11479. +@code{dld_unlink_by_symbol (@var{name})}.  Once it has been unlinked,
  11480. +the corresponding reference created by @code{dld_create_reference} is
  11481. +also removed so that this routine will not be loaded in again by
  11482. +subsequent linking of the library.
  11483. +
  11484. +@node Explicit Definition, dld_perror, dld_create_reference, Top
  11485. +@comment  node-name,  next,  previous,  up
  11486. +@section Explicitly Defining a Symbol
  11487. +
  11488. +Dld allows a programmer to explicitly define global symbols.  That is, a
  11489. +programmer can force a symbol to have storage assigned for it.  This is
  11490. +especially useful in incremental program testing where the function
  11491. +being tested needs to access some global variables which are defined by
  11492. +another function not yet linked in (or even not yet written).  There are
  11493. +two functions related to explicit definition:
  11494. +
  11495. +@example
  11496. +int dld_define_sym (char *@var{name}, unsigned int @var{size})
  11497. +void dld_remove_defined_symbol (char *@var{name})
  11498. +@end example
  11499. +
  11500. +@noindent
  11501. +@code{dld_define_sym} forces dld to allocate @var{size} bytes for symbol
  11502. +@var{name}.  It can be called before or after a reference to @var{name}
  11503. +is made.  If references to @var{name} already exist when it is defined,
  11504. +all such references are directed to point to the correct address
  11505. +allocated for @var{name}.
  11506. +
  11507. +@code{dld_define_sym} returns 0 if successful.  Otherwise, it returns a
  11508. +non-zero error code (@pxref{Error Codes, , Definition of Error Codes}).
  11509. +The typical error is a multiple definition of @var{name}.
  11510. +
  11511. +When the definition of @var{name} is no longer needed, it can be removed
  11512. +by @code{dld_remove_define_symbol}.
  11513. +
  11514. +@node dld_perror, Error Codes, Explicit Definition, Top
  11515. +@comment  node-name,  next,  previous,  up
  11516. +@section Printing out the Error Messages
  11517. +
  11518. +The function @code{dld_perror} prints out a short message explaining the
  11519. +error returns by the last dld functions:
  11520. +
  11521. +@example
  11522. +void dld_perror (char *@var{user_mesg})
  11523. +@end example
  11524. +
  11525. +@noindent
  11526. +where @var{user_mesg} is a user-supplied string prepended to the error
  11527. +message. 
  11528. +
  11529. +@node Error Codes,  , dld_perror, Top
  11530. +@comment  node-name,  next,  previous,  up
  11531. +@section Definition of Error Codes
  11532. +
  11533. +The dld functions return a non-zero error code when they fail.  The
  11534. +definitions of these error codes are:
  11535. +
  11536. +@group
  11537. +@quotation
  11538. +@iftex
  11539. +@tableindent = 1.5in
  11540. +@end iftex
  11541. +@table @code
  11542. +@item DLD_ENOFILE
  11543. +cannot open file.
  11544. +
  11545. +@item DLD_EBADMAGIC
  11546. +bad magic number.
  11547. +
  11548. +@item DLD_EBADHEADER
  11549. +failure reading header.
  11550. +
  11551. +@item DLD_ENOTEXT
  11552. +premature eof in text section.
  11553. +
  11554. +@item DLD_ENOSYMBOLS
  11555. +premature eof in symbols.
  11556. +
  11557. +@item DLD_ENOSTRINGS
  11558. +bad string table.
  11559. +
  11560. +@item DLD_ENOTXTRELOC
  11561. +premature eof in text relocation.
  11562. +
  11563. +@item DLD_ENODATA
  11564. +premature eof in data section.
  11565. +
  11566. +@item DLD_ENODATRELOC
  11567. +premature eof in data relocation.
  11568. +
  11569. +@item DLD_EMULTDEFS
  11570. +multiple definitions of symbol.
  11571. +
  11572. +@item DLD_EBADLIBRARY
  11573. +malformed library archive.
  11574. +
  11575. +@item DLD_EBADCOMMON
  11576. +common block not supported.
  11577. +
  11578. +@item DLD_EBADOBJECT
  11579. +malformed input file (not object file or archive).
  11580. +
  11581. +@item DLD_EBADRELOC
  11582. +bad relocation info.
  11583. +
  11584. +@item DLD_ENOMEMORY
  11585. +virtual memory exhausted.
  11586. +
  11587. +@item DLD_EUNDEFSYM
  11588. +undefined symbol.
  11589. +@end table
  11590. +@end quotation
  11591. +@end group
  11592. +@bye
  11593. diff -rup --new-file baseline/fsf/dld/find_exec.c amiga/fsf/dld/find_exec.c
  11594. --- baseline/fsf/dld/find_exec.c    Fri Feb 10 06:10:46 1995
  11595. +++ amiga/fsf/dld/find_exec.c    Sat Sep 28 00:00:00 1996
  11596. @@ -38,7 +38,7 @@ static char *
  11597.  copy_of (s)
  11598.  register char *s;
  11599.  {
  11600. -    register char *p = (char *) malloc (strlen(s)+1);
  11601. +    register char *p = (char *) malloc (strlen(s)+2);
  11602.  
  11603.      if (!p) return 0;
  11604.  
  11605. diff -rup --new-file baseline/fsf/dld/gxxload.cc amiga/fsf/dld/gxxload.cc
  11606. --- baseline/fsf/dld/gxxload.cc    Sat Mar 18 21:49:56 1995
  11607. +++ amiga/fsf/dld/gxxload.cc    Sat Sep 28 00:00:00 1996
  11608. @@ -1,5 +1,6 @@
  11609. +#include <stdlib.h>
  11610.  #include <stdio.h>
  11611. -#include <string.h>
  11612. +#include </ade/include/string.h>
  11613.  
  11614.  #include <dld.h>
  11615.  
  11616. @@ -80,6 +81,6 @@ void dyn_unload(char * name)
  11617.      if (strncmp(symbol,"_GLOBAL_$D",10) ) continue;
  11618.      symbol[strlen(symbol) - 1] = '\0';
  11619.      addr = (func_ptr) dld_get_func(symbol);
  11620. -    if (addr != 0) (*addr)();
  11621. +    if (addr != 0 && dld_function_executable_p(symbol)) (*addr)();
  11622.    }
  11623.  }
  11624. diff -rup --new-file baseline/fsf/dld/manifests/src amiga/fsf/dld/manifests/src
  11625. --- baseline/fsf/dld/manifests/src    Wed Dec 31 17:00:00 1969
  11626. +++ amiga/fsf/dld/manifests/src    Sat Sep 28 00:00:00 1996
  11627. @@ -0,0 +1,60 @@
  11628. +fsf/dld/.name
  11629. +fsf/dld/COPYING
  11630. +fsf/dld/ChangeLog
  11631. +fsf/dld/Makefile
  11632. +fsf/dld/Product-Info
  11633. +fsf/dld/README
  11634. +fsf/dld/TAGS
  11635. +fsf/dld/TODO
  11636. +fsf/dld/ar2hunk.c
  11637. +fsf/dld/define.c
  11638. +fsf/dld/defs.h
  11639. +fsf/dld/dld-3.2.6.lsm
  11640. +fsf/dld/dld.c
  11641. +fsf/dld/dld.h
  11642. +fsf/dld/dld.texinfo
  11643. +fsf/dld/doc/SPE.ps
  11644. +fsf/dld/doc/dld.ps
  11645. +fsf/dld/doc/dld.texinfo
  11646. +fsf/dld/error.c
  11647. +fsf/dld/find_exec.c
  11648. +fsf/dld/get_func.c
  11649. +fsf/dld/get_symbol.c
  11650. +fsf/dld/gxxload.cc
  11651. +fsf/dld/list_undef.c
  11652. +fsf/dld/manifests/src
  11653. +fsf/dld/mk_dummy.c
  11654. +fsf/dld/readme.amiga
  11655. +fsf/dld/ref.c
  11656. +fsf/dld/remove.c
  11657. +fsf/dld/showsyms.c
  11658. +fsf/dld/test/EXPECTED-OUTPUT
  11659. +fsf/dld/test/Makefile
  11660. +fsf/dld/test/SAMPLE_INPUT
  11661. +fsf/dld/test/add1.c
  11662. +fsf/dld/test/add2.c
  11663. +fsf/dld/test/call_add1.c
  11664. +fsf/dld/test/call_add2.c
  11665. +fsf/dld/test/chain1.c
  11666. +fsf/dld/test/chain2.c
  11667. +fsf/dld/test/chain3.c
  11668. +fsf/dld/test/get-sym.c
  11669. +fsf/dld/test/gxxtest.cc
  11670. +fsf/dld/test/hello.c
  11671. +fsf/dld/test/list-undefined.c
  11672. +fsf/dld/test/main.c
  11673. +fsf/dld/test/need.c
  11674. +fsf/dld/test/overlay.c
  11675. +fsf/dld/test/print_arg.c
  11676. +fsf/dld/test/print_global.c
  11677. +fsf/dld/test/read-a.out.c
  11678. +fsf/dld/test/reload-test.c
  11679. +fsf/dld/test/reload-test.s
  11680. +fsf/dld/test/reload.c
  11681. +fsf/dld/test/remove.c
  11682. +fsf/dld/test/simple.c
  11683. +fsf/dld/test/sub.cc
  11684. +fsf/dld/test/test-define.c
  11685. +fsf/dld/ul_file.c
  11686. +fsf/dld/ul_symbol.c
  11687. +fsf/dld/wrap.c
  11688. diff -rup --new-file baseline/fsf/dld/readme.amiga amiga/fsf/dld/readme.amiga
  11689. --- baseline/fsf/dld/readme.amiga    Wed Dec 31 17:00:00 1969
  11690. +++ amiga/fsf/dld/readme.amiga    Sat Sep 28 00:00:00 1996
  11691. @@ -0,0 +1,114 @@
  11692. +A few notes on this Amiga port of dld-3.2.6, the GNU dynamic link editor.
  11693. +
  11694. +The original archive is available (among other places) from prep.ai.mit.edu
  11695. +in pub/gnu/jacal/dld-3.2.6.tar.gz. It is the successor of dld-3.2.3.tar.gz
  11696. +in the directory pub/gnu. It fixes at least one bug and adds c++ support, so
  11697. +that's why I chose this one to work from.
  11698. +
  11699. +When I started looking at dld I didn't expect that it could work at all on
  11700. +the Amiga, let alone with a relatively minor porting effort. However, I was
  11701. +able to compile the dld-library in one go, so the code itself was clean.
  11702. +After reading through the code I saw that the dld_init function reads the
  11703. +symbols of the variables in the executable and their values in a list.
  11704. +Other functions do the same thing for objects and *.a archives. The format
  11705. +used by GCC for objects and archives is currently identical to the BSD
  11706. +format, which was also used in dld. So, that part worked OK.
  11707. +
  11708. +The executable, however, uses hunks to store the symbols, so all I had to
  11709. +do was to add a function that would scan the executable for the symbols and
  11710. +figure out their real values. After implementing that, I suddenly had a
  11711. +working version of dld. Most of the tests ran without a problem (except for
  11712. +one or two weird ones that depend on a Unix process environment).
  11713. +
  11714. +The implementation of the symbol hunk scan was done in two stages: the first
  11715. +stage was to make a program to list all the symbols, the second stage patched
  11716. +that into dld. The scanning program is useful in its own right, so I
  11717. +included it in this archive (showsyms.c). I also changed the file reads and
  11718. +seeks to their buffered counterparts (fread, fseek) improving the
  11719. +performance.
  11720. +
  11721. +Now, this is all very nice, but it doesn't make it possible to use it as
  11722. +you would use a shared library. After all, you have to do a dld_init, get
  11723. +all the values of the functions you want to call using dld_get_symbol, etc.
  11724. +However, with a bit of thought I was able to put it to that use.
  11725. +
  11726. +The idea is to realize that for every program you do know one entry point:
  11727. +main. So I made a wrapper program, which initializes dld, forces it to link
  11728. +with the real program, using 'main' as a reference (more about that later),
  11729. +specifying the libraries to use for resolving all externals, and then it
  11730. +asks for the address of the main function of the program you want to call,
  11731. +dld finds at for you, resolving all externals and loading all the code and
  11732. +data stuff in the process. Then you call that function. So you need this
  11733. +wrapper program to start up the real program.
  11734. +
  11735. +The 'real' program cannot be a executable, as the normal linker would then
  11736. +try to resolve all externals, which is precisely what you do not want.
  11737. +Instead, the program is either a single object or a group of objects. In
  11738. +the last case you must pull them together into one *.a archive. Don't
  11739. +forget to 'ranlib' this!
  11740. +
  11741. +Unfortunately, the main function of your program must be redefined to
  11742. +dld_main. Either by changing the program or passing -Dmain=dld_main to the
  11743. +compiler. The reason for this is 1) the compiler apparently does something
  11744. +special for main functions (I encountered a reference to a __main function
  11745. +right after the start of main) and 2) dld_get_symbol("main") would return
  11746. +the address of the main function of the wrapper executable and not the one
  11747. +from your own program.
  11748. +
  11749. +While compiling wrap.c (the wrapper program) you can add a define
  11750. +-DADDLIBS="lib1;lib2;...".  This define is a semi-colon separated list of
  11751. +libraries that should be passed to dld for dynamic linking.  The default
  11752. +value is "/ade/lib/libgcc.a;/ade/lib/libc.a".
  11753. +
  11754. +Only one thing left to do: how to incorporate your own program into the
  11755. +wrapper program. One possibility was to just let wrap link your own program
  11756. +from a separate file (e.g. if your wrapper was called 'find' it would try
  11757. +to dynamically link a file 'find.o' or 'find.a' from the same place). But
  11758. +it much better and elegant to somehow add it into the wrapper so that there
  11759. +is only one file.
  11760. +
  11761. +I have decided to misuse the debughunk for that. The debughunk is never
  11762. +loaded into memory (which is what you want, as dld_link reads from file
  11763. +anyway) and when scanning through the hunks for the symbol definitions
  11764. +during the dld_init, the dld library can remember the offset and size of
  11765. +the debughunk on the fly. IF the debughunk starts with the magic cookie for
  11766. +a BSD object or archive, THEN it knows where to link in the object/archive.
  11767. +
  11768. +I wrote a small utility to put the object or archive into the debughunk of
  11769. +the wrapper executable. The source is ar2hunk.c.
  11770. +
  11771. +One small point remains: the dld linker needs the filename of the
  11772. +object/archive to link. It does not do to specify the name of the
  11773. +executable, as that is already used up by the dld_init. The filename was
  11774. +stored by dld so that it thinks that it already loaded that file. So I
  11775. +introduced a small hack into dld: if the filename passed to dld_link ends
  11776. +with ASCII code 1 (0x01 hex) it knows that it should read the debughunk
  11777. +from the file with the given filename but without the trailing 0x01 code.
  11778. +It's dirty, but for a first version it works very well.
  11779. +
  11780. +As a practical example, I ported the GNU find utility using this scheme.
  11781. +All stays the same, except for giving -Dmain=dld_main to GCC. The link step
  11782. +is a bit more complex: first compile the wrapper with the right setting for
  11783. +ADDLIBS. In this case, one would copy libfind.a to gnu:lib and specify:
  11784. +
  11785. +    gcc -O -o find wrap.c \
  11786. +    -DADDLIBS="/ade/lib/libfind.a;/ade/lib/libgcc.a;/ade/lib/libc.a".
  11787. +
  11788. +Next do:
  11789. +
  11790. +    ar q f.a *.o
  11791. +    ranlib f.a
  11792. +    ar2hunk find f.a
  11793. +
  11794. +
  11795. +And that does the trick. Except for the fact that the resulting find
  11796. +executable is actually bigger than it would have been without using this
  11797. +shared library mechanism, as all the symbol information takes up space too,
  11798. +and the dld library must be statically linked into the wrapper executable,
  11799. +with takes another 15-20 Kb.
  11800. +
  11801. +                Enjoy!
  11802. +
  11803. +                Hans Verkuil
  11804. +                July 8, 1995
  11805. +                hans@wyst.hobby.nl
  11806. diff -rup --new-file baseline/fsf/dld/showsyms.c amiga/fsf/dld/showsyms.c
  11807. --- baseline/fsf/dld/showsyms.c    Wed Dec 31 17:00:00 1969
  11808. +++ amiga/fsf/dld/showsyms.c    Sat Sep 28 00:00:00 1996
  11809. @@ -0,0 +1,154 @@
  11810. +#include <stdlib.h>
  11811. +#include <stdio.h>
  11812. +#include <string.h>
  11813. +#include <fcntl.h>
  11814. +#include <unistd.h>
  11815. +
  11816. +static unsigned long get_num(int fd)
  11817. +{
  11818. +  unsigned long t;
  11819. +  
  11820. +  read(fd, &t, 4);
  11821. +  return t;
  11822. +}
  11823. +
  11824. +static void skip(int fd, unsigned long t)
  11825. +{
  11826. +  lseek(fd, t * 4, SEEK_CUR);
  11827. +}
  11828. +
  11829. +static char *amiga_buf;
  11830. +static int amiga_bufsize, amiga_bufptr, amiga_desc, amiga_read;
  11831. +
  11832. +static void amiga_buf_init(int desc)
  11833. +{
  11834. +  amiga_desc = desc;
  11835. +  if (amiga_buf == NULL)
  11836. +  {
  11837. +    amiga_bufsize = 10240;
  11838. +    amiga_buf = (char *)malloc(amiga_bufsize);
  11839. +  }
  11840. +  amiga_read = read(amiga_desc, amiga_buf, amiga_bufsize);
  11841. +  amiga_bufptr = 0;
  11842. +}
  11843. +
  11844. +static unsigned long fget_num(void)
  11845. +{
  11846. +  if (amiga_bufptr == amiga_bufsize)
  11847. +  {
  11848. +    amiga_read = read(amiga_desc, amiga_buf, amiga_bufsize);
  11849. +    amiga_bufptr = 0;
  11850. +  }
  11851. +  amiga_bufptr += 4;
  11852. +  return *((long *)(amiga_buf + amiga_bufptr - 4));
  11853. +}
  11854. +
  11855. +static void fread_string(char *buf, int size)
  11856. +{
  11857. +  while (amiga_bufptr + size > amiga_bufsize)
  11858. +  {
  11859. +    int diff = amiga_bufsize - amiga_bufptr;
  11860. +
  11861. +    memcpy(buf, amiga_buf + amiga_bufptr, diff);
  11862. +    buf += diff;
  11863. +    size -= diff;
  11864. +    amiga_read = read(amiga_desc, amiga_buf, amiga_bufsize);
  11865. +    amiga_bufptr = 0;
  11866. +  }
  11867. +  memcpy(buf, amiga_buf + amiga_bufptr, size);
  11868. +  amiga_bufptr += size;
  11869. +}
  11870. +
  11871. +static void amiga_buf_term(void)
  11872. +{
  11873. +  lseek(amiga_desc, amiga_bufptr - amiga_read, SEEK_CUR);
  11874. +}
  11875. +
  11876. +static void
  11877. +amiga_read_file_symbols (desc)
  11878. +register int desc;
  11879. +{
  11880. +  int t, f, l;
  11881. +  int start, type, sdata, sbss;
  11882. +  int name_size = 500;
  11883. +  char *name;
  11884. +
  11885. +  if (get_num(desc) != 0x03f3)
  11886. +    exit(20);
  11887. +  name = (char *)malloc(name_size);
  11888. +  while (t = get_num(desc))
  11889. +    skip(desc, t);
  11890. +  get_num(desc);
  11891. +  f = get_num(desc);
  11892. +  l = get_num(desc);
  11893. +  skip(desc, l - f + 1);
  11894. +  while (l >= 0)
  11895. +  {
  11896. +    switch (t = get_num(desc))
  11897. +    {
  11898. +      case 0x03e9:      /* text */
  11899. +        skip(desc, (t = get_num(desc)));
  11900. +        break;
  11901. +      case 0x03ea:      /* data */
  11902. +        skip(desc, (sdata = get_num(desc)));
  11903. +        break;
  11904. +      case 0x03eb:      /* bss */
  11905. +        sbss = get_num(desc) * 4;
  11906. +        break;
  11907. +      case 0x03e8:      /* name  */
  11908. +      case 0x03e7:      /* unit  */
  11909. +      case 0x03f1:      /* debug */
  11910. +        skip(desc, get_num(desc));
  11911. +        break;
  11912. +      case 0x03ee:      /* reloc8  */
  11913. +      case 0x03ed:      /* reloc16 */
  11914. +      case 0x03ec:      /* reloc32 */
  11915. +        while (t = get_num(desc))
  11916. +          skip(desc, t + 1);
  11917. +        break;
  11918. +      case 0x03ef:      /* ext */
  11919. +        while (t = get_num(desc))
  11920. +          skip(desc, (t & 0xffffff) + 1);
  11921. +        break;
  11922. +      case 0x03f0:      /* symbols */
  11923. +        amiga_buf_init(desc);
  11924. +        while (t = fget_num())
  11925. +        {
  11926. +          while (t >= name_size)
  11927. +          {
  11928. +            char *buf = (char *)malloc(name_size * 2);
  11929. +            
  11930. +            free(name);
  11931. +            name = buf;
  11932. +            name_size *= 2;
  11933. +          }
  11934. +          fread_string(name, t * 4);
  11935. +          name[t * 4] = 0;
  11936. +          fget_num();
  11937. +          printf("%s\n", name);
  11938. +        }
  11939. +        amiga_buf_term();
  11940. +        break;
  11941. +      case 0x03f2:      /* end */
  11942. +        l--;
  11943. +        break;
  11944. +    }
  11945. +  }
  11946. +  free(name);
  11947. +  if (amiga_buf)
  11948. +    free(amiga_buf);
  11949. +  amiga_buf = NULL;
  11950. +}
  11951. +
  11952. +main(int argc, char **argv)
  11953. +{
  11954. +  int fd;
  11955. +
  11956. +  while (argv[1])
  11957. +  {
  11958. +    fd = open(argv[1], O_RDONLY);
  11959. +    amiga_read_file_symbols(fd);
  11960. +    close(fd);
  11961. +    argv++;
  11962. +  }
  11963. +}
  11964. diff -rup --new-file baseline/fsf/dld/test/Makefile amiga/fsf/dld/test/Makefile
  11965. --- baseline/fsf/dld/test/Makefile    Sun Mar 19 18:43:04 1995
  11966. +++ amiga/fsf/dld/test/Makefile    Sat Sep 28 00:00:00 1996
  11967. @@ -1,15 +1,16 @@
  11968. -EXECS = call_add1 dld-test overlay reload reload-test simple call_add2
  11969. +EXECS = call_add1 dld-test overlay simple #call_add2 reload reload-test 
  11970.  
  11971.  OBJS =  hello.o print_arg.o read-a.out.o list-undefined.o get-sym.o \
  11972.      need.o test-define.o print_global.o remove.o sub.o
  11973.  
  11974.  LIB = ../libdld.a
  11975. +LIBXX = ../libdld++.a
  11976.  INCLUDE = ../dld.h
  11977.  CC= gcc
  11978.  CXX= g++
  11979.  #    add -static to CFLAGS for Sparc Sun4.
  11980. -CFLAGS = -O6 -I..
  11981. -CXXFLAGS = -O6 -I..
  11982. +CFLAGS = -I..
  11983. +CXXFLAGS = -I..
  11984.  SPECIAL = -DLIBGCC=\"`gcc --print-lib`\"
  11985.  
  11986.  check:    all
  11987. @@ -18,11 +19,11 @@ all:    ${EXECS} ${LIB}
  11988.      -simple
  11989.      #                 "test call_add1"
  11990.      -call_add1
  11991. -    -call_add2
  11992. +    #-call_add2
  11993.      #                 "test overlay"
  11994.      -overlay
  11995.      #                 "test reload"
  11996. -    -reload reload-test
  11997. +    #-reload reload-test
  11998.      #                 "test general"
  11999.      -dld-test <SAMPLE_INPUT
  12000.      #                 "tests complete"
  12001. @@ -65,8 +66,8 @@ hello.o: hello.c
  12002.  dld-test: $(LIB) $(INCLUDE) ${OBJS} main.o
  12003.      ${CC} ${CFLAGS} main.o $(LIB) -o dld-test
  12004.  
  12005. -gxxtest: $(LIB) $(INCLUDE) ${OBJS} gxxtest.o
  12006. -    ${CXX} ${CXXFLAGS} gxxtest.o $(LIB) -o gxxtest
  12007. +gxxtest: $(LIBXX) $(INCLUDE) ${OBJS} gxxtest.o
  12008. +    ${CXX} ${CXXFLAGS} gxxtest.o $(LIBXX) -o gxxtest
  12009.  
  12010.  gxxtest.o: gxxtest.cc
  12011.      ${CXX} -c ${CXXFLAGS} ${SPECIAL} gxxtest.cc
  12012. diff -rup --new-file baseline/fsf/dld/test/gxxtest.cc amiga/fsf/dld/test/gxxtest.cc
  12013. --- baseline/fsf/dld/test/gxxtest.cc    Sat Mar 18 21:51:34 1995
  12014. +++ amiga/fsf/dld/test/gxxtest.cc    Sat Sep 28 00:00:00 1996
  12015. @@ -10,8 +10,9 @@ LIBGCC,            /* link in libgcc */
  12016.  0
  12017.  };
  12018.  
  12019. -main()
  12020. +main(int argc, char **argv)
  12021.  {
  12022. +        dld_init(argv[0]);
  12023.      cout<<"DLD function: "<<endl;
  12024.      dld_link("sub.o");
  12025.      dld_unlink_by_file("sub.o",0);
  12026. diff -rup --new-file baseline/fsf/dld/test/reload-test.s amiga/fsf/dld/test/reload-test.s
  12027. --- baseline/fsf/dld/test/reload-test.s    Mon Dec 13 04:02:22 1993
  12028. +++ amiga/fsf/dld/test/reload-test.s    Sat Sep 28 00:00:00 1996
  12029. @@ -1,32 +1,20 @@
  12030. -    .file    "reload-test.c"
  12031. -    .data
  12032. -.comm _387_flt, 4
  12033. -    .align    2
  12034. -    .globl    _k
  12035. -_k:
  12036. -    .long    1
  12037. -    .text
  12038. -    .align    2
  12039. -    .globl    _main
  12040. +#NO_APP
  12041. +gcc2_compiled.:
  12042. +___gnu_compiled_c:
  12043. +.text
  12044. +LC0:
  12045. +    .ascii "Hello world! -- from reload-test\12\0"
  12046. +    .even
  12047. +.globl _main
  12048.  _main:
  12049. -    jmp    .L15
  12050. -.L14:
  12051. -    pushl    $.L17
  12052. -    call    _printf
  12053. -    popl    %ecx
  12054. -/REGAL    0    NOFPA    NODBL
  12055. -.L13:
  12056. -    leave
  12057. -    ret
  12058. -.L15:
  12059. -    pushl    %ebp
  12060. -    movl    %esp,%ebp
  12061. -    jmp    .L14
  12062. -/DEF    _main;
  12063. -    .data
  12064. -.L17:
  12065. -
  12066. -    .byte    0x48,0x65,0x6c,0x6c,0x6f,0x20,0x77,0x6f,0x72,0x6c
  12067. -    .byte    0x64,0x21,0x20,0x2d,0x2d,0x20,0x66,0x72,0x6f,0x6d
  12068. -    .byte    0x20,0x72,0x65,0x6c,0x6f,0x61,0x64,0x2d,0x74,0x65
  12069. -    .byte    0x73,0x74,0x0a,0x00
  12070. +    link a5,#0
  12071. +    jbsr ___main
  12072. +    pea LC0
  12073. +    jbsr _printf
  12074. +    addqw #4,sp
  12075. +    moveq #0,d0
  12076. +    jra L1
  12077. +L1:
  12078. +    unlk a5
  12079. +    rts
  12080. +.comm _end,4
  12081. diff -rup --new-file baseline/fsf/dld/test/reload.c amiga/fsf/dld/test/reload.c
  12082. --- baseline/fsf/dld/test/reload.c    Mon Dec 13 04:02:22 1993
  12083. +++ amiga/fsf/dld/test/reload.c    Sat Sep 28 00:00:00 1996
  12084. @@ -19,7 +19,7 @@ char *argv[];
  12085.      /* unlink itself */
  12086.      printf("unlink returned %d\n", dld_unlink_by_file (argv[0], 1));
  12087.  
  12088. -    printf("link returnd %d\n",dld_link (argv[1]));
  12089. +    printf("link returned %d\n",dld_link (argv[1]));
  12090.  #if defined(sequent)
  12091.      func = (void (*)()) dld_get_func ("main");
  12092.      (*func) ();
  12093. diff -rup --new-file baseline/fsf/dld/wrap.c amiga/fsf/dld/wrap.c
  12094. --- baseline/fsf/dld/wrap.c    Wed Dec 31 17:00:00 1969
  12095. +++ amiga/fsf/dld/wrap.c    Sat Sep 28 00:00:00 1996
  12096. @@ -0,0 +1,75 @@
  12097. +#include <stdio.h>
  12098. +#include <dld.h>
  12099. +
  12100. +#ifndef ADDLIBS
  12101. +#define ADDLIBS "/ade/lib/libgcc.a;/ade/lib/libc.a"
  12102. +#endif
  12103. +
  12104. +static char *libs = ADDLIBS;
  12105. +
  12106. +main(int argc, char **argv, char **env)
  12107. +{
  12108. +  char *p = libs;
  12109. +  int done = 0;
  12110. +  void (*func)(int, char **, char **);
  12111. +  char *exe;
  12112. +  char hack[2];
  12113. +
  12114. +  hack[0] = 1;
  12115. +  hack[1] = 0;
  12116. +  exe = dld_find_executable(argv[0]);
  12117. +  dld_init(exe);
  12118. +  dld_create_reference("dld_main");
  12119. +  strcat(exe, hack);
  12120. +  if (dld_link(exe))
  12121. +  {
  12122. +    dld_perror("could not link in dld_main function");
  12123. +    exit(1);
  12124. +  }
  12125. +  while (!done)
  12126. +  {
  12127. +    while (*p && *p != ';')
  12128. +      p++;
  12129. +    if (*p == '\0')
  12130. +      done = 1;
  12131. +    *p++ = '\0';
  12132. +    if (dld_link(libs))
  12133. +    {
  12134. +      char buf[1000];
  12135. +
  12136. +      strcpy(buf, "could not link in ");
  12137. +      strcat(buf, libs);
  12138. +      dld_perror(buf);
  12139. +      exit(1);
  12140. +    }
  12141. +    libs = p;
  12142. +  }
  12143. +
  12144. +  func = (void (*)(int, char **, char **))dld_get_symbol("dld_main");
  12145. +  if (func)
  12146. +  {
  12147. +    if (dld_function_executable_p("dld_main"))
  12148. +    {
  12149. +      func(argc, argv, env);
  12150. +      exit(0);
  12151. +    }
  12152. +    else
  12153. +    {
  12154. +      char **symbols;
  12155. +      int i;
  12156. +
  12157. +      fprintf(stderr, "dld_main is not executable\n");
  12158. +      symbols = dld_list_undefined_sym();
  12159. +      if (dld_undefined_sym_count != 0)
  12160. +        fprintf(stderr, "undefined symbols:\n");
  12161. +      for (i = 0; i < dld_undefined_sym_count; i++) {
  12162. +        fprintf(stderr, "%s\n", symbols[i]);
  12163. +        free(symbols[i]);
  12164. +      }
  12165. +      free(symbols);
  12166. +    }
  12167. +  }
  12168. +  else
  12169. +    fprintf(stderr, "dld_main not found\n");
  12170. +  exit(1);
  12171. +}
  12172.