+2006-01-09  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR gas/2117
+       * symbols.c (snapshot_symbol): Don't change a defined symbol.
+
 2006-01-03  Hans-Peter Nilsson  <hp@bitrange.com>
 
        PR gas/2101
 
            }
        }
 
-      *symbolPP = symbolP;
+      /* Never change a defined symbol.  */
+      if (symbolP->bsym->section == undefined_section
+         || symbolP->bsym->section == expr_section)
+       *symbolPP = symbolP;
       *valueP = expr.X_add_number;
       *segP = symbolP->bsym->section;
       *fragPP = symbolP->sy_frag;
 
+2006-01-09  H.J. Lu  <hongjiu.lu@intel.com>
+
+       PR gas/2117
+       * gas/ia64/ia64.exp: Add ltoff22x-2, ltoff22x-3, ltoff22x-4 and
+       ltoff22x-5.
+
+       * gas/ia64/ltoff22x-2.d: New file.
+       * gas/ia64/ltoff22x-2.s: Likewise.
+       * gas/ia64/ltoff22x-3.d: Likewise.
+       * gas/ia64/ltoff22x-3.s: Likewise.
+       * gas/ia64/ltoff22x-4.d: Likewise.
+       * gas/ia64/ltoff22x-4.s: Likewise.
+       * gas/ia64/ltoff22x-5.d: Likewise.
+       * gas/ia64/ltoff22x-5.s: Likewise.
+
 2006-01-03  Hans-Peter Nilsson  <hp@bitrange.com>
 
        PR gas/2101
 
     run_dump_test "ldxmov-1"
     run_list_test "ldxmov-2" ""
     run_dump_test "ltoff22x-1"
+    run_dump_test "ltoff22x-2"
+    run_dump_test "ltoff22x-3"
+    run_dump_test "ltoff22x-4"
+    run_dump_test "ltoff22x-5"
+
+    run_dump_test "nostkreg"
+    run_list_test "invalid-ar" ""
 
     run_dump_test "nostkreg"
     run_list_test "invalid-ar" ""
 
--- /dev/null
+# objdump: -r
+# name: ia64 ltoff22x-2
+
+.*: +file format .*
+
+RELOCATION RECORDS FOR \[\.text\]:
+OFFSET[        ]+TYPE[         ]+VALUE 
+0+000 LTOFF22X          foo
+0+010 LDXMOV            foo
+
+
 
--- /dev/null
+       .global foo#
+       foo# = bar#
+       .global bar#
+       .data
+bar:
+       data4 0
+       .text
+       addl    r3 = @ltoffx(foo#), gp
+       nop.i   0
+       nop.i   0
+       ld8.mov r3 = [r3], foo#
+       nop.i   0
+       nop.i   0
 
--- /dev/null
+# objdump: -r
+# name: ia64 ltoff22x-3
+
+.*: +file format .*
+
+RELOCATION RECORDS FOR \[\.text\]:
+OFFSET[        ]+TYPE[         ]+VALUE 
+0+000 LTOFF22X          foo
+0+010 LDXMOV            foo
+
+
 
--- /dev/null
+       .global bar#
+       .data
+bar:
+       data4 0
+       .global foo#
+       foo# = bar#
+       .text
+       addl    r3 = @ltoffx(foo#), gp
+       nop.i   0
+       nop.i   0
+       ld8.mov r3 = [r3], foo#
+       nop.i   0
+       nop.i   0
 
--- /dev/null
+# objdump: -r
+# name: ia64 ltoff22x-4
+
+.*: +file format .*
+
+RELOCATION RECORDS FOR \[\.text\]:
+OFFSET[        ]+TYPE[         ]+VALUE 
+0+000 LTOFF22X          foo
+0+010 LDXMOV            foo
+
+
 
--- /dev/null
+       .text
+       addl    r3 = @ltoffx(foo#), gp
+       nop.i   0
+       nop.i   0
+       ld8.mov r3 = [r3], foo#
+       nop.i   0
+       nop.i   0
+       .global foo#
+       foo# = bar#
+       .global bar#
+       .data
+bar:
+       data4 0
 
--- /dev/null
+# objdump: -r
+# name: ia64 ltoff22x-5
+
+.*: +file format .*
+
+RELOCATION RECORDS FOR \[\.text\]:
+OFFSET[        ]+TYPE[         ]+VALUE 
+0+000 LTOFF22X          foo
+0+010 LDXMOV            foo
+
+
 
--- /dev/null
+       .text
+       addl    r3 = @ltoffx(foo#), gp
+       nop.i   0
+       nop.i   0
+       ld8.mov r3 = [r3], foo#
+       nop.i   0
+       nop.i   0
+       .global bar#
+       .data
+bar:
+       data4 0
+       .global foo#
+       foo# = bar#