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