This is the mail archive of the binutils@sources.redhat.com mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Removal of VAX/VMS support


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]