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