*** pe-dll.org Thu Oct 5 23:56:28 2000 --- pe-dll.c Sun Oct 8 17:06:30 2000 *************** *** 311,317 **** if (*sn == '_') sn++; if (auto_export (pe_def_file, sn)) ! def_file_add_export (pe_def_file, sn, 0, -1); } } } --- 311,322 ---- if (*sn == '_') sn++; if (auto_export (pe_def_file, sn)) ! { ! def_file_export *p; ! p=def_file_add_export (pe_def_file, sn, 0, -1); ! /* Fill data flag properly, from dlltool.c */ ! p->flag_data = !(symbols[j]->flags & BSF_FUNCTION); ! } } } } *************** *** 1405,1411 **** bfd *parent; { asection *tx, *id7, *id5, *id4, *id6; ! unsigned char *td, *d7, *d5, *d4, *d6 = NULL; int len; char *oname; bfd *abfd; --- 1408,1414 ---- bfd *parent; { asection *tx, *id7, *id5, *id4, *id6; ! unsigned char *td = NULL, *d7, *d5, *d4, *d6 = NULL; int len; char *oname; bfd *abfd; *************** *** 1454,1478 **** quick_symbol (abfd, U("__imp_"), exp->internal_name, "", id5, BSF_GLOBAL, 0); ! bfd_set_section_size (abfd, tx, jmp_byte_count); ! td = (unsigned char *) xmalloc (jmp_byte_count); ! tx->contents = td; ! memcpy (td, jmp_bytes, jmp_byte_count); ! switch (pe_details->pe_arch) ! { ! case PE_ARCH_i386: ! quick_reloc (abfd, 2, BFD_RELOC_32, 2); ! break; ! case PE_ARCH_sh: ! quick_reloc (abfd, 8, BFD_RELOC_32, 2); ! break; ! case PE_ARCH_mips: ! quick_reloc (abfd, 0, BFD_RELOC_HI16_S, 2); ! quick_reloc (abfd, 0, BFD_RELOC_LO16, 0); /* MIPS_R_PAIR */ ! quick_reloc (abfd, 4, BFD_RELOC_LO16, 2); ! break; ! } ! save_relocs (tx); bfd_set_section_size (abfd, id7, 4); d7 = (unsigned char *) xmalloc (4); --- 1457,1484 ---- quick_symbol (abfd, U("__imp_"), exp->internal_name, "", id5, BSF_GLOBAL, 0); ! if (! exp->flag_data) ! { ! bfd_set_section_size (abfd, tx, jmp_byte_count); ! td = (unsigned char *) xmalloc (jmp_byte_count); ! tx->contents = td; ! memcpy (td, jmp_bytes, jmp_byte_count); ! switch (pe_details->pe_arch) ! { ! case PE_ARCH_i386: ! quick_reloc (abfd, 2, BFD_RELOC_32, 2); ! break; ! case PE_ARCH_sh: ! quick_reloc (abfd, 8, BFD_RELOC_32, 2); ! break; ! case PE_ARCH_mips: ! quick_reloc (abfd, 0, BFD_RELOC_HI16_S, 2); ! quick_reloc (abfd, 0, BFD_RELOC_LO16, 0); /* MIPS_R_PAIR */ ! quick_reloc (abfd, 4, BFD_RELOC_LO16, 2); ! break; ! } ! save_relocs (tx); ! } bfd_set_section_size (abfd, id7, 4); d7 = (unsigned char *) xmalloc (4);