summaryrefslogtreecommitdiffstats
path: root/bfd/corefile.c
diff options
context:
space:
mode:
authorJoel Brobecker <brobecker@gnat.com>2005-12-23 10:19:40 +0000
committerJoel Brobecker <brobecker@gnat.com>2005-12-23 10:19:40 +0000
commit69d246d9338a35e64b2244835ac6e77164be668a (patch)
tree65c68c432493e0ca357e69aada00e2ab901b8e57 /bfd/corefile.c
parent97938b6077335c1514876a2a0199ad4a92167537 (diff)
downloadppe42-binutils-69d246d9338a35e64b2244835ac6e77164be668a.tar.gz
ppe42-binutils-69d246d9338a35e64b2244835ac6e77164be668a.zip
* corefile.c (generic_core_file_matches_executable_p): New function.
* libbfd-in.h (generic_core_file_matches_executable_p): Add declaration. * libbfd.h: Regenerate. * hpux-core.c: ANSIfy function declarations and prototypes. (thread_section_p): Manually expand bfd_section_name macro to make it clear that parameter ABFD is not used. (hpux_core_core_file_matches_executable_p): Delete, replaced by macro pointing to generic_core_file_matches_executable_p. * aix386-core.c: Replace core_file_matches_executable_p null implementation by generic_core_file_matches_executable_p by using a macro. * aix5ppc-core.c: Likewise. * cisco-core.c: Likewise. * hppabsd-core.c: Likewise. * irix-core.c: Likewise. * lynx-core.c: Likewise. * mach-o.c: Likewise. * netbsd-core.c: Likewise. * osf-core.c: Likewise. * ptrace-core.c: Likewise. * sco5-core.c: Likewise. * trad-core.c: Likewise.
Diffstat (limited to 'bfd/corefile.c')
-rw-r--r--bfd/corefile.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/bfd/corefile.c b/bfd/corefile.c
index adc5b4ac88..aaf888bcec 100644
--- a/bfd/corefile.c
+++ b/bfd/corefile.c
@@ -107,3 +107,59 @@ core_file_matches_executable_p (bfd *core_bfd, bfd *exec_bfd)
return BFD_SEND (core_bfd, _core_file_matches_executable_p,
(core_bfd, exec_bfd));
}
+
+/*
+FUNCTION
+ generic_core_file_matches_executable_p
+
+SYNOPSIS
+ bfd_boolean generic_core_file_matches_executable_p
+ (bfd *core_bfd, bfd *exec_bfd)
+
+DESCRIPTION
+ Return TRUE if the core file attached to @var{core_bfd}
+ was generated by a run of the executable file attached
+ to @var{exec_bfd}. The match is based on executable
+ basenames only.
+
+ Note: When not able to determine the core file failing
+ command or the executable name, we still return TRUE even
+ though we're not sure that core file and executable match.
+ This is to avoid generating a false warning in situations
+ where we really don't know whether they match or not.
+*/
+
+bfd_boolean
+generic_core_file_matches_executable_p (bfd *core_bfd, bfd *exec_bfd)
+{
+ char *exec;
+ char *core;
+ char *last_slash;
+
+ if (exec_bfd == NULL || core_bfd == NULL)
+ return TRUE;
+
+ /* The cast below is to avoid a compiler warning due to the assignment
+ of the const char * returned by bfd_core_file_failing_command to a
+ non-const char *. In this case, the assignement does not lead to
+ breaking the const, as we're only reading the string. */
+
+ core = (char *) bfd_core_file_failing_command (core_bfd);
+ if (core == NULL)
+ return TRUE;
+
+ exec = bfd_get_filename (exec_bfd);
+ if (exec == NULL)
+ return TRUE;
+
+ last_slash = strrchr (core, '/');
+ if (last_slash != NULL)
+ core = last_slash + 1;
+
+ last_slash = strrchr (exec, '/');
+ if (last_slash != NULL)
+ exec = last_slash + 1;
+
+ return strcmp (exec, core) == 0;
+}
+
OpenPOWER on IntegriCloud