aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKai Tietz <kai.tietz@onevision.com>2012-02-11 20:02:03 +0000
committerKai Tietz <kai.tietz@onevision.com>2012-02-11 20:02:03 +0000
commitaa83d1ec50580e15fe002044c8d8babb6da8a4c0 (patch)
treece7c32fd204bf68c4be6141836c90599b30b2f96
parent98872a7c392dee50629a3cb54b85db4d904cae1c (diff)
downloadgdb-aa83d1ec50580e15fe002044c8d8babb6da8a4c0.zip
gdb-aa83d1ec50580e15fe002044c8d8babb6da8a4c0.tar.gz
gdb-aa83d1ec50580e15fe002044c8d8babb6da8a4c0.tar.bz2
ChangeLog binutils
2012-02-11 Kai Tietz <ktietz@redhat.com> PR binutils/13657 * defparse.y (%union): New type id_const. (opt_name2): New rule. (keyword_as_name): New rule. (opt_name): Adjust rule. (opt_import_name): Likewise. (opt_equal_name): Likewise. ChangeLog binutils/testsuite 2012-02-11 Kai Tietz <ktietz@redhat.com> * binutils-all/version.def: New file. * binutils-all/dlltool.exp: Add version-dll test. ChangeLog ld 2012-02-11 Kai Tietz <ktietz@redhat.com> * deffilep.y (%union): New type id_const. (opt_name2): New rule. (keyword_as_name): New rule. (dot_name): Replaced by opt_name2 rule. (opt_name): Adjust rule. (opt_equal_name): Likewise.
-rw-r--r--binutils/ChangeLog10
-rw-r--r--binutils/defparse.y66
-rw-r--r--binutils/testsuite/ChangeLog5
-rw-r--r--binutils/testsuite/binutils-all/dlltool.exp11
-rw-r--r--binutils/testsuite/binutils-all/version.def17
-rw-r--r--ld/ChangeLog9
-rw-r--r--ld/deffilep.y70
7 files changed, 156 insertions, 32 deletions
diff --git a/binutils/ChangeLog b/binutils/ChangeLog
index 1040f9e..261684e 100644
--- a/binutils/ChangeLog
+++ b/binutils/ChangeLog
@@ -1,5 +1,15 @@
2012-02-11 Kai Tietz <ktietz@redhat.com>
+ PR binutils/13657
+ * defparse.y (%union): New type id_const.
+ (opt_name2): New rule.
+ (keyword_as_name): New rule.
+ (opt_name): Adjust rule.
+ (opt_import_name): Likewise.
+ (opt_equal_name): Likewise.
+
+2012-02-11 Kai Tietz <ktietz@redhat.com>
+
PR binutils/13297
* resrc.c (write_rc_dialog_control): Omit text dump for
EDITTEXT, COMBOBOX, LISTBOX, and SCROLLBAR.
diff --git a/binutils/defparse.y b/binutils/defparse.y
index c05254a..b21ce93 100644
--- a/binutils/defparse.y
+++ b/binutils/defparse.y
@@ -28,6 +28,7 @@
%union {
char *id;
+ const char *id_const;
int number;
};
@@ -40,7 +41,8 @@
%token <number> NUMBER
%type <number> opt_base opt_ordinal opt_NONAME opt_CONSTANT opt_DATA opt_PRIVATE
%type <number> attr attr_list opt_number
-%type <id> opt_name opt_equal_name opt_import_name
+%type <id> opt_name opt_name2 opt_equal_name opt_import_name
+%type <id_const> keyword_as_name
%%
@@ -150,13 +152,61 @@ opt_PRIVATE:
| { $$ = 0; }
;
-opt_name: ID { $$ =$1; }
- | ID '.' ID
+keyword_as_name: NAME { $$ = "NAME"; }
+ | LIBRARY { $$ = "LIBRARY"; }
+ | DESCRIPTION { $$ = "DESCRIPTION"; }
+ | STACKSIZE { $$ = "STACKSIZE"; }
+ | HEAPSIZE { $$ = "HEAPSIZE"; }
+ | CODE { $$ = "CODE"; }
+ | DATA { $$ = "DATA"; }
+ | SECTIONS { $$ = "SECTIONS"; }
+ | EXPORTS { $$ = "EXPORTS"; }
+ | IMPORTS { $$ = "IMPORTS"; }
+ | VERSIONK { $$ = "VERSION"; }
+ | BASE { $$ = "BASE"; }
+ | CONSTANT { $$ = "CONSTANT"; }
+ | NONAME { $$ = "NONAME"; }
+ | PRIVATE { $$ = "PRIVATE"; }
+ | READ { $$ = "READ"; }
+ | WRITE { $$ = "WRITE"; }
+ | EXECUTE { $$ = "EXECUTE"; }
+ | SHARED { $$ = "SHARED"; }
+ | NONSHARED { $$ = "NONSHARED"; }
+ | SINGLE { $$ = "SINGLE"; }
+ | MULTIPLE { $$ = "MULTIPLE"; }
+ | INITINSTANCE { $$ = "INITINSTANCE"; }
+ | INITGLOBAL { $$ = "INITGLOBAL"; }
+ | TERMINSTANCE { $$ = "TERMINSTANCE"; }
+ | TERMGLOBAL { $$ = "TERMGLOBAL"; }
+ ;
+
+opt_name2: ID { $$ = $1; }
+ | '.' keyword_as_name
+ {
+ char *name = xmalloc (strlen ($2) + 2);
+ sprintf (name, ".%s", $2);
+ $$ = name;
+ }
+ | '.' opt_name2
+ {
+ char *name = xmalloc (strlen ($2) + 2);
+ sprintf (name, ".%s", $2);
+ $$ = name;
+ }
+ | keyword_as_name '.' opt_name2
+ {
+ char *name = xmalloc (strlen ($1) + 1 + strlen ($3) + 1);
+ sprintf (name, "%s.%s", $1, $3);
+ $$ = name;
+ }
+ | ID '.' opt_name2
{
char *name = xmalloc (strlen ($1) + 1 + strlen ($3) + 1);
sprintf (name, "%s.%s", $1, $3);
$$ = name;
}
+ ;
+opt_name: opt_name2 { $$ =$1; }
| { $$=""; }
;
@@ -166,18 +216,12 @@ opt_ordinal:
;
opt_import_name:
- EQUAL ID { $$ = $2; }
+ EQUAL opt_name2 { $$ = $2; }
| { $$ = 0; }
;
opt_equal_name:
- '=' ID { $$ = $2; }
- | '=' ID '.' ID
- {
- char *name = xmalloc (strlen ($2) + 1 + strlen ($4) + 1);
- sprintf (name, "%s.%s", $2, $4);
- $$ = name;
- }
+ '=' opt_name2 { $$ = $2; }
| { $$ = 0; }
;
diff --git a/binutils/testsuite/ChangeLog b/binutils/testsuite/ChangeLog
index 6f59baf..604c824 100644
--- a/binutils/testsuite/ChangeLog
+++ b/binutils/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2012-02-11 Kai Tietz <ktietz@redhat.com>
+
+ * binutils-all/version.def: New file.
+ * binutils-all/dlltool.exp: Add version-dll test.
+
2012-02-02 Nick Clifton <nickc@redhat.com>
* binutils-all/readelf.n: Add #pass to cope with targets that add
diff --git a/binutils/testsuite/binutils-all/dlltool.exp b/binutils/testsuite/binutils-all/dlltool.exp
index 5a19cf2..1493e6e 100644
--- a/binutils/testsuite/binutils-all/dlltool.exp
+++ b/binutils/testsuite/binutils-all/dlltool.exp
@@ -53,6 +53,17 @@ if { "$target_xfail" == "yes" } {
setup_xfail *-*
}
+verbose "$DLLTOOL -l libversion.a --def $srcdir/$subdir/version.def" 1
+catch "exec $DLLTOOL -l libersion.a --def $srcdir/$subdir/version.def" err
+
+if ![string match "" $err] then {
+ send_log "$err\n"
+ verbose "$err" 1
+ fail "dlltool (version.dll)"
+} else {
+ pass "dlltool (version.dll)"
+}
+
verbose "$DLLTOOL -p prefix --leading-underscore -l tmpdir/libalias.a -d $srcdir/$subdir/alias.def $dlltool_gas_flag" 1
catch "exec $DLLTOOL -p prefix --leading-underscore -l tmpdir/libalias.a -d $srcdir/$subdir/alias.def $dlltool_gas_flag" err
diff --git a/binutils/testsuite/binutils-all/version.def b/binutils/testsuite/binutils-all/version.def
new file mode 100644
index 0000000..ce1c4b5
--- /dev/null
+++ b/binutils/testsuite/binutils-all/version.def
@@ -0,0 +1,17 @@
+LIBRARY VERSION.dll
+EXPORTS
+GetFileVersionInfoA1
+GetFileVersionInfoSizeA2
+GetFileVersionInfoSizeW3
+GetFileVersionInfoW4
+VerFindFileA5
+VerFindFileW6
+VerInstallFileA7
+VerInstallFileW8
+VerLanguageNameA9
+VerLanguageNameW10
+VerQueryValueA11
+VerQueryValueIndexA12
+VerQueryValueIndexW13
+VerQueryValueW14
+
diff --git a/ld/ChangeLog b/ld/ChangeLog
index 6c79882..56e0777 100644
--- a/ld/ChangeLog
+++ b/ld/ChangeLog
@@ -1,3 +1,12 @@
+2012-02-11 Kai Tietz <ktietz@redhat.com>
+
+ * deffilep.y (%union): New type id_const.
+ (opt_name2): New rule.
+ (keyword_as_name): New rule.
+ (dot_name): Replaced by opt_name2 rule.
+ (opt_name): Adjust rule.
+ (opt_equal_name): Likewise.
+
2012-02-11 Pascal Obry <pascal@obry.net>
* pe-dll.c (auto_export): Use bsearch to speed up scan of exports
diff --git a/ld/deffilep.y b/ld/deffilep.y
index 58f3dd2..b192100 100644
--- a/ld/deffilep.y
+++ b/ld/deffilep.y
@@ -113,6 +113,7 @@ static const char *lex_parse_string_end = 0;
%union {
char *id;
+ const char *id_const;
int number;
char *digits;
};
@@ -127,8 +128,9 @@ static const char *lex_parse_string_end = 0;
%type <digits> opt_digits
%type <number> opt_base opt_ordinal
%type <number> attr attr_list opt_number exp_opt_list exp_opt
-%type <id> opt_name opt_equal_name dot_name anylang_id opt_id
+%type <id> opt_name opt_name2 opt_equal_name anylang_id opt_id
%type <id> opt_equalequal_name
+%type <id_const> keyword_as_name
%%
@@ -164,7 +166,7 @@ expline:
/* The opt_comma is necessary to support both the usual
DEF file syntax as well as .drectve syntax which
mandates <expsym>,<expoptlist>. */
- dot_name opt_equal_name opt_ordinal opt_comma exp_opt_list opt_comma opt_equalequal_name
+ opt_name2 opt_equal_name opt_ordinal opt_comma exp_opt_list opt_comma opt_equalequal_name
{ def_exports ($1, $2, $3, $5, $7); }
;
exp_opt_list:
@@ -234,19 +236,60 @@ attr:
| SHARED { $$=8;}
;
-opt_name: ID { $$ = $1; }
- | '.' ID
+
+keyword_as_name: BASE { $$ = "BASE"; }
+ | CODE { $$ = "CODE"; }
+ | CONSTANTU { $$ = "CONSTANT"; }
+ | CONSTANTL { $$ = "constant"; }
+ | DATAU { $$ = "DATA"; }
+ | DATAL { $$ = "data"; }
+ | DESCRIPTION { $$ = "DESCRIPTION"; }
+ | DIRECTIVE { $$ = "DIRECTIVE"; }
+ | EXECUTE { $$ = "EXECUTE"; }
+ | EXPORTS { $$ = "EXPORTS"; }
+ | HEAPSIZE { $$ = "HEAPSIZE"; }
+ | IMPORTS { $$ = "IMPORTS"; }
+ | LIBRARY { $$ = "LIBRARY"; }
+ | NAME { $$ = "NAME"; }
+ | NONAMEU { $$ = "NONAME"; }
+ | NONAMEL { $$ = "noname"; }
+ | PRIVATEU { $$ = "PRIVATE"; }
+ | PRIVATEL { $$ = "private"; }
+ | READ { $$ = "READ"; }
+ | SHARED { $$ = "SHARED"; }
+ | STACKSIZE_K { $$ = "STACKSIZE"; }
+ | VERSIONK { $$ = "VERSION"; }
+ | WRITE { $$ = "WRITE"; }
+ ;
+
+opt_name2: ID { $$ = $1; }
+ | '.' keyword_as_name
{
+ char *name = xmalloc (strlen ($2) + 2);
+ sprintf (name, ".%s", $2);
+ $$ = name;
+ }
+ | '.' opt_name2
+ {
char *name = def_pool_alloc (strlen ($2) + 2);
sprintf (name, ".%s", $2);
$$ = name;
}
- | ID '.' ID
+ | keyword_as_name '.' opt_name2
{
char *name = def_pool_alloc (strlen ($1) + 1 + strlen ($3) + 1);
sprintf (name, "%s.%s", $1, $3);
$$ = name;
}
+ | ID '.' opt_name2
+ {
+ char *name = def_pool_alloc (strlen ($1) + 1 + strlen ($3) + 1);
+ sprintf (name, "%s.%s", $1, $3);
+ $$ = name;
+ }
+ ;
+
+opt_name: opt_name2 { $$ = $1; }
| { $$ = ""; }
;
@@ -260,7 +303,7 @@ opt_ordinal:
;
opt_equal_name:
- '=' dot_name { $$ = $2; }
+ '=' opt_name2 { $$ = $2; }
| { $$ = 0; }
;
@@ -268,21 +311,6 @@ opt_base: BASE '=' NUMBER { $$ = $3;}
| { $$ = -1;}
;
-dot_name: ID { $$ = $1; }
- | '.' ID
- {
- char *name = def_pool_alloc (strlen ($2) + 2);
- sprintf (name, ".%s", $2);
- $$ = name;
- }
- | dot_name '.' ID
- {
- char *name = def_pool_alloc (strlen ($1) + 1 + strlen ($3) + 1);
- sprintf (name, "%s.%s", $1, $3);
- $$ = name;
- }
- ;
-
anylang_id: ID { $$ = $1; }
| '.' ID
{