This is the mail archive of the binutils@sourceware.org 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] |
Other format: | [Raw text] |
Hi Danny,Here is a patch that "fixes" the differences between binutils cvs 20050202 and cvs head. Probably I got it all wrong, but at least it
The old environment is based on gcc 3.4.2, gas 2.13.2, binutils 2.15. (Yes there's a mixup there.) The new environment is using gcc 4.1 and binutils 2.16. In all versions, the target platform is "arm-wince-pe".
The person who created this distribution explains the mixup by saying that the GAS from 2.13 works, whereas the one in newer binutils doesn't.
My personal experience with the 2.16 release appears to confirm that.
Are you upgrading to the new GCC new GAS and new LD all at the same time ? If not then that might be the cause.
Are you aware of the --support-old-code linker switch which is specific to the arm-wince-pe target ? Using this might help you.
Using the latest binutils sources from CVS repository might also help. If not then I would recommend comparing a disassembly of a working binary and broken binary to see where there are changes. (Do not compare the object files, but linked binaries. This should allow you to find out how relocs may have been processed differently).
Cheers Nick
.global _ctype_ .text .global global_sym .def global_sym; .scl 2; .type 32; .endef
_ctype_: .word _ctype_+7
global_sym: def_sym: undef_sym: nop nop nop b global_sym bl global_sym beq global_sym b def_sym bl def_sym beq def_sym b undef_sym bl undef_sym ldr r0, global_sym ldr r0, def_sym ldr r0, undef_sym
Cheers, Pedro Alves
Index: gas/config/tc-arm.c =================================================================== RCS file: /cvs/src/src/gas/config/tc-arm.c,v retrieving revision 1.256 diff -u -r1.256 tc-arm.c --- gas/config/tc-arm.c 7 Apr 2006 15:11:19 -0000 1.256 +++ gas/config/tc-arm.c 25 Apr 2006 15:52:17 -0000 @@ -11182,8 +11182,12 @@ then we just want to put out any pipeline compensation that the linker will need. Otherwise we want to use the calculated base. */ if (fixP->fx_pcrel - && ((fixP->fx_addsy && S_GET_SEGMENT (fixP->fx_addsy) != seg) - || arm_force_relocation (fixP))) + && ((fixP->fx_addsy && S_GET_SEGMENT (fixP->fx_addsy) != seg) +#ifdef TE_WINCE + || (!S_IS_EXTERNAL (fixP->fx_addsy) && arm_force_relocation (fixP)))) +#else + || arm_force_relocation (fixP))) +#endif base = 0;
Attachment:
binutils-hunt.tar.gz
Description: application/gzip
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |