Hi Pedro, Hi Danny,
Please accept my apologies in taking so long to reply to your emails.
I have now had a chance to go over them and the patches that they
contained and then seemed quite reasonable to me. I have applied them
to my local source tree and checked to see if there were any regressions
- there were not.
Unfortunately I do not have an arm-wince system at my disposal, so I
cannot check that the (slightly revised) versions of the patches that I
applied allow working binaries to be created, so please can I ask for
your help ?
I am attaching a unified patch which I think contains all of the
changes that you suggested, along with a little bit of code tidying.
Please could you try applying them to a set of binutils sources (from
the mainline of the CVS repository) and testing them to see if they
produce working binaries ?
One thing I am quite worried about is whether partial linking will
work. (ie using the "ld -r ...." file to create an object file that is
an amalgam of several other object files). I suspect that there might
be problems with the -8 bias to branch relocations, but without a test
environment I cannot tell for sure.
Thanks very much for perserving with your work, and assuming that you
can confirm that the patch works, I will be happy to check it in with
the ChangeLogs below.
Cheers
Nick
bfd/ChangeLog
2006-05-10 Pedro Alves <pedro_alves@portugalmail.pt>
* coff-arm.c (ARM_26D, ARM_32, ARM_RVA_32, ARM_SECTION,
ARM_SECREL): Mark WinCE versions of these relocs as partial
inplace.
(coff_arm_relocate_section): Adjust addend for WinCE.
gas/ChangeLog
2006-05-10 Pedro Alves <pedro_alves@portugalmail.pt>
* config/tc-arm.c (md_pcrel_from_section): Force a bias for relocs
against external symbols for WinCE targets.
(md_apply_fix): Likewise.
ld/ChangeLog
2006-05-10 Pedro Alves <pedro_alves@portugalmail.pt>
* pe-dll.c (autofilter_symbollist): Add Dllmain,
DllMainCRTStartup, _DllMainCRTStartup and .text.
(autofilter_liblist): Add libcegcc.
(autofilter_symbolprefixlist): Add __imp_ and .idata$.
(generate_reloc): Do not skip sections without a SEC_LOAD flag,
they can still contain relocs that need processing.
Skip the .idata$6 section.
(jmp_arm_bytes): New array: Contains byte codes for an ARM jump.
(make_one): Use the new array.
(make_import_fixup_entry): Use .idata$2 instead of .idata$3.
* emultempl/pe.em (MajorSubsystemVersion): Set to 3 for armpe.