Hi, SPU architecture has 128 special register: (gdb) ptype $r0 type = union __spu_builtin_type_vec128 { int128_t uint128; int64_t v2_int64[2]; int32_t v4_int32[4]; int16_t v8_int16[8]; int8_t v16_int8[16]; double v2_double[2]; float v4_float[4]; } (gdb) when debugging a fortran binary GDB cannot access single elements of the above elements regarded as arrays of int64, int32 ... (gdb) p $r0%v2_int64 $1 = (635655159808, 0) (gdb) p $r0%v2_int64(0) Attempt to take address of value not located in memory. (gdb) set $r0%v2_int64(0)=2 Attempt to take address of value not located in memory. (gdb) Access to fortran subranges is possible: (gdb) p $r0%v2_int64(0:0) $2 = (635655159808) (gdb) p $r0%v2_int64(0:1) $3 = (635655159808, 0) (gdb) p $r0%v2_int64 $4 = (635655159808, 0) (gdb) This patch invokes value_subscript for the special case that a multi_f77_subscript is in a register instead of memory. (gdb) p $r0%uint128 $2 = 0x00000094000000000000000000000000 (gdb) p $r0%v2_int64 $3 = (635655159808, 0) (gdb) p $r0%v2_int64(0) $4 = 635655159808 (gdb) set $r0%v2_int64(1)=5 (gdb) p $r0%v2_int64(1) $6 = 5 (gdb) the gdb.fortran testsuite showed no regression on SPU. If this patch is ok it would be great to have it in gdb 6.8. Ok ? ChangeLog: * eval.c (evaluate_subexp_standard): Call value_subscript for accessing fortran array elements in registers. Regards, Markus -- Markus Deuling GNU Toolchain for Linux on Cell BE deuling@de.ibm.com