Rebase to FSF GDB 7.5.50.20130310 (pre-7.6 snapshot).
- Fix various entry-values sub-optimal results.
This commit is contained in:
parent
350d5a31c9
commit
1054fa6d0b
2
.gitignore
vendored
2
.gitignore
vendored
@ -1,2 +1,2 @@
|
||||
/gdb-libstdc++-v3-python-r155978.tar.bz2
|
||||
/gdb-7.5.50.20130215.tar.bz2
|
||||
/gdb-7.5.50.20130310.tar.bz2
|
||||
|
@ -1,7 +1,7 @@
|
||||
Index: gdb-7.5.50.20130215/gdb/event-top.c
|
||||
Index: gdb-7.5.50.20130310/gdb/event-top.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130215.orig/gdb/event-top.c 2013-01-31 19:37:37.000000000 +0100
|
||||
+++ gdb-7.5.50.20130215/gdb/event-top.c 2013-02-15 22:36:11.217308539 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/event-top.c 2013-01-31 19:37:37.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/event-top.c 2013-03-10 16:44:05.471586917 +0100
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "continuations.h"
|
||||
#include "gdbcmd.h" /* for dont_repeat() */
|
||||
@ -28,10 +28,10 @@ Index: gdb-7.5.50.20130215/gdb/event-top.c
|
||||
/* Each interpreter has its own rules on displaying the command
|
||||
prompt. */
|
||||
if (!current_interp_display_prompt_p ())
|
||||
Index: gdb-7.5.50.20130215/gdb/elfread.c
|
||||
Index: gdb-7.5.50.20130310/gdb/elfread.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130215.orig/gdb/elfread.c 2013-02-15 22:35:36.000000000 +0100
|
||||
+++ gdb-7.5.50.20130215/gdb/elfread.c 2013-02-15 22:35:59.414292874 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/elfread.c 2013-03-10 16:38:01.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/elfread.c 2013-03-10 16:44:05.472586918 +0100
|
||||
@@ -49,6 +49,7 @@
|
||||
#include "gdbcore.h"
|
||||
#include "gdbcmd.h"
|
||||
@ -40,7 +40,7 @@ Index: gdb-7.5.50.20130215/gdb/elfread.c
|
||||
#include <sys/stat.h>
|
||||
|
||||
extern void _initialize_elfread (void);
|
||||
@@ -1649,8 +1650,361 @@ build_id_to_filename (struct build_id *b
|
||||
@@ -1628,8 +1629,361 @@ build_id_to_filename (const struct elf_b
|
||||
return retval;
|
||||
}
|
||||
|
||||
@ -403,7 +403,7 @@ Index: gdb-7.5.50.20130215/gdb/elfread.c
|
||||
avoidance. */
|
||||
|
||||
struct missing_filepair
|
||||
@@ -1704,11 +2058,17 @@ missing_filepair_change (void)
|
||||
@@ -1683,11 +2037,17 @@ missing_filepair_change (void)
|
||||
/* All their memory came just from missing_filepair_OBSTACK. */
|
||||
missing_filepair_hash = NULL;
|
||||
}
|
||||
@ -421,7 +421,7 @@ Index: gdb-7.5.50.20130215/gdb/elfread.c
|
||||
missing_filepair_change ();
|
||||
}
|
||||
|
||||
@@ -1775,14 +2135,35 @@ debug_print_missing (const char *binary,
|
||||
@@ -1754,14 +2114,35 @@ debug_print_missing (const char *binary,
|
||||
|
||||
*slot = missing_filepair;
|
||||
|
||||
@ -464,12 +464,12 @@ Index: gdb-7.5.50.20130215/gdb/elfread.c
|
||||
}
|
||||
|
||||
static char *
|
||||
Index: gdb-7.5.50.20130215/gdb/symfile.h
|
||||
Index: gdb-7.5.50.20130310/gdb/symfile.h
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130215.orig/gdb/symfile.h 2013-02-15 22:35:03.000000000 +0100
|
||||
+++ gdb-7.5.50.20130215/gdb/symfile.h 2013-02-15 22:35:59.414292874 +0100
|
||||
@@ -599,6 +599,8 @@ extern struct build_id *build_id_addr_ge
|
||||
extern char *build_id_to_filename (struct build_id *build_id,
|
||||
--- gdb-7.5.50.20130310.orig/gdb/symfile.h 2013-03-10 16:37:41.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/symfile.h 2013-03-10 16:44:23.409591946 +0100
|
||||
@@ -598,6 +598,8 @@ extern struct elf_build_id *build_id_add
|
||||
extern char *build_id_to_filename (const struct elf_build_id *build_id,
|
||||
char **link_return, int add_debug_suffix);
|
||||
extern void debug_print_missing (const char *binary, const char *debug);
|
||||
+extern void debug_flush_missing (void);
|
||||
@ -477,10 +477,10 @@ Index: gdb-7.5.50.20130215/gdb/symfile.h
|
||||
|
||||
/* From dwarf2read.c */
|
||||
|
||||
Index: gdb-7.5.50.20130215/gdb/testsuite/lib/gdb.exp
|
||||
Index: gdb-7.5.50.20130310/gdb/testsuite/lib/gdb.exp
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130215.orig/gdb/testsuite/lib/gdb.exp 2013-02-15 22:35:03.000000000 +0100
|
||||
+++ gdb-7.5.50.20130215/gdb/testsuite/lib/gdb.exp 2013-02-15 22:35:59.415292878 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/testsuite/lib/gdb.exp 2013-03-10 16:17:15.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/testsuite/lib/gdb.exp 2013-03-10 16:44:05.474586918 +0100
|
||||
@@ -1482,7 +1482,7 @@ proc default_gdb_start { } {
|
||||
warning "Couldn't set the width to 0."
|
||||
}
|
||||
@ -490,10 +490,10 @@ Index: gdb-7.5.50.20130215/gdb/testsuite/lib/gdb.exp
|
||||
send_gdb "set build-id-verbose 0\n"
|
||||
gdb_expect 10 {
|
||||
-re "$gdb_prompt $" {
|
||||
Index: gdb-7.5.50.20130215/gdb/testsuite/lib/mi-support.exp
|
||||
Index: gdb-7.5.50.20130310/gdb/testsuite/lib/mi-support.exp
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130215.orig/gdb/testsuite/lib/mi-support.exp 2013-02-15 22:35:03.000000000 +0100
|
||||
+++ gdb-7.5.50.20130215/gdb/testsuite/lib/mi-support.exp 2013-02-15 22:35:59.416292881 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/testsuite/lib/mi-support.exp 2013-03-10 16:17:15.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/testsuite/lib/mi-support.exp 2013-03-10 16:44:05.475586918 +0100
|
||||
@@ -212,7 +212,7 @@ proc default_mi_gdb_start { args } {
|
||||
warning "Couldn't set the width to 0."
|
||||
}
|
||||
@ -503,10 +503,10 @@ Index: gdb-7.5.50.20130215/gdb/testsuite/lib/mi-support.exp
|
||||
send_gdb "190-gdb-set build-id-verbose 0\n"
|
||||
gdb_expect 10 {
|
||||
-re ".*190-gdb-set build-id-verbose 0\r\n190\\\^done\r\n$mi_gdb_prompt$" {
|
||||
Index: gdb-7.5.50.20130215/gdb/tui/tui-interp.c
|
||||
Index: gdb-7.5.50.20130310/gdb/tui/tui-interp.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130215.orig/gdb/tui/tui-interp.c 2013-01-01 07:41:30.000000000 +0100
|
||||
+++ gdb-7.5.50.20130215/gdb/tui/tui-interp.c 2013-02-15 22:35:59.416292881 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/tui/tui-interp.c 2013-01-01 07:41:30.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/tui/tui-interp.c 2013-03-10 16:44:05.475586918 +0100
|
||||
@@ -30,6 +30,7 @@
|
||||
#include "tui/tui.h"
|
||||
#include "tui/tui-io.h"
|
||||
@ -515,10 +515,10 @@ Index: gdb-7.5.50.20130215/gdb/tui/tui-interp.c
|
||||
|
||||
/* Set to 1 when the TUI mode must be activated when we first start
|
||||
gdb. */
|
||||
Index: gdb-7.5.50.20130215/gdb/aclocal.m4
|
||||
Index: gdb-7.5.50.20130310/gdb/aclocal.m4
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130215.orig/gdb/aclocal.m4 2013-01-17 12:06:26.000000000 +0100
|
||||
+++ gdb-7.5.50.20130215/gdb/aclocal.m4 2013-02-15 22:35:59.417292883 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/aclocal.m4 2013-01-17 12:06:26.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/aclocal.m4 2013-03-10 16:44:05.475586918 +0100
|
||||
@@ -11,6 +11,164 @@
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
@ -684,10 +684,10 @@ Index: gdb-7.5.50.20130215/gdb/aclocal.m4
|
||||
# AM_CONDITIONAL -*- Autoconf -*-
|
||||
|
||||
# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008
|
||||
Index: gdb-7.5.50.20130215/gdb/config.in
|
||||
Index: gdb-7.5.50.20130310/gdb/config.in
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130215.orig/gdb/config.in 2012-12-09 19:39:58.000000000 +0100
|
||||
+++ gdb-7.5.50.20130215/gdb/config.in 2013-02-15 22:35:59.417292883 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/config.in 2012-12-09 19:39:58.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/config.in 2013-03-10 16:44:05.476586918 +0100
|
||||
@@ -33,6 +33,9 @@
|
||||
/* Define to BFD's default target vector. */
|
||||
#undef DEFAULT_BFD_VEC
|
||||
@ -708,10 +708,10 @@ Index: gdb-7.5.50.20130215/gdb/config.in
|
||||
/* Define to 1 if you have the <libunwind-ia64.h> header file. */
|
||||
#undef HAVE_LIBUNWIND_IA64_H
|
||||
|
||||
Index: gdb-7.5.50.20130215/gdb/configure
|
||||
Index: gdb-7.5.50.20130310/gdb/configure
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130215.orig/gdb/configure 2013-01-09 18:21:33.000000000 +0100
|
||||
+++ gdb-7.5.50.20130215/gdb/configure 2013-02-15 22:35:59.422292893 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/configure 2013-01-09 18:21:33.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/configure 2013-03-10 16:44:05.480586919 +0100
|
||||
@@ -683,6 +683,11 @@ REPORT_BUGS_TO
|
||||
PKGVERSION
|
||||
TARGET_OBS
|
||||
@ -1259,10 +1259,10 @@ Index: gdb-7.5.50.20130215/gdb/configure
|
||||
|
||||
|
||||
subdirs="$subdirs testsuite"
|
||||
Index: gdb-7.5.50.20130215/gdb/configure.ac
|
||||
Index: gdb-7.5.50.20130310/gdb/configure.ac
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130215.orig/gdb/configure.ac 2013-01-09 18:21:35.000000000 +0100
|
||||
+++ gdb-7.5.50.20130215/gdb/configure.ac 2013-02-15 22:35:59.423292895 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/configure.ac 2013-01-09 18:21:35.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/configure.ac 2013-03-10 16:44:05.481586919 +0100
|
||||
@@ -166,6 +166,199 @@ AC_DEFINE_DIR(AUTO_LOAD_SAFE_PATH, escap
|
||||
[Directories safe to hold auto-loaded files.])
|
||||
AC_MSG_RESULT([$with_auto_load_safe_path])
|
||||
@ -1463,11 +1463,11 @@ Index: gdb-7.5.50.20130215/gdb/configure.ac
|
||||
AC_CONFIG_SUBDIRS(testsuite)
|
||||
|
||||
# Check whether to support alternative target configurations
|
||||
Index: gdb-7.5.50.20130215/gdb/corelow.c
|
||||
Index: gdb-7.5.50.20130310/gdb/corelow.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130215.orig/gdb/corelow.c 2013-02-15 22:35:03.000000000 +0100
|
||||
+++ gdb-7.5.50.20130215/gdb/corelow.c 2013-02-15 22:35:59.423292895 +0100
|
||||
@@ -313,7 +313,7 @@ build_id_locate_exec (int from_tty)
|
||||
--- gdb-7.5.50.20130310.orig/gdb/corelow.c 2013-03-10 16:36:37.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/corelow.c 2013-03-10 16:44:05.481586919 +0100
|
||||
@@ -314,7 +314,7 @@ build_id_locate_exec (int from_tty)
|
||||
symfile_objfile->flags |= OBJF_BUILD_ID_CORE_LOADED;
|
||||
}
|
||||
else
|
||||
|
@ -1,11 +1,13 @@
|
||||
--- gdb-7.4.50.20120120/gdb/solib-svr4.c.orig 2012-03-17 10:23:11.000000000 +0100
|
||||
+++ gdb-7.4.50.20120120/gdb/solib-svr4.c 2012-03-17 10:36:22.265628529 +0100
|
||||
@@ -1228,14 +1228,27 @@ svr4_read_so_list (CORE_ADDR lm, struct
|
||||
Index: gdb-7.5.50.20130310/gdb/solib-svr4.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130310.orig/gdb/solib-svr4.c 2013-03-10 16:37:49.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/solib-svr4.c 2013-03-10 16:43:45.498585091 +0100
|
||||
@@ -1225,14 +1225,27 @@ svr4_read_so_list (CORE_ADDR lm, struct
|
||||
}
|
||||
|
||||
{
|
||||
- struct build_id *build_id;
|
||||
+ struct build_id *build_id = NULL;
|
||||
- struct elf_build_id *build_id;
|
||||
+ struct elf_build_id *build_id = NULL;
|
||||
|
||||
strncpy (new->so_original_name, buffer, SO_NAME_MAX_PATH_SIZE - 1);
|
||||
new->so_original_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0';
|
||||
@ -30,7 +32,7 @@
|
||||
if (build_id != NULL)
|
||||
{
|
||||
char *name, *build_id_filename;
|
||||
@@ -1250,23 +1263,7 @@ svr4_read_so_list (CORE_ADDR lm, struct
|
||||
@@ -1247,23 +1260,7 @@ svr4_read_so_list (CORE_ADDR lm, struct
|
||||
xfree (name);
|
||||
}
|
||||
else
|
||||
|
@ -1,7 +1,7 @@
|
||||
Index: gdb-7.5.50.20130215/gdb/corelow.c
|
||||
Index: gdb-7.5.50.20130310/gdb/corelow.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130215.orig/gdb/corelow.c 2013-01-31 19:37:37.000000000 +0100
|
||||
+++ gdb-7.5.50.20130215/gdb/corelow.c 2013-02-15 22:35:03.278219844 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/corelow.c 2013-01-31 19:37:37.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/corelow.c 2013-03-10 16:36:37.019937408 +0100
|
||||
@@ -46,6 +46,9 @@
|
||||
#include "progspace.h"
|
||||
#include "objfiles.h"
|
||||
@ -12,7 +12,7 @@ Index: gdb-7.5.50.20130215/gdb/corelow.c
|
||||
|
||||
#ifndef O_LARGEFILE
|
||||
#define O_LARGEFILE 0
|
||||
@@ -271,6 +274,52 @@ add_to_thread_list (bfd *abfd, asection
|
||||
@@ -271,6 +274,53 @@ add_to_thread_list (bfd *abfd, asection
|
||||
inferior_ptid = ptid; /* Yes, make it current. */
|
||||
}
|
||||
|
||||
@ -22,7 +22,7 @@ Index: gdb-7.5.50.20130215/gdb/corelow.c
|
||||
+build_id_locate_exec (int from_tty)
|
||||
+{
|
||||
+ CORE_ADDR at_entry;
|
||||
+ struct build_id *build_id;
|
||||
+ struct elf_build_id *build_id;
|
||||
+ char *exec_filename, *debug_filename;
|
||||
+ char *build_id_filename;
|
||||
+ struct cleanup *back_to;
|
||||
@ -36,6 +36,7 @@ Index: gdb-7.5.50.20130215/gdb/corelow.c
|
||||
+ build_id = build_id_addr_get (at_entry);
|
||||
+ if (build_id == NULL)
|
||||
+ return;
|
||||
+ back_to = make_cleanup (xfree, build_id);
|
||||
+
|
||||
+ /* SYMFILE_OBJFILE should refer to the main executable (not only to its
|
||||
+ separate debug info file). gcc44+ keeps .eh_frame only in the main
|
||||
@ -44,7 +45,7 @@ Index: gdb-7.5.50.20130215/gdb/corelow.c
|
||||
+ directly to the separate debug info file. */
|
||||
+
|
||||
+ exec_filename = build_id_to_filename (build_id, &build_id_filename, 0);
|
||||
+ back_to = make_cleanup (xfree, build_id_filename);
|
||||
+ make_cleanup (xfree, build_id_filename);
|
||||
+
|
||||
+ if (exec_filename != NULL)
|
||||
+ {
|
||||
@ -65,7 +66,7 @@ Index: gdb-7.5.50.20130215/gdb/corelow.c
|
||||
/* This routine opens and sets up the core file bfd. */
|
||||
|
||||
static void
|
||||
@@ -409,6 +458,14 @@ core_open (char *filename, int from_tty)
|
||||
@@ -409,6 +459,14 @@ core_open (char *filename, int from_tty)
|
||||
switch_to_thread (thread->ptid);
|
||||
}
|
||||
|
||||
@ -80,7 +81,7 @@ Index: gdb-7.5.50.20130215/gdb/corelow.c
|
||||
post_create_inferior (&core_ops, from_tty);
|
||||
|
||||
/* Now go through the target stack looking for threads since there
|
||||
@@ -978,4 +1035,11 @@ _initialize_corelow (void)
|
||||
@@ -978,4 +1036,11 @@ _initialize_corelow (void)
|
||||
init_core_ops ();
|
||||
|
||||
add_target (&core_ops);
|
||||
@ -92,11 +93,11 @@ Index: gdb-7.5.50.20130215/gdb/corelow.c
|
||||
+ NULL, NULL, NULL,
|
||||
+ &setlist, &showlist);
|
||||
}
|
||||
Index: gdb-7.5.50.20130215/gdb/doc/gdb.texinfo
|
||||
Index: gdb-7.5.50.20130310/gdb/doc/gdb.texinfo
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130215.orig/gdb/doc/gdb.texinfo 2013-02-15 22:34:22.000000000 +0100
|
||||
+++ gdb-7.5.50.20130215/gdb/doc/gdb.texinfo 2013-02-15 22:35:03.287219863 +0100
|
||||
@@ -16662,6 +16662,27 @@ information files.
|
||||
--- gdb-7.5.50.20130310.orig/gdb/doc/gdb.texinfo 2013-03-10 16:16:23.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/doc/gdb.texinfo 2013-03-10 16:17:15.216114613 +0100
|
||||
@@ -16680,6 +16680,27 @@ information files.
|
||||
|
||||
@end table
|
||||
|
||||
@ -124,10 +125,10 @@ Index: gdb-7.5.50.20130215/gdb/doc/gdb.texinfo
|
||||
@cindex @code{.gnu_debuglink} sections
|
||||
@cindex debug link sections
|
||||
A debug link is a special section of the executable file named
|
||||
Index: gdb-7.5.50.20130215/gdb/solib-svr4.c
|
||||
Index: gdb-7.5.50.20130310/gdb/solib-svr4.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130215.orig/gdb/solib-svr4.c 2013-01-31 14:52:52.000000000 +0100
|
||||
+++ gdb-7.5.50.20130215/gdb/solib-svr4.c 2013-02-15 22:35:03.287219863 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/solib-svr4.c 2013-01-31 14:52:52.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/solib-svr4.c 2013-03-10 16:37:49.842963280 +0100
|
||||
@@ -1224,9 +1224,52 @@ svr4_read_so_list (CORE_ADDR lm, struct
|
||||
continue;
|
||||
}
|
||||
@ -136,7 +137,7 @@ Index: gdb-7.5.50.20130215/gdb/solib-svr4.c
|
||||
- new->so_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0';
|
||||
- strcpy (new->so_original_name, new->so_name);
|
||||
+ {
|
||||
+ struct build_id *build_id;
|
||||
+ struct elf_build_id *build_id;
|
||||
+
|
||||
+ strncpy (new->so_original_name, buffer, SO_NAME_MAX_PATH_SIZE - 1);
|
||||
+ new->so_original_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0';
|
||||
@ -184,10 +185,10 @@ Index: gdb-7.5.50.20130215/gdb/solib-svr4.c
|
||||
xfree (buffer);
|
||||
|
||||
/* If this entry has no name, or its name matches the name
|
||||
Index: gdb-7.5.50.20130215/gdb/elfread.c
|
||||
Index: gdb-7.5.50.20130310/gdb/elfread.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130215.orig/gdb/elfread.c 2013-02-01 20:39:03.000000000 +0100
|
||||
+++ gdb-7.5.50.20130215/gdb/elfread.c 2013-02-15 22:35:36.826263354 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/elfread.c 2013-03-06 22:20:02.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/elfread.c 2013-03-10 16:38:01.506968687 +0100
|
||||
@@ -45,6 +45,11 @@
|
||||
#include "regcache.h"
|
||||
#include "bcache.h"
|
||||
@ -200,10 +201,11 @@ Index: gdb-7.5.50.20130215/gdb/elfread.c
|
||||
|
||||
extern void _initialize_elfread (void);
|
||||
|
||||
@@ -1074,16 +1079,65 @@ elf_gnu_ifunc_resolver_return_stop (stru
|
||||
@@ -1067,10 +1072,59 @@ elf_gnu_ifunc_resolver_return_stop (stru
|
||||
update_breakpoint_locations (b, sals, sals_end);
|
||||
}
|
||||
|
||||
-/* Locate NT_GNU_BUILD_ID from ABFD and return its content. */
|
||||
+#define BUILD_ID_VERBOSE_NONE 0
|
||||
+#define BUILD_ID_VERBOSE_FILENAMES 1
|
||||
+#define BUILD_ID_VERBOSE_BINARY_PARSE 2
|
||||
@ -216,18 +218,10 @@ Index: gdb-7.5.50.20130215/gdb/elfread.c
|
||||
+ value);
|
||||
+}
|
||||
+
|
||||
struct build_id
|
||||
{
|
||||
size_t size;
|
||||
gdb_byte data[1];
|
||||
};
|
||||
|
||||
-/* Locate NT_GNU_BUILD_ID from ABFD and return its content. */
|
||||
+/* Locate NT_GNU_BUILD_ID and return its matching debug filename.
|
||||
+ FIXME: NOTE decoding should be unified with the BFD core notes decoding. */
|
||||
|
||||
static struct build_id *
|
||||
-build_id_bfd_get (bfd *abfd)
|
||||
+
|
||||
+static struct elf_build_id *
|
||||
+build_id_buf_get (bfd *templ, gdb_byte *buf, bfd_size_type size)
|
||||
+{
|
||||
+ bfd_byte *p;
|
||||
@ -247,7 +241,7 @@ Index: gdb-7.5.50.20130215/gdb/elfread.c
|
||||
+ {
|
||||
+ size_t size = descsz;
|
||||
+ gdb_byte *data = (void *) descdata;
|
||||
+ struct build_id *retval;
|
||||
+ struct elf_build_id *retval;
|
||||
+
|
||||
+ retval = xmalloc (sizeof *retval - 1 + size);
|
||||
+ retval->size = size;
|
||||
@ -262,26 +256,27 @@ Index: gdb-7.5.50.20130215/gdb/elfread.c
|
||||
+
|
||||
+/* Separate debuginfo files have corrupted PHDR but SHDR is correct there.
|
||||
+ Locate NT_GNU_BUILD_ID from ABFD and return its content. */
|
||||
+
|
||||
+static struct build_id *
|
||||
|
||||
static const struct elf_build_id *
|
||||
-build_id_bfd_get (bfd *abfd)
|
||||
+build_id_bfd_shdr_get (bfd *abfd)
|
||||
{
|
||||
struct build_id *retval;
|
||||
|
||||
@@ -1099,6 +1153,348 @@ build_id_bfd_get (bfd *abfd)
|
||||
return retval;
|
||||
if (!bfd_check_format (abfd, bfd_object)
|
||||
|| bfd_get_flavour (abfd) != bfd_target_elf_flavour
|
||||
@@ -1080,6 +1134,348 @@ build_id_bfd_get (bfd *abfd)
|
||||
return elf_tdata (abfd)->build_id;
|
||||
}
|
||||
|
||||
+/* Core files may have missing (corrupt) SHDR but PDHR is correct there.
|
||||
+ bfd_elf_bfd_from_remote_memory () has too much overhead by
|
||||
+ allocating/reading all the available ELF PT_LOADs. */
|
||||
+
|
||||
+static struct build_id *
|
||||
+static struct elf_build_id *
|
||||
+build_id_phdr_get (bfd *templ, bfd_vma loadbase, unsigned e_phnum,
|
||||
+ Elf_Internal_Phdr *i_phdr)
|
||||
+{
|
||||
+ int i;
|
||||
+ struct build_id *retval = NULL;
|
||||
+ struct elf_build_id *retval = NULL;
|
||||
+
|
||||
+ for (i = 0; i < e_phnum; i++)
|
||||
+ if (i_phdr[i].p_type == PT_NOTE && i_phdr[i].p_filesz > 0)
|
||||
@ -568,11 +563,11 @@ Index: gdb-7.5.50.20130215/gdb/elfread.c
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
+struct build_id *
|
||||
+struct elf_build_id *
|
||||
+build_id_addr_get (CORE_ADDR addr)
|
||||
+{
|
||||
+ struct build_id_addr_sect *candidate;
|
||||
+ struct build_id *retval = NULL;
|
||||
+ struct elf_build_id *retval = NULL;
|
||||
+ Elf_Internal_Phdr *i_phdr = NULL;
|
||||
+ bfd_vma loadbase = 0;
|
||||
+ unsigned e_phnum = 0;
|
||||
@ -617,7 +612,7 @@ Index: gdb-7.5.50.20130215/gdb/elfread.c
|
||||
/* Return if FILENAME has NT_GNU_BUILD_ID matching the CHECK value. */
|
||||
|
||||
static int
|
||||
@@ -1113,7 +1509,7 @@ build_id_verify (const char *filename, s
|
||||
@@ -1094,7 +1490,7 @@ build_id_verify (const char *filename, c
|
||||
if (abfd == NULL)
|
||||
return 0;
|
||||
|
||||
@ -626,14 +621,14 @@ Index: gdb-7.5.50.20130215/gdb/elfread.c
|
||||
|
||||
if (found == NULL)
|
||||
warning (_("File \"%s\" has no build-id, file skipped"), filename);
|
||||
@@ -1131,17 +1527,18 @@ build_id_verify (const char *filename, s
|
||||
@@ -1110,17 +1506,18 @@ build_id_verify (const char *filename, c
|
||||
return retval;
|
||||
}
|
||||
|
||||
-static char *
|
||||
-build_id_to_debug_filename (struct build_id *build_id)
|
||||
-build_id_to_debug_filename (const struct elf_build_id *build_id)
|
||||
+char *
|
||||
+build_id_to_filename (struct build_id *build_id, char **link_return,
|
||||
+build_id_to_filename (const struct elf_build_id *build_id, char **link_return,
|
||||
+ int add_debug_suffix)
|
||||
{
|
||||
char *link, *debugdir, *retval = NULL;
|
||||
@ -649,16 +644,16 @@ Index: gdb-7.5.50.20130215/gdb/elfread.c
|
||||
|
||||
/* Keep backward compatibility so that DEBUG_FILE_DIRECTORY being "" will
|
||||
cause "/.build-id/..." lookups. */
|
||||
@@ -1154,6 +1551,8 @@ build_id_to_debug_filename (struct build
|
||||
@@ -1133,6 +1530,8 @@ build_id_to_debug_filename (const struct
|
||||
size_t debugdir_len = strlen (debugdir);
|
||||
gdb_byte *data = build_id->data;
|
||||
const gdb_byte *data = build_id->data;
|
||||
size_t size = build_id->size;
|
||||
+ unsigned seqno;
|
||||
+ struct stat statbuf_trash;
|
||||
char *s;
|
||||
|
||||
memcpy (link, debugdir, debugdir_len);
|
||||
@@ -1168,37 +1567,240 @@ build_id_to_debug_filename (struct build
|
||||
@@ -1147,37 +1546,240 @@ build_id_to_debug_filename (const struct
|
||||
*s++ = '/';
|
||||
while (size-- > 0)
|
||||
s += sprintf (s, "%02x", (unsigned) *data++);
|
||||
@ -686,15 +681,15 @@ Index: gdb-7.5.50.20130215/gdb/elfread.c
|
||||
+ strcpy (s2, ".debug");
|
||||
+ else
|
||||
+ *s2 = 0;
|
||||
|
||||
- if (retval != NULL && !build_id_verify (retval, build_id))
|
||||
+
|
||||
+ /* `access' automatically dereferences LINK. */
|
||||
+ if (lstat (link, &statbuf_trash) != 0)
|
||||
+ {
|
||||
+ /* Stop increasing SEQNO. */
|
||||
+ break;
|
||||
+ }
|
||||
+
|
||||
|
||||
- if (retval != NULL && !build_id_verify (retval, build_id))
|
||||
+ retval = lrealpath (link);
|
||||
+
|
||||
+ if (retval != NULL && !build_id_verify (retval, build_id))
|
||||
@ -735,15 +730,15 @@ Index: gdb-7.5.50.20130215/gdb/elfread.c
|
||||
+ {
|
||||
if (retval != NULL)
|
||||
- break;
|
||||
+ {
|
||||
+ *link_return = link;
|
||||
+ link = NULL;
|
||||
+ }
|
||||
+ {
|
||||
+ *link_return = link;
|
||||
+ link = NULL;
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ *link_return = link_all;
|
||||
+ link_all = NULL;
|
||||
+ }
|
||||
+ {
|
||||
+ *link_return = link_all;
|
||||
+ link_all = NULL;
|
||||
+ }
|
||||
}
|
||||
+ xfree (link);
|
||||
+ xfree (link_all);
|
||||
@ -893,7 +888,7 @@ Index: gdb-7.5.50.20130215/gdb/elfread.c
|
||||
+find_separate_debug_file_by_buildid (struct objfile *objfile,
|
||||
+ char **build_id_filename_return)
|
||||
{
|
||||
struct build_id *build_id;
|
||||
const struct elf_build_id *build_id;
|
||||
|
||||
- build_id = build_id_bfd_get (objfile->obfd);
|
||||
+ if (build_id_filename_return)
|
||||
@ -907,10 +902,10 @@ Index: gdb-7.5.50.20130215/gdb/elfread.c
|
||||
- build_id_name = build_id_to_debug_filename (build_id);
|
||||
+ build_id_name = build_id_to_filename (build_id, build_id_filename_return,
|
||||
+ 1);
|
||||
xfree (build_id);
|
||||
/* Prevent looping on a stripped .debug file. */
|
||||
if (build_id_name != NULL
|
||||
@@ -1209,7 +1811,7 @@ find_separate_debug_file_by_buildid (str
|
||||
&& filename_cmp (build_id_name, objfile->name) == 0)
|
||||
@@ -1187,7 +1789,7 @@ find_separate_debug_file_by_buildid (str
|
||||
xfree (build_id_name);
|
||||
}
|
||||
else if (build_id_name != NULL)
|
||||
@ -919,7 +914,7 @@ Index: gdb-7.5.50.20130215/gdb/elfread.c
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
@@ -1444,9 +2046,10 @@ elf_symfile_read (struct objfile *objfil
|
||||
@@ -1425,9 +2027,10 @@ elf_symfile_read (struct objfile *objfil
|
||||
&& objfile->separate_debug_objfile == NULL
|
||||
&& objfile->separate_debug_objfile_backlink == NULL)
|
||||
{
|
||||
@ -932,7 +927,7 @@ Index: gdb-7.5.50.20130215/gdb/elfread.c
|
||||
|
||||
if (debugfile == NULL)
|
||||
debugfile = find_separate_debug_file_by_debuglink (objfile);
|
||||
@@ -1460,6 +2063,12 @@ elf_symfile_read (struct objfile *objfil
|
||||
@@ -1441,6 +2044,12 @@ elf_symfile_read (struct objfile *objfil
|
||||
symbol_file_add_separate (abfd, symfile_flags, objfile);
|
||||
do_cleanups (cleanup);
|
||||
}
|
||||
@ -943,9 +938,9 @@ Index: gdb-7.5.50.20130215/gdb/elfread.c
|
||||
+
|
||||
+ xfree (build_id_filename);
|
||||
}
|
||||
}
|
||||
|
||||
if (symtab_create_debug)
|
||||
@@ -1782,4 +2391,16 @@ _initialize_elfread (void)
|
||||
@@ -1760,4 +2369,16 @@ _initialize_elfread (void)
|
||||
|
||||
elf_objfile_gnu_ifunc_cache_data = register_objfile_data ();
|
||||
gnu_ifunc_fns_p = &elf_gnu_ifunc_fns;
|
||||
@ -962,28 +957,27 @@ Index: gdb-7.5.50.20130215/gdb/elfread.c
|
||||
+
|
||||
+ observer_attach_executable_changed (debug_print_executable_changed);
|
||||
}
|
||||
Index: gdb-7.5.50.20130215/gdb/symfile.h
|
||||
Index: gdb-7.5.50.20130310/gdb/symfile.h
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130215.orig/gdb/symfile.h 2013-02-03 17:20:18.000000000 +0100
|
||||
+++ gdb-7.5.50.20130215/gdb/symfile.h 2013-02-15 22:35:03.288219867 +0100
|
||||
@@ -593,6 +593,13 @@ void free_symfile_segment_data (struct s
|
||||
--- gdb-7.5.50.20130310.orig/gdb/symfile.h 2013-02-03 17:20:18.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/symfile.h 2013-03-10 16:37:41.203959517 +0100
|
||||
@@ -593,6 +593,12 @@ void free_symfile_segment_data (struct s
|
||||
|
||||
extern struct cleanup *increment_reading_symtab (void);
|
||||
|
||||
+/* build-id support. */
|
||||
+struct build_id;
|
||||
+extern struct build_id *build_id_addr_get (CORE_ADDR addr);
|
||||
+extern char *build_id_to_filename (struct build_id *build_id,
|
||||
+extern struct elf_build_id *build_id_addr_get (CORE_ADDR addr);
|
||||
+extern char *build_id_to_filename (const struct elf_build_id *build_id,
|
||||
+ char **link_return, int add_debug_suffix);
|
||||
+extern void debug_print_missing (const char *binary, const char *debug);
|
||||
+
|
||||
/* From dwarf2read.c */
|
||||
|
||||
/* Names for a dwarf2 debugging section. The field NORMAL is the normal
|
||||
Index: gdb-7.5.50.20130215/gdb/testsuite/lib/gdb.exp
|
||||
Index: gdb-7.5.50.20130310/gdb/testsuite/lib/gdb.exp
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130215.orig/gdb/testsuite/lib/gdb.exp 2013-02-15 22:31:37.000000000 +0100
|
||||
+++ gdb-7.5.50.20130215/gdb/testsuite/lib/gdb.exp 2013-02-15 22:35:03.289219870 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/testsuite/lib/gdb.exp 2013-03-10 16:16:22.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/testsuite/lib/gdb.exp 2013-03-10 16:17:15.219114612 +0100
|
||||
@@ -1482,6 +1482,16 @@ proc default_gdb_start { } {
|
||||
warning "Couldn't set the width to 0."
|
||||
}
|
||||
@ -1001,10 +995,10 @@ Index: gdb-7.5.50.20130215/gdb/testsuite/lib/gdb.exp
|
||||
return 0;
|
||||
}
|
||||
|
||||
Index: gdb-7.5.50.20130215/gdb/testsuite/lib/mi-support.exp
|
||||
Index: gdb-7.5.50.20130310/gdb/testsuite/lib/mi-support.exp
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130215.orig/gdb/testsuite/lib/mi-support.exp 2013-01-22 00:57:59.000000000 +0100
|
||||
+++ gdb-7.5.50.20130215/gdb/testsuite/lib/mi-support.exp 2013-02-15 22:35:03.289219870 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/testsuite/lib/mi-support.exp 2013-01-22 00:57:59.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/testsuite/lib/mi-support.exp 2013-03-10 16:17:15.220114612 +0100
|
||||
@@ -212,6 +212,16 @@ proc default_mi_gdb_start { args } {
|
||||
warning "Couldn't set the width to 0."
|
||||
}
|
||||
@ -1022,10 +1016,10 @@ Index: gdb-7.5.50.20130215/gdb/testsuite/lib/mi-support.exp
|
||||
# If allowing the inferior to have its own PTY then assign the inferior
|
||||
# its own terminal device here.
|
||||
if { $separate_inferior_pty } {
|
||||
Index: gdb-7.5.50.20130215/gdb/objfiles.h
|
||||
Index: gdb-7.5.50.20130310/gdb/objfiles.h
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130215.orig/gdb/objfiles.h 2013-01-01 07:32:47.000000000 +0100
|
||||
+++ gdb-7.5.50.20130215/gdb/objfiles.h 2013-02-15 22:35:03.290219872 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/objfiles.h 2013-02-28 20:00:31.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/objfiles.h 2013-03-10 16:17:15.220114612 +0100
|
||||
@@ -432,6 +432,10 @@ struct objfile
|
||||
|
||||
#define OBJF_MAINLINE (1 << 5)
|
||||
@ -1037,10 +1031,10 @@ Index: gdb-7.5.50.20130215/gdb/objfiles.h
|
||||
/* The object file that contains the runtime common minimal symbols
|
||||
for SunOS4. Note that this objfile has no associated BFD. */
|
||||
|
||||
Index: gdb-7.5.50.20130215/gdb/testsuite/gdb.base/corefile.exp
|
||||
Index: gdb-7.5.50.20130310/gdb/testsuite/gdb.base/corefile.exp
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130215.orig/gdb/testsuite/gdb.base/corefile.exp 2013-01-01 07:33:25.000000000 +0100
|
||||
+++ gdb-7.5.50.20130215/gdb/testsuite/gdb.base/corefile.exp 2013-02-15 22:35:03.290219872 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/testsuite/gdb.base/corefile.exp 2013-01-01 07:33:25.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/testsuite/gdb.base/corefile.exp 2013-03-10 16:17:15.220114612 +0100
|
||||
@@ -256,3 +256,33 @@ if ![is_remote target] {
|
||||
|
||||
gdb_exit
|
||||
|
115
gdb-archer.patch
115
gdb-archer.patch
@ -2,13 +2,32 @@ http://sourceware.org/gdb/wiki/ProjectArcher
|
||||
http://sourceware.org/gdb/wiki/ArcherBranchManagement
|
||||
|
||||
GIT snapshot:
|
||||
commit e72ce29f8e339fc6fffd73e9ff4b854b6f2f1452
|
||||
commit 92cf2d53a9c69b4fb361de662de9100c6e72caa0
|
||||
|
||||
branch `archer' - the merge of branches:
|
||||
archer-jankratochvil-vla
|
||||
archer-tromey-python
|
||||
branch jankratochvil/fedora19 - the merge of branches:
|
||||
jankratochvil/vla
|
||||
tromey/python
|
||||
|
||||
|
||||
diff --git a/README.archer b/README.archer
|
||||
new file mode 100644
|
||||
index 0000000..1f7ab48
|
||||
--- /dev/null
|
||||
+++ b/README.archer
|
||||
@@ -0,0 +1,13 @@
|
||||
+Merge for Fedora 19: http://pkgs.fedoraproject.org/cgit/gdb.git/
|
||||
+
|
||||
+jankratochvil/vla
|
||||
+tromey/python
|
||||
+
|
||||
+================================================================
|
||||
+This branch originally held the Python code for gdb. It still exists
|
||||
+because a small amount of code here has not yet been merged upstream.
|
||||
+
|
||||
+================================================================
|
||||
+C variable length arrays / DW_FORM_block / Fortran dynamic arrays.
|
||||
+implementation plan: http://sourceware.org/ml/gdb/2012-11/msg00094.html
|
||||
+explanation of its merge status: http://sourceware.org/ml/gdb/2011-03/msg00021.html
|
||||
diff --git a/gdb/Makefile.in b/gdb/Makefile.in
|
||||
index ed30db5..4356be7 100644
|
||||
--- a/gdb/Makefile.in
|
||||
@ -27,10 +46,10 @@ index ed30db5..4356be7 100644
|
||||
$(SHELL) config.status --recheck
|
||||
|
||||
diff --git a/gdb/ada-lang.c b/gdb/ada-lang.c
|
||||
index 634e761..60276dc 100644
|
||||
index 75f1c3d..6243818 100644
|
||||
--- a/gdb/ada-lang.c
|
||||
+++ b/gdb/ada-lang.c
|
||||
@@ -12262,6 +12262,7 @@ ada_operator_length (const struct expression *exp, int pc, int *oplenp,
|
||||
@@ -12287,6 +12287,7 @@ ada_operator_length (const struct expression *exp, int pc, int *oplenp,
|
||||
|
||||
static int
|
||||
ada_operator_check (struct expression *exp, int pos,
|
||||
@ -38,7 +57,7 @@ index 634e761..60276dc 100644
|
||||
int (*objfile_func) (struct objfile *objfile, void *data),
|
||||
void *data)
|
||||
{
|
||||
@@ -12276,12 +12277,15 @@ ada_operator_check (struct expression *exp, int pos,
|
||||
@@ -12301,12 +12302,15 @@ ada_operator_check (struct expression *exp, int pos,
|
||||
break;
|
||||
|
||||
default:
|
||||
@ -94,10 +113,10 @@ index 02e7e8b..2931401 100644
|
||||
+
|
||||
#endif /* BLOCK_H */
|
||||
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
|
||||
index fb57a57..5c03b1c 100644
|
||||
index d6f8bc5..8a14224 100644
|
||||
--- a/gdb/breakpoint.c
|
||||
+++ b/gdb/breakpoint.c
|
||||
@@ -15656,6 +15656,24 @@ all_tracepoints (void)
|
||||
@@ -15653,6 +15653,24 @@ all_tracepoints (void)
|
||||
return tp_vec;
|
||||
}
|
||||
|
||||
@ -122,7 +141,7 @@ index fb57a57..5c03b1c 100644
|
||||
|
||||
/* This help string is used for the break, hbreak, tbreak and thbreak
|
||||
commands. It is defined as a macro to prevent duplication.
|
||||
@@ -16639,4 +16657,7 @@ agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
|
||||
@@ -16636,4 +16654,7 @@ agent-printf \"printf format string\", arg1, arg2, arg3, ..., argn\n\
|
||||
automatic_hardware_breakpoints = 1;
|
||||
|
||||
observer_attach_about_to_proceed (breakpoint_about_to_proceed);
|
||||
@ -187,10 +206,10 @@ index d98ac77..e248399 100644
|
||||
FLAGS_TO_PASS = \
|
||||
"prefix=$(prefix)" \
|
||||
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
|
||||
index e8ac8c5..b18ccd6 100644
|
||||
index a607166..6913628 100644
|
||||
--- a/gdb/doc/gdb.texinfo
|
||||
+++ b/gdb/doc/gdb.texinfo
|
||||
@@ -1217,6 +1217,16 @@ for remote debugging.
|
||||
@@ -1216,6 +1216,16 @@ for remote debugging.
|
||||
Run using @var{device} for your program's standard input and output.
|
||||
@c FIXME: kingdon thinks there is more to -tty. Investigate.
|
||||
|
||||
@ -207,7 +226,7 @@ index e8ac8c5..b18ccd6 100644
|
||||
@c resolve the situation of these eventually
|
||||
@item -tui
|
||||
@cindex @code{--tui}
|
||||
@@ -22786,8 +22796,6 @@ containing @code{end}. For example:
|
||||
@@ -22804,8 +22814,6 @@ containing @code{end}. For example:
|
||||
|
||||
@smallexample
|
||||
(@value{GDBP}) python
|
||||
@ -216,7 +235,7 @@ index e8ac8c5..b18ccd6 100644
|
||||
>print 23
|
||||
>end
|
||||
23
|
||||
@@ -22801,6 +22809,14 @@ controlled using @code{set python print-stack}: if @code{full}, then
|
||||
@@ -22819,6 +22827,14 @@ controlled using @code{set python print-stack}: if @code{full}, then
|
||||
full Python stack printing is enabled; if @code{none}, then Python stack
|
||||
and message printing is disabled; if @code{message}, the default, only
|
||||
the message component of the error is printed.
|
||||
@ -231,7 +250,7 @@ index e8ac8c5..b18ccd6 100644
|
||||
@end table
|
||||
|
||||
It is also possible to execute a Python script from the @value{GDBN}
|
||||
@@ -22822,6 +22838,14 @@ and thus is always available.
|
||||
@@ -22840,6 +22856,14 @@ and thus is always available.
|
||||
@cindex python api
|
||||
@cindex programming in python
|
||||
|
||||
@ -428,7 +447,7 @@ index e85486a..e7ac799 100644
|
||||
|
||||
/* The location of a value. */
|
||||
diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c
|
||||
index 002387e..2e0e722 100644
|
||||
index 8a61ae6..451a759 100644
|
||||
--- a/gdb/dwarf2loc.c
|
||||
+++ b/gdb/dwarf2loc.c
|
||||
@@ -298,6 +298,9 @@ struct dwarf_expr_baton
|
||||
@ -571,7 +590,7 @@ index 002387e..2e0e722 100644
|
||||
/* Callback function for dwarf2_evaluate_loc_desc. */
|
||||
|
||||
static struct type *
|
||||
@@ -1155,10 +1248,12 @@ dwarf_expr_push_dwarf_reg_entry_value (struct dwarf_expr_context *ctx,
|
||||
@@ -1156,10 +1249,12 @@ dwarf_expr_push_dwarf_reg_entry_value (struct dwarf_expr_context *ctx,
|
||||
|
||||
saved_ctx.gdbarch = ctx->gdbarch;
|
||||
saved_ctx.addr_size = ctx->addr_size;
|
||||
@ -584,7 +603,7 @@ index 002387e..2e0e722 100644
|
||||
ctx->offset = dwarf2_per_cu_text_offset (baton_local.per_cu);
|
||||
ctx->baton = &baton_local;
|
||||
|
||||
@@ -1166,10 +1261,95 @@ dwarf_expr_push_dwarf_reg_entry_value (struct dwarf_expr_context *ctx,
|
||||
@@ -1167,10 +1262,95 @@ dwarf_expr_push_dwarf_reg_entry_value (struct dwarf_expr_context *ctx,
|
||||
|
||||
ctx->gdbarch = saved_ctx.gdbarch;
|
||||
ctx->addr_size = saved_ctx.addr_size;
|
||||
@ -680,7 +699,7 @@ index 002387e..2e0e722 100644
|
||||
/* Callback function for dwarf2_evaluate_loc_desc.
|
||||
Fetch the address indexed by DW_OP_GNU_addr_index. */
|
||||
|
||||
@@ -2105,22 +2285,6 @@ invalid_synthetic_pointer (void)
|
||||
@@ -2106,22 +2286,6 @@ invalid_synthetic_pointer (void)
|
||||
"referenced via synthetic pointer"));
|
||||
}
|
||||
|
||||
@ -703,7 +722,7 @@ index 002387e..2e0e722 100644
|
||||
/* Evaluate a location description, starting at DATA and with length
|
||||
SIZE, to find the current location of variable of TYPE in the
|
||||
context of FRAME. BYTE_OFFSET is applied after the contents are
|
||||
@@ -2133,7 +2297,6 @@ dwarf2_evaluate_loc_desc_full (struct type *type, struct frame_info *frame,
|
||||
@@ -2134,7 +2298,6 @@ dwarf2_evaluate_loc_desc_full (struct type *type, struct frame_info *frame,
|
||||
LONGEST byte_offset)
|
||||
{
|
||||
struct value *retval;
|
||||
@ -711,7 +730,7 @@ index 002387e..2e0e722 100644
|
||||
struct dwarf_expr_context *ctx;
|
||||
struct cleanup *old_chain, *value_chain;
|
||||
struct objfile *objfile = dwarf2_per_cu_objfile (per_cu);
|
||||
@@ -2145,29 +2308,18 @@ dwarf2_evaluate_loc_desc_full (struct type *type, struct frame_info *frame,
|
||||
@@ -2146,29 +2309,18 @@ dwarf2_evaluate_loc_desc_full (struct type *type, struct frame_info *frame,
|
||||
if (size == 0)
|
||||
return allocate_optimized_out_value (type);
|
||||
|
||||
@ -742,7 +761,7 @@ index 002387e..2e0e722 100644
|
||||
retval = allocate_value (type);
|
||||
mark_value_bytes_unavailable (retval, 0, TYPE_LENGTH (type));
|
||||
return retval;
|
||||
@@ -2231,6 +2383,16 @@ dwarf2_evaluate_loc_desc_full (struct type *type, struct frame_info *frame,
|
||||
@@ -2232,6 +2384,16 @@ dwarf2_evaluate_loc_desc_full (struct type *type, struct frame_info *frame,
|
||||
int in_stack_memory = dwarf_expr_fetch_in_stack_memory (ctx, 0);
|
||||
|
||||
do_cleanups (value_chain);
|
||||
@ -759,7 +778,7 @@ index 002387e..2e0e722 100644
|
||||
retval = allocate_value_lazy (type);
|
||||
VALUE_LVAL (retval) = lval_memory;
|
||||
if (in_stack_memory)
|
||||
@@ -4147,8 +4309,7 @@ loclist_tracepoint_var_ref (struct symbol *symbol, struct gdbarch *gdbarch,
|
||||
@@ -4148,8 +4310,7 @@ loclist_tracepoint_var_ref (struct symbol *symbol, struct gdbarch *gdbarch,
|
||||
dlbaton->per_cu);
|
||||
}
|
||||
|
||||
@ -769,7 +788,7 @@ index 002387e..2e0e722 100644
|
||||
const struct symbol_computed_ops dwarf2_loclist_funcs = {
|
||||
loclist_read_variable,
|
||||
loclist_read_variable_at_entry,
|
||||
@@ -4157,6 +4318,48 @@ const struct symbol_computed_ops dwarf2_loclist_funcs = {
|
||||
@@ -4158,6 +4319,48 @@ const struct symbol_computed_ops dwarf2_loclist_funcs = {
|
||||
loclist_tracepoint_var_ref
|
||||
};
|
||||
|
||||
@ -839,7 +858,7 @@ index 36641b3..1394578 100644
|
||||
/* Compile a DWARF location expression to an agent expression.
|
||||
|
||||
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||
index d26e7c8..9fbe61e 100644
|
||||
index df6298b..b11abf0 100644
|
||||
--- a/gdb/dwarf2read.c
|
||||
+++ b/gdb/dwarf2read.c
|
||||
@@ -1624,6 +1624,9 @@ static void fill_in_loclist_baton (struct dwarf2_cu *cu,
|
||||
@ -1071,7 +1090,7 @@ index d26e7c8..9fbe61e 100644
|
||||
type = create_string_type (NULL, char_type, range_type);
|
||||
|
||||
@@ -12739,7 +12858,7 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||
struct type *base_type;
|
||||
struct type *base_type, *orig_base_type;
|
||||
struct type *range_type;
|
||||
struct attribute *attr;
|
||||
- LONGEST low, high;
|
||||
@ -1079,7 +1098,7 @@ index d26e7c8..9fbe61e 100644
|
||||
int low_default_is_valid;
|
||||
const char *name;
|
||||
LONGEST negative_mask;
|
||||
@@ -12795,42 +12914,6 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||
@@ -12798,42 +12917,6 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||
"- DIE at 0x%x [in module %s]"),
|
||||
die->offset.sect_off, cu->objfile->name);
|
||||
|
||||
@ -1122,13 +1141,13 @@ index d26e7c8..9fbe61e 100644
|
||||
/* Dwarf-2 specifications explicitly allows to create subrange types
|
||||
without specifying a base type.
|
||||
In that case, the base type must be set to the type of
|
||||
@@ -12869,24 +12952,163 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||
@@ -12872,24 +12955,163 @@ read_subrange_type (struct die_info *die, struct dwarf2_cu *cu)
|
||||
}
|
||||
}
|
||||
|
||||
- negative_mask =
|
||||
+ /* LOW_BOUND and HIGH_BOUND are set for real below. */
|
||||
+ range_type = create_range_type (NULL, base_type, 0, -1);
|
||||
+ range_type = create_range_type (NULL, orig_base_type, 0, -1);
|
||||
+ TYPE_UNSIGNED (range_type) = 0;
|
||||
+
|
||||
+ negative_mask =
|
||||
@ -1138,7 +1157,7 @@ index d26e7c8..9fbe61e 100644
|
||||
- if (!TYPE_UNSIGNED (base_type) && (high & negative_mask))
|
||||
- high |= negative_mask;
|
||||
|
||||
- range_type = create_range_type (NULL, base_type, low, high);
|
||||
- range_type = create_range_type (NULL, orig_base_type, low, high);
|
||||
+ /* Exclude language_ada from any TYPE_DYNAMIC constructs below. GDB Ada
|
||||
+ supports implements the dynamic bounds in a non-DWARF way and the
|
||||
+ existing DWARF dynamic bounds are invalid, leading to memory access
|
||||
@ -1300,7 +1319,7 @@ index d26e7c8..9fbe61e 100644
|
||||
|
||||
name = dwarf2_name (die, cu);
|
||||
if (name)
|
||||
@@ -15746,10 +15968,12 @@ var_decode_location (struct attribute *attr, struct symbol *sym,
|
||||
@@ -15749,10 +15971,12 @@ var_decode_location (struct attribute *attr, struct symbol *sym,
|
||||
(i.e. when the value of a register or memory location is
|
||||
referenced, or a thread-local block, etc.). Then again, it might
|
||||
not be worthwhile. I'm assuming that it isn't unless performance
|
||||
@ -1315,7 +1334,7 @@ index d26e7c8..9fbe61e 100644
|
||||
|
||||
if (SYMBOL_COMPUTED_OPS (sym) == &dwarf2_loclist_funcs)
|
||||
cu->has_loclist = 1;
|
||||
@@ -15790,6 +16014,8 @@ new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
|
||||
@@ -15793,6 +16017,8 @@ new_symbol_full (struct die_info *die, struct type *type, struct dwarf2_cu *cu,
|
||||
else
|
||||
sym = OBSTACK_ZALLOC (&objfile->objfile_obstack, struct symbol);
|
||||
OBJSTAT (objfile, n_syms++);
|
||||
@ -1324,7 +1343,7 @@ index d26e7c8..9fbe61e 100644
|
||||
|
||||
/* Cache this symbol's name and the name's demangled form (if any). */
|
||||
SYMBOL_SET_LANGUAGE (sym, cu->language);
|
||||
@@ -16599,6 +16825,9 @@ read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
|
||||
@@ -16602,6 +16828,9 @@ read_type_die_1 (struct die_info *die, struct dwarf2_cu *cu)
|
||||
break;
|
||||
}
|
||||
|
||||
@ -1334,7 +1353,7 @@ index d26e7c8..9fbe61e 100644
|
||||
return this_type;
|
||||
}
|
||||
|
||||
@@ -19043,62 +19272,100 @@ fill_in_loclist_baton (struct dwarf2_cu *cu,
|
||||
@@ -19046,62 +19275,100 @@ fill_in_loclist_baton (struct dwarf2_cu *cu,
|
||||
baton->from_dwo = cu->dwo_unit != NULL;
|
||||
}
|
||||
|
||||
@ -1473,7 +1492,7 @@ index d26e7c8..9fbe61e 100644
|
||||
}
|
||||
}
|
||||
|
||||
@@ -19469,6 +19736,25 @@ per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
|
||||
@@ -19472,6 +19739,25 @@ per_cu_offset_and_type_eq (const void *item_lhs, const void *item_rhs)
|
||||
&& ofs_lhs->offset.sect_off == ofs_rhs->offset.sect_off);
|
||||
}
|
||||
|
||||
@ -1499,7 +1518,7 @@ index d26e7c8..9fbe61e 100644
|
||||
/* Set the type associated with DIE to TYPE. Save it in CU's hash
|
||||
table if necessary. For convenience, return TYPE.
|
||||
|
||||
@@ -19493,6 +19779,8 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
|
||||
@@ -19496,6 +19782,8 @@ set_die_type (struct die_info *die, struct type *type, struct dwarf2_cu *cu)
|
||||
struct dwarf2_per_cu_offset_and_type **slot, ofs;
|
||||
struct objfile *objfile = cu->objfile;
|
||||
|
||||
@ -2362,7 +2381,7 @@ index fb66e0f..45684f0 100644
|
||||
&unavail);
|
||||
|
||||
diff --git a/gdb/gdb-gdb.gdb.in b/gdb/gdb-gdb.gdb.in
|
||||
index ffb7f53..a2e7e94 100644
|
||||
index 05a38b2..9801fdf 100644
|
||||
--- a/gdb/gdb-gdb.gdb.in
|
||||
+++ b/gdb/gdb-gdb.gdb.in
|
||||
@@ -1,5 +1,15 @@
|
||||
@ -2378,9 +2397,9 @@ index ffb7f53..a2e7e94 100644
|
||||
+end
|
||||
+source @srcdir@/python/lib/gdb/__init__.py
|
||||
+
|
||||
set complaints 1
|
||||
if !$gdb_init_done
|
||||
set variable $gdb_init_done = 1
|
||||
|
||||
b internal_error
|
||||
diff --git a/gdb/gdbtypes.c b/gdb/gdbtypes.c
|
||||
index 12730d7..5a614e0 100644
|
||||
--- a/gdb/gdbtypes.c
|
||||
@ -4762,10 +4781,10 @@ index 11cc038..ef238f6 100644
|
||||
|
||||
|
||||
diff --git a/gdb/python/python.c b/gdb/python/python.c
|
||||
index 8dd65a1..82c6c86 100644
|
||||
index cd8ddfb..e906c4f 100644
|
||||
--- a/gdb/python/python.c
|
||||
+++ b/gdb/python/python.c
|
||||
@@ -66,6 +66,8 @@ static const char *gdbpy_should_print_stack = python_excp_message;
|
||||
@@ -67,6 +67,8 @@ static const char *gdbpy_should_print_stack = python_excp_message;
|
||||
#include "linespec.h"
|
||||
#include "source.h"
|
||||
#include "version.h"
|
||||
@ -4774,7 +4793,7 @@ index 8dd65a1..82c6c86 100644
|
||||
#include "target.h"
|
||||
#include "gdbthread.h"
|
||||
#include "observer.h"
|
||||
@@ -1082,6 +1084,53 @@ gdbpy_print_stack (void)
|
||||
@@ -1099,6 +1101,53 @@ gdbpy_print_stack (void)
|
||||
|
||||
/* Return the current Progspace.
|
||||
There always is one. */
|
||||
@ -4828,7 +4847,7 @@ index 8dd65a1..82c6c86 100644
|
||||
|
||||
static PyObject *
|
||||
gdbpy_get_current_progspace (PyObject *unused1, PyObject *unused2)
|
||||
@@ -1733,6 +1782,8 @@ static PyMethodDef GdbMethods[] =
|
||||
@@ -1749,6 +1798,8 @@ static PyMethodDef GdbMethods[] =
|
||||
"Get a value from history" },
|
||||
{ "execute", (PyCFunction) execute_gdb_command, METH_VARARGS | METH_KEYWORDS,
|
||||
"Execute a gdb command" },
|
||||
@ -4851,10 +4870,10 @@ index 24e3077..0443087 100644
|
||||
int embedded_offset, CORE_ADDR address,
|
||||
struct ui_file *stream, int recurse,
|
||||
diff --git a/gdb/stack.c b/gdb/stack.c
|
||||
index 147d815..51115cf 100644
|
||||
index f2aeb10..d20b2f1 100644
|
||||
--- a/gdb/stack.c
|
||||
+++ b/gdb/stack.c
|
||||
@@ -508,6 +508,10 @@ print_frame_args (struct symbol *func, struct frame_info *frame,
|
||||
@@ -509,6 +509,10 @@ print_frame_args (struct symbol *func, struct frame_info *frame,
|
||||
stb = mem_fileopen ();
|
||||
old_chain = make_cleanup_ui_file_delete (stb);
|
||||
|
||||
@ -8479,10 +8498,10 @@ index 2d5a6af..5251e3f 100644
|
||||
|
||||
get_user_print_options (&opts);
|
||||
diff --git a/gdb/utils.c b/gdb/utils.c
|
||||
index eb99f4b..2e17e8e 100644
|
||||
index 4c2f08c..d1c8710 100644
|
||||
--- a/gdb/utils.c
|
||||
+++ b/gdb/utils.c
|
||||
@@ -1804,6 +1804,36 @@ set_batch_flag_and_make_cleanup_restore_page_info (void)
|
||||
@@ -1805,6 +1805,36 @@ set_batch_flag_and_make_cleanup_restore_page_info (void)
|
||||
return back_to;
|
||||
}
|
||||
|
||||
@ -8728,7 +8747,7 @@ index 93c09d8..aef0991 100644
|
||||
{
|
||||
struct type *element_type = TYPE_TARGET_TYPE (array_type);
|
||||
diff --git a/gdb/valprint.c b/gdb/valprint.c
|
||||
index 05d6c3e..5430e66 100644
|
||||
index 18cff49..89cb01a 100644
|
||||
--- a/gdb/valprint.c
|
||||
+++ b/gdb/valprint.c
|
||||
@@ -37,6 +37,7 @@
|
||||
|
872
gdb-entryval-1of2.patch
Normal file
872
gdb-entryval-1of2.patch
Normal file
@ -0,0 +1,872 @@
|
||||
http://sourceware.org/ml/gdb-patches/2013-03/msg00061.html
|
||||
Subject: [patch] entry-values: Fix for C++ across CUs
|
||||
|
||||
Hi,
|
||||
|
||||
I have found with C++ entry-values do not work much. This is a problem
|
||||
primarily for 'this' being in $rdi clobbered very soon and having a function
|
||||
with 'this=<optimized out>' is pretty useless for core crash analysis.
|
||||
It happens if the call is across CUs, where GCC uses name reference:
|
||||
|
||||
<2><7c>: Abbrev Number: 6 (DW_TAG_GNU_call_site)
|
||||
<7d> DW_AT_low_pc : 0x40049e
|
||||
<85> DW_AT_abstract_origin: <0xa8>
|
||||
<1><a8>: Abbrev Number: 10 (DW_TAG_subprogram)
|
||||
<a9> DW_AT_external : 1
|
||||
<a9> DW_AT_name : f
|
||||
<ab> DW_AT_decl_file : 1
|
||||
<ac> DW_AT_decl_line : 26
|
||||
<ad> DW_AT_linkage_name: (indirect string, offset: 0x83): _Z1fi
|
||||
<b1> DW_AT_declaration : 1
|
||||
|
||||
The testcase tests tail calls which is another (compared to unrecovered values
|
||||
such as 'this') reproduction of the same problem:
|
||||
Cannot find function "f(int)" for a call site target at 0x4004ae in main
|
||||
#0 g (x=2) at gdb.arch/amd64-tailcall-cxx1.cc:23
|
||||
#1 0x00000000004004ae in main () at gdb.arch/amd64-tailcall-cxx1.cc:31
|
||||
->
|
||||
#0 g (x=x@entry=2) at gdb.arch/amd64-tailcall-cxx1.cc:23
|
||||
#1 0x00000000004005c8 in f (x=x@entry=1) at gdb.arch/amd64-tailcall-cxx2.cc:23
|
||||
#2 0x00000000004004ae in main () at gdb.arch/amd64-tailcall-cxx1.cc:31
|
||||
|
||||
There are two different fixes below. The first one only always works but it
|
||||
always uses the demangled name, which is not exact. The second fix provides
|
||||
the mangled name (if available); the mangled name would not need the first fix
|
||||
but the mangled name is sometimes not available - for example in Fedora GCC.
|
||||
|
||||
No regressions on {x86_64,x86_64-m32,i686}-fedora19pre-linux-gnu.
|
||||
|
||||
Probably nothing interesting, I will check it in.
|
||||
|
||||
|
||||
Thanks,
|
||||
Jan
|
||||
|
||||
|
||||
gdb/
|
||||
2013-03-02 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
Fix entry-values in C++ across CUs.
|
||||
* dwarf2loc.c (call_site_to_target_addr) <FIELD_LOC_KIND_PHYSNAME>: Use
|
||||
lookup_minimal_symbol. Add a comment.
|
||||
* dwarf2read.c
|
||||
(read_call_site_scope) <is_ref_attr> <die_is_declaration>: Prefer
|
||||
DW_AT_linkage_name.
|
||||
|
||||
gdb/testsuite/
|
||||
2013-03-02 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
Fix entry-values in C++ across CUs.
|
||||
* gdb.arch/amd64-tailcall-cxx.exp: New file.
|
||||
* gdb.arch/amd64-tailcall-cxx1.S: New file.
|
||||
* gdb.arch/amd64-tailcall-cxx1.cc: New file.
|
||||
* gdb.arch/amd64-tailcall-cxx2.S: New file.
|
||||
* gdb.arch/amd64-tailcall-cxx2.cc: New file.
|
||||
|
||||
diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c
|
||||
index 8a61ae6..f300df2 100644
|
||||
--- a/gdb/dwarf2loc.c
|
||||
+++ b/gdb/dwarf2loc.c
|
||||
@@ -542,7 +542,9 @@ call_site_to_target_addr (struct gdbarch *call_site_gdbarch,
|
||||
struct minimal_symbol *msym;
|
||||
|
||||
physname = FIELD_STATIC_PHYSNAME (call_site->target);
|
||||
- msym = lookup_minimal_symbol_text (physname, NULL);
|
||||
+
|
||||
+ /* Handle both the mangled and demangled PHYSNAME. */
|
||||
+ msym = lookup_minimal_symbol (physname, NULL, NULL);
|
||||
if (msym == NULL)
|
||||
{
|
||||
msym = lookup_minimal_symbol_by_pc (call_site->pc - 1);
|
||||
diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c
|
||||
index df6298b..faee1a8 100644
|
||||
--- a/gdb/dwarf2read.c
|
||||
+++ b/gdb/dwarf2read.c
|
||||
@@ -9812,9 +9812,18 @@ read_call_site_scope (struct die_info *die, struct dwarf2_cu *cu)
|
||||
gdb_assert (target_cu->objfile == objfile);
|
||||
if (die_is_declaration (target_die, target_cu))
|
||||
{
|
||||
- const char *target_physname;
|
||||
-
|
||||
- target_physname = dwarf2_physname (NULL, target_die, target_cu);
|
||||
+ const char *target_physname = NULL;
|
||||
+ struct attribute *target_attr;
|
||||
+
|
||||
+ /* Prefer the mangled name; otherwise compute the demangled one. */
|
||||
+ target_attr = dwarf2_attr (target_die, DW_AT_linkage_name, target_cu);
|
||||
+ if (target_attr == NULL)
|
||||
+ target_attr = dwarf2_attr (target_die, DW_AT_MIPS_linkage_name,
|
||||
+ target_cu);
|
||||
+ if (target_attr != NULL && DW_STRING (target_attr) != NULL)
|
||||
+ target_physname = DW_STRING (target_attr);
|
||||
+ else
|
||||
+ target_physname = dwarf2_physname (NULL, target_die, target_cu);
|
||||
if (target_physname == NULL)
|
||||
complaint (&symfile_complaints,
|
||||
_("DW_AT_GNU_call_site_target target DIE has invalid "
|
||||
diff --git a/gdb/testsuite/gdb.arch/amd64-tailcall-cxx.exp b/gdb/testsuite/gdb.arch/amd64-tailcall-cxx.exp
|
||||
new file mode 100644
|
||||
index 0000000..db2ab3c
|
||||
--- /dev/null
|
||||
+++ b/gdb/testsuite/gdb.arch/amd64-tailcall-cxx.exp
|
||||
@@ -0,0 +1,36 @@
|
||||
+# Copyright (C) 2012-2013 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/>.
|
||||
+
|
||||
+set opts {}
|
||||
+standard_testfile amd64-tailcall-cxx1.S amd64-tailcall-cxx2.S
|
||||
+
|
||||
+if [info exists COMPILE] {
|
||||
+ # make check RUNTESTFLAGS="gdb.arch/amd64-tailcall-cxx.exp COMPILE=1"
|
||||
+ standard_testfile amd64-tailcall-cxx1.cc amd64-tailcall-cxx2.cc
|
||||
+ lappend opts debug optimize=-O2
|
||||
+} elseif { ![istarget x86_64-*-* ] || ![is_lp64_target] } {
|
||||
+ verbose "Skipping ${testfile}."
|
||||
+ return
|
||||
+}
|
||||
+
|
||||
+if { [prepare_for_testing ${testfile}.exp ${testfile} "${srcfile} ${srcfile2}" $opts] } {
|
||||
+ return -1
|
||||
+}
|
||||
+
|
||||
+if ![runto g] {
|
||||
+ return -1
|
||||
+}
|
||||
+
|
||||
+gdb_test "bt" "\r\n#0 +g \\(x=x@entry=2\\) at \[^\r\n\]*\r\n#1 +0x\[0-9a-f\]+ in f \\(x=x@entry=1\\) at \[^\r\n\]*\r\n#2 +0x\[0-9a-f\]+ in main .*"
|
||||
diff --git a/gdb/testsuite/gdb.arch/amd64-tailcall-cxx1.S b/gdb/testsuite/gdb.arch/amd64-tailcall-cxx1.S
|
||||
new file mode 100644
|
||||
index 0000000..d988446
|
||||
--- /dev/null
|
||||
+++ b/gdb/testsuite/gdb.arch/amd64-tailcall-cxx1.S
|
||||
@@ -0,0 +1,367 @@
|
||||
+/* This testcase is part of GDB, the GNU debugger.
|
||||
+
|
||||
+ Copyright 2012-2013 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 by:
|
||||
+ g++ -o gdb.arch/amd64-tailcall-cxx1.S gdb.arch/amd64-tailcall-cxx1.cc -Wall -S -dA -O2 -g
|
||||
+ Fedora GCC was used here to also test the case of missing DW_AT_linkage_name.
|
||||
+ */
|
||||
+
|
||||
+ .file "amd64-tailcall-cxx1.cc"
|
||||
+ .text
|
||||
+.Ltext0:
|
||||
+ .p2align 4,,15
|
||||
+ .globl _Z1gi
|
||||
+ .type _Z1gi, @function
|
||||
+_Z1gi:
|
||||
+.LFB0:
|
||||
+ .file 1 "gdb.arch/amd64-tailcall-cxx1.cc"
|
||||
+ # gdb.arch/amd64-tailcall-cxx1.cc:22
|
||||
+ .loc 1 22 0
|
||||
+ .cfi_startproc
|
||||
+.LVL0:
|
||||
+# BLOCK 2 freq:10000 seq:0
|
||||
+# PRED: ENTRY [100.0%] (FALLTHRU)
|
||||
+ # gdb.arch/amd64-tailcall-cxx1.cc:23
|
||||
+ .loc 1 23 0
|
||||
+ movl %edi, v(%rip)
|
||||
+# SUCC: EXIT [100.0%]
|
||||
+ ret
|
||||
+ .cfi_endproc
|
||||
+.LFE0:
|
||||
+ .size _Z1gi, .-_Z1gi
|
||||
+ .section .text.startup,"ax",@progbits
|
||||
+ .p2align 4,,15
|
||||
+ .globl main
|
||||
+ .type main, @function
|
||||
+main:
|
||||
+.LFB1:
|
||||
+ # gdb.arch/amd64-tailcall-cxx1.cc:30
|
||||
+ .loc 1 30 0
|
||||
+ .cfi_startproc
|
||||
+# BLOCK 2 freq:10000 seq:0
|
||||
+# PRED: ENTRY [100.0%] (FALLTHRU)
|
||||
+ subq $8, %rsp
|
||||
+ .cfi_def_cfa_offset 16
|
||||
+ # gdb.arch/amd64-tailcall-cxx1.cc:31
|
||||
+ .loc 1 31 0
|
||||
+ movl $1, %edi
|
||||
+ call _Z1fi
|
||||
+.LVL1:
|
||||
+ # gdb.arch/amd64-tailcall-cxx1.cc:32
|
||||
+ .loc 1 32 0
|
||||
+ xorl %eax, %eax
|
||||
+ addq $8, %rsp
|
||||
+ .cfi_def_cfa_offset 8
|
||||
+# SUCC: EXIT [100.0%]
|
||||
+ ret
|
||||
+ .cfi_endproc
|
||||
+.LFE1:
|
||||
+ .size main, .-main
|
||||
+ .globl v
|
||||
+ .bss
|
||||
+ .align 4
|
||||
+ .type v, @object
|
||||
+ .size v, 4
|
||||
+v:
|
||||
+ .zero 4
|
||||
+ .text
|
||||
+.Letext0:
|
||||
+ .section .debug_info,"",@progbits
|
||||
+.Ldebug_info0:
|
||||
+ .long 0xb4 # Length of Compilation Unit Info
|
||||
+ .value 0x4 # 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 .LASF1 # DW_AT_producer: "GNU C++ 4.8.0 20130220 (Red Hat 4.8.0-0.14) -mtune=generic -march=x86-64 -g -O2"
|
||||
+ .byte 0x4 # DW_AT_language
|
||||
+ .long .LASF2 # DW_AT_name: "gdb.arch/amd64-tailcall-cxx1.cc"
|
||||
+ .long .LASF3 # DW_AT_comp_dir: ""
|
||||
+ .long .Ldebug_ranges0+0 # DW_AT_ranges
|
||||
+ .quad 0 # DW_AT_low_pc
|
||||
+ .long .Ldebug_line0 # DW_AT_stmt_list
|
||||
+ .uleb128 0x2 # (DIE (0x29) DW_TAG_subprogram)
|
||||
+ # DW_AT_external
|
||||
+ .ascii "g\0" # DW_AT_name
|
||||
+ .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-tailcall-cxx1.cc)
|
||||
+ .byte 0x15 # DW_AT_decl_line
|
||||
+ .long .LASF4 # DW_AT_linkage_name: "_Z1gi"
|
||||
+ .quad .LFB0 # DW_AT_low_pc
|
||||
+ .quad .LFE0-.LFB0 # DW_AT_high_pc
|
||||
+ .uleb128 0x1 # DW_AT_frame_base
|
||||
+ .byte 0x9c # DW_OP_call_frame_cfa
|
||||
+ # DW_AT_GNU_all_call_sites
|
||||
+ .long 0x54 # DW_AT_sibling
|
||||
+ .uleb128 0x3 # (DIE (0x48) DW_TAG_formal_parameter)
|
||||
+ .ascii "x\0" # DW_AT_name
|
||||
+ .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-tailcall-cxx1.cc)
|
||||
+ .byte 0x15 # DW_AT_decl_line
|
||||
+ .long 0x54 # DW_AT_type
|
||||
+ .uleb128 0x1 # DW_AT_location
|
||||
+ .byte 0x55 # DW_OP_reg5
|
||||
+ .byte 0 # end of children of DIE 0x29
|
||||
+ .uleb128 0x4 # (DIE (0x54) DW_TAG_base_type)
|
||||
+ .byte 0x4 # DW_AT_byte_size
|
||||
+ .byte 0x5 # DW_AT_encoding
|
||||
+ .ascii "int\0" # DW_AT_name
|
||||
+ .uleb128 0x5 # (DIE (0x5b) DW_TAG_subprogram)
|
||||
+ # DW_AT_external
|
||||
+ .long .LASF0 # DW_AT_name: "main"
|
||||
+ .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-tailcall-cxx1.cc)
|
||||
+ .byte 0x1d # DW_AT_decl_line
|
||||
+ .long 0x54 # DW_AT_type
|
||||
+ .quad .LFB1 # DW_AT_low_pc
|
||||
+ .quad .LFE1-.LFB1 # DW_AT_high_pc
|
||||
+ .uleb128 0x1 # DW_AT_frame_base
|
||||
+ .byte 0x9c # DW_OP_call_frame_cfa
|
||||
+ # DW_AT_GNU_all_call_sites
|
||||
+ .long 0x90 # DW_AT_sibling
|
||||
+ .uleb128 0x6 # (DIE (0x7c) DW_TAG_GNU_call_site)
|
||||
+ .quad .LVL1 # DW_AT_low_pc
|
||||
+ .long 0xa8 # DW_AT_abstract_origin
|
||||
+ .uleb128 0x7 # (DIE (0x89) DW_TAG_GNU_call_site_parameter)
|
||||
+ .uleb128 0x1 # DW_AT_location
|
||||
+ .byte 0x55 # DW_OP_reg5
|
||||
+ .uleb128 0x1 # DW_AT_GNU_call_site_value
|
||||
+ .byte 0x31 # DW_OP_lit1
|
||||
+ .byte 0 # end of children of DIE 0x7c
|
||||
+ .byte 0 # end of children of DIE 0x5b
|
||||
+ .uleb128 0x8 # (DIE (0x90) DW_TAG_variable)
|
||||
+ .ascii "v\0" # DW_AT_name
|
||||
+ .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-tailcall-cxx1.cc)
|
||||
+ .byte 0x12 # DW_AT_decl_line
|
||||
+ .long 0xa3 # DW_AT_type
|
||||
+ # DW_AT_external
|
||||
+ .uleb128 0x9 # DW_AT_location
|
||||
+ .byte 0x3 # DW_OP_addr
|
||||
+ .quad v
|
||||
+ .uleb128 0x9 # (DIE (0xa3) DW_TAG_volatile_type)
|
||||
+ .long 0x54 # DW_AT_type
|
||||
+ .uleb128 0xa # (DIE (0xa8) DW_TAG_subprogram)
|
||||
+ # DW_AT_external
|
||||
+ .ascii "f\0" # DW_AT_name
|
||||
+ .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-tailcall-cxx1.cc)
|
||||
+ .byte 0x1a # DW_AT_decl_line
|
||||
+ .long .LASF5 # DW_AT_linkage_name: "_Z1fi"
|
||||
+ # DW_AT_declaration
|
||||
+ .uleb128 0xb # (DIE (0xb1) DW_TAG_formal_parameter)
|
||||
+ .long 0x54 # DW_AT_type
|
||||
+ .byte 0 # end of children of DIE 0xa8
|
||||
+ .byte 0 # end of children of DIE 0xb
|
||||
+ .section .debug_abbrev,"",@progbits
|
||||
+.Ldebug_abbrev0:
|
||||
+ .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 0x55 # (DW_AT_ranges)
|
||||
+ .uleb128 0x17 # (DW_FORM_sec_offset)
|
||||
+ .uleb128 0x11 # (DW_AT_low_pc)
|
||||
+ .uleb128 0x1 # (DW_FORM_addr)
|
||||
+ .uleb128 0x10 # (DW_AT_stmt_list)
|
||||
+ .uleb128 0x17 # (DW_FORM_sec_offset)
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0x2 # (abbrev code)
|
||||
+ .uleb128 0x2e # (TAG: DW_TAG_subprogram)
|
||||
+ .byte 0x1 # DW_children_yes
|
||||
+ .uleb128 0x3f # (DW_AT_external)
|
||||
+ .uleb128 0x19 # (DW_FORM_flag_present)
|
||||
+ .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 0x6e # (DW_AT_linkage_name)
|
||||
+ .uleb128 0xe # (DW_FORM_strp)
|
||||
+ .uleb128 0x11 # (DW_AT_low_pc)
|
||||
+ .uleb128 0x1 # (DW_FORM_addr)
|
||||
+ .uleb128 0x12 # (DW_AT_high_pc)
|
||||
+ .uleb128 0x7 # (DW_FORM_data8)
|
||||
+ .uleb128 0x40 # (DW_AT_frame_base)
|
||||
+ .uleb128 0x18 # (DW_FORM_exprloc)
|
||||
+ .uleb128 0x2117 # (DW_AT_GNU_all_call_sites)
|
||||
+ .uleb128 0x19 # (DW_FORM_flag_present)
|
||||
+ .uleb128 0x1 # (DW_AT_sibling)
|
||||
+ .uleb128 0x13 # (DW_FORM_ref4)
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0x3 # (abbrev code)
|
||||
+ .uleb128 0x5 # (TAG: DW_TAG_formal_parameter)
|
||||
+ .byte 0 # 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 0x18 # (DW_FORM_exprloc)
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0x4 # (abbrev code)
|
||||
+ .uleb128 0x24 # (TAG: DW_TAG_base_type)
|
||||
+ .byte 0 # 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 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0x5 # (abbrev code)
|
||||
+ .uleb128 0x2e # (TAG: DW_TAG_subprogram)
|
||||
+ .byte 0x1 # DW_children_yes
|
||||
+ .uleb128 0x3f # (DW_AT_external)
|
||||
+ .uleb128 0x19 # (DW_FORM_flag_present)
|
||||
+ .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 0x11 # (DW_AT_low_pc)
|
||||
+ .uleb128 0x1 # (DW_FORM_addr)
|
||||
+ .uleb128 0x12 # (DW_AT_high_pc)
|
||||
+ .uleb128 0x7 # (DW_FORM_data8)
|
||||
+ .uleb128 0x40 # (DW_AT_frame_base)
|
||||
+ .uleb128 0x18 # (DW_FORM_exprloc)
|
||||
+ .uleb128 0x2117 # (DW_AT_GNU_all_call_sites)
|
||||
+ .uleb128 0x19 # (DW_FORM_flag_present)
|
||||
+ .uleb128 0x1 # (DW_AT_sibling)
|
||||
+ .uleb128 0x13 # (DW_FORM_ref4)
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0x6 # (abbrev code)
|
||||
+ .uleb128 0x4109 # (TAG: DW_TAG_GNU_call_site)
|
||||
+ .byte 0x1 # DW_children_yes
|
||||
+ .uleb128 0x11 # (DW_AT_low_pc)
|
||||
+ .uleb128 0x1 # (DW_FORM_addr)
|
||||
+ .uleb128 0x31 # (DW_AT_abstract_origin)
|
||||
+ .uleb128 0x13 # (DW_FORM_ref4)
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0x7 # (abbrev code)
|
||||
+ .uleb128 0x410a # (TAG: DW_TAG_GNU_call_site_parameter)
|
||||
+ .byte 0 # DW_children_no
|
||||
+ .uleb128 0x2 # (DW_AT_location)
|
||||
+ .uleb128 0x18 # (DW_FORM_exprloc)
|
||||
+ .uleb128 0x2111 # (DW_AT_GNU_call_site_value)
|
||||
+ .uleb128 0x18 # (DW_FORM_exprloc)
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0x8 # (abbrev code)
|
||||
+ .uleb128 0x34 # (TAG: DW_TAG_variable)
|
||||
+ .byte 0 # 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 0x3f # (DW_AT_external)
|
||||
+ .uleb128 0x19 # (DW_FORM_flag_present)
|
||||
+ .uleb128 0x2 # (DW_AT_location)
|
||||
+ .uleb128 0x18 # (DW_FORM_exprloc)
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0x9 # (abbrev code)
|
||||
+ .uleb128 0x35 # (TAG: DW_TAG_volatile_type)
|
||||
+ .byte 0 # DW_children_no
|
||||
+ .uleb128 0x49 # (DW_AT_type)
|
||||
+ .uleb128 0x13 # (DW_FORM_ref4)
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0xa # (abbrev code)
|
||||
+ .uleb128 0x2e # (TAG: DW_TAG_subprogram)
|
||||
+ .byte 0x1 # DW_children_yes
|
||||
+ .uleb128 0x3f # (DW_AT_external)
|
||||
+ .uleb128 0x19 # (DW_FORM_flag_present)
|
||||
+ .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 0x6e # (DW_AT_linkage_name)
|
||||
+ .uleb128 0xe # (DW_FORM_strp)
|
||||
+ .uleb128 0x3c # (DW_AT_declaration)
|
||||
+ .uleb128 0x19 # (DW_FORM_flag_present)
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0xb # (abbrev code)
|
||||
+ .uleb128 0x5 # (TAG: DW_TAG_formal_parameter)
|
||||
+ .byte 0 # DW_children_no
|
||||
+ .uleb128 0x49 # (DW_AT_type)
|
||||
+ .uleb128 0x13 # (DW_FORM_ref4)
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .section .debug_aranges,"",@progbits
|
||||
+ .long 0x3c # Length of Address Ranges Info
|
||||
+ .value 0x2 # DWARF Version
|
||||
+ .long .Ldebug_info0 # Offset of Compilation Unit Info
|
||||
+ .byte 0x8 # Size of Address
|
||||
+ .byte 0 # Size of Segment Descriptor
|
||||
+ .value 0 # Pad to 16 byte boundary
|
||||
+ .value 0
|
||||
+ .quad .Ltext0 # Address
|
||||
+ .quad .Letext0-.Ltext0 # Length
|
||||
+ .quad .LFB1 # Address
|
||||
+ .quad .LFE1-.LFB1 # Length
|
||||
+ .quad 0
|
||||
+ .quad 0
|
||||
+ .section .debug_ranges,"",@progbits
|
||||
+.Ldebug_ranges0:
|
||||
+ .quad .Ltext0 # Offset 0
|
||||
+ .quad .Letext0
|
||||
+ .quad .LFB1 # Offset 0x10
|
||||
+ .quad .LFE1
|
||||
+ .quad 0
|
||||
+ .quad 0
|
||||
+ .section .debug_line,"",@progbits
|
||||
+.Ldebug_line0:
|
||||
+ .section .debug_str,"MS",@progbits,1
|
||||
+.LASF4:
|
||||
+ .string "_Z1gi"
|
||||
+.LASF3:
|
||||
+ .string ""
|
||||
+.LASF2:
|
||||
+ .string "gdb.arch/amd64-tailcall-cxx1.cc"
|
||||
+.LASF1:
|
||||
+ .string "GNU C++ 4.8.0 20130220 (Red Hat 4.8.0-0.14) -mtune=generic -march=x86-64 -g -O2"
|
||||
+.LASF0:
|
||||
+ .string "main"
|
||||
+.LASF5:
|
||||
+ .string "_Z1fi"
|
||||
+ .ident "GCC: (GNU) 4.8.0 20130220 (Red Hat 4.8.0-0.14)"
|
||||
+ .section .note.GNU-stack,"",@progbits
|
||||
diff --git a/gdb/testsuite/gdb.arch/amd64-tailcall-cxx1.cc b/gdb/testsuite/gdb.arch/amd64-tailcall-cxx1.cc
|
||||
new file mode 100644
|
||||
index 0000000..7af9936
|
||||
--- /dev/null
|
||||
+++ b/gdb/testsuite/gdb.arch/amd64-tailcall-cxx1.cc
|
||||
@@ -0,0 +1,32 @@
|
||||
+/* This testcase is part of GDB, the GNU debugger.
|
||||
+
|
||||
+ Copyright 2013 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/>. */
|
||||
+
|
||||
+volatile int v;
|
||||
+
|
||||
+__attribute__ ((noinline, noclone)) void
|
||||
+g (int x)
|
||||
+{
|
||||
+ v = x;
|
||||
+}
|
||||
+
|
||||
+extern void f (int x);
|
||||
+
|
||||
+int
|
||||
+main ()
|
||||
+{
|
||||
+ f (1);
|
||||
+}
|
||||
diff --git a/gdb/testsuite/gdb.arch/amd64-tailcall-cxx2.S b/gdb/testsuite/gdb.arch/amd64-tailcall-cxx2.S
|
||||
new file mode 100644
|
||||
index 0000000..8a26d6f
|
||||
--- /dev/null
|
||||
+++ b/gdb/testsuite/gdb.arch/amd64-tailcall-cxx2.S
|
||||
@@ -0,0 +1,276 @@
|
||||
+/* This testcase is part of GDB, the GNU debugger.
|
||||
+
|
||||
+ Copyright 2012-2013 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 by:
|
||||
+ g++ -o gdb.arch/amd64-tailcall-cxx2.S gdb.arch/amd64-tailcall-cxx2.cc -Wall -S -dA -O2 -g
|
||||
+ Fedora GCC was used here to also test the case of missing DW_AT_linkage_name.
|
||||
+ */
|
||||
+
|
||||
+ .file "amd64-tailcall-cxx2.cc"
|
||||
+ .text
|
||||
+.Ltext0:
|
||||
+ .p2align 4,,15
|
||||
+ .globl _Z1fi
|
||||
+ .type _Z1fi, @function
|
||||
+_Z1fi:
|
||||
+.LFB0:
|
||||
+ .file 1 "gdb.arch/amd64-tailcall-cxx2.cc"
|
||||
+ # gdb.arch/amd64-tailcall-cxx2.cc:22
|
||||
+ .loc 1 22 0
|
||||
+ .cfi_startproc
|
||||
+.LVL0:
|
||||
+# BLOCK 2 freq:10000 seq:0
|
||||
+# PRED: ENTRY [100.0%] (FALLTHRU)
|
||||
+ # gdb.arch/amd64-tailcall-cxx2.cc:23
|
||||
+ .loc 1 23 0
|
||||
+ addl $1, %edi
|
||||
+.LVL1:
|
||||
+ jmp _Z1gi
|
||||
+.LVL2:
|
||||
+# SUCC: EXIT [100.0%] (ABNORMAL,SIBCALL)
|
||||
+ .cfi_endproc
|
||||
+.LFE0:
|
||||
+ .size _Z1fi, .-_Z1fi
|
||||
+.Letext0:
|
||||
+ .section .debug_info,"",@progbits
|
||||
+.Ldebug_info0:
|
||||
+ .long 0x84 # Length of Compilation Unit Info
|
||||
+ .value 0x4 # 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 .LASF0 # DW_AT_producer: "GNU C++ 4.8.0 20130220 (Red Hat 4.8.0-0.14) -mtune=generic -march=x86-64 -g -O2"
|
||||
+ .byte 0x4 # DW_AT_language
|
||||
+ .long .LASF1 # DW_AT_name: "gdb.arch/amd64-tailcall-cxx2.cc"
|
||||
+ .long .LASF2 # DW_AT_comp_dir: ""
|
||||
+ .quad .Ltext0 # DW_AT_low_pc
|
||||
+ .quad .Letext0-.Ltext0 # DW_AT_high_pc
|
||||
+ .long .Ldebug_line0 # DW_AT_stmt_list
|
||||
+ .uleb128 0x2 # (DIE (0x2d) DW_TAG_subprogram)
|
||||
+ # DW_AT_external
|
||||
+ .ascii "f\0" # DW_AT_name
|
||||
+ .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-tailcall-cxx2.cc)
|
||||
+ .byte 0x15 # DW_AT_decl_line
|
||||
+ .long .LASF3 # DW_AT_linkage_name: "_Z1fi"
|
||||
+ .quad .LFB0 # DW_AT_low_pc
|
||||
+ .quad .LFE0-.LFB0 # DW_AT_high_pc
|
||||
+ .uleb128 0x1 # DW_AT_frame_base
|
||||
+ .byte 0x9c # DW_OP_call_frame_cfa
|
||||
+ # DW_AT_GNU_all_call_sites
|
||||
+ .long 0x71 # DW_AT_sibling
|
||||
+ .uleb128 0x3 # (DIE (0x4c) DW_TAG_formal_parameter)
|
||||
+ .ascii "x\0" # DW_AT_name
|
||||
+ .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-tailcall-cxx2.cc)
|
||||
+ .byte 0x15 # DW_AT_decl_line
|
||||
+ .long 0x71 # DW_AT_type
|
||||
+ .long .LLST0 # DW_AT_location
|
||||
+ .uleb128 0x4 # (DIE (0x59) DW_TAG_GNU_call_site)
|
||||
+ .quad .LVL2 # DW_AT_low_pc
|
||||
+ # DW_AT_GNU_tail_call
|
||||
+ .long 0x78 # DW_AT_abstract_origin
|
||||
+ .uleb128 0x5 # (DIE (0x66) DW_TAG_GNU_call_site_parameter)
|
||||
+ .uleb128 0x1 # DW_AT_location
|
||||
+ .byte 0x55 # DW_OP_reg5
|
||||
+ .uleb128 0x5 # DW_AT_GNU_call_site_value
|
||||
+ .byte 0xf3 # DW_OP_GNU_entry_value
|
||||
+ .uleb128 0x1
|
||||
+ .byte 0x55 # DW_OP_reg5
|
||||
+ .byte 0x23 # DW_OP_plus_uconst
|
||||
+ .uleb128 0x1
|
||||
+ .byte 0 # end of children of DIE 0x59
|
||||
+ .byte 0 # end of children of DIE 0x2d
|
||||
+ .uleb128 0x6 # (DIE (0x71) DW_TAG_base_type)
|
||||
+ .byte 0x4 # DW_AT_byte_size
|
||||
+ .byte 0x5 # DW_AT_encoding
|
||||
+ .ascii "int\0" # DW_AT_name
|
||||
+ .uleb128 0x7 # (DIE (0x78) DW_TAG_subprogram)
|
||||
+ # DW_AT_external
|
||||
+ .ascii "g\0" # DW_AT_name
|
||||
+ .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-tailcall-cxx2.cc)
|
||||
+ .byte 0x12 # DW_AT_decl_line
|
||||
+ .long .LASF4 # DW_AT_linkage_name: "_Z1gi"
|
||||
+ # DW_AT_declaration
|
||||
+ .uleb128 0x8 # (DIE (0x81) DW_TAG_formal_parameter)
|
||||
+ .long 0x71 # DW_AT_type
|
||||
+ .byte 0 # end of children of DIE 0x78
|
||||
+ .byte 0 # end of children of DIE 0xb
|
||||
+ .section .debug_abbrev,"",@progbits
|
||||
+.Ldebug_abbrev0:
|
||||
+ .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 0x7 # (DW_FORM_data8)
|
||||
+ .uleb128 0x10 # (DW_AT_stmt_list)
|
||||
+ .uleb128 0x17 # (DW_FORM_sec_offset)
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0x2 # (abbrev code)
|
||||
+ .uleb128 0x2e # (TAG: DW_TAG_subprogram)
|
||||
+ .byte 0x1 # DW_children_yes
|
||||
+ .uleb128 0x3f # (DW_AT_external)
|
||||
+ .uleb128 0x19 # (DW_FORM_flag_present)
|
||||
+ .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 0x6e # (DW_AT_linkage_name)
|
||||
+ .uleb128 0xe # (DW_FORM_strp)
|
||||
+ .uleb128 0x11 # (DW_AT_low_pc)
|
||||
+ .uleb128 0x1 # (DW_FORM_addr)
|
||||
+ .uleb128 0x12 # (DW_AT_high_pc)
|
||||
+ .uleb128 0x7 # (DW_FORM_data8)
|
||||
+ .uleb128 0x40 # (DW_AT_frame_base)
|
||||
+ .uleb128 0x18 # (DW_FORM_exprloc)
|
||||
+ .uleb128 0x2117 # (DW_AT_GNU_all_call_sites)
|
||||
+ .uleb128 0x19 # (DW_FORM_flag_present)
|
||||
+ .uleb128 0x1 # (DW_AT_sibling)
|
||||
+ .uleb128 0x13 # (DW_FORM_ref4)
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0x3 # (abbrev code)
|
||||
+ .uleb128 0x5 # (TAG: DW_TAG_formal_parameter)
|
||||
+ .byte 0 # 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 0x17 # (DW_FORM_sec_offset)
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0x4 # (abbrev code)
|
||||
+ .uleb128 0x4109 # (TAG: DW_TAG_GNU_call_site)
|
||||
+ .byte 0x1 # DW_children_yes
|
||||
+ .uleb128 0x11 # (DW_AT_low_pc)
|
||||
+ .uleb128 0x1 # (DW_FORM_addr)
|
||||
+ .uleb128 0x2115 # (DW_AT_GNU_tail_call)
|
||||
+ .uleb128 0x19 # (DW_FORM_flag_present)
|
||||
+ .uleb128 0x31 # (DW_AT_abstract_origin)
|
||||
+ .uleb128 0x13 # (DW_FORM_ref4)
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0x5 # (abbrev code)
|
||||
+ .uleb128 0x410a # (TAG: DW_TAG_GNU_call_site_parameter)
|
||||
+ .byte 0 # DW_children_no
|
||||
+ .uleb128 0x2 # (DW_AT_location)
|
||||
+ .uleb128 0x18 # (DW_FORM_exprloc)
|
||||
+ .uleb128 0x2111 # (DW_AT_GNU_call_site_value)
|
||||
+ .uleb128 0x18 # (DW_FORM_exprloc)
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0x6 # (abbrev code)
|
||||
+ .uleb128 0x24 # (TAG: DW_TAG_base_type)
|
||||
+ .byte 0 # 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 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0x7 # (abbrev code)
|
||||
+ .uleb128 0x2e # (TAG: DW_TAG_subprogram)
|
||||
+ .byte 0x1 # DW_children_yes
|
||||
+ .uleb128 0x3f # (DW_AT_external)
|
||||
+ .uleb128 0x19 # (DW_FORM_flag_present)
|
||||
+ .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 0x6e # (DW_AT_linkage_name)
|
||||
+ .uleb128 0xe # (DW_FORM_strp)
|
||||
+ .uleb128 0x3c # (DW_AT_declaration)
|
||||
+ .uleb128 0x19 # (DW_FORM_flag_present)
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0x8 # (abbrev code)
|
||||
+ .uleb128 0x5 # (TAG: DW_TAG_formal_parameter)
|
||||
+ .byte 0 # DW_children_no
|
||||
+ .uleb128 0x49 # (DW_AT_type)
|
||||
+ .uleb128 0x13 # (DW_FORM_ref4)
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .section .debug_loc,"",@progbits
|
||||
+.Ldebug_loc0:
|
||||
+.LLST0:
|
||||
+ .quad .LVL0-.Ltext0 # Location list begin address (*.LLST0)
|
||||
+ .quad .LVL1-.Ltext0 # Location list end address (*.LLST0)
|
||||
+ .value 0x1 # Location expression size
|
||||
+ .byte 0x55 # DW_OP_reg5
|
||||
+ .quad .LVL1-.Ltext0 # Location list begin address (*.LLST0)
|
||||
+ .quad .LVL2-1-.Ltext0 # Location list end address (*.LLST0)
|
||||
+ .value 0x3 # Location expression size
|
||||
+ .byte 0x75 # DW_OP_breg5
|
||||
+ .sleb128 -1
|
||||
+ .byte 0x9f # DW_OP_stack_value
|
||||
+ .quad .LVL2-1-.Ltext0 # Location list begin address (*.LLST0)
|
||||
+ .quad .LFE0-.Ltext0 # Location list end address (*.LLST0)
|
||||
+ .value 0x4 # Location expression size
|
||||
+ .byte 0xf3 # DW_OP_GNU_entry_value
|
||||
+ .uleb128 0x1
|
||||
+ .byte 0x55 # DW_OP_reg5
|
||||
+ .byte 0x9f # DW_OP_stack_value
|
||||
+ .quad 0 # Location list terminator begin (*.LLST0)
|
||||
+ .quad 0 # Location list terminator end (*.LLST0)
|
||||
+ .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 0 # Size of Segment Descriptor
|
||||
+ .value 0 # Pad to 16 byte boundary
|
||||
+ .value 0
|
||||
+ .quad .Ltext0 # Address
|
||||
+ .quad .Letext0-.Ltext0 # Length
|
||||
+ .quad 0
|
||||
+ .quad 0
|
||||
+ .section .debug_line,"",@progbits
|
||||
+.Ldebug_line0:
|
||||
+ .section .debug_str,"MS",@progbits,1
|
||||
+.LASF0:
|
||||
+ .string "GNU C++ 4.8.0 20130220 (Red Hat 4.8.0-0.14) -mtune=generic -march=x86-64 -g -O2"
|
||||
+.LASF2:
|
||||
+ .string ""
|
||||
+.LASF3:
|
||||
+ .string "_Z1fi"
|
||||
+.LASF1:
|
||||
+ .string "gdb.arch/amd64-tailcall-cxx2.cc"
|
||||
+.LASF4:
|
||||
+ .string "_Z1gi"
|
||||
+ .ident "GCC: (GNU) 4.8.0 20130220 (Red Hat 4.8.0-0.14)"
|
||||
+ .section .note.GNU-stack,"",@progbits
|
||||
diff --git a/gdb/testsuite/gdb.arch/amd64-tailcall-cxx2.cc b/gdb/testsuite/gdb.arch/amd64-tailcall-cxx2.cc
|
||||
new file mode 100644
|
||||
index 0000000..232f4fb
|
||||
--- /dev/null
|
||||
+++ b/gdb/testsuite/gdb.arch/amd64-tailcall-cxx2.cc
|
||||
@@ -0,0 +1,24 @@
|
||||
+/* This testcase is part of GDB, the GNU debugger.
|
||||
+
|
||||
+ Copyright 2013 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/>. */
|
||||
+
|
||||
+extern void g (int x);
|
||||
+
|
||||
+__attribute__ ((noinline, noclone)) void
|
||||
+f (int x)
|
||||
+{
|
||||
+ g (x + 1);
|
||||
+}
|
||||
|
845
gdb-entryval-2of2.patch
Normal file
845
gdb-entryval-2of2.patch
Normal file
@ -0,0 +1,845 @@
|
||||
http://sourceware.org/ml/gdb-patches/2013-03/msg00062.html
|
||||
Subject: [patch] entry-values: Fix if callee called noreturn function
|
||||
|
||||
Hi,
|
||||
|
||||
while debugging the previous bug I found this bug.
|
||||
|
||||
THIS_PC found below is then passed to get_pc_function_start.
|
||||
get_pc_function_start cannot handle PC which has address of the end of the
|
||||
function.
|
||||
|
||||
No regressions on {x86_64,x86_64-m32,i686}-fedora19pre-linux-gnu.
|
||||
|
||||
I will check it in.
|
||||
|
||||
|
||||
Thanks,
|
||||
Jan
|
||||
|
||||
|
||||
gdb/
|
||||
2013-03-02 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
Fix entry-values if the callee called a noreturn function.
|
||||
* dwarf2-frame-tailcall.c (dwarf2_tailcall_sniffer_first): Use
|
||||
get_frame_address_in_block. Add new comment.
|
||||
|
||||
gdb/testsuite/
|
||||
2013-03-02 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||
|
||||
Fix entry-values if the callee called a noreturn function.
|
||||
* gdb.arch/amd64-tailcall-noret.S: New file.
|
||||
* gdb.arch/amd64-tailcall-noret.c: New file.
|
||||
* gdb.arch/amd64-tailcall-noret.exp: New file.
|
||||
|
||||
diff --git a/gdb/dwarf2-frame-tailcall.c b/gdb/dwarf2-frame-tailcall.c
|
||||
index b5f95c3..b82a051 100644
|
||||
--- a/gdb/dwarf2-frame-tailcall.c
|
||||
+++ b/gdb/dwarf2-frame-tailcall.c
|
||||
@@ -374,7 +374,9 @@ dwarf2_tailcall_sniffer_first (struct frame_info *this_frame,
|
||||
|
||||
gdb_assert (*tailcall_cachep == NULL);
|
||||
|
||||
- this_pc = get_frame_pc (this_frame);
|
||||
+ /* PC may be after the function if THIS_FRAME calls noreturn function,
|
||||
+ get_frame_address_in_block will decrease it by 1 in such case. */
|
||||
+ this_pc = get_frame_address_in_block (this_frame);
|
||||
|
||||
/* Catch any unwinding errors. */
|
||||
TRY_CATCH (except, RETURN_MASK_ERROR)
|
||||
diff --git a/gdb/testsuite/gdb.arch/amd64-tailcall-noret.S b/gdb/testsuite/gdb.arch/amd64-tailcall-noret.S
|
||||
new file mode 100644
|
||||
index 0000000..25397e9
|
||||
--- /dev/null
|
||||
+++ b/gdb/testsuite/gdb.arch/amd64-tailcall-noret.S
|
||||
@@ -0,0 +1,694 @@
|
||||
+/* This testcase is part of GDB, the GNU debugger.
|
||||
+
|
||||
+ Copyright 2013 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 by:
|
||||
+ gcc -o gdb.arch/amd64-tailcall-noret.S gdb.arch/amd64-tailcall-noret.c -Wall -S -dA -O2 -g
|
||||
+ */
|
||||
+
|
||||
+ .file "amd64-tailcall-noret.c"
|
||||
+ .text
|
||||
+.Ltext0:
|
||||
+ .section .text.unlikely,"ax",@progbits
|
||||
+ .type noret, @function
|
||||
+noret:
|
||||
+.LFB9:
|
||||
+ .file 1 "gdb.arch/amd64-tailcall-noret.c"
|
||||
+ # gdb.arch/amd64-tailcall-noret.c:24
|
||||
+ .loc 1 24 0
|
||||
+ .cfi_startproc
|
||||
+.LVL0:
|
||||
+# BLOCK 2 freq:10000 seq:0
|
||||
+# PRED: ENTRY [100.0%] (fallthru)
|
||||
+ pushq %rax
|
||||
+.LCFI0:
|
||||
+ .cfi_def_cfa_offset 16
|
||||
+ # gdb.arch/amd64-tailcall-noret.c:25
|
||||
+ .loc 1 25 0
|
||||
+ call abort
|
||||
+.LVL1:
|
||||
+# SUCC:
|
||||
+ .cfi_endproc
|
||||
+.LFE9:
|
||||
+ .size noret, .-noret
|
||||
+ .text
|
||||
+ .p2align 4,,15
|
||||
+ .type mayret, @function
|
||||
+mayret:
|
||||
+.LFB10:
|
||||
+ # gdb.arch/amd64-tailcall-noret.c:30
|
||||
+ .loc 1 30 0
|
||||
+ .cfi_startproc
|
||||
+.LVL2:
|
||||
+# BLOCK 2 freq:10000 seq:0
|
||||
+# PRED: ENTRY [100.0%] (fallthru)
|
||||
+ # gdb.arch/amd64-tailcall-noret.c:31
|
||||
+ .loc 1 31 0
|
||||
+ movl v(%rip), %eax
|
||||
+ testl %eax, %eax
|
||||
+# SUCC: 4 [0.0%] (can_fallthru) 3 [100.0%] (fallthru,can_fallthru)
|
||||
+ jne .L8
|
||||
+# BLOCK 3 freq:9996 seq:1
|
||||
+# PRED: 2 [100.0%] (fallthru,can_fallthru)
|
||||
+# SUCC: EXIT [100.0%]
|
||||
+ rep
|
||||
+ ret
|
||||
+# BLOCK 4 freq:4 seq:2
|
||||
+# PRED: 2 [0.0%] (can_fallthru)
|
||||
+.L8:
|
||||
+ # gdb.arch/amd64-tailcall-noret.c:30
|
||||
+ .loc 1 30 0
|
||||
+ pushq %rdx
|
||||
+.LCFI1:
|
||||
+ .cfi_def_cfa_offset 16
|
||||
+ # gdb.arch/amd64-tailcall-noret.c:32
|
||||
+ .loc 1 32 0
|
||||
+ xorl %eax, %eax
|
||||
+ call noret
|
||||
+.LVL3:
|
||||
+# SUCC:
|
||||
+ .cfi_endproc
|
||||
+.LFE10:
|
||||
+ .size mayret, .-mayret
|
||||
+ .p2align 4,,15
|
||||
+ .type tailcall, @function
|
||||
+tailcall:
|
||||
+.LFB11:
|
||||
+ # gdb.arch/amd64-tailcall-noret.c:37
|
||||
+ .loc 1 37 0
|
||||
+ .cfi_startproc
|
||||
+.LVL4:
|
||||
+# BLOCK 2 freq:10000 seq:0
|
||||
+# PRED: ENTRY [100.0%] (fallthru)
|
||||
+ # gdb.arch/amd64-tailcall-noret.c:38
|
||||
+ .loc 1 38 0
|
||||
+ jmp mayret
|
||||
+.LVL5:
|
||||
+# SUCC: EXIT [100.0%] (ab,sibcall)
|
||||
+ .cfi_endproc
|
||||
+.LFE11:
|
||||
+ .size tailcall, .-tailcall
|
||||
+ .section .text.startup,"ax",@progbits
|
||||
+ .p2align 4,,15
|
||||
+ .globl main
|
||||
+ .type main, @function
|
||||
+main:
|
||||
+.LFB12:
|
||||
+ # gdb.arch/amd64-tailcall-noret.c:43
|
||||
+ .loc 1 43 0
|
||||
+ .cfi_startproc
|
||||
+# BLOCK 2 freq:10000 seq:0
|
||||
+# PRED: ENTRY [100.0%] (fallthru)
|
||||
+ subq $8, %rsp
|
||||
+.LCFI2:
|
||||
+ .cfi_def_cfa_offset 16
|
||||
+ # gdb.arch/amd64-tailcall-noret.c:44
|
||||
+ .loc 1 44 0
|
||||
+ movl $1, %edi
|
||||
+ call tailcall
|
||||
+.LVL6:
|
||||
+ # gdb.arch/amd64-tailcall-noret.c:46
|
||||
+ .loc 1 46 0
|
||||
+ xorl %eax, %eax
|
||||
+ addq $8, %rsp
|
||||
+.LCFI3:
|
||||
+ .cfi_def_cfa_offset 8
|
||||
+# SUCC: EXIT [100.0%]
|
||||
+ ret
|
||||
+ .cfi_endproc
|
||||
+.LFE12:
|
||||
+ .size main, .-main
|
||||
+ .globl v
|
||||
+ .data
|
||||
+ .align 4
|
||||
+ .type v, @object
|
||||
+ .size v, 4
|
||||
+v:
|
||||
+ .long 1
|
||||
+ .text
|
||||
+.Letext0:
|
||||
+ .file 2 "/usr/include/stdlib.h"
|
||||
+ .section .debug_info,"",@progbits
|
||||
+.Ldebug_info0:
|
||||
+ .long 0x19d # Length of Compilation Unit Info
|
||||
+ .value 0x2 # 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 .LASF14 # DW_AT_producer: "GNU C 4.7.3 20130221 (prerelease)"
|
||||
+ .byte 0x1 # DW_AT_language
|
||||
+ .long .LASF15 # DW_AT_name: "gdb.arch/amd64-tailcall-noret.c"
|
||||
+ .long .LASF16 # DW_AT_comp_dir: ""
|
||||
+ .long .Ldebug_ranges0+0 # DW_AT_ranges
|
||||
+ .quad 0 # DW_AT_low_pc
|
||||
+ .quad 0 # DW_AT_entry_pc
|
||||
+ .long .Ldebug_line0 # DW_AT_stmt_list
|
||||
+ .uleb128 0x2 # (DIE (0x31) DW_TAG_base_type)
|
||||
+ .byte 0x8 # DW_AT_byte_size
|
||||
+ .byte 0x7 # DW_AT_encoding
|
||||
+ .long .LASF0 # DW_AT_name: "long unsigned int"
|
||||
+ .uleb128 0x3 # (DIE (0x38) DW_TAG_base_type)
|
||||
+ .byte 0x4 # DW_AT_byte_size
|
||||
+ .byte 0x5 # DW_AT_encoding
|
||||
+ .ascii "int\0" # DW_AT_name
|
||||
+ .uleb128 0x2 # (DIE (0x3f) DW_TAG_base_type)
|
||||
+ .byte 0x1 # DW_AT_byte_size
|
||||
+ .byte 0x8 # DW_AT_encoding
|
||||
+ .long .LASF1 # DW_AT_name: "unsigned char"
|
||||
+ .uleb128 0x2 # (DIE (0x46) DW_TAG_base_type)
|
||||
+ .byte 0x2 # DW_AT_byte_size
|
||||
+ .byte 0x7 # DW_AT_encoding
|
||||
+ .long .LASF2 # DW_AT_name: "short unsigned int"
|
||||
+ .uleb128 0x2 # (DIE (0x4d) DW_TAG_base_type)
|
||||
+ .byte 0x4 # DW_AT_byte_size
|
||||
+ .byte 0x7 # DW_AT_encoding
|
||||
+ .long .LASF3 # DW_AT_name: "unsigned int"
|
||||
+ .uleb128 0x2 # (DIE (0x54) DW_TAG_base_type)
|
||||
+ .byte 0x1 # DW_AT_byte_size
|
||||
+ .byte 0x6 # DW_AT_encoding
|
||||
+ .long .LASF4 # DW_AT_name: "signed char"
|
||||
+ .uleb128 0x2 # (DIE (0x5b) DW_TAG_base_type)
|
||||
+ .byte 0x2 # DW_AT_byte_size
|
||||
+ .byte 0x5 # DW_AT_encoding
|
||||
+ .long .LASF5 # DW_AT_name: "short int"
|
||||
+ .uleb128 0x2 # (DIE (0x62) DW_TAG_base_type)
|
||||
+ .byte 0x8 # DW_AT_byte_size
|
||||
+ .byte 0x5 # DW_AT_encoding
|
||||
+ .long .LASF6 # DW_AT_name: "long int"
|
||||
+ .uleb128 0x2 # (DIE (0x69) DW_TAG_base_type)
|
||||
+ .byte 0x8 # DW_AT_byte_size
|
||||
+ .byte 0x7 # DW_AT_encoding
|
||||
+ .long .LASF7 # DW_AT_name: "sizetype"
|
||||
+ .uleb128 0x2 # (DIE (0x70) DW_TAG_base_type)
|
||||
+ .byte 0x1 # DW_AT_byte_size
|
||||
+ .byte 0x6 # DW_AT_encoding
|
||||
+ .long .LASF8 # DW_AT_name: "char"
|
||||
+ .uleb128 0x2 # (DIE (0x77) DW_TAG_base_type)
|
||||
+ .byte 0x8 # DW_AT_byte_size
|
||||
+ .byte 0x5 # DW_AT_encoding
|
||||
+ .long .LASF9 # DW_AT_name: "long long int"
|
||||
+ .uleb128 0x2 # (DIE (0x7e) DW_TAG_base_type)
|
||||
+ .byte 0x8 # DW_AT_byte_size
|
||||
+ .byte 0x7 # DW_AT_encoding
|
||||
+ .long .LASF10 # DW_AT_name: "long long unsigned int"
|
||||
+ .uleb128 0x4 # (DIE (0x85) DW_TAG_volatile_type)
|
||||
+ .long 0x38 # DW_AT_type
|
||||
+ .uleb128 0x5 # (DIE (0x8a) DW_TAG_subprogram)
|
||||
+ .long .LASF11 # DW_AT_name: "noret"
|
||||
+ .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-tailcall-noret.c)
|
||||
+ .byte 0x17 # DW_AT_decl_line
|
||||
+ .byte 0x1 # DW_AT_prototyped
|
||||
+ .quad .LFB9 # DW_AT_low_pc
|
||||
+ .quad .LFE9 # DW_AT_high_pc
|
||||
+ .long .LLST0 # DW_AT_frame_base
|
||||
+ .byte 0x1 # DW_AT_GNU_all_call_sites
|
||||
+ .long 0xc7 # DW_AT_sibling
|
||||
+ .uleb128 0x6 # (DIE (0xab) DW_TAG_formal_parameter)
|
||||
+ .ascii "x\0" # DW_AT_name
|
||||
+ .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-tailcall-noret.c)
|
||||
+ .byte 0x17 # DW_AT_decl_line
|
||||
+ .long 0x38 # DW_AT_type
|
||||
+ .long .LLST1 # DW_AT_location
|
||||
+ .uleb128 0x7 # (DIE (0xb8) DW_TAG_unspecified_parameters)
|
||||
+ .uleb128 0x8 # (DIE (0xb9) DW_TAG_GNU_call_site)
|
||||
+ .quad .LVL1 # DW_AT_low_pc
|
||||
+ .long 0x195 # DW_AT_abstract_origin
|
||||
+ .byte 0 # end of children of DIE 0x8a
|
||||
+ .uleb128 0x5 # (DIE (0xc7) DW_TAG_subprogram)
|
||||
+ .long .LASF12 # DW_AT_name: "mayret"
|
||||
+ .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-tailcall-noret.c)
|
||||
+ .byte 0x1d # DW_AT_decl_line
|
||||
+ .byte 0x1 # DW_AT_prototyped
|
||||
+ .quad .LFB10 # DW_AT_low_pc
|
||||
+ .quad .LFE10 # DW_AT_high_pc
|
||||
+ .long .LLST2 # DW_AT_frame_base
|
||||
+ .byte 0x1 # DW_AT_GNU_all_call_sites
|
||||
+ .long 0x103 # DW_AT_sibling
|
||||
+ .uleb128 0x6 # (DIE (0xe8) DW_TAG_formal_parameter)
|
||||
+ .ascii "x\0" # DW_AT_name
|
||||
+ .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-tailcall-noret.c)
|
||||
+ .byte 0x1d # DW_AT_decl_line
|
||||
+ .long 0x38 # DW_AT_type
|
||||
+ .long .LLST3 # DW_AT_location
|
||||
+ .uleb128 0x8 # (DIE (0xf5) DW_TAG_GNU_call_site)
|
||||
+ .quad .LVL3 # DW_AT_low_pc
|
||||
+ .long 0x8a # DW_AT_abstract_origin
|
||||
+ .byte 0 # end of children of DIE 0xc7
|
||||
+ .uleb128 0x9 # (DIE (0x103) DW_TAG_subprogram)
|
||||
+ .long .LASF13 # DW_AT_name: "tailcall"
|
||||
+ .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-tailcall-noret.c)
|
||||
+ .byte 0x24 # DW_AT_decl_line
|
||||
+ .byte 0x1 # DW_AT_prototyped
|
||||
+ .quad .LFB11 # DW_AT_low_pc
|
||||
+ .quad .LFE11 # DW_AT_high_pc
|
||||
+ .byte 0x2 # DW_AT_frame_base
|
||||
+ .byte 0x77 # DW_OP_breg7
|
||||
+ .sleb128 8
|
||||
+ .byte 0x1 # DW_AT_GNU_all_call_sites
|
||||
+ .long 0x147 # DW_AT_sibling
|
||||
+ .uleb128 0x6 # (DIE (0x123) DW_TAG_formal_parameter)
|
||||
+ .ascii "x\0" # DW_AT_name
|
||||
+ .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-tailcall-noret.c)
|
||||
+ .byte 0x24 # DW_AT_decl_line
|
||||
+ .long 0x38 # DW_AT_type
|
||||
+ .long .LLST4 # DW_AT_location
|
||||
+ .uleb128 0xa # (DIE (0x130) DW_TAG_GNU_call_site)
|
||||
+ .quad .LVL5 # DW_AT_low_pc
|
||||
+ .byte 0x1 # DW_AT_GNU_tail_call
|
||||
+ .long 0xc7 # DW_AT_abstract_origin
|
||||
+ .uleb128 0xb # (DIE (0x13e) DW_TAG_GNU_call_site_parameter)
|
||||
+ .byte 0x1 # DW_AT_location
|
||||
+ .byte 0x55 # DW_OP_reg5
|
||||
+ .byte 0x3 # DW_AT_GNU_call_site_value
|
||||
+ .byte 0xf3 # DW_OP_GNU_entry_value
|
||||
+ .uleb128 0x1
|
||||
+ .byte 0x55 # DW_OP_reg5
|
||||
+ .byte 0 # end of children of DIE 0x130
|
||||
+ .byte 0 # end of children of DIE 0x103
|
||||
+ .uleb128 0xc # (DIE (0x147) DW_TAG_subprogram)
|
||||
+ .byte 0x1 # DW_AT_external
|
||||
+ .long .LASF17 # DW_AT_name: "main"
|
||||
+ .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-tailcall-noret.c)
|
||||
+ .byte 0x2a # DW_AT_decl_line
|
||||
+ .byte 0x1 # DW_AT_prototyped
|
||||
+ .long 0x38 # DW_AT_type
|
||||
+ .quad .LFB12 # DW_AT_low_pc
|
||||
+ .quad .LFE12 # DW_AT_high_pc
|
||||
+ .long .LLST5 # DW_AT_frame_base
|
||||
+ .byte 0x1 # DW_AT_GNU_all_call_sites
|
||||
+ .long 0x181 # DW_AT_sibling
|
||||
+ .uleb128 0xd # (DIE (0x16d) DW_TAG_GNU_call_site)
|
||||
+ .quad .LVL6 # DW_AT_low_pc
|
||||
+ .long 0x103 # DW_AT_abstract_origin
|
||||
+ .uleb128 0xb # (DIE (0x17a) DW_TAG_GNU_call_site_parameter)
|
||||
+ .byte 0x1 # DW_AT_location
|
||||
+ .byte 0x55 # DW_OP_reg5
|
||||
+ .byte 0x1 # DW_AT_GNU_call_site_value
|
||||
+ .byte 0x31 # DW_OP_lit1
|
||||
+ .byte 0 # end of children of DIE 0x16d
|
||||
+ .byte 0 # end of children of DIE 0x147
|
||||
+ .uleb128 0xe # (DIE (0x181) DW_TAG_variable)
|
||||
+ .ascii "v\0" # DW_AT_name
|
||||
+ .byte 0x1 # DW_AT_decl_file (gdb.arch/amd64-tailcall-noret.c)
|
||||
+ .byte 0x14 # DW_AT_decl_line
|
||||
+ .long 0x85 # DW_AT_type
|
||||
+ .byte 0x1 # DW_AT_external
|
||||
+ .byte 0x9 # DW_AT_location
|
||||
+ .byte 0x3 # DW_OP_addr
|
||||
+ .quad v
|
||||
+ .uleb128 0xf # (DIE (0x195) DW_TAG_subprogram)
|
||||
+ .byte 0x1 # DW_AT_external
|
||||
+ .long .LASF18 # DW_AT_name: "abort"
|
||||
+ .byte 0x2 # DW_AT_decl_file (/usr/include/stdlib.h)
|
||||
+ .value 0x202 # DW_AT_decl_line
|
||||
+ .byte 0x1 # DW_AT_prototyped
|
||||
+ .byte 0x1 # DW_AT_declaration
|
||||
+ .byte 0 # end of children of DIE 0xb
|
||||
+ .section .debug_abbrev,"",@progbits
|
||||
+.Ldebug_abbrev0:
|
||||
+ .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 0x55 # (DW_AT_ranges)
|
||||
+ .uleb128 0x6 # (DW_FORM_data4)
|
||||
+ .uleb128 0x11 # (DW_AT_low_pc)
|
||||
+ .uleb128 0x1 # (DW_FORM_addr)
|
||||
+ .uleb128 0x52 # (DW_AT_entry_pc)
|
||||
+ .uleb128 0x1 # (DW_FORM_addr)
|
||||
+ .uleb128 0x10 # (DW_AT_stmt_list)
|
||||
+ .uleb128 0x6 # (DW_FORM_data4)
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0x2 # (abbrev code)
|
||||
+ .uleb128 0x24 # (TAG: DW_TAG_base_type)
|
||||
+ .byte 0 # 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 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0x3 # (abbrev code)
|
||||
+ .uleb128 0x24 # (TAG: DW_TAG_base_type)
|
||||
+ .byte 0 # 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 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0x4 # (abbrev code)
|
||||
+ .uleb128 0x35 # (TAG: DW_TAG_volatile_type)
|
||||
+ .byte 0 # DW_children_no
|
||||
+ .uleb128 0x49 # (DW_AT_type)
|
||||
+ .uleb128 0x13 # (DW_FORM_ref4)
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0x5 # (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 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 0x6 # (DW_FORM_data4)
|
||||
+ .uleb128 0x2117 # (DW_AT_GNU_all_call_sites)
|
||||
+ .uleb128 0xc # (DW_FORM_flag)
|
||||
+ .uleb128 0x1 # (DW_AT_sibling)
|
||||
+ .uleb128 0x13 # (DW_FORM_ref4)
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0x6 # (abbrev code)
|
||||
+ .uleb128 0x5 # (TAG: DW_TAG_formal_parameter)
|
||||
+ .byte 0 # 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 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0x7 # (abbrev code)
|
||||
+ .uleb128 0x18 # (TAG: DW_TAG_unspecified_parameters)
|
||||
+ .byte 0 # DW_children_no
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0x8 # (abbrev code)
|
||||
+ .uleb128 0x4109 # (TAG: DW_TAG_GNU_call_site)
|
||||
+ .byte 0 # DW_children_no
|
||||
+ .uleb128 0x11 # (DW_AT_low_pc)
|
||||
+ .uleb128 0x1 # (DW_FORM_addr)
|
||||
+ .uleb128 0x31 # (DW_AT_abstract_origin)
|
||||
+ .uleb128 0x13 # (DW_FORM_ref4)
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0x9 # (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 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 0x2117 # (DW_AT_GNU_all_call_sites)
|
||||
+ .uleb128 0xc # (DW_FORM_flag)
|
||||
+ .uleb128 0x1 # (DW_AT_sibling)
|
||||
+ .uleb128 0x13 # (DW_FORM_ref4)
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0xa # (abbrev code)
|
||||
+ .uleb128 0x4109 # (TAG: DW_TAG_GNU_call_site)
|
||||
+ .byte 0x1 # DW_children_yes
|
||||
+ .uleb128 0x11 # (DW_AT_low_pc)
|
||||
+ .uleb128 0x1 # (DW_FORM_addr)
|
||||
+ .uleb128 0x2115 # (DW_AT_GNU_tail_call)
|
||||
+ .uleb128 0xc # (DW_FORM_flag)
|
||||
+ .uleb128 0x31 # (DW_AT_abstract_origin)
|
||||
+ .uleb128 0x13 # (DW_FORM_ref4)
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0xb # (abbrev code)
|
||||
+ .uleb128 0x410a # (TAG: DW_TAG_GNU_call_site_parameter)
|
||||
+ .byte 0 # DW_children_no
|
||||
+ .uleb128 0x2 # (DW_AT_location)
|
||||
+ .uleb128 0xa # (DW_FORM_block1)
|
||||
+ .uleb128 0x2111 # (DW_AT_GNU_call_site_value)
|
||||
+ .uleb128 0xa # (DW_FORM_block1)
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0xc # (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 0x6 # (DW_FORM_data4)
|
||||
+ .uleb128 0x2117 # (DW_AT_GNU_all_call_sites)
|
||||
+ .uleb128 0xc # (DW_FORM_flag)
|
||||
+ .uleb128 0x1 # (DW_AT_sibling)
|
||||
+ .uleb128 0x13 # (DW_FORM_ref4)
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0xd # (abbrev code)
|
||||
+ .uleb128 0x4109 # (TAG: DW_TAG_GNU_call_site)
|
||||
+ .byte 0x1 # DW_children_yes
|
||||
+ .uleb128 0x11 # (DW_AT_low_pc)
|
||||
+ .uleb128 0x1 # (DW_FORM_addr)
|
||||
+ .uleb128 0x31 # (DW_AT_abstract_origin)
|
||||
+ .uleb128 0x13 # (DW_FORM_ref4)
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0xe # (abbrev code)
|
||||
+ .uleb128 0x34 # (TAG: DW_TAG_variable)
|
||||
+ .byte 0 # 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 0x3f # (DW_AT_external)
|
||||
+ .uleb128 0xc # (DW_FORM_flag)
|
||||
+ .uleb128 0x2 # (DW_AT_location)
|
||||
+ .uleb128 0xa # (DW_FORM_block1)
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .uleb128 0xf # (abbrev code)
|
||||
+ .uleb128 0x2e # (TAG: DW_TAG_subprogram)
|
||||
+ .byte 0 # DW_children_no
|
||||
+ .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 0x5 # (DW_FORM_data2)
|
||||
+ .uleb128 0x27 # (DW_AT_prototyped)
|
||||
+ .uleb128 0xc # (DW_FORM_flag)
|
||||
+ .uleb128 0x3c # (DW_AT_declaration)
|
||||
+ .uleb128 0xc # (DW_FORM_flag)
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .byte 0
|
||||
+ .section .debug_loc,"",@progbits
|
||||
+.Ldebug_loc0:
|
||||
+.LLST0:
|
||||
+ .quad .LFB9 # Location list begin address (*.LLST0)
|
||||
+ .quad .LCFI0 # Location list end address (*.LLST0)
|
||||
+ .value 0x2 # Location expression size
|
||||
+ .byte 0x77 # DW_OP_breg7
|
||||
+ .sleb128 8
|
||||
+ .quad .LCFI0 # Location list begin address (*.LLST0)
|
||||
+ .quad .LFE9 # Location list end address (*.LLST0)
|
||||
+ .value 0x2 # Location expression size
|
||||
+ .byte 0x77 # DW_OP_breg7
|
||||
+ .sleb128 16
|
||||
+ .quad 0 # Location list terminator begin (*.LLST0)
|
||||
+ .quad 0 # Location list terminator end (*.LLST0)
|
||||
+.LLST1:
|
||||
+ .quad .LVL0 # Location list begin address (*.LLST1)
|
||||
+ .quad .LVL1-1 # Location list end address (*.LLST1)
|
||||
+ .value 0x1 # Location expression size
|
||||
+ .byte 0x55 # DW_OP_reg5
|
||||
+ .quad .LVL1-1 # Location list begin address (*.LLST1)
|
||||
+ .quad .LFE9 # Location list end address (*.LLST1)
|
||||
+ .value 0x4 # Location expression size
|
||||
+ .byte 0xf3 # DW_OP_GNU_entry_value
|
||||
+ .uleb128 0x1
|
||||
+ .byte 0x55 # DW_OP_reg5
|
||||
+ .byte 0x9f # DW_OP_stack_value
|
||||
+ .quad 0 # Location list terminator begin (*.LLST1)
|
||||
+ .quad 0 # Location list terminator end (*.LLST1)
|
||||
+.LLST2:
|
||||
+ .quad .LFB10 # Location list begin address (*.LLST2)
|
||||
+ .quad .LCFI1 # Location list end address (*.LLST2)
|
||||
+ .value 0x2 # Location expression size
|
||||
+ .byte 0x77 # DW_OP_breg7
|
||||
+ .sleb128 8
|
||||
+ .quad .LCFI1 # Location list begin address (*.LLST2)
|
||||
+ .quad .LFE10 # Location list end address (*.LLST2)
|
||||
+ .value 0x2 # Location expression size
|
||||
+ .byte 0x77 # DW_OP_breg7
|
||||
+ .sleb128 16
|
||||
+ .quad 0 # Location list terminator begin (*.LLST2)
|
||||
+ .quad 0 # Location list terminator end (*.LLST2)
|
||||
+.LLST3:
|
||||
+ .quad .LVL2 # Location list begin address (*.LLST3)
|
||||
+ .quad .LVL3-1 # Location list end address (*.LLST3)
|
||||
+ .value 0x1 # Location expression size
|
||||
+ .byte 0x55 # DW_OP_reg5
|
||||
+ .quad .LVL3-1 # Location list begin address (*.LLST3)
|
||||
+ .quad .LFE10 # Location list end address (*.LLST3)
|
||||
+ .value 0x4 # Location expression size
|
||||
+ .byte 0xf3 # DW_OP_GNU_entry_value
|
||||
+ .uleb128 0x1
|
||||
+ .byte 0x55 # DW_OP_reg5
|
||||
+ .byte 0x9f # DW_OP_stack_value
|
||||
+ .quad 0 # Location list terminator begin (*.LLST3)
|
||||
+ .quad 0 # Location list terminator end (*.LLST3)
|
||||
+.LLST4:
|
||||
+ .quad .LVL4 # Location list begin address (*.LLST4)
|
||||
+ .quad .LVL5-1 # Location list end address (*.LLST4)
|
||||
+ .value 0x1 # Location expression size
|
||||
+ .byte 0x55 # DW_OP_reg5
|
||||
+ .quad .LVL5-1 # Location list begin address (*.LLST4)
|
||||
+ .quad .LFE11 # Location list end address (*.LLST4)
|
||||
+ .value 0x4 # Location expression size
|
||||
+ .byte 0xf3 # DW_OP_GNU_entry_value
|
||||
+ .uleb128 0x1
|
||||
+ .byte 0x55 # DW_OP_reg5
|
||||
+ .byte 0x9f # DW_OP_stack_value
|
||||
+ .quad 0 # Location list terminator begin (*.LLST4)
|
||||
+ .quad 0 # Location list terminator end (*.LLST4)
|
||||
+.LLST5:
|
||||
+ .quad .LFB12 # Location list begin address (*.LLST5)
|
||||
+ .quad .LCFI2 # Location list end address (*.LLST5)
|
||||
+ .value 0x2 # Location expression size
|
||||
+ .byte 0x77 # DW_OP_breg7
|
||||
+ .sleb128 8
|
||||
+ .quad .LCFI2 # Location list begin address (*.LLST5)
|
||||
+ .quad .LCFI3 # Location list end address (*.LLST5)
|
||||
+ .value 0x2 # Location expression size
|
||||
+ .byte 0x77 # DW_OP_breg7
|
||||
+ .sleb128 16
|
||||
+ .quad .LCFI3 # Location list begin address (*.LLST5)
|
||||
+ .quad .LFE12 # Location list end address (*.LLST5)
|
||||
+ .value 0x2 # Location expression size
|
||||
+ .byte 0x77 # DW_OP_breg7
|
||||
+ .sleb128 8
|
||||
+ .quad 0 # Location list terminator begin (*.LLST5)
|
||||
+ .quad 0 # Location list terminator end (*.LLST5)
|
||||
+ .section .debug_aranges,"",@progbits
|
||||
+ .long 0x4c # Length of Address Ranges Info
|
||||
+ .value 0x2 # DWARF Version
|
||||
+ .long .Ldebug_info0 # Offset of Compilation Unit Info
|
||||
+ .byte 0x8 # Size of Address
|
||||
+ .byte 0 # Size of Segment Descriptor
|
||||
+ .value 0 # Pad to 16 byte boundary
|
||||
+ .value 0
|
||||
+ .quad .Ltext0 # Address
|
||||
+ .quad .Letext0-.Ltext0 # Length
|
||||
+ .quad .LFB9 # Address
|
||||
+ .quad .LFE9-.LFB9 # Length
|
||||
+ .quad .LFB12 # Address
|
||||
+ .quad .LFE12-.LFB12 # Length
|
||||
+ .quad 0
|
||||
+ .quad 0
|
||||
+ .section .debug_ranges,"",@progbits
|
||||
+.Ldebug_ranges0:
|
||||
+ .quad .Ltext0 # Offset 0
|
||||
+ .quad .Letext0
|
||||
+ .quad .LFB9 # Offset 0x10
|
||||
+ .quad .LFE9
|
||||
+ .quad .LFB12 # Offset 0x20
|
||||
+ .quad .LFE12
|
||||
+ .quad 0
|
||||
+ .quad 0
|
||||
+ .section .debug_line,"",@progbits
|
||||
+.Ldebug_line0:
|
||||
+ .section .debug_str,"MS",@progbits,1
|
||||
+.LASF9:
|
||||
+ .string "long long int"
|
||||
+.LASF14:
|
||||
+ .string "GNU C 4.7.3 20130221 (prerelease)"
|
||||
+.LASF3:
|
||||
+ .string "unsigned int"
|
||||
+.LASF17:
|
||||
+ .string "main"
|
||||
+.LASF0:
|
||||
+ .string "long unsigned int"
|
||||
+.LASF10:
|
||||
+ .string "long long unsigned int"
|
||||
+.LASF16:
|
||||
+ .string ""
|
||||
+.LASF13:
|
||||
+ .string "tailcall"
|
||||
+.LASF1:
|
||||
+ .string "unsigned char"
|
||||
+.LASF8:
|
||||
+ .string "char"
|
||||
+.LASF6:
|
||||
+ .string "long int"
|
||||
+.LASF11:
|
||||
+ .string "noret"
|
||||
+.LASF2:
|
||||
+ .string "short unsigned int"
|
||||
+.LASF4:
|
||||
+ .string "signed char"
|
||||
+.LASF12:
|
||||
+ .string "mayret"
|
||||
+.LASF18:
|
||||
+ .string "abort"
|
||||
+.LASF5:
|
||||
+ .string "short int"
|
||||
+.LASF7:
|
||||
+ .string "sizetype"
|
||||
+.LASF15:
|
||||
+ .string "gdb.arch/amd64-tailcall-noret.c"
|
||||
+ .ident "GCC: (GNU) 4.7.3 20130221 (prerelease)"
|
||||
+ .section .note.GNU-stack,"",@progbits
|
||||
diff --git a/gdb/testsuite/gdb.arch/amd64-tailcall-noret.c b/gdb/testsuite/gdb.arch/amd64-tailcall-noret.c
|
||||
new file mode 100644
|
||||
index 0000000..6a84c76
|
||||
--- /dev/null
|
||||
+++ b/gdb/testsuite/gdb.arch/amd64-tailcall-noret.c
|
||||
@@ -0,0 +1,46 @@
|
||||
+/* This testcase is part of GDB, the GNU debugger.
|
||||
+
|
||||
+ Copyright 2013 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/>. */
|
||||
+
|
||||
+#include <stdlib.h>
|
||||
+
|
||||
+volatile int v = 1;
|
||||
+
|
||||
+static __attribute__ ((noinline, noclone, noreturn)) void
|
||||
+noret (int x, ...)
|
||||
+{
|
||||
+ abort ();
|
||||
+}
|
||||
+
|
||||
+static __attribute__ ((noinline, noclone)) void
|
||||
+mayret (int x)
|
||||
+{
|
||||
+ if (v)
|
||||
+ noret (x);
|
||||
+}
|
||||
+
|
||||
+static __attribute__ ((noinline, noclone)) void
|
||||
+tailcall (int x)
|
||||
+{
|
||||
+ mayret (x);
|
||||
+}
|
||||
+
|
||||
+int
|
||||
+main (void)
|
||||
+{
|
||||
+ tailcall (1);
|
||||
+ return 0;
|
||||
+}
|
||||
diff --git a/gdb/testsuite/gdb.arch/amd64-tailcall-noret.exp b/gdb/testsuite/gdb.arch/amd64-tailcall-noret.exp
|
||||
new file mode 100644
|
||||
index 0000000..cd15596
|
||||
--- /dev/null
|
||||
+++ b/gdb/testsuite/gdb.arch/amd64-tailcall-noret.exp
|
||||
@@ -0,0 +1,36 @@
|
||||
+# Copyright (C) 2012-2013 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/>.
|
||||
+
|
||||
+set opts {}
|
||||
+standard_testfile .S
|
||||
+
|
||||
+if [info exists COMPILE] {
|
||||
+ # make check RUNTESTFLAGS="gdb.arch/amd64-tailcall-noret.exp COMPILE=1"
|
||||
+ standard_testfile
|
||||
+ lappend opts debug optimize=-O2
|
||||
+} elseif { ![istarget x86_64-*-* ] || ![is_lp64_target] } {
|
||||
+ verbose "Skipping ${testfile}."
|
||||
+ return
|
||||
+}
|
||||
+
|
||||
+if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile} $opts] } {
|
||||
+ return -1
|
||||
+}
|
||||
+
|
||||
+if ![runto noret] {
|
||||
+ return -1
|
||||
+}
|
||||
+
|
||||
+gdb_test "bt" "#0 +noret \\(x=1\\) at \[^\r\n\]*\r\n#1 +0x\[0-9a-f\]+ in mayret \\(x=x@entry=1\\) at \[^\r\n\]*\r\n#2 +0x\[0-9a-f\]+ in tailcall \\(x=x@entry=1\\) at \[^\r\n\]*\r\n#3 +0x\[0-9a-f\]+ in main \\(\\) at .*"
|
||||
|
@ -137,10 +137,10 @@ Content-Type: text/x-patch
|
||||
Content-Transfer-Encoding: 7bit
|
||||
Content-Disposition: attachment; filename=bitpos-tdep.patch
|
||||
|
||||
Index: gdb-7.5.50.20130118/gdb/alpha-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/alpha-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/alpha-tdep.c 2013-01-18 23:36:59.954290362 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/alpha-tdep.c 2013-01-18 23:37:12.465307566 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/alpha-tdep.c 2013-03-10 16:44:34.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/alpha-tdep.c 2013-03-10 16:44:42.111599838 +0100
|
||||
@@ -299,18 +299,18 @@ alpha_push_dummy_call (struct gdbarch *g
|
||||
{
|
||||
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
|
||||
@ -184,10 +184,10 @@ Index: gdb-7.5.50.20130118/gdb/alpha-tdep.c
|
||||
memcpy (arg_reg_buffer + offset, contents, tlen);
|
||||
offset += tlen;
|
||||
contents += tlen;
|
||||
Index: gdb-7.5.50.20130118/gdb/amd64-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/amd64-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/amd64-tdep.c 2013-01-18 23:36:59.955290365 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/amd64-tdep.c 2013-01-18 23:37:12.466307569 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/amd64-tdep.c 2013-03-10 16:16:23.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/amd64-tdep.c 2013-03-10 16:44:42.112599838 +0100
|
||||
@@ -616,7 +616,7 @@ amd64_return_value (struct gdbarch *gdba
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||
@ -217,10 +217,10 @@ Index: gdb-7.5.50.20130118/gdb/amd64-tdep.c
|
||||
enum amd64_reg_class class[2];
|
||||
int needed_integer_regs = 0;
|
||||
int needed_sse_regs = 0;
|
||||
Index: gdb-7.5.50.20130118/gdb/amd64-windows-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/amd64-windows-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/amd64-windows-tdep.c 2013-01-18 23:36:59.956290369 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/amd64-windows-tdep.c 2013-01-18 23:37:12.466307569 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/amd64-windows-tdep.c 2013-01-01 07:32:37.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/amd64-windows-tdep.c 2013-03-10 16:44:42.112599838 +0100
|
||||
@@ -79,7 +79,7 @@ amd64_windows_return_value (struct gdbar
|
||||
struct type *type, struct regcache *regcache,
|
||||
gdb_byte *readbuf, const gdb_byte *writebuf)
|
||||
@ -230,10 +230,10 @@ Index: gdb-7.5.50.20130118/gdb/amd64-windows-tdep.c
|
||||
int regnum = -1;
|
||||
|
||||
/* See if our value is returned through a register. If it is, then
|
||||
Index: gdb-7.5.50.20130118/gdb/arm-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/arm-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/arm-tdep.c 2013-01-18 23:36:59.961290378 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/arm-tdep.c 2013-01-18 23:37:12.469307573 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/arm-tdep.c 2013-03-01 16:38:23.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/arm-tdep.c 2013-03-10 16:44:42.115599840 +0100
|
||||
@@ -3496,7 +3496,7 @@ arm_vfp_cprc_reg_char (enum arm_vfp_cprc
|
||||
array). Vectors and complex types are not currently supported,
|
||||
matching the generic AAPCS support. */
|
||||
@ -308,10 +308,10 @@ Index: gdb-7.5.50.20130118/gdb/arm-tdep.c
|
||||
struct type *arg_type;
|
||||
struct type *target_type;
|
||||
enum type_code typecode;
|
||||
Index: gdb-7.5.50.20130118/gdb/avr-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/avr-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/avr-tdep.c 2013-01-18 23:36:59.963290385 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/avr-tdep.c 2013-01-18 23:37:12.470307574 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/avr-tdep.c 2013-03-01 16:38:24.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/avr-tdep.c 2013-03-10 16:44:42.116599840 +0100
|
||||
@@ -1170,13 +1170,14 @@ avr_dummy_id (struct gdbarch *gdbarch, s
|
||||
|
||||
struct stack_item
|
||||
@ -345,12 +345,12 @@ Index: gdb-7.5.50.20130118/gdb/avr-tdep.c
|
||||
|
||||
/* Calculate the potential last register needed. */
|
||||
last_regnum = regnum - (len + (len & 1));
|
||||
Index: gdb-7.5.50.20130118/gdb/bfin-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/bfin-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/bfin-tdep.c 2013-01-18 23:36:59.963290385 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/bfin-tdep.c 2013-01-18 23:37:12.470307574 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/bfin-tdep.c 2013-03-01 16:38:24.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/bfin-tdep.c 2013-03-10 16:46:27.992669964 +0100
|
||||
@@ -506,7 +506,7 @@ bfin_push_dummy_call (struct gdbarch *gd
|
||||
char buf[4];
|
||||
gdb_byte buf[4];
|
||||
int i;
|
||||
long reg_r0, reg_r1, reg_r2;
|
||||
- int total_len = 0;
|
||||
@ -367,10 +367,10 @@ Index: gdb-7.5.50.20130118/gdb/bfin-tdep.c
|
||||
|
||||
sp -= container_len;
|
||||
write_memory (sp, value_contents_writeable (args[i]), container_len);
|
||||
Index: gdb-7.5.50.20130118/gdb/cris-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/cris-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/cris-tdep.c 2013-01-18 23:36:59.965290390 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/cris-tdep.c 2013-01-18 23:37:12.471307578 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/cris-tdep.c 2013-03-01 16:38:24.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/cris-tdep.c 2013-03-10 16:44:42.117599841 +0100
|
||||
@@ -670,13 +670,13 @@ static CORE_ADDR cris_unwind_sp (struct
|
||||
|
||||
struct stack_item
|
||||
@ -405,10 +405,10 @@ Index: gdb-7.5.50.20130118/gdb/cris-tdep.c
|
||||
|
||||
/* How may registers worth of storage do we need for this argument? */
|
||||
reg_demand = (len / 4) + (len % 4 != 0 ? 1 : 0);
|
||||
Index: gdb-7.5.50.20130118/gdb/h8300-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/h8300-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/h8300-tdep.c 2013-01-18 23:36:59.966290392 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/h8300-tdep.c 2013-01-18 23:37:12.472307583 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/h8300-tdep.c 2013-01-01 07:32:44.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/h8300-tdep.c 2013-03-10 16:44:42.118599841 +0100
|
||||
@@ -640,7 +640,7 @@ h8300_push_dummy_call (struct gdbarch *g
|
||||
int struct_return, CORE_ADDR struct_addr)
|
||||
{
|
||||
@ -441,10 +441,10 @@ Index: gdb-7.5.50.20130118/gdb/h8300-tdep.c
|
||||
|
||||
for (offset = 0; offset < padded_len; offset += wordsize)
|
||||
{
|
||||
Index: gdb-7.5.50.20130118/gdb/hppa-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/hppa-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/hppa-tdep.c 2013-01-18 23:36:59.966290392 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/hppa-tdep.c 2013-01-18 23:37:44.228351370 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/hppa-tdep.c 2013-03-01 16:38:24.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/hppa-tdep.c 2013-03-10 16:44:42.119599842 +0100
|
||||
@@ -961,7 +961,7 @@ hppa64_push_dummy_call (struct gdbarch *
|
||||
{
|
||||
struct value *arg = args[i];
|
||||
@ -463,10 +463,10 @@ Index: gdb-7.5.50.20130118/gdb/hppa-tdep.c
|
||||
int regnum, offset;
|
||||
|
||||
if (len > 16)
|
||||
Index: gdb-7.5.50.20130118/gdb/i386-darwin-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/i386-darwin-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/i386-darwin-tdep.c 2013-01-18 23:36:59.967290394 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/i386-darwin-tdep.c 2013-01-18 23:37:12.473307586 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/i386-darwin-tdep.c 2013-02-12 20:03:54.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/i386-darwin-tdep.c 2013-03-10 16:44:42.119599842 +0100
|
||||
@@ -166,7 +166,7 @@ i386_darwin_push_dummy_call (struct gdba
|
||||
|
||||
for (write_pass = 0; write_pass < 2; write_pass++)
|
||||
@ -476,10 +476,10 @@ Index: gdb-7.5.50.20130118/gdb/i386-darwin-tdep.c
|
||||
int num_m128 = 0;
|
||||
|
||||
if (struct_return)
|
||||
Index: gdb-7.5.50.20130118/gdb/i386-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/i386-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/i386-tdep.c 2013-01-18 23:36:59.969290398 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/i386-tdep.c 2013-01-18 23:37:12.475307589 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/i386-tdep.c 2013-03-10 16:16:23.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/i386-tdep.c 2013-03-10 16:44:42.120599842 +0100
|
||||
@@ -2407,7 +2407,7 @@ i386_push_dummy_call (struct gdbarch *gd
|
||||
gdb_byte buf[4];
|
||||
int i;
|
||||
@ -543,10 +543,10 @@ Index: gdb-7.5.50.20130118/gdb/i386-tdep.c
|
||||
|
||||
if (i386_fp_regnum_p (get_frame_arch (frame), regnum))
|
||||
{
|
||||
Index: gdb-7.5.50.20130118/gdb/ia64-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/ia64-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/ia64-tdep.c 2013-01-18 23:36:59.970290400 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/ia64-tdep.c 2013-01-18 23:37:12.476307589 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/ia64-tdep.c 2013-03-10 16:16:23.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/ia64-tdep.c 2013-03-10 16:44:42.121599843 +0100
|
||||
@@ -3974,8 +3974,10 @@ ia64_push_dummy_call (struct gdbarch *gd
|
||||
int argno;
|
||||
struct value *arg;
|
||||
@ -560,10 +560,10 @@ Index: gdb-7.5.50.20130118/gdb/ia64-tdep.c
|
||||
int floatreg;
|
||||
ULONGEST bsp;
|
||||
CORE_ADDR funcdescaddr, pc, global_pointer;
|
||||
Index: gdb-7.5.50.20130118/gdb/iq2000-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/iq2000-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/iq2000-tdep.c 2013-01-18 23:36:59.970290400 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/iq2000-tdep.c 2013-01-18 23:37:12.476307589 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/iq2000-tdep.c 2013-03-01 16:38:25.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/iq2000-tdep.c 2013-03-10 16:44:42.121599843 +0100
|
||||
@@ -654,8 +654,9 @@ iq2000_push_dummy_call (struct gdbarch *
|
||||
const bfd_byte *val;
|
||||
bfd_byte buf[4];
|
||||
@ -576,10 +576,10 @@ Index: gdb-7.5.50.20130118/gdb/iq2000-tdep.c
|
||||
/* Used to copy struct arguments into the stack. */
|
||||
CORE_ADDR struct_ptr;
|
||||
|
||||
Index: gdb-7.5.50.20130118/gdb/m32r-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/m32r-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/m32r-tdep.c 2013-01-18 23:36:59.971290402 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/m32r-tdep.c 2013-01-18 23:37:12.476307589 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/m32r-tdep.c 2013-01-01 07:32:46.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/m32r-tdep.c 2013-03-10 16:44:42.121599843 +0100
|
||||
@@ -695,7 +695,7 @@ m32r_push_dummy_call (struct gdbarch *gd
|
||||
CORE_ADDR regval;
|
||||
gdb_byte *val;
|
||||
@ -589,10 +589,10 @@ Index: gdb-7.5.50.20130118/gdb/m32r-tdep.c
|
||||
|
||||
/* First force sp to a 4-byte alignment. */
|
||||
sp = sp & ~3;
|
||||
Index: gdb-7.5.50.20130118/gdb/m68k-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/m68k-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/m68k-tdep.c 2013-01-18 23:36:59.971290402 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/m68k-tdep.c 2013-01-18 23:39:06.474459041 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/m68k-tdep.c 2013-01-01 07:32:46.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/m68k-tdep.c 2013-03-10 16:44:42.121599843 +0100
|
||||
@@ -384,7 +384,7 @@ m68k_reg_struct_return_p (struct gdbarch
|
||||
{
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||
@ -615,10 +615,10 @@ Index: gdb-7.5.50.20130118/gdb/m68k-tdep.c
|
||||
|
||||
/* Non-scalars bigger than 4 bytes are left aligned, others are
|
||||
right aligned. */
|
||||
Index: gdb-7.5.50.20130118/gdb/m88k-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/m88k-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/m88k-tdep.c 2013-01-18 23:36:59.971290402 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/m88k-tdep.c 2013-01-18 23:37:12.477307590 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/m88k-tdep.c 2013-01-01 07:32:47.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/m88k-tdep.c 2013-03-10 16:44:42.121599843 +0100
|
||||
@@ -260,13 +260,13 @@ m88k_store_arguments (struct regcache *r
|
||||
{
|
||||
struct gdbarch *gdbarch = get_regcache_arch (regcache);
|
||||
@ -646,10 +646,10 @@ Index: gdb-7.5.50.20130118/gdb/m88k-tdep.c
|
||||
|
||||
if (m88k_in_register_p (type))
|
||||
{
|
||||
Index: gdb-7.5.50.20130118/gdb/mep-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/mep-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/mep-tdep.c 2013-01-18 23:36:59.972290404 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/mep-tdep.c 2013-01-18 23:37:12.477307590 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/mep-tdep.c 2013-03-01 16:38:25.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/mep-tdep.c 2013-03-10 16:44:42.122599843 +0100
|
||||
@@ -2279,7 +2279,7 @@ push_large_arguments (CORE_ADDR sp, int
|
||||
|
||||
for (i = 0; i < argc; i++)
|
||||
@ -659,10 +659,10 @@ Index: gdb-7.5.50.20130118/gdb/mep-tdep.c
|
||||
|
||||
if (arg_len > MEP_GPR_SIZE)
|
||||
{
|
||||
Index: gdb-7.5.50.20130118/gdb/mips-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/mips-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/mips-tdep.c 2013-01-18 23:36:59.975290414 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/mips-tdep.c 2013-01-18 23:37:12.479307599 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/mips-tdep.c 2013-02-24 13:54:04.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/mips-tdep.c 2013-03-10 16:44:42.123599844 +0100
|
||||
@@ -396,7 +396,7 @@ static void
|
||||
mips_xfer_register (struct gdbarch *gdbarch, struct regcache *regcache,
|
||||
int reg_num, int length,
|
||||
@ -683,7 +683,7 @@ Index: gdb-7.5.50.20130118/gdb/mips-tdep.c
|
||||
if (mips_debug && out != NULL)
|
||||
{
|
||||
int i;
|
||||
@@ -4345,13 +4345,13 @@ mips_eabi_push_dummy_call (struct gdbarc
|
||||
@@ -4346,13 +4346,13 @@ mips_eabi_push_dummy_call (struct gdbarc
|
||||
gdb_byte valbuf[MAX_REGISTER_SIZE];
|
||||
struct value *arg = args[argnum];
|
||||
struct type *arg_type = check_typedef (value_type (arg));
|
||||
@ -700,7 +700,7 @@ Index: gdb-7.5.50.20130118/gdb/mips-tdep.c
|
||||
|
||||
/* Function pointer arguments to mips16 code need to be made into
|
||||
mips16 pointers. */
|
||||
@@ -4636,7 +4636,7 @@ mips_eabi_return_value (struct gdbarch *
|
||||
@@ -4637,7 +4637,7 @@ mips_eabi_return_value (struct gdbarch *
|
||||
|
||||
static int
|
||||
mips_n32n64_fp_arg_chunk_p (struct gdbarch *gdbarch, struct type *arg_type,
|
||||
@ -709,7 +709,7 @@ Index: gdb-7.5.50.20130118/gdb/mips-tdep.c
|
||||
{
|
||||
int i;
|
||||
|
||||
@@ -4651,7 +4651,7 @@ mips_n32n64_fp_arg_chunk_p (struct gdbar
|
||||
@@ -4652,7 +4652,7 @@ mips_n32n64_fp_arg_chunk_p (struct gdbar
|
||||
|
||||
for (i = 0; i < TYPE_NFIELDS (arg_type); i++)
|
||||
{
|
||||
@ -718,7 +718,7 @@ Index: gdb-7.5.50.20130118/gdb/mips-tdep.c
|
||||
struct type *field_type;
|
||||
|
||||
/* We're only looking at normal fields. */
|
||||
@@ -4693,7 +4693,7 @@ mips_n32n64_push_dummy_call (struct gdba
|
||||
@@ -4694,7 +4694,7 @@ mips_n32n64_push_dummy_call (struct gdba
|
||||
int argreg;
|
||||
int float_argreg;
|
||||
int argnum;
|
||||
@ -727,7 +727,7 @@ Index: gdb-7.5.50.20130118/gdb/mips-tdep.c
|
||||
int stack_offset = 0;
|
||||
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
|
||||
CORE_ADDR func_addr = find_function_addr (function, NULL);
|
||||
@@ -5044,11 +5044,11 @@ mips_n32n64_return_value (struct gdbarch
|
||||
@@ -5045,11 +5045,11 @@ mips_n32n64_return_value (struct gdbarch
|
||||
: MIPS_V0_REGNUM);
|
||||
field < TYPE_NFIELDS (type); field++, regnum += 2)
|
||||
{
|
||||
@ -743,7 +743,7 @@ Index: gdb-7.5.50.20130118/gdb/mips-tdep.c
|
||||
if (TYPE_LENGTH (TYPE_FIELD_TYPE (type, field)) == 16)
|
||||
{
|
||||
/* A 16-byte long double field goes in two consecutive
|
||||
@@ -5090,8 +5090,8 @@ mips_n32n64_return_value (struct gdbarch
|
||||
@@ -5091,8 +5091,8 @@ mips_n32n64_return_value (struct gdbarch
|
||||
if (offset + xfer > TYPE_LENGTH (type))
|
||||
xfer = TYPE_LENGTH (type) - offset;
|
||||
if (mips_debug)
|
||||
@ -754,7 +754,7 @@ Index: gdb-7.5.50.20130118/gdb/mips-tdep.c
|
||||
mips_xfer_register (gdbarch, regcache,
|
||||
gdbarch_num_regs (gdbarch) + regnum,
|
||||
xfer, BFD_ENDIAN_UNKNOWN, readbuf, writebuf,
|
||||
@@ -5149,7 +5149,7 @@ mips_o32_push_dummy_call (struct gdbarch
|
||||
@@ -5150,7 +5150,7 @@ mips_o32_push_dummy_call (struct gdbarch
|
||||
int argreg;
|
||||
int float_argreg;
|
||||
int argnum;
|
||||
@ -763,7 +763,7 @@ Index: gdb-7.5.50.20130118/gdb/mips-tdep.c
|
||||
int stack_offset = 0;
|
||||
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
|
||||
CORE_ADDR func_addr = find_function_addr (function, NULL);
|
||||
@@ -5213,13 +5213,13 @@ mips_o32_push_dummy_call (struct gdbarch
|
||||
@@ -5214,13 +5214,13 @@ mips_o32_push_dummy_call (struct gdbarch
|
||||
const gdb_byte *val;
|
||||
struct value *arg = args[argnum];
|
||||
struct type *arg_type = check_typedef (value_type (arg));
|
||||
@ -780,7 +780,7 @@ Index: gdb-7.5.50.20130118/gdb/mips-tdep.c
|
||||
|
||||
val = value_contents (arg);
|
||||
|
||||
@@ -5677,8 +5677,8 @@ mips_o64_push_dummy_call (struct gdbarch
|
||||
@@ -5678,8 +5678,8 @@ mips_o64_push_dummy_call (struct gdbarch
|
||||
int argreg;
|
||||
int float_argreg;
|
||||
int argnum;
|
||||
@ -791,7 +791,7 @@ Index: gdb-7.5.50.20130118/gdb/mips-tdep.c
|
||||
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
|
||||
CORE_ADDR func_addr = find_function_addr (function, NULL);
|
||||
|
||||
@@ -5739,13 +5739,13 @@ mips_o64_push_dummy_call (struct gdbarch
|
||||
@@ -5740,13 +5740,13 @@ mips_o64_push_dummy_call (struct gdbarch
|
||||
gdb_byte valbuf[MAX_REGISTER_SIZE];
|
||||
struct value *arg = args[argnum];
|
||||
struct type *arg_type = check_typedef (value_type (arg));
|
||||
@ -808,10 +808,10 @@ Index: gdb-7.5.50.20130118/gdb/mips-tdep.c
|
||||
|
||||
val = value_contents (arg);
|
||||
|
||||
Index: gdb-7.5.50.20130118/gdb/mn10300-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/mn10300-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/mn10300-tdep.c 2013-01-18 23:36:59.976290416 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/mn10300-tdep.c 2013-01-18 23:37:12.479307599 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/mn10300-tdep.c 2013-03-01 16:38:25.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/mn10300-tdep.c 2013-03-10 16:44:42.123599844 +0100
|
||||
@@ -1228,7 +1228,7 @@ mn10300_push_dummy_call (struct gdbarch
|
||||
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
|
||||
const int push_size = register_size (gdbarch, E_PC_REGNUM);
|
||||
@ -821,10 +821,10 @@ Index: gdb-7.5.50.20130118/gdb/mn10300-tdep.c
|
||||
int stack_offset = 0;
|
||||
int argnum;
|
||||
char *val, valbuf[MAX_REGISTER_SIZE];
|
||||
Index: gdb-7.5.50.20130118/gdb/mt-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/mt-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/mt-tdep.c 2013-01-18 23:36:59.976290416 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/mt-tdep.c 2013-01-18 23:37:12.479307599 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/mt-tdep.c 2013-01-01 07:32:47.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/mt-tdep.c 2013-03-10 16:44:42.124599844 +0100
|
||||
@@ -783,9 +783,9 @@ mt_push_dummy_call (struct gdbarch *gdba
|
||||
gdb_byte buf[MT_MAX_STRUCT_SIZE];
|
||||
int argreg = MT_1ST_ARGREG;
|
||||
@ -837,10 +837,10 @@ Index: gdb-7.5.50.20130118/gdb/mt-tdep.c
|
||||
int i, j;
|
||||
|
||||
/* First handle however many args we can fit into MT_1ST_ARGREG thru
|
||||
Index: gdb-7.5.50.20130118/gdb/ppc-sysv-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/ppc-sysv-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/ppc-sysv-tdep.c 2013-01-18 23:36:59.977290417 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/ppc-sysv-tdep.c 2013-01-18 23:37:12.480307602 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/ppc-sysv-tdep.c 2013-01-23 21:03:18.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/ppc-sysv-tdep.c 2013-03-10 16:44:42.124599844 +0100
|
||||
@@ -68,7 +68,7 @@ ppc_sysv_abi_push_dummy_call (struct gdb
|
||||
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
|
||||
int opencl_abi = ppc_sysv_use_opencl_abi (value_type (function));
|
||||
@ -897,10 +897,10 @@ Index: gdb-7.5.50.20130118/gdb/ppc-sysv-tdep.c
|
||||
if (len < tdep->wordsize)
|
||||
write_memory (gparam + tdep->wordsize - len, val, len);
|
||||
else
|
||||
Index: gdb-7.5.50.20130118/gdb/rl78-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/rl78-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/rl78-tdep.c 2013-01-18 23:36:59.977290417 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/rl78-tdep.c 2013-01-18 23:37:12.480307602 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/rl78-tdep.c 2013-01-01 07:32:50.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/rl78-tdep.c 2013-03-10 16:44:42.124599844 +0100
|
||||
@@ -1019,8 +1019,8 @@ rl78_push_dummy_call (struct gdbarch *gd
|
||||
for (i = nargs - 1; i >= 0; i--)
|
||||
{
|
||||
@ -912,10 +912,10 @@ Index: gdb-7.5.50.20130118/gdb/rl78-tdep.c
|
||||
|
||||
sp -= container_len;
|
||||
write_memory (rl78_make_data_address (sp),
|
||||
Index: gdb-7.5.50.20130118/gdb/rs6000-aix-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/rs6000-aix-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/rs6000-aix-tdep.c 2013-01-18 23:36:59.978290418 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/rs6000-aix-tdep.c 2013-01-18 23:37:12.480307602 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/rs6000-aix-tdep.c 2013-01-01 07:32:50.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/rs6000-aix-tdep.c 2013-03-10 16:44:42.125599845 +0100
|
||||
@@ -198,9 +198,9 @@ rs6000_push_dummy_call (struct gdbarch *
|
||||
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
||||
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
|
||||
@ -937,10 +937,10 @@ Index: gdb-7.5.50.20130118/gdb/rs6000-aix-tdep.c
|
||||
|
||||
if (argbytes)
|
||||
{
|
||||
Index: gdb-7.5.50.20130118/gdb/s390-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/s390-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/s390-tdep.c 2013-01-18 23:36:59.979290420 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/s390-tdep.c 2013-01-18 23:37:12.480307602 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/s390-tdep.c 2013-01-01 07:32:50.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/s390-tdep.c 2013-03-10 16:44:42.125599845 +0100
|
||||
@@ -2482,7 +2482,7 @@ is_float_like (struct type *type)
|
||||
|
||||
|
||||
@ -959,10 +959,10 @@ Index: gdb-7.5.50.20130118/gdb/s390-tdep.c
|
||||
|
||||
if (s390_function_arg_pass_by_reference (type))
|
||||
{
|
||||
Index: gdb-7.5.50.20130118/gdb/score-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/score-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/score-tdep.c 2013-01-18 23:36:59.979290420 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/score-tdep.c 2013-01-18 23:37:12.481307604 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/score-tdep.c 2013-03-01 16:38:26.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/score-tdep.c 2013-03-10 16:44:42.125599845 +0100
|
||||
@@ -515,7 +515,7 @@ score_push_dummy_call (struct gdbarch *g
|
||||
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
|
||||
int argnum;
|
||||
@ -972,10 +972,10 @@ Index: gdb-7.5.50.20130118/gdb/score-tdep.c
|
||||
CORE_ADDR stack_offset = 0;
|
||||
CORE_ADDR addr = 0;
|
||||
|
||||
Index: gdb-7.5.50.20130118/gdb/sh-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/sh-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/sh-tdep.c 2013-01-18 23:36:59.980290423 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/sh-tdep.c 2013-01-18 23:37:12.481307604 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/sh-tdep.c 2013-01-01 07:32:50.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/sh-tdep.c 2013-03-10 16:44:42.126599845 +0100
|
||||
@@ -807,7 +807,7 @@ sh_skip_prologue (struct gdbarch *gdbarc
|
||||
static int
|
||||
sh_use_struct_convention (int renesas_abi, struct type *type)
|
||||
@ -1014,10 +1014,10 @@ Index: gdb-7.5.50.20130118/gdb/sh-tdep.c
|
||||
int pass_on_stack = 0;
|
||||
int last_reg_arg = INT_MAX;
|
||||
|
||||
Index: gdb-7.5.50.20130118/gdb/sh64-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/sh64-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/sh64-tdep.c 2013-01-18 23:36:59.980290423 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/sh64-tdep.c 2013-01-18 23:37:12.482307606 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/sh64-tdep.c 2013-03-01 16:38:26.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/sh64-tdep.c 2013-03-10 16:44:42.126599845 +0100
|
||||
@@ -1058,7 +1058,7 @@ sh64_push_dummy_call (struct gdbarch *gd
|
||||
CORE_ADDR struct_addr)
|
||||
{
|
||||
@ -1036,10 +1036,10 @@ Index: gdb-7.5.50.20130118/gdb/sh64-tdep.c
|
||||
int argreg_size;
|
||||
int fp_args[12];
|
||||
|
||||
Index: gdb-7.5.50.20130118/gdb/sparc-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/sparc-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/sparc-tdep.c 2013-01-18 23:36:59.981290427 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/sparc-tdep.c 2013-01-18 23:37:12.482307606 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/sparc-tdep.c 2013-03-10 16:44:33.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/sparc-tdep.c 2013-03-10 16:44:42.127599846 +0100
|
||||
@@ -471,7 +471,7 @@ sparc32_store_arguments (struct regcache
|
||||
for (i = 0; i < nargs; i++)
|
||||
{
|
||||
@ -1049,10 +1049,10 @@ Index: gdb-7.5.50.20130118/gdb/sparc-tdep.c
|
||||
|
||||
if (sparc_structure_or_union_p (type)
|
||||
|| (sparc_floating_p (type) && len == 16)
|
||||
Index: gdb-7.5.50.20130118/gdb/sparc64-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/sparc64-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/sparc64-tdep.c 2013-01-18 23:36:59.982290430 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/sparc64-tdep.c 2013-01-18 23:37:12.482307606 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/sparc64-tdep.c 2013-01-01 07:32:51.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/sparc64-tdep.c 2013-03-10 16:44:42.127599846 +0100
|
||||
@@ -639,7 +639,8 @@ sparc64_16_byte_align_p (struct type *ty
|
||||
|
||||
static void
|
||||
@ -1108,10 +1108,10 @@ Index: gdb-7.5.50.20130118/gdb/sparc64-tdep.c
|
||||
int regnum = -1;
|
||||
gdb_byte buf[16];
|
||||
|
||||
Index: gdb-7.5.50.20130118/gdb/spu-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/spu-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/spu-tdep.c 2013-01-18 23:36:59.982290430 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/spu-tdep.c 2013-01-18 23:37:12.483307607 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/spu-tdep.c 2013-01-01 07:32:51.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/spu-tdep.c 2013-03-10 16:44:42.127599846 +0100
|
||||
@@ -1373,7 +1373,7 @@ spu_push_dummy_call (struct gdbarch *gdb
|
||||
struct value *arg = args[i];
|
||||
struct type *type = check_typedef (value_type (arg));
|
||||
@ -1130,10 +1130,10 @@ Index: gdb-7.5.50.20130118/gdb/spu-tdep.c
|
||||
int preferred_slot;
|
||||
|
||||
if (spu_scalar_value_p (type))
|
||||
Index: gdb-7.5.50.20130118/gdb/tic6x-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/tic6x-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/tic6x-tdep.c 2013-01-18 23:36:59.983290432 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/tic6x-tdep.c 2013-01-18 23:39:27.770484516 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/tic6x-tdep.c 2013-03-01 16:38:27.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/tic6x-tdep.c 2013-03-10 16:44:42.128599846 +0100
|
||||
@@ -896,7 +896,7 @@ tic6x_push_dummy_call (struct gdbarch *g
|
||||
int argreg = 0;
|
||||
int argnum;
|
||||
@ -1171,24 +1171,24 @@ Index: gdb-7.5.50.20130118/gdb/tic6x-tdep.c
|
||||
|
||||
addr = sp + stack_offset;
|
||||
write_memory (addr, val, len);
|
||||
Index: gdb-7.5.50.20130118/gdb/tilegx-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/tilegx-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/tilegx-tdep.c 2013-01-18 23:36:59.983290432 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/tilegx-tdep.c 2013-01-18 23:37:12.483307607 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/tilegx-tdep.c 2013-03-02 02:34:40.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/tilegx-tdep.c 2013-03-10 16:45:31.857629100 +0100
|
||||
@@ -291,7 +291,7 @@ tilegx_push_dummy_call (struct gdbarch *
|
||||
CORE_ADDR stack_dest = sp;
|
||||
int argreg = TILEGX_R0_REGNUM;
|
||||
int i, j;
|
||||
- int typelen, slacklen, alignlen;
|
||||
+ LONGEST typelen, slacklen, alignlen;
|
||||
static const gdb_byte two_zero_words[8] = { 0 };
|
||||
static const gdb_byte four_zero_words[16] = { 0 };
|
||||
|
||||
/* If struct_return is 1, then the struct return address will
|
||||
Index: gdb-7.5.50.20130118/gdb/v850-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/v850-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/v850-tdep.c 2013-01-18 23:36:59.984290434 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/v850-tdep.c 2013-01-18 23:37:12.484307608 +0100
|
||||
@@ -808,7 +808,7 @@ v850_push_dummy_call (struct gdbarch *gd
|
||||
--- gdb-7.5.50.20130310.orig/gdb/v850-tdep.c 2013-03-02 19:26:30.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/v850-tdep.c 2013-03-10 16:44:42.128599846 +0100
|
||||
@@ -817,7 +817,7 @@ v850_push_dummy_call (struct gdbarch *gd
|
||||
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
|
||||
int argreg;
|
||||
int argnum;
|
||||
@ -1197,7 +1197,7 @@ Index: gdb-7.5.50.20130118/gdb/v850-tdep.c
|
||||
int stack_offset;
|
||||
|
||||
/* The offset onto the stack at which we will start copying parameters
|
||||
@@ -833,7 +833,7 @@ v850_push_dummy_call (struct gdbarch *gd
|
||||
@@ -842,7 +842,7 @@ v850_push_dummy_call (struct gdbarch *gd
|
||||
in four registers available. Loop thru args from first to last. */
|
||||
for (argnum = 0; argnum < nargs; argnum++)
|
||||
{
|
||||
@ -1206,10 +1206,10 @@ Index: gdb-7.5.50.20130118/gdb/v850-tdep.c
|
||||
gdb_byte *val;
|
||||
gdb_byte valbuf[v850_reg_size];
|
||||
|
||||
Index: gdb-7.5.50.20130118/gdb/vax-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/vax-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/vax-tdep.c 2013-01-18 23:36:59.984290434 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/vax-tdep.c 2013-01-18 23:37:12.484307608 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/vax-tdep.c 2013-03-10 16:44:34.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/vax-tdep.c 2013-03-10 16:44:42.128599846 +0100
|
||||
@@ -115,7 +115,7 @@ vax_store_arguments (struct regcache *re
|
||||
struct gdbarch *gdbarch = get_regcache_arch (regcache);
|
||||
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
|
||||
@ -1228,10 +1228,10 @@ Index: gdb-7.5.50.20130118/gdb/vax-tdep.c
|
||||
|
||||
sp -= (len + 3) & ~3;
|
||||
count += (len + 3) / 4;
|
||||
Index: gdb-7.5.50.20130118/gdb/xstormy16-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/xstormy16-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/xstormy16-tdep.c 2013-01-18 23:36:59.984290434 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/xstormy16-tdep.c 2013-01-18 23:37:12.484307608 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/xstormy16-tdep.c 2013-03-01 16:38:27.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/xstormy16-tdep.c 2013-03-10 16:46:05.888653201 +0100
|
||||
@@ -235,8 +235,9 @@ xstormy16_push_dummy_call (struct gdbarc
|
||||
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
|
||||
CORE_ADDR stack_dest = sp;
|
||||
@ -1242,12 +1242,12 @@ Index: gdb-7.5.50.20130118/gdb/xstormy16-tdep.c
|
||||
+ LONGEST j;
|
||||
+ LONGEST typelen;
|
||||
const gdb_byte *val;
|
||||
char buf[xstormy16_pc_size];
|
||||
gdb_byte buf[xstormy16_pc_size];
|
||||
|
||||
Index: gdb-7.5.50.20130118/gdb/xtensa-tdep.c
|
||||
Index: gdb-7.5.50.20130310/gdb/xtensa-tdep.c
|
||||
===================================================================
|
||||
--- gdb-7.5.50.20130118.orig/gdb/xtensa-tdep.c 2013-01-18 23:36:59.985290436 +0100
|
||||
+++ gdb-7.5.50.20130118/gdb/xtensa-tdep.c 2013-01-18 23:37:12.484307608 +0100
|
||||
--- gdb-7.5.50.20130310.orig/gdb/xtensa-tdep.c 2013-01-01 07:41:29.000000000 +0100
|
||||
+++ gdb-7.5.50.20130310/gdb/xtensa-tdep.c 2013-03-10 16:44:42.129599847 +0100
|
||||
@@ -1653,8 +1653,7 @@ xtensa_store_return_value (struct type *
|
||||
|
||||
if (len > (callsize > 8 ? 8 : 16))
|
||||
|
17
gdb.spec
17
gdb.spec
@ -27,14 +27,14 @@
|
||||
Summary: A GNU source-level debugger for C, C++, Fortran, Go and other languages
|
||||
Name: %{?scl_prefix}gdb
|
||||
|
||||
%global snap 20130215
|
||||
%global snap 20130310
|
||||
# See timestamp of source gnulib installed into gdb/gnulib/ .
|
||||
%global snapgnulib 20121213
|
||||
Version: 7.5.50.20130215
|
||||
Version: 7.5.50.20130310
|
||||
|
||||
# The release always contains a leading reserved number, start it at 1.
|
||||
# `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing.
|
||||
Release: 9%{?dist}
|
||||
Release: 10%{?dist}
|
||||
|
||||
License: GPLv3+ and GPLv3+ with exceptions and GPLv2+ and GPLv2+ with exceptions and GPL+ and LGPLv2+ and BSD and Public Domain
|
||||
Group: Development/Debuggers
|
||||
@ -557,6 +557,11 @@ Patch816: gdb-rhbz795424-bitpos-25of25.patch
|
||||
Patch817: gdb-rhbz795424-bitpos-25of25-test.patch
|
||||
Patch818: gdb-rhbz795424-bitpos-lazyvalue.patch
|
||||
|
||||
# Fix various entry-values sub-optimal results.
|
||||
# =push
|
||||
Patch825: gdb-entryval-1of2.patch
|
||||
Patch826: gdb-entryval-2of2.patch
|
||||
|
||||
%if 0%{!?rhel:1} || 0%{?rhel} > 6
|
||||
# RL_STATE_FEDORA_GDB would not be found for:
|
||||
# Patch642: gdb-readline62-ask-more-rh.patch
|
||||
@ -869,6 +874,8 @@ find -name "*.info*"|xargs rm -f
|
||||
%patch816 -p1
|
||||
%patch817 -p1
|
||||
%patch818 -p1
|
||||
%patch825 -p1
|
||||
%patch826 -p1
|
||||
|
||||
%patch393 -p1
|
||||
%if 0%{!?el5:1} || 0%{?scl:1}
|
||||
@ -1370,6 +1377,10 @@ fi
|
||||
%endif # 0%{!?el5:1} || "%{_target_cpu}" == "noarch"
|
||||
|
||||
%changelog
|
||||
* Sun Mar 10 2013 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.5.50.20130310-10.fc19
|
||||
- Rebase to FSF GDB 7.5.50.20130310 (pre-7.6 snapshot).
|
||||
- Fix various entry-values sub-optimal results.
|
||||
|
||||
* Mon Feb 25 2013 Jan Kratochvil <jan.kratochvil@redhat.com> - 7.5.50.20130215-9.fc19
|
||||
- testsuite: Fix gdb.arch/powerpc-power6.exp testcase (IBM, RH BZ 890900).
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user