Removal of VAX/VMS support
Andrew Cagney
ac131313@redhat.com
Fri Aug 1 00:18:00 GMT 2003
> Actually, I disagree with you on this point. I don't think the
> underlying design of BFD is particularly sound. It is, however, very
> flexible, and thus can be contorted to support whatever is needed.
> When I rewrote the linker several years ago to make it much faster,
> the key element of the design (which was done by SAC), was to break
> the underlying design of BFD.
Ah!
> I think it was in 1993 that I first suggested that BFD needed to be
> scrapped, and redesigned and rewritten from scratch. Needless to say,
> Cygnus never cared to pay for that effort.
Instead of the total rewrite from scratch, more incremental aproaches
can be taken. GDB, for instance, is trying to overhaul and replace
sections. New objects and structures get added as needed. I'm told the
buzword is refactor :-)
> All of this is irrelevant to the main question of whether BFD should
> maintain support for obsolete targets. My experience with BFD is that
> maintaining that support is very cheap. This is a result of BFD's
> design, in which new features are typically added on without touching
> existing code. The BFD_JUMP_TABLE macros generally cause old targets
> to be automatically updated without requiring anybody to actually
> touch the files.
For GDB, the architecture and target methods use a similar strategy.
It's real easy to just add another method to either vector. Things run
into problem though when a core change involves modifications to those
vectors - adding something better, simpler, cleaner, faster methods.
It is then that all the existing methods get in the way making the
maintainers life hell. The person adding a new target, however, sees
little of this :-(
GDB partially addressed the problem by following a process of:
introducing a new interface; deprecating the old interface; provide a
legacy implementation that reverts back to the old / deprecated
mechanisms; eventually deleting the deprecated code. It has made it
possible to implement core changes without also rewrite all targets.
Target maintainers can then, later, upgrade their target - cf frame
rewrites currently occuring in GDB.
Andrew
More information about the Binutils
mailing list