diff options
author | Joel Brobecker <brobecker@gnat.com> | 2005-12-23 10:19:40 +0000 |
---|---|---|
committer | Joel Brobecker <brobecker@gnat.com> | 2005-12-23 10:19:40 +0000 |
commit | 69d246d9338a35e64b2244835ac6e77164be668a (patch) | |
tree | 65c68c432493e0ca357e69aada00e2ab901b8e57 /bfd/corefile.c | |
parent | 97938b6077335c1514876a2a0199ad4a92167537 (diff) | |
download | fsf-binutils-gdb-69d246d9338a35e64b2244835ac6e77164be668a.zip fsf-binutils-gdb-69d246d9338a35e64b2244835ac6e77164be668a.tar.gz fsf-binutils-gdb-69d246d9338a35e64b2244835ac6e77164be668a.tar.bz2 |
* 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.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/bfd/corefile.c b/bfd/corefile.c index adc5b4a..aaf888bc 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; +} + |