summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Beulich <jbeulich@novell.com>2005-02-02 07:37:36 +0000
committerJan Beulich <jbeulich@novell.com>2005-02-02 07:37:36 +0000
commit6ce4845a306d8eeff2e2ad0066a611c992bc8818 (patch)
tree867e88eb4ac8e5feb5397efde5715371508d01e9
parent8b1da294292ed3ea7fdb1492574f17200816c1e7 (diff)
downloadbinutils-redhat-6ce4845a306d8eeff2e2ad0066a611c992bc8818.tar.gz
gas/
2005-02-02 Jan Beulich <jbeulich@novell.com> * config/tc-ia64.c (dot_pred_rel): Update comment. Handle @-prefixed designators along with quoted ones. Free copy of quoted designator when done. gas/testsuite/ 2005-02-02 Jan Beulich <jbeulich@novell.com> * gas/ia64/pred-rel.s: New. * gas/ia64/ia64.exp: Run new test.
-rw-r--r--gas/ChangeLog6
-rw-r--r--gas/config/tc-ia64.c47
-rw-r--r--gas/testsuite/ChangeLog5
-rw-r--r--gas/testsuite/gas/ia64/ia64.exp1
-rw-r--r--gas/testsuite/gas/ia64/pred-rel.s21
5 files changed, 64 insertions, 16 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog
index 90c5feb878..d004819c40 100644
--- a/gas/ChangeLog
+++ b/gas/ChangeLog
@@ -1,3 +1,9 @@
+2005-02-02 Jan Beulich <jbeulich@novell.com>
+
+ * config/tc-ia64.c (dot_pred_rel): Update comment. Handle @-prefixed
+ designators along with quoted ones. Free copy of quoted designator
+ when done.
+
2005-02-01 Ben Elliston <bje@au.ibm.com>
* config/atof-ieee.c, config/obj-coff.c, config/obj-elf.c,
diff --git a/gas/config/tc-ia64.c b/gas/config/tc-ia64.c
index 250fa7771c..48ad67221e 100644
--- a/gas/config/tc-ia64.c
+++ b/gas/config/tc-ia64.c
@@ -4928,9 +4928,9 @@ print_prmask (mask)
}
/*
- .pred.rel.clear [p1 [,p2 [,...]]] (also .pred.rel "clear")
- .pred.rel.imply p1, p2 (also .pred.rel "imply")
- .pred.rel.mutex p1, p2 [,...] (also .pred.rel "mutex")
+ .pred.rel.clear [p1 [,p2 [,...]]] (also .pred.rel "clear" or @clear)
+ .pred.rel.imply p1, p2 (also .pred.rel "imply" or @imply)
+ .pred.rel.mutex p1, p2 [,...] (also .pred.rel "mutex" or @mutex)
.pred.safe_across_calls p1 [, p2 [,...]]
*/
@@ -4944,28 +4944,43 @@ dot_pred_rel (type)
if (type == 0)
{
- if (*input_line_pointer != '"')
- {
- as_bad (_("Missing predicate relation type"));
- ignore_rest_of_line ();
- return;
- }
- else
+ if (*input_line_pointer == '"')
{
int len;
char *form = demand_copy_C_string (&len);
+
if (strcmp (form, "mutex") == 0)
type = 'm';
else if (strcmp (form, "clear") == 0)
type = 'c';
else if (strcmp (form, "imply") == 0)
type = 'i';
- else
- {
- as_bad (_("Unrecognized predicate relation type"));
- ignore_rest_of_line ();
- return;
- }
+ obstack_free (&notes, form);
+ }
+ else if (*input_line_pointer == '@')
+ {
+ char *form = ++input_line_pointer;
+ char c = get_symbol_end();
+
+ if (strcmp (form, "mutex") == 0)
+ type = 'm';
+ else if (strcmp (form, "clear") == 0)
+ type = 'c';
+ else if (strcmp (form, "imply") == 0)
+ type = 'i';
+ *input_line_pointer = c;
+ }
+ else
+ {
+ as_bad (_("Missing predicate relation type"));
+ ignore_rest_of_line ();
+ return;
+ }
+ if (type == 0)
+ {
+ as_bad (_("Unrecognized predicate relation type"));
+ ignore_rest_of_line ();
+ return;
}
if (*input_line_pointer == ',')
++input_line_pointer;
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog
index a9754d3187..b72178ad8d 100644
--- a/gas/testsuite/ChangeLog
+++ b/gas/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2005-02-02 Jan Beulich <jbeulich@novell.com>
+
+ * gas/ia64/pred-rel.s: New.
+ * gas/ia64/ia64.exp: Run new test.
+
2005-01-31 Daniel Jacobowitz <dan@codesourcery.com>
* gas/mips/elf-rel23.d, gas/mips/elf-rel23a.d: Accept little-endian.
diff --git a/gas/testsuite/gas/ia64/ia64.exp b/gas/testsuite/gas/ia64/ia64.exp
index 89c5d20aec..d36f92fb62 100644
--- a/gas/testsuite/gas/ia64/ia64.exp
+++ b/gas/testsuite/gas/ia64/ia64.exp
@@ -37,6 +37,7 @@ if [istarget "ia64-*"] then {
run_dump_test "dv-branch"
run_dump_test "dv-imply"
run_dump_test "dv-mutex"
+ gas_test "pred-rel.s" "" "" ".pred.rel alternative forms"
run_dump_test "dv-safe"
run_dump_test "dv-srlz"
run_dump_test "tls"
diff --git a/gas/testsuite/gas/ia64/pred-rel.s b/gas/testsuite/gas/ia64/pred-rel.s
new file mode 100644
index 0000000000..1316921a6b
--- /dev/null
+++ b/gas/testsuite/gas/ia64/pred-rel.s
@@ -0,0 +1,21 @@
+// Make sure all forms of .pred.rel are accepted
+_start:
+ .pred.rel "mutex", p1, p2
+ .pred.rel "imply", p2, p3
+ .pred.rel "clear", p1, p2, p3
+
+ .pred.rel "mutex" p1, p2
+ .pred.rel "imply" p2, p3
+ .pred.rel "clear" p1, p2, p3
+
+ .pred.rel.mutex p1, p2
+ .pred.rel.imply p2, p3
+ .pred.rel.clear p1, p2, p3
+
+ .pred.rel @mutex, p1, p2
+ .pred.rel @imply, p2, p3
+ .pred.rel @clear, p1, p2, p3
+
+ .pred.rel @mutex p1, p2
+ .pred.rel @imply p2, p3
+ .pred.rel @clear p1, p2, p3