With a sufficiently new BFD library (more on that in a moment), failing to set the output_bfd field triggers a crash due to a null pointer dereference when attempting to read symbols. I took a look at upstream CVS. This page:
http://sourceware.org/cgi-bin/cvsweb.cgi/src/include/bfdlink.h?cvsroot=srcindicates that the output_bfd field was added in version 1.71 of bfdlink.h, checked in on Feb 15, 2008. Version 2.19 of binutils has subsequently been released. I am on a Fedora 10 machine, where binutils reports its version as 2.18.50.0.9. I presume that is some kind of development snapshot. In any case, /usr/include/bfdlink.h on my machine shows the output_bfd field, and failing to set it results in the aforementioned crash.