]> git.pld-linux.org Git - packages/gdb.git/blame - gdb-bz528668-symfile-sepcrc.patch
- NOTE: does not build with -j2
[packages/gdb.git] / gdb-bz528668-symfile-sepcrc.patch
CommitLineData
ab050a48
BZ
1http://sourceware.org/ml/gdb-patches/2009-10/msg00507.html
2Subject: [patch 1/3] print the .debug file name having CRC mismatch
3
4Hi,
5
6this patch is left as is from Andrew Cagney.
7
8
9Thanks,
10Jan
11
12
13gdb/
142005-04-02 Andrew Cagney <cagney@gnu.org>
15
16 * symfile.c (separate_debug_file_exists): When the CRCs mismatch
17 print a warning.
18 (find_separate_debug_file): Pass in the objfile's name.
19
20gdb/testsuite/
212009-10-21 Jan Kratochvil <jan.kratochvil@redhat.com>
22
23 * gdb.base/sepdebug.exp (CRC mismatch is reported): New test.
24 * gdb.base/sepdebug2.c: New file.
25
26--- a/gdb/symfile.c
27+++ b/gdb/symfile.c
28@@ -1283,7 +1283,8 @@ get_debug_link_info (struct objfile *objfile, unsigned long *crc32_out)
29 }
30
31 static int
32-separate_debug_file_exists (const char *name, unsigned long crc)
33+separate_debug_file_exists (const char *name, unsigned long crc,
34+ const char *parent_name)
35 {
36 unsigned long file_crc = 0;
37 bfd *abfd;
38@@ -1303,7 +1304,15 @@ separate_debug_file_exists (const char *name, unsigned long crc)
39
40 bfd_close (abfd);
41
42- return crc == file_crc;
43+ if (crc != file_crc)
44+ {
45+ warning (_("the debug information found in \"%s\""
46+ " does not match \"%s\" (CRC mismatch).\n"),
47+ name, parent_name);
48+ return 0;
49+ }
50+
51+ return 1;
52 }
53
54 char *debug_file_directory = NULL;
55@@ -1355,6 +1364,8 @@ find_separate_debug_file (struct objfile *objfile)
56 basename = get_debug_link_info (objfile, &crc32);
57
58 if (basename == NULL)
59+ /* There's no separate debug info, hence there's no way we could
60+ load it => no warning. */
61 return NULL;
62
63 dir = xstrdup (objfile->name);
64@@ -1388,7 +1399,7 @@ find_separate_debug_file (struct objfile *objfile)
65 strcpy (debugfile, dir);
66 strcat (debugfile, basename);
67
68- if (separate_debug_file_exists (debugfile, crc32))
69+ if (separate_debug_file_exists (debugfile, crc32, objfile->name))
70 {
71 xfree (basename);
72 xfree (dir);
73@@ -1402,7 +1413,7 @@ find_separate_debug_file (struct objfile *objfile)
74 strcat (debugfile, "/");
75 strcat (debugfile, basename);
76
77- if (separate_debug_file_exists (debugfile, crc32))
78+ if (separate_debug_file_exists (debugfile, crc32, objfile->name))
79 {
80 xfree (basename);
81 xfree (dir);
82@@ -1416,7 +1427,7 @@ find_separate_debug_file (struct objfile *objfile)
83 strcat (debugfile, dir);
84 strcat (debugfile, basename);
85
86- if (separate_debug_file_exists (debugfile, crc32))
87+ if (separate_debug_file_exists (debugfile, crc32, objfile->name))
88 {
89 xfree (basename);
90 xfree (dir);
91@@ -1435,7 +1446,7 @@ find_separate_debug_file (struct objfile *objfile)
92 strcat (debugfile, "/");
93 strcat (debugfile, basename);
94
95- if (separate_debug_file_exists (debugfile, crc32))
96+ if (separate_debug_file_exists (debugfile, crc32, objfile->name))
97 {
98 xfree (canon_name);
99 xfree (basename);
100--- a/gdb/testsuite/gdb.base/sepdebug.exp
101+++ b/gdb/testsuite/gdb.base/sepdebug.exp
102@@ -952,6 +952,23 @@ set debugfile "${objdir}/${subdir}/${testfile}.debug"
103 test_different_dir debuglink "${objdir}/${subdir}" 0
104
105
106+# Test CRC mismatch is reported.
107+
108+if {[build_executable sepdebug.exp sepdebug2 sepdebug2.c debug] != -1
109+ && ![gdb_gnu_strip_debug ${objdir}/${subdir}/sepdebug2]} {
110+
111+ remote_exec build "cp ${debugfile} ${objdir}/${subdir}/.debug/sepdebug2.debug"
112+
113+ gdb_exit
114+ gdb_start
115+ gdb_reinitialize_dir $srcdir/$subdir
116+
117+ set escapedobjdirsubdir [string_to_regexp ${objdir}/${subdir}]
118+
119+ gdb_test "file ${objdir}/${subdir}/sepdebug2" "warning: the debug information found in \"${escapedobjdirsubdir}/\\.debug/sepdebug2\\.debug\" does not match \"${escapedobjdirsubdir}/sepdebug2\" \\(CRC mismatch\\)\\..*\\(no debugging symbols found\\).*" "CRC mismatch is reported"
120+}
121+
122+
123 # NT_GNU_BUILD_ID / .note.gnu.build-id test:
124
125 set build_id_debug_filename [build_id_debug_filename_get $binfile]
126--- /dev/null
127+++ b/gdb/testsuite/gdb.base/sepdebug2.c
128@@ -0,0 +1,22 @@
129+/* This testcase is part of GDB, the GNU debugger.
130+
131+ Copyright 2009 Free Software Foundation, Inc.
132+
133+ This program is free software; you can redistribute it and/or modify
134+ it under the terms of the GNU General Public License as published by
135+ the Free Software Foundation; either version 3 of the License, or
136+ (at your option) any later version.
137+
138+ This program is distributed in the hope that it will be useful,
139+ but WITHOUT ANY WARRANTY; without even the implied warranty of
140+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
141+ GNU General Public License for more details.
142+
143+ You should have received a copy of the GNU General Public License
144+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
145+
146+int
147+main (void)
148+{
149+ return 0;
150+}
151
This page took 0.047294 seconds and 4 git commands to generate.