diff options
Diffstat (limited to 'ld')
-rw-r--r-- | ld/ChangeLog | 5 | ||||
-rw-r--r-- | ld/pe-dll.c | 10 |
2 files changed, 12 insertions, 3 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index 38ac4fe..37138d9 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,8 @@ +2004-03-08 Danny Smith <dannysmith@users.sourceforge.net> + + * pe-dll.c (pe_dll_generate_implib): Skip sections marked as + private when building implib. + 2004-03-05 Nathan Sidwell <nathan@codesourcery.com> * ldlang.c (lang_add_section): Don't force SEC_LOAD on diff --git a/ld/pe-dll.c b/ld/pe-dll.c index 5c4a3ad..10d636e 100644 --- a/ld/pe-dll.c +++ b/ld/pe-dll.c @@ -26,6 +26,7 @@ #include "libiberty.h" #include "safe-ctype.h" +#include <stdint.h> #include <time.h> #include "ld.h" @@ -917,8 +918,8 @@ fill_edata (bfd *abfd, struct bfd_link_info *info ATTRIBUTE_UNUSED) { int s, hint; unsigned char *edirectory; - unsigned long *eaddresses; - unsigned long *enameptrs; + uint32_t *eaddresses; + uint32_t *enameptrs; unsigned short *eordinals; unsigned char *enamestr; time_t now; @@ -929,7 +930,7 @@ fill_edata (bfd *abfd, struct bfd_link_info *info ATTRIBUTE_UNUSED) /* Note use of array pointer math here. */ edirectory = edata_d; - eaddresses = (unsigned long *) (edata_d + 40); + eaddresses = (uint32_t *) (edata_d + 40); enameptrs = eaddresses + export_table_size; eordinals = (unsigned short *) (enameptrs + count_exported_byname); enamestr = (char *) (eordinals + count_exported_byname); @@ -2257,6 +2258,9 @@ pe_dll_generate_implib (def_file *def, const char *impfilename) char *internal = def->exports[i].internal_name; bfd *n; + /* Don't add PRIVATE entries to import lib. */ + if (pe_def_file->exports[i].flag_private) + continue; def->exports[i].internal_name = def->exports[i].name; n = make_one (def->exports + i, outarch); n->next = head; |