aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog24
-rw-r--r--gdb/NEWS11
-rw-r--r--gdb/doc/ChangeLog8
-rw-r--r--gdb/doc/gdb.texinfo24
-rw-r--r--gdb/dwarf2read.c56
-rw-r--r--gdb/linespec.c56
-rw-r--r--gdb/main.c6
-rw-r--r--gdb/symfile.h3
-rw-r--r--gdb/testsuite/ChangeLog11
-rw-r--r--gdb/testsuite/gdb.base/annota1.exp2
-rw-r--r--gdb/testsuite/gdb.base/async-shell.exp4
-rw-r--r--gdb/testsuite/gdb.dwarf2/dw2-inline-break.S1663
-rw-r--r--gdb/testsuite/gdb.dwarf2/dw2-inline-break.exp124
-rw-r--r--gdb/testsuite/gdb.opt/inline-break.c159
-rw-r--r--gdb/testsuite/gdb.opt/inline-break.exp114
-rw-r--r--gdb/testsuite/lib/mi-support.exp3
16 files changed, 2240 insertions, 28 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 3d0f837..b813695 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,27 @@
+2012-03-16 Gary Benson <gbenson@redhat.com>
+
+ PR breakpoints/10738
+ * dwarf2read.c (use_deprecated_index_sections): New global.
+ (struct partial_die_info): New member may_be_inlined.
+ (read_partial_die): Set may_be_inlined where appropriate.
+ (add_partial_subprogram): Add partial symbols for partial
+ DIEs that may be inlined.
+ (new_symbol_full): Add inlined subroutines to the current
+ scope.
+ (write_psymtabs_to_index): Bump version number.
+ (dwarf2_read_index): Read only version 6 indices unless
+ use_deprecated_index_sections is set.
+ * linespec.c (symbol_and_data_callback): New structure.
+ (iterate_inline_only): New function.
+ (iterate_over_all_matching_symtabs): New argument
+ "include_inline". If nonzero, also call the callback for
+ symbols representing inlined subroutines.
+ (lookup_prefix_sym): Pass extra argument to the above.
+ (find_function_symbols): Likewise.
+ (add_matching_symbols_to_info): Likewise.
+ * NEWS: Mention that GDB can now set breakpoints on inlined
+ functions.
+
2012-03-16 Pierre Muller <muller@ics.u-strasbg.fr>
* p-typeprint.c (pascal_type_print_method_args):
diff --git a/gdb/NEWS b/gdb/NEWS
index 6444984..e6bf59c 100644
--- a/gdb/NEWS
+++ b/gdb/NEWS
@@ -62,6 +62,17 @@
* The "info static-tracepoint-marker" command will now also work on
native Linux targets with in-process agent.
+* GDB can now set breakpoints on inlined functions.
+
+* The .gdb_index section has been updated to include symbols for
+ inlined functions. GDB will ignore older .gdb_index sections by
+ default, which could cause symbol files to be loaded more slowly
+ until their .gdb_index sections can be recreated. The new option
+ --use-deprecated-index-sections will cause GDB to use any older
+ .gdb_index sections it finds. This will restore performance, but
+ the ability to set breakpoints on inlined functions will be lost
+ in symbol files with older .gdb_index sections.
+
* New commands
** "catch load" and "catch unload" can be used to stop when a shared
diff --git a/gdb/doc/ChangeLog b/gdb/doc/ChangeLog
index 8ea02d0..cb6d0e9 100644
--- a/gdb/doc/ChangeLog
+++ b/gdb/doc/ChangeLog
@@ -1,3 +1,11 @@
+2012-03-16 Gary Benson <gbenson@redhat.com>
+
+ PR breakpoints/10738
+ * gdb.texinfo (Inline Functions): Remove the now-unnecessary @item
+ stating that GDB cannot set breakpoints on inlined functions.
+ (Mode Options): Document --use-deprecated-index-sections.
+ (Index Section Format): Document new index section version format.
+
2012-03-15 Tom Tromey <tromey@redhat.com>
* gdb.texinfo (Debugging C Plus Plus): Document "info vtbl".
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
index d4c5656..56bf5d5 100644
--- a/gdb/doc/gdb.texinfo
+++ b/gdb/doc/gdb.texinfo
@@ -1221,6 +1221,13 @@ memory usage after it completes each command and returns to the prompt.
This option causes @value{GDBN} to print its version number and
no-warranty blurb, and exit.
+@item -use-deprecated-index-sections
+@cindex @code{--use-deprecated-index-sections}
+This option causes @value{GDBN} to read and use deprecated
+@samp{.gdb_index} sections from symbol files. This can speed up
+startup, but may result in some functionality being lost.
+@xref{Index Section Format}.
+
@end table
@node Startup
@@ -9890,14 +9897,6 @@ function calls are the same as normal calls:
@itemize @bullet
@item
-You cannot set breakpoints on inlined functions. @value{GDBN}
-either reports that there is no symbol with that name, or else sets the
-breakpoint only on non-inlined copies of the function. This limitation
-will be removed in a future version of @value{GDBN}; until then,
-set a breakpoint by line number on the first line of the inlined
-function instead.
-
-@item
Setting breakpoints at the call site of an inlined function may not
work, because the call site does not contain any code. @value{GDBN}
may incorrectly move the breakpoint to the next line of the enclosing
@@ -38956,8 +38955,11 @@ unless otherwise noted:
@enumerate
@item
-The version number, currently 5. Versions 1, 2 and 3 are obsolete.
-Version 4 differs by its hashing function.
+The version number, currently 6. Versions 1, 2 and 3 are obsolete.
+Version 4 uses a different hashing function from versions 5 and 6.
+Version 6 includes symbols for inlined functions, whereas versions
+4 and 5 do not. @value{GDBN} will only read version 4 and 5 indices
+if the @code{--use-deprecated-index-sections} option is used.
@item
The offset, from the start of the file, of the CU list.
@@ -39032,7 +39034,7 @@ index version:
@item Version 4
The formula is @code{r = r * 67 + c - 113}.
-@item Version 5
+@item Versions 5 and 6
The formula is @code{r = r * 67 + tolower (c) - 113}.
@end table
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
index 31e0012..7944e0f 100644
--- a/gdb/dwarf2read.c
+++ b/gdb/dwarf2read.c
@@ -85,6 +85,9 @@ static int dwarf2_die_debug = 0;
/* When non-zero, cross-check physname against demangler. */
static int check_physname = 0;
+/* When non-zero, do not reject deprecated .gdb_index sections. */
+int use_deprecated_index_sections = 0;
+
static int pagesize;
/* When set, the file that we're processing is known to have debugging
@@ -539,6 +542,7 @@ struct partial_die_info
unsigned int has_type : 1;
unsigned int has_specification : 1;
unsigned int has_pc_info : 1;
+ unsigned int may_be_inlined : 1;
/* Flag set if the SCOPE field of this structure has been
computed. */
@@ -2118,13 +2122,41 @@ dwarf2_read_index (struct objfile *objfile)
/* Versions earlier than 3 emitted every copy of a psymbol. This
causes the index to behave very poorly for certain requests. Version 3
contained incomplete addrmap. So, it seems better to just ignore such
- indices. Index version 4 uses a different hash function than index
- version 5 and later. */
+ indices. */
if (version < 4)
- return 0;
- /* Indices with higher version than the one supported by GDB may be no
+ {
+ static int warning_printed = 0;
+ if (!warning_printed)
+ {
+ warning (_("Skipping obsolete .gdb_index section in %s."),
+ objfile->name);
+ warning_printed = 1;
+ }
+ return 0;
+ }
+ /* Index version 4 uses a different hash function than index version
+ 5 and later.
+
+ Versions earlier than 6 did not emit psymbols for inlined
+ functions. Using these files will cause GDB not to be able to
+ set breakpoints on inlined functions by name, so we ignore these
+ indices unless the --use-deprecated-index-sections command line
+ option was supplied. */
+ if (version < 6 && !use_deprecated_index_sections)
+ {
+ static int warning_printed = 0;
+ if (!warning_printed)
+ {
+ warning (_("Skipping deprecated .gdb_index section in %s, pass "
+ "--use-deprecated-index-sections to use them anyway"),
+ objfile->name);
+ warning_printed = 1;
+ }
+ return 0;
+ }
+ /* Indexes with higher version than the one supported by GDB may be no
longer backward compatible. */
- if (version > 5)
+ if (version > 6)
return 0;
map = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct mapped_index);
@@ -4244,6 +4276,10 @@ add_partial_subprogram (struct partial_die_info *pdi,
pdi->highpc - 1 + baseaddr,
cu->per_cu->v.psymtab);
}
+ }
+
+ if (pdi->has_pc_info || (!pdi->is_external && pdi->may_be_inlined))
+ {
if (!pdi->is_declaration)
/* Ignore subprogram DIEs that do not have a name, they are
illegal. Do not emit a complaint at this point, we will
@@ -9874,6 +9910,11 @@ read_partial_die (struct partial_die_info *part_die,
language_of_main = language_fortran;
}
break;
+ case DW_AT_inline:
+ if (DW_UNSND (&attr) == DW_INL_inlined
+ || DW_UNSND (&attr) == DW_INL_declared_inlined)
+ part_die->may_be_inlined = 1;
+ break;
default:
break;
}
@@ -11718,8 +11759,7 @@ new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
finish_block. */
SYMBOL_CLASS (sym) = LOC_BLOCK;
SYMBOL_INLINED (sym) = 1;
- /* Do not add the symbol to any lists. It will be found via
- BLOCK_FUNCTION from the blockvector. */
+ list_to_add = cu->list_in_scope;
break;
case DW_TAG_template_value_param:
suppress_add = 1;
@@ -17027,7 +17067,7 @@ write_psymtabs_to_index (struct objfile *objfile, const char *dir)
total_len = size_of_contents;
/* The version number. */
- val = MAYBE_SWAP (5);
+ val = MAYBE_SWAP (6);
obstack_grow (&contents, &val, sizeof (val));
/* The offset of the CU list from the start of the file. */
diff --git a/gdb/linespec.c b/gdb/linespec.c
index c2057cf..1e9770e 100644
--- a/gdb/linespec.c
+++ b/gdb/linespec.c
@@ -321,6 +321,33 @@ cplusplus_error (const char *name, const char *fmt, ...)
throw_error (NOT_FOUND_ERROR, "%s", message);
}
+/* A callback function and the additional data to call it with. */
+
+struct symbol_and_data_callback
+{
+ /* The callback to use. */
+ symbol_found_callback_ftype *callback;
+
+ /* Data to be passed to the callback. */
+ void *data;
+};
+
+/* A helper for iterate_over_all_matching_symtabs that is used to
+ restrict calls to another callback to symbols representing inline
+ symbols only. */
+
+static int
+iterate_inline_only (struct symbol *sym, void *d)
+{
+ if (SYMBOL_INLINED (sym))
+ {
+ struct symbol_and_data_callback *cad = d;
+
+ return cad->callback (sym, cad->data);
+ }
+ return 1; /* Continue iterating. */
+}
+
/* Some data for the expand_symtabs_matching callback. */
struct symbol_matcher_data
@@ -348,14 +375,16 @@ iterate_name_matcher (const char *name, void *d)
/* A helper that walks over all matching symtabs in all objfiles and
calls CALLBACK for each symbol matching NAME. If SEARCH_PSPACE is
not NULL, then the search is restricted to just that program
- space. */
+ space. If INCLUDE_INLINE is nonzero then symbols representing
+ inlined instances of functions will be included in the result. */
static void
iterate_over_all_matching_symtabs (const char *name,
const domain_enum domain,
symbol_found_callback_ftype *callback,
void *data,
- struct program_space *search_pspace)
+ struct program_space *search_pspace,
+ int include_inline)
{
struct objfile *objfile;
struct program_space *pspace;
@@ -394,6 +423,20 @@ iterate_over_all_matching_symtabs (const char *name,
block = BLOCKVECTOR_BLOCK (BLOCKVECTOR (symtab), STATIC_BLOCK);
LA_ITERATE_OVER_SYMBOLS (block, name, domain, callback, data);
+
+ if (include_inline)
+ {
+ struct symbol_and_data_callback cad = { callback, data };
+ int i;
+
+ for (i = FIRST_LOCAL_BLOCK;
+ i < BLOCKVECTOR_NBLOCKS (BLOCKVECTOR (symtab)); i++)
+ {
+ block = BLOCKVECTOR_BLOCK (BLOCKVECTOR (symtab), i);
+ LA_ITERATE_OVER_SYMBOLS (block, name, domain,
+ iterate_inline_only, &cad);
+ }
+ }
}
}
}
@@ -1885,10 +1928,10 @@ lookup_prefix_sym (char **argptr, char *p, VEC (symtab_p) *file_symtabs,
{
iterate_over_all_matching_symtabs (copy, STRUCT_DOMAIN,
collect_one_symbol, &collector,
- NULL);
+ NULL, 0);
iterate_over_all_matching_symtabs (copy, VAR_DOMAIN,
collect_one_symbol, &collector,
- NULL);
+ NULL, 0);
}
else
{
@@ -2251,7 +2294,8 @@ find_function_symbols (char **argptr, char *p, int is_quote_enclosed,
copy[p - *argptr] = 0;
iterate_over_all_matching_symtabs (copy, VAR_DOMAIN,
- collect_function_symbols, &result, NULL);
+ collect_function_symbols, &result, NULL,
+ 0);
if (VEC_empty (symbolp, result))
VEC_free (symbolp, result);
@@ -2952,7 +2996,7 @@ add_matching_symbols_to_info (const char *name,
{
iterate_over_all_matching_symtabs (name, VAR_DOMAIN,
collect_symbols, info,
- pspace);
+ pspace, 1);
search_minsyms_for_name (info, name, pspace);
}
else if (pspace == NULL || pspace == SYMTAB_PSPACE (elt))
diff --git a/gdb/main.c b/gdb/main.c
index e46f823..a63a385 100644
--- a/gdb/main.c
+++ b/gdb/main.c
@@ -450,6 +450,8 @@ captured_main (void *data)
{"args", no_argument, &set_args, 1},
{"l", required_argument, 0, 'l'},
{"return-child-result", no_argument, &return_child_result, 1},
+ {"use-deprecated-index-sections", no_argument,
+ &use_deprecated_index_sections, 1},
{0, no_argument, 0, 0}
};
@@ -1021,6 +1023,10 @@ Options:\n\n\
"), stream);
#endif
fputs_unfiltered (_("\
+ --use-deprecated-index-sections\n\
+ Do not reject deprecated .gdb_index sections.\n\
+"), stream);
+ fputs_unfiltered (_("\
--version Print version information and then exit.\n\
-w Use a window interface.\n\
--write Set writing into executable and core files.\n\
diff --git a/gdb/symfile.h b/gdb/symfile.h
index d4f3fd9..7024ace 100644
--- a/gdb/symfile.h
+++ b/gdb/symfile.h
@@ -617,6 +617,9 @@ extern void dwarf2_build_frame_info (struct objfile *);
void dwarf2_free_objfile (struct objfile *);
+/* Whether to use deprecated .gdb_index sections. */
+extern int use_deprecated_index_sections;
+
/* From mdebugread.c */
/* Hack to force structures to exist before use in parameter list. */
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 5829950..ee59720 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,14 @@
+2012-03-16 Gary Benson <gbenson@redhat.com>
+
+ PR breakpoints/10738
+ * gdb.opt/inline-break.exp: New file.
+ * gdb.opt/inline-break.c: Likewise.
+ * gdb.dwarf2/inline-break.exp: Likewise.
+ * gdb.dwarf2/inline-break.S: Likewise.
+ * gdb.base/annota1.exp: Cope with old .gdb_index warnings.
+ * gdb.base/async-shell.exp: Likewise.
+ * lib/mi-support.exp (library_loaded_re): Likewise.
+
2012-03-15 Tom Tromey <tromey@redhat.com>
* gdb.cp/virtfunc2.exp: Update expected output.
diff --git a/gdb/testsuite/gdb.base/annota1.exp b/gdb/testsuite/gdb.base/annota1.exp
index ae16667..c7371b4 100644
--- a/gdb/testsuite/gdb.base/annota1.exp
+++ b/gdb/testsuite/gdb.base/annota1.exp
@@ -133,7 +133,7 @@ gdb_test_multiple "info break" "breakpoint info" {
#exp_internal 1
set binexp [string_to_regexp $binfile]
gdb_test_multiple "run" "run until main breakpoint" {
- -re "\r\n\032\032post-prompt\r\nStarting program: $binexp \(\(\r\n\r\n\032\032frames-invalid\)|\(\r\n\r\n\032\032breakpoints-invalid\)\)+\r\n\r\n\032\032starting\(\(\r\n\r\n\032\032frames-invalid\)|\(\r\n\r\n\032\032breakpoints-invalid\)\)*\r\n\r\n\032\032breakpoint 1\r\n\r\nBreakpoint 1, \r\n\032\032frame-begin 0 $hex\r\n\r\n\032\032frame-function-name\r\nmain\r\n\032\032frame-args\r\n \\(\\)\r\n\032\032frame-source-begin\r\n at \r\n\032\032frame-source-file\r\n.*annota1.c\r\n\032\032frame-source-file-end\r\n:\r\n\032\032frame-source-line\r\n$main_line\r\n\032\032frame-source-end\r\n\r\n\r\n\032\032source.*$srcfile:$main_line:.*:beg:$hex\r\n\r\n\032\032frame-end\r\n\r\n\032\032stopped.*$gdb_prompt$" {
+ -re "\r\n\032\032post-prompt\r\nStarting program: $binexp \(\r\nwarning: Skipping \[^\r\n\]+ .gdb_index section in \[^\r\n\]+\)?\(\(\r\n\r\n\032\032frames-invalid\)|\(\r\n\r\n\032\032breakpoints-invalid\)\)+\r\n\r\n\032\032starting\(\(\r\n\r\n\032\032frames-invalid\)|\(\r\n\r\n\032\032breakpoints-invalid\)\)*\r\n\r\n\032\032breakpoint 1\r\n\r\nBreakpoint 1, \r\n\032\032frame-begin 0 $hex\r\n\r\n\032\032frame-function-name\r\nmain\r\n\032\032frame-args\r\n \\(\\)\r\n\032\032frame-source-begin\r\n at \r\n\032\032frame-source-file\r\n.*annota1.c\r\n\032\032frame-source-file-end\r\n:\r\n\032\032frame-source-line\r\n$main_line\r\n\032\032frame-source-end\r\n\r\n\r\n\032\032source.*$srcfile:$main_line:.*:beg:$hex\r\n\r\n\032\032frame-end\r\n\r\n\032\032stopped.*$gdb_prompt$" {
pass "run until main breakpoint"
}
}
diff --git a/gdb/testsuite/gdb.base/async-shell.exp b/gdb/testsuite/gdb.base/async-shell.exp
index 4949cf9..2e8085a 100644
--- a/gdb/testsuite/gdb.base/async-shell.exp
+++ b/gdb/testsuite/gdb.base/async-shell.exp
@@ -29,9 +29,11 @@ if { [prepare_for_testing ${testfile}.exp ${testfile}] } {
return -1
}
+set gdbindex_warning_re "warning: Skipping \[^\r\n\]+ \\.gdb_index section \[^\r\n\]*"
+
gdb_test_no_output "set target-async on "
gdb_test_no_output "set non-stop on"
-gdb_test "run &" "Starting program: \[^\r\n\]*"
+gdb_test "run &" "Starting program: \[^\r\n\]*(\r\n$gdbindex_warning_re)?"
# `sleep 5' here would workaround the bug, do not sleep here.
# "shell" could eat waitpid event from the asynchronous inferior process.
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-inline-break.S b/gdb/testsuite/gdb.dwarf2/dw2-inline-break.S
new file mode 100644
index 0000000..92da965
--- /dev/null
+++ b/gdb/testsuite/gdb.dwarf2/dw2-inline-break.S
@@ -0,0 +1,1663 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright 2012 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* This source file was generated using the following command line:
+
+ gcc -S -dA -g -O2 ../gdb.opt/inline-break.c -o inline-break.S
+
+*/
+ .file "inline-break.c"
+ .section .debug_abbrev,"",@progbits
+.Ldebug_abbrev0:
+ .section .debug_info,"",@progbits
+.Ldebug_info0:
+ .section .debug_line,"",@progbits
+.Ldebug_line0:
+ .text
+.Ltext0:
+ .p2align 4,,15
+.globl func2
+ .type func2, @function
+func2:
+.LFB1:
+ .file 1 "../gdb.opt/inline-break.c"
+ # ../gdb.opt/inline-break.c:39
+ .loc 1 39 0
+ .cfi_startproc
+.LVL0:
+ # basic block 2
+ # ../gdb.opt/inline-break.c:40
+ .loc 1 40 0
+ movl %edi, %eax
+ sall $4, %eax
+ addl %edi, %eax
+ # ../gdb.opt/inline-break.c:41
+ .loc 1 41 0
+ ret
+ .cfi_endproc
+.LFE1:
+ .size func2, .-func2
+ .p2align 4,,15
+.globl func4a
+ .type func4a, @function
+func4a:
+.LFB5:
+ # ../gdb.opt/inline-break.c:69
+ .loc 1 69 0
+ .cfi_startproc
+.LVL1:
+ # basic block 2
+ # ../gdb.opt/inline-break.c:70
+ .loc 1 70 0
+ movl %edi, %eax
+ sall $4, %eax
+ leal (%rax,%rdi), %edi
+.LVL2:
+.LBB46:
+.LBB47:
+ # ../gdb.opt/inline-break.c:64
+ .loc 1 64 0
+ xorl %eax, %eax
+ cmpl $12, %edi
+ setg %al
+ addl $1, %eax
+.LBE47:
+.LBE46:
+ # ../gdb.opt/inline-break.c:71
+ .loc 1 71 0
+ ret
+ .cfi_endproc
+.LFE5:
+ .size func4a, .-func4a
+ .p2align 4,,15
+.globl func5b
+ .type func5b, @function
+func5b:
+.LFB6:
+ # ../gdb.opt/inline-break.c:78
+ .loc 1 78 0
+ .cfi_startproc
+.LVL3:
+ # basic block 2
+ # ../gdb.opt/inline-break.c:79
+ .loc 1 79 0
+ xorl %eax, %eax
+ cmpl $11, %edi
+ setg %al
+ addl $1, %eax
+ # ../gdb.opt/inline-break.c:80
+ .loc 1 80 0
+ ret
+ .cfi_endproc
+.LFE6:
+ .size func5b, .-func5b
+ .p2align 4,,15
+.globl func6b
+ .type func6b, @function
+func6b:
+.LFB8:
+ # ../gdb.opt/inline-break.c:93
+ .loc 1 93 0
+ .cfi_startproc
+.LVL4:
+ # basic block 2
+ # ../gdb.opt/inline-break.c:94
+ .loc 1 94 0
+ xorl %eax, %eax
+ cmpl $13, %edi
+ setle %al
+ addl $2, %eax
+ # ../gdb.opt/inline-break.c:95
+ .loc 1 95 0
+ ret
+ .cfi_endproc
+.LFE8:
+ .size func6b, .-func6b
+ .p2align 4,,15
+.globl func6a
+ .type func6a, @function
+func6a:
+.LFB9:
+ # ../gdb.opt/inline-break.c:99
+ .loc 1 99 0
+ .cfi_startproc
+.LVL5:
+ # basic block 2
+ # ../gdb.opt/inline-break.c:100
+ .loc 1 100 0
+ movl %edi, %eax
+ sall $4, %eax
+ leal (%rax,%rdi), %edi
+.LVL6:
+.LBB48:
+.LBB49:
+ # ../gdb.opt/inline-break.c:94
+ .loc 1 94 0
+ xorl %eax, %eax
+ cmpl $13, %edi
+ setle %al
+ addl $2, %eax
+.LBE49:
+.LBE48:
+ # ../gdb.opt/inline-break.c:101
+ .loc 1 101 0
+ ret
+ .cfi_endproc
+.LFE9:
+ .size func6a, .-func6a
+ .p2align 4,,15
+.globl func8b
+ .type func8b, @function
+func8b:
+.LFB12:
+ # ../gdb.opt/inline-break.c:121
+ .loc 1 121 0
+ .cfi_startproc
+.LVL7:
+ # basic block 2
+ # ../gdb.opt/inline-break.c:122
+ .loc 1 122 0
+ xorl %eax, %eax
+ cmpl $6, %edi
+ setle %al
+ leal 9(%rax,%rax), %eax
+ # ../gdb.opt/inline-break.c:123
+ .loc 1 123 0
+ ret
+ .cfi_endproc
+.LFE12:
+ .size func8b, .-func8b
+ .p2align 4,,15
+.globl main
+ .type main, @function
+main:
+.LFB14:
+ # ../gdb.opt/inline-break.c:135
+ .loc 1 135 0
+ .cfi_startproc
+.LVL8:
+ # basic block 2
+ # ../gdb.opt/inline-break.c:140
+ .loc 1 140 0
+ movl %edi, -4(%rsp)
+.LVL9:
+ # ../gdb.opt/inline-break.c:142
+ .loc 1 142 0
+ movl -4(%rsp), %eax
+.LVL10:
+.LBB50:
+.LBB51:
+ # ../gdb.opt/inline-break.c:32
+ .loc 1 32 0
+ movl $23, %edi
+.LVL11:
+.LBE51:
+.LBE50:
+.LBB53:
+.LBB54:
+ # ../gdb.opt/inline-break.c:55
+ .loc 1 55 0
+ movl $23, %esi
+.LVL12:
+.LBE54:
+.LBE53:
+.LBB58:
+.LBB59:
+ # ../gdb.opt/inline-break.c:85
+ .loc 1 85 0
+ movl $23, %ecx
+.LBE59:
+.LBE58:
+.LBB63:
+.LBB52:
+ # ../gdb.opt/inline-break.c:32
+ .loc 1 32 0
+ imull %edi, %eax
+.LVL13:
+.LBE52:
+.LBE63:
+ # ../gdb.opt/inline-break.c:142
+ .loc 1 142 0
+ movl %eax, -4(%rsp)
+ # ../gdb.opt/inline-break.c:144
+ .loc 1 144 0
+ movl -4(%rsp), %eax
+.LVL14:
+.LBB64:
+.LBB65:
+ # ../gdb.opt/inline-break.c:40
+ .loc 1 40 0
+ movl %eax, %edx
+ sall $4, %edx
+ leal (%rdx,%rax), %eax
+.LVL15:
+.LBE65:
+.LBE64:
+ # ../gdb.opt/inline-break.c:144
+ .loc 1 144 0
+ movl %eax, -4(%rsp)
+ # ../gdb.opt/inline-break.c:146
+ .loc 1 146 0
+ movl -4(%rsp), %eax
+.LVL16:
+.LBB66:
+.LBB57:
+ # ../gdb.opt/inline-break.c:55
+ .loc 1 55 0
+ imull %esi, %eax
+.LVL17:
+.LBB55:
+.LBB56:
+ # ../gdb.opt/inline-break.c:49
+ .loc 1 49 0
+ cmpl $13, %eax
+ setg %al
+.LVL18:
+ movzbl %al, %eax
+ addl $1, %eax
+.LBE56:
+.LBE55:
+.LBE57:
+.LBE66:
+ # ../gdb.opt/inline-break.c:146
+ .loc 1 146 0
+ movl %eax, -4(%rsp)
+ # ../gdb.opt/inline-break.c:148
+ .loc 1 148 0
+ movl -4(%rsp), %eax
+.LVL19:
+.LBB67:
+.LBB68:
+ # ../gdb.opt/inline-break.c:70
+ .loc 1 70 0
+ movl %eax, %edx
+ sall $4, %edx
+ leal (%rdx,%rax), %eax
+.LVL20:
+.LBB69:
+.LBB70:
+ # ../gdb.opt/inline-break.c:64
+ .loc 1 64 0
+ cmpl $12, %eax
+ setg %al
+ movzbl %al, %eax
+ addl $1, %eax
+.LBE70:
+.LBE69:
+.LBE68:
+.LBE67:
+ # ../gdb.opt/inline-break.c:148
+ .loc 1 148 0
+ movl %eax, -4(%rsp)
+ # ../gdb.opt/inline-break.c:150
+ .loc 1 150 0
+ movl -4(%rsp), %eax
+.LVL21:
+.LBB71:
+.LBB62:
+ # ../gdb.opt/inline-break.c:85
+ .loc 1 85 0
+ imull %ecx, %eax
+.LVL22:
+.LBB60:
+.LBB61:
+ # ../gdb.opt/inline-break.c:79
+ .loc 1 79 0
+ cmpl $11, %eax
+ setg %al
+.LVL23:
+ movzbl %al, %eax
+ addl $1, %eax
+.LBE61:
+.LBE60:
+.LBE62:
+.LBE71:
+ # ../gdb.opt/inline-break.c:150
+ .loc 1 150 0
+ movl %eax, -4(%rsp)
+ # ../gdb.opt/inline-break.c:152
+ .loc 1 152 0
+ movl -4(%rsp), %eax
+.LVL24:
+.LBB72:
+.LBB73:
+ # ../gdb.opt/inline-break.c:100
+ .loc 1 100 0
+ movl %eax, %edx
+ sall $4, %edx
+ leal (%rdx,%rax), %eax
+.LVL25:
+.LBE73:
+.LBE72:
+.LBB77:
+.LBB80:
+ # ../gdb.opt/inline-break.c:114
+ .loc 1 114 0
+ movl $29, %edx
+.LBE80:
+.LBE77:
+.LBB89:
+.LBB76:
+.LBB74:
+.LBB75:
+ # ../gdb.opt/inline-break.c:94
+ .loc 1 94 0
+ cmpl $13, %eax
+ setle %al
+ movzbl %al, %eax
+ addl $2, %eax
+.LBE75:
+.LBE74:
+.LBE76:
+.LBE89:
+ # ../gdb.opt/inline-break.c:152
+ .loc 1 152 0
+ movl %eax, -4(%rsp)
+ # ../gdb.opt/inline-break.c:154
+ .loc 1 154 0
+ movl -4(%rsp), %eax
+.LVL26:
+.LBB90:
+.LBB79:
+ # ../gdb.opt/inline-break.c:114
+ .loc 1 114 0
+ imull %edx, %eax
+.LVL27:
+.LBE79:
+.LBE90:
+ # ../gdb.opt/inline-break.c:154
+ .loc 1 154 0
+ movl -4(%rsp), %edx
+.LVL28:
+.LBB91:
+.LBB87:
+.LBB82:
+.LBB84:
+ # ../gdb.opt/inline-break.c:108
+ .loc 1 108 0
+ cmpl $22, %eax
+ setg %al
+.LVL29:
+.LBE84:
+.LBE82:
+.LBE87:
+.LBE91:
+.LBB92:
+.LBB94:
+ cmpl $22, %edx
+ setg %dl
+.LVL30:
+.LBE94:
+.LBE92:
+.LBB96:
+.LBB78:
+.LBB81:
+.LBB83:
+ movzbl %al, %eax
+.LBE83:
+.LBE81:
+.LBE78:
+.LBE96:
+.LBB97:
+.LBB93:
+ movzbl %dl, %edx
+.LBE93:
+.LBE97:
+.LBB98:
+.LBB88:
+.LBB86:
+.LBB85:
+ leal 1(%rax,%rax,2), %eax
+.LBE85:
+.LBE86:
+.LBE88:
+.LBE98:
+.LBB99:
+.LBB95:
+ leal 1(%rdx,%rdx,2), %edx
+.LBE95:
+.LBE99:
+ # ../gdb.opt/inline-break.c:154
+ .loc 1 154 0
+ leal (%rdx,%rax), %eax
+.LVL31:
+ movl %eax, -4(%rsp)
+.LVL32:
+ # ../gdb.opt/inline-break.c:156
+ .loc 1 156 0
+ movl -4(%rsp), %edx
+.LVL33:
+.LBB100:
+.LBB101:
+ # ../gdb.opt/inline-break.c:128
+ .loc 1 128 0
+ movl %edx, %eax
+.LVL34:
+ sall $5, %eax
+ subl %edx, %eax
+.LBB102:
+.LBB103:
+ # ../gdb.opt/inline-break.c:122
+ .loc 1 122 0
+ xorl %edx, %edx
+.LVL35:
+ cmpl $6, %eax
+.LBE103:
+.LBE102:
+.LBE101:
+.LBE100:
+ # ../gdb.opt/inline-break.c:156
+ .loc 1 156 0
+ movl -4(%rsp), %eax
+.LVL36:
+.LBB107:
+.LBB106:
+.LBB105:
+.LBB104:
+ # ../gdb.opt/inline-break.c:122
+ .loc 1 122 0
+ setle %dl
+.LBE104:
+.LBE105:
+.LBE106:
+.LBE107:
+.LBB108:
+.LBB109:
+ cmpl $6, %eax
+ setle %al
+.LVL37:
+ movzbl %al, %eax
+ leal 9(%rax,%rax), %eax
+.LBE109:
+.LBE108:
+ # ../gdb.opt/inline-break.c:156
+ .loc 1 156 0
+ leal 9(%rax,%rdx,2), %eax
+.LVL38:
+ movl %eax, -4(%rsp)
+.LVL39:
+ # ../gdb.opt/inline-break.c:158
+ .loc 1 158 0
+ movl -4(%rsp), %eax
+.LVL40:
+ # ../gdb.opt/inline-break.c:159
+ .loc 1 159 0
+ ret
+ .cfi_endproc
+.LFE14:
+ .size main, .-main
+.Letext0:
+ .section .debug_loc,"",@progbits
+.Ldebug_loc0:
+.LLST0:
+ .quad .LVL1-.Ltext0 # Location list begin address (*.LLST0)
+ .quad .LVL2-.Ltext0 # Location list end address (*.LLST0)
+ .value 0x1 # Location expression size
+ .byte 0x55 # DW_OP_reg5
+ .quad 0x0 # Location list terminator begin (*.LLST0)
+ .quad 0x0 # Location list terminator end (*.LLST0)
+.LLST1:
+ .quad .LVL1-.Ltext0 # Location list begin address (*.LLST1)
+ .quad .LVL2-.Ltext0 # Location list end address (*.LLST1)
+ .value 0x5 # Location expression size
+ .byte 0x75 # DW_OP_breg5
+ .sleb128 0
+ .byte 0x41 # DW_OP_lit17
+ .byte 0x1e # DW_OP_mul
+ .byte 0x9f # DW_OP_stack_value
+ .quad 0x0 # Location list terminator begin (*.LLST1)
+ .quad 0x0 # Location list terminator end (*.LLST1)
+.LLST2:
+ .quad .LVL5-.Ltext0 # Location list begin address (*.LLST2)
+ .quad .LVL6-.Ltext0 # Location list end address (*.LLST2)
+ .value 0x1 # Location expression size
+ .byte 0x55 # DW_OP_reg5
+ .quad 0x0 # Location list terminator begin (*.LLST2)
+ .quad 0x0 # Location list terminator end (*.LLST2)
+.LLST3:
+ .quad .LVL5-.Ltext0 # Location list begin address (*.LLST3)
+ .quad .LVL6-.Ltext0 # Location list end address (*.LLST3)
+ .value 0x5 # Location expression size
+ .byte 0x75 # DW_OP_breg5
+ .sleb128 0
+ .byte 0x41 # DW_OP_lit17
+ .byte 0x1e # DW_OP_mul
+ .byte 0x9f # DW_OP_stack_value
+ .quad 0x0 # Location list terminator begin (*.LLST3)
+ .quad 0x0 # Location list terminator end (*.LLST3)
+.LLST4:
+ .quad .LVL8-.Ltext0 # Location list begin address (*.LLST4)
+ .quad .LVL11-.Ltext0 # Location list end address (*.LLST4)
+ .value 0x1 # Location expression size
+ .byte 0x55 # DW_OP_reg5
+ .quad .LVL11-.Ltext0 # Location list begin address (*.LLST4)
+ .quad .LFE14-.Ltext0 # Location list end address (*.LLST4)
+ .value 0x2 # Location expression size
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 -12
+ .quad 0x0 # Location list terminator begin (*.LLST4)
+ .quad 0x0 # Location list terminator end (*.LLST4)
+.LLST5:
+ .quad .LVL8-.Ltext0 # Location list begin address (*.LLST5)
+ .quad .LVL12-.Ltext0 # Location list end address (*.LLST5)
+ .value 0x1 # Location expression size
+ .byte 0x54 # DW_OP_reg4
+ .quad 0x0 # Location list terminator begin (*.LLST5)
+ .quad 0x0 # Location list terminator end (*.LLST5)
+.LLST6:
+ .quad .LVL9-.Ltext0 # Location list begin address (*.LLST6)
+ .quad .LVL31-.Ltext0 # Location list end address (*.LLST6)
+ .value 0x2 # Location expression size
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 -12
+ .quad .LVL32-.Ltext0 # Location list begin address (*.LLST6)
+ .quad .LVL34-.Ltext0 # Location list end address (*.LLST6)
+ .value 0x1 # Location expression size
+ .byte 0x50 # DW_OP_reg0
+ .quad .LVL34-.Ltext0 # Location list begin address (*.LLST6)
+ .quad .LVL38-.Ltext0 # Location list end address (*.LLST6)
+ .value 0x2 # Location expression size
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 -12
+ .quad .LVL39-.Ltext0 # Location list begin address (*.LLST6)
+ .quad .LVL40-.Ltext0 # Location list end address (*.LLST6)
+ .value 0x1 # Location expression size
+ .byte 0x50 # DW_OP_reg0
+ .quad .LVL40-.Ltext0 # Location list begin address (*.LLST6)
+ .quad .LFE14-.Ltext0 # Location list end address (*.LLST6)
+ .value 0x2 # Location expression size
+ .byte 0x91 # DW_OP_fbreg
+ .sleb128 -12
+ .quad 0x0 # Location list terminator begin (*.LLST6)
+ .quad 0x0 # Location list terminator end (*.LLST6)
+.LLST7:
+ .quad .LVL10-.Ltext0 # Location list begin address (*.LLST7)
+ .quad .LVL13-.Ltext0 # Location list end address (*.LLST7)
+ .value 0x1 # Location expression size
+ .byte 0x50 # DW_OP_reg0
+ .quad 0x0 # Location list terminator begin (*.LLST7)
+ .quad 0x0 # Location list terminator end (*.LLST7)
+.LLST8:
+ .quad .LVL16-.Ltext0 # Location list begin address (*.LLST8)
+ .quad .LVL17-.Ltext0 # Location list end address (*.LLST8)
+ .value 0x1 # Location expression size
+ .byte 0x50 # DW_OP_reg0
+ .quad 0x0 # Location list terminator begin (*.LLST8)
+ .quad 0x0 # Location list terminator end (*.LLST8)
+.LLST9:
+ .quad .LVL16-.Ltext0 # Location list begin address (*.LLST9)
+ .quad .LVL17-.Ltext0 # Location list end address (*.LLST9)
+ .value 0x5 # Location expression size
+ .byte 0x70 # DW_OP_breg0
+ .sleb128 0
+ .byte 0x47 # DW_OP_lit23
+ .byte 0x1e # DW_OP_mul
+ .byte 0x9f # DW_OP_stack_value
+ .quad .LVL17-.Ltext0 # Location list begin address (*.LLST9)
+ .quad .LVL18-.Ltext0 # Location list end address (*.LLST9)
+ .value 0x1 # Location expression size
+ .byte 0x50 # DW_OP_reg0
+ .quad 0x0 # Location list terminator begin (*.LLST9)
+ .quad 0x0 # Location list terminator end (*.LLST9)
+.LLST10:
+ .quad .LVL21-.Ltext0 # Location list begin address (*.LLST10)
+ .quad .LVL22-.Ltext0 # Location list end address (*.LLST10)
+ .value 0x1 # Location expression size
+ .byte 0x50 # DW_OP_reg0
+ .quad 0x0 # Location list terminator begin (*.LLST10)
+ .quad 0x0 # Location list terminator end (*.LLST10)
+.LLST11:
+ .quad .LVL21-.Ltext0 # Location list begin address (*.LLST11)
+ .quad .LVL22-.Ltext0 # Location list end address (*.LLST11)
+ .value 0x5 # Location expression size
+ .byte 0x70 # DW_OP_breg0
+ .sleb128 0
+ .byte 0x47 # DW_OP_lit23
+ .byte 0x1e # DW_OP_mul
+ .byte 0x9f # DW_OP_stack_value
+ .quad .LVL22-.Ltext0 # Location list begin address (*.LLST11)
+ .quad .LVL23-.Ltext0 # Location list end address (*.LLST11)
+ .value 0x1 # Location expression size
+ .byte 0x50 # DW_OP_reg0
+ .quad 0x0 # Location list terminator begin (*.LLST11)
+ .quad 0x0 # Location list terminator end (*.LLST11)
+.LLST12:
+ .quad .LVL14-.Ltext0 # Location list begin address (*.LLST12)
+ .quad .LVL15-.Ltext0 # Location list end address (*.LLST12)
+ .value 0x1 # Location expression size
+ .byte 0x50 # DW_OP_reg0
+ .quad 0x0 # Location list terminator begin (*.LLST12)
+ .quad 0x0 # Location list terminator end (*.LLST12)
+.LLST13:
+ .quad .LVL19-.Ltext0 # Location list begin address (*.LLST13)
+ .quad .LVL20-.Ltext0 # Location list end address (*.LLST13)
+ .value 0x1 # Location expression size
+ .byte 0x50 # DW_OP_reg0
+ .quad 0x0 # Location list terminator begin (*.LLST13)
+ .quad 0x0 # Location list terminator end (*.LLST13)
+.LLST14:
+ .quad .LVL19-.Ltext0 # Location list begin address (*.LLST14)
+ .quad .LVL20-.Ltext0 # Location list end address (*.LLST14)
+ .value 0x5 # Location expression size
+ .byte 0x70 # DW_OP_breg0
+ .sleb128 0
+ .byte 0x41 # DW_OP_lit17
+ .byte 0x1e # DW_OP_mul
+ .byte 0x9f # DW_OP_stack_value
+ .quad 0x0 # Location list terminator begin (*.LLST14)
+ .quad 0x0 # Location list terminator end (*.LLST14)
+.LLST15:
+ .quad .LVL24-.Ltext0 # Location list begin address (*.LLST15)
+ .quad .LVL25-.Ltext0 # Location list end address (*.LLST15)
+ .value 0x1 # Location expression size
+ .byte 0x50 # DW_OP_reg0
+ .quad 0x0 # Location list terminator begin (*.LLST15)
+ .quad 0x0 # Location list terminator end (*.LLST15)
+.LLST16:
+ .quad .LVL24-.Ltext0 # Location list begin address (*.LLST16)
+ .quad .LVL25-.Ltext0 # Location list end address (*.LLST16)
+ .value 0x5 # Location expression size
+ .byte 0x70 # DW_OP_breg0
+ .sleb128 0
+ .byte 0x41 # DW_OP_lit17
+ .byte 0x1e # DW_OP_mul
+ .byte 0x9f # DW_OP_stack_value
+ .quad 0x0 # Location list terminator begin (*.LLST16)
+ .quad 0x0 # Location list terminator end (*.LLST16)
+.LLST17:
+ .quad .LVL26-.Ltext0 # Location list begin address (*.LLST17)
+ .quad .LVL27-.Ltext0 # Location list end address (*.LLST17)
+ .value 0x1 # Location expression size
+ .byte 0x50 # DW_OP_reg0
+ .quad 0x0 # Location list terminator begin (*.LLST17)
+ .quad 0x0 # Location list terminator end (*.LLST17)
+.LLST18:
+ .quad .LVL26-.Ltext0 # Location list begin address (*.LLST18)
+ .quad .LVL27-.Ltext0 # Location list end address (*.LLST18)
+ .value 0x5 # Location expression size
+ .byte 0x70 # DW_OP_breg0
+ .sleb128 0
+ .byte 0x4d # DW_OP_lit29
+ .byte 0x1e # DW_OP_mul
+ .byte 0x9f # DW_OP_stack_value
+ .quad .LVL27-.Ltext0 # Location list begin address (*.LLST18)
+ .quad .LVL29-.Ltext0 # Location list end address (*.LLST18)
+ .value 0x1 # Location expression size
+ .byte 0x50 # DW_OP_reg0
+ .quad 0x0 # Location list terminator begin (*.LLST18)
+ .quad 0x0 # Location list terminator end (*.LLST18)
+.LLST19:
+ .quad .LVL28-.Ltext0 # Location list begin address (*.LLST19)
+ .quad .LVL30-.Ltext0 # Location list end address (*.LLST19)
+ .value 0x1 # Location expression size
+ .byte 0x51 # DW_OP_reg1
+ .quad 0x0 # Location list terminator begin (*.LLST19)
+ .quad 0x0 # Location list terminator end (*.LLST19)
+.LLST20:
+ .quad .LVL33-.Ltext0 # Location list begin address (*.LLST20)
+ .quad .LVL35-.Ltext0 # Location list end address (*.LLST20)
+ .value 0x1 # Location expression size
+ .byte 0x51 # DW_OP_reg1
+ .quad 0x0 # Location list terminator begin (*.LLST20)
+ .quad 0x0 # Location list terminator end (*.LLST20)
+.LLST21:
+ .quad .LVL33-.Ltext0 # Location list begin address (*.LLST21)
+ .quad .LVL35-.Ltext0 # Location list end address (*.LLST21)
+ .value 0x5 # Location expression size
+ .byte 0x71 # DW_OP_breg1
+ .sleb128 0
+ .byte 0x4f # DW_OP_lit31
+ .byte 0x1e # DW_OP_mul
+ .byte 0x9f # DW_OP_stack_value
+ .quad 0x0 # Location list terminator begin (*.LLST21)
+ .quad 0x0 # Location list terminator end (*.LLST21)
+.LLST22:
+ .quad .LVL36-.Ltext0 # Location list begin address (*.LLST22)
+ .quad .LVL37-.Ltext0 # Location list end address (*.LLST22)
+ .value 0x1 # Location expression size
+ .byte 0x50 # DW_OP_reg0
+ .quad 0x0 # Location list terminator begin (*.LLST22)
+ .quad 0x0 # Location list terminator end (*.LLST22)
+ .section .debug_info
+ .long 0x540 # Length of Compilation Unit Info
+ .value 0x3 # DWARF version number
+ .long .Ldebug_abbrev0 # Offset Into Abbrev. Section
+ .byte 0x8 # Pointer Size (in bytes)
+ .uleb128 0x1 # (DIE (0xb) DW_TAG_compile_unit)
+ .long .LASF17 # DW_AT_producer: "GNU C 4.5.1 20100924 (Red Hat 4.5.1-4)"
+ .byte 0x1 # DW_AT_language
+ .long .LASF18 # DW_AT_name: "../gdb.opt/inline-break.c"
+ .long .LASF19 # DW_AT_comp_dir: "/home/gary/work/archer/src/gdb/testsuite/gdb.dwarf2"
+ .quad .Ltext0 # DW_AT_low_pc
+ .quad .Letext0 # DW_AT_high_pc
+ .long .Ldebug_line0 # DW_AT_stmt_list
+ .uleb128 0x2 # (DIE (0x2d) DW_TAG_subprogram)
+ .long .LASF0 # DW_AT_name: "func3b"
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x2f # DW_AT_decl_line
+ .byte 0x1 # DW_AT_prototyped
+ .long 0x48 # DW_AT_type
+ .byte 0x3 # DW_AT_inline
+ .long 0x48 # DW_AT_sibling
+ .uleb128 0x3 # (DIE (0x3e) DW_TAG_formal_parameter)
+ .ascii "x\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x2f # DW_AT_decl_line
+ .long 0x48 # DW_AT_type
+ .byte 0x0 # end of children of DIE 0x2d
+ .uleb128 0x4 # (DIE (0x48) DW_TAG_base_type)
+ .byte 0x4 # DW_AT_byte_size
+ .byte 0x5 # DW_AT_encoding
+ .ascii "int\0" # DW_AT_name
+ .uleb128 0x2 # (DIE (0x4f) DW_TAG_subprogram)
+ .long .LASF1 # DW_AT_name: "func7b"
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x6a # DW_AT_decl_line
+ .byte 0x1 # DW_AT_prototyped
+ .long 0x48 # DW_AT_type
+ .byte 0x3 # DW_AT_inline
+ .long 0x6a # DW_AT_sibling
+ .uleb128 0x3 # (DIE (0x60) DW_TAG_formal_parameter)
+ .ascii "x\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x6a # DW_AT_decl_line
+ .long 0x48 # DW_AT_type
+ .byte 0x0 # end of children of DIE 0x4f
+ .uleb128 0x2 # (DIE (0x6a) DW_TAG_subprogram)
+ .long .LASF2 # DW_AT_name: "func4b"
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x3e # DW_AT_decl_line
+ .byte 0x1 # DW_AT_prototyped
+ .long 0x48 # DW_AT_type
+ .byte 0x3 # DW_AT_inline
+ .long 0x85 # DW_AT_sibling
+ .uleb128 0x3 # (DIE (0x7b) DW_TAG_formal_parameter)
+ .ascii "x\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x3e # DW_AT_decl_line
+ .long 0x48 # DW_AT_type
+ .byte 0x0 # end of children of DIE 0x6a
+ .uleb128 0x5 # (DIE (0x85) DW_TAG_subprogram)
+ .byte 0x1 # DW_AT_external
+ .long .LASF3 # DW_AT_name: "func5b"
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x4d # DW_AT_decl_line
+ .byte 0x1 # DW_AT_prototyped
+ .long 0x48 # DW_AT_type
+ .byte 0x3 # DW_AT_inline
+ .long 0xa1 # DW_AT_sibling
+ .uleb128 0x3 # (DIE (0x97) DW_TAG_formal_parameter)
+ .ascii "x\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x4d # DW_AT_decl_line
+ .long 0x48 # DW_AT_type
+ .byte 0x0 # end of children of DIE 0x85
+ .uleb128 0x5 # (DIE (0xa1) DW_TAG_subprogram)
+ .byte 0x1 # DW_AT_external
+ .long .LASF4 # DW_AT_name: "func6b"
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x5c # DW_AT_decl_line
+ .byte 0x1 # DW_AT_prototyped
+ .long 0x48 # DW_AT_type
+ .byte 0x3 # DW_AT_inline
+ .long 0xbd # DW_AT_sibling
+ .uleb128 0x3 # (DIE (0xb3) DW_TAG_formal_parameter)
+ .ascii "x\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x5c # DW_AT_decl_line
+ .long 0x48 # DW_AT_type
+ .byte 0x0 # end of children of DIE 0xa1
+ .uleb128 0x5 # (DIE (0xbd) DW_TAG_subprogram)
+ .byte 0x1 # DW_AT_external
+ .long .LASF5 # DW_AT_name: "func8b"
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x78 # DW_AT_decl_line
+ .byte 0x1 # DW_AT_prototyped
+ .long 0x48 # DW_AT_type
+ .byte 0x3 # DW_AT_inline
+ .long 0xd9 # DW_AT_sibling
+ .uleb128 0x3 # (DIE (0xcf) DW_TAG_formal_parameter)
+ .ascii "x\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x78 # DW_AT_decl_line
+ .long 0x48 # DW_AT_type
+ .byte 0x0 # end of children of DIE 0xbd
+ .uleb128 0x2 # (DIE (0xd9) DW_TAG_subprogram)
+ .long .LASF6 # DW_AT_name: "func1"
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x1e # DW_AT_decl_line
+ .byte 0x1 # DW_AT_prototyped
+ .long 0x48 # DW_AT_type
+ .byte 0x3 # DW_AT_inline
+ .long 0xf4 # DW_AT_sibling
+ .uleb128 0x3 # (DIE (0xea) DW_TAG_formal_parameter)
+ .ascii "x\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x1e # DW_AT_decl_line
+ .long 0x48 # DW_AT_type
+ .byte 0x0 # end of children of DIE 0xd9
+ .uleb128 0x5 # (DIE (0xf4) DW_TAG_subprogram)
+ .byte 0x1 # DW_AT_external
+ .long .LASF7 # DW_AT_name: "func2"
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x26 # DW_AT_decl_line
+ .byte 0x1 # DW_AT_prototyped
+ .long 0x48 # DW_AT_type
+ .byte 0x3 # DW_AT_inline
+ .long 0x110 # DW_AT_sibling
+ .uleb128 0x3 # (DIE (0x106) DW_TAG_formal_parameter)
+ .ascii "x\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x26 # DW_AT_decl_line
+ .long 0x48 # DW_AT_type
+ .byte 0x0 # end of children of DIE 0xf4
+ .uleb128 0x2 # (DIE (0x110) DW_TAG_subprogram)
+ .long .LASF8 # DW_AT_name: "func3a"
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x35 # DW_AT_decl_line
+ .byte 0x1 # DW_AT_prototyped
+ .long 0x48 # DW_AT_type
+ .byte 0x3 # DW_AT_inline
+ .long 0x12b # DW_AT_sibling
+ .uleb128 0x3 # (DIE (0x121) DW_TAG_formal_parameter)
+ .ascii "x\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x35 # DW_AT_decl_line
+ .long 0x48 # DW_AT_type
+ .byte 0x0 # end of children of DIE 0x110
+ .uleb128 0x5 # (DIE (0x12b) DW_TAG_subprogram)
+ .byte 0x1 # DW_AT_external
+ .long .LASF9 # DW_AT_name: "func4a"
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x44 # DW_AT_decl_line
+ .byte 0x1 # DW_AT_prototyped
+ .long 0x48 # DW_AT_type
+ .byte 0x3 # DW_AT_inline
+ .long 0x147 # DW_AT_sibling
+ .uleb128 0x3 # (DIE (0x13d) DW_TAG_formal_parameter)
+ .ascii "x\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x44 # DW_AT_decl_line
+ .long 0x48 # DW_AT_type
+ .byte 0x0 # end of children of DIE 0x12b
+ .uleb128 0x2 # (DIE (0x147) DW_TAG_subprogram)
+ .long .LASF10 # DW_AT_name: "func5a"
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x53 # DW_AT_decl_line
+ .byte 0x1 # DW_AT_prototyped
+ .long 0x48 # DW_AT_type
+ .byte 0x3 # DW_AT_inline
+ .long 0x162 # DW_AT_sibling
+ .uleb128 0x3 # (DIE (0x158) DW_TAG_formal_parameter)
+ .ascii "x\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x53 # DW_AT_decl_line
+ .long 0x48 # DW_AT_type
+ .byte 0x0 # end of children of DIE 0x147
+ .uleb128 0x5 # (DIE (0x162) DW_TAG_subprogram)
+ .byte 0x1 # DW_AT_external
+ .long .LASF11 # DW_AT_name: "func6a"
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x62 # DW_AT_decl_line
+ .byte 0x1 # DW_AT_prototyped
+ .long 0x48 # DW_AT_type
+ .byte 0x3 # DW_AT_inline
+ .long 0x17e # DW_AT_sibling
+ .uleb128 0x3 # (DIE (0x174) DW_TAG_formal_parameter)
+ .ascii "x\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x62 # DW_AT_decl_line
+ .long 0x48 # DW_AT_type
+ .byte 0x0 # end of children of DIE 0x162
+ .uleb128 0x2 # (DIE (0x17e) DW_TAG_subprogram)
+ .long .LASF12 # DW_AT_name: "func7a"
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x70 # DW_AT_decl_line
+ .byte 0x1 # DW_AT_prototyped
+ .long 0x48 # DW_AT_type
+ .byte 0x3 # DW_AT_inline
+ .long 0x199 # DW_AT_sibling
+ .uleb128 0x3 # (DIE (0x18f) DW_TAG_formal_parameter)
+ .ascii "x\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x70 # DW_AT_decl_line
+ .long 0x48 # DW_AT_type
+ .byte 0x0 # end of children of DIE 0x17e
+ .uleb128 0x2 # (DIE (0x199) DW_TAG_subprogram)
+ .long .LASF13 # DW_AT_name: "func8a"
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x7e # DW_AT_decl_line
+ .byte 0x1 # DW_AT_prototyped
+ .long 0x48 # DW_AT_type
+ .byte 0x3 # DW_AT_inline
+ .long 0x1b4 # DW_AT_sibling
+ .uleb128 0x3 # (DIE (0x1aa) DW_TAG_formal_parameter)
+ .ascii "x\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x7e # DW_AT_decl_line
+ .long 0x48 # DW_AT_type
+ .byte 0x0 # end of children of DIE 0x199
+ .uleb128 0x6 # (DIE (0x1b4) DW_TAG_subprogram)
+ .long 0xf4 # DW_AT_abstract_origin
+ .quad .LFB1 # DW_AT_low_pc
+ .quad .LFE1 # DW_AT_high_pc
+ .byte 0x1 # DW_AT_frame_base
+ .byte 0x9c # DW_OP_call_frame_cfa
+ .long 0x1d7 # DW_AT_sibling
+ .uleb128 0x7 # (DIE (0x1cf) DW_TAG_formal_parameter)
+ .long 0x106 # DW_AT_abstract_origin
+ .byte 0x1 # DW_AT_location
+ .byte 0x55 # DW_OP_reg5
+ .byte 0x0 # end of children of DIE 0x1b4
+ .uleb128 0x6 # (DIE (0x1d7) DW_TAG_subprogram)
+ .long 0x12b # DW_AT_abstract_origin
+ .quad .LFB5 # DW_AT_low_pc
+ .quad .LFE5 # DW_AT_high_pc
+ .byte 0x1 # DW_AT_frame_base
+ .byte 0x9c # DW_OP_call_frame_cfa
+ .long 0x21d # DW_AT_sibling
+ .uleb128 0x8 # (DIE (0x1f2) DW_TAG_formal_parameter)
+ .long 0x13d # DW_AT_abstract_origin
+ .long .LLST0 # DW_AT_location
+ .uleb128 0x9 # (DIE (0x1fb) DW_TAG_inlined_subroutine)
+ .long 0x6a # DW_AT_abstract_origin
+ .quad .LBB46 # DW_AT_low_pc
+ .quad .LBE46 # DW_AT_high_pc
+ .byte 0x1 # DW_AT_call_file (../gdb.opt/inline-break.c)
+ .byte 0x46 # DW_AT_call_line
+ .uleb128 0x8 # (DIE (0x212) DW_TAG_formal_parameter)
+ .long 0x7b # DW_AT_abstract_origin
+ .long .LLST1 # DW_AT_location
+ .byte 0x0 # end of children of DIE 0x1fb
+ .byte 0x0 # end of children of DIE 0x1d7
+ .uleb128 0x6 # (DIE (0x21d) DW_TAG_subprogram)
+ .long 0x85 # DW_AT_abstract_origin
+ .quad .LFB6 # DW_AT_low_pc
+ .quad .LFE6 # DW_AT_high_pc
+ .byte 0x1 # DW_AT_frame_base
+ .byte 0x9c # DW_OP_call_frame_cfa
+ .long 0x240 # DW_AT_sibling
+ .uleb128 0x7 # (DIE (0x238) DW_TAG_formal_parameter)
+ .long 0x97 # DW_AT_abstract_origin
+ .byte 0x1 # DW_AT_location
+ .byte 0x55 # DW_OP_reg5
+ .byte 0x0 # end of children of DIE 0x21d
+ .uleb128 0x6 # (DIE (0x240) DW_TAG_subprogram)
+ .long 0xa1 # DW_AT_abstract_origin
+ .quad .LFB8 # DW_AT_low_pc
+ .quad .LFE8 # DW_AT_high_pc
+ .byte 0x1 # DW_AT_frame_base
+ .byte 0x9c # DW_OP_call_frame_cfa
+ .long 0x263 # DW_AT_sibling
+ .uleb128 0x7 # (DIE (0x25b) DW_TAG_formal_parameter)
+ .long 0xb3 # DW_AT_abstract_origin
+ .byte 0x1 # DW_AT_location
+ .byte 0x55 # DW_OP_reg5
+ .byte 0x0 # end of children of DIE 0x240
+ .uleb128 0x6 # (DIE (0x263) DW_TAG_subprogram)
+ .long 0x162 # DW_AT_abstract_origin
+ .quad .LFB9 # DW_AT_low_pc
+ .quad .LFE9 # DW_AT_high_pc
+ .byte 0x1 # DW_AT_frame_base
+ .byte 0x9c # DW_OP_call_frame_cfa
+ .long 0x2a9 # DW_AT_sibling
+ .uleb128 0x8 # (DIE (0x27e) DW_TAG_formal_parameter)
+ .long 0x174 # DW_AT_abstract_origin
+ .long .LLST2 # DW_AT_location
+ .uleb128 0x9 # (DIE (0x287) DW_TAG_inlined_subroutine)
+ .long 0xa1 # DW_AT_abstract_origin
+ .quad .LBB48 # DW_AT_low_pc
+ .quad .LBE48 # DW_AT_high_pc
+ .byte 0x1 # DW_AT_call_file (../gdb.opt/inline-break.c)
+ .byte 0x64 # DW_AT_call_line
+ .uleb128 0x8 # (DIE (0x29e) DW_TAG_formal_parameter)
+ .long 0xb3 # DW_AT_abstract_origin
+ .long .LLST3 # DW_AT_location
+ .byte 0x0 # end of children of DIE 0x287
+ .byte 0x0 # end of children of DIE 0x263
+ .uleb128 0x6 # (DIE (0x2a9) DW_TAG_subprogram)
+ .long 0xbd # DW_AT_abstract_origin
+ .quad .LFB12 # DW_AT_low_pc
+ .quad .LFE12 # DW_AT_high_pc
+ .byte 0x1 # DW_AT_frame_base
+ .byte 0x9c # DW_OP_call_frame_cfa
+ .long 0x2cc # DW_AT_sibling
+ .uleb128 0x7 # (DIE (0x2c4) DW_TAG_formal_parameter)
+ .long 0xcf # DW_AT_abstract_origin
+ .byte 0x1 # DW_AT_location
+ .byte 0x55 # DW_OP_reg5
+ .byte 0x0 # end of children of DIE 0x2a9
+ .uleb128 0xa # (DIE (0x2cc) DW_TAG_subprogram)
+ .byte 0x1 # DW_AT_external
+ .long .LASF20 # DW_AT_name: "main"
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x86 # DW_AT_decl_line
+ .byte 0x1 # DW_AT_prototyped
+ .long 0x48 # DW_AT_type
+ .quad .LFB14 # DW_AT_low_pc
+ .quad .LFE14 # DW_AT_high_pc
+ .byte 0x1 # DW_AT_frame_base
+ .byte 0x9c # DW_OP_call_frame_cfa
+ .long 0x52b # DW_AT_sibling
+ .uleb128 0xb # (DIE (0x2ef) DW_TAG_formal_parameter)
+ .long .LASF14 # DW_AT_name: "argc"
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x86 # DW_AT_decl_line
+ .long 0x48 # DW_AT_type
+ .long .LLST4 # DW_AT_location
+ .uleb128 0xb # (DIE (0x2fe) DW_TAG_formal_parameter)
+ .long .LASF15 # DW_AT_name: "argv"
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x86 # DW_AT_decl_line
+ .long 0x52b # DW_AT_type
+ .long .LLST5 # DW_AT_location
+ .uleb128 0xc # (DIE (0x30d) DW_TAG_variable)
+ .ascii "x\0" # DW_AT_name
+ .byte 0x1 # DW_AT_decl_file (../gdb.opt/inline-break.c)
+ .byte 0x8c # DW_AT_decl_line
+ .long 0x53e # DW_AT_type
+ .long .LLST6 # DW_AT_location
+ .uleb128 0xd # (DIE (0x31a) DW_TAG_inlined_subroutine)
+ .long 0xd9 # DW_AT_abstract_origin
+ .quad .LBB50 # DW_AT_entry_pc
+ .long .Ldebug_ranges0+0x0 # DW_AT_ranges
+ .byte 0x1 # DW_AT_call_file (../gdb.opt/inline-break.c)
+ .byte 0x8e # DW_AT_call_line
+ .long 0x33b # DW_AT_sibling
+ .uleb128 0x8 # (DIE (0x331) DW_TAG_formal_parameter)
+ .long 0xea # DW_AT_abstract_origin
+ .long .LLST7 # DW_AT_location
+ .byte 0x0 # end of children of DIE 0x31a
+ .uleb128 0xd # (DIE (0x33b) DW_TAG_inlined_subroutine)
+ .long 0x110 # DW_AT_abstract_origin
+ .quad .LBB53 # DW_AT_entry_pc
+ .long .Ldebug_ranges0+0x30 # DW_AT_ranges
+ .byte 0x1 # DW_AT_call_file (../gdb.opt/inline-break.c)
+ .byte 0x92 # DW_AT_call_line
+ .long 0x37d # DW_AT_sibling
+ .uleb128 0x8 # (DIE (0x352) DW_TAG_formal_parameter)
+ .long 0x121 # DW_AT_abstract_origin
+ .long .LLST8 # DW_AT_location
+ .uleb128 0x9 # (DIE (0x35b) DW_TAG_inlined_subroutine)
+ .long 0x2d # DW_AT_abstract_origin
+ .quad .LBB55 # DW_AT_low_pc
+ .quad .LBE55 # DW_AT_high_pc
+ .byte 0x1 # DW_AT_call_file (../gdb.opt/inline-break.c)
+ .byte 0x37 # DW_AT_call_line
+ .uleb128 0x8 # (DIE (0x372) DW_TAG_formal_parameter)
+ .long 0x3e # DW_AT_abstract_origin
+ .long .LLST9 # DW_AT_location
+ .byte 0x0 # end of children of DIE 0x35b
+ .byte 0x0 # end of children of DIE 0x33b
+ .uleb128 0xd # (DIE (0x37d) DW_TAG_inlined_subroutine)
+ .long 0x147 # DW_AT_abstract_origin
+ .quad .LBB58 # DW_AT_entry_pc
+ .long .Ldebug_ranges0+0x60 # DW_AT_ranges
+ .byte 0x1 # DW_AT_call_file (../gdb.opt/inline-break.c)
+ .byte 0x96 # DW_AT_call_line
+ .long 0x3bf # DW_AT_sibling
+ .uleb128 0x8 # (DIE (0x394) DW_TAG_formal_parameter)
+ .long 0x158 # DW_AT_abstract_origin
+ .long .LLST10 # DW_AT_location
+ .uleb128 0x9 # (DIE (0x39d) DW_TAG_inlined_subroutine)
+ .long 0x85 # DW_AT_abstract_origin
+ .quad .LBB60 # DW_AT_low_pc
+ .quad .LBE60 # DW_AT_high_pc
+ .byte 0x1 # DW_AT_call_file (../gdb.opt/inline-break.c)
+ .byte 0x55 # DW_AT_call_line
+ .uleb128 0x8 # (DIE (0x3b4) DW_TAG_formal_parameter)
+ .long 0x97 # DW_AT_abstract_origin
+ .long .LLST11 # DW_AT_location
+ .byte 0x0 # end of children of DIE 0x39d
+ .byte 0x0 # end of children of DIE 0x37d
+ .uleb128 0xe # (DIE (0x3bf) DW_TAG_inlined_subroutine)
+ .long 0xf4 # DW_AT_abstract_origin
+ .quad .LBB64 # DW_AT_low_pc
+ .quad .LBE64 # DW_AT_high_pc
+ .byte 0x1 # DW_AT_call_file (../gdb.opt/inline-break.c)
+ .byte 0x90 # DW_AT_call_line
+ .long 0x3e4 # DW_AT_sibling
+ .uleb128 0x8 # (DIE (0x3da) DW_TAG_formal_parameter)
+ .long 0x106 # DW_AT_abstract_origin
+ .long .LLST12 # DW_AT_location
+ .byte 0x0 # end of children of DIE 0x3bf
+ .uleb128 0xe # (DIE (0x3e4) DW_TAG_inlined_subroutine)
+ .long 0x12b # DW_AT_abstract_origin
+ .quad .LBB67 # DW_AT_low_pc
+ .quad .LBE67 # DW_AT_high_pc
+ .byte 0x1 # DW_AT_call_file (../gdb.opt/inline-break.c)
+ .byte 0x94 # DW_AT_call_line
+ .long 0x42a # DW_AT_sibling
+ .uleb128 0x8 # (DIE (0x3ff) DW_TAG_formal_parameter)
+ .long 0x13d # DW_AT_abstract_origin
+ .long .LLST13 # DW_AT_location
+ .uleb128 0x9 # (DIE (0x408) DW_TAG_inlined_subroutine)
+ .long 0x6a # DW_AT_abstract_origin
+ .quad .LBB69 # DW_AT_low_pc
+ .quad .LBE69 # DW_AT_high_pc
+ .byte 0x1 # DW_AT_call_file (../gdb.opt/inline-break.c)
+ .byte 0x46 # DW_AT_call_line
+ .uleb128 0x8 # (DIE (0x41f) DW_TAG_formal_parameter)
+ .long 0x7b # DW_AT_abstract_origin
+ .long .LLST14 # DW_AT_location
+ .byte 0x0 # end of children of DIE 0x408
+ .byte 0x0 # end of children of DIE 0x3e4
+ .uleb128 0xd # (DIE (0x42a) DW_TAG_inlined_subroutine)
+ .long 0x162 # DW_AT_abstract_origin
+ .quad .LBB72 # DW_AT_entry_pc
+ .long .Ldebug_ranges0+0x90 # DW_AT_ranges
+ .byte 0x1 # DW_AT_call_file (../gdb.opt/inline-break.c)
+ .byte 0x98 # DW_AT_call_line
+ .long 0x46c # DW_AT_sibling
+ .uleb128 0x8 # (DIE (0x441) DW_TAG_formal_parameter)
+ .long 0x174 # DW_AT_abstract_origin
+ .long .LLST15 # DW_AT_location
+ .uleb128 0x9 # (DIE (0x44a) DW_TAG_inlined_subroutine)
+ .long 0xa1 # DW_AT_abstract_origin
+ .quad .LBB74 # DW_AT_low_pc
+ .quad .LBE74 # DW_AT_high_pc
+ .byte 0x1 # DW_AT_call_file (../gdb.opt/inline-break.c)
+ .byte 0x64 # DW_AT_call_line
+ .uleb128 0x8 # (DIE (0x461) DW_TAG_formal_parameter)
+ .long 0xb3 # DW_AT_abstract_origin
+ .long .LLST16 # DW_AT_location
+ .byte 0x0 # end of children of DIE 0x44a
+ .byte 0x0 # end of children of DIE 0x42a
+ .uleb128 0xd # (DIE (0x46c) DW_TAG_inlined_subroutine)
+ .long 0x17e # DW_AT_abstract_origin
+ .quad .LBB77 # DW_AT_entry_pc
+ .long .Ldebug_ranges0+0xc0 # DW_AT_ranges
+ .byte 0x1 # DW_AT_call_file (../gdb.opt/inline-break.c)
+ .byte 0x9a # DW_AT_call_line
+ .long 0x4aa # DW_AT_sibling
+ .uleb128 0x8 # (DIE (0x483) DW_TAG_formal_parameter)
+ .long 0x18f # DW_AT_abstract_origin
+ .long .LLST17 # DW_AT_location
+ .uleb128 0xf # (DIE (0x48c) DW_TAG_inlined_subroutine)
+ .long 0x4f # DW_AT_abstract_origin
+ .quad .LBB82 # DW_AT_entry_pc
+ .long .Ldebug_ranges0+0x120 # DW_AT_ranges
+ .byte 0x1 # DW_AT_call_file (../gdb.opt/inline-break.c)
+ .byte 0x72 # DW_AT_call_line
+ .uleb128 0x8 # (DIE (0x49f) DW_TAG_formal_parameter)
+ .long 0x60 # DW_AT_abstract_origin
+ .long .LLST18 # DW_AT_location
+ .byte 0x0 # end of children of DIE 0x48c
+ .byte 0x0 # end of children of DIE 0x46c
+ .uleb128 0xd # (DIE (0x4aa) DW_TAG_inlined_subroutine)
+ .long 0x4f # DW_AT_abstract_origin
+ .quad .LBB92 # DW_AT_entry_pc
+ .long .Ldebug_ranges0+0x160 # DW_AT_ranges
+ .byte 0x1 # DW_AT_call_file (../gdb.opt/inline-break.c)
+ .byte 0x9a # DW_AT_call_line
+ .long 0x4cb # DW_AT_sibling
+ .uleb128 0x8 # (DIE (0x4c1) DW_TAG_formal_parameter)
+ .long 0x60 # DW_AT_abstract_origin
+ .long .LLST19 # DW_AT_location
+ .byte 0x0 # end of children of DIE 0x4aa
+ .uleb128 0xd # (DIE (0x4cb) DW_TAG_inlined_subroutine)
+ .long 0x199 # DW_AT_abstract_origin
+ .quad .LBB100 # DW_AT_entry_pc
+ .long .Ldebug_ranges0+0x1a0 # DW_AT_ranges
+ .byte 0x1 # DW_AT_call_file (../gdb.opt/inline-break.c)
+ .byte 0x9c # DW_AT_call_line
+ .long 0x509 # DW_AT_sibling
+ .uleb128 0x8 # (DIE (0x4e2) DW_TAG_formal_parameter)
+ .long 0x1aa # DW_AT_abstract_origin
+ .long .LLST20 # DW_AT_location
+ .uleb128 0xf # (DIE (0x4eb) DW_TAG_inlined_subroutine)
+ .long 0xbd # DW_AT_abstract_origin
+ .quad .LBB102 # DW_AT_entry_pc
+ .long .Ldebug_ranges0+0x1d0 # DW_AT_ranges
+ .byte 0x1 # DW_AT_call_file (../gdb.opt/inline-break.c)
+ .byte 0x80 # DW_AT_call_line
+ .uleb128 0x8 # (DIE (0x4fe) DW_TAG_formal_parameter)
+ .long 0xcf # DW_AT_abstract_origin
+ .long .LLST21 # DW_AT_location
+ .byte 0x0 # end of children of DIE 0x4eb
+ .byte 0x0 # end of children of DIE 0x4cb
+ .uleb128 0x9 # (DIE (0x509) DW_TAG_inlined_subroutine)
+ .long 0xbd # DW_AT_abstract_origin
+ .quad .LBB108 # DW_AT_low_pc
+ .quad .LBE108 # DW_AT_high_pc
+ .byte 0x1 # DW_AT_call_file (../gdb.opt/inline-break.c)
+ .byte 0x9c # DW_AT_call_line
+ .uleb128 0x8 # (DIE (0x520) DW_TAG_formal_parameter)
+ .long 0xcf # DW_AT_abstract_origin
+ .long .LLST22 # DW_AT_location
+ .byte 0x0 # end of children of DIE 0x509
+ .byte 0x0 # end of children of DIE 0x2cc
+ .uleb128 0x10 # (DIE (0x52b) DW_TAG_pointer_type)
+ .byte 0x8 # DW_AT_byte_size
+ .long 0x531 # DW_AT_type
+ .uleb128 0x10 # (DIE (0x531) DW_TAG_pointer_type)
+ .byte 0x8 # DW_AT_byte_size
+ .long 0x537 # DW_AT_type
+ .uleb128 0x11 # (DIE (0x537) DW_TAG_base_type)
+ .byte 0x1 # DW_AT_byte_size
+ .byte 0x6 # DW_AT_encoding
+ .long .LASF16 # DW_AT_name: "char"
+ .uleb128 0x12 # (DIE (0x53e) DW_TAG_volatile_type)
+ .long 0x48 # DW_AT_type
+ .byte 0x0 # end of children of DIE 0xb
+ .section .debug_abbrev
+ .uleb128 0x1 # (abbrev code)
+ .uleb128 0x11 # (TAG: DW_TAG_compile_unit)
+ .byte 0x1 # DW_children_yes
+ .uleb128 0x25 # (DW_AT_producer)
+ .uleb128 0xe # (DW_FORM_strp)
+ .uleb128 0x13 # (DW_AT_language)
+ .uleb128 0xb # (DW_FORM_data1)
+ .uleb128 0x3 # (DW_AT_name)
+ .uleb128 0xe # (DW_FORM_strp)
+ .uleb128 0x1b # (DW_AT_comp_dir)
+ .uleb128 0xe # (DW_FORM_strp)
+ .uleb128 0x11 # (DW_AT_low_pc)
+ .uleb128 0x1 # (DW_FORM_addr)
+ .uleb128 0x12 # (DW_AT_high_pc)
+ .uleb128 0x1 # (DW_FORM_addr)
+ .uleb128 0x10 # (DW_AT_stmt_list)
+ .uleb128 0x6 # (DW_FORM_data4)
+ .byte 0x0
+ .byte 0x0
+ .uleb128 0x2 # (abbrev code)
+ .uleb128 0x2e # (TAG: DW_TAG_subprogram)
+ .byte 0x1 # DW_children_yes
+ .uleb128 0x3 # (DW_AT_name)
+ .uleb128 0xe # (DW_FORM_strp)
+ .uleb128 0x3a # (DW_AT_decl_file)
+ .uleb128 0xb # (DW_FORM_data1)
+ .uleb128 0x3b # (DW_AT_decl_line)
+ .uleb128 0xb # (DW_FORM_data1)
+ .uleb128 0x27 # (DW_AT_prototyped)
+ .uleb128 0xc # (DW_FORM_flag)
+ .uleb128 0x49 # (DW_AT_type)
+ .uleb128 0x13 # (DW_FORM_ref4)
+ .uleb128 0x20 # (DW_AT_inline)
+ .uleb128 0xb # (DW_FORM_data1)
+ .uleb128 0x1 # (DW_AT_sibling)
+ .uleb128 0x13 # (DW_FORM_ref4)
+ .byte 0x0
+ .byte 0x0
+ .uleb128 0x3 # (abbrev code)
+ .uleb128 0x5 # (TAG: DW_TAG_formal_parameter)
+ .byte 0x0 # DW_children_no
+ .uleb128 0x3 # (DW_AT_name)
+ .uleb128 0x8 # (DW_FORM_string)
+ .uleb128 0x3a # (DW_AT_decl_file)
+ .uleb128 0xb # (DW_FORM_data1)
+ .uleb128 0x3b # (DW_AT_decl_line)
+ .uleb128 0xb # (DW_FORM_data1)
+ .uleb128 0x49 # (DW_AT_type)
+ .uleb128 0x13 # (DW_FORM_ref4)
+ .byte 0x0
+ .byte 0x0
+ .uleb128 0x4 # (abbrev code)
+ .uleb128 0x24 # (TAG: DW_TAG_base_type)
+ .byte 0x0 # DW_children_no
+ .uleb128 0xb # (DW_AT_byte_size)
+ .uleb128 0xb # (DW_FORM_data1)
+ .uleb128 0x3e # (DW_AT_encoding)
+ .uleb128 0xb # (DW_FORM_data1)
+ .uleb128 0x3 # (DW_AT_name)
+ .uleb128 0x8 # (DW_FORM_string)
+ .byte 0x0
+ .byte 0x0
+ .uleb128 0x5 # (abbrev code)
+ .uleb128 0x2e # (TAG: DW_TAG_subprogram)
+ .byte 0x1 # DW_children_yes
+ .uleb128 0x3f # (DW_AT_external)
+ .uleb128 0xc # (DW_FORM_flag)
+ .uleb128 0x3 # (DW_AT_name)
+ .uleb128 0xe # (DW_FORM_strp)
+ .uleb128 0x3a # (DW_AT_decl_file)
+ .uleb128 0xb # (DW_FORM_data1)
+ .uleb128 0x3b # (DW_AT_decl_line)
+ .uleb128 0xb # (DW_FORM_data1)
+ .uleb128 0x27 # (DW_AT_prototyped)
+ .uleb128 0xc # (DW_FORM_flag)
+ .uleb128 0x49 # (DW_AT_type)
+ .uleb128 0x13 # (DW_FORM_ref4)
+ .uleb128 0x20 # (DW_AT_inline)
+ .uleb128 0xb # (DW_FORM_data1)
+ .uleb128 0x1 # (DW_AT_sibling)
+ .uleb128 0x13 # (DW_FORM_ref4)
+ .byte 0x0
+ .byte 0x0
+ .uleb128 0x6 # (abbrev code)
+ .uleb128 0x2e # (TAG: DW_TAG_subprogram)
+ .byte 0x1 # DW_children_yes
+ .uleb128 0x31 # (DW_AT_abstract_origin)
+ .uleb128 0x13 # (DW_FORM_ref4)
+ .uleb128 0x11 # (DW_AT_low_pc)
+ .uleb128 0x1 # (DW_FORM_addr)
+ .uleb128 0x12 # (DW_AT_high_pc)
+ .uleb128 0x1 # (DW_FORM_addr)
+ .uleb128 0x40 # (DW_AT_frame_base)
+ .uleb128 0xa # (DW_FORM_block1)
+ .uleb128 0x1 # (DW_AT_sibling)
+ .uleb128 0x13 # (DW_FORM_ref4)
+ .byte 0x0
+ .byte 0x0
+ .uleb128 0x7 # (abbrev code)
+ .uleb128 0x5 # (TAG: DW_TAG_formal_parameter)
+ .byte 0x0 # DW_children_no
+ .uleb128 0x31 # (DW_AT_abstract_origin)
+ .uleb128 0x13 # (DW_FORM_ref4)
+ .uleb128 0x2 # (DW_AT_location)
+ .uleb128 0xa # (DW_FORM_block1)
+ .byte 0x0
+ .byte 0x0
+ .uleb128 0x8 # (abbrev code)
+ .uleb128 0x5 # (TAG: DW_TAG_formal_parameter)
+ .byte 0x0 # DW_children_no
+ .uleb128 0x31 # (DW_AT_abstract_origin)
+ .uleb128 0x13 # (DW_FORM_ref4)
+ .uleb128 0x2 # (DW_AT_location)
+ .uleb128 0x6 # (DW_FORM_data4)
+ .byte 0x0
+ .byte 0x0
+ .uleb128 0x9 # (abbrev code)
+ .uleb128 0x1d # (TAG: DW_TAG_inlined_subroutine)
+ .byte 0x1 # DW_children_yes
+ .uleb128 0x31 # (DW_AT_abstract_origin)
+ .uleb128 0x13 # (DW_FORM_ref4)
+ .uleb128 0x11 # (DW_AT_low_pc)
+ .uleb128 0x1 # (DW_FORM_addr)
+ .uleb128 0x12 # (DW_AT_high_pc)
+ .uleb128 0x1 # (DW_FORM_addr)
+ .uleb128 0x58 # (DW_AT_call_file)
+ .uleb128 0xb # (DW_FORM_data1)
+ .uleb128 0x59 # (DW_AT_call_line)
+ .uleb128 0xb # (DW_FORM_data1)
+ .byte 0x0
+ .byte 0x0
+ .uleb128 0xa # (abbrev code)
+ .uleb128 0x2e # (TAG: DW_TAG_subprogram)
+ .byte 0x1 # DW_children_yes
+ .uleb128 0x3f # (DW_AT_external)
+ .uleb128 0xc # (DW_FORM_flag)
+ .uleb128 0x3 # (DW_AT_name)
+ .uleb128 0xe # (DW_FORM_strp)
+ .uleb128 0x3a # (DW_AT_decl_file)
+ .uleb128 0xb # (DW_FORM_data1)
+ .uleb128 0x3b # (DW_AT_decl_line)
+ .uleb128 0xb # (DW_FORM_data1)
+ .uleb128 0x27 # (DW_AT_prototyped)
+ .uleb128 0xc # (DW_FORM_flag)
+ .uleb128 0x49 # (DW_AT_type)
+ .uleb128 0x13 # (DW_FORM_ref4)
+ .uleb128 0x11 # (DW_AT_low_pc)
+ .uleb128 0x1 # (DW_FORM_addr)
+ .uleb128 0x12 # (DW_AT_high_pc)
+ .uleb128 0x1 # (DW_FORM_addr)
+ .uleb128 0x40 # (DW_AT_frame_base)
+ .uleb128 0xa # (DW_FORM_block1)
+ .uleb128 0x1 # (DW_AT_sibling)
+ .uleb128 0x13 # (DW_FORM_ref4)
+ .byte 0x0
+ .byte 0x0
+ .uleb128 0xb # (abbrev code)
+ .uleb128 0x5 # (TAG: DW_TAG_formal_parameter)
+ .byte 0x0 # DW_children_no
+ .uleb128 0x3 # (DW_AT_name)
+ .uleb128 0xe # (DW_FORM_strp)
+ .uleb128 0x3a # (DW_AT_decl_file)
+ .uleb128 0xb # (DW_FORM_data1)
+ .uleb128 0x3b # (DW_AT_decl_line)
+ .uleb128 0xb # (DW_FORM_data1)
+ .uleb128 0x49 # (DW_AT_type)
+ .uleb128 0x13 # (DW_FORM_ref4)
+ .uleb128 0x2 # (DW_AT_location)
+ .uleb128 0x6 # (DW_FORM_data4)
+ .byte 0x0
+ .byte 0x0
+ .uleb128 0xc # (abbrev code)
+ .uleb128 0x34 # (TAG: DW_TAG_variable)
+ .byte 0x0 # DW_children_no
+ .uleb128 0x3 # (DW_AT_name)
+ .uleb128 0x8 # (DW_FORM_string)
+ .uleb128 0x3a # (DW_AT_decl_file)
+ .uleb128 0xb # (DW_FORM_data1)
+ .uleb128 0x3b # (DW_AT_decl_line)
+ .uleb128 0xb # (DW_FORM_data1)
+ .uleb128 0x49 # (DW_AT_type)
+ .uleb128 0x13 # (DW_FORM_ref4)
+ .uleb128 0x2 # (DW_AT_location)
+ .uleb128 0x6 # (DW_FORM_data4)
+ .byte 0x0
+ .byte 0x0
+ .uleb128 0xd # (abbrev code)
+ .uleb128 0x1d # (TAG: DW_TAG_inlined_subroutine)
+ .byte 0x1 # DW_children_yes
+ .uleb128 0x31 # (DW_AT_abstract_origin)
+ .uleb128 0x13 # (DW_FORM_ref4)
+ .uleb128 0x52 # (DW_AT_entry_pc)
+ .uleb128 0x1 # (DW_FORM_addr)
+ .uleb128 0x55 # (DW_AT_ranges)
+ .uleb128 0x6 # (DW_FORM_data4)
+ .uleb128 0x58 # (DW_AT_call_file)
+ .uleb128 0xb # (DW_FORM_data1)
+ .uleb128 0x59 # (DW_AT_call_line)
+ .uleb128 0xb # (DW_FORM_data1)
+ .uleb128 0x1 # (DW_AT_sibling)
+ .uleb128 0x13 # (DW_FORM_ref4)
+ .byte 0x0
+ .byte 0x0
+ .uleb128 0xe # (abbrev code)
+ .uleb128 0x1d # (TAG: DW_TAG_inlined_subroutine)
+ .byte 0x1 # DW_children_yes
+ .uleb128 0x31 # (DW_AT_abstract_origin)
+ .uleb128 0x13 # (DW_FORM_ref4)
+ .uleb128 0x11 # (DW_AT_low_pc)
+ .uleb128 0x1 # (DW_FORM_addr)
+ .uleb128 0x12 # (DW_AT_high_pc)
+ .uleb128 0x1 # (DW_FORM_addr)
+ .uleb128 0x58 # (DW_AT_call_file)
+ .uleb128 0xb # (DW_FORM_data1)
+ .uleb128 0x59 # (DW_AT_call_line)
+ .uleb128 0xb # (DW_FORM_data1)
+ .uleb128 0x1 # (DW_AT_sibling)
+ .uleb128 0x13 # (DW_FORM_ref4)
+ .byte 0x0
+ .byte 0x0
+ .uleb128 0xf # (abbrev code)
+ .uleb128 0x1d # (TAG: DW_TAG_inlined_subroutine)
+ .byte 0x1 # DW_children_yes
+ .uleb128 0x31 # (DW_AT_abstract_origin)
+ .uleb128 0x13 # (DW_FORM_ref4)
+ .uleb128 0x52 # (DW_AT_entry_pc)
+ .uleb128 0x1 # (DW_FORM_addr)
+ .uleb128 0x55 # (DW_AT_ranges)
+ .uleb128 0x6 # (DW_FORM_data4)
+ .uleb128 0x58 # (DW_AT_call_file)
+ .uleb128 0xb # (DW_FORM_data1)
+ .uleb128 0x59 # (DW_AT_call_line)
+ .uleb128 0xb # (DW_FORM_data1)
+ .byte 0x0
+ .byte 0x0
+ .uleb128 0x10 # (abbrev code)
+ .uleb128 0xf # (TAG: DW_TAG_pointer_type)
+ .byte 0x0 # DW_children_no
+ .uleb128 0xb # (DW_AT_byte_size)
+ .uleb128 0xb # (DW_FORM_data1)
+ .uleb128 0x49 # (DW_AT_type)
+ .uleb128 0x13 # (DW_FORM_ref4)
+ .byte 0x0
+ .byte 0x0
+ .uleb128 0x11 # (abbrev code)
+ .uleb128 0x24 # (TAG: DW_TAG_base_type)
+ .byte 0x0 # DW_children_no
+ .uleb128 0xb # (DW_AT_byte_size)
+ .uleb128 0xb # (DW_FORM_data1)
+ .uleb128 0x3e # (DW_AT_encoding)
+ .uleb128 0xb # (DW_FORM_data1)
+ .uleb128 0x3 # (DW_AT_name)
+ .uleb128 0xe # (DW_FORM_strp)
+ .byte 0x0
+ .byte 0x0
+ .uleb128 0x12 # (abbrev code)
+ .uleb128 0x35 # (TAG: DW_TAG_volatile_type)
+ .byte 0x0 # DW_children_no
+ .uleb128 0x49 # (DW_AT_type)
+ .uleb128 0x13 # (DW_FORM_ref4)
+ .byte 0x0
+ .byte 0x0
+ .byte 0x0
+ .section .debug_pubnames,"",@progbits
+ .long 0x58 # Length of Public Names Info
+ .value 0x2 # DWARF Version
+ .long .Ldebug_info0 # Offset of Compilation Unit Info
+ .long 0x544 # Compilation Unit Length
+ .long 0x1b4 # DIE offset
+ .ascii "func2\0" # external name
+ .long 0x1d7 # DIE offset
+ .ascii "func4a\0" # external name
+ .long 0x21d # DIE offset
+ .ascii "func5b\0" # external name
+ .long 0x240 # DIE offset
+ .ascii "func6b\0" # external name
+ .long 0x263 # DIE offset
+ .ascii "func6a\0" # external name
+ .long 0x2a9 # DIE offset
+ .ascii "func8b\0" # external name
+ .long 0x2cc # DIE offset
+ .ascii "main\0" # external name
+ .long 0x0
+ .section .debug_aranges,"",@progbits
+ .long 0x2c # Length of Address Ranges Info
+ .value 0x2 # DWARF Version
+ .long .Ldebug_info0 # Offset of Compilation Unit Info
+ .byte 0x8 # Size of Address
+ .byte 0x0 # Size of Segment Descriptor
+ .value 0x0 # Pad to 16 byte boundary
+ .value 0x0
+ .quad .Ltext0 # Address
+ .quad .Letext0-.Ltext0 # Length
+ .quad 0x0
+ .quad 0x0
+ .section .debug_ranges,"",@progbits
+.Ldebug_ranges0:
+ .quad .LBB50-.Ltext0 # Offset 0x0
+ .quad .LBE50-.Ltext0
+ .quad .LBB63-.Ltext0
+ .quad .LBE63-.Ltext0
+ .quad 0x0
+ .quad 0x0
+ .quad .LBB53-.Ltext0 # Offset 0x30
+ .quad .LBE53-.Ltext0
+ .quad .LBB66-.Ltext0
+ .quad .LBE66-.Ltext0
+ .quad 0x0
+ .quad 0x0
+ .quad .LBB58-.Ltext0 # Offset 0x60
+ .quad .LBE58-.Ltext0
+ .quad .LBB71-.Ltext0
+ .quad .LBE71-.Ltext0
+ .quad 0x0
+ .quad 0x0
+ .quad .LBB72-.Ltext0 # Offset 0x90
+ .quad .LBE72-.Ltext0
+ .quad .LBB89-.Ltext0
+ .quad .LBE89-.Ltext0
+ .quad 0x0
+ .quad 0x0
+ .quad .LBB77-.Ltext0 # Offset 0xc0
+ .quad .LBE77-.Ltext0
+ .quad .LBB98-.Ltext0
+ .quad .LBE98-.Ltext0
+ .quad .LBB96-.Ltext0
+ .quad .LBE96-.Ltext0
+ .quad .LBB91-.Ltext0
+ .quad .LBE91-.Ltext0
+ .quad .LBB90-.Ltext0
+ .quad .LBE90-.Ltext0
+ .quad 0x0
+ .quad 0x0
+ .quad .LBB82-.Ltext0 # Offset 0x120
+ .quad .LBE82-.Ltext0
+ .quad .LBB86-.Ltext0
+ .quad .LBE86-.Ltext0
+ .quad .LBB81-.Ltext0
+ .quad .LBE81-.Ltext0
+ .quad 0x0
+ .quad 0x0
+ .quad .LBB92-.Ltext0 # Offset 0x160
+ .quad .LBE92-.Ltext0
+ .quad .LBB99-.Ltext0
+ .quad .LBE99-.Ltext0
+ .quad .LBB97-.Ltext0
+ .quad .LBE97-.Ltext0
+ .quad 0x0
+ .quad 0x0
+ .quad .LBB100-.Ltext0 # Offset 0x1a0
+ .quad .LBE100-.Ltext0
+ .quad .LBB107-.Ltext0
+ .quad .LBE107-.Ltext0
+ .quad 0x0
+ .quad 0x0
+ .quad .LBB102-.Ltext0 # Offset 0x1d0
+ .quad .LBE102-.Ltext0
+ .quad .LBB105-.Ltext0
+ .quad .LBE105-.Ltext0
+ .quad 0x0
+ .quad 0x0
+ .section .debug_str,"MS",@progbits,1
+.LASF12:
+ .string "func7a"
+.LASF1:
+ .string "func7b"
+.LASF19:
+ .string "/home/gary/work/archer/src/gdb/testsuite/gdb.dwarf2"
+.LASF20:
+ .string "main"
+.LASF18:
+ .string "../gdb.opt/inline-break.c"
+.LASF6:
+ .string "func1"
+.LASF17:
+ .string "GNU C 4.5.1 20100924 (Red Hat 4.5.1-4)"
+.LASF14:
+ .string "argc"
+.LASF8:
+ .string "func3a"
+.LASF0:
+ .string "func3b"
+.LASF16:
+ .string "char"
+.LASF9:
+ .string "func4a"
+.LASF2:
+ .string "func4b"
+.LASF11:
+ .string "func6a"
+.LASF10:
+ .string "func5a"
+.LASF3:
+ .string "func5b"
+.LASF5:
+ .string "func8b"
+.LASF13:
+ .string "func8a"
+.LASF7:
+ .string "func2"
+.LASF4:
+ .string "func6b"
+.LASF15:
+ .string "argv"
+ .ident "GCC: (GNU) 4.5.1 20100924 (Red Hat 4.5.1-4)"
+ .section .note.GNU-stack,"",@progbits
diff --git a/gdb/testsuite/gdb.dwarf2/dw2-inline-break.exp b/gdb/testsuite/gdb.dwarf2/dw2-inline-break.exp
new file mode 100644
index 0000000..2ef7145
--- /dev/null
+++ b/gdb/testsuite/gdb.dwarf2/dw2-inline-break.exp
@@ -0,0 +1,124 @@
+# Copyright 2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Note that the testcase gdb.opt/inline-break.exp largely mirrors
+# this testcase, and should be updated if this testcase is changed.
+
+load_lib dwarf.exp
+
+# This test can only be run on targets which support DWARF-2 and use gas.
+if ![dwarf2_support] {
+ return 0
+}
+
+# This test can only be run on x86_64 targets.
+if {![istarget "x86_64-*-*"] || ![is_lp64_target]} {
+ return 0
+}
+
+set basename "inline-break"
+set testfile "dw2-$basename"
+
+if { [prepare_for_testing $testfile.exp $testfile $testfile.S {nodebug}] } {
+ return -1
+}
+
+#
+# func1 is a static inlined function that is called once.
+# The result should be a single-location breakpoint.
+#
+gdb_test "break func1" \
+ "Breakpoint.*at.* file .*$basename\\.c, line.*"
+
+#
+# func2 is a non-static inlined function that is called once.
+# The result should be a breakpoint with two locations: the
+# out-of-line function and the single inlined instance.
+#
+gdb_test "break func2" \
+ "Breakpoint.*at.*func2.*\\(2 locations\\)"
+
+#
+# func3b is a static inlined function that is called once from
+# within another static inlined function. The result should be
+# a single-location breakpoint.
+#
+gdb_test "break func3b" \
+ "Breakpoint.*at.* file .*$basename\\.c, line.*"
+
+#
+# func4b is a static inlined function that is called once from
+# within a non-static inlined function. The result should be
+# a breakpoint with two locations: the inlined instance within
+# the inlined call to func4a in main, and the inlined instance
+# within the out-of-line func4a.
+#
+gdb_test "break func4b" \
+ "Breakpoint.*at.*func4b.*\\(2 locations\\)"
+
+#
+# func5b is a non-static inlined function that is called once
+# from within a static inlined function. The result should be a
+# breakpoint with two locations: the out-of-line function and the
+# inlined instance within the inlined call to func5a in main.
+#
+gdb_test "break func5b" \
+ "Breakpoint.*at.*func5b.*\\(2 locations\\)"
+#
+# func6b is a non-static inlined function that is called once from
+# within another non-static inlined function. The result should be
+# a breakpoint with three locations: the out-of-line function, the
+# inlined instance within the out-of-line func6a, and the inlined
+# instance within the inlined call to func6a in main,
+#
+gdb_test "break func6b" \
+ "Breakpoint.*at.*func6b.*\\(3 locations\\)"
+
+#
+# func7b is a static inlined function that is called twice: once from
+# func7a, and once from main. The result should be a breakpoint with
+# two locations: the inlined instance within the inlined instance of
+# func7a, and the inlined instance within main.
+#
+gdb_test "break func7b" \
+ "Breakpoint.*at.*func7b.*\\(2 locations\\)"
+
+#
+# func8b is a non-static inlined function that is called twice: once
+# func8a, and once from main. The result should be a breakpoint with
+# three locations: the out-of-line function, the inlined instance
+# within the inlined instance of func7a, and the inlined instance
+# within main.
+#
+gdb_test "break func8b" \
+ "Breakpoint.*at.*func8b.*\\(3 locations\\)"
+
+#
+# func1 is a static inlined function. The result should be that no
+# symbol is found to print.
+#
+gdb_test "print func1" \
+ "No symbol \"func1\" in current context."
+
+#
+# func2 is a non-static inlined function. The result should be that
+# one symbol is found to print, and that the printed symbol is called
+# "func2". Note that this does not cover the failure case that two
+# symbols were found, but that gdb chose the out-of-line copy to
+# print, but if this was failing the "print func1" test would likely
+# fail instead.
+#
+gdb_test "print func2" \
+ "\\\$.* = {int \\(int\\)} .* <func2>"
diff --git a/gdb/testsuite/gdb.opt/inline-break.c b/gdb/testsuite/gdb.opt/inline-break.c
new file mode 100644
index 0000000..edf82d6
--- /dev/null
+++ b/gdb/testsuite/gdb.opt/inline-break.c
@@ -0,0 +1,159 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+ Copyright (C) 2012 Free Software Foundation, Inc.
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 3 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
+
+/* The file ../gdb.dwarf2/inline-break.S was generated manually from
+ this file, and should be regenerated if this file is modified. */
+
+#ifdef __GNUC__
+# define ATTR __attribute__((always_inline))
+#else
+# define ATTR
+#endif
+
+/* A static inlined function that is called once. */
+
+static inline ATTR int
+func1 (int x)
+{
+ return x * 23;
+}
+
+/* A non-static inlined function that is called once. */
+
+inline ATTR int
+func2 (int x)
+{
+ return x * 17;
+}
+
+/* A static inlined function that calls another static inlined
+ function. */
+
+static inline ATTR int
+func3b (int x)
+{
+ return x < 14 ? 1 : 2;
+}
+
+static inline ATTR int
+func3a (int x)
+{
+ return func3b (x * 23);
+}
+
+/* A non-static inlined function that calls a static inlined
+ function. */
+
+static inline ATTR int
+func4b (int x)
+{
+ return x < 13 ? 1 : 2;
+}
+
+inline ATTR int
+func4a (int x)
+{
+ return func4b (x * 17);
+}
+
+/* A static inlined function that calls a non-static inlined
+ function. */
+
+inline ATTR int
+func5b (int x)
+{
+ return x < 12 ? 1 : 2;
+}
+
+static inline ATTR int
+func5a (int x)
+{
+ return func5b (x * 23);
+}
+
+/* A non-static inlined function that calls another non-static inlined
+ function. */
+
+inline ATTR int
+func6b (int x)
+{
+ return x < 14 ? 3 : 2;
+}
+
+inline ATTR int
+func6a (int x)
+{
+ return func6b (x * 17);
+}
+
+/* A static inlined function that is called more than once. */
+
+static inline ATTR int
+func7b (int x)
+{
+ return x < 23 ? 1 : 4;
+}
+
+static inline ATTR int
+func7a (int x)
+{
+ return func7b (x * 29);
+}
+
+/* A non-static inlined function that is called more than once. */
+
+inline ATTR int
+func8b (int x)
+{
+ return x < 7 ? 11 : 9;
+}
+
+static inline ATTR int
+func8a (int x)
+{
+ return func8b (x * 31);
+}
+
+/* Entry point. */
+
+int
+main (int argc, char *argv[])
+{
+ /* Declaring x as volatile here prevents GCC from combining calls.
+ If GCC is allowed to combine calls then some of them end up with
+ no instructions at all, so there is no specific address for GDB
+ to set a breakpoint at. */
+ volatile int x = argc;
+
+ x = func1 (x);
+
+ x = func2 (x);
+
+ x = func3a (x);
+
+ x = func4a (x);
+
+ x = func5a (x);
+
+ x = func6a (x);
+
+ x = func7a (x) + func7b (x);
+
+ x = func8a (x) + func8b (x);
+
+ return x;
+}
diff --git a/gdb/testsuite/gdb.opt/inline-break.exp b/gdb/testsuite/gdb.opt/inline-break.exp
new file mode 100644
index 0000000..c357723
--- /dev/null
+++ b/gdb/testsuite/gdb.opt/inline-break.exp
@@ -0,0 +1,114 @@
+# Copyright 2012 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+# Note that the testcase gdb.dwarf2/dw2-inline-break.exp largely
+# mirrors this testcase, and should be updated if this testcase is
+# changed.
+
+set basename "inline-break"
+set testfile $basename
+
+if { [prepare_for_testing $testfile.exp $testfile $testfile.c \
+ {debug optimize=-O2 additional_flags=-Winline}] } {
+ return -1
+}
+
+#
+# func1 is a static inlined function that is called once.
+# The result should be a single-location breakpoint.
+#
+gdb_test "break func1" \
+ "Breakpoint.*at.* file .*$basename\\.c, line.*"
+
+#
+# func2 is a non-static inlined function that is called once.
+# The result should be a breakpoint with two locations: the
+# out-of-line function and the single inlined instance.
+#
+gdb_test "break func2" \
+ "Breakpoint.*at.*func2.*\\(2 locations\\)"
+
+#
+# func3b is a static inlined function that is called once from
+# within another static inlined function. The result should be
+# a single-location breakpoint.
+#
+gdb_test "break func3b" \
+ "Breakpoint.*at.* file .*$basename\\.c, line.*"
+
+#
+# func4b is a static inlined function that is called once from
+# within a non-static inlined function. The result should be
+# a breakpoint with two locations: the inlined instance within
+# the inlined call to func4a in main, and the inlined instance
+# within the out-of-line func4a.
+#
+gdb_test "break func4b" \
+ "Breakpoint.*at.*func4b.*\\(2 locations\\)"
+
+#
+# func5b is a non-static inlined function that is called once
+# from within a static inlined function. The result should be a
+# breakpoint with two locations: the out-of-line function and the
+# inlined instance within the inlined call to func5a in main.
+#
+gdb_test "break func5b" \
+ "Breakpoint.*at.*func5b.*\\(2 locations\\)"
+#
+# func6b is a non-static inlined function that is called once from
+# within another non-static inlined function. The result should be
+# a breakpoint with three locations: the out-of-line function, the
+# inlined instance within the out-of-line func6a, and the inlined
+# instance within the inlined call to func6a in main,
+#
+gdb_test "break func6b" \
+ "Breakpoint.*at.*func6b.*\\(3 locations\\)"
+
+#
+# func7b is a static inlined function that is called twice: once from
+# func7a, and once from main. The result should be a breakpoint with
+# two locations: the inlined instance within the inlined instance of
+# func7a, and the inlined instance within main.
+#
+gdb_test "break func7b" \
+ "Breakpoint.*at.*func7b.*\\(2 locations\\)"
+
+#
+# func8b is a non-static inlined function that is called twice: once
+# func8a, and once from main. The result should be a breakpoint with
+# three locations: the out-of-line function, the inlined instance
+# within the inlined instance of func7a, and the inlined instance
+# within main.
+#
+gdb_test "break func8b" \
+ "Breakpoint.*at.*func8b.*\\(3 locations\\)"
+
+#
+# func1 is a static inlined function. The result should be that no
+# symbol is found to print.
+#
+gdb_test "print func1" \
+ "No symbol \"func1\" in current context."
+
+#
+# func2 is a non-static inlined function. The result should be that
+# one symbol is found to print, and that the printed symbol is called
+# "func2". Note that this does not cover the failure case that two
+# symbols were found, but that gdb chose the out-of-line copy to
+# print, but if this was failing the "print func1" test would likely
+# fail instead.
+#
+gdb_test "print func2" \
+ "\\\$.* = {int \\(int\\)} .* <func2>"
diff --git a/gdb/testsuite/lib/mi-support.exp b/gdb/testsuite/lib/mi-support.exp
index 206f7b3..7f8642f 100644
--- a/gdb/testsuite/lib/mi-support.exp
+++ b/gdb/testsuite/lib/mi-support.exp
@@ -31,7 +31,8 @@ global mi_inferior_tty_name
set MIFLAGS "-i=mi"
set thread_selected_re "=thread-selected,id=\"\[0-9\]+\"\r\n"
-set library_loaded_re "=library-loaded\[^\n\]+\"\r\n"
+set gdbindex_warning_re "&\"warning: Skipping \[^\r\n\]+ \.gdb_index section in \[^\"\]+\"\r\n"
+set library_loaded_re "=library-loaded\[^\n\]+\"\r\n(?:$gdbindex_warning_re)?"
set breakpoint_re "=(?:breakpoint-created|breakpoint-deleted)\[^\n\]+\"\r\n"
#