aboutsummaryrefslogtreecommitdiff
path: root/binutils
diff options
context:
space:
mode:
authorRudy <jacky.chouchou@yandex.ru>2016-11-14 16:30:45 +0000
committerNick Clifton <nickc@redhat.com>2016-11-14 16:30:45 +0000
commit35fd2ddeb1d90f1750401cfb6d01fe055656b88d (patch)
treee5ab3c67d93a00c229975c5050ceed78cfa7bef7 /binutils
parentdb58b3735f45345c06cb9a14d0f83f5b26c1ebf3 (diff)
downloadbinutils-35fd2ddeb1d90f1750401cfb6d01fe055656b88d.zip
binutils-35fd2ddeb1d90f1750401cfb6d01fe055656b88d.tar.gz
binutils-35fd2ddeb1d90f1750401cfb6d01fe055656b88d.tar.bz2
Generate correct hint value for IDATA6.
PR binutils/20814 * dlltool.c (struct export): Remove hint field. (make_one_lib_file): Store the ordinal value for IDATA6 not the hint. (gen_lib_file): Delete reference to hint field. (mangle_defs): Delete computation of hint field.
Diffstat (limited to 'binutils')
-rw-r--r--binutils/ChangeLog9
-rw-r--r--binutils/dlltool.c21
2 files changed, 14 insertions, 16 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 4c4bb6b..3347bdb 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,3 +1,12 @@
+2016-11-14 Rudy <jacky.chouchou@yandex.ru>
+
+ PR binutils/20814
+ * dlltool.c (struct export): Remove hint field.
+ (make_one_lib_file): Store the ordinal value for IDATA6 not the
+ hint.
+ (gen_lib_file): Delete reference to hint field.
+ (mangle_defs): Delete computation of hint field.
+
2016-11-11 Nick Clifton <nickc@redhat.com>
PR binutils/20751
diff --git a/binutils/dlltool.c b/binutils/dlltool.c
index e7b40ee..4cde91a 100644
--- a/binutils/dlltool.c
+++ b/binutils/dlltool.c
@@ -780,10 +780,9 @@ typedef struct export
int ordinal;
int constant;
int noname; /* Don't put name in image file. */
- int private; /* Don't put reference in import lib. */
+ int private; /* Don't put reference in import lib. */
int data;
- int hint;
- int forward; /* Number of forward label, 0 means no forward. */
+ int forward; /* Number of forward label, 0 means no forward. */
struct export *next;
}
export_type;
@@ -2776,10 +2775,8 @@ make_one_lib_file (export_type *exp, int i, int delay)
case IDATA6:
if (!exp->noname)
{
- /* This used to add 1 to exp->hint. I don't know
- why it did that, and it does not match what I see
- in programs compiled with the MS tools. */
- int idx = exp->hint;
+ int idx = exp->ordinal;
+
if (exp->its_name)
si->size = strlen (exp->its_name) + 3;
else
@@ -3263,7 +3260,6 @@ gen_lib_file (int delay)
alias_exp.noname = exp->noname;
alias_exp.private = exp->private;
alias_exp.data = exp->data;
- alias_exp.hint = exp->hint;
alias_exp.forward = exp->forward;
alias_exp.next = exp->next;
n = make_one_lib_file (&alias_exp, i + PREFIX_ALIAS_BASE, delay);
@@ -3927,10 +3923,8 @@ mangle_defs (void)
{
/* First work out the minimum ordinal chosen. */
export_type *exp;
-
- int i;
- int hint = 0;
export_type **d_export_vec = xmalloc (sizeof (export_type *) * d_nfuncs);
+ int i;
inform (_("Processing definitions"));
@@ -3959,11 +3953,6 @@ mangle_defs (void)
qsort (d_exports_lexically, i, sizeof (export_type *), nfunc);
- /* Fill exp entries with their hint values. */
- for (i = 0; i < d_nfuncs; i++)
- if (!d_exports_lexically[i]->noname || show_allnames)
- d_exports_lexically[i]->hint = hint++;
-
inform (_("Processed definitions"));
}