This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[testsuite, commit+7.5] Fix dw2-icc-opaque.exp failures


Hello,

the new dw2-icc-opaque.exp test case was failing on spu and s390*
(and possible other architectures), for a number of reasons:

- The hand-coded DWARF uses in two places a .2byte directive which
  made endianness assumptions.  Replaces by two .byte directives.

- The hand-coded DWARF used in various places ".align 1" directives.
  These would generate broken code on platforms where the assembler
  treats the .align argument as power-of-two exponent (like .p2align).
  Since those .algin directives do not actually do anything anyway
  as far as I can tell, I've just removed them.

- A particular issue on (64-bit) s390x: the hand-coded DWARF hard-
  codes a 4-byte pointer size.  On s390x this is decoded showing a
  @mode32 attribute on the pointer type.  Adjust expected output.

With these fixes, the test now passes on spu and s390(x); it still
passes unchanged on powerpc.

Committed to mainline and 7.5.

Bye,
Ulrich



ChangeLog:

	* gdb.dwarf2/dw2-icc-opaque.S: Remove .align directives.
	Fix wrong output on big-endian systems.
	* gdb.dwarf2/dw2-icc-opaque.exp: Expect @mode32 attribute on
	4-byte pointer types on 64-bit s390x.


Index: gdb/testsuite/gdb.dwarf2/dw2-icc-opaque.S
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.dwarf2/dw2-icc-opaque.S,v
retrieving revision 1.2
diff -u -p -r1.2 dw2-icc-opaque.S
--- gdb/testsuite/gdb.dwarf2/dw2-icc-opaque.S	24 May 2012 22:14:36 -0000	1.2
+++ gdb/testsuite/gdb.dwarf2/dw2-icc-opaque.S	2 Aug 2012 13:28:33 -0000
@@ -38,7 +38,6 @@
 	.global p_struct#
 
 	.section .debug_info
-	.align 1
 debug_info_seg1:
 	.4byte debug_info_seg1_end - 1f	/* Length of compilation unit info. */
 1:
@@ -57,7 +56,8 @@ debug_info_seg1:
 	.byte 0x01			/* DW_AT_accessibility. */
 	.asciz "p_struct"		/* DW_AT_name. */
 	.4byte 3f - debug_info_seg1	/* DW_AT_type. */
-	.2byte 0x0305			/* DW_AT_location: 5 bytes, DW_OP_addr */
+	.byte 0x05			/* DW_AT_location: 5 bytes ... */
+	.byte 0x03			/* DW_OP_addr ... */
 	.4byte p_struct			/* followed by the address of p_struct. */
 	.byte 0x01			/* DW_AT_external. */
 
@@ -76,7 +76,6 @@ debug_info_seg1_end:
 
 	.section .debug_abbrev
 .debug_abbrev_seg1:
-	.align 1
 	.byte 0x01	/* Abbrev 1. */
 	.byte 0x11	/* DW_TAG_compile_unit. */
 	.byte 0x01	/* DW_CHILDREN_yes. */
@@ -123,7 +122,6 @@ debug_info_seg1_end:
 
 	.file "opaque-struct.c"
 	.section .debug_info
-	.align 1
 debug_info_seg2:
 	.4byte debug_info_seg2_end - 1f	/* Length of compilation unit info. */
 1:
@@ -145,8 +143,9 @@ debug_info_seg2:
 
 
 	.byte 0x03			/* DIE 3: DW_TAG_member. */
-	.2byte 0x2302			/* DW_AT_data_member_location, 2 bytes, */
-	.byte 0x00			/* DW_OP_plus_uconst followed by zero. */
+	.byte 0x02			/* DW_AT_data_member_location: 2 bytes ... */
+	.byte 0x23			/* DW_OP_plus_uconst ... */
+	.byte 0x00			/* followed by zero. */
 	.asciz "wrapped_value"		/* DW_AT_name. */
 	.4byte 4f - debug_info_seg2	/* DW_AT_type. */
 	.byte 0x00
@@ -162,7 +161,6 @@ debug_info_seg2_end:
 
 	.section .debug_abbrev
 .debug_abbrev_seg2:
-	.align 1
 	.byte 0x01	/* Abbrev 1. */
 	.byte 0x11	/* DW_TAG_compile_unit. */
 	.byte 0x01	/* DW_CHILDREN_yes. */
@@ -210,7 +208,6 @@ debug_info_seg2_end:
 	.file "opaque-pointer2.c"
 
 	.section .debug_info
-	.align 1
 debug_info_seg3:
 	.4byte debug_info_seg3_end - 1f	/* Length of compilation unit info. */
 1:
@@ -235,7 +232,6 @@ debug_info_seg3_end:
 
 	.section .debug_abbrev
 .debug_abbrev_seg3:
-	.align 1
 	.byte 0x01	/* Abbrev 1. */
 	.byte 0x11	/* DW_TAG_compile_unit. */
 	.byte 0x01	/* DW_CHILDREN_yes. */
Index: gdb/testsuite/gdb.dwarf2/dw2-icc-opaque.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.dwarf2/dw2-icc-opaque.exp,v
retrieving revision 1.2
diff -u -p -r1.2 dw2-icc-opaque.exp
--- gdb/testsuite/gdb.dwarf2/dw2-icc-opaque.exp	27 Jun 2012 17:00:09 -0000	1.2
+++ gdb/testsuite/gdb.dwarf2/dw2-icc-opaque.exp	2 Aug 2012 13:28:33 -0000
@@ -36,4 +36,10 @@ clean_restart $executable
 # type = struct opaque_struct_t {
 #     <no data fields>
 # } *
-gdb_test "ptype p_struct" "type = struct opaque_struct_t {\r\n *int wrapped_value;\r\n} \\*"
+if { [istarget s390x-*-*] && [is_lp64_target] } {
+    # The hand-coded DWARF info hard-codes a pointer size of 4 bytes,
+    # which is represented as @mode32 on s390x.
+    gdb_test "ptype p_struct" "type = struct opaque_struct_t {\r\n *int wrapped_value;\r\n} \\* @mode32"
+} else {
+    gdb_test "ptype p_struct" "type = struct opaque_struct_t {\r\n *int wrapped_value;\r\n} \\*"
+}
-- 
  Dr. Ulrich Weigand
  GNU Toolchain for Linux on System z and Cell BE
  Ulrich.Weigand@de.ibm.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]