/**** START OF: le_data.incl.pl1 * * * * * */ /****^ HISTORY COMMENTS: 1) change(86-08-12,Elhard), approve(86-08-12,MCR7505), audit(86-12-10,DGHowe), install(86-12-10,MR12.0-1241): Originally written to define the structures used internally by le_. END HISTORY COMMENTS */ /*** ****************************************************************/ /*** */ /*** Name: le_data */ /*** Function: This include file defines the data structures */ /*** used internally by the linkage_editor subroutine. */ /*** */ /*** ****************************************************************/ /* error severity constants */ dcl LE_WARNING fixed bin static options (constant) init (1); dcl LE_ERROR fixed bin static options (constant) init (2); dcl LE_FATAL_ERROR fixed bin static options (constant) init (3); dcl LE_ABORT_ERROR fixed bin static options (constant) init (4); /* section identifier constants */ dcl Text fixed bin (3) static options (constant) init (0); dcl Linkage fixed bin (3) static options (constant) init (1); dcl Symbol fixed bin (3) static options (constant) init (2); dcl Definition fixed bin (3) static options (constant) init (3); dcl Static fixed bin (3) static options (constant) init (4); dcl System fixed bin (3) static options (constant) init (5); dcl Heap fixed bin (3) static options (constant) init (6); dcl section_nm (0:6) char (16) static options (constant) init ("text", "linkage", "symbol", "definition", "static", "system", "heap"); /* link type constants */ dcl Self_Base fixed bin (3) static options (constant) init (1); dcl Refname_Base fixed bin (3) static options (constant) init (3); dcl Refname_Offsetname fixed bin (3) static options (constant) init (4); dcl Self_Offsetname fixed bin (3) static options (constant) init (5); /* backpatch type constants */ dcl Patch_Link fixed bin static options (constant) init (1); dcl Patch_Init fixed bin static options (constant) init (2); dcl Patch_Symbol_Ref fixed bin static options (constant) init (3); dcl Patch_Self_Init fixed bin static options (constant) init (4); /*** ****************************************************************/ /*** */ /*** Name: le_components */ /*** Function: the component table is used to keep information */ /*** about the input components being used and their */ /*** disposition in output components. */ /*** */ /*** ****************************************************************/ dcl 01 le_components aligned based, 02 header aligned, 03 flags aligned, 04 separate_static bit (1) unaligned, 04 perprocess_static bit (1) unaligned, 04 mbz bit (34) unaligned, 03 n_components fixed bin, 02 comp (0 refer (le_components.n_components)) like le_comp; /*** ****************************************************************/ /*** */ /*** Name: le_comp */ /*** Function: this is a single component table entry. */ /*** */ /*** ****************************************************************/ dcl 01 le_comp aligned based, 02 segp ptr, 02 bc fixed bin (24), 02 uid bit (36) aligned, 02 dtcm fixed bin (71), 02 name char (32) varying, 02 path char (194) varying, 02 compiler char (8), 02 target fixed bin, 02 flags aligned, 03 library bit (1) unaligned, 03 include bit (1) unaligned, 03 delete_table bit (1) unaligned, 03 separate_static bit (1) unaligned, 03 io_table bit (1) unaligned, 03 unique_path bit (1) unaligned, 03 mbz bit (30) unaligned, 02 tables aligned, 03 lesp ptr, 03 ledp ptr, 03 lelp ptr, 02 orig aligned, 03 textp ptr, 03 defnp ptr, 03 linkp ptr, 03 statp ptr, 03 symbp ptr, 03 rel_textp ptr, 03 rel_symbp ptr, 03 rel_linkp ptr, 03 textl fixed bin (18) unsigned unaligned, 03 defnl fixed bin (18) unsigned unaligned, 03 linkl fixed bin (18) unsigned unaligned, 03 statl fixed bin (18) unsigned unaligned, 03 symbl fixed bin (18) unsigned unaligned, 03 symbl_no_rel fixed bin (18) unsigned unaligned, 03 symbl_no_table fixed bin (18) unsigned unaligned, 03 n_symb_blocks fixed bin (18) unsigned unaligned, 03 text_boundary fixed bin (9) unsigned unaligned, 03 static_boundary fixed bin (9) unsigned unaligned, 03 next_comp fixed bin (18) unsigned unaligned, 02 new aligned, 03 rel_text fixed bin (18) unsigned unaligned, 03 rel_symb fixed bin (18) unsigned unaligned, 03 rel_stat fixed bin (18) unsigned unaligned, 03 text_pad fixed bin (18) unsigned unaligned, 03 static_pad fixed bin (18) unsigned unaligned, 03 symbol_pad fixed bin (18) unsigned unaligned; /*** ****************************************************************/ /*** */ /*** Name: le_segnames */ /*** Function: the segname table is used for two purposes: */ /*** - to determine the target components of links */ /*** being resolved internally. */ /*** - to determine the segname definitions to be */ /*** emited for definitions being retained. */ /*** */ /*** ****************************************************************/ dcl 01 le_segnames aligned based, 02 header aligned, 03 n_segnames fixed bin, 02 segname (segname_count refer (le_segnames.n_segnames)), 03 str char (32) varying, 03 relp fixed bin (18) unsigned unaligned, 03 pad bit (18) unaligned; dcl segname_count fixed bin automatic; /*** ****************************************************************/ /*** */ /*** Name: le_definitions */ /*** Function: the definition table contains the definitions */ /*** from the input components and is used to resolve */ /*** link targets, and regenerate definition entries */ /*** */ /*** ****************************************************************/ dcl 01 le_definitions aligned based, 02 header aligned, 03 n_defs fixed bin, 03 pad bit (36), 02 def (def_count refer (le_definitions.n_defs)) like le_definition; dcl def_count fixed bin automatic; dcl 01 le_definition aligned based, 02 str char (256) varying, 02 type fixed bin (18) unsigned unaligned, 02 relp fixed bin (18) unsigned unaligned, 02 offset fixed bin (18) unsigned unaligned, 02 new_offset fixed bin (18) unsigned unaligned, 02 flags aligned, 03 force_retain bit (1) unaligned, 03 entrypoint bit (1) unaligned, 03 ignore bit (1) unaligned, 03 referenced bit (1) unaligned, 03 no_link bit (1) unaligned, 03 retain bit (1) unaligned, 03 delete bit (1) unaligned, 03 mbz bit (29) unaligned; /*** ****************************************************************/ /*** */ /*** Name: le_options */ /*** Function: the option table contains definition retention */ /*** information. The input retentions options are */ /*** ordered such that a linear search of the option */ /*** table for the first matching starname will give */ /*** the correct retention state. */ /*** */ /*** ****************************************************************/ dcl 01 le_options aligned based, 02 header aligned, 03 n_opts fixed bin, 02 opt (0 refer (le_options.n_opts)), 03 type fixed bin (8) unaligned, 03 used bit (1) unaligned, 03 inhibit_error bit (1) unaligned, 03 class fixed bin (6) unaligned, 03 order fixed bin (17) unaligned, 03 segname char (32) unaligned, 03 ep_name char (256) unaligned; /*** ****************************************************************/ /*** */ /*** Name: le_links */ /*** Function: the link table contains information on all of the */ /*** links in the input components. It is used to */ /*** determine link targets, which library components */ /*** will be included, and what init_info will be */ /*** used, and where it will be placed. */ /*** */ /*** ****************************************************************/ dcl 01 le_links aligned based, 02 header aligned, 03 offset_adjustment fixed bin (18), 03 n_links fixed bin, 02 link (link_count refer (le_links.n_links)) like le_link; dcl link_count fixed bin automatic; dcl 01 le_link aligned based, 02 flags unaligned, 03 used bit (1), 03 mbx bit (35), 02 type fixed bin (6) unsigned unaligned, 02 class fixed bin (6) unsigned unaligned, 02 mod bit (6) unaligned, 02 exp fixed bin (17) unaligned, 02 target fixed bin (18) unsigned unaligned, 02 defx fixed bin (18) unsigned unaligned, 02 relp fixed bin (18) unsigned unaligned, 02 target_comp fixed bin (18) unsigned unaligned, 02 target_link fixed bin (18) unsigned unaligned, 02 extension fixed bin (18) unsigned unaligned, 02 initp ptr unaligned, 02 segnamep ptr unaligned, 02 offsetp ptr unaligned; /*** ****************************************************************/ /*** */ /*** Name: le_binaries */ /*** Function: This table contains information about the output */ /*** binaries. It is primarily used for creation and */ /*** backpatching of MSF output. */ /*** */ /*** ****************************************************************/ dcl 01 le_binaries aligned based, 02 header aligned, 03 n_binaries fixed bin, 03 pad bit (36), 02 binary (0:0 refer (le_binaries.n_binaries)), 03 segp ptr, 03 bc fixed bin (24), 03 uid bit (36), 03 aclc fixed bin, 03 aclp ptr, 03 textp ptr, 03 defnp ptr, 03 linkp ptr, 03 symbp ptr, 03 statp ptr, 03 textl fixed bin (18) unsigned unaligned, 03 defnl fixed bin (18) unsigned unaligned, 03 linkl fixed bin (18) unsigned unaligned, 03 symbl fixed bin (18) unsigned unaligned, 03 statl fixed bin (18) unsigned unaligned, 03 mbz2 bit (18) unaligned; /*** ****************************************************************/ /*** */ /*** Name: le_patches */ /*** Function: This table contains the list of backpatches to be */ /*** performed when the rest of the object creation is */ /*** complete. Since le_backpatch_ is the only routine */ /*** concerned with this, it is maintained completely */ /*** internal to le_backpatch_. */ /*** */ /*** ****************************************************************/ dcl 01 le_patches aligned based, 02 header aligned, 03 n_patches fixed bin, 02 patch (0 refer (le_patches.n_patches)) like le_patch; dcl 01 le_patch aligned based, 02 type fixed bin, 02 comp fixed bin, 02 relp fixed bin (18) unsigned, 02 target fixed bin, 02 index fixed bin; /**** END OF: le_data.incl.pl1 * * * * * */ */ ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group Bull including Bull HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell Bull Inc., Groupe Bull and Bull HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, Bull or Bull HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by Bull HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved */