}
 
 standard_testfile
+
+set func_info_names {
+    compdir_missing__ldir_missing__file_basename
+    compdir_missing__ldir_missing__file_relative
+    compdir_missing__ldir_missing__file_absolute
+    compdir_missing__ldir_relative_file_basename
+    compdir_missing__ldir_relative_file_relative
+    compdir_missing__ldir_relative_file_absolute
+    compdir_missing__ldir_absolute_file_basename
+    compdir_missing__ldir_absolute_file_relative
+    compdir_missing__ldir_absolute_file_absolute_same
+    compdir_missing__ldir_absolute_file_absolute_different
+    compdir_relative_ldir_missing__file_basename
+    compdir_relative_ldir_missing__file_relative
+    compdir_relative_ldir_missing__file_absolute
+    compdir_relative_ldir_relative_file_basename
+    compdir_relative_ldir_relative_file_relative
+    compdir_relative_ldir_relative_file_absolute
+    compdir_relative_ldir_absolute_file_basename
+    compdir_relative_ldir_absolute_file_relative
+    compdir_relative_ldir_absolute_file_absolute_same
+    compdir_relative_ldir_absolute_file_absolute_different
+    compdir_absolute_ldir_missing__file_basename
+    compdir_absolute_ldir_missing__file_relative
+    compdir_absolute_ldir_missing__file_absolute_same
+    compdir_absolute_ldir_missing__file_absolute_different
+    compdir_absolute_ldir_relative_file_basename
+    compdir_absolute_ldir_relative_file_relative
+    compdir_absolute_ldir_relative_file_absolute_same
+    compdir_absolute_ldir_relative_file_absolute_different
+    compdir_absolute_ldir_absolute_file_basename_same
+    compdir_absolute_ldir_absolute_file_basename_different
+    compdir_absolute_ldir_absolute_file_relative_same
+    compdir_absolute_ldir_absolute_file_relative_different
+    compdir_absolute_ldir_absolute_file_absolute_same
+    compdir_absolute_ldir_absolute_file_absolute_different
+}
+
+with_shared_gdb {
+    foreach func_info_name $func_info_names {
+       get_func_info $func_info_name
+    }
+}
+
 set asmsrcfile [standard_output_file ${testfile}asm.S]
 set asmobjfile [standard_output_file ${testfile}asm.o]
 set srcabsdir [standard_output_file ${testfile}.d]
     global f
     global addr_len
 
+    global ${name}_start
+    global ${name}_end
+    set name_start [set ${name}_start]
+    set name_end [set ${name}_end]
+
     puts -nonewline $f "\
 .L${name}_begin:
        .4byte  .L${name}_end - .L${name}_start /* Length of Compilation Unit */
        .ascii  \"GNU C\\0\"                    /* DW_AT_producer */
        .byte   2                               /* DW_AT_language (DW_LANG_C) */
        .4byte  .Lline_${name}_begin            /* DW_AT_stmt_list */
-       .${addr_len}byte ${name}_start          /* DW_AT_low_pc */
-       .${addr_len}byte ${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 */
-       .${addr_len}byte ${name}_start          /* DW_AT_low_pc */
-       .${addr_len}byte ${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:
     global f
     global addr_len
 
+    global ${name}_start
+    global ${name}_end
+    set name_start [set ${name}_start]
+    set name_end [set ${name}_end]
+
     puts -nonewline $f "\
 .Lline_${name}_begin:
        .4byte          .Lline_${name}_end - .Lline_${name}_start       /* Initial length */
        .byte           0       /* DW_LNE_set_address */
        .uleb128        ${addr_len}+1
        .byte           2
-       .${addr_len}byte ${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        ${addr_len}+1
        .byte           2
-       .${addr_len}byte ${name}_end
+       .${addr_len}byte $name_end
        .byte           1       /* DW_LNS_copy */
        .byte           0       /* DW_LNE_end_of_sequence */
        .uleb128        1