http://sourceware.org/ml/gdb-patches/2013-05/msg00042.html Subject: [patch] Fix gcore for vDSO (on ppc64) Hi, on ppc64 GNU/Linux one gets in live process or kernel-generated core file: #0 0x00003fff9e946b3c in __pause_nocancel () from /lib64/libc.so.6 #1 0x000000001000080c in handle_alrm (signo=14) at small.c:16 #2 #3 0x00003fff9e946b3c in __pause_nocancel () from /lib64/libc.so.6 #4 0x0000000010000914 in main (argc=2, argv=0x3fffcd00dec8) at small.c:32 while with gcore generated core file one gets: #0 0x00003fff9e946b3c in __pause_nocancel () from /lib64/libc.so.6 #1 0x000000001000080c in handle_alrm (signo=14) at small.c:16 #2 0x00003fff9ea70448 in ?? () #3 0x0000000010000914 in main (argc=2, argv=0x3fffcd00dec8) at small.c:32 This is because on ppc64 GNU/Linux the signal handler frame is in vDSO (and not in libc as on x86_64 GNU/Linux). And if one has kernel-debuginfo installed GDB gcore thinks it can omit the vDSO page from core file. As vDSO cannot be reliably found from link_map it should be rather fully present in the core file. Which also gcore_create_callback tries to do but it gets mistaken by the separate debug info. It seems pretty obvious patch to me. Thanks, Jan gdb/ 2013-05-03 Jan Kratochvil * gcore.c (gcore_create_callback): Ignore sections with separate_debug_objfile_backlink != NULL. --- gdb-7.6-orig/gdb/gcore.c 2013-01-01 07:32:42.000000000 +0100 +++ gdb-7.6/gdb/gcore.c 2013-05-03 03:31:34.795312996 +0200 @@ -428,8 +428,9 @@ gcore_create_callback (CORE_ADDR vaddr, This BFD was synthesized from reading target memory, we don't want to omit that. */ - if (((vaddr >= start && vaddr + size <= end) - || (start >= vaddr && end <= vaddr + size)) + if (objfile->separate_debug_objfile_backlink == NULL + && ((vaddr >= start && vaddr + size <= end) + || (start >= vaddr && end <= vaddr + size)) && !(bfd_get_file_flags (abfd) & BFD_IN_MEMORY)) { flags &= ~(SEC_LOAD | SEC_HAS_CONTENTS);