COMPILATION LISTING OF SEGMENT le_backpatch_ Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-17_1938.19_Mon_mdt Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1986 * 4* * * 5* *********************************************************** */ 6 7 /****^ HISTORY COMMENTS: 8* 1) change(86-08-12,Elhard), approve(86-08-12,MCR7505), 9* audit(86-12-10,DGHowe), install(86-12-10,MR12.0-1241): 10* Originally written to record and execute backpatches which cannot be 11* resolved until the end of the run. These are references in one output 12* component to something in another component. 13* END HISTORY COMMENTS */ 14 15 /* format: style1,insnl,ifthendo,indthenelse,^indnoniterdo,^inditerdo,indcom,^indthenbegin,^indprocbody,ind2,ll78,initcol0,dclind4,idind24,struclvlind1,comcol41 */ 16 17 le_backpatch_: 18 proc (type, /** type of patch (in ) */ 19 comp, /** component to patch (in ) */ 20 relp, /** offset to patch (in ) */ 21 target, /** target of patch (in ) */ 22 index); /** thing to findd (in ) */ 23 24 /*** ****************************************************************/ 25 /*** */ 26 /*** Name: le_backpatch_ */ 27 /*** Input: type, comp, relp, target, index */ 28 /*** Function: this is the backpatching facility for the linkage */ 29 /*** editor. This main entrypoint is used to schedule */ 30 /*** the backpatching of a reference. This is done by */ 31 /*** placing an entry in a list. The list if found */ 32 /*** using the external variable le_data_$patch_ptr */ 33 /*** The following types of patch are supported: */ 34 /*** Patch_Init */ 35 /*** - This patch is used to install the link */ 36 /*** offset into the init_info for *system and */ 37 /*** *heap links with deferred initialization. */ 38 /*** is the output component where the */ 39 /*** link was emitted, is the offset */ 40 /*** (unadjusted for static) within the linkage */ 41 /*** section of the link, is the target */ 42 /*** input component of the deferred init, and */ 43 /*** is the index of the target link */ 44 /*** within that component link_table. */ 45 /*** Patch_Self_Init */ 46 /*** - This patch is used to install the link */ 47 /*** offset into the init_info for *system and */ 48 /*** *heap links with self-referential pointer */ 49 /*** initializations. This is required since */ 50 /*** the link offset is unknown until the link */ 51 /*** is emitted, and by then the init_info has */ 52 /*** already been created. is the output */ 53 /*** component where the link was emitted, */ 54 /*** is the offset (unadjusted for */ 55 /*** static) within the linkage section. */ 56 /*** is unused, and is the */ 57 /*** index of the init_template to be patched. */ 58 /*** Patch_Link */ 59 /*** - This patch is used to install the correct */ 60 /*** offset into partial links whos target is */ 61 /*** a link in another component. Since the link */ 62 /*** offset is unknown until the component is */ 63 /*** closed, we patch it. is the output */ 64 /*** component containing the link to patch, */ 65 /*** is the offset (unadjusted for */ 66 /*** static) of the link within the linkage */ 67 /*** section, is the target input */ 68 /*** component of the link, and is the */ 69 /*** index within that components definition */ 70 /*** table of the target definition of the link. */ 71 /*** This is used to find the target link and */ 72 /*** where it was relocated to. */ 73 /*** Patch_Symbol_Ref */ 74 /*** - This patch is used when resolving text */ 75 /*** section references to the symbol section. */ 76 /*** While we have the targets offset within the */ 77 /*** symbol section, we don't have the offset */ 78 /*** of the symbol section within the object */ 79 /*** segment until it is closed. is the */ 80 /*** output component containing the reference, */ 81 /*** is the offset of the word in the */ 82 /*** text section, is a code indicating */ 83 /*** the halfword to patch. is unused. */ 84 /*** In this patch, the absolute offset of the */ 85 /*** symbol section within the object is added */ 86 /*** to the value in place. */ 87 /*** Output: none */ 88 /*** */ 89 /*** ****************************************************************/ 90 91 /* parameters */ 92 93 dcl type fixed bin parameter; 94 dcl comp fixed bin parameter; 95 dcl relp fixed bin (18) unsigned parameter; 96 dcl target fixed bin parameter; 97 dcl index fixed bin parameter; 98 dcl lecp ptr parameter; 99 dcl lebp ptr parameter; 100 101 /* procedures */ 102 103 dcl get_group_id_ entry () returns (char (32)); 104 dcl get_system_free_area_ entry () returns (ptr); 105 dcl hcs_$add_acl_entries entry (char (*), char (*), ptr, fixed bin, 106 fixed bin (35)); 107 dcl hcs_$fs_get_path_name entry (ptr, char (*), fixed bin, char (*), 108 fixed bin (35)); 109 dcl hcs_$list_acl entry (char (*), char (*), ptr, ptr, ptr, 110 fixed bin, fixed bin (35)); 111 dcl hcs_$replace_acl entry (char (*), char (*), ptr, fixed bin, 112 bit (1), fixed bin (35)); 113 dcl le_error_ entry options (variable); 114 dcl pathname_ entry (char (*), char (*)) returns (char (168)); 115 116 /* external */ 117 118 dcl le_data_$patch_ptr ptr external; 119 dcl le_et_$implementation_error 120 external fixed bin (35); 121 122 /* based */ 123 124 dcl 01 leb aligned based (lebp), 125 02 header aligned like le_binaries.header, 126 02 binary dim (0:0 refer (leb.n_binaries)) 127 like le_binaries.binary; 128 dcl 01 lep aligned based (le_data_$patch_ptr), 129 02 header aligned like le_patches.header, 130 02 patch dim (0 refer (lep.n_patches)) like le_patch; 131 dcl 01 patch aligned like le_patch based (patchp); 132 133 /* automatic */ 134 135 dcl bx fixed bin automatic; 136 dcl patchp ptr automatic; 137 dcl px fixed bin automatic; 138 139 /* conditions */ 140 141 dcl cleanup condition; 142 143 /* builtin */ 144 145 dcl addr builtin; 146 dcl addrel builtin; 147 dcl currentsize builtin; 148 dcl fixed builtin; 149 dcl null builtin; 150 dcl rel builtin; 151 152 /* increment the number of patches and copy the info into the table */ 153 154 px, lep.n_patches = lep.n_patches + 1; 155 lep.patch (px).type = type; 156 lep.patch (px).comp = comp; 157 lep.patch (px).relp = relp; 158 lep.patch (px).target = target; 159 lep.patch (px).index = index; 160 161 return; 162 163 /**** * * * * * * * * * * * * * * * * * * * * * * * */ 164 165 /**** * * * * * * * * * * * * * * * * * * * * * * * */ 166 167 168 execute: 169 entry (lecp, lebp); 170 171 /*** ****************************************************************/ 172 /*** */ 173 /*** Name: le_backpatch_$execute */ 174 /*** Input: lecp, lebp */ 175 /*** Function: executes all of the backpatches scheduled. */ 176 /*** Output: none */ 177 /*** */ 178 /*** ****************************************************************/ 179 180 /* if there are no patches, just return */ 181 182 if lep.n_patches = 0 183 then return; 184 185 leb.binary (*).aclp = null; 186 187 /* make sure we put back the acls on an unexpected release */ 188 189 on cleanup 190 begin; 191 do bx = 1 to leb.n_binaries; 192 call restore_acl (leb.binary (bx).segp, leb.binary (bx).aclp, 193 leb.binary (bx).aclc); 194 end; 195 end; 196 197 do bx = 1 to leb.n_binaries; 198 199 /* for each output binary set the acl so we can write into */ 200 /* the segment. */ 201 202 call set_acl (leb.binary (bx).segp, leb.binary (bx).aclp, 203 leb.binary (bx).aclc); 204 end; 205 206 do px = 1 to lep.n_patches; 207 208 patchp = addr (lep.patch (px)); 209 210 /* execute each patch in the table */ 211 212 if patch.type = Patch_Init 213 then call patch_init (lecp, lebp, patch.comp, patch.relp, patch.target, 214 patch.index); 215 else if patch.type = Patch_Self_Init 216 then call patch_self_init (lecp, lebp, patch.comp, patch.relp, 217 patch.index); 218 else if patch.type = Patch_Link 219 then call patch_link (lecp, lebp, patch.comp, patch.relp, 220 patch.target, patch.index); 221 else if patch.type = Patch_Symbol_Ref 222 then call patch_symbol_ref (lebp, patch.comp, patch.relp, patch.target); 223 else call le_error_ (LE_ABORT_ERROR, le_et_$implementation_error, 224 "^/Unknown patch type (^d) found in patch table.", 225 patch.type); 226 end; 227 228 /* now put back the acls on the segment(s) */ 229 230 do bx = 1 to leb.n_binaries; 231 call restore_acl (leb.binary (bx).segp, leb.binary (bx).aclp, 232 leb.binary (bx).aclc); 233 end; 234 235 return; 236 237 /**** * * * * * * * * * * * * * * * * * * * * * * * */ 238 239 /**** * * * * * * * * * * * * * * * * * * * * * * * */ 240 241 242 set_acl: 243 proc (segp, /** segment pointer (in ) */ 244 aclp, /** acl pointer (out) */ 245 count); /** acl count (out) */ 246 247 /*** ****************************************************************/ 248 /*** */ 249 /*** Name: set_acl */ 250 /*** Input: segp */ 251 /*** Function: saves the access_control_list for the segment */ 252 /*** pointed to by segp, and adds a rw term to the acl */ 253 /*** for the calling user. */ 254 /*** Output: aclp, count */ 255 /*** */ 256 /*** ****************************************************************/ 257 258 /* parameters */ 259 260 dcl segp ptr parameter; 261 dcl aclp ptr parameter; 262 dcl count fixed bin parameter; 263 264 /* automatic */ 265 266 dcl 01 acl_entry aligned like segment_acl_entry automatic; 267 dcl dname char (168) automatic; 268 dcl ec fixed bin (35) automatic; 269 dcl ename char (32) automatic; 270 dcl sys_areap ptr automatic; 271 272 sys_areap = get_system_free_area_ (); 273 274 /* get the pathname and acl */ 275 276 call hcs_$fs_get_path_name (segp, dname, 0, ename, ec); 277 call hcs_$list_acl (dname, ename, sys_areap, aclp, null, count, ec); 278 if ec ^= 0 279 then do; 280 call le_error_ (LE_WARNING, ec, "^/Unable to read ACL for ^a.", 281 pathname_ (dname, ename)); 282 aclp = null; 283 end; 284 285 /* create a new acl entry giving rw access to the user */ 286 287 acl_entry.access_name = get_group_id_ (); 288 acl_entry.mode = REW_ACCESS; 289 acl_entry.extended_mode = ""b; 290 acl_entry.status_code = 0; 291 292 /* add the new acl term */ 293 294 call hcs_$add_acl_entries (dname, ename, addr (acl_entry), 1, ec); 295 if ec ^= 0 296 then call le_error_ (LE_ABORT_ERROR, ec, "^/Unable to set ACL on ^a.", 297 pathname_ (dname, ename)); 298 299 end set_acl; 300 301 /**** * * * * * * * * * * * * * * * * * * * * * * * */ 302 303 /**** * * * * * * * * * * * * * * * * * * * * * * * */ 304 305 306 restore_acl: 307 proc (segp, /** segment pointer (in ) */ 308 aclp, /** acl pointer (in ) */ 309 count); /** acl count (in ) */ 310 311 /*** ****************************************************************/ 312 /*** */ 313 /*** Name: restore_acl */ 314 /*** Input: segp, aclp, count */ 315 /*** Function: replaces the saved acl (pointed to by aclp) on */ 316 /*** segment pointed to by segp and frees the saved */ 317 /*** acl structure. */ 318 /*** Output: none */ 319 /*** */ 320 /*** ****************************************************************/ 321 322 /* parameters */ 323 324 dcl segp ptr parameter; 325 dcl aclp ptr parameter; 326 dcl count fixed bin parameter; 327 328 /* based */ 329 330 dcl 01 acl_list (1:count) like segment_acl_entry based (aclp); 331 dcl sys_area area based (sys_areap); 332 333 /* automatic */ 334 335 dcl dname char (168) automatic; 336 dcl ec fixed bin (35) automatic; 337 dcl ename char (32) automatic; 338 dcl sys_areap ptr automatic; 339 340 /* if there is no saved acl, just return */ 341 342 if aclp = null 343 then return; 344 345 sys_areap = get_system_free_area_ (); 346 347 /* get the pathname and replace the saved acl */ 348 349 call hcs_$fs_get_path_name (segp, dname, 0, ename, ec); 350 call hcs_$replace_acl (dname, ename, aclp, count, "1"b, ec); 351 352 free acl_list in (sys_area); 353 354 if ec ^= 0 355 then call le_error_ (LE_WARNING, ec, "^/Unable to restore ACL on ^a.", 356 pathname_ (dname, ename)); 357 358 end restore_acl; 359 360 /**** * * * * * * * * * * * * * * * * * * * * * * * */ 361 362 /**** * * * * * * * * * * * * * * * * * * * * * * * */ 363 364 365 patch_init: 366 proc (lecp, /** components pointer (in ) */ 367 lebp, /** object info pointer (in ) */ 368 comp, /** component index (in ) */ 369 relp, /** relpointer to link (in ) */ 370 target, /** target input comp (in ) */ 371 index); /** link table index (in ) */ 372 373 /*** ****************************************************************/ 374 /*** */ 375 /*** Name: patch_init */ 376 /*** Input: lecp, lebp, comp, relp, target, index */ 377 /*** Function: patches the link_relp value in a deferred init */ 378 /*** init_info to properly refer to the target of the */ 379 /*** deferred initialization. */ 380 /*** Output: none */ 381 /*** */ 382 /*** ****************************************************************/ 383 384 /* parameters */ 385 386 dcl lecp ptr parameter; 387 dcl lebp ptr parameter; 388 dcl comp fixed bin parameter; 389 dcl relp fixed bin (18) unsigned parameter; 390 dcl target fixed bin parameter; 391 dcl index fixed bin parameter; 392 393 /* based */ 394 395 dcl 01 exp aligned like exp_word based (expp); 396 dcl 01 init aligned like link_init_deferred based (initp); 397 dcl 01 leb aligned based (lebp), 398 02 header aligned like le_binaries.header, 399 02 binary dim (0:0 refer (leb.n_binaries)) 400 like le_binaries.binary; 401 dcl 01 lec aligned based (lecp), 402 02 header aligned like le_components.header, 403 02 comp dim (0 refer (lec.n_components)) like le_comp; 404 dcl 01 lel aligned based (lelp), 405 02 header aligned like le_links.header, 406 02 link dim (0 refer (lel.n_links)) like le_link; 407 dcl 01 lk aligned like object_link based (lkp); 408 dcl 01 type aligned like type_pair based (typep); 409 410 /* automatic */ 411 412 dcl expp ptr automatic; 413 dcl initp ptr automatic; 414 dcl lelp ptr automatic; 415 dcl lkp ptr automatic; 416 dcl offset fixed bin (18) unsigned automatic; 417 dcl typep ptr automatic; 418 419 /* builtin */ 420 421 dcl mod builtin; 422 423 /* adjust the link relpointer for the presence of the static section */ 424 425 if lec.header.flags.separate_static 426 then offset = relp; 427 else do; 428 offset = relp + leb.binary (comp).statl; 429 offset = offset + mod (offset, 2); 430 end; 431 432 /* get the link information */ 433 434 lkp = addrel (leb.binary (comp).linkp, offset); 435 expp = addrel (leb.binary (comp).defnp, lk.expression_relp); 436 typep = addrel (leb.binary (comp).defnp, exp.type_relp); 437 initp = addrel (leb.binary (comp).defnp, type.trap_relp); 438 439 lelp = lec.comp (target).tables.lelp; 440 441 /* find the target link in the other component and adjust the link */ 442 /* offset for combined static if necessary. */ 443 444 if lec.header.flags.separate_static 445 then init.link_relp = lel.link (index).relp; 446 else do; 447 init.link_relp = lel.link (index).relp + 448 leb.binary (lec.comp (target).target).statl; 449 init.link_relp = init.link_relp + mod (init.link_relp, 2); 450 end; 451 452 end patch_init; 453 454 /**** * * * * * * * * * * * * * * * * * * * * * * * */ 455 456 /**** * * * * * * * * * * * * * * * * * * * * * * * */ 457 458 459 patch_self_init: 460 proc (lecp, /** components pointer (in ) */ 461 lebp, /** object info pointer (in ) */ 462 comp, /** component index (in ) */ 463 relp, /** relpointer to link (in ) */ 464 index); /** init template index (in ) */ 465 466 /*** ****************************************************************/ 467 /*** */ 468 /*** Name: patch_self_init */ 469 /*** Input: lecp, lebp, comp, relp, index */ 470 /*** Function: patches the section_offset value in a pointer */ 471 /*** init template for a self_referential link. */ 472 /*** Output: none */ 473 /*** */ 474 /*** ****************************************************************/ 475 476 /* parameters */ 477 478 dcl lecp ptr parameter; 479 dcl lebp ptr parameter; 480 dcl comp fixed bin parameter; 481 dcl relp fixed bin (18) unsigned parameter; 482 dcl index fixed bin parameter; 483 484 /* based */ 485 486 dcl 01 exp aligned like exp_word based (expp); 487 dcl 01 init aligned based (initp), 488 02 header aligned like link_init_list_template.header, 489 02 pad bit (18) unaligned, 490 02 n_words_in_list fixed bin (18) unsigned unaligned, 491 02 template dim (0 refer (init.n_words_in_list)); 492 dcl 01 leb aligned based (lebp), 493 02 header aligned like le_binaries.header, 494 02 binary dim (0:0 refer (leb.n_binaries)) 495 like le_binaries.binary; 496 dcl 01 lec aligned based (lecp), 497 02 header aligned like le_components.header, 498 02 comp dim (0 refer (lec.n_components)) like le_comp; 499 dcl 01 lk aligned like object_link based (lkp); 500 dcl 01 lte aligned based (ltep), 501 02 n_bits fixed bin (35) aligned, 502 02 mbz bit (3) unaligned, 503 02 init_type fixed bin (3) unsigned unaligned, 504 02 repeat fixed bin (30) unsigned unaligned, 505 02 datum bit (0 refer (lte.n_bits)); 506 dcl 01 pit aligned like pointer_init_template based (pitp); 507 dcl 01 type aligned like type_pair based (typep); 508 509 /* automatic */ 510 511 dcl expp ptr automatic; 512 dcl i fixed bin automatic; 513 dcl initp ptr automatic; 514 dcl lkp ptr automatic; 515 dcl ltep ptr automatic; 516 dcl offset fixed bin (18) unsigned automatic; 517 dcl pitp ptr automatic; 518 dcl typep ptr automatic; 519 520 /* builtin */ 521 522 dcl mod builtin; 523 524 /* adjust the link relpointer for the presence of the static section */ 525 526 if lec.header.flags.separate_static 527 then offset = relp; 528 else do; 529 offset = relp + leb.binary (comp).statl; 530 offset = offset + mod (offset, 2); 531 end; 532 533 /* get the link information */ 534 535 lkp = addrel (leb.binary (comp).linkp, offset); 536 expp = addrel (leb.binary (comp).defnp, lk.expression_relp); 537 typep = addrel (leb.binary (comp).defnp, exp.type_relp); 538 initp = addrel (leb.binary (comp).defnp, type.trap_relp); 539 540 /* find the appropriate template */ 541 542 ltep = addr (init.template); 543 544 do i = 1 to index-1; 545 ltep = addrel (ltep, currentsize (lte)); 546 end; 547 548 /* make sure the template found is a pointer init list template */ 549 550 if lte.init_type = 0 551 then call le_error_ (le_et_$implementation_error, LE_ABORT_ERROR, 552 "^/Self Init backpatch does not refer to a pointer template." || 553 "^/Patching link|^o", offset); 554 else do; 555 556 /* install the section offset into the init template */ 557 558 pitp = addr (lte.datum); 559 pit.section_offset = offset; 560 end; 561 562 end patch_self_init; 563 564 /**** * * * * * * * * * * * * * * * * * * * * * * * */ 565 566 /**** * * * * * * * * * * * * * * * * * * * * * * * */ 567 568 569 patch_link: 570 proc (lecp, /** components pointer (in ) */ 571 lebp, /** binaries pointer (in ) */ 572 comp, /** component index (in ) */ 573 relp, /** link offset (in ) */ 574 target, /** target input comp (in ) */ 575 index); /** def table index (in ) */ 576 577 /*** ****************************************************************/ 578 /*** */ 579 /*** Name: patch_link */ 580 /*** Input: lecp, lebp, comp, relp, target, index */ 581 /*** Function: patches the word_offset portion of a partial */ 582 /*** link to a link in another component linkage scn. */ 583 /*** Output: none */ 584 /*** */ 585 /*** ****************************************************************/ 586 587 /* parameters */ 588 589 dcl lecp ptr parameter; 590 dcl lebp ptr parameter; 591 dcl comp fixed bin parameter; 592 dcl relp fixed bin (18) unsigned parameter; 593 dcl target fixed bin parameter; 594 dcl index fixed bin parameter; 595 596 /* based */ 597 598 dcl 01 leb aligned based (lebp), 599 02 header aligned like le_binaries.header, 600 02 binary dim (0:0 refer (leb.n_binaries)) 601 like le_binaries.binary; 602 dcl 01 lec aligned based (lecp), 603 02 header aligned like le_components.header, 604 02 comp dim (0 refer (lec.n_components)) like le_comp; 605 dcl 01 lel aligned based (lelp), 606 02 header aligned like le_links.header, 607 02 link dim (0 refer (lel.n_links)) like le_link; 608 dcl 01 plk aligned like partial_link based (plkp); 609 610 /* automatic */ 611 612 dcl lelp ptr automatic; 613 dcl offset fixed bin (18) unsigned automatic; 614 dcl plkp ptr automatic; 615 616 /* builtin */ 617 618 dcl mod builtin; 619 620 /* adjust the link offset for the presence of combined static */ 621 622 if lec.header.flags.separate_static 623 then offset = relp; 624 else do; 625 offset = relp + leb.binary (comp).statl; 626 offset = offset + mod (offset, 2); 627 end; 628 629 /* get the partial link itself */ 630 631 plkp = addrel (leb.binary (comp).linkp, offset); 632 633 /* find the target link */ 634 635 lelp = lec.comp (target).tables.lelp; 636 637 /* adjust the target offset for the presence of combined static and */ 638 /* patch the new offset into the link. */ 639 640 if lec.header.flags.separate_static 641 then plk.offset = lel.link (index).relp; 642 else do; 643 plk.offset = lel.link (index).relp + 644 leb.binary (lec.comp (target).target).statl; 645 plk.offset = plk.offset + mod (plk.offset, 2); 646 end; 647 648 end patch_link; 649 650 /**** * * * * * * * * * * * * * * * * * * * * * * * */ 651 652 /**** * * * * * * * * * * * * * * * * * * * * * * * */ 653 654 655 patch_symbol_ref: 656 proc (lebp, /** binaries pointer (in ) */ 657 comp, /** component index (in ) */ 658 relp, /** reference offset (in ) */ 659 relinfo); /** relinfo code (in ) */ 660 661 /*** ****************************************************************/ 662 /*** */ 663 /*** Name: patch_symbol_ref */ 664 /*** Input: lebp, comp, relp, relinfo */ 665 /*** Function: patches a symbol reference being made using an */ 666 /*** absolute offset within the segment by adding in */ 667 /*** the offset of the symbol section within the seg. */ 668 /*** Output: none */ 669 /*** */ 670 /*** ****************************************************************/ 671 672 /* parameters */ 673 674 dcl lebp ptr parameter; 675 dcl comp fixed bin parameter; 676 dcl relp fixed bin (18) unsigned parameter; 677 dcl relinfo fixed bin parameter; 678 679 /* based */ 680 681 dcl 01 ref aligned based (refp), 682 02 side (1:2) fixed bin (18) unsigned unaligned; 683 dcl 01 leb aligned based (lebp), 684 02 header aligned like le_binaries.header, 685 02 binary dim (0:0 refer (leb.n_binaries)) 686 like le_binaries.binary; 687 688 /* automatic */ 689 690 dcl refp ptr automatic; 691 692 /* find the referencing word */ 693 694 refp = addrel (leb.binary (comp).textp, relp); 695 696 /* add in the symbol section offset within the segment */ 697 698 ref.side (relinfo) = ref.side (relinfo) + 699 fixed (rel (leb.binary (comp).symbp), 18); 700 701 end patch_symbol_ref; 702 703 /**** * * * * * * * * * * * * * * * * * * * * * * * */ 704 705 /**** * * * * * * * * * * * * * * * * * * * * * * * */ 706 707 1 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 1 2* 1 3* Values for the "access mode" argument so often used in hardcore 1 4* James R. Davis 26 Jan 81 MCR 4844 1 5* Added constants for SM access 4/28/82 Jay Pattin 1 6* Added text strings 03/19/85 Chris Jones 1 7**/ 1 8 1 9 1 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 1 11 dcl ( 1 12 N_ACCESS init ("000"b), 1 13 R_ACCESS init ("100"b), 1 14 E_ACCESS init ("010"b), 1 15 W_ACCESS init ("001"b), 1 16 RE_ACCESS init ("110"b), 1 17 REW_ACCESS init ("111"b), 1 18 RW_ACCESS init ("101"b), 1 19 S_ACCESS init ("100"b), 1 20 M_ACCESS init ("010"b), 1 21 A_ACCESS init ("001"b), 1 22 SA_ACCESS init ("101"b), 1 23 SM_ACCESS init ("110"b), 1 24 SMA_ACCESS init ("111"b) 1 25 ) bit (3) internal static options (constant); 1 26 1 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 1 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 1 29 1 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 1 31 static options (constant); 1 32 1 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 1 34 static options (constant); 1 35 1 36 dcl ( 1 37 N_ACCESS_BIN init (00000b), 1 38 R_ACCESS_BIN init (01000b), 1 39 E_ACCESS_BIN init (00100b), 1 40 W_ACCESS_BIN init (00010b), 1 41 RW_ACCESS_BIN init (01010b), 1 42 RE_ACCESS_BIN init (01100b), 1 43 REW_ACCESS_BIN init (01110b), 1 44 S_ACCESS_BIN init (01000b), 1 45 M_ACCESS_BIN init (00010b), 1 46 A_ACCESS_BIN init (00001b), 1 47 SA_ACCESS_BIN init (01001b), 1 48 SM_ACCESS_BIN init (01010b), 1 49 SMA_ACCESS_BIN init (01011b) 1 50 ) fixed bin (5) internal static options (constant); 1 51 1 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 708 2 1 /* Begin include file -- acl_structures.incl.pl1 BIM 3/82 */ 2 2 /* format: style3,indcomtxt,idind30 */ 2 3 2 4 declare acl_ptr pointer; 2 5 declare acl_count fixed bin; 2 6 2 7 declare 1 general_acl aligned based (acl_ptr), /* for fs_util_ */ 2 8 2 version char (8) aligned, 2 9 2 count fixed bin, 2 10 2 entries (acl_count refer (general_acl.count)) aligned like general_acl_entry; 2 11 2 12 declare 1 general_acl_entry based, 2 13 2 access_name character (32) unaligned, 2 14 2 mode bit (36) aligned, 2 15 2 status_code fixed bin (35); 2 16 2 17 2 18 declare 1 general_extended_acl aligned based (acl_ptr), /* for fs_util_ */ 2 19 2 version char (8) aligned, 2 20 2 count fixed bin, 2 21 2 entries (acl_count refer (general_extended_acl.count)) aligned like general_extended_acl_entry; 2 22 2 23 declare 1 general_extended_acl_entry aligned based, 2 24 2 access_name character (32) unaligned, 2 25 2 mode bit (36) aligned, 2 26 2 extended_mode bit (36) aligned, 2 27 2 status_code fixed bin (35); 2 28 2 29 2 30 declare 1 general_delete_acl aligned based (acl_ptr), /* for file_system_ */ 2 31 2 version char (8) aligned, 2 32 2 count fixed bin, 2 33 2 entries (acl_count refer (general_delete_acl.count)) aligned like delete_acl_entry; 2 34 2 35 declare 1 general_delete_acl_entry aligned based, 2 36 2 access_name character (32) unaligned, 2 37 2 status_code fixed bin (35); 2 38 2 39 2 40 declare 1 segment_acl aligned based (acl_ptr), 2 41 2 version fixed bin, 2 42 2 count fixed bin, 2 43 2 entries (acl_count refer (segment_acl.count)) aligned like segment_acl_entry; 2 44 2 45 declare 1 segment_acl_entry like general_extended_acl_entry aligned based; 2 46 declare 1 segment_acl_array (acl_count) aligned like segment_acl_entry based (acl_ptr); 2 47 2 48 2 49 declare 1 directory_acl aligned based (acl_ptr), 2 50 2 version fixed bin, 2 51 2 count fixed bin, 2 52 2 entries (acl_count refer (directory_acl.count)) aligned like directory_acl_entry; 2 53 2 54 declare 1 directory_acl_entry like general_acl_entry aligned based; 2 55 declare 1 directory_acl_array (acl_count) aligned like directory_acl_entry based (acl_ptr); 2 56 2 57 2 58 declare 1 delete_acl based (acl_ptr) aligned, 2 59 2 version fixed bin, 2 60 2 count fixed bin, 2 61 2 entries (acl_count refer (delete_acl.count)) aligned like delete_acl_entry; 2 62 2 63 declare 1 delete_acl_entry like general_delete_acl_entry aligned based; 2 64 declare 1 delete_acl_array (acl_count) aligned like delete_acl_entry based (acl_ptr); 2 65 2 66 2 67 declare (SEG_ACL_VERSION_1 init ("sga1"), 2 68 DIR_ACL_VERSION_1 init ("dra1"), 2 69 DELETE_ACL_VERSION_1 init ("dla1")) 2 70 char (4) int static options (constant); 2 71 2 72 declare (GENERAL_ACL_VERSION_1 init ("gacl001"), 2 73 GENERAL_EXTENDED_ACL_VERSION_1 init ("gxacl001"), 2 74 GENERAL_DELETE_ACL_VERSION_1 init ("gdacl001")) 2 75 char (8) internal static options (constant); 2 76 2 77 declare ACL_VERSION_1 fixed bin init (1) int static options (constant); 2 78 2 79 /* End include file acl_structures.incl.pl1 */ 709 3 1 /* Begin include file definition_dcls.incl.pl1 BIM 1981 */ 3 2 3 3 3 4 /****^ HISTORY COMMENTS: 3 5* 1) change(86-05-02,Elhard), approve(86-05-02,MCR7391), 3 6* audit(86-07-18,DGHowe), install(86-11-20,MR12.0-1222): 3 7* Modified to add indirect bit to definition flags, add msf_map_relp to the 3 8* definition header, declare the msf_map, and add structures and constants 3 9* for deferred initialization. 3 10* 2) change(86-06-24,DGHowe), approve(86-06-24,MCR7420), 3 11* audit(86-08-05,Schroth), install(86-11-20,MR12.0-1222): 3 12* added the structures for pointer initialization. pointer_init_template. 3 13* changed list_template_entry 3 14* END HISTORY COMMENTS */ 3 15 3 16 3 17 /* Modified: */ 3 18 /* 13 Dec 1982 by Lee A. Newcomb to put definition_header.hash_table_relp */ 3 19 /* after unused half-word instead of before it. */ 3 20 /* 1 March 1983 by M. Weaver to add list template init type */ 3 21 3 22 /* format: style3,idind25 */ 3 23 /* everything for the definition section */ 3 24 3 25 declare ( 3 26 CLASS_TEXT init (0), /* text section definition */ 3 27 CLASS_LINKAGE init (1), /* linkage section definition */ 3 28 CLASS_SYMBOL init (2), /* symbol section definition */ 3 29 CLASS_SEGNAME init (3), /* segment name definition */ 3 30 CLASS_STATIC init (4), /* static section definition */ 3 31 CLASS_SYSTEM init (5), /* valid only in self links, not def class */ 3 32 CLASS_HEAP init (6) /* valid only in self links, not def class */ 3 33 ) fixed bin (3) unsigned internal static options (constant); 3 34 3 35 declare CLASS_NAMES (0:6) character (12) internal static options (constant) 3 36 init ("text", "linkage", "symbol", "segname", "static", "system", "heap"); 3 37 3 38 declare SYMBOLIC_SECTION_NAMES (0:6) character (8) 3 39 init ("*text", "*link", "*symbol", *, "*static", "*system", "*heap") internal static 3 40 options (constant); 3 41 3 42 declare 1 definition_flags unaligned based, 3 43 2 new bit (1), /* should be "1"b */ 3 44 2 ignore bit (1), /* cannot snap link to this */ 3 45 2 entry bit (1), /* can tra here */ 3 46 2 retain bit (1), /* binder respects this */ 3 47 2 argcount bit (1), /* OBSOLETE */ 3 48 2 descriptors bit (1), /* OBSOLETE */ 3 49 2 indirect bit (1), /* target is a pointer to actual target */ 3 50 2 unused bit (8); /* Must be zero */ 3 51 3 52 3 53 3 54 3 55 /* Header of the definition section */ 3 56 3 57 declare def_header_ptr pointer; 3 58 declare 1 definition_header aligned based (def_header_ptr), 3 59 2 def_list_relp fixed bin (18) unsigned unaligned, 3 60 /* first definition, reloc def18 */ 3 61 2 msf_map_relp fixed bin (18) unsigned unaligned, 3 62 /* msf_map if any, or 0 if none. reloc def18 unless none */ 3 63 2 hash_table_relp fixed bin (18) unsigned unaligned, 3 64 /* def hash table, if any, or 0 if none. reloc def18 unless none */ 3 65 2 flags unaligned like definition_flags; 3 66 /* both new and ignore must be "1"b here */ 3 67 3 68 /* A non class=3 definition. See segname_definition below for class=3 */ 3 69 3 70 3 71 declare def_ptr pointer; 3 72 declare 1 definition aligned based (def_ptr), 3 73 2 forward_relp unal fixed bin (18) unsigned, 3 74 /* offset of next def */ 3 75 2 backward_relp unal fixed bin (18) unsigned, 3 76 /* offset of previous def */ 3 77 2 thing_relp unal fixed bin (18) unsigned, 3 78 /* offset in section specified by class of thing this defines */ 3 79 2 flags unaligned like definition_flags, 3 80 2 class unal fixed bin (3) unsigned, 3 81 /* Type of definition */ 3 82 2 name_relp unal fixed bin (18) unsigned, 3 83 /* offset of ACC for symbol */ 3 84 2 segname_relp unal fixed bin (18) unsigned; 3 85 /* offset of segname def to which this belongs */ 3 86 3 87 /* Class=3, segname definition */ 3 88 3 89 declare segname_ptr pointer; 3 90 declare 1 segname_definition aligned based (segname_ptr), 3 91 2 forward_relp unal fixed bin (18) unsigned, 3 92 /* offset of next def */ 3 93 2 backward_relp unal fixed bin (18) unsigned, 3 94 /* offset of previous def */ 3 95 2 next_segname_relp unal fixed bin (18) unsigned, 3 96 /* offset of next segname def */ 3 97 2 flags unaligned like definition_flags, 3 98 2 class unal fixed bin (3) unsigned, 3 99 /* 3 for segname */ 3 100 2 name_relp unal fixed bin (18) unsigned, 3 101 /* offset of ACC for symbol */ 3 102 2 first_relp unal fixed bin (18) unsigned; 3 103 /* see following : */ 3 104 3 105 /* Definition blocks are chained off of segname definitions. 3 106* segname_definition.first_relp is one of three things: 3 107* (1) the def section offset of the first ordinary (class^=3) definition 3 108* belonging to this segname block. In the case where there are more than 3 109* one segname's on a block, all their first_relp will point 3 110* to the same place. 3 111* 3 112* (2) if there are no ordinary definitions associated with this segname, 3 113* then it is the def section offset of the next segname. 3 114* 3 115* (3) if there are no ordinary definitions in the block, and it 3 116* is the last block, then it points to a word containing 0. 3 117* 3 118* Thus the end of a list of synonym segnames can be detected by forward_relp 3 119* pointing to a class=3 definition whose first_relp is not the same as 3 120* the current definitions first_relp. 3 121**/ 3 122 3 123 /* All the definitions are linked through the forward and 3 124* backward thread variables. The end of the chain can is indicated 3 125* by forward pointing to a zero word. */ 3 126 3 127 3 128 declare exp_ptr pointer; 3 129 declare 1 exp_word based (exp_ptr) aligned, /* expression word in link definition */ 3 130 2 type_relp fixed bin (18) unsigned unal, 3 131 /* pointer (rel to defs) of type pair structure */ 3 132 2 expression fixed bin (17) unal; /* constant expression to be added in when snapping link */ 3 133 3 134 declare ( 3 135 LINK_SELF_BASE init (1), /* *section|0+expression,modifier */ 3 136 /* which section determined by segname_relp */ 3 137 LINK_OBSOLETE_2 init (2), /* not used */ 3 138 LINK_REFNAME_BASE init (3), /* refname|0+expression,modifier */ 3 139 LINK_REFNAME_OFFSETNAME init (4), /* refname|offsetname+expression,modifier */ 3 140 LINK_SELF_OFFSETNAME init (5), /* *section|offsetname+expression,modifier */ 3 141 LINK_CREATE_IF_NOT_FOUND init (6), /* OBSOLETE: like LINK_REFNAME_OFFSETNAME except that it will create instead of taking linkage_error */ 3 142 SECTION_TEXT init (0), /* *text */ 3 143 SECTION_LINK init (1), /* *link */ 3 144 SECTION_SYMBOL init (2), /* *symbol */ 3 145 SECTION_UNUSED init (3), /* reserved */ 3 146 SECTION_STATIC init (4), /* *static */ 3 147 SECTION_SYSTEM init (5), /* *system */ 3 148 SECTION_HEAP init (6) /* *heap */ 3 149 ) fixed bin (18) unsigned unaligned internal static options (constant); 3 150 3 151 /* use CLASS_NAMES for section names */ 3 152 3 153 declare LINK_TYPE_NAMES (1:6) 3 154 init ("absolute in section", "unused", "absolute off of refname", 3 155 "symbolic off of refname", "symbolic in section", "symbolic off of refname; create") 3 156 character (32) varying internal static options (constant); 3 157 3 158 3 159 declare type_ptr pointer; 3 160 declare 1 type_pair based (type_ptr) aligned,/* type pair in link definition */ 3 161 2 type fixed bin (18) unsigned unal, 3 162 /* see above */ 3 163 2 trap_relp fixed bin (18) unsigned unal, 3 164 /* pointer (rel to defs) to the trap word */ 3 165 /* unless LINK_SELF_OFFSETNAME off of *system or create link */ 3 166 2 segname_relp fixed bin (18) unsigned unal, 3 167 /* pointer (rel to defs) to ACC reference name for segment referenced, 3 168* /*or section code for SELF links */ 3 169 2 offsetname_relp fixed bin (18) unsigned unal; 3 170 /* for OFFSETNAME links, ACC string of name of location. */ 3 171 /* for others, must be ZERO */ 3 172 3 173 3 174 /* Link Trap Pair */ 3 175 3 176 declare link_trap_ptr pointer; 3 177 declare 1 link_trap_pair aligned based (link_trap_ptr), 3 178 2 call_relp fixed bin (18) unsigned unaligned, 3 179 /* LINK18, link to thing to call */ 3 180 2 info_relp fixed bin (18) unsigned unaligned; 3 181 /* LINK18, link to argument list */ 3 182 3 183 3 184 /* initialization info for *system or *heap link */ 3 185 3 186 3 187 /* NOTE -------------------------------------------------- 3 188* the following structures defining initialization information are also 3 189* defined in fortran_storage.incl.pl1 system_link_init_info.incl.pl1 3 190* and should be kept equivalent 3 191* ------------------------------------------------------- 3 192**/ 3 193 3 194 declare ( 3 195 INIT_NO_INIT init (0), 3 196 INIT_COPY_INFO init (3), 3 197 INIT_DEFINE_AREA init (4), 3 198 INIT_LIST_TEMPLATE init (5), 3 199 INIT_DEFERRED init (6) 3 200 ) fixed bin internal static options (constant); 3 201 3 202 /* for type = 0 or 4 */ 3 203 3 204 declare link_init_ptr pointer; 3 205 declare 1 link_init aligned based (link_init_ptr), 3 206 2 n_words fixed bin (35), /* number to invent */ 3 207 2 type fixed bin; /* see types above */ 3 208 3 209 /* for type=3, there is data to copy */ 3 210 3 211 declare 1 link_init_copy_info aligned based (link_init_ptr), 3 212 2 header aligned like link_init, 3 213 2 initial_data (link_init_n_words refer (link_init_copy_info.header.n_words)) bit (36) aligned; 3 214 3 215 declare link_init_n_words fixed bin; 3 216 3 217 /* for type = 5, there is a list template to copy */ 3 218 3 219 declare 1 link_init_list_template 3 220 aligned based (link_init_ptr), 3 221 2 header aligned like link_init, 3 222 2 pad bit (18) unaligned, 3 223 2 n_words_in_list fixed bin (18) unsigned unaligned, 3 224 2 template (link_init_n_words_in_list refer (link_init_list_template.n_words_in_list)); 3 225 3 226 declare link_init_n_words_in_list 3 227 fixed bin; 3 228 3 229 /* A list template consists of a series of entries with the following 3 230* description, concatenated together. n_bits and datum are bit items, 3 231* to permit a wide range of inputs. 3 232* 3 233* 1. A 'repeat' of '0' signifies skipping of 'n_bits' bits. 3 234* 2. A 'n_bits' of '0' signifies the last item of the list. 3 235* 3 236* COMMON, VLA's, and LA's are presumed to start at the base pointer 3 237* of their particular storage section. */ 3 238 3 239 declare 1 list_template_entry aligned based, 3 240 2 n_bits fixed bin (35) aligned, /* size of datum */ 3 241 2 mbz bit (3) unaligned, /* future expansion */ 3 242 2 init_type fixed bin (3) unsigned unaligned, /* 0 normal init, 1 ptr init, 2 packed ptr init */ 3 243 2 repeat fixed bin (30) unsigned unaligned, 3 244 /* number of times to repeat datum */ 3 245 2 datum bit (link_init_n_bits_in_datum refer (list_template_entry.n_bits)); 3 246 3 247 3 248 /* the pointer_init_template represents the initialization information 3 249* for ITS and packed pointers. Both pointer types require the entire 3 250* 72 bit structure. 3 251**/ 3 252 3 253 dcl 1 pointer_init_template based, 3 254 2 ptr_type fixed bin (18) unsigned unaligned, /* 0 text section, 1 linkage section, 2 static section */ 3 255 2 section_offset fixed bin (18) unsigned unaligned, /* offset to item in specified section */ 3 256 2 word_offset fixed bin (18) unsigned unaligned, /* offset from section item to target in words */ 3 257 2 mbz bit (12) unaligned, 3 258 2 bit_offset fixed bin (6) unsigned unaligned; /* offset from section item|word offset to target in bits */ 3 259 3 260 3 261 declare link_init_n_bits_in_datum 3 262 fixed bin (35); 3 263 3 264 /* for type = 6, the init_info resides in another MSF component */ 3 265 /* target_relp is a linkage section offset to a partial link to */ 3 266 /* the base of the linkage section of the component containing */ 3 267 /* the actual init_info. link_relp is the offset of the actual */ 3 268 /* link within that linkage section. */ 3 269 3 270 declare 1 link_init_deferred aligned based (link_init_ptr), 3 271 2 header aligned like link_init, 3 272 2 target_relp fixed bin (18) unsigned unaligned, 3 273 2 link_relp fixed bin (18) unsigned unaligned; 3 274 3 275 /* Definition section hash table */ 3 276 3 277 declare def_ht_ptr pointer; 3 278 declare 1 definition_ht aligned based (def_ht_ptr), 3 279 2 n_entries fixed bin, 3 280 2 table (def_ht_n_entries refer (definition_ht.n_entries)) aligned, 3 281 3 def_relp fixed bin (18) unsigned unaligned, 3 282 3 unused bit (18) unaligned; 3 283 3 284 declare def_ht_n_entries fixed bin; 3 285 3 286 3 287 /* Component name ht */ 3 288 declare comp_ht_ptr pointer; 3 289 declare 1 component_ht aligned based (comp_ht_ptr), 3 290 2 n_entries fixed bin, 3 291 2 table (comp_ht_n_entries refer (component_ht.n_entries)) aligned, 3 292 3 def_relp fixed bin (18) unsigned unaligned, 3 293 /* hashed segname */ 3 294 3 block_hdr_relp fixed bin (18) unsigned unaligned; 3 295 /* first segname def of block containing def_relp */ 3 296 3 297 declare comp_ht_n_entries fixed bin; 3 298 3 299 /* Duplicate name table */ 3 300 3 301 declare dup_table_ptr pointer; 3 302 declare 1 duplicate_table aligned based (dup_table_ptr), 3 303 2 mbz bit (18) unaligned, /* to tell it from a definition */ 3 304 2 n_names fixed bin (18) unsigned unaligned, 3 305 /* n in table */ 3 306 2 table (dup_table_n_names refer (duplicate_table.n_names)) aligned, 3 307 3 def_relp fixed bin (18) unsigned unaligned, 3 308 3 block_hdr_relp fixed bin (18) unsigned unaligned; 3 309 3 310 declare dup_table_n_names fixed bin; 3 311 3 312 /* The msf_map is found in the definition section of an */ 3 313 /* object MSF component. It is used by the linker to */ 3 314 /* determine whether a segment is a component of an object */ 3 315 /* MSF or a standard single-segment object. */ 3 316 3 317 dcl msf_map_ptr ptr; 3 318 dcl 01 msf_map aligned based (msf_map_ptr), 3 319 02 version char (8), 3 320 02 component_count fixed bin (15) unsigned, 3 321 02 my_component fixed bin (15) unsigned; 3 322 3 323 dcl msf_map_version_1 char (8) static options (constant) 3 324 init ("msfmp1.0"); 3 325 3 326 declare acc_string_ptr pointer; 3 327 declare 1 acc_string aligned based (acc_string_ptr), 3 328 2 count fixed bin (9) unsigned unaligned, 3 329 2 string character (max (3, acc_string_length) refer (acc_string.count)) unaligned, 3 330 2 mbz bit (0) aligned; /* this causes the statement */ 3 331 /* unspec (acc_string) = ""b to zero out */ 3 332 /* the last word, if the string is not of length 0mod4 */ 3 333 3 334 declare acc_string_length fixed bin (21); 3 335 3 336 3 337 /* end include file definitions_dcls.incl.pl1 */ 710 4 1 /**** START OF: le_data.incl.pl1 * * * * * */ 4 2 4 3 /****^ HISTORY COMMENTS: 4 4* 1) change(86-08-12,Elhard), approve(86-08-12,MCR7505), 4 5* audit(86-12-10,DGHowe), install(86-12-10,MR12.0-1241): 4 6* Originally written to define the structures used internally by le_. 4 7* END HISTORY COMMENTS */ 4 8 4 9 /*** ****************************************************************/ 4 10 /*** */ 4 11 /*** Name: le_data */ 4 12 /*** Function: This include file defines the data structures */ 4 13 /*** used internally by the linkage_editor subroutine. */ 4 14 /*** */ 4 15 /*** ****************************************************************/ 4 16 4 17 /* error severity constants */ 4 18 4 19 dcl LE_WARNING fixed bin static options (constant) init (1); 4 20 dcl LE_ERROR fixed bin static options (constant) init (2); 4 21 dcl LE_FATAL_ERROR fixed bin static options (constant) init (3); 4 22 dcl LE_ABORT_ERROR fixed bin static options (constant) init (4); 4 23 4 24 /* section identifier constants */ 4 25 4 26 dcl Text fixed bin (3) static options (constant) 4 27 init (0); 4 28 dcl Linkage fixed bin (3) static options (constant) 4 29 init (1); 4 30 dcl Symbol fixed bin (3) static options (constant) 4 31 init (2); 4 32 dcl Definition fixed bin (3) static options (constant) 4 33 init (3); 4 34 dcl Static fixed bin (3) static options (constant) 4 35 init (4); 4 36 dcl System fixed bin (3) static options (constant) 4 37 init (5); 4 38 dcl Heap fixed bin (3) static options (constant) 4 39 init (6); 4 40 4 41 dcl section_nm (0:6) char (16) static options (constant) 4 42 init ("text", "linkage", "symbol", "definition", 4 43 "static", "system", "heap"); 4 44 4 45 /* link type constants */ 4 46 4 47 dcl Self_Base fixed bin (3) static options (constant) 4 48 init (1); 4 49 dcl Refname_Base fixed bin (3) static options (constant) 4 50 init (3); 4 51 dcl Refname_Offsetname fixed bin (3) static options (constant) 4 52 init (4); 4 53 dcl Self_Offsetname fixed bin (3) static options (constant) 4 54 init (5); 4 55 4 56 /* backpatch type constants */ 4 57 4 58 dcl Patch_Link fixed bin static options (constant) init (1); 4 59 dcl Patch_Init fixed bin static options (constant) init (2); 4 60 dcl Patch_Symbol_Ref fixed bin static options (constant) init (3); 4 61 dcl Patch_Self_Init fixed bin static options (constant) init (4); 4 62 4 63 /*** ****************************************************************/ 4 64 /*** */ 4 65 /*** Name: le_components */ 4 66 /*** Function: the component table is used to keep information */ 4 67 /*** about the input components being used and their */ 4 68 /*** disposition in output components. */ 4 69 /*** */ 4 70 /*** ****************************************************************/ 4 71 4 72 dcl 01 le_components aligned based, 4 73 02 header aligned, 4 74 03 flags aligned, 4 75 04 separate_static bit (1) unaligned, 4 76 04 perprocess_static bit (1) unaligned, 4 77 04 mbz bit (34) unaligned, 4 78 03 n_components fixed bin, 4 79 02 comp (0 refer (le_components.n_components)) 4 80 like le_comp; 4 81 4 82 /*** ****************************************************************/ 4 83 /*** */ 4 84 /*** Name: le_comp */ 4 85 /*** Function: this is a single component table entry. */ 4 86 /*** */ 4 87 /*** ****************************************************************/ 4 88 4 89 dcl 01 le_comp aligned based, 4 90 02 segp ptr, 4 91 02 bc fixed bin (24), 4 92 02 uid bit (36) aligned, 4 93 02 dtcm fixed bin (71), 4 94 02 name char (32) varying, 4 95 02 path char (194) varying, 4 96 02 compiler char (8), 4 97 02 target fixed bin, 4 98 02 flags aligned, 4 99 03 library bit (1) unaligned, 4 100 03 include bit (1) unaligned, 4 101 03 delete_table bit (1) unaligned, 4 102 03 separate_static bit (1) unaligned, 4 103 03 io_table bit (1) unaligned, 4 104 03 unique_path bit (1) unaligned, 4 105 03 mbz bit (30) unaligned, 4 106 02 tables aligned, 4 107 03 lesp ptr, 4 108 03 ledp ptr, 4 109 03 lelp ptr, 4 110 02 orig aligned, 4 111 03 textp ptr, 4 112 03 defnp ptr, 4 113 03 linkp ptr, 4 114 03 statp ptr, 4 115 03 symbp ptr, 4 116 03 rel_textp ptr, 4 117 03 rel_symbp ptr, 4 118 03 rel_linkp ptr, 4 119 03 textl fixed bin (18) unsigned unaligned, 4 120 03 defnl fixed bin (18) unsigned unaligned, 4 121 03 linkl fixed bin (18) unsigned unaligned, 4 122 03 statl fixed bin (18) unsigned unaligned, 4 123 03 symbl fixed bin (18) unsigned unaligned, 4 124 03 symbl_no_rel fixed bin (18) unsigned unaligned, 4 125 03 symbl_no_table fixed bin (18) unsigned unaligned, 4 126 03 n_symb_blocks fixed bin (18) unsigned unaligned, 4 127 03 text_boundary fixed bin (9) unsigned unaligned, 4 128 03 static_boundary fixed bin (9) unsigned unaligned, 4 129 03 next_comp fixed bin (18) unsigned unaligned, 4 130 02 new aligned, 4 131 03 rel_text fixed bin (18) unsigned unaligned, 4 132 03 rel_symb fixed bin (18) unsigned unaligned, 4 133 03 rel_stat fixed bin (18) unsigned unaligned, 4 134 03 text_pad fixed bin (18) unsigned unaligned, 4 135 03 static_pad fixed bin (18) unsigned unaligned, 4 136 03 symbol_pad fixed bin (18) unsigned unaligned; 4 137 4 138 /*** ****************************************************************/ 4 139 /*** */ 4 140 /*** Name: le_segnames */ 4 141 /*** Function: the segname table is used for two purposes: */ 4 142 /*** - to determine the target components of links */ 4 143 /*** being resolved internally. */ 4 144 /*** - to determine the segname definitions to be */ 4 145 /*** emited for definitions being retained. */ 4 146 /*** */ 4 147 /*** ****************************************************************/ 4 148 4 149 dcl 01 le_segnames aligned based, 4 150 02 header aligned, 4 151 03 n_segnames fixed bin, 4 152 02 segname (segname_count refer (le_segnames.n_segnames)), 4 153 03 str char (32) varying, 4 154 03 relp fixed bin (18) unsigned unaligned, 4 155 03 pad bit (18) unaligned; 4 156 dcl segname_count fixed bin automatic; 4 157 4 158 /*** ****************************************************************/ 4 159 /*** */ 4 160 /*** Name: le_definitions */ 4 161 /*** Function: the definition table contains the definitions */ 4 162 /*** from the input components and is used to resolve */ 4 163 /*** link targets, and regenerate definition entries */ 4 164 /*** */ 4 165 /*** ****************************************************************/ 4 166 4 167 dcl 01 le_definitions aligned based, 4 168 02 header aligned, 4 169 03 n_defs fixed bin, 4 170 03 pad bit (36), 4 171 02 def (def_count refer (le_definitions.n_defs)) 4 172 like le_definition; 4 173 dcl def_count fixed bin automatic; 4 174 4 175 dcl 01 le_definition aligned based, 4 176 02 str char (256) varying, 4 177 02 type fixed bin (18) unsigned unaligned, 4 178 02 relp fixed bin (18) unsigned unaligned, 4 179 02 offset fixed bin (18) unsigned unaligned, 4 180 02 new_offset fixed bin (18) unsigned unaligned, 4 181 02 flags aligned, 4 182 03 force_retain bit (1) unaligned, 4 183 03 entrypoint bit (1) unaligned, 4 184 03 ignore bit (1) unaligned, 4 185 03 referenced bit (1) unaligned, 4 186 03 no_link bit (1) unaligned, 4 187 03 retain bit (1) unaligned, 4 188 03 delete bit (1) unaligned, 4 189 03 mbz bit (29) unaligned; 4 190 4 191 /*** ****************************************************************/ 4 192 /*** */ 4 193 /*** Name: le_options */ 4 194 /*** Function: the option table contains definition retention */ 4 195 /*** information. The input retentions options are */ 4 196 /*** ordered such that a linear search of the option */ 4 197 /*** table for the first matching starname will give */ 4 198 /*** the correct retention state. */ 4 199 /*** */ 4 200 /*** ****************************************************************/ 4 201 4 202 dcl 01 le_options aligned based, 4 203 02 header aligned, 4 204 03 n_opts fixed bin, 4 205 02 opt (0 refer (le_options.n_opts)), 4 206 03 type fixed bin (8) unaligned, 4 207 03 used bit (1) unaligned, 4 208 03 inhibit_error bit (1) unaligned, 4 209 03 class fixed bin (6) unaligned, 4 210 03 order fixed bin (17) unaligned, 4 211 03 segname char (32) unaligned, 4 212 03 ep_name char (256) unaligned; 4 213 4 214 /*** ****************************************************************/ 4 215 /*** */ 4 216 /*** Name: le_links */ 4 217 /*** Function: the link table contains information on all of the */ 4 218 /*** links in the input components. It is used to */ 4 219 /*** determine link targets, which library components */ 4 220 /*** will be included, and what init_info will be */ 4 221 /*** used, and where it will be placed. */ 4 222 /*** */ 4 223 /*** ****************************************************************/ 4 224 4 225 dcl 01 le_links aligned based, 4 226 02 header aligned, 4 227 03 offset_adjustment fixed bin (18), 4 228 03 n_links fixed bin, 4 229 02 link (link_count refer (le_links.n_links)) 4 230 like le_link; 4 231 dcl link_count fixed bin automatic; 4 232 4 233 dcl 01 le_link aligned based, 4 234 02 flags unaligned, 4 235 03 used bit (1), 4 236 03 mbx bit (35), 4 237 02 type fixed bin (6) unsigned unaligned, 4 238 02 class fixed bin (6) unsigned unaligned, 4 239 02 mod bit (6) unaligned, 4 240 02 exp fixed bin (17) unaligned, 4 241 02 target fixed bin (18) unsigned unaligned, 4 242 02 defx fixed bin (18) unsigned unaligned, 4 243 02 relp fixed bin (18) unsigned unaligned, 4 244 02 target_comp fixed bin (18) unsigned unaligned, 4 245 02 target_link fixed bin (18) unsigned unaligned, 4 246 02 extension fixed bin (18) unsigned unaligned, 4 247 02 initp ptr unaligned, 4 248 02 segnamep ptr unaligned, 4 249 02 offsetp ptr unaligned; 4 250 4 251 /*** ****************************************************************/ 4 252 /*** */ 4 253 /*** Name: le_binaries */ 4 254 /*** Function: This table contains information about the output */ 4 255 /*** binaries. It is primarily used for creation and */ 4 256 /*** backpatching of MSF output. */ 4 257 /*** */ 4 258 /*** ****************************************************************/ 4 259 4 260 dcl 01 le_binaries aligned based, 4 261 02 header aligned, 4 262 03 n_binaries fixed bin, 4 263 03 pad bit (36), 4 264 02 binary (0:0 refer (le_binaries.n_binaries)), 4 265 03 segp ptr, 4 266 03 bc fixed bin (24), 4 267 03 uid bit (36), 4 268 03 aclc fixed bin, 4 269 03 aclp ptr, 4 270 03 textp ptr, 4 271 03 defnp ptr, 4 272 03 linkp ptr, 4 273 03 symbp ptr, 4 274 03 statp ptr, 4 275 03 textl fixed bin (18) unsigned unaligned, 4 276 03 defnl fixed bin (18) unsigned unaligned, 4 277 03 linkl fixed bin (18) unsigned unaligned, 4 278 03 symbl fixed bin (18) unsigned unaligned, 4 279 03 statl fixed bin (18) unsigned unaligned, 4 280 03 mbz2 bit (18) unaligned; 4 281 4 282 /*** ****************************************************************/ 4 283 /*** */ 4 284 /*** Name: le_patches */ 4 285 /*** Function: This table contains the list of backpatches to be */ 4 286 /*** performed when the rest of the object creation is */ 4 287 /*** complete. Since le_backpatch_ is the only routine */ 4 288 /*** concerned with this, it is maintained completely */ 4 289 /*** internal to le_backpatch_. */ 4 290 /*** */ 4 291 /*** ****************************************************************/ 4 292 4 293 dcl 01 le_patches aligned based, 4 294 02 header aligned, 4 295 03 n_patches fixed bin, 4 296 02 patch (0 refer (le_patches.n_patches)) like le_patch; 4 297 4 298 dcl 01 le_patch aligned based, 4 299 02 type fixed bin, 4 300 02 comp fixed bin, 4 301 02 relp fixed bin (18) unsigned, 4 302 02 target fixed bin, 4 303 02 index fixed bin; 4 304 4 305 /**** END OF: le_data.incl.pl1 * * * * * */ 711 5 1 /* BEGIN INCLUDE FILE object_link_dcls.incl.pl1 BIM 1981 from linkdcl */ 5 2 5 3 5 4 /****^ HISTORY COMMENTS: 5 5* 1) change(86-05-02,Elhard), approve(86-05-02,MCR7391), 5 6* audit(86-11-18,Schroth), install(86-11-20,MR12.0-1222): 5 7* Modified to add partial_link structure for an object MSF partially snapped 5 8* link. 5 9* 2) change(86-11-13,DGHowe), approve(86-11-13,MCR7391), audit(86-11-13,Zwick), 5 10* install(86-11-20,MR12.0-1222): 5 11* Added a declaration of FAULT_TAG_1, FAULT_TAG_2 and FAULT_TAG_3. 5 12* END HISTORY COMMENTS */ 5 13 5 14 5 15 /* format: style3 */ 5 16 /* everything you ever wanted in a linkage section */ 5 17 5 18 /* 5 19* Last Modified (Date and Reason): 5 20* 15 Nov 1971 by C Garman 5 21* 6/75 by M.Weaver to add virgin_linkage_header declaration 5 22* 6/75 by S.Webber to comment existing structures better 5 23* 9/77 by M. Weaver to add run_depth to link 5 24* 7/81 by B. Margulies for firstref structure, unsigned fixed bins. 5 25* 3/83 by M. Weaver to add flags overlaying def_ptr 5 26**/ 5 27 5 28 declare 1 object_link based aligned, /* link pair in linkage section */ 5 29 2 header_relp fixed bin (17) unal, /* rel pointer to beginning of linkage, always negative */ 5 30 2 ringno fixed bin (3) unsigned unal, /* MBZ */ 5 31 2 mbz bit (6) unal, 5 32 2 run_depth fixed bin (2) unal, /* run unit depth, filled when link is snapped */ 5 33 2 tag bit (6) unal, /* fault tag. 46(8) if not snapped, 43(8) if snapped */ 5 34 2 expression_relp fixed bin (18) unsigned unal, /* pointer (rel to defs) of expression word */ 5 35 2 mbz2 bit (12) unal, 5 36 2 modifier bit (6) unal; /* modifier to be left in snapped link */ 5 37 5 38 declare 1 partial_link based aligned, /* partially snapped link */ 5 39 2 type fixed bin (3) unsigned unal, /* target section of link */ 5 40 2 component fixed bin (15) unsigned unal, /* target component index */ 5 41 2 mbz1 bit (12) unal, 5 42 2 tag bit (6) unal, /* fault tag 3 47(8), ITS 43(8) if snapped */ 5 43 5 44 2 offset fixed bin (18) unsigned unal, /* word offset of link */ 5 45 2 mbz2 bit (3) unal, 5 46 2 bit_offset fixed bin (6) unsigned unal, /* bit offset (in practice, always 0) */ 5 47 2 mbz3 bit (3) unal, 5 48 2 modifier bit (6) unal; /* modifier to be left in snapped link */ 5 49 5 50 declare 1 linkage_header based aligned, /* linkage block header */ 5 51 2 def_ptr ptr, /* pointer to definition section */ 5 52 2 symbol_ptr ptr unal, /* pointer to symbol section in object segment */ 5 53 2 original_linkage_ptr 5 54 ptr unal, /* pointer to linkage section in object segment */ 5 55 2 unused bit (72), 5 56 2 stats, 5 57 3 begin_links fixed bin (18) unsigned unal, /* offset (rel to this section) of first link */ 5 58 3 block_length fixed bin (18) unsigned unal, /* number of words in this linkage section */ 5 59 3 segment_number 5 60 fixed bin (18) unsigned unal, /* text segment number associated with this section */ 5 61 3 static_length fixed bin (18) unsigned unal; /* number of words of static for this segment */ 5 62 5 63 declare 1 linkage_header_flags 5 64 aligned based, /* overlay of def_ptr for flags */ 5 65 2 pad1 bit (28) unaligned, /* flags are in first word */ 5 66 2 static_vlas bit (1) unaligned, /* static section "owns" some LA/VLA segments */ 5 67 2 perprocess_static 5 68 bit (1) unaligned, /* 1 copy of static section is shared among all tasks/run units */ 5 69 2 pad2 bit (6) unaligned; 5 70 5 71 declare 1 virgin_linkage_header 5 72 aligned based, /* template for linkage header in object segment */ 5 73 2 pad bit (30) unaligned, /* is filled in by linker */ 5 74 2 defs_in_link bit (6) unaligned, /* =o20 if defs in linkage (nonstandard) */ 5 75 2 def_offset fixed bin (18) unsigned unaligned, 5 76 /* offset of definition section */ 5 77 2 first_ref_relp fixed bin (18) unsigned unaligned, 5 78 /* offset of trap-at-first-reference offset array */ 5 79 2 filled_in_later bit (144), 5 80 2 link_begin fixed bin (18) unsigned unaligned, 5 81 /* offset of first link */ 5 82 2 linkage_section_lng 5 83 fixed bin (18) unsigned unaligned, 5 84 /* length of linkage section */ 5 85 2 segno_pad fixed bin (18) unsigned unaligned, 5 86 /* will be segment number of copied linkage */ 5 87 2 static_length fixed bin (18) unsigned unaligned; 5 88 /* length of static section */ 5 89 5 90 declare 1 fr_traps based aligned, /* First Reference Trap Procedures */ 5 91 2 decl_vers fixed bin, /* version of this struc, value=1, ABS reloc */ 5 92 2 n_traps fixed bin, /* number of traps on this segment, ABS */ 5 93 2 trap_array (n_fr_traps refer (fr_traps.n_traps)) aligned, 5 94 3 call_relp fixed bin (18) unsigned unaligned, 5 95 /* LINK18, offset of link defining procedure to call */ 5 96 3 info_relp fixed bin (18) unsigned unaligned; 5 97 /* LINK18, offser of link defining argument list for trap proc */ 5 98 5 99 declare FR_TRAPS_VERSION_1 init (1) fixed bin internal static options (constant); 5 100 declare FAULT_TAG_1 bit(6) unaligned init ("40"b3) static options (constant); 5 101 declare FAULT_TAG_2 bit(6) unaligned init ("46"b3) static options (constant); 5 102 declare FAULT_TAG_3 bit(6) unaligned init ("47"b3) static options (constant); 5 103 5 104 /* END INCLUDE FILE object_link_dcls.incl.pl1 */ 712 713 714 end le_backpatch_; 715 SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/17/00 1938.2 le_backpatch_.pl1 >udd>sm>ds>w>ml>le_backpatch_.pl1 708 1 04/11/85 1552.6 access_mode_values.incl.pl1 >ldd>incl>access_mode_values.incl.pl1 709 2 10/14/83 1706.6 acl_structures.incl.pl1 >ldd>incl>acl_structures.incl.pl1 710 3 11/24/86 1326.9 definition_dcls.incl.pl1 >ldd>incl>definition_dcls.incl.pl1 711 4 12/10/86 1416.8 le_data.incl.pl1 >ldd>incl>le_data.incl.pl1 712 5 11/24/86 1326.9 object_link_dcls.incl.pl1 >ldd>incl>object_link_dcls.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. LE_ABORT_ERROR 000013 constant fixed bin(17,0) initial dcl 4-22 set ref 223* 295* 550* LE_WARNING 000015 constant fixed bin(17,0) initial dcl 4-19 set ref 280* 354* Patch_Init constant fixed bin(17,0) initial dcl 4-59 ref 212 Patch_Link constant fixed bin(17,0) initial dcl 4-58 ref 218 Patch_Self_Init constant fixed bin(17,0) initial dcl 4-61 ref 215 Patch_Symbol_Ref constant fixed bin(17,0) initial dcl 4-60 ref 221 REW_ACCESS constant bit(3) initial packed unaligned dcl 1-11 ref 288 access_name 000126 automatic char(32) level 2 packed packed unaligned dcl 266 set ref 287* acl_entry 000126 automatic structure level 1 dcl 266 set ref 294 294 acl_list based structure array level 1 unaligned dcl 330 ref 352 aclc 6 based fixed bin(17,0) array level 3 dcl 124 set ref 192* 202* 231* aclp parameter pointer dcl 325 in procedure "restore_acl" set ref 306 342 350* 352 aclp 10 based pointer array level 3 in structure "leb" dcl 124 in procedure "le_backpatch_" set ref 185* 192* 202* 231* aclp parameter pointer dcl 261 in procedure "set_acl" set ref 242 277* 282* addr builtin function dcl 145 ref 208 294 294 542 558 addrel builtin function dcl 146 ref 434 435 436 437 535 536 537 538 545 631 694 binary 2 based structure array level 2 in structure "le_binaries" dcl 4-260 in procedure "le_backpatch_" binary 2 based structure array level 2 in structure "leb" dcl 492 in procedure "patch_self_init" binary 2 based structure array level 2 in structure "leb" dcl 683 in procedure "patch_symbol_ref" binary 2 based structure array level 2 in structure "leb" dcl 397 in procedure "patch_init" binary 2 based structure array level 2 in structure "leb" dcl 598 in procedure "patch_link" binary 2 based structure array level 2 in structure "leb" dcl 124 in procedure "le_backpatch_" bx 000100 automatic fixed bin(17,0) dcl 135 set ref 191* 192 192 192* 197* 202 202 202* 230* 231 231 231* cleanup 000106 stack reference condition dcl 141 ref 189 comp 1 based fixed bin(17,0) level 2 in structure "patch" dcl 131 in procedure "le_backpatch_" set ref 212* 215* 218* 221* comp parameter fixed bin(17,0) dcl 675 in procedure "patch_symbol_ref" ref 655 694 698 comp parameter fixed bin(17,0) dcl 591 in procedure "patch_link" ref 569 625 631 comp 2 based structure array level 2 in structure "lec" dcl 602 in procedure "patch_link" comp 2 based fixed bin(17,0) array level 3 in structure "lep" dcl 128 in procedure "le_backpatch_" set ref 156* comp 2 based structure array level 2 in structure "lec" dcl 401 in procedure "patch_init" comp parameter fixed bin(17,0) dcl 94 in procedure "le_backpatch_" ref 17 156 comp parameter fixed bin(17,0) dcl 388 in procedure "patch_init" ref 365 428 434 435 436 437 comp parameter fixed bin(17,0) dcl 480 in procedure "patch_self_init" ref 459 529 535 536 537 538 count parameter fixed bin(17,0) dcl 262 in procedure "set_acl" set ref 242 277* count parameter fixed bin(17,0) dcl 326 in procedure "restore_acl" set ref 306 350* 352 currentsize builtin function dcl 147 ref 545 datum 2 based bit level 2 dcl 500 set ref 558 definition_flags based structure level 1 packed packed unaligned dcl 3-42 defnp 14 based pointer array level 3 in structure "leb" dcl 492 in procedure "patch_self_init" ref 536 537 538 defnp 14 based pointer array level 3 in structure "leb" dcl 397 in procedure "patch_init" ref 435 436 437 delete_acl_entry based structure level 1 dcl 2-63 directory_acl_entry based structure level 1 dcl 2-54 dname 000100 automatic char(168) packed unaligned dcl 335 in procedure "restore_acl" set ref 349* 350* 354* 354* dname 000141 automatic char(168) packed unaligned dcl 267 in procedure "set_acl" set ref 276* 277* 280* 280* 294* 295* 295* ec 000213 automatic fixed bin(35,0) dcl 268 in procedure "set_acl" set ref 276* 277* 278 280* 294* 295 295* ec 000152 automatic fixed bin(35,0) dcl 336 in procedure "restore_acl" set ref 349* 350* 354 354* ename 000214 automatic char(32) packed unaligned dcl 269 in procedure "set_acl" set ref 276* 277* 280* 280* 294* 295* 295* ename 000153 automatic char(32) packed unaligned dcl 337 in procedure "restore_acl" set ref 349* 350* 354* 354* exp based structure level 1 dcl 395 in procedure "patch_init" exp based structure level 1 dcl 486 in procedure "patch_self_init" exp_word based structure level 1 dcl 3-129 expp 000256 automatic pointer dcl 511 in procedure "patch_self_init" set ref 536* 537 expp 000234 automatic pointer dcl 412 in procedure "patch_init" set ref 435* 436 expression_relp 1 based fixed bin(18,0) level 2 in structure "lk" packed packed unsigned unaligned dcl 499 in procedure "patch_self_init" ref 536 expression_relp 1 based fixed bin(18,0) level 2 in structure "lk" packed packed unsigned unaligned dcl 407 in procedure "patch_init" ref 435 extended_mode 11 000126 automatic bit(36) level 2 dcl 266 set ref 289* fixed builtin function dcl 148 ref 698 flags based structure level 3 in structure "lec" dcl 602 in procedure "patch_link" flags based structure level 3 in structure "lec" dcl 496 in procedure "patch_self_init" flags based structure level 3 in structure "lec" dcl 401 in procedure "patch_init" general_acl_entry based structure level 1 unaligned dcl 2-12 general_delete_acl_entry based structure level 1 dcl 2-35 general_extended_acl_entry based structure level 1 dcl 2-23 get_group_id_ 000010 constant entry external dcl 103 ref 287 get_system_free_area_ 000012 constant entry external dcl 104 ref 272 345 hcs_$add_acl_entries 000014 constant entry external dcl 105 ref 294 hcs_$fs_get_path_name 000016 constant entry external dcl 107 ref 276 349 hcs_$list_acl 000020 constant entry external dcl 109 ref 277 hcs_$replace_acl 000022 constant entry external dcl 111 ref 350 header based structure level 2 in structure "link_init_list_template" dcl 3-219 in procedure "le_backpatch_" header based structure level 2 in structure "le_patches" dcl 4-293 in procedure "le_backpatch_" header based structure level 2 in structure "leb" dcl 124 in procedure "le_backpatch_" header based structure level 2 in structure "lep" dcl 128 in procedure "le_backpatch_" header based structure level 2 in structure "lec" dcl 496 in procedure "patch_self_init" header based structure level 2 in structure "lec" dcl 602 in procedure "patch_link" header based structure level 2 in structure "le_components" dcl 4-72 in procedure "le_backpatch_" header based structure level 2 in structure "le_binaries" dcl 4-260 in procedure "le_backpatch_" header based structure level 2 in structure "lec" dcl 401 in procedure "patch_init" header based structure level 2 in structure "le_links" dcl 4-225 in procedure "le_backpatch_" i 000260 automatic fixed bin(17,0) dcl 512 set ref 544* index 5 based fixed bin(17,0) array level 3 in structure "lep" dcl 128 in procedure "le_backpatch_" set ref 159* index parameter fixed bin(17,0) dcl 594 in procedure "patch_link" ref 569 640 643 index parameter fixed bin(17,0) dcl 97 in procedure "le_backpatch_" ref 17 159 index parameter fixed bin(17,0) dcl 391 in procedure "patch_init" ref 365 444 447 index 4 based fixed bin(17,0) level 2 in structure "patch" dcl 131 in procedure "le_backpatch_" set ref 212* 215* 218* index parameter fixed bin(17,0) dcl 482 in procedure "patch_self_init" ref 459 544 init based structure level 1 dcl 487 in procedure "patch_self_init" init based structure level 1 dcl 396 in procedure "patch_init" init_type 1(03) based fixed bin(3,0) level 2 packed packed unsigned unaligned dcl 500 ref 550 initp 000262 automatic pointer dcl 513 in procedure "patch_self_init" set ref 538* 542 initp 000236 automatic pointer dcl 413 in procedure "patch_init" set ref 437* 444 447 449 449 449 le_binaries based structure level 1 dcl 4-260 le_comp based structure level 1 dcl 4-89 le_components based structure level 1 dcl 4-72 le_data_$patch_ptr 000030 external static pointer dcl 118 ref 154 154 155 156 157 158 159 182 206 208 le_definition based structure level 1 dcl 4-175 le_error_ 000024 constant entry external dcl 113 ref 223 280 295 354 550 le_et_$implementation_error 000032 external static fixed bin(35,0) dcl 119 set ref 223* 550* le_link based structure level 1 dcl 4-233 le_links based structure level 1 dcl 4-225 le_patch based structure level 1 dcl 4-298 le_patches based structure level 1 dcl 4-293 leb based structure level 1 dcl 124 in procedure "le_backpatch_" leb based structure level 1 dcl 492 in procedure "patch_self_init" leb based structure level 1 dcl 598 in procedure "patch_link" leb based structure level 1 dcl 683 in procedure "patch_symbol_ref" leb based structure level 1 dcl 397 in procedure "patch_init" lebp parameter pointer dcl 99 in procedure "le_backpatch_" set ref 168 185 191 192 192 192 197 202 202 202 212* 215* 218* 221* 230 231 231 231 lebp parameter pointer dcl 387 in procedure "patch_init" ref 365 428 434 435 436 437 447 lebp parameter pointer dcl 590 in procedure "patch_link" ref 569 625 631 643 lebp parameter pointer dcl 479 in procedure "patch_self_init" ref 459 529 535 536 537 538 lebp parameter pointer dcl 674 in procedure "patch_symbol_ref" ref 655 694 698 lec based structure level 1 dcl 602 in procedure "patch_link" lec based structure level 1 dcl 496 in procedure "patch_self_init" lec based structure level 1 dcl 401 in procedure "patch_init" lecp parameter pointer dcl 478 in procedure "patch_self_init" ref 459 526 lecp parameter pointer dcl 589 in procedure "patch_link" ref 569 622 635 640 643 lecp parameter pointer dcl 386 in procedure "patch_init" ref 365 425 439 444 447 lecp parameter pointer dcl 98 in procedure "le_backpatch_" set ref 168 212* 215* 218* lel based structure level 1 dcl 404 in procedure "patch_init" lel based structure level 1 dcl 605 in procedure "patch_link" lelp 114 based pointer array level 4 in structure "lec" dcl 602 in procedure "patch_link" ref 635 lelp 114 based pointer array level 4 in structure "lec" dcl 401 in procedure "patch_init" ref 439 lelp 000240 automatic pointer dcl 414 in procedure "patch_init" set ref 439* 444 447 lelp 000306 automatic pointer dcl 612 in procedure "patch_link" set ref 635* 640 643 lep based structure level 1 dcl 128 link 2 based structure array level 2 in structure "lel" dcl 404 in procedure "patch_init" link 2 based structure array level 2 in structure "lel" dcl 605 in procedure "patch_link" link_init based structure level 1 dcl 3-205 link_init_deferred based structure level 1 dcl 3-270 link_init_list_template based structure level 1 dcl 3-219 link_relp 2(18) based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 396 set ref 444* 447* 449* 449 449 linkp 16 based pointer array level 3 in structure "leb" dcl 397 in procedure "patch_init" ref 434 linkp 16 based pointer array level 3 in structure "leb" dcl 492 in procedure "patch_self_init" ref 535 linkp 16 based pointer array level 3 in structure "leb" dcl 598 in procedure "patch_link" ref 631 lk based structure level 1 dcl 499 in procedure "patch_self_init" lk based structure level 1 dcl 407 in procedure "patch_init" lkp 000242 automatic pointer dcl 415 in procedure "patch_init" set ref 434* 435 lkp 000264 automatic pointer dcl 514 in procedure "patch_self_init" set ref 535* 536 lte based structure level 1 dcl 500 set ref 545 ltep 000266 automatic pointer dcl 515 set ref 542* 545* 545 545 550 558 mod builtin function dcl 618 in procedure "patch_link" ref 626 645 mod builtin function dcl 421 in procedure "patch_init" ref 429 449 mod builtin function dcl 522 in procedure "patch_self_init" ref 530 mode 10 000126 automatic bit(36) level 2 dcl 266 set ref 288* n_binaries based fixed bin(17,0) level 3 dcl 124 ref 185 191 197 230 n_bits based fixed bin(35,0) level 2 dcl 500 ref 545 558 n_patches based fixed bin(17,0) level 3 dcl 128 set ref 154 154* 182 206 null builtin function dcl 149 ref 185 277 277 282 342 object_link based structure level 1 dcl 5-28 offset 000244 automatic fixed bin(18,0) unsigned dcl 416 in procedure "patch_init" set ref 425* 428* 429* 429 429 434 offset 000270 automatic fixed bin(18,0) unsigned dcl 516 in procedure "patch_self_init" set ref 526* 529* 530* 530 530 535 550* 559 offset 000310 automatic fixed bin(18,0) unsigned dcl 613 in procedure "patch_link" set ref 622* 625* 626* 626 626 631 offset 1 based fixed bin(18,0) level 2 in structure "plk" packed packed unsigned unaligned dcl 608 in procedure "patch_link" set ref 640* 643* 645* 645 645 partial_link based structure level 1 dcl 5-38 patch based structure level 1 dcl 131 in procedure "le_backpatch_" patch 1 based structure array level 2 in structure "lep" dcl 128 in procedure "le_backpatch_" set ref 208 patchp 000102 automatic pointer dcl 136 set ref 208* 212 212 212 212 212 215 215 215 215 218 218 218 218 218 221 221 221 221 223 pathname_ 000026 constant entry external dcl 114 ref 280 280 295 295 354 354 pit based structure level 1 dcl 506 pitp 000272 automatic pointer dcl 517 set ref 558* 559 plk based structure level 1 dcl 608 plkp 000312 automatic pointer dcl 614 set ref 631* 640 643 645 645 645 pointer_init_template based structure level 1 packed packed unaligned dcl 3-253 px 000104 automatic fixed bin(17,0) dcl 137 set ref 154* 155 156 157 158 159 206* 208* ref based structure level 1 dcl 681 refp 000322 automatic pointer dcl 690 set ref 694* 698 698 rel builtin function dcl 150 ref 698 relinfo parameter fixed bin(17,0) dcl 677 ref 655 698 698 relp 5 based fixed bin(18,0) array level 3 in structure "lel" packed packed unsigned unaligned dcl 605 in procedure "patch_link" ref 640 643 relp parameter fixed bin(18,0) unsigned dcl 592 in procedure "patch_link" ref 569 622 625 relp 3 based fixed bin(18,0) array level 3 in structure "lep" unsigned dcl 128 in procedure "le_backpatch_" set ref 157* relp parameter fixed bin(18,0) unsigned dcl 389 in procedure "patch_init" ref 365 425 428 relp 5 based fixed bin(18,0) array level 3 in structure "lel" packed packed unsigned unaligned dcl 404 in procedure "patch_init" ref 444 447 relp parameter fixed bin(18,0) unsigned dcl 676 in procedure "patch_symbol_ref" ref 655 694 relp parameter fixed bin(18,0) unsigned dcl 95 in procedure "le_backpatch_" ref 17 157 relp 2 based fixed bin(18,0) level 2 in structure "patch" unsigned dcl 131 in procedure "le_backpatch_" set ref 212* 215* 218* 221* relp parameter fixed bin(18,0) unsigned dcl 481 in procedure "patch_self_init" ref 459 526 529 section_offset 0(18) based fixed bin(18,0) level 2 packed packed unsigned unaligned dcl 506 set ref 559* segment_acl_entry based structure level 1 dcl 2-45 segp parameter pointer dcl 324 in procedure "restore_acl" set ref 306 349* segp parameter pointer dcl 260 in procedure "set_acl" set ref 242 276* segp 2 based pointer array level 3 in structure "leb" dcl 124 in procedure "le_backpatch_" set ref 192* 202* 231* separate_static based bit(1) level 4 in structure "lec" packed packed unaligned dcl 496 in procedure "patch_self_init" ref 526 separate_static based bit(1) level 4 in structure "lec" packed packed unaligned dcl 401 in procedure "patch_init" ref 425 444 separate_static based bit(1) level 4 in structure "lec" packed packed unaligned dcl 602 in procedure "patch_link" ref 622 640 side based fixed bin(18,0) array level 2 packed packed unsigned unaligned dcl 681 set ref 698* 698 statl 26 based fixed bin(18,0) array level 3 in structure "leb" packed packed unsigned unaligned dcl 492 in procedure "patch_self_init" ref 529 statl 26 based fixed bin(18,0) array level 3 in structure "leb" packed packed unsigned unaligned dcl 397 in procedure "patch_init" ref 428 447 statl 26 based fixed bin(18,0) array level 3 in structure "leb" packed packed unsigned unaligned dcl 598 in procedure "patch_link" ref 625 643 status_code 12 000126 automatic fixed bin(35,0) level 2 dcl 266 set ref 290* symbp 20 based pointer array level 3 dcl 683 ref 698 sys_area based area(1024) dcl 331 ref 352 sys_areap 000224 automatic pointer dcl 270 in procedure "set_acl" set ref 272* 277* sys_areap 000164 automatic pointer dcl 338 in procedure "restore_acl" set ref 345* 352 tables 110 based structure array level 3 in structure "lec" dcl 401 in procedure "patch_init" tables 110 based structure array level 3 in structure "lec" dcl 602 in procedure "patch_link" target parameter fixed bin(17,0) dcl 593 in procedure "patch_link" ref 569 635 643 target parameter fixed bin(17,0) dcl 390 in procedure "patch_init" ref 365 439 447 target parameter fixed bin(17,0) dcl 96 in procedure "le_backpatch_" ref 17 158 target 105 based fixed bin(17,0) array level 3 in structure "lec" dcl 602 in procedure "patch_link" ref 643 target 4 based fixed bin(17,0) array level 3 in structure "lep" dcl 128 in procedure "le_backpatch_" set ref 158* target 3 based fixed bin(17,0) level 2 in structure "patch" dcl 131 in procedure "le_backpatch_" set ref 212* 218* 221* target 105 based fixed bin(17,0) array level 3 in structure "lec" dcl 401 in procedure "patch_init" ref 447 template 3 based fixed bin(17,0) array level 2 dcl 487 set ref 542 textp 12 based pointer array level 3 dcl 683 ref 694 trap_relp 0(18) based fixed bin(18,0) level 2 in structure "type" packed packed unsigned unaligned dcl 408 in procedure "patch_init" ref 437 trap_relp 0(18) based fixed bin(18,0) level 2 in structure "type" packed packed unsigned unaligned dcl 507 in procedure "patch_self_init" ref 538 type based structure level 1 dcl 507 in procedure "patch_self_init" type 1 based fixed bin(17,0) array level 3 in structure "lep" dcl 128 in procedure "le_backpatch_" set ref 155* type based fixed bin(17,0) level 2 in structure "patch" dcl 131 in procedure "le_backpatch_" set ref 212 215 218 221 223* type parameter fixed bin(17,0) dcl 93 in procedure "le_backpatch_" ref 17 155 type based structure level 1 dcl 408 in procedure "patch_init" type_pair based structure level 1 dcl 3-160 type_relp based fixed bin(18,0) level 2 in structure "exp" packed packed unsigned unaligned dcl 486 in procedure "patch_self_init" ref 537 type_relp based fixed bin(18,0) level 2 in structure "exp" packed packed unsigned unaligned dcl 395 in procedure "patch_init" ref 436 typep 000246 automatic pointer dcl 417 in procedure "patch_init" set ref 436* 437 typep 000274 automatic pointer dcl 518 in procedure "patch_self_init" set ref 537* 538 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACL_VERSION_1 internal static fixed bin(17,0) initial dcl 2-77 A_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 CLASS_HEAP internal static fixed bin(3,0) initial unsigned dcl 3-25 CLASS_LINKAGE internal static fixed bin(3,0) initial unsigned dcl 3-25 CLASS_NAMES internal static char(12) initial array packed unaligned dcl 3-35 CLASS_SEGNAME internal static fixed bin(3,0) initial unsigned dcl 3-25 CLASS_STATIC internal static fixed bin(3,0) initial unsigned dcl 3-25 CLASS_SYMBOL internal static fixed bin(3,0) initial unsigned dcl 3-25 CLASS_SYSTEM internal static fixed bin(3,0) initial unsigned dcl 3-25 CLASS_TEXT internal static fixed bin(3,0) initial unsigned dcl 3-25 DELETE_ACL_VERSION_1 internal static char(4) initial packed unaligned dcl 2-67 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-33 DIR_ACL_VERSION_1 internal static char(4) initial packed unaligned dcl 2-67 Definition internal static fixed bin(3,0) initial dcl 4-32 E_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 FAULT_TAG_1 internal static bit(6) initial packed unaligned dcl 5-100 FAULT_TAG_2 internal static bit(6) initial packed unaligned dcl 5-101 FAULT_TAG_3 internal static bit(6) initial packed unaligned dcl 5-102 FR_TRAPS_VERSION_1 internal static fixed bin(17,0) initial dcl 5-99 GENERAL_ACL_VERSION_1 internal static char(8) initial packed unaligned dcl 2-72 GENERAL_DELETE_ACL_VERSION_1 internal static char(8) initial packed unaligned dcl 2-72 GENERAL_EXTENDED_ACL_VERSION_1 internal static char(8) initial packed unaligned dcl 2-72 Heap internal static fixed bin(3,0) initial dcl 4-38 INIT_COPY_INFO internal static fixed bin(17,0) initial dcl 3-194 INIT_DEFERRED internal static fixed bin(17,0) initial dcl 3-194 INIT_DEFINE_AREA internal static fixed bin(17,0) initial dcl 3-194 INIT_LIST_TEMPLATE internal static fixed bin(17,0) initial dcl 3-194 INIT_NO_INIT internal static fixed bin(17,0) initial dcl 3-194 LE_ERROR internal static fixed bin(17,0) initial dcl 4-20 LE_FATAL_ERROR internal static fixed bin(17,0) initial dcl 4-21 LINK_CREATE_IF_NOT_FOUND internal static fixed bin(18,0) initial packed unsigned unaligned dcl 3-134 LINK_OBSOLETE_2 internal static fixed bin(18,0) initial packed unsigned unaligned dcl 3-134 LINK_REFNAME_BASE internal static fixed bin(18,0) initial packed unsigned unaligned dcl 3-134 LINK_REFNAME_OFFSETNAME internal static fixed bin(18,0) initial packed unsigned unaligned dcl 3-134 LINK_SELF_BASE internal static fixed bin(18,0) initial packed unsigned unaligned dcl 3-134 LINK_SELF_OFFSETNAME internal static fixed bin(18,0) initial packed unsigned unaligned dcl 3-134 LINK_TYPE_NAMES internal static varying char(32) initial array dcl 3-153 Linkage internal static fixed bin(3,0) initial dcl 4-28 M_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 N_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RW_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 R_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 Refname_Base internal static fixed bin(3,0) initial dcl 4-49 Refname_Offsetname internal static fixed bin(3,0) initial dcl 4-51 SA_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SECTION_HEAP internal static fixed bin(18,0) initial packed unsigned unaligned dcl 3-134 SECTION_LINK internal static fixed bin(18,0) initial packed unsigned unaligned dcl 3-134 SECTION_STATIC internal static fixed bin(18,0) initial packed unsigned unaligned dcl 3-134 SECTION_SYMBOL internal static fixed bin(18,0) initial packed unsigned unaligned dcl 3-134 SECTION_SYSTEM internal static fixed bin(18,0) initial packed unsigned unaligned dcl 3-134 SECTION_TEXT internal static fixed bin(18,0) initial packed unsigned unaligned dcl 3-134 SECTION_UNUSED internal static fixed bin(18,0) initial packed unsigned unaligned dcl 3-134 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-30 SEG_ACL_VERSION_1 internal static char(4) initial packed unaligned dcl 2-67 SMA_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SM_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SYMBOLIC_SECTION_NAMES internal static char(8) initial array packed unaligned dcl 3-38 S_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 Self_Base internal static fixed bin(3,0) initial dcl 4-47 Self_Offsetname internal static fixed bin(3,0) initial dcl 4-53 Static internal static fixed bin(3,0) initial dcl 4-34 Symbol internal static fixed bin(3,0) initial dcl 4-30 System internal static fixed bin(3,0) initial dcl 4-36 Text internal static fixed bin(3,0) initial dcl 4-26 W_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 acc_string based structure level 1 dcl 3-327 acc_string_length automatic fixed bin(21,0) dcl 3-334 acc_string_ptr automatic pointer dcl 3-326 acl_count automatic fixed bin(17,0) dcl 2-5 acl_ptr automatic pointer dcl 2-4 comp_ht_n_entries automatic fixed bin(17,0) dcl 3-297 comp_ht_ptr automatic pointer dcl 3-288 component_ht based structure level 1 dcl 3-289 def_count automatic fixed bin(17,0) dcl 4-173 def_header_ptr automatic pointer dcl 3-57 def_ht_n_entries automatic fixed bin(17,0) dcl 3-284 def_ht_ptr automatic pointer dcl 3-277 def_ptr automatic pointer dcl 3-71 definition based structure level 1 dcl 3-72 definition_header based structure level 1 dcl 3-58 definition_ht based structure level 1 dcl 3-278 delete_acl based structure level 1 dcl 2-58 delete_acl_array based structure array level 1 dcl 2-64 directory_acl based structure level 1 dcl 2-49 directory_acl_array based structure array level 1 dcl 2-55 dup_table_n_names automatic fixed bin(17,0) dcl 3-310 dup_table_ptr automatic pointer dcl 3-301 duplicate_table based structure level 1 dcl 3-302 exp_ptr automatic pointer dcl 3-128 fr_traps based structure level 1 dcl 5-90 general_acl based structure level 1 dcl 2-7 general_delete_acl based structure level 1 dcl 2-30 general_extended_acl based structure level 1 dcl 2-18 le_definitions based structure level 1 dcl 4-167 le_options based structure level 1 dcl 4-202 le_segnames based structure level 1 dcl 4-149 link_count automatic fixed bin(17,0) dcl 4-231 link_init_copy_info based structure level 1 dcl 3-211 link_init_n_bits_in_datum automatic fixed bin(35,0) dcl 3-261 link_init_n_words automatic fixed bin(17,0) dcl 3-215 link_init_n_words_in_list automatic fixed bin(17,0) dcl 3-226 link_init_ptr automatic pointer dcl 3-204 link_trap_pair based structure level 1 dcl 3-177 link_trap_ptr automatic pointer dcl 3-176 linkage_header based structure level 1 dcl 5-50 linkage_header_flags based structure level 1 dcl 5-63 list_template_entry based structure level 1 dcl 3-239 msf_map based structure level 1 dcl 3-318 msf_map_ptr automatic pointer dcl 3-317 msf_map_version_1 internal static char(8) initial packed unaligned dcl 3-323 section_nm internal static char(16) initial array packed unaligned dcl 4-41 segment_acl based structure level 1 dcl 2-40 segment_acl_array based structure array level 1 dcl 2-46 segname_count automatic fixed bin(17,0) dcl 4-156 segname_definition based structure level 1 dcl 3-90 segname_ptr automatic pointer dcl 3-89 type_ptr automatic pointer dcl 3-159 virgin_linkage_header based structure level 1 dcl 5-71 NAMES DECLARED BY EXPLICIT CONTEXT. execute 000154 constant entry external dcl 168 le_backpatch_ 000117 constant entry external dcl 17 patch_init 001234 constant entry internal dcl 365 ref 212 patch_link 001525 constant entry internal dcl 569 ref 218 patch_self_init 001361 constant entry internal dcl 459 ref 215 patch_symbol_ref 001636 constant entry internal dcl 655 ref 221 restore_acl 001041 constant entry internal dcl 306 ref 192 231 set_acl 000532 constant entry internal dcl 242 ref 202 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2060 2114 1674 2070 Length 2410 1674 34 260 163 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME le_backpatch_ 406 external procedure is an external procedure. on unit on line 189 76 on unit set_acl internal procedure shares stack frame of external procedure le_backpatch_. restore_acl 214 internal procedure is called by several nonquick procedures. patch_init internal procedure shares stack frame of external procedure le_backpatch_. patch_self_init internal procedure shares stack frame of external procedure le_backpatch_. patch_link internal procedure shares stack frame of external procedure le_backpatch_. patch_symbol_ref internal procedure shares stack frame of external procedure le_backpatch_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME le_backpatch_ 000100 bx le_backpatch_ 000102 patchp le_backpatch_ 000104 px le_backpatch_ 000126 acl_entry set_acl 000141 dname set_acl 000213 ec set_acl 000214 ename set_acl 000224 sys_areap set_acl 000234 expp patch_init 000236 initp patch_init 000240 lelp patch_init 000242 lkp patch_init 000244 offset patch_init 000246 typep patch_init 000256 expp patch_self_init 000260 i patch_self_init 000262 initp patch_self_init 000264 lkp patch_self_init 000266 ltep patch_self_init 000270 offset patch_self_init 000272 pitp patch_self_init 000274 typep patch_self_init 000306 lelp patch_link 000310 offset patch_link 000312 plkp patch_link 000322 refp patch_symbol_ref restore_acl 000100 dname restore_acl 000152 ec restore_acl 000153 ename restore_acl 000164 sys_areap restore_acl THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out call_int_this call_int_other return_mac mdfx1 enable_op ext_entry int_entry op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. get_group_id_ get_system_free_area_ hcs_$add_acl_entries hcs_$fs_get_path_name hcs_$list_acl hcs_$replace_acl le_error_ pathname_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. le_data_$patch_ptr le_et_$implementation_error LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 17 000112 154 000124 155 000131 156 000137 157 000141 158 000143 159 000145 161 000147 168 000150 182 000161 185 000165 189 000210 191 000224 192 000240 194 000257 195 000262 197 000263 202 000275 204 000313 206 000315 208 000327 212 000335 215 000362 218 000404 221 000430 223 000450 226 000476 230 000500 231 000511 233 000527 235 000531 242 000532 272 000534 276 000543 277 000576 278 000640 280 000642 282 000712 287 000715 288 000724 289 000726 290 000727 294 000730 295 000765 299 001037 306 001040 342 001046 345 001053 349 001061 350 001114 352 001154 354 001161 358 001233 365 001234 425 001236 428 001246 429 001256 434 001261 435 001273 436 001300 437 001305 439 001312 444 001317 447 001332 449 001350 452 001360 459 001361 526 001363 529 001372 530 001402 535 001405 536 001417 537 001424 538 001431 542 001436 544 001440 545 001451 546 001460 550 001462 558 001520 559 001522 562 001524 569 001525 622 001527 625 001537 626 001547 631 001552 635 001564 640 001571 643 001603 645 001622 648 001635 655 001636 694 001640 698 001651 701 001672 ----------------------------------------------------------- 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