- Archer update to the snapshot: 543fb2154d3bd551344b990b911be5c6cc703504
- Fixes [delayed-symfile] excessive `(no debugging symbols found)' messages.
This commit is contained in:
parent
eb11e3c0e6
commit
984eecf70c
370
gdb-archer.patch
370
gdb-archer.patch
@ -2,7 +2,7 @@ http://sourceware.org/gdb/wiki/ProjectArcher
|
|||||||
http://sourceware.org/gdb/wiki/ArcherBranchManagement
|
http://sourceware.org/gdb/wiki/ArcherBranchManagement
|
||||||
|
|
||||||
GIT snapshot:
|
GIT snapshot:
|
||||||
commit 6cf16c0711e844094ab694b3d929f7bd30b49f61
|
commit 543fb2154d3bd551344b990b911be5c6cc703504
|
||||||
|
|
||||||
branch `archer' - the merge of branches:
|
branch `archer' - the merge of branches:
|
||||||
archer-jankratochvil-merge-expr
|
archer-jankratochvil-merge-expr
|
||||||
@ -866,7 +866,7 @@ index 8f0140c..d451769 100644
|
|||||||
|
|
||||||
/* Set BLOCK's using member to USING; if needed, allocate memory via
|
/* Set BLOCK's using member to USING; if needed, allocate memory via
|
||||||
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
|
diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c
|
||||||
index b23b294..e9bc53f 100644
|
index b23b294..38a17a1 100644
|
||||||
--- a/gdb/breakpoint.c
|
--- a/gdb/breakpoint.c
|
||||||
+++ b/gdb/breakpoint.c
|
+++ b/gdb/breakpoint.c
|
||||||
@@ -191,6 +191,8 @@ static int is_hardware_watchpoint (struct breakpoint *bpt);
|
@@ -191,6 +191,8 @@ static int is_hardware_watchpoint (struct breakpoint *bpt);
|
||||||
@ -1004,7 +1004,28 @@ index b23b294..e9bc53f 100644
|
|||||||
len = TYPE_LENGTH (value_type (v));
|
len = TYPE_LENGTH (value_type (v));
|
||||||
type = hw_write;
|
type = hw_write;
|
||||||
if (b->type == bp_read_watchpoint)
|
if (b->type == bp_read_watchpoint)
|
||||||
@@ -4134,6 +4160,8 @@ set_raw_breakpoint_without_location (enum bptype bptype)
|
@@ -3948,8 +3974,8 @@ check_duplicates_for (CORE_ADDR address, struct obj_section *section)
|
||||||
|
}
|
||||||
|
|
||||||
|
/* If we found a permanent breakpoint at this address, go over the
|
||||||
|
- list again and declare all the other breakpoints there to be the
|
||||||
|
- duplicates. */
|
||||||
|
+ list again and declare all the other breakpoints there (except
|
||||||
|
+ other permanent breakpoints) to be the duplicates. */
|
||||||
|
if (perm_bp)
|
||||||
|
{
|
||||||
|
perm_bp->duplicate = 0;
|
||||||
|
@@ -3963,7 +3989,8 @@ check_duplicates_for (CORE_ADDR address, struct obj_section *section)
|
||||||
|
ALL_BP_LOCATIONS (b)
|
||||||
|
if (b != perm_bp)
|
||||||
|
{
|
||||||
|
- if (b->owner->enable_state != bp_disabled
|
||||||
|
+ if (b->owner->enable_state != bp_permanent
|
||||||
|
+ && b->owner->enable_state != bp_disabled
|
||||||
|
&& b->owner->enable_state != bp_call_disabled
|
||||||
|
&& b->enabled && !b->shlib_disabled
|
||||||
|
&& b->address == address /* address / overlay match */
|
||||||
|
@@ -4134,6 +4161,8 @@ set_raw_breakpoint_without_location (enum bptype bptype)
|
||||||
b->frame_id = null_frame_id;
|
b->frame_id = null_frame_id;
|
||||||
b->forked_inferior_pid = null_ptid;
|
b->forked_inferior_pid = null_ptid;
|
||||||
b->exec_pathname = NULL;
|
b->exec_pathname = NULL;
|
||||||
@ -1013,7 +1034,7 @@ index b23b294..e9bc53f 100644
|
|||||||
b->ops = NULL;
|
b->ops = NULL;
|
||||||
b->condition_not_parsed = 0;
|
b->condition_not_parsed = 0;
|
||||||
|
|
||||||
@@ -4660,7 +4688,241 @@ static struct breakpoint_ops catch_vfork_breakpoint_ops =
|
@@ -4660,7 +4689,241 @@ static struct breakpoint_ops catch_vfork_breakpoint_ops =
|
||||||
print_mention_catch_vfork
|
print_mention_catch_vfork
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1256,7 +1277,7 @@ index b23b294..e9bc53f 100644
|
|||||||
|
|
||||||
If TEMPFLAG is non-zero, then make the breakpoint temporary.
|
If TEMPFLAG is non-zero, then make the breakpoint temporary.
|
||||||
If COND_STRING is not NULL, then store it in the breakpoint.
|
If COND_STRING is not NULL, then store it in the breakpoint.
|
||||||
@@ -4668,16 +4930,13 @@ static struct breakpoint_ops catch_vfork_breakpoint_ops =
|
@@ -4668,16 +4931,13 @@ static struct breakpoint_ops catch_vfork_breakpoint_ops =
|
||||||
to the catchpoint. */
|
to the catchpoint. */
|
||||||
|
|
||||||
static struct breakpoint *
|
static struct breakpoint *
|
||||||
@ -1275,7 +1296,7 @@ index b23b294..e9bc53f 100644
|
|||||||
|
|
||||||
b = set_raw_breakpoint (sal, bp_catchpoint);
|
b = set_raw_breakpoint (sal, bp_catchpoint);
|
||||||
set_breakpoint_count (breakpoint_count + 1);
|
set_breakpoint_count (breakpoint_count + 1);
|
||||||
@@ -4691,6 +4950,23 @@ create_catchpoint (int tempflag, char *cond_string,
|
@@ -4691,6 +4951,23 @@ create_catchpoint (int tempflag, char *cond_string,
|
||||||
b->disposition = tempflag ? disp_del : disp_donttouch;
|
b->disposition = tempflag ? disp_del : disp_donttouch;
|
||||||
b->ops = ops;
|
b->ops = ops;
|
||||||
|
|
||||||
@ -1299,7 +1320,7 @@ index b23b294..e9bc53f 100644
|
|||||||
mention (b);
|
mention (b);
|
||||||
update_global_location_list (1);
|
update_global_location_list (1);
|
||||||
|
|
||||||
@@ -4775,6 +5051,23 @@ static struct breakpoint_ops catch_exec_breakpoint_ops =
|
@@ -4775,6 +5052,23 @@ static struct breakpoint_ops catch_exec_breakpoint_ops =
|
||||||
print_mention_catch_exec
|
print_mention_catch_exec
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -1323,7 +1344,7 @@ index b23b294..e9bc53f 100644
|
|||||||
static int
|
static int
|
||||||
hw_breakpoint_used_count (void)
|
hw_breakpoint_used_count (void)
|
||||||
{
|
{
|
||||||
@@ -5310,8 +5603,6 @@ create_breakpoints (struct symtabs_and_lines sals, char **addr_string,
|
@@ -5310,8 +5604,6 @@ create_breakpoints (struct symtabs_and_lines sals, char **addr_string,
|
||||||
cond_string, type, disposition,
|
cond_string, type, disposition,
|
||||||
thread, ignore_count, ops, from_tty, enabled);
|
thread, ignore_count, ops, from_tty, enabled);
|
||||||
}
|
}
|
||||||
@ -1332,7 +1353,7 @@ index b23b294..e9bc53f 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Parse ARG which is assumed to be a SAL specification possibly
|
/* Parse ARG which is assumed to be a SAL specification possibly
|
||||||
@@ -5637,7 +5928,6 @@ break_command_really (char *arg, char *cond_string, int thread,
|
@@ -5637,7 +5929,6 @@ break_command_really (char *arg, char *cond_string, int thread,
|
||||||
b->ops = ops;
|
b->ops = ops;
|
||||||
b->enable_state = enabled ? bp_enabled : bp_disabled;
|
b->enable_state = enabled ? bp_enabled : bp_disabled;
|
||||||
|
|
||||||
@ -1340,7 +1361,7 @@ index b23b294..e9bc53f 100644
|
|||||||
mention (b);
|
mention (b);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5649,6 +5939,11 @@ break_command_really (char *arg, char *cond_string, int thread,
|
@@ -5649,6 +5940,11 @@ break_command_really (char *arg, char *cond_string, int thread,
|
||||||
discard_cleanups (breakpoint_chain);
|
discard_cleanups (breakpoint_chain);
|
||||||
/* But cleanup everything else. */
|
/* But cleanup everything else. */
|
||||||
do_cleanups (old_chain);
|
do_cleanups (old_chain);
|
||||||
@ -1352,7 +1373,7 @@ index b23b294..e9bc53f 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Set a breakpoint.
|
/* Set a breakpoint.
|
||||||
@@ -6131,7 +6426,7 @@ can_use_hardware_watchpoint (struct value *v)
|
@@ -6131,7 +6427,7 @@ can_use_hardware_watchpoint (struct value *v)
|
||||||
|| (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
|
|| (TYPE_CODE (vtype) != TYPE_CODE_STRUCT
|
||||||
&& TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
|
&& TYPE_CODE (vtype) != TYPE_CODE_ARRAY))
|
||||||
{
|
{
|
||||||
@ -1361,7 +1382,7 @@ index b23b294..e9bc53f 100644
|
|||||||
int len = TYPE_LENGTH (value_type (v));
|
int len = TYPE_LENGTH (value_type (v));
|
||||||
|
|
||||||
if (!TARGET_REGION_OK_FOR_HW_WATCHPOINT (vaddr, len))
|
if (!TARGET_REGION_OK_FOR_HW_WATCHPOINT (vaddr, len))
|
||||||
@@ -6668,6 +6963,122 @@ catch_ada_exception_command (char *arg, int from_tty,
|
@@ -6668,6 +6964,122 @@ catch_ada_exception_command (char *arg, int from_tty,
|
||||||
from_tty);
|
from_tty);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1484,7 +1505,7 @@ index b23b294..e9bc53f 100644
|
|||||||
/* Implement the "catch assert" command. */
|
/* Implement the "catch assert" command. */
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -7134,6 +7545,7 @@ delete_breakpoint (struct breakpoint *bpt)
|
@@ -7134,6 +7546,7 @@ delete_breakpoint (struct breakpoint *bpt)
|
||||||
xfree (bpt->source_file);
|
xfree (bpt->source_file);
|
||||||
if (bpt->exec_pathname != NULL)
|
if (bpt->exec_pathname != NULL)
|
||||||
xfree (bpt->exec_pathname);
|
xfree (bpt->exec_pathname);
|
||||||
@ -1492,7 +1513,7 @@ index b23b294..e9bc53f 100644
|
|||||||
|
|
||||||
/* Be sure no bpstat's are pointing at it after it's been freed. */
|
/* Be sure no bpstat's are pointing at it after it's been freed. */
|
||||||
/* FIXME, how can we find all bpstat's?
|
/* FIXME, how can we find all bpstat's?
|
||||||
@@ -8041,6 +8453,56 @@ single_step_breakpoint_inserted_here_p (CORE_ADDR pc)
|
@@ -8041,6 +8454,56 @@ single_step_breakpoint_inserted_here_p (CORE_ADDR pc)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1549,7 +1570,7 @@ index b23b294..e9bc53f 100644
|
|||||||
|
|
||||||
/* This help string is used for the break, hbreak, tbreak and thbreak commands.
|
/* This help string is used for the break, hbreak, tbreak and thbreak commands.
|
||||||
It is defined as a macro to prevent duplication.
|
It is defined as a macro to prevent duplication.
|
||||||
@@ -8073,6 +8535,8 @@ static void
|
@@ -8073,6 +8536,8 @@ static void
|
||||||
add_catch_command (char *name, char *docstring,
|
add_catch_command (char *name, char *docstring,
|
||||||
void (*sfunc) (char *args, int from_tty,
|
void (*sfunc) (char *args, int from_tty,
|
||||||
struct cmd_list_element *command),
|
struct cmd_list_element *command),
|
||||||
@ -1558,7 +1579,7 @@ index b23b294..e9bc53f 100644
|
|||||||
void *user_data_catch,
|
void *user_data_catch,
|
||||||
void *user_data_tcatch)
|
void *user_data_tcatch)
|
||||||
{
|
{
|
||||||
@@ -8082,11 +8546,13 @@ add_catch_command (char *name, char *docstring,
|
@@ -8082,11 +8547,13 @@ add_catch_command (char *name, char *docstring,
|
||||||
&catch_cmdlist);
|
&catch_cmdlist);
|
||||||
set_cmd_sfunc (command, sfunc);
|
set_cmd_sfunc (command, sfunc);
|
||||||
set_cmd_context (command, user_data_catch);
|
set_cmd_context (command, user_data_catch);
|
||||||
@ -1572,7 +1593,7 @@ index b23b294..e9bc53f 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@@ -8361,36 +8827,50 @@ Set temporary catchpoints to catch events."),
|
@@ -8361,36 +8828,50 @@ Set temporary catchpoints to catch events."),
|
||||||
Catch an exception, when caught.\n\
|
Catch an exception, when caught.\n\
|
||||||
With an argument, catch only exceptions with the given name."),
|
With an argument, catch only exceptions with the given name."),
|
||||||
catch_catch_command,
|
catch_catch_command,
|
||||||
@ -8714,7 +8735,7 @@ index 845b320..ad6e7d7 100644
|
|||||||
|
|
||||||
extern struct cleanup *make_final_cleanup (make_cleanup_ftype *, void *);
|
extern struct cleanup *make_final_cleanup (make_cleanup_ftype *, void *);
|
||||||
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
|
diff --git a/gdb/doc/gdb.texinfo b/gdb/doc/gdb.texinfo
|
||||||
index 10e7388..86941fe 100644
|
index 10e7388..d2c0f1e 100644
|
||||||
--- a/gdb/doc/gdb.texinfo
|
--- a/gdb/doc/gdb.texinfo
|
||||||
+++ b/gdb/doc/gdb.texinfo
|
+++ b/gdb/doc/gdb.texinfo
|
||||||
@@ -955,8 +955,10 @@ Connect to process ID @var{number}, as with the @code{attach} command.
|
@@ -955,8 +955,10 @@ Connect to process ID @var{number}, as with the @code{attach} command.
|
||||||
@ -8846,7 +8867,44 @@ index 10e7388..86941fe 100644
|
|||||||
@item fork
|
@item fork
|
||||||
A call to @code{fork}. This is currently only available for HP-UX
|
A call to @code{fork}. This is currently only available for HP-UX
|
||||||
and @sc{gnu}/Linux.
|
and @sc{gnu}/Linux.
|
||||||
@@ -6536,6 +6640,12 @@ Without this format, @value{GDBN} displays pointers to and arrays of
|
@@ -4711,6 +4815,24 @@ the program to report that some thread has stopped before prompting for
|
||||||
|
another command. In background execution, @value{GDBN} immediately gives
|
||||||
|
a command prompt so that you can issue other commands while your program runs.
|
||||||
|
|
||||||
|
+You need to explicitly enable asynchronous mode before you can use
|
||||||
|
+background execution commands. You can use these commands to
|
||||||
|
+manipulate the asynchronous mode setting:
|
||||||
|
+
|
||||||
|
+@table @code
|
||||||
|
+@kindex set target-async
|
||||||
|
+@item set target-async on
|
||||||
|
+Enable asynchronous mode.
|
||||||
|
+@item set target-async off
|
||||||
|
+Disable asynchronous mode.
|
||||||
|
+@kindex show target-async
|
||||||
|
+@item show target-async
|
||||||
|
+Show the current target-async setting.
|
||||||
|
+@end table
|
||||||
|
+
|
||||||
|
+If the target doesn't support async mode, @value{GDBN} issues an error
|
||||||
|
+message if you attempt to use the background execution commands.
|
||||||
|
+
|
||||||
|
To specify background execution, add a @code{&} to the command. For example,
|
||||||
|
the background form of the @code{continue} command is @code{continue&}, or
|
||||||
|
just @code{c&}. The execution commands that accept background execution
|
||||||
|
@@ -4776,11 +4898,6 @@ only the current thread. To stop the whole program in non-stop mode,
|
||||||
|
use @code{interrupt -a}.
|
||||||
|
@end table
|
||||||
|
|
||||||
|
-You may need to explicitly enable async mode before you can use background
|
||||||
|
-execution commands, with the @code{set target-async 1} command. If the
|
||||||
|
-target doesn't support async mode, @value{GDBN} issues an error message
|
||||||
|
-if you attempt to use the background execution commands.
|
||||||
|
-
|
||||||
|
@node Thread-Specific Breakpoints
|
||||||
|
@subsection Thread-Specific Breakpoints
|
||||||
|
|
||||||
|
@@ -6536,6 +6653,12 @@ Without this format, @value{GDBN} displays pointers to and arrays of
|
||||||
@code{char}, @w{@code{unsigned char}}, and @w{@code{signed char}} as
|
@code{char}, @w{@code{unsigned char}}, and @w{@code{signed char}} as
|
||||||
strings. Single-byte members of a vector are displayed as an integer
|
strings. Single-byte members of a vector are displayed as an integer
|
||||||
array.
|
array.
|
||||||
@ -8859,7 +8917,7 @@ index 10e7388..86941fe 100644
|
|||||||
@end table
|
@end table
|
||||||
|
|
||||||
For example, to print the program counter in hex (@pxref{Registers}), type
|
For example, to print the program counter in hex (@pxref{Registers}), type
|
||||||
@@ -7408,6 +7518,20 @@ On HP-UX systems, if you refer to a function or variable name that
|
@@ -7408,6 +7531,20 @@ On HP-UX systems, if you refer to a function or variable name that
|
||||||
begins with a dollar sign, @value{GDBN} searches for a user or system
|
begins with a dollar sign, @value{GDBN} searches for a user or system
|
||||||
name first, before it searches for a convenience variable.
|
name first, before it searches for a convenience variable.
|
||||||
|
|
||||||
@ -8880,7 +8938,7 @@ index 10e7388..86941fe 100644
|
|||||||
@node Registers
|
@node Registers
|
||||||
@section Registers
|
@section Registers
|
||||||
|
|
||||||
@@ -7931,13 +8055,17 @@ support:
|
@@ -7931,13 +8068,17 @@ support:
|
||||||
@table @code
|
@table @code
|
||||||
@item set target-charset @var{charset}
|
@item set target-charset @var{charset}
|
||||||
@kindex set target-charset
|
@kindex set target-charset
|
||||||
@ -8904,7 +8962,7 @@ index 10e7388..86941fe 100644
|
|||||||
@item set host-charset @var{charset}
|
@item set host-charset @var{charset}
|
||||||
@kindex set host-charset
|
@kindex set host-charset
|
||||||
Set the current host character set to @var{charset}.
|
Set the current host character set to @var{charset}.
|
||||||
@@ -7947,10 +8075,9 @@ system it is running on; you can override that default using the
|
@@ -7947,10 +8088,9 @@ system it is running on; you can override that default using the
|
||||||
@code{set host-charset} command.
|
@code{set host-charset} command.
|
||||||
|
|
||||||
@value{GDBN} can only use certain character sets as its host character
|
@value{GDBN} can only use certain character sets as its host character
|
||||||
@ -8918,7 +8976,7 @@ index 10e7388..86941fe 100644
|
|||||||
|
|
||||||
@item set charset @var{charset}
|
@item set charset @var{charset}
|
||||||
@kindex set charset
|
@kindex set charset
|
||||||
@@ -7974,37 +8101,6 @@ Show the name of the current target charset.
|
@@ -7974,37 +8114,6 @@ Show the name of the current target charset.
|
||||||
|
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@ -8956,7 +9014,7 @@ index 10e7388..86941fe 100644
|
|||||||
Here is an example of @value{GDBN}'s character set support in action.
|
Here is an example of @value{GDBN}'s character set support in action.
|
||||||
Assume that the following source code has been placed in the file
|
Assume that the following source code has been placed in the file
|
||||||
@file{charset-test.c}:
|
@file{charset-test.c}:
|
||||||
@@ -12510,6 +12606,12 @@ It is possible for the function you call via the @code{print} or
|
@@ -12510,6 +12619,12 @@ It is possible for the function you call via the @code{print} or
|
||||||
the function, or if you passed it incorrect arguments). What happens
|
the function, or if you passed it incorrect arguments). What happens
|
||||||
in that case is controlled by the @code{set unwindonsignal} command.
|
in that case is controlled by the @code{set unwindonsignal} command.
|
||||||
|
|
||||||
@ -8969,7 +9027,7 @@ index 10e7388..86941fe 100644
|
|||||||
@table @code
|
@table @code
|
||||||
@item set unwindonsignal
|
@item set unwindonsignal
|
||||||
@kindex set unwindonsignal
|
@kindex set unwindonsignal
|
||||||
@@ -12526,6 +12628,23 @@ received.
|
@@ -12526,6 +12641,23 @@ received.
|
||||||
@kindex show unwindonsignal
|
@kindex show unwindonsignal
|
||||||
Show the current setting of stack unwinding in the functions called by
|
Show the current setting of stack unwinding in the functions called by
|
||||||
@value{GDBN}.
|
@value{GDBN}.
|
||||||
@ -8993,7 +9051,7 @@ index 10e7388..86941fe 100644
|
|||||||
@end table
|
@end table
|
||||||
|
|
||||||
@cindex weak alias functions
|
@cindex weak alias functions
|
||||||
@@ -17815,7 +17934,7 @@ command:
|
@@ -17815,7 +17947,7 @@ command:
|
||||||
@table @code
|
@table @code
|
||||||
@kindex source
|
@kindex source
|
||||||
@cindex execute commands from a file
|
@cindex execute commands from a file
|
||||||
@ -9002,7 +9060,7 @@ index 10e7388..86941fe 100644
|
|||||||
Execute the command file @var{filename}.
|
Execute the command file @var{filename}.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@@ -17832,6 +17951,11 @@ If @code{-v}, for verbose mode, is given then @value{GDBN} displays
|
@@ -17832,6 +17964,11 @@ If @code{-v}, for verbose mode, is given then @value{GDBN} displays
|
||||||
each command as it is executed. The option must be given before
|
each command as it is executed. The option must be given before
|
||||||
@var{filename}, and is interpreted as part of the filename anywhere else.
|
@var{filename}, and is interpreted as part of the filename anywhere else.
|
||||||
|
|
||||||
@ -9014,7 +9072,7 @@ index 10e7388..86941fe 100644
|
|||||||
Commands that would ask for confirmation if used interactively proceed
|
Commands that would ask for confirmation if used interactively proceed
|
||||||
without asking when used in a command file. Many @value{GDBN} commands that
|
without asking when used in a command file. Many @value{GDBN} commands that
|
||||||
normally print messages to say what they are doing omit the messages
|
normally print messages to say what they are doing omit the messages
|
||||||
@@ -18093,8 +18217,6 @@ containing @code{end}. For example:
|
@@ -18093,8 +18230,6 @@ containing @code{end}. For example:
|
||||||
|
|
||||||
@smallexample
|
@smallexample
|
||||||
(@value{GDBP}) python
|
(@value{GDBP}) python
|
||||||
@ -9023,7 +9081,7 @@ index 10e7388..86941fe 100644
|
|||||||
>print 23
|
>print 23
|
||||||
>end
|
>end
|
||||||
23
|
23
|
||||||
@@ -18107,6 +18229,14 @@ in a Python script. This can be controlled using @code{maint set
|
@@ -18107,6 +18242,14 @@ in a Python script. This can be controlled using @code{maint set
|
||||||
python print-stack}: if @code{on}, the default, then Python stack
|
python print-stack}: if @code{on}, the default, then Python stack
|
||||||
printing is enabled; if @code{off}, then Python stack printing is
|
printing is enabled; if @code{off}, then Python stack printing is
|
||||||
disabled.
|
disabled.
|
||||||
@ -9038,7 +9096,7 @@ index 10e7388..86941fe 100644
|
|||||||
@end table
|
@end table
|
||||||
|
|
||||||
@node Python API
|
@node Python API
|
||||||
@@ -18114,6 +18244,14 @@ disabled.
|
@@ -18114,6 +18257,14 @@ disabled.
|
||||||
@cindex python api
|
@cindex python api
|
||||||
@cindex programming in python
|
@cindex programming in python
|
||||||
|
|
||||||
@ -9053,7 +9111,7 @@ index 10e7388..86941fe 100644
|
|||||||
@cindex python stdout
|
@cindex python stdout
|
||||||
@cindex python pagination
|
@cindex python pagination
|
||||||
At startup, @value{GDBN} overrides Python's @code{sys.stdout} and
|
At startup, @value{GDBN} overrides Python's @code{sys.stdout} and
|
||||||
@@ -18125,8 +18263,17 @@ situation, a Python @code{KeyboardInterrupt} exception is thrown.
|
@@ -18125,8 +18276,17 @@ situation, a Python @code{KeyboardInterrupt} exception is thrown.
|
||||||
@menu
|
@menu
|
||||||
* Basic Python:: Basic Python Functions.
|
* Basic Python:: Basic Python Functions.
|
||||||
* Exception Handling::
|
* Exception Handling::
|
||||||
@ -9072,7 +9130,7 @@ index 10e7388..86941fe 100644
|
|||||||
@end menu
|
@end menu
|
||||||
|
|
||||||
@node Basic Python
|
@node Basic Python
|
||||||
@@ -18152,10 +18299,30 @@ command as having originated from the user invoking it interactively.
|
@@ -18152,10 +18312,30 @@ command as having originated from the user invoking it interactively.
|
||||||
It must be a boolean value. If omitted, it defaults to @code{False}.
|
It must be a boolean value. If omitted, it defaults to @code{False}.
|
||||||
@end defun
|
@end defun
|
||||||
|
|
||||||
@ -9107,7 +9165,7 @@ index 10e7388..86941fe 100644
|
|||||||
spaces if the parameter has a multi-part name. For example,
|
spaces if the parameter has a multi-part name. For example,
|
||||||
@samp{print object} is a valid parameter name.
|
@samp{print object} is a valid parameter name.
|
||||||
|
|
||||||
@@ -18179,6 +18346,28 @@ If no exception is raised, the return value is always an instance of
|
@@ -18179,6 +18359,28 @@ If no exception is raised, the return value is always an instance of
|
||||||
@code{gdb.Value} (@pxref{Values From Inferior}).
|
@code{gdb.Value} (@pxref{Values From Inferior}).
|
||||||
@end defun
|
@end defun
|
||||||
|
|
||||||
@ -9136,7 +9194,7 @@ index 10e7388..86941fe 100644
|
|||||||
@findex gdb.write
|
@findex gdb.write
|
||||||
@defun write string
|
@defun write string
|
||||||
Print a string to @value{GDBN}'s paginated standard output stream.
|
Print a string to @value{GDBN}'s paginated standard output stream.
|
||||||
@@ -18193,6 +18382,66 @@ Flush @value{GDBN}'s paginated standard output stream. Flushing
|
@@ -18193,6 +18395,66 @@ Flush @value{GDBN}'s paginated standard output stream. Flushing
|
||||||
function.
|
function.
|
||||||
@end defun
|
@end defun
|
||||||
|
|
||||||
@ -9203,7 +9261,7 @@ index 10e7388..86941fe 100644
|
|||||||
@node Exception Handling
|
@node Exception Handling
|
||||||
@subsubsection Exception Handling
|
@subsubsection Exception Handling
|
||||||
@cindex python exceptions
|
@cindex python exceptions
|
||||||
@@ -18224,6 +18473,44 @@ message as its value, and the Python call stack backtrace at the
|
@@ -18224,6 +18486,44 @@ message as its value, and the Python call stack backtrace at the
|
||||||
Python statement closest to where the @value{GDBN} error occured as the
|
Python statement closest to where the @value{GDBN} error occured as the
|
||||||
traceback.
|
traceback.
|
||||||
|
|
||||||
@ -9248,7 +9306,7 @@ index 10e7388..86941fe 100644
|
|||||||
@node Values From Inferior
|
@node Values From Inferior
|
||||||
@subsubsection Values From Inferior
|
@subsubsection Values From Inferior
|
||||||
@cindex values from inferior, with Python
|
@cindex values from inferior, with Python
|
||||||
@@ -18258,8 +18545,21 @@ bar = some_val['foo']
|
@@ -18258,8 +18558,21 @@ bar = some_val['foo']
|
||||||
|
|
||||||
Again, @code{bar} will also be a @code{gdb.Value} object.
|
Again, @code{bar} will also be a @code{gdb.Value} object.
|
||||||
|
|
||||||
@ -9272,7 +9330,7 @@ index 10e7388..86941fe 100644
|
|||||||
|
|
||||||
@defmethod Value dereference
|
@defmethod Value dereference
|
||||||
This method returns a new @code{gdb.Value} object whose contents is
|
This method returns a new @code{gdb.Value} object whose contents is
|
||||||
@@ -18282,7 +18582,7 @@ The result @code{bar} will be a @code{gdb.Value} object holding the
|
@@ -18282,7 +18595,7 @@ The result @code{bar} will be a @code{gdb.Value} object holding the
|
||||||
value pointed to by @code{foo}.
|
value pointed to by @code{foo}.
|
||||||
@end defmethod
|
@end defmethod
|
||||||
|
|
||||||
@ -9281,7 +9339,7 @@ index 10e7388..86941fe 100644
|
|||||||
If this @code{gdb.Value} represents a string, then this method
|
If this @code{gdb.Value} represents a string, then this method
|
||||||
converts the contents to a Python string. Otherwise, this method will
|
converts the contents to a Python string. Otherwise, this method will
|
||||||
throw an exception.
|
throw an exception.
|
||||||
@@ -18309,6 +18609,468 @@ The optional @var{errors} argument is the same as the corresponding
|
@@ -18309,6 +18622,468 @@ The optional @var{errors} argument is the same as the corresponding
|
||||||
argument to Python's @code{string.decode} method.
|
argument to Python's @code{string.decode} method.
|
||||||
@end defmethod
|
@end defmethod
|
||||||
|
|
||||||
@ -9750,7 +9808,7 @@ index 10e7388..86941fe 100644
|
|||||||
@node Commands In Python
|
@node Commands In Python
|
||||||
@subsubsection Commands In Python
|
@subsubsection Commands In Python
|
||||||
|
|
||||||
@@ -18320,7 +19082,7 @@ You can implement new @value{GDBN} CLI commands in Python. A CLI
|
@@ -18320,7 +19095,7 @@ You can implement new @value{GDBN} CLI commands in Python. A CLI
|
||||||
command is implemented using an instance of the @code{gdb.Command}
|
command is implemented using an instance of the @code{gdb.Command}
|
||||||
class, most commonly using a subclass.
|
class, most commonly using a subclass.
|
||||||
|
|
||||||
@ -9759,7 +9817,7 @@ index 10e7388..86941fe 100644
|
|||||||
The object initializer for @code{Command} registers the new command
|
The object initializer for @code{Command} registers the new command
|
||||||
with @value{GDBN}. This initializer is normally invoked from the
|
with @value{GDBN}. This initializer is normally invoked from the
|
||||||
subclass' own @code{__init__} method.
|
subclass' own @code{__init__} method.
|
||||||
@@ -18332,11 +19094,11 @@ an exception is raised.
|
@@ -18332,11 +19107,11 @@ an exception is raised.
|
||||||
|
|
||||||
There is no support for multi-line commands.
|
There is no support for multi-line commands.
|
||||||
|
|
||||||
@ -9773,7 +9831,7 @@ index 10e7388..86941fe 100644
|
|||||||
one of the @samp{COMPLETE_} constants defined below. This argument
|
one of the @samp{COMPLETE_} constants defined below. This argument
|
||||||
tells @value{GDBN} how to perform completion for this command. If not
|
tells @value{GDBN} how to perform completion for this command. If not
|
||||||
given, @value{GDBN} will attempt to complete using the object's
|
given, @value{GDBN} will attempt to complete using the object's
|
||||||
@@ -18563,6 +19325,374 @@ registration of the command with @value{GDBN}. Depending on how the
|
@@ -18563,6 +19338,374 @@ registration of the command with @value{GDBN}. Depending on how the
|
||||||
Python code is read into @value{GDBN}, you may need to import the
|
Python code is read into @value{GDBN}, you may need to import the
|
||||||
@code{gdb} module explicitly.
|
@code{gdb} module explicitly.
|
||||||
|
|
||||||
@ -10148,7 +10206,7 @@ index 10e7388..86941fe 100644
|
|||||||
@node Interpreters
|
@node Interpreters
|
||||||
@chapter Command Interpreters
|
@chapter Command Interpreters
|
||||||
@cindex command interpreters
|
@cindex command interpreters
|
||||||
@@ -22273,6 +23403,103 @@ Unfreezing a variable does not update it, only subsequent
|
@@ -22273,6 +23416,103 @@ Unfreezing a variable does not update it, only subsequent
|
||||||
(gdb)
|
(gdb)
|
||||||
@end smallexample
|
@end smallexample
|
||||||
|
|
||||||
@ -10252,7 +10310,7 @@ index 10e7388..86941fe 100644
|
|||||||
|
|
||||||
@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
@c %%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||||
@node GDB/MI Data Manipulation
|
@node GDB/MI Data Manipulation
|
||||||
@@ -23832,6 +25059,10 @@ as possible presense of the @code{frozen} field in the output
|
@@ -23832,6 +25072,10 @@ as possible presense of the @code{frozen} field in the output
|
||||||
of @code{-varobj-create}.
|
of @code{-varobj-create}.
|
||||||
@item pending-breakpoints
|
@item pending-breakpoints
|
||||||
Indicates presence of the @option{-f} option to the @code{-break-insert} command.
|
Indicates presence of the @option{-f} option to the @code{-break-insert} command.
|
||||||
@ -10263,6 +10321,35 @@ index 10e7388..86941fe 100644
|
|||||||
@item thread-info
|
@item thread-info
|
||||||
Indicates presence of the @code{-thread-info} command.
|
Indicates presence of the @code{-thread-info} command.
|
||||||
|
|
||||||
|
@@ -25402,28 +26646,6 @@ data in a @file{gmon.out} file, be sure to move it to a safe location.
|
||||||
|
Configuring with @samp{--enable-profiling} arranges for @value{GDBN} to be
|
||||||
|
compiled with the @samp{-pg} compiler option.
|
||||||
|
|
||||||
|
-@kindex maint set linux-async
|
||||||
|
-@kindex maint show linux-async
|
||||||
|
-@cindex asynchronous support
|
||||||
|
-@item maint set linux-async
|
||||||
|
-@itemx maint show linux-async
|
||||||
|
-Control the GNU/Linux native asynchronous support
|
||||||
|
-(@pxref{Background Execution}) of @value{GDBN}.
|
||||||
|
-
|
||||||
|
-GNU/Linux native asynchronous support will be disabled until you use
|
||||||
|
-the @samp{maint set linux-async} command to enable it.
|
||||||
|
-
|
||||||
|
-@kindex maint set remote-async
|
||||||
|
-@kindex maint show remote-async
|
||||||
|
-@cindex asynchronous support
|
||||||
|
-@item maint set remote-async
|
||||||
|
-@itemx maint show remote-async
|
||||||
|
-Control the remote asynchronous support
|
||||||
|
-(@pxref{Background Execution}) of @value{GDBN}.
|
||||||
|
-
|
||||||
|
-Remote asynchronous support will be disabled until you use
|
||||||
|
-the @samp{maint set remote-async} command to enable it.
|
||||||
|
-
|
||||||
|
@kindex maint show-debug-regs
|
||||||
|
@cindex x86 hardware debug registers
|
||||||
|
@item maint show-debug-regs
|
||||||
diff --git a/gdb/dwarf2-frame.c b/gdb/dwarf2-frame.c
|
diff --git a/gdb/dwarf2-frame.c b/gdb/dwarf2-frame.c
|
||||||
index ce11d89..eaa6a13 100644
|
index ce11d89..eaa6a13 100644
|
||||||
--- a/gdb/dwarf2-frame.c
|
--- a/gdb/dwarf2-frame.c
|
||||||
@ -20738,12 +20825,45 @@ index 0000000..8b13789
|
|||||||
+++ b/gdb/python/lib/gdb/libstdcxx/v6/__init__.py
|
+++ b/gdb/python/lib/gdb/libstdcxx/v6/__init__.py
|
||||||
@@ -0,0 +1 @@
|
@@ -0,0 +1 @@
|
||||||
+
|
+
|
||||||
|
diff --git a/gdb/python/lib/gdb/libstdcxx/v6/hook.in b/gdb/python/lib/gdb/libstdcxx/v6/hook.in
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..fe7c072
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gdb/python/lib/gdb/libstdcxx/v6/hook.in
|
||||||
|
@@ -0,0 +1,27 @@
|
||||||
|
+# -*- python -*-
|
||||||
|
+# Copyright (C) 2009 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/>.
|
||||||
|
+
|
||||||
|
+import sys
|
||||||
|
+import gdb
|
||||||
|
+
|
||||||
|
+# Update module path.
|
||||||
|
+dir = '@dir@'
|
||||||
|
+if not dir in sys.path:
|
||||||
|
+ sys.path.insert(0, dir)
|
||||||
|
+
|
||||||
|
+# Load the pretty-printers.
|
||||||
|
+from libstdcxx.v6.printers import register_libstdcxx_printers
|
||||||
|
+register_libstdcxx_printers (gdb.current_objfile ())
|
||||||
diff --git a/gdb/python/lib/gdb/libstdcxx/v6/printers.py b/gdb/python/lib/gdb/libstdcxx/v6/printers.py
|
diff --git a/gdb/python/lib/gdb/libstdcxx/v6/printers.py b/gdb/python/lib/gdb/libstdcxx/v6/printers.py
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..7a77ad4
|
index 0000000..ccef97d
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/gdb/python/lib/gdb/libstdcxx/v6/printers.py
|
+++ b/gdb/python/lib/gdb/libstdcxx/v6/printers.py
|
||||||
@@ -0,0 +1,647 @@
|
@@ -0,0 +1,646 @@
|
||||||
+# Pretty-printers for libstc++.
|
+# Pretty-printers for libstc++.
|
||||||
+
|
+
|
||||||
+# Copyright (C) 2008, 2009 Free Software Foundation, Inc.
|
+# Copyright (C) 2008, 2009 Free Software Foundation, Inc.
|
||||||
@ -20773,8 +20893,9 @@ index 0000000..7a77ad4
|
|||||||
+ self.val = val
|
+ self.val = val
|
||||||
+
|
+
|
||||||
+ def to_string (self):
|
+ def to_string (self):
|
||||||
+ return '%s (count %d) %s' % (self.typename, self.val['_M_refcount'],
|
+ return '%s (count %d) %s' % (self.typename,
|
||||||
+ self.val['_M_ptr'])
|
+ self.val['_M_refcount']['_M_pi']['_M_use_count'],
|
||||||
|
+ self.val['_M_ptr'])
|
||||||
+
|
+
|
||||||
+class UniquePointerPrinter:
|
+class UniquePointerPrinter:
|
||||||
+ "Print a unique_ptr"
|
+ "Print a unique_ptr"
|
||||||
@ -21358,21 +21479,20 @@ index 0000000..7a77ad4
|
|||||||
+ pretty_printers_dict[re.compile('^std::queue<.*>$')] = lambda val: StdStackOrQueuePrinter("std::queue", val)
|
+ pretty_printers_dict[re.compile('^std::queue<.*>$')] = lambda val: StdStackOrQueuePrinter("std::queue", val)
|
||||||
+ pretty_printers_dict[re.compile('^std::set<.*>$')] = lambda val: StdSetPrinter("std::set", val)
|
+ pretty_printers_dict[re.compile('^std::set<.*>$')] = lambda val: StdSetPrinter("std::set", val)
|
||||||
+ pretty_printers_dict[re.compile('^std::stack<.*>$')] = lambda val: StdStackOrQueuePrinter("std::stack", val)
|
+ pretty_printers_dict[re.compile('^std::stack<.*>$')] = lambda val: StdStackOrQueuePrinter("std::stack", val)
|
||||||
|
+ pretty_printers_dict[re.compile('^std::unique_ptr<.*>$')] = UniquePointerPrinter
|
||||||
+ pretty_printers_dict[re.compile('^std::vector<.*>$')] = StdVectorPrinter
|
+ pretty_printers_dict[re.compile('^std::vector<.*>$')] = StdVectorPrinter
|
||||||
+ # vector<bool>
|
|
||||||
+
|
+
|
||||||
+ # C++0x stuff.
|
+ # These are the C++0x printers. They also exist in the standard namespace.
|
||||||
+ # array - the default seems reasonable
|
+ # For array - the default GDB pretty-printer seems reasonable.
|
||||||
+ # smart_ptr? seems to only be in boost right now
|
+ pretty_printers_dict[re.compile('^std::(tr1::)?shared_ptr<.*>$')] = lambda val: StdPointerPrinter ('std::shared_ptr', val)
|
||||||
+ pretty_printers_dict[re.compile('^std::tr1::shared_ptr<.*>$')] = lambda val: StdPointerPrinter ('std::shared_ptr', val)
|
+ pretty_printers_dict[re.compile('^std::(tr1::)?weak_ptr<.*>$')] = lambda val: StdPointerPrinter ('std::weak_ptr', val)
|
||||||
+ pretty_printers_dict[re.compile('^std::tr1::weak_ptr<.*>$')] = lambda val: StdPointerPrinter ('std::weak_ptr', val)
|
+ pretty_printers_dict[re.compile('^std::(tr1::)?unordered_map<.*>$')] = lambda val: Tr1UnorderedMapPrinter ('std::tr1::unordered_map', val)
|
||||||
+ pretty_printers_dict[re.compile('^std::tr1::unique_ptr<.*>$')] = UniquePointerPrinter
|
+ pretty_printers_dict[re.compile('^std::(tr1::)?unordered_set<.*>$')] = lambda val: Tr1UnorderedSetPrinter ('std::tr1::unordered_set', val)
|
||||||
+ pretty_printers_dict[re.compile('^std::tr1::unordered_map<.*>$')] = lambda val: Tr1UnorderedMapPrinter ('std::tr1::unordered_map', val)
|
+ pretty_printers_dict[re.compile('^std::(tr1::)?unordered_multimap<.*>$')] = lambda val: Tr1UnorderedMapPrinter ('std::tr1::unordered_multimap', val)
|
||||||
+ pretty_printers_dict[re.compile('^std::tr1::unordered_set<.*>$')] = lambda val: Tr1UnorderedSetPrinter ('std::tr1::unordered_set', val)
|
+ pretty_printers_dict[re.compile('^std::(tr1::)?unordered_multiset<.*>$')] = lambda val: Tr1UnorderedSetPrinter ('std::tr1::unordered_multiset', val)
|
||||||
+ pretty_printers_dict[re.compile('^std::tr1::unordered_multimap<.*>$')] = lambda val: Tr1UnorderedMapPrinter ('std::tr1::unordered_multimap', val)
|
|
||||||
+ pretty_printers_dict[re.compile('^std::tr1::unordered_multiset<.*>$')] = lambda val: Tr1UnorderedSetPrinter ('std::tr1::unordered_multiset', val)
|
|
||||||
+
|
+
|
||||||
+ # Extensions.
|
+
|
||||||
|
+ # Extensions to std, tr1 pretty-printers.
|
||||||
+ pretty_printers_dict[re.compile('^__gnu_cxx::slist<.*>$')] = StdSlistPrinter
|
+ pretty_printers_dict[re.compile('^__gnu_cxx::slist<.*>$')] = StdSlistPrinter
|
||||||
+
|
+
|
||||||
+ if True:
|
+ if True:
|
||||||
@ -21390,7 +21510,6 @@ index 0000000..7a77ad4
|
|||||||
+pretty_printers_dict = {}
|
+pretty_printers_dict = {}
|
||||||
+
|
+
|
||||||
+build_libstdcxx_dictionary ()
|
+build_libstdcxx_dictionary ()
|
||||||
+register_libstdcxx_printers (gdb.current_objfile())
|
|
||||||
diff --git a/gdb/python/python-block.c b/gdb/python/python-block.c
|
diff --git a/gdb/python/python-block.c b/gdb/python/python-block.c
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..8019e9d
|
index 0000000..8019e9d
|
||||||
@ -28514,7 +28633,7 @@ index 973a57f..56b1d91 100644
|
|||||||
+
|
+
|
||||||
#endif /* #ifndef STACK_H */
|
#endif /* #ifndef STACK_H */
|
||||||
diff --git a/gdb/symfile.c b/gdb/symfile.c
|
diff --git a/gdb/symfile.c b/gdb/symfile.c
|
||||||
index 63b5c1d..8ca5457 100644
|
index 63b5c1d..b047e94 100644
|
||||||
--- a/gdb/symfile.c
|
--- a/gdb/symfile.c
|
||||||
+++ b/gdb/symfile.c
|
+++ b/gdb/symfile.c
|
||||||
@@ -929,6 +929,17 @@ new_symfile_objfile (struct objfile *objfile, int mainline, int verbo)
|
@@ -929,6 +929,17 @@ new_symfile_objfile (struct objfile *objfile, int mainline, int verbo)
|
||||||
@ -28571,7 +28690,7 @@ index 63b5c1d..8ca5457 100644
|
|||||||
debugfile = find_separate_debug_file (objfile);
|
debugfile = find_separate_debug_file (objfile);
|
||||||
if (debugfile)
|
if (debugfile)
|
||||||
{
|
{
|
||||||
@@ -1049,8 +1064,9 @@ symbol_file_add_with_addrs_or_offsets (bfd *abfd, int from_tty,
|
@@ -1049,8 +1064,10 @@ symbol_file_add_with_addrs_or_offsets (bfd *abfd, int from_tty,
|
||||||
xfree (debugfile);
|
xfree (debugfile);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -28579,11 +28698,12 @@ index 63b5c1d..8ca5457 100644
|
|||||||
- && print_symbol_loading)
|
- && print_symbol_loading)
|
||||||
+ /* has_any_debug_symbols is not fully compatible with the former calls which
|
+ /* has_any_debug_symbols is not fully compatible with the former calls which
|
||||||
+ would just be needlessly expensive here. */
|
+ would just be needlessly expensive here. */
|
||||||
+ if (print_symbol_loading && !has_any_debug_symbols (objfile) && mainline)
|
+ if ((from_tty || info_verbose) && print_symbol_loading
|
||||||
|
+ && !has_any_debug_symbols (objfile) && mainline)
|
||||||
{
|
{
|
||||||
wrap_here ("");
|
wrap_here ("");
|
||||||
printf_unfiltered (_("(no debugging symbols found)"));
|
printf_unfiltered (_("(no debugging symbols found)"));
|
||||||
@@ -2423,13 +2439,15 @@ reread_symbols (void)
|
@@ -2423,13 +2440,15 @@ reread_symbols (void)
|
||||||
zero is OK since dbxread.c also does what it needs to do if
|
zero is OK since dbxread.c also does what it needs to do if
|
||||||
objfile->global_psymbols.size is 0. */
|
objfile->global_psymbols.size is 0. */
|
||||||
(*objfile->sf->sym_read) (objfile, 0);
|
(*objfile->sf->sym_read) (objfile, 0);
|
||||||
@ -28600,7 +28720,7 @@ index 63b5c1d..8ca5457 100644
|
|||||||
/* We're done reading the symbol file; finish off complaints. */
|
/* We're done reading the symbol file; finish off complaints. */
|
||||||
clear_complaints (&symfile_complaints, 0, 1);
|
clear_complaints (&symfile_complaints, 0, 1);
|
||||||
|
|
||||||
@@ -2726,7 +2744,7 @@ allocate_symtab (char *filename, struct objfile *objfile)
|
@@ -2726,7 +2745,7 @@ allocate_symtab (char *filename, struct objfile *objfile)
|
||||||
}
|
}
|
||||||
|
|
||||||
struct partial_symtab *
|
struct partial_symtab *
|
||||||
@ -28609,7 +28729,7 @@ index 63b5c1d..8ca5457 100644
|
|||||||
{
|
{
|
||||||
struct partial_symtab *psymtab;
|
struct partial_symtab *psymtab;
|
||||||
|
|
||||||
@@ -3040,7 +3058,8 @@ again2:
|
@@ -3040,7 +3059,8 @@ again2:
|
||||||
|
|
||||||
struct partial_symtab *
|
struct partial_symtab *
|
||||||
start_psymtab_common (struct objfile *objfile,
|
start_psymtab_common (struct objfile *objfile,
|
||||||
@ -30022,6 +30142,18 @@ index 7f4cd8f..8dcc3d6 100644
|
|||||||
/* Command logging facility. */
|
/* Command logging facility. */
|
||||||
|
|
||||||
#define target_log_command(p) \
|
#define target_log_command(p) \
|
||||||
|
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
|
||||||
|
index e3aaeab..e886869 100644
|
||||||
|
--- a/gdb/testsuite/ChangeLog
|
||||||
|
+++ b/gdb/testsuite/ChangeLog
|
||||||
|
@@ -1,3 +1,7 @@
|
||||||
|
+2009-03-05 Pedro Alves <pedro@codesourcery.com>
|
||||||
|
+
|
||||||
|
+ * gdb.arch/i386-permbkpt.S, gdb.arch/i386-permbkpt.exp: New.
|
||||||
|
+
|
||||||
|
2009-02-18 Jan Kratochvil <jan.kratochvil@redhat.com>
|
||||||
|
|
||||||
|
* gdb.base/macscp.exp (objfile): Move it to ${objdir}/${subdir}/.
|
||||||
diff --git a/gdb/testsuite/configure.ac b/gdb/testsuite/configure.ac
|
diff --git a/gdb/testsuite/configure.ac b/gdb/testsuite/configure.ac
|
||||||
index 3d8fae4..5fb9067 100644
|
index 3d8fae4..5fb9067 100644
|
||||||
--- a/gdb/testsuite/configure.ac
|
--- a/gdb/testsuite/configure.ac
|
||||||
@ -30035,6 +30167,100 @@ index 3d8fae4..5fb9067 100644
|
|||||||
# Free Software Foundation, Inc.
|
# Free Software Foundation, Inc.
|
||||||
#
|
#
|
||||||
# This program is free software; you can redistribute it and/or modify
|
# This program is free software; you can redistribute it and/or modify
|
||||||
|
diff --git a/gdb/testsuite/gdb.arch/i386-permbkpt.S b/gdb/testsuite/gdb.arch/i386-permbkpt.S
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..02a31d6
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gdb/testsuite/gdb.arch/i386-permbkpt.S
|
||||||
|
@@ -0,0 +1,30 @@
|
||||||
|
+/* Copyright 2009 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 file is part of the gdb testsuite. */
|
||||||
|
+
|
||||||
|
+#define CONCAT1(a, b) CONCAT2(a, b)
|
||||||
|
+#define CONCAT2(a, b) a ## b
|
||||||
|
+
|
||||||
|
+#ifdef SYMBOL_PREFIX
|
||||||
|
+# define SYMBOL(str) CONCAT1(SYMBOL_PREFIX, str)
|
||||||
|
+#else
|
||||||
|
+# define SYMBOL(str) str
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
+ .global SYMBOL(main)
|
||||||
|
+SYMBOL(main):
|
||||||
|
+ int3
|
||||||
|
+ ret
|
||||||
|
diff --git a/gdb/testsuite/gdb.arch/i386-permbkpt.exp b/gdb/testsuite/gdb.arch/i386-permbkpt.exp
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..f1930e5
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/gdb/testsuite/gdb.arch/i386-permbkpt.exp
|
||||||
|
@@ -0,0 +1,52 @@
|
||||||
|
+# Copyright (C) 2009 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 file is part of the gdb testsuite.
|
||||||
|
+
|
||||||
|
+if $tracelevel {
|
||||||
|
+ strace $tracelevel
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+# Test inserting breakpoints over permanent breakpoints on i386 and amd64.
|
||||||
|
+
|
||||||
|
+if { ![istarget "i?86-*-*"] && ![istarget "x86_64-*-*"] } then {
|
||||||
|
+ verbose "Skipping i386 test for multi break at permanent breakpoint location."
|
||||||
|
+ return
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+set testfile "i386-permbkpt"
|
||||||
|
+set srcfile ${testfile}.S
|
||||||
|
+set binfile ${objdir}/${subdir}/${testfile}
|
||||||
|
+
|
||||||
|
+# Some targets have leading underscores on assembly symbols.
|
||||||
|
+# TODO: detect this automatically
|
||||||
|
+set additional_flags ""
|
||||||
|
+if { [istarget "*-*-cygwin*"] || [istarget "*-*-mingw*"] } then {
|
||||||
|
+ set additional_flags "additional_flags=-DSYMBOL_PREFIX=_"
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable [list debug $additional_flags]] != "" } {
|
||||||
|
+ untested i386-permbkpt.exp
|
||||||
|
+ return -1
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+gdb_exit
|
||||||
|
+gdb_start
|
||||||
|
+gdb_reinitialize_dir $srcdir/$subdir
|
||||||
|
+gdb_load ${binfile}
|
||||||
|
+
|
||||||
|
+gdb_test "break main" "" "First permanent break"
|
||||||
|
+gdb_test "break main" "" "Second permanent break"
|
||||||
diff --git a/gdb/testsuite/gdb.arch/powerpc-power7.exp b/gdb/testsuite/gdb.arch/powerpc-power7.exp
|
diff --git a/gdb/testsuite/gdb.arch/powerpc-power7.exp b/gdb/testsuite/gdb.arch/powerpc-power7.exp
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000..d9c48f9
|
index 0000000..d9c48f9
|
||||||
@ -36654,7 +36880,7 @@ index 9dea7c2..326e44e 100644
|
|||||||
}
|
}
|
||||||
|
|
||||||
diff --git a/gdb/top.c b/gdb/top.c
|
diff --git a/gdb/top.c b/gdb/top.c
|
||||||
index d676f02..83c54db 100644
|
index d676f02..d6b17f0 100644
|
||||||
--- a/gdb/top.c
|
--- a/gdb/top.c
|
||||||
+++ b/gdb/top.c
|
+++ b/gdb/top.c
|
||||||
@@ -377,6 +377,7 @@ execute_command (char *p, int from_tty)
|
@@ -377,6 +377,7 @@ execute_command (char *p, int from_tty)
|
||||||
@ -36665,6 +36891,16 @@ index d676f02..83c54db 100644
|
|||||||
|
|
||||||
/* Force cleanup of any alloca areas if using C alloca instead of
|
/* Force cleanup of any alloca areas if using C alloca instead of
|
||||||
a builtin alloca. */
|
a builtin alloca. */
|
||||||
|
@@ -1246,7 +1247,8 @@ quit_target (void *arg)
|
||||||
|
struct qt_args *qt = (struct qt_args *)arg;
|
||||||
|
|
||||||
|
/* Kill or detach all inferiors. */
|
||||||
|
- iterate_over_inferiors (kill_or_detach, qt);
|
||||||
|
+ if (target_has_execution)
|
||||||
|
+ iterate_over_inferiors (kill_or_detach, qt);
|
||||||
|
|
||||||
|
/* Give all pushed targets a chance to do minimal cleanup, and pop
|
||||||
|
them all out. */
|
||||||
diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c
|
diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c
|
||||||
index 83df64e..003ef3a 100644
|
index 83df64e..003ef3a 100644
|
||||||
--- a/gdb/tracepoint.c
|
--- a/gdb/tracepoint.c
|
||||||
|
6
gdb.spec
6
gdb.spec
@ -13,7 +13,7 @@ Version: 6.8.50.20090302
|
|||||||
|
|
||||||
# The release always contains a leading reserved number, start it at 1.
|
# 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.
|
# `upstream' is not a part of `name' to stay fully rpm dependencies compatible for the testing.
|
||||||
Release: 5%{?_with_upstream:.upstream}%{?dist}
|
Release: 6%{?_with_upstream:.upstream}%{?dist}
|
||||||
|
|
||||||
License: GPLv3+
|
License: GPLv3+
|
||||||
Group: Development/Debuggers
|
Group: Development/Debuggers
|
||||||
@ -840,6 +840,10 @@ fi
|
|||||||
%endif
|
%endif
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Sat Mar 7 2009 Jan Kratochvil <jan.kratochvil@redhat.com> - 6.8.50.20090302-6
|
||||||
|
- Archer update to the snapshot: 543fb2154d3bd551344b990b911be5c6cc703504
|
||||||
|
- Fixes [delayed-symfile] excessive `(no debugging symbols found)' messages.
|
||||||
|
|
||||||
* Sat Mar 7 2009 Jan Kratochvil <jan.kratochvil@redhat.com> - 6.8.50.20090302-5
|
* Sat Mar 7 2009 Jan Kratochvil <jan.kratochvil@redhat.com> - 6.8.50.20090302-5
|
||||||
- Improve `gdb-6.6-buildid-locate-rpm.patch' by dlopen() (+pkg-config compat.).
|
- Improve `gdb-6.6-buildid-locate-rpm.patch' by dlopen() (+pkg-config compat.).
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user