Movatterモバイル変換
[0]ホーム
This is the mail archive of thebinutils@sources.redhat.commailing list for thebinutils project.
arm-wince-pe-ld
- From: "Rainer Keuchel" <keuchel at rainer-keuchel dot de>
- To: <binutils at sources dot redhat dot com>
- Date: Fri, 6 Jun 2003 18:54:39 +0200
- Subject: arm-wince-pe-ld
Could someone comment on the following workarounds?I don't send diff so it's clearer what is done.It seems to be curing only the symptoms, but works.**********************************************************************// pe-dll.c case BITS_AND_SHIFT (26, 2): reloc_data[total_relocs].type = 5; total_relocs++; break;#ifdef KEUCHEL case BITS_AND_SHIFT (24, 2): {if(relocs[i]->howto->type == 5 /*ARM_26D*/) { // ignore#if 0 struct symbol_cache_entry *sym = *relocs[i]->sym_ptr_ptr; fprintf(stderr, "Ignoring ARM_26D: sec %s secvma 0x%x " "symvma: %x type %d vma %x name %s\n", s->output_section->name, sec_vma, sym_vma, relocs[i]->howto->type, reloc_data[total_relocs].vma, sym->name);#endif }else { einfo (_("%XError: %d-bit reloc, type %d in exe/dll\n"), relocs[i]->howto->bitsize); } } break;#endif**********************************************************************// ldmain.cstatic bfd_booleanmultiple_definition (info, name, obfd, osec, oval, nbfd, nsec, nval) struct bfd_link_info *info ATTRIBUTE_UNUSED; const char *name; bfd *obfd; asection *osec; bfd_vma oval; bfd *nbfd; asection *nsec; bfd_vma nval;{ /* If either section has the output_section field set to bfd_abs_section_ptr, it means that the section is being discarded, and this is not really a multiple definition at all. FIXME: It would be cleaner to somehow ignore symbols defined in sections which are being discarded. */ if ((osec->output_section != NULL && ! bfd_is_abs_section (osec) && bfd_is_abs_section (osec->output_section)) || (nsec->output_section != NULL && ! bfd_is_abs_section (nsec) && bfd_is_abs_section (nsec->output_section))) return TRUE;#ifdef KEUCHEL // What if osec->output_section and nsec->output_section are both NULL? // And oval or nval is NULL? When they are null, it cannot really // be defined? if(oval == NULL || nval == NULL) return TRUE; fprintf(stderr, "osec: %x %s nsec: %x %s oval %x nval %x\n", osec->output_section, (osec->output_section) ? osec->output_section->name : "nosec", nsec->output_section, (nsec->output_section) ? nsec->output_section->name : "nosec", oval, nval );#endif einfo (_("%X%C: multiple definition of `%T'\n"), nbfd, nsec, nval, name); if (obfd != (bfd *) NULL) einfo (_("%D: first defined here\n"), obfd, osec, oval);
[8]ページ先頭