* read.c (s_weakref): Do not permit redefinitions.
* symbols.c (colon): Do not permit redefinitions of equated
symbols.
gas/testsuite/ChangeLog:
* gas/all/gas.exp: Remove weakref xfail. Run weakref4.s.
* gas/all/weakref1.s: Move redefinition bits to...
* gas/all/weakref4.s: ... new file.
* gas/all/weakref1.d: Remove command moved to weakref1u. Adjust
remaining command for leading tabs. Regenerate.
* gas/all/weakref1l.d: Regenerate.
* gas/all/weakref1u.d: Likewise.
* gas/all/wealref1w.d: Likewise.
+2005-11-04 Alexandre Oliva <aoliva@redhat.com>
+
+ * read.c (s_weakref): Do not permit redefinitions.
+ * symbols.c (colon): Do not permit redefinitions of equated
+ symbols.
+
2005-11-01 Thiemo Seufer <ths@networkno.de>
PR gas/1299
symbolP = symbol_find_or_make (name);
+ if (S_IS_DEFINED (symbolP) || symbol_equated_p (symbolP))
+ {
+ as_bad (_("symbol `%s' is already defined"), name);
+ *end_name = delim;
+ ignore_rest_of_line ();
+ return;
+ }
+
*end_name = delim;
SKIP_WHITESPACE ();
local_symbol_set_frag (locsym, frag_now);
locsym->lsy_value = frag_now_fix ();
}
- else if (!S_IS_DEFINED (symbolP) || S_IS_COMMON (symbolP))
+ else if (!(S_IS_DEFINED (symbolP) || symbol_equated_p (symbolP))
+ || S_IS_COMMON (symbolP))
{
if (S_GET_VALUE (symbolP) == 0)
{
+2005-11-04 Alexandre Oliva <aoliva@redhat.com>
+
+ * gas/all/gas.exp: Remove weakref xfail. Run weakref4.s.
+ * gas/all/weakref1.s: Move redefinition bits to...
+ * gas/all/weakref4.s: ... new file.
+ * gas/all/weakref1.d: Remove command moved to weakref1u. Adjust
+ remaining command for leading tabs. Regenerate.
+ * gas/all/weakref1l.d: Regenerate.
+ * gas/all/weakref1u.d: Likewise.
+ * gas/all/wealref1w.d: Likewise.
+
2005-11-04 Jan Beulich <jbeulich@novell.com>
* gas/all/gas.exp: xfail weakref dump tests for all targets.
case $target_triplet in {
{ z80-*-* } { }
default {
- setup_xfail *-*-*
run_dump_test weakref1
- setup_xfail *-*-*
run_dump_test weakref1g
- setup_xfail *-*-*
run_dump_test weakref1l
- setup_xfail *-*-*
run_dump_test weakref1u
- setup_xfail *-*-*
run_dump_test weakref1w
}
}
gas_test_error "weakref2.s" "" "e: would close weakref loop: e => a => b => c => d => e"
gas_test_error "weakref3.s" "" "a: would close weakref loop: a => b => c => d => e => a"
+gas_test_error "weakref4.s" "" "is already defined"
load_lib gas-dg.exp
dg-init
# the rest of this file is generated with the following script:
# # script begin
# echo \#...
-# sed -n 's:^\.weakref .*, \(\(u\|\(w\)\).*\)$:.*( \3 |\(sec 0\)).* \1:p' weakref1.s | uniq | while read line; do echo "$line"; echo "#..."; done
-
-# sed -n 's:^\.long \(W\|\)\(.*[^a-z]\)[a-z]*\(\| - .*\)$:\2:p' weakref1.s | sed -e 's,^[lg].*,(&|\\.text)(\\+0x[0-9a-f]+)?,' | sed 's,^,[0-9a-f]+ [^ ]* +,'
+# sed -n 's:^[ ]*\.long \(W\|\)\(.*[^a-z]\)[a-z]*\(\| - .*\)$:\2:p' weakref1.s | sed -e 's,^[lg].*,(&|\\.text)(\\+0x[0-9a-f]+)?,' | sed 's,^,[0-9a-f]+ [^ ]* +,'
# # script output:
#...
[0-9a-f]+ [^ ]* +wa1
[0-9a-f]+ [^ ]* +ww9
[0-9a-f]+ [^ ]* +ww10
[0-9a-f]+ [^ ]* +ww10
-[0-9a-f]+ [^ ]* +um2
-[0-9a-f]+ [^ ]* +wm3
[0-9a-f]+ [^ ]* +um5
[0-9a-f]+ [^ ]* +wm6
[0-9a-f]+ [^ ]* +wm7
[0-9a-f]+ [^ ]* +uh8
[0-9a-f]+ [^ ]* +uh9
[0-9a-f]+ [^ ]* +uh9
-[0-9a-f]+ [^ ]* +(lr1|\.text)(\+0x[0-9a-f]+)?
-[0-9a-f]+ [^ ]* +(lr1|\.text)(\+0x[0-9a-f]+)?
-[0-9a-f]+ [^ ]* +(lr2|\.text)(\+0x[0-9a-f]+)?
-[0-9a-f]+ [^ ]* +(lr2|\.text)(\+0x[0-9a-f]+)?
-[0-9a-f]+ [^ ]* +wr3
-[0-9a-f]+ [^ ]* +wr3
-[0-9a-f]+ [^ ]* +wr4
-[0-9a-f]+ [^ ]* +wr5
-[0-9a-f]+ [^ ]* +(lr6|\.text)(\+0x[0-9a-f]+)?
-[0-9a-f]+ [^ ]* +ur6
-[0-9a-f]+ [^ ]* +(lr7|\.text)(\+0x[0-9a-f]+)?
-[0-9a-f]+ [^ ]* +(lr7|\.text)(\+0x[0-9a-f]+)?
[0-9a-f]+ [^ ]* +(ld1|\.text)(\+0x[0-9a-f]+)?
[0-9a-f]+ [^ ]* +(ld2|\.text)(\+0x[0-9a-f]+)?
[0-9a-f]+ [^ ]* +(ld3|\.text)(\+0x[0-9a-f]+)?
.weak ww10
/* m# test multiple weakrefs */
- .weakref Wnm1, nm1
- .weakref Wnm1, nm1
-
- .weakref Wum2, um2
- .weakref Wum2, um2
- .long um2
-
- .weakref Wwm3, wm3
- .weakref Wwm3, wm3
- .long Wwm3
-
.weakref Wnm4a, nm4
.weakref Wnm4b, nm4
.weakref Wuh9a, uh9
.long uh9
-/* r# weakref redefinitions, to and from */
- .weakref lr1, nr1
- .long lr1
- .set lr1, l
- .long lr1
-
- .long lr2
- .weakref lr2, nr2
- .set lr2, l
- .long lr2
-
- .set Wwr3, l
- .long Wwr3
- .weakref Wwr3, wr3
- .long Wwr3
-
- .set Wwr4, l
- .weakref Wwr4, wr4
- .long Wwr4
-
- .set Wwr5, l
- .long Wwr5
- .weakref Wwr5, wr5
-
- .weakref lr6, ur6
- .long lr6
- .set lr6, l
- .long ur6
-
- .weakref lr7, nr7
- .long lr7
-lr7:
- .long lr7
-
/* d# target symbol definitions */
.weakref Wld1, ld1
.long Wld1
#...
.* t l
#...
-.* t lr1
-#...
-.* t lr2
-#...
-.* t lr6
-#...
-.* t lr7
-#...
.* t ld1
#...
.* t ld2
#...
.* U uc9
#...
-.* U um2
-#...
.* U um5
#...
.* U uh8
#...
.* U uh9
#...
-.* U ur6
-#...
.* U ud5
#pass
#...
.* w ww10
#...
-.* w wm3
-#...
.* w wm6
#...
.* w wm7
.* w wh6
#...
.* w wh7
-#...
-.* w wr3
-#...
-.* w wr4
-#...
-.* w wr5
#pass
--- /dev/null
+/* m# test multiple weakrefs */
+ .weakref Wnm1, nm1
+ .weakref Wnm1, nm1
+
+ .weakref Wum2, um2
+ .weakref Wum2, um2
+ .long um2
+
+ .weakref Wwm3, wm3
+ .weakref Wwm3, wm3
+ .long Wwm3
+
+/* r# weakref redefinitions, to and from */
+ .weakref lr1, nr1
+ .long lr1
+ .set lr1, l
+ .long lr1
+
+ .long lr2
+ .weakref lr2, nr2
+ .set lr2, l
+ .long lr2
+
+ .set Wwr3, l
+ .long Wwr3
+ .weakref Wwr3, wr3
+ .long Wwr3
+
+ .set Wwr4, l
+ .weakref Wwr4, wr4
+ .long Wwr4
+
+ .set Wwr5, l
+ .long Wwr5
+ .weakref Wwr5, wr5
+
+ .weakref lr6, ur6
+ .long lr6
+ .set lr6, l
+ .long ur6
+
+ .weakref lr7, nr7
+ .long lr7
+lr7:
+ .long lr7