|
From: | Jacob Bachmeyer |
Subject: | Re: [PATCH 3/3][DejaGNU] target: Wrap linker flags into `-largs'/`-margs' for Ada |
Date: | Thu, 16 May 2019 18:38:58 -0500 |
User-agent: | Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.8.1.22) Gecko/20090807 MultiZilla/1.8.3.4e SeaMonkey/1.1.17 Mnenhy/0.7.6.0 |
Maciej W. Rozycki wrote:
On Wed, 15 May 2019, Jacob Bachmeyer wrote:This patch really exposes a significant deficiency in our current implementation of default_target_compile: the order of various flags can be significant, but we only have that order implicitly expressed in the code, which goes all the way back to (of course) the "Initial revision" that is probably from a time before Tcl had the features that will allow significant cleanup in here.I suspect the origins may be different, however as valuable as your observation is functional problems have precedence over issues with code structuring, so we need to fix the problem at hand first. I'm sure DejaGNU maintainers will be happy to review your implementation of code restructuring afterwards.
My concern is that your patch may only solve a small part of the problem -- enough to make your specific case work, yes, but then someone else will hit other parts of the problem later and we spiral towards "tissue of hacks" unmaintainability.
The biggest hint to me that your patch is incomplete is that it only adds -largs/-margs to wrap LDFLAGS. I suspect that there are other -?args options that should be used also with other flag sets, but those do not appear in this patch. Do we know what the GNU Ada frontend actually expects?
Some of these could probably be combined and I may have combined categories that should be separate in the above list. The GNU toolchain has always been a kind of "magic box that just works" (until it doesn't and the manual explains the problem) for me, so I am uncertain what the ordering rules for combining these categories should be. Anyone know the traditional rules and, perhaps more importantly, what systems need which rules?The ordering rules are system-specific I'm afraid and we have to be careful not to break working systems out there. People may be forced to a DejaGNU upgrate, due to a newer version of a program being tested having such a requirement, and can legitimately expect their system to continue working.
We can start by simply preserving the existing ordering until we know something should change, but the main goal of my previous message was to collect the requirements for a specification for default_target_compile so I can write regression tests (some of which will fail due to known bugs like broken Ada support in our current implementation) before embarking on extensive changes to that procedure. Improving "target.test" was already on my local TODO list.
NB I have been repeatedly observing cases where a forced upgrade of a system component I neither care nor I am competent about, triggered by an upgrade of a component I do care about, caused the system to malfunction in a way that I find both unacceptable and extremely hard to debug. It seems to have become more frequent in the recent years, and I find this both very frustrating and have wasted lots of time trying to fix the damage caused. I would therefore suggest to take all the measures possible to save people from going through such an experience.
Yes, I have also noticed an attitude that can be summed up as "Who cares about backwards compatibility? New! Shiny!" usually from people who have no clue and no business being anywhere near a source editor. (Surprise! Their code has lots of bugs, usually severe, too.) The problem is not new -- jwz called it out as the "Cascade of Attention-Deficit Teenagers" model, noting that it seemed to particularly plague GNOME, long ago. Unfortunately, people with that particular attitude seem to have acquired outsize influence over the last few years. I would suspect an organized attack if I were more conspiracy-oriented, but Hanlon's razor strongly suggests that this is simply a consequence of lowering barriers to entry.
-- Jacob
[Prev in Thread] | Current Thread | [Next in Thread] |