MIPS assembler no longer "combines symbols in different segments"...

David Daney ddaney@avtrex.com
Sat Feb 26 20:19:00 GMT 2005


David Daney wrote:
> A recent change to gas seems to have broken it so that it no longer 
> works with gcc-3.3.  Configured as target=mipsel-linux
> 
> The .eh_frame code generated by gcc-3.3 contains things like this:
> 
>         .4byte  $LFB2-.
> 
> Where '$LFB2' is in .text and '.' is in .eh_frame.  This worked well in 
> 2.15 but for:
> 
> $ mipsel-linux-as --version
> GNU assembler 050218 20050218
> 
> I am getting:
> 
> Error: operation combines symbols in different segments
> 
> for this.
> 
> Is there a good reason that this was changed?
> 
> If not can we change it back?
> 
> There are enough ld bugs in 2.15 that I want to use this snapshot, but I 
> will probably have to resolve this issue first.
> 
> David Daney.

This patch seems like it caused this problem:

[ bfd/ChangeLog ]
2004-04-28  Chris Demetriou  <cgd@broadcom.com>

	* reloc.c: Remove BFD_RELOC_PCREL_HI16_S and BFD_RELOC_PCREL_LO16.
	* bfd-in2.h: Regenerate.
	* libbfd.h: Likewise.

[ gas/ChangeLog ]
2004-04-28  Chris Demetriou  <cgd@broadcom.com>

	* config/tc-mips.c (HAVE_32BIT_ADDRESSES, append_insn, macro_build)
	(load_address, macro, mips_ip, md_parse_option)
	(mips_force_relocation, mips_validate_fix, md_apply_fix3)
	(s_change_sec, pic_need_relax, tc_gen_reloc): Remove all
	embedded-PIC handling, and update comments.
	(SWITCH_TABLE): Remove.
	* config/tc-mips.h (DIFF_EXPR_OK): Delete.
	(enum mips_pic_level): Remove EMBEDDED_PIC.
	(EXTERN_FORCE_RELOC): Remove embedded-PIC handling.
	(TC_FORCE_RELOCATION): Update comment.
	* ecoff.c (ecoff_build_lineno): Add comment about some code that
	might be safe to remove now that MIPS embedded-PIC is gone.


The attached patch was tested with make -k check no regressions and gets 
back to the behavior I want.  But I will also do a little more testing 
before giving it my whole hearted endorsement.

2005-02-35  David Daney  <ddaney@avtrex.com>

         * config/tc-mips.h: #define DIFF_EXPR_OK.
         * config/tc-mips.c (md_apply_fix3): Remove assert (!fixP->fx_pcrel)
         because DIFF_EXPR_OK generates them.
         (tc_gen_reloc) : Ditto.


Thoughts or opinions?

David Daney.



-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: binutils.diff
URL: <https://sourceware.org/pipermail/binutils/attachments/20050226/3c7d12b0/attachment.ksh>


More information about the Binutils mailing list