compiling binutils with -DDEBUG
Ian Lance Taylor
ian@airs.com
Tue Mar 1 02:36:00 GMT 2005
Alan Modra <amodra@bigpond.net.au> writes:
> (fixup_segment): Remove assertion.
> Didn't seem worth including struct-symbol.h just for this. I suspect
> the assertion isn't true too, since a similar assertion in obj-coff.c
> fails with X_op an O_constant. Maybe this is a real bug. Ian, you're
> probably the only one who can answer mri mode queries off the top of
> your head. Care to comment?
> @@ -2583,7 +2585,6 @@ fixup_segment (fixS *fixP, segT this_seg
> if (fixP->fx_addsy != NULL
> && symbol_mri_common_p (fixP->fx_addsy))
> {
> - know (fixP->fx_addsy->sy_value.X_op == O_symbol);
> add_number += S_GET_VALUE (fixP->fx_addsy);
> fixP->fx_offset = add_number;
> fixP->fx_addsy
The assertion should be true. This is a symbol defined in an MRI
common section. Since we don't generate IEEE object files, we treat
an MRI common section as a single large common symbol. Then we handle
a reloc against a symbol defined within an MRI common section as an
offset to that symbol. The assertion is just checking that we really
do point to the magic symbol we are using for the MRI common section.
So, I don't think it's a bug, but since MRI mode is not very important
I don't think we need to keep the assertion if it's convenient to
remove it.
Ian
More information about the Binutils
mailing list