projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix crash when exiting TUI with gdb -tui
[deliverable/binutils-gdb.git]
/
gdb
/
remote.c
diff --git
a/gdb/remote.c
b/gdb/remote.c
index 5b1fa848536aa5fd07c690551f35e8d5826ee2de..c73eb6e9e136f4d611aeb631b3641ceda5b238b1 100644
(file)
--- a/
gdb/remote.c
+++ b/
gdb/remote.c
@@
-2615,8
+2615,7
@@
remote_target::pass_signals (gdb::array_view<const unsigned char> pass_signals)
putpkt (pass_packet);
getpkt (&rs->buf, 0);
packet_ok (rs->buf, &remote_protocol_packets[PACKET_QPassSignals]);
putpkt (pass_packet);
getpkt (&rs->buf, 0);
packet_ok (rs->buf, &remote_protocol_packets[PACKET_QPassSignals]);
- if (rs->last_pass_packet)
- xfree (rs->last_pass_packet);
+ xfree (rs->last_pass_packet);
rs->last_pass_packet = pass_packet;
}
else
rs->last_pass_packet = pass_packet;
}
else
@@
-4105,7
+4104,6
@@
remote_target::get_offsets ()
char *ptr;
int lose, num_segments = 0, do_sections, do_segments;
CORE_ADDR text_addr, data_addr, bss_addr, segments[2];
char *ptr;
int lose, num_segments = 0, do_sections, do_segments;
CORE_ADDR text_addr, data_addr, bss_addr, segments[2];
- struct symfile_segment_data *data;
if (symfile_objfile == NULL)
return;
if (symfile_objfile == NULL)
return;
@@
-4185,7
+4183,8
@@
remote_target::get_offsets ()
section_offsets offs = symfile_objfile->section_offsets;
section_offsets offs = symfile_objfile->section_offsets;
- data = get_symfile_segment_data (symfile_objfile->obfd);
+ symfile_segment_data_up data
+ = get_symfile_segment_data (symfile_objfile->obfd);
do_segments = (data != NULL);
do_sections = num_segments == 0;
do_segments = (data != NULL);
do_sections = num_segments == 0;
@@
-4198,10
+4197,10
@@
remote_target::get_offsets ()
by assuming that the .text and .data offsets apply to the whole
text and data segments. Convert the offsets given in the packet
to base addresses for symfile_map_offsets_to_segments. */
by assuming that the .text and .data offsets apply to the whole
text and data segments. Convert the offsets given in the packet
to base addresses for symfile_map_offsets_to_segments. */
- else if (data
&& data->num_segments
== 2)
+ else if (data
!= nullptr && data->segments.size ()
== 2)
{
{
- segments[0] = data->segment
_bases[0]
+ text_addr;
- segments[1] = data->segment
_bases[1]
+ data_addr;
+ segments[0] = data->segment
s[0].base
+ text_addr;
+ segments[1] = data->segment
s[1].base
+ data_addr;
num_segments = 2;
}
/* If the object file has only one segment, assume that it is text
num_segments = 2;
}
/* If the object file has only one segment, assume that it is text
@@
-4209,9
+4208,9
@@
remote_target::get_offsets ()
but programs with no code are useless. Of course the code might
have ended up in the data segment... to detect that we would need
the permissions here. */
but programs with no code are useless. Of course the code might
have ended up in the data segment... to detect that we would need
the permissions here. */
- else if (data && data->
num_segments
== 1)
+ else if (data && data->
segments.size ()
== 1)
{
{
- segments[0] = data->segment
_bases[0]
+ text_addr;
+ segments[0] = data->segment
s[0].base
+ text_addr;
num_segments = 1;
}
/* There's no way to relocate by segment. */
num_segments = 1;
}
/* There's no way to relocate by segment. */
@@
-4220,8
+4219,9
@@
remote_target::get_offsets ()
if (do_segments)
{
if (do_segments)
{
- int ret = symfile_map_offsets_to_segments (symfile_objfile->obfd, data,
- offs, num_segments, segments);
+ int ret = symfile_map_offsets_to_segments (symfile_objfile->obfd,
+ data.get (), offs,
+ num_segments, segments);
if (ret == 0 && !do_sections)
error (_("Can not handle qOffsets TextSeg "
if (ret == 0 && !do_sections)
error (_("Can not handle qOffsets TextSeg "
@@
-4231,9
+4231,6
@@
remote_target::get_offsets ()
do_sections = 0;
}
do_sections = 0;
}
- if (data)
- free_symfile_segment_data (data);
-
if (do_sections)
{
offs[SECT_OFF_TEXT (symfile_objfile)] = text_addr;
if (do_sections)
{
offs[SECT_OFF_TEXT (symfile_objfile)] = text_addr;
@@
-14876,5
+14873,5
@@
Specify \"unlimited\" to display all the characters."),
&setdebuglist, &showdebuglist);
/* Eventually initialize fileio. See fileio.c */
&setdebuglist, &showdebuglist);
/* Eventually initialize fileio. See fileio.c */
- initialize_remote_fileio (
remote_set_cmdlist,
remote_show_cmdlist);
+ initialize_remote_fileio (
&remote_set_cmdlist, &
remote_show_cmdlist);
}
}
This page took
0.026401 seconds
and
4
git commands to generate.