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]

Graceful exit with relocatable linking (-r) when outformat != informat


It's noted in bfdint.texi (and I agree FWIW), that it is not
generally possible to make ld -r work with mixed output formats.
Anyway, I want a slightly more graceful exit than SEGV.  To
repeat, try, for --target=cris:

t1.s:
 .text
a:
 .long b

as-new --em=crisaout -o t1.o t1.s
ld-new -mcriself -r -o t2.o t1.o

Observe the SEGV in elflink.h:elf_bfd_final_link
(bfd_elf32_bfd_final_link).

I guess TRT is to iterate over input objects, checking that
their object flavor is the same as the output object flavor,
otherwise fail linking, emitting an error message.  I can check
input bfds and link_info->relocateable in various
target-specific functions, but perhaps it should be better done
for all targets in ldlang.c:lang_check.

Does that sound right, or can someone think of a better
solution?  Perhaps it should be the responsibility of each
target, or each object format, to check that they can "ld -r"?

If for each object format; where would it be the best to insert
such tests?  *_bfd_final_link?

By the way: the patch
<URL:http://sources.redhat.com/ml/binutils/2001-05/msg00158.html>
is pending review.

brgds, H-P


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