Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NUCEXT RENAME plist is processed incorrectly, uses wrong newname #104

Open
RossPatterson opened this issue Aug 4, 2024 · 1 comment
Open

Comments

@RossPatterson
Copy link
Collaborator

The NUCEXT RENAME macro invokes DMSSNX to rename a nucleus extension. The plist is documented in DMSSNX ASSEMBLE as:

*         5) Rename a nucleus extension
*            DC  CL8'NUCEXT'
*            DC  CL8'oldname'   old name of the nucleus ext
*            DC  4X'00'         reserved
*            DC  AL4(2)         identifies the rename function
*            DC  CL8'newname'   new name for the extension
*            DC  8X'FF'         fence

The NUCEXT macro correctly creates this plist:

                                     155          NUCEXT RENAME,NAME='DMSNXL',NEW='NUCXLOAD',                   *
                                                        ERROR=1,MF=(E,WRKNXRPL) Rename the NUCXTEXT'd DMSNXL.
 000140 4110 D058      00058         156+         LA    1,WRKNXRPL         Point to list form                    01730000
 000144 D207 1000 CD50 00000 00D50   157+         MVC   0(8,1),=CL8'NUCEXT'                             RAP009DS 01790100
 00014A D207 1008 CD58 00008 00D58   158+         MVC   8(8,1),=CL8'DMSNXL' Set name                             02280000
 000150 D703 1010 1010 00010 00010   159+         XC    16(4,1),16(1)                                            04740000
 000156 D203 1014 CD68 00014 00D68   160+         MVC   20(4,1),=F'2'         Rename                             04750000
 00015C D207 1018 CCE8 00018 00CE8   161+         MVC   24(8,1),=CL8'NUCXLOAD' Set new name                      04820000
 000162 0ACA                         162+         SVC   202                Process the call                      05140000
 000164 00000001                     163+         DC    AL4(1)             Error processing address              05220000

The code in DMSSNX, however, thinks the newname field (SUBNAME2 below) is 4 bytes later in the plist than it is, leading to the wrong name after the operation:

SUBPLIST DSECT                SUBCOM plist
         DC    CL8'SUBCOM'    CL8'SUBCOM' or CL8'NUCEXT'
SUBPNAME DS    CL8            Name
SUBRETN  DS    A              Pass back pointer for QUERY/ANCHOR
SUBFUNC  DS    F              Function call type
         ORG   SUBRETN
SUBPSW   DS    0D             Starting PSW
SUBMASK  DS    X              System Mask
SUBKEY   DS    X              Storage Key
SUBPFLAG DS    X              Flags                            HRC424DS
SUBPSEG  EQU   X'20'          Segment resident                 HRC424DS
SUBUSRF  DS    X              User Flags
SUBADDR  DS    A              Entry point
SUBWKRD  DS    A              Work area (If any)
SUBXORG  DS    A              Origin (for NUCEXT)
SUBXLEN  DS    F              Length (for NUCEXT)
SUBSEGID DS    CL8            Segment name (for NUCEXT)        HRC424DS
         ORG   SUBXORG                                         
SUBNAME2 DS    CL8            Second SCBLOCK name for RENAME
@RossPatterson
Copy link
Collaborator Author

Fix is:
DMSSNX AUXLCL:

RAP011DS PE HRC404DS Wrong newname plist location for NUCEXT RENAME.

DMSSNX RAP011DS:

./ R  09270000 09270000 $
         ORG   SUBWKRD                                         RAP011DS

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant