diff options
author | Jan Beulich <jbeulich@novell.com> | 2005-01-31 09:46:15 +0000 |
---|---|---|
committer | Jan Beulich <jbeulich@novell.com> | 2005-01-31 09:46:15 +0000 |
commit | 75e0991382fb4617434490056616fab346359fc2 (patch) | |
tree | ee462516b5bfbb7befa70abf62d2dcf1fc5b2480 /gas/testsuite | |
parent | f4660e2c883d36c3551141051ec3917e2656f3eb (diff) | |
download | gdb-75e0991382fb4617434490056616fab346359fc2.zip gdb-75e0991382fb4617434490056616fab346359fc2.tar.gz gdb-75e0991382fb4617434490056616fab346359fc2.tar.bz2 |
gas/
2005-01-31 Jan Beulich <jbeulich@novell.com>
* config/tc-ia64.c (unwind): Remove proc_end (now an automatic
variable in dot_endp). Add body and insn. Make prologue,
prologue_mask, body, and insn bitfields.
(fixup_unw_records): Remove spurious new-lines from end of diagnostic
messages.
(in_procedure, in_prologue, in_body): New.
(dot_fframe, dot_vframe, dot_vframesp, dot_vframepsp, dot_save,
dot_restore, dot_restorereg, dot_restorereg_p, dot_handlerdata,
dot_unwentry, dot_altrp, dot_savemem, dot_saveg, dot_savef, dot_saveb,
dot_savegf, dot_spill, dot_spillreg, dot_spillmem, dot_spillreg_p,
dot_spillmem_p, dot_label_state, dot_copy_state, dot_unwabi,
dot_personality): Use the appropriate one of the above.
(dot_proc): Clear unwind.proc_start; set to current location only if
none of the entry points were valid. Check for non-zero-length entry
point names. Check that entry points aren't defined, yet. Clear
unwind.prologue, unwind.body, and unwind.insn.
(dot_body): Call in_procedure. Check that first directive in procedure
had no insns emitted before. Set unwind.body.
(dot_prologue): Call in_procedure. Check that not already in prologue.
Check that first directive in procedure had no insns emitted before.
Clear unwind.body.
(dot_endp): Call in_procedure. Declare proc_end. Check for non-zero-
length entry point names. Check that entry points became defined.
(md_assemble): Set unwind.insn once unwind.proc_start is defined.
gas/testsuite/
2005-01-31 Jan Beulich <jbeulich@novell.com>
* gas/ia64/proc.[ls]: New.
* gas/ia64/unwind-err.[ls]: New.
* gas/ia64/ia64.exp: Run new tests.
Diffstat (limited to 'gas/testsuite')
-rw-r--r-- | gas/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gas/testsuite/gas/ia64/ia64.exp | 2 | ||||
-rw-r--r-- | gas/testsuite/gas/ia64/proc.l | 5 | ||||
-rw-r--r-- | gas/testsuite/gas/ia64/proc.s | 13 | ||||
-rw-r--r-- | gas/testsuite/gas/ia64/unwind-err.l | 34 | ||||
-rw-r--r-- | gas/testsuite/gas/ia64/unwind-err.s | 68 |
6 files changed, 128 insertions, 0 deletions
diff --git a/gas/testsuite/ChangeLog b/gas/testsuite/ChangeLog index bfc1de6..353e3ff 100644 --- a/gas/testsuite/ChangeLog +++ b/gas/testsuite/ChangeLog @@ -1,5 +1,11 @@ 2005-01-31 Jan Beulich <jbeulich@novell.com> + * gas/ia64/proc.[ls]: New. + * gas/ia64/unwind-err.[ls]: New. + * gas/ia64/ia64.exp: Run new tests. + +2005-01-31 Jan Beulich <jbeulich@novell.com> + * gas/ia64/bundling.[ds]: New. * gas/ia64/label.[ls]: New. * gas/ia64/last.[ls]: New. diff --git a/gas/testsuite/gas/ia64/ia64.exp b/gas/testsuite/gas/ia64/ia64.exp index 57cea89..c5dc9e1 100644 --- a/gas/testsuite/gas/ia64/ia64.exp +++ b/gas/testsuite/gas/ia64/ia64.exp @@ -65,5 +65,7 @@ if [istarget "ia64-*"] then { run_dump_test "bundling" run_list_test "label" "" run_list_test "last" "" + run_list_test "proc" "" run_list_test "slot2" "" + run_list_test "unwind-err" "" } diff --git a/gas/testsuite/gas/ia64/proc.l b/gas/testsuite/gas/ia64/proc.l new file mode 100644 index 0000000..8b33228 --- /dev/null +++ b/gas/testsuite/gas/ia64/proc.l @@ -0,0 +1,5 @@ +.*: Assembler messages: +.*:4: Error: .* already defined.* +.*:7: Error: .* not defined.* +.*:12: Error: Empty argument of .proc +.*:13: Error: Empty argument of .endp diff --git a/gas/testsuite/gas/ia64/proc.s b/gas/testsuite/gas/ia64/proc.s new file mode 100644 index 0000000..9225a0a --- /dev/null +++ b/gas/testsuite/gas/ia64/proc.s @@ -0,0 +1,13 @@ +func1:: + br.ret.sptk rp + +.proc func, func1, func2 +func:: + br.ret.sptk rp +.endp func, func1, func2 + +func2:: + br.ret.sptk rp + +.proc +.endp diff --git a/gas/testsuite/gas/ia64/unwind-err.l b/gas/testsuite/gas/ia64/unwind-err.l new file mode 100644 index 0000000..7641df7 --- /dev/null +++ b/gas/testsuite/gas/ia64/unwind-err.l @@ -0,0 +1,34 @@ +.*: Assembler messages: +.*:1: Error: .endp outside of procedure +.*:2: Error: .personality outside of procedure +.*:3: Error: .unwentry outside of procedure +.*:4: Error: .unwabi outside of procedure +.*:5: Error: .handlerdata outside of procedure +.*:6: Error: .prologue outside of procedure +.*:7: Error: .body outside of procedure +.*:8: Error: .spillreg outside of procedure +.*:9: Error: .spillreg.p outside of procedure +.*:10: Error: .spillmem outside of procedure +.*:11: Error: .spillmem.p outside of procedure +.*:12: Error: .spillmem outside of procedure +.*:13: Error: .spillmem.p outside of procedure +.*:14: Error: .restorereg outside of procedure +.*:15: Error: .restorereg.p outside of procedure +.*:24: Error: .label_state outside of body region +.*:25: Error: .copy_state outside of body region +.*:26: Error: .fframe outside of prologue +.*:27: Error: .vframe outside of prologue +.*:28: Error: .spill outside of prologue +.*:29: Error: .restore outside of body region +.*:30: Error: .save outside of prologue +.*:31: Error: .savesp outside of prologue +.*:32: Error: .savepsp outside of prologue +.*:33: Error: .save.g outside of prologue +.*:34: Error: .save.gf outside of prologue +.*:35: Error: .save.f outside of prologue +.*:36: Error: .save.b outside of prologue +.*:37: Error: .altrp outside of prologue +.*:42: Error: .prologue within prologue +.*:52: Error: .body outside of procedure +.*:59: Warning: Initial .prologue.* +.*:66: Warning: Initial .body.* diff --git a/gas/testsuite/gas/ia64/unwind-err.s b/gas/testsuite/gas/ia64/unwind-err.s new file mode 100644 index 0000000..49cb6c9 --- /dev/null +++ b/gas/testsuite/gas/ia64/unwind-err.s @@ -0,0 +1,68 @@ +.endp xyz +.personality personality +.unwentry +.unwabi @svr4, 0 +.handlerdata +.prologue +.body +.spillreg r4, r8 +.spillreg.p p1, r4, r8 +.spillsp r5, 0 +.spillsp.p p2, r5, 0 +.spillpsp r6, 0 +.spillpsp.p p2, r6, 0 +.restorereg r4 +.restorereg.p p1, r4 + +.proc personality +personality: +.endp personality + +.proc start +start: + +.label_state 1 +.copy_state 1 +.fframe 0 +.vframe r0 +.spill 0 +.restore sp +.save rp, r0 +.savesp pr, 0 +.savepsp ar.fpsr, 0 +.save.g 2 +.save.gf 2,2 +.save.f 2 +.save.b 2 +.altrp b7 +.body + + + .prologue + .prologue + .save ar.lc, r31 + mov r31 = ar.lc + ;; + .body + .body + br.ret.sptk rp + ;; +.personality personality +.handlerdata +.body + +.endp start + +.proc late_prologue +late_prologue: + nop 0 + .prologue + nop 0 +.endp late_prologue + +.proc late_body +late_body: + nop 0 + .body + nop 0 +.endp late_body |