aboutsummaryrefslogtreecommitdiff
path: root/ld
diff options
context:
space:
mode:
Diffstat (limited to 'ld')
-rw-r--r--ld/ChangeLog5
-rw-r--r--ld/pe-dll.c10
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;