<div>Hi!</div><div> </div><div> </div><div>I.e. this ( see later) can solve problem?</div><div> </div><div><span style="font-family:'courier new' , monospace">==</span></div><div><div><span style="font-family:'courier new' , monospace">--- AMD64_LINUX 000    Thu May 20 12:11:48 2021</span></div><div><span style="font-family:'courier new' , monospace">+++ AMD64_LINUX    Thu Jun 03 17:19:50 2021</span></div><div><span style="font-family:'courier new' , monospace">@@ -1,10 +1,14 @@</span></div><div><span style="font-family:'courier new' , monospace"> readonly TARGET = "AMD64_LINUX" % code generation target</span></div><div><span style="font-family:'courier new' , monospace"> readonly GNU_PLATFORM = "amd64-linux" % "cpu-os" string for GNU</span></div><div> </div><div><span style="font-family:'courier new' , monospace">-SYSTEM_CC = "gcc -g -m64 -fPIC" % C compiler</span></div><div><span style="font-family:'courier new' , monospace">-SYSTEM_CXXC = "g++ -g -m64 -fPIC" % C++ compiler</span></div><div><span style="font-family:'courier new' , monospace">+SYSTEM_CC = "gcc -gdwarf-2 -gstrict-dwarf -m64" % C compiler</span></div><div><span style="font-family:'courier new' , monospace">+SYSTEM_CXXC = "g++ -gdwarf-2 -gstrict-dwarf -m64" % C++ compiler</span></div><div> </div><div><span style="font-family:'courier new' , monospace"> readonly SYSTEM_ASM = "as --64" % Assembler</span></div><div><span style="font-family:'courier new' , monospace">+</span></div><div><span style="font-family:'courier new' , monospace">+% PIE debugging requires gdb 7.1 or newer, even for C</span></div><div><span style="font-family:'courier new' , monospace">+% see http://www.gnu.org/software/gdb/download/ANNOUNCEMENT</span></div><div><span style="font-family:'courier new' , monospace">+readonly POSITION_INDEPENDENT_EXECUTABLE = "-no-pie"</span></div><div> </div><div><span style="font-family:'courier new' , monospace"> include("AMD64.common")</span></div><div><span style="font-family:'courier new' , monospace"> include("Linux.common")</span></div><div><span style="font-family:'courier new' , monospace">==</span></div></div><div> </div><div> </div><div> </div><div>Best regards, Victor Miasnikov</div><div> </div><div> </div><div>03.06.2021, 22:41, "Rodney M. Bates" <rodney_bates@lcwb.coop>:</div><blockquote><p>The problem is:<br /><br />1) m3gdb will not handle position-independent executables<br />    that have debug info in stabs format. (Neither will<br />    recent gdb versions.)<br /><br />2) gcc, when linking, has recently changed its default from<br />    -no-pie to -pie, the latter producing a position-independent<br />    executable.<br /><br />So, -no-pie on the link step gets things back the way they were.<br /><br />On 5/21/21 12:53 PM, Jay K wrote:</p><blockquote> Been over 10 years.<br /> <br /> commit d61ee80f9391bf4eaa1f02aa9c306d7d2039a7c1<br /> Author: Jay Michael Krell <<a href="mailto:jay.krell@cornell.edu" rel="noopener noreferrer">jay.krell@cornell.edu</a>><br /> Date:   Tue Aug 24 05:24:24 2010 +0000<br /> <br />      restor all the code for generating main not in C<br /> <br /> commit 1b57d6ed7649dcf6133ba65f202e2789920cba7e<br /> Author: Jay Michael Krell <<a href="mailto:jay.krell@cornell.edu" rel="noopener noreferrer">jay.krell@cornell.edu</a>><br /> Date:   Mon Aug 23 05:51:23 2010 +0000<br /> <br />      Always generate main in C.<br /> <br /> My bet is more on gas, but it is worth a try.<br /> <br /> Do breakpoints in .so files work? They are not affected by this I think.<br /> <br />   - Jay<br /> <br /> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br /> *From:* Rodney M. Bates <<a href="mailto:rodney_bates@lcwb.coop" rel="noopener noreferrer">rodney_bates@lcwb.coop</a>><br /> *Sent:* Friday, May 21, 2021 3:46 PM<br /> *To:* Jay K <<a href="mailto:jayk123@hotmail.com" rel="noopener noreferrer">jayk123@hotmail.com</a>>; m3devel <<a href="mailto:m3devel@elegosoft.com" rel="noopener noreferrer">m3devel@elegosoft.com</a>>; <a href="mailto:rodney.m.bates@acm.org" rel="noopener noreferrer">rodney.m.bates@acm.org</a> <<a href="mailto:rodney.m.bates@acm.org" rel="noopener noreferrer">rodney.m.bates@acm.org</a>><br /> *Subject:* Re: [M3devel] g++9 and g++-8 undermine debugging<br /> <br /> <br /> On 5/21/21 9:54 AM, Rodney M. Bates wrote:<blockquote> <br /> <br /> On 5/19/21 6:47 PM, Jay K wrote:<blockquote> Thank you for the thoroughness.<br /> There was another factor I think you missed, which is _m3main.c can be C, or we can skip C and go right to m3cg.<br /> One of my peeves is unnecessary options and matrix expansion, and resulting lack of testing and extra work, so I years ago changed either the config or builder to always generate the C. Arguably, pedantically, this also improves C++ compatibility -- on ancient systems main needs to be in C++ to run static constructors, but nothing works that way these days, probably only cfront.<br /><br /> The old code is definitely still there.<br /> Try it?</blockquote> <br /> I found MxGen.GenerateMain,which will do it either way, but<br /> no calls on it except in Builder.GenerateCMain, which unconditionally<br /> does it in C and is called unconditionally from Builder.BuildProgram.<br /> It looks like some glue code is gone to test which way and to provide<br /> and use the needed cg_output:M3CG.T to pass to GenerateMain.  There are<br /> instances of "M3_MAIN_IN_C = TRUE" in config files, but I find no uses<br /> anywhere in m3-sys.<br /> <br /> Can you point me to a commit that has what's needed?</blockquote> <br /> I found it in an old tree on my local disk.  Not yet sure how<br /> minimal a reinstatement I can get by with, but the needed<br /> stuff is there.<br /> <blockquote> <blockquote class="210e7a848e8fcb45wmi-quote"> At least for experimental data?<br /> You know, I mean, I have no idea what is the problem, and if this will fix it, but if it is does, that will be very useful as a workaround and optionally to understand the problem.<br /><br /> Understand that the gcc developers have a passive/aggressive attitude toward stabs.<br /> I think gcc retains support, only really for AIX.<br /> But further note that gcc support for stabs..we don't really need anyway.<br /> We only need the assembler and linker to work with them. (Well, I don't...)<br /> Perhaps the assembler/linker developers have a similar attitude, and perhaps, really, the problem is in them.<br /><br /> Can you control for gas?<br /> i.e. Can you try with old gas? Or trunk gas? Or clang's assembler?<br /> Gas is a common factor here across gcc and clang and may explain that surprise.<br /><br /> Aside: I did find a bug in clang's assembler, that affected probably nobody but us/me, on MacOSX, when targeting older systems.<br /> That caused crashing (not debugging related).<br /> I put a workaround in our gcc fork.<br /> Specifically, it had to do with matching up imported functions and their stubs/pointers.<br /> Clang's assembler assumes they are in corresponding order, and I guess ignores their names.<br /> Gcc outputs them in hash order.<br /> So the result was the assembler producing incorrect code.<br /> I changed our gcc to sort them or something.<br /> When targeting newer MacOSX I think you don't output the stuff and the linker synthesizes them.<br /> Besides that people don't target old MacOSX, people don't often send gcc's output to clang assembler. (MacOSX only has clang asssembler, at least from Apple, ignoring Homebrew).<br /><br /> Can you copy the .o files from the working system, then gcc/link + m3gdb on new?<br /><br />   - Jay<br /><br /> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br /> *From:* Rodney M. Bates <<a href="mailto:rodney_bates@lcwb.coop">rodney_bates@lcwb.coop</a>><br /> *Sent:* Wednesday, May 19, 2021 10:21 PM<br /> *To:* Jay K <<a href="mailto:jayk123@hotmail.com">jayk123@hotmail.com</a>>; m3devel <<a href="mailto:m3devel@elegosoft.com">m3devel@elegosoft.com</a>>; <a href="mailto:rodney.m.bates@acm.org">rodney.m.bates@acm.org</a> <<a href="mailto:rodney.m.bates@acm.org">rodney.m.bates@acm.org</a>><br /> *Subject:* Re: [M3devel] g++9 and g++-8 undermine debugging<br /> These cases are on two machines with different linux distributions.<br /><br /> Compiling on the old machine, with older g++/gcc(5.4.0) and with older<br /> clang++/clang (3.8.0), all cases work.<br /><br /> On the new machine, newer g++/gcc (9.3.0) and newer clang++/clang<br /> (10.0.0), all cases fail.<br /><br /> In all cases, with/without the ++ makes no difference.  clang<br /> or gcc makes no difference.  -g/-gstabs+ makes no difference.<br /><br /> It is the same cm3 executable on both.  The .o file for the one<br /> M3 module is the same size, but has different cksum.  However,<br /> objdump --full-contents on them gives identical text files.<br /> Probably a compilation time/date.  The compiled _m3main.o and prog<br /> vary.  All other intermediate files are identical, especially<br /> _m3main.c<br /><br /> Those cases that fail all give the same address where the debugger<br /> was unable to insert a breakpoint at: 0x9ad.  Tedious debugging of<br /> m3gdb using gdb on a succeeding case had 0xa585c for the break<br /> address.  This value is called a displacement in internal<br /> variables.<br /><br /> The age of the C/C++ compiler seems to be the only variable that<br /> makes a difference.  Odd that g++ and clang++ should track each<br /> other on this.<br /><br /> On 5/18/21 7:31 PM, Jay K wrote:<br /><blockquote class="210e7a848e8fcb45wmi-quote"> Can you elaborate on the matrix?<br /><br /> gcc vs. g++ vs. clang vs. clang++ ?<br />     Do any of them work?<br /><br /> -g vs. -gstabs vs. other forms of -g?<br />     Does anything work?<br /><br /> "main in C" or not?<br />     Does anything work?<br /> I changed "it", I forgot, config or builder, so main is always in C, but I didn't remove the old code, so maybe try the other?<br /><br /> Can gdb or lldb debug the C code?<br />    I realize that might not matter.<br /><br /> I assume g++ -g/-gstabs/etc. on non-Modula3 hello world works for you?<br /> (well, some versions of -gstabs do have problems with C, but not what you describe.)<br /><br />    - Jay<br /><br /> ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------<br /> *From:* M3devel <<a href="mailto:m3devel-bounces@elegosoft.com">m3devel-bounces@elegosoft.com</a>> on behalf of Rodney M. Bates <<a href="mailto:rodney_bates@lcwb.coop">rodney_bates@lcwb.coop</a>><br /> *Sent:* Wednesday, May 19, 2021 12:21 AM<br /> *To:* m3devel <<a href="mailto:m3devel@elegosoft.com">m3devel@elegosoft.com</a>><br /> *Subject:* [M3devel] g++9 and g++-8 undermine debugging<br /> g++9, from experimental evidence, is doing something to _m3main.o<br /> that gives m3gdb bad code addresses.  m3gdb tries to insert breakpoints<br /> at invalid addresses and fails.  This is for breakpoints in m3-compiled<br /> code, not in _m3main itself.<br /><br /> g++-8 also fails.<br /><br /> g++5 is what I have used previously, and it works. These are the only<br /> ones I have tried and can easily try.<br /><br /> -- <br /> Rodney Bates<br /> <a href="mailto:rodney.m.bates@acm.org">rodney.m.bates@acm.org</a><br /> _______________________________________________<br /> M3devel mailing list<br /> <a href="mailto:M3devel@elegosoft.com">M3devel@elegosoft.com</a><br /> <a href="https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fm3lists.elegosoft.com%2Fmailman%2Flistinfo%2Fm3devel&data=04%7C01%7C%7C8d3aca28c5fb45bf666508d91c6faa4e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637572088185808901%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=zPuBGdIRMAsp4wiTodVe74Uz8bQ1yWzhP6iQih9VlNE%3D&reserved=0">https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fm3lists.elegosoft.com%2Fmailman%2Flistinfo%2Fm3devel&amp;data=04%7C01%7C%7C8d3aca28c5fb45bf666508d91c6faa4e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637572088185808901%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=zPuBGdIRMAsp4wiTodVe74Uz8bQ1yWzhP6iQih9VlNE%3D&amp;reserved=0</a> <<a href="https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fm3lists.elegosoft.com%2Fmailman%2Flistinfo%2Fm3devel&data=04%7C01%7C%7C8d3aca28c5fb45bf666508d91c6faa4e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637572088185808901%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=zPuBGdIRMAsp4wiTodVe74Uz8bQ1yWzhP6iQih9VlNE%3D&reserved=0">https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fm3lists.elegosoft.com%2Fmailman%2Flistinfo%2Fm3devel&amp;data=04%7C01%7C%7C8d3aca28c5fb45bf666508d91c6faa4e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637572088185808901%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=zPuBGdIRMAsp4wiTodVe74Uz8bQ1yWzhP6iQih9VlNE%3D&amp;reserved=0</a>> <br /></blockquote></blockquote></blockquote> <<a href="https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fm3lists.elegosoft.com%2Fmailman%2Flistinfo%2Fm3devel&data=04%7C01%7C%7C8d3aca28c5fb45bf666508d91c6faa4e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637572088185808901%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=zPuBGdIRMAsp4wiTodVe74Uz8bQ1yWzhP6iQih9VlNE%3D&reserved=0" rel="noopener noreferrer">https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fm3lists.elegosoft.com%2Fmailman%2Flistinfo%2Fm3devel&amp;data=04%7C01%7C%7C8d3aca28c5fb45bf666508d91c6faa4e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637572088185808901%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=zPuBGdIRMAsp4wiTodVe74Uz8bQ1yWzhP6iQih9VlNE%3D&amp;reserved=0</a> <<a href="https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fm3lists.elegosoft.com%2Fmailman%2Flistinfo%2Fm3devel&data=04%7C01%7C%7C8d3aca28c5fb45bf666508d91c6faa4e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637572088185808901%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=zPuBGdIRMAsp4wiTodVe74Uz8bQ1yWzhP6iQih9VlNE%3D&reserved=0" rel="noopener noreferrer">https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fm3lists.elegosoft.com%2Fmailman%2Flistinfo%2Fm3devel&amp;data=04%7C01%7C%7C8d3aca28c5fb45bf666508d91c6faa4e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637572088185808901%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=zPuBGdIRMAsp4wiTodVe74Uz8bQ1yWzhP6iQih9VlNE%3D&amp;reserved=0</a>>><blockquote><blockquote> <<a href="https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fm3lists.elegosoft.com%2Fmailman%2Flistinfo%2Fm3devel&data=04%7C01%7C%7C8d3aca28c5fb45bf666508d91c6faa4e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637572088185818891%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=DDpsBQImEqoqtR0AM87AclkmaEKcQSij5x9pQfadYts%3D&reserved=0" rel="noopener noreferrer">https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fm3lists.elegosoft.com%2Fmailman%2Flistinfo%2Fm3devel&amp;data=04%7C01%7C%7C8d3aca28c5fb45bf666508d91c6faa4e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637572088185818891%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=DDpsBQImEqoqtR0AM87AclkmaEKcQSij5x9pQfadYts%3D&amp;reserved=0</a> <<a href="https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fm3lists.elegosoft.com%2Fmailman%2Flistinfo%2Fm3devel&data=04%7C01%7C%7C8d3aca28c5fb45bf666508d91c6faa4e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637572088185818891%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=DDpsBQImEqoqtR0AM87AclkmaEKcQSij5x9pQfadYts%3D&reserved=0" rel="noopener noreferrer">https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fm3lists.elegosoft.com%2Fmailman%2Flistinfo%2Fm3devel&amp;data=04%7C01%7C%7C8d3aca28c5fb45bf666508d91c6faa4e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637572088185818891%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=DDpsBQImEqoqtR0AM87AclkmaEKcQSij5x9pQfadYts%3D&amp;reserved=0</a></blockquote></blockquote> <<a href="https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fm3lists.elegosoft.com%2Fmailman%2Flistinfo%2Fm3devel&data=04%7C01%7C%7C8d3aca28c5fb45bf666508d91c6faa4e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637572088185818891%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=DDpsBQImEqoqtR0AM87AclkmaEKcQSij5x9pQfadYts%3D&reserved=0" rel="noopener noreferrer">https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fm3lists.elegosoft.com%2Fmailman%2Flistinfo%2Fm3devel&amp;data=04%7C01%7C%7C8d3aca28c5fb45bf666508d91c6faa4e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637572088185818891%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=DDpsBQImEqoqtR0AM87AclkmaEKcQSij5x9pQfadYts%3D&amp;reserved=0</a>>>><blockquote><blockquote><blockquote><br /> _______________________________________________<br /> M3devel mailing list<br /> <a href="mailto:M3devel@elegosoft.com" rel="noopener noreferrer">M3devel@elegosoft.com</a><br /> <a href="https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fm3lists.elegosoft.com%2Fmailman%2Flistinfo%2Fm3devel&data=04%7C01%7C%7C8d3aca28c5fb45bf666508d91c6faa4e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637572088185818891%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=DDpsBQImEqoqtR0AM87AclkmaEKcQSij5x9pQfadYts%3D&reserved=0" rel="noopener noreferrer">https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fm3lists.elegosoft.com%2Fmailman%2Flistinfo%2Fm3devel&amp;data=04%7C01%7C%7C8d3aca28c5fb45bf666508d91c6faa4e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637572088185818891%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=DDpsBQImEqoqtR0AM87AclkmaEKcQSij5x9pQfadYts%3D&amp;reserved=0</a> <<a href="https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fm3lists.elegosoft.com%2Fmailman%2Flistinfo%2Fm3devel&data=04%7C01%7C%7C8d3aca28c5fb45bf666508d91c6faa4e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637572088185818891%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=DDpsBQImEqoqtR0AM87AclkmaEKcQSij5x9pQfadYts%3D&reserved=0" rel="noopener noreferrer">https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fm3lists.elegosoft.com%2Fmailman%2Flistinfo%2Fm3devel&amp;data=04%7C01%7C%7C8d3aca28c5fb45bf666508d91c6faa4e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637572088185818891%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=DDpsBQImEqoqtR0AM87AclkmaEKcQSij5x9pQfadYts%3D&amp;reserved=0</a>></blockquote></blockquote></blockquote> <<a href="https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fm3lists.elegosoft.com%2Fmailman%2Flistinfo%2Fm3devel&data=04%7C01%7C%7C8d3aca28c5fb45bf666508d91c6faa4e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637572088185818891%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=DDpsBQImEqoqtR0AM87AclkmaEKcQSij5x9pQfadYts%3D&reserved=0" rel="noopener noreferrer">https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fm3lists.elegosoft.com%2Fmailman%2Flistinfo%2Fm3devel&amp;data=04%7C01%7C%7C8d3aca28c5fb45bf666508d91c6faa4e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637572088185818891%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=DDpsBQImEqoqtR0AM87AclkmaEKcQSij5x9pQfadYts%3D&amp;reserved=0</a> <<a href="https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fm3lists.elegosoft.com%2Fmailman%2Flistinfo%2Fm3devel&data=04%7C01%7C%7C8d3aca28c5fb45bf666508d91c6faa4e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637572088185818891%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=DDpsBQImEqoqtR0AM87AclkmaEKcQSij5x9pQfadYts%3D&reserved=0" rel="noopener noreferrer">https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fm3lists.elegosoft.com%2Fmailman%2Flistinfo%2Fm3devel&amp;data=04%7C01%7C%7C8d3aca28c5fb45bf666508d91c6faa4e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637572088185818891%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=DDpsBQImEqoqtR0AM87AclkmaEKcQSij5x9pQfadYts%3D&amp;reserved=0</a>>><blockquote><blockquote><blockquote> </blockquote><br /> --<br /> Rodney Bates<br /> <a href="mailto:rodney.m.bates@acm.org" rel="noopener noreferrer">rodney.m.bates@acm.org</a><br /><br /> _______________________________________________<br /> M3devel mailing list<br /> <a href="mailto:M3devel@elegosoft.com" rel="noopener noreferrer">M3devel@elegosoft.com</a><br /> <a href="https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fm3lists.elegosoft.com%2Fmailman%2Flistinfo%2Fm3devel&data=04%7C01%7C%7C8d3aca28c5fb45bf666508d91c6faa4e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637572088185818891%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=DDpsBQImEqoqtR0AM87AclkmaEKcQSij5x9pQfadYts%3D&reserved=0" rel="noopener noreferrer">https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fm3lists.elegosoft.com%2Fmailman%2Flistinfo%2Fm3devel&amp;data=04%7C01%7C%7C8d3aca28c5fb45bf666508d91c6faa4e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637572088185818891%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=DDpsBQImEqoqtR0AM87AclkmaEKcQSij5x9pQfadYts%3D&amp;reserved=0</a> <<a href="https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fm3lists.elegosoft.com%2Fmailman%2Flistinfo%2Fm3devel&data=04%7C01%7C%7C8d3aca28c5fb45bf666508d91c6faa4e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637572088185818891%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=DDpsBQImEqoqtR0AM87AclkmaEKcQSij5x9pQfadYts%3D&reserved=0" rel="noopener noreferrer">https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fm3lists.elegosoft.com%2Fmailman%2Flistinfo%2Fm3devel&amp;data=04%7C01%7C%7C8d3aca28c5fb45bf666508d91c6faa4e%7C84df9e7fe9f640afb435aaaaaaaaaaaa%7C1%7C0%7C637572088185818891%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=DDpsBQImEqoqtR0AM87AclkmaEKcQSij5x9pQfadYts%3D&amp;reserved=0</a>><br /> </blockquote> </blockquote> <br /> --<br /> Rodney Bates<br /> <a href="mailto:rodney.m.bates@acm.org" rel="noopener noreferrer">rodney.m.bates@acm.org</a><br /> <br /> _______________________________________________<br /> M3devel mailing list<br /> <a href="mailto:M3devel@elegosoft.com" rel="noopener noreferrer">M3devel@elegosoft.com</a><br /> <a href="https://m3lists.elegosoft.com/mailman/listinfo/m3devel" rel="noopener noreferrer">https://m3lists.elegosoft.com/mailman/listinfo/m3devel</a><br /> </blockquote><p> </p>--<br />Rodney Bates<br /><a href="mailto:rodney.m.bates@acm.org" rel="noopener noreferrer">rodney.m.bates@acm.org</a><br />_______________________________________________<br />M3devel mailing list<br /><a href="mailto:M3devel@elegosoft.com" rel="noopener noreferrer">M3devel@elegosoft.com</a><br /><a href="https://m3lists.elegosoft.com/mailman/listinfo/m3devel" rel="noopener noreferrer">https://m3lists.elegosoft.com/mailman/listinfo/m3devel</a></blockquote>