]> git.pld-linux.org Git - packages/gdb.git/blame - gdb-bz623749-gcore-relro.patch
- updated (performance fixes).
[packages/gdb.git] / gdb-bz623749-gcore-relro.patch
CommitLineData
51a5ef0f
PS
1gdb:
2https://bugzilla.redhat.com/show_bug.cgi?id=623749
3kernel:
4https://bugzilla.redhat.com/show_bug.cgi?id=636937
5
6http://sourceware.org/ml/gdb-patches/2010-09/msg00395.html
7Subject: Re: [patch] Fix gcore writer for -Wl,-z,relro (PR corefiles/11804)
8
9gdb/testsuite/
102010-09-22 Jan Kratochvil <jan.kratochvil@redhat.com>
11
12 Fix gcore writer for -Wl,-z,relro.
13 * gdb.base/gcore-relro.exp: New file.
14 * gdb.base/gcore-relro-main.c: New file.
15 * gdb.base/gcore-relro-lib.c: New file.
16
17--- ./gdb/gcore.c 2010-09-23 20:14:56.000000000 +0200
18+++ ./gdb/gcore.c 2010-09-23 20:37:56.000000000 +0200
19@@ -401,6 +401,7 @@ gcore_create_callback (CORE_ADDR vaddr,
20
21 if (write == 0 && !solib_keep_data_in_core (vaddr, size))
22 {
23+#if 0 /* https://bugzilla.redhat.com/show_bug.cgi?id=636937 */
24 /* See if this region of memory lies inside a known file on disk.
25 If so, we can avoid copying its contents by clearing SEC_LOAD. */
26 struct objfile *objfile;
27@@ -433,6 +434,7 @@ gcore_create_callback (CORE_ADDR vaddr,
28 }
29
30 keep:
31+#endif
32 flags |= SEC_READONLY;
33 }
34
35--- /dev/null
36+++ b/gdb/testsuite/gdb.base/gcore-relro-lib.c
37@@ -0,0 +1,21 @@
38+/* Copyright 2010 Free Software Foundation, Inc.
39+
40+ This file is part of GDB.
41+
42+ This program is free software; you can redistribute it and/or modify
43+ it under the terms of the GNU General Public License as published by
44+ the Free Software Foundation; either version 3 of the License, or
45+ (at your option) any later version.
46+
47+ This program is distributed in the hope that it will be useful,
48+ but WITHOUT ANY WARRANTY; without even the implied warranty of
49+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
50+ GNU General Public License for more details.
51+
52+ You should have received a copy of the GNU General Public License
53+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
54+
55+void
56+lib (void)
57+{
58+}
59--- /dev/null
60+++ b/gdb/testsuite/gdb.base/gcore-relro-main.c
61@@ -0,0 +1,25 @@
62+/* Copyright 2010 Free Software Foundation, Inc.
63+
64+ This file is part of GDB.
65+
66+ This program is free software; you can redistribute it and/or modify
67+ it under the terms of the GNU General Public License as published by
68+ the Free Software Foundation; either version 3 of the License, or
69+ (at your option) any later version.
70+
71+ This program is distributed in the hope that it will be useful,
72+ but WITHOUT ANY WARRANTY; without even the implied warranty of
73+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
74+ GNU General Public License for more details.
75+
76+ You should have received a copy of the GNU General Public License
77+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
78+
79+extern void lib (void);
80+
81+int
82+main (void)
83+{
84+ lib ();
85+ return 0;
86+}
87--- /dev/null
88+++ b/gdb/testsuite/gdb.base/gcore-relro.exp
89@@ -0,0 +1,80 @@
90+# Copyright 2010 Free Software Foundation, Inc.
91+
92+# This program is free software; you can redistribute it and/or modify
93+# it under the terms of the GNU General Public License as published by
94+# the Free Software Foundation; either version 3 of the License, or
95+# (at your option) any later version.
96+#
97+# This program is distributed in the hope that it will be useful,
98+# but WITHOUT ANY WARRANTY; without even the implied warranty of
99+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
100+# GNU General Public License for more details.
101+#
102+# You should have received a copy of the GNU General Public License
103+# along with this program. If not, see <http://www.gnu.org/licenses/>.
104+
105+if {[skip_shlib_tests]} {
106+ return 0
107+}
108+
109+set testfile "gcore-relro"
110+set srcmainfile ${testfile}-main.c
111+set srclibfile ${testfile}-lib.c
112+set libfile ${objdir}/${subdir}/${testfile}-lib.so
113+set objfile ${objdir}/${subdir}/${testfile}-main.o
114+set executable ${testfile}-main
115+set binfile ${objdir}/${subdir}/${executable}
116+set gcorefile ${objdir}/${subdir}/${executable}.gcore
117+
118+if { [gdb_compile_shlib ${srcdir}/${subdir}/${srclibfile} ${libfile} {debug}] != ""
119+ || [gdb_compile ${srcdir}/${subdir}/${srcmainfile} ${objfile} object {debug}] != "" } {
120+ untested ${testfile}.exp
121+ return -1
122+}
123+set opts [list debug shlib=${libfile} additional_flags=-Wl,-z,relro]
124+if { [gdb_compile ${objfile} ${binfile} executable $opts] != "" } {
125+ unsupported "-Wl,-z,relro compilation failed"
126+ return -1
127+}
128+
129+clean_restart $executable
130+gdb_load_shlibs $libfile
131+
132+# Does this gdb support gcore?
133+set test "help gcore"
134+gdb_test_multiple $test $test {
135+ -re "Undefined command: .gcore.*\r\n$gdb_prompt $" {
136+ # gcore command not supported -- nothing to test here.
137+ unsupported "gdb does not support gcore on this target"
138+ return -1;
139+ }
140+ -re "Save a core file .*\r\n$gdb_prompt $" {
141+ pass $test
142+ }
143+}
144+
145+if { ![runto lib] } then {
146+ return -1
147+}
148+
149+set escapedfilename [string_to_regexp ${gcorefile}]
150+
151+set test "save a corefile"
152+gdb_test_multiple "gcore ${gcorefile}" $test {
153+ -re "Saved corefile ${escapedfilename}\r\n$gdb_prompt $" {
154+ pass $test
155+ }
156+ -re "Can't create a corefile\r\n$gdb_prompt $" {
157+ unsupported $test
158+ return -1
159+ }
160+}
161+
162+# Now restart gdb and load the corefile.
163+
164+clean_restart $executable
165+gdb_load_shlibs $libfile
166+
167+gdb_test "core ${gcorefile}" "Core was generated by .*" "re-load generated corefile"
168+
169+gdb_test "frame" "#0 \[^\r\n\]* lib .*" "library got loaded"
This page took 0.22927 seconds and 4 git commands to generate.