﻿id	summary	reporter	owner	description	type	status	priority	milestone	component	version	resolution	keywords	cc
372	mbuild_compile_.pl1 mistakenly overrides a DELETE xxx.pl1 operation	Gary Dixon	Gary Dixon	"In an unusual case, a PL1 source segment was being upgraded to use reductions in doing its work.  From a source build perspective, this involves DELETE of the original xxx.pl1 source and an ADD of the upgraded xxx.rd source.  However, the attempted delete operation fails because the mbuild compile request for a source containing reductions generates an intermediate xxx.pl1 derived-object segment (which then get compiled by the pl1 compiler).

mbuild_compile_.pl1 tries to take ownership of the Seg(pl1).operation = ""DELETE"" structure to reuse it as a placeholder for the intermediate derived-object of the reductions translation:  Seg(pl1).operation = ""ADD"".

This mistaken override of ownership can be avoided by changing mbuild_compile_.pl1 to pass the ""ADD"" operation name when it searches for any Seg structure documenting the derived-object xxx.pl1 segment.  That prevents the search from matching the existing Seg.operation = ""DELETE"" structure; so a new Seg structure gets created to track the derived-object segment produced by the reductions translator.


{{{
compare_ascii >ldd>tools>source>bound_mbuild_.s.archive::mbuild_compile_.pl1 ==

Inserted in B:
B32         8) change(2025-06-26,GDixon):
B33             A) Change attach_derived_Seg to pass the source segment's operation
B34                to mbuild_data_$get_Seg so it does not override an attempt to
B35                DELETE an XXX.pl1 segment so an XXX.rd segment may be ADDed in
B36                its place.
Preceding:
A32                                                          END HISTORY COMMENTS */


A569         dSegP = mbuild_data_$get_Seg (addr(bld), dSegt.mbuild_type, dSeg.name,
A570                   unknown_library, unknown_operation, unknown_archive_name);
Changed by B to:
B574         dSegP = mbuild_data_$get_Seg (addr(bld), dSegt.mbuild_type, dSeg.name,
B575                   unknown_library, Asource_operation, unknown_archive_name);

Comparison finished: 2 differences, 9 lines.
}}}"	defect	closed	major	MR12.9	Tools	MR12.8	fixed		
