ChangeLog:

2013-09-25  Andreas Arnez  <arnez@linux.vnet.ibm.com>

	PR shlibs/8882
	* solib-svr4.c (svr4_read_so_list): Skip the vDSO when reading
	link map entries.

testsuite/ChangeLog:
2013-09-25  Andreas Arnez  <arnez@linux.vnet.ibm.com>

	PR shlibs/8882
	* gdb.base/corefile.exp: Add a check to assure warning-free
	core-file load.
This commit is contained in:
Ulrich Weigand 2013-09-25 11:52:50 +00:00
parent 020f703635
commit 7d760051ff
4 changed files with 38 additions and 2 deletions

View File

@ -1,3 +1,9 @@
2013-09-25 Andreas Arnez <arnez@linux.vnet.ibm.com>
PR shlibs/8882
* solib-svr4.c (svr4_read_so_list): Skip the vDSO when reading
link map entries.
2013-09-24 Doug Evans <dje@google.com>
* objfiles.c (free_objfile): Move comment.

View File

@ -1310,6 +1310,7 @@ static int
svr4_read_so_list (CORE_ADDR lm, CORE_ADDR prev_lm,
struct so_list ***link_ptr_ptr, int ignore_first)
{
struct so_list *first = NULL;
CORE_ADDR next_lm;
for (; lm != 0; prev_lm = lm, lm = next_lm)
@ -1349,6 +1350,7 @@ svr4_read_so_list (CORE_ADDR lm, CORE_ADDR prev_lm,
{
struct svr4_info *info = get_svr4_info ();
first = new;
info->main_lm_addr = new->lm_info->lm_addr;
do_cleanups (old_chain);
continue;
@ -1359,8 +1361,14 @@ svr4_read_so_list (CORE_ADDR lm, CORE_ADDR prev_lm,
SO_NAME_MAX_PATH_SIZE - 1, &errcode);
if (errcode != 0)
{
warning (_("Can't read pathname for load map: %s."),
safe_strerror (errcode));
/* If this entry's l_name address matches that of the
inferior executable, then this is not a normal shared
object, but (most likely) a vDSO. In this case, silently
skip it; otherwise emit a warning. */
if (first == NULL
|| new->lm_info->l_name != first->lm_info->l_name)
warning (_("Can't read pathname for load map: %s."),
safe_strerror (errcode));
do_cleanups (old_chain);
continue;
}

View File

@ -1,3 +1,9 @@
2013-09-25 Andreas Arnez <arnez@linux.vnet.ibm.com>
PR shlibs/8882
* gdb.base/corefile.exp: Add a check to assure warning-free
core-file load.
2013-09-24 Jan Kratochvil <jan.kratochvil@redhat.com>
* gdb.dwarf2/dwp-symlink.c: New file.

View File

@ -255,3 +255,19 @@ if ![is_remote target] {
gdb_exit
}
# Test warning-free core file load. E.g., a Linux vDSO used to
# trigger this warning:
# warning: Can't read pathname for load map: Input/output error.
clean_restart ${testfile}
set test "core-file warning-free"
gdb_test_multiple "core-file $corefile" $test {
-re "warning: .*\r\n.*\r\n$gdb_prompt $" {
fail $test
}
-re "\r\n$gdb_prompt $" {
pass $test
}
}