+2014-10-18 Kwok Cheung Yeung <kcy@codesourcery.com>
+
+ * gdb.dwarf2/dw2-dir-file-name.exp (addr_len): New.
+ (out_cu): Use addr_len for the size of addresses.
+ (out_line): Likewise. Size DW_LNE_set_address instruction
+ according to addr_len.
+ * gdb.dwarf2/dw2-dir-file-name.c (START_INSNS): New.
+ (FUNC): Add START_INSNS to definition.
+
2014-10-18 Yao Qi <yao@codesourcery.com>
* gdb.base/argv0-symlink.exp: Check argv[0] value if
FUNC (compdir_absolute_ldir_absolute_file_absolute_same) \
FUNC (compdir_absolute_ldir_absolute_file_absolute_different)
+#ifdef __mips__
+#define START_INSNS asm (".insn\n");
+#else
+#define START_INSNS
+#endif
+
/* Notes: (1) The '*_start' label below is needed because 'name' may
point to a function descriptor instead of to the actual code. (2)
The '.balign' should specify the highest possible function
#define FUNC(name) \
asm (".balign 8"); \
asm (#name "_start: .globl " #name "_start\n"); \
+ START_INSNS \
static void \
name (void) \
{ \
return 0
}
+# Find length of addresses in bytes.
+if {[is_64_target]} {
+ set addr_len 8
+} else {
+ set addr_len 4
+}
+
standard_testfile
set asmsrcfile [standard_output_file ${testfile}asm.S]
set asmobjfile [standard_output_file ${testfile}asm.o]
proc out_cu { name cu_dir cu_name line_dir line_name } {
global f
+ global addr_len
puts -nonewline $f "\
.L${name}_begin:
.L${name}_start:
.2byte 2 /* DWARF Version */
.4byte .Labbrev1_begin /* Offset into abbrev section */
- .byte 4 /* Pointer size */
+ .byte ${addr_len} /* Pointer size */
"
if { $cu_dir != "" } {
puts $f " .uleb128 ABBREV_COMP_DIR_NAME /* Abbrev: DW_TAG_compile_unit */"
.ascii \"GNU C\\0\" /* DW_AT_producer */
.byte 2 /* DW_AT_language (DW_LANG_C) */
.4byte .Lline_${name}_begin /* DW_AT_stmt_list */
- .4byte ${name}_start /* DW_AT_low_pc */
- .4byte ${name}_end /* DW_AT_high_pc */
+ .${addr_len}byte ${name}_start /* DW_AT_low_pc */
+ .${addr_len}byte ${name}_end /* DW_AT_high_pc */
"
if { $cu_dir != "" } {
puts $f " .ascii $cu_dir /* DW_AT_comp_dir */"
.uleb128 3 /* Abbrev: DW_TAG_subprogram */
.asciz \"${name}\" /* DW_AT_name */
- .4byte ${name}_start /* DW_AT_low_pc */
- .4byte ${name}_end /* DW_AT_high_pc */
+ .${addr_len}byte ${name}_start /* DW_AT_low_pc */
+ .${addr_len}byte ${name}_end /* DW_AT_high_pc */
.byte 0 /* End of children of CU */
.L${name}_end:
proc out_line { name cu_dir cu_name line_dir line_name } {
global f
+ global addr_len
puts -nonewline $f "\
.Lline_${name}_begin:
.byte 3 /* DW_LNS_advance_line */
.sleb128 998 /* ... to 999 */
.byte 0 /* DW_LNE_set_address */
- .uleb128 5
+ .uleb128 ${addr_len}+1
.byte 2
- .4byte ${name}_start
+ .${addr_len}byte ${name}_start
.byte 1 /* DW_LNS_copy */
.byte 3 /* DW_LNS_advance_line */
.sleb128 1 /* ... to 1000 */
.byte 0 /* DW_LNE_set_address */
- .uleb128 5
+ .uleb128 ${addr_len}+1
.byte 2
- .4byte ${name}_end
+ .${addr_len}byte ${name}_end
.byte 1 /* DW_LNS_copy */
.byte 0 /* DW_LNE_end_of_sequence */
.uleb128 1