arm-*-symbianelf executables are relocatable. This has a few implications: - We need to write out absolute relocations, like we do with shared libraries. - These need to be against a symbols because the RO and RW segments are relocated independently. In most cases we use the section symbol. - Imported data is addressed directly (with absolute relocations). Most of the changes are arm-specific, however I did need to add a new common-code flag to allow creation of the local dynamic symbols. Tested on i686-linux, arm-none-eabi and arm-none-symbianelf. Ok? Paul This depends on a previous patch for correct symbol ordering: http://sourceware.org/ml/binutils/2005-02/msg00169.html 2005-02-09 Paul Brook * elf-bfd.h (struct elf_link_hash_table): Add keep_local_dynsyms. * elf.c (_bfd_elf_link_hash_table_init): Initialize it. * elflink.c (bfd_elf_link_record_dynamic_symbol): Allow creation of local dynamic symbols. (bfd_elf_record_link_assignment): Allow creation of dynamic section symbols in ecxecutables. (_bfd_elf_link_renumber_dynsyms): Ditto. (bfd_elf_final_link): Ditto. * elf32-arm.c (elf32_arm_final_link_relocate): Copy absolute relocations into SymbianOS executables. (elf32_arm_check_relocs): Crate dynamic sections for SymbianOS executables. Copy absolute relocations into SymbianOS executables. (elf32_arm_adjust_dynamic_symbol): Don't create copy relocations in symbian objects. (allocate_dynrelocs): Copy relocations for SymbianOS executables. Output dynamic symbols for symbols defined in linker scripts.