summaryrefslogtreecommitdiffstats
path: root/meta/recipes-devtools/elfutils/elfutils-0.158/unwind_non_linux.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/recipes-devtools/elfutils/elfutils-0.158/unwind_non_linux.patch')
-rw-r--r--meta/recipes-devtools/elfutils/elfutils-0.158/unwind_non_linux.patch256
1 files changed, 256 insertions, 0 deletions
diff --git a/meta/recipes-devtools/elfutils/elfutils-0.158/unwind_non_linux.patch b/meta/recipes-devtools/elfutils/elfutils-0.158/unwind_non_linux.patch
new file mode 100644
index 0000000000..870ec23703
--- /dev/null
+++ b/meta/recipes-devtools/elfutils/elfutils-0.158/unwind_non_linux.patch
@@ -0,0 +1,256 @@
1From 02cefdaa6429e620d6457fdb3ad9934f194c5a93 Mon Sep 17 00:00:00 2001
2From: Kurt Roeckx <kurt@roeckx.be>
3Date: Tue, 22 Apr 2014 21:46:22 +0200
4Subject: [PATCH] Unwinding is only supported on Linux
5
6Index: elfutils-0.158/backends/i386_initreg.c
7===================================================================
8--- elfutils-0.158.orig/backends/i386_initreg.c 2014-05-01 17:11:18.870616302 +0000
9+++ elfutils-0.158/backends/i386_initreg.c 2014-05-01 17:11:18.866616384 +0000
10@@ -44,7 +44,7 @@
11 ebl_tid_registers_t *setfunc __attribute__ ((unused)),
12 void *arg __attribute__ ((unused)))
13 {
14-#if !defined __i386__ && !defined __x86_64__
15+#if (!defined __i386__ && !defined __x86_64__) || !defined(__linux__)
16 return false;
17 #else /* __i386__ || __x86_64__ */
18 struct user_regs_struct user_regs;
19Index: elfutils-0.158/backends/x86_64_initreg.c
20===================================================================
21--- elfutils-0.158.orig/backends/x86_64_initreg.c 2014-05-01 17:11:18.870616302 +0000
22+++ elfutils-0.158/backends/x86_64_initreg.c 2014-05-01 17:11:18.866616384 +0000
23@@ -44,7 +44,7 @@
24 ebl_tid_registers_t *setfunc __attribute__ ((unused)),
25 void *arg __attribute__ ((unused)))
26 {
27-#ifndef __x86_64__
28+#if !defined(__x86_64__) || !defined(__linux__)
29 return false;
30 #else /* __x86_64__ */
31 struct user_regs_struct user_regs;
32Index: elfutils-0.158/libdwfl/linux-pid-attach.c
33===================================================================
34--- elfutils-0.158.orig/libdwfl/linux-pid-attach.c 2014-05-01 17:11:18.870616302 +0000
35+++ elfutils-0.158/libdwfl/linux-pid-attach.c 2014-05-01 17:12:47.980766442 +0000
36@@ -37,6 +37,8 @@
37 # define MAX(a, b) ((a) > (b) ? (a) : (b))
38 #endif
39
40+#ifdef __linux__
41+
42 struct pid_arg
43 {
44 DIR *dir;
45@@ -358,3 +360,87 @@
46 return 0;
47 }
48 INTDEF (dwfl_linux_proc_attach)
49+
50+#else /* __linux__ */
51+
52+static pid_t
53+pid_next_thread (Dwfl *dwfl __attribute__ ((unused)),
54+ void *dwfl_arg __attribute__ ((unused)),
55+ void **thread_argp __attribute__ ((unused)))
56+{
57+ errno = ENOSYS;
58+ __libdwfl_seterrno (DWFL_E_ERRNO);
59+ return -1;
60+}
61+
62+static bool
63+pid_getthread (Dwfl *dwfl __attribute__ ((unused)),
64+ pid_t tid __attribute__ ((unused)),
65+ void *dwfl_arg __attribute__ ((unused)),
66+ void **thread_argp __attribute__ ((unused)))
67+{
68+ errno = ENOSYS;
69+ __libdwfl_seterrno (DWFL_E_ERRNO);
70+ return false;
71+}
72+
73+static bool
74+pid_memory_read (Dwfl *dwfl __attribute__ ((unused)),
75+ Dwarf_Addr addr __attribute__ ((unused)),
76+ Dwarf_Word *result __attribute__ ((unused)),
77+ void *arg __attribute__ ((unused)))
78+{
79+ errno = ENOSYS;
80+ __libdwfl_seterrno (DWFL_E_ERRNO);
81+ return false;
82+}
83+
84+static bool
85+pid_set_initial_registers (Dwfl_Thread *thread __attribute__ ((unused)),
86+ void *thread_arg __attribute__ ((unused)))
87+{
88+ errno = ENOSYS;
89+ __libdwfl_seterrno (DWFL_E_ERRNO);
90+ return false;
91+}
92+
93+static void
94+pid_detach (Dwfl *dwfl __attribute__ ((unused)),
95+ void *dwfl_arg __attribute__ ((unused)))
96+{
97+}
98+
99+static void
100+pid_thread_detach (Dwfl_Thread *thread __attribute__ ((unused)),
101+ void *thread_arg __attribute__ ((unused)))
102+{
103+}
104+
105+static const Dwfl_Thread_Callbacks pid_thread_callbacks =
106+{
107+ pid_next_thread,
108+ pid_getthread,
109+ pid_memory_read,
110+ pid_set_initial_registers,
111+ pid_detach,
112+ pid_thread_detach,
113+};
114+
115+int
116+dwfl_linux_proc_attach (Dwfl *dwfl __attribute__ ((unused)),
117+ pid_t pid __attribute__ ((unused)),
118+ bool assume_ptrace_stopped __attribute__ ((unused)))
119+{
120+ return ENOSYS;
121+}
122+INTDEF (dwfl_linux_proc_attach)
123+
124+struct __libdwfl_pid_arg *
125+internal_function
126+__libdwfl_get_pid_arg (Dwfl *dwfl __attribute__ ((unused)))
127+{
128+ return NULL;
129+}
130+
131+#endif /* ! __linux __ */
132+
133Index: elfutils-0.158/tests/backtrace-child.c
134===================================================================
135--- elfutils-0.158.orig/tests/backtrace-child.c 2014-05-01 17:11:18.870616302 +0000
136+++ elfutils-0.158/tests/backtrace-child.c 2014-05-01 17:11:18.866616384 +0000
137@@ -79,6 +79,18 @@
138 #include <stdio.h>
139 #include <unistd.h>
140
141+#ifndef __linux__
142+
143+int
144+main (int argc __attribute__ ((unused)), char **argv)
145+{
146+ fprintf (stderr, "%s: Unwinding not supported for this architecture\n",
147+ argv[0]);
148+ return 77;
149+}
150+
151+#else /* __linux__ */
152+
153 #if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 5)
154 #define NOINLINE_NOCLONE __attribute__ ((noinline, noclone))
155 #else
156@@ -221,3 +233,6 @@
157 /* Not reached. */
158 abort ();
159 }
160+
161+#endif /* ! __linux__ */
162+
163Index: elfutils-0.158/tests/backtrace-data.c
164===================================================================
165--- elfutils-0.158.orig/tests/backtrace-data.c 2014-05-01 17:11:18.870616302 +0000
166+++ elfutils-0.158/tests/backtrace-data.c 2014-05-01 17:11:18.866616384 +0000
167@@ -40,7 +40,7 @@
168 #include <string.h>
169 #include ELFUTILS_HEADER(dwfl)
170
171-#ifndef __x86_64__
172+#if !defined(__x86_64__) || !defined(__linux__)
173
174 int
175 main (int argc __attribute__ ((unused)), char **argv)
176@@ -50,7 +50,7 @@
177 return 77;
178 }
179
180-#else /* __x86_64__ */
181+#else /* __x86_64__ && __linux__ */
182
183 /* The only arch specific code is set_initial_registers. */
184
185Index: elfutils-0.158/tests/backtrace-dwarf.c
186===================================================================
187--- elfutils-0.158.orig/tests/backtrace-dwarf.c 2014-05-01 17:11:18.870616302 +0000
188+++ elfutils-0.158/tests/backtrace-dwarf.c 2014-05-01 17:11:18.866616384 +0000
189@@ -25,6 +25,18 @@
190 #include <sys/ptrace.h>
191 #include ELFUTILS_HEADER(dwfl)
192
193+#ifndef __linux__
194+
195+int
196+main (int argc __attribute__ ((unused)), char **argv)
197+{
198+ fprintf (stderr, "%s: Unwinding not supported for this architecture\n",
199+ argv[0]);
200+ return 77;
201+}
202+
203+#else /* __linux__ */
204+
205 static void cleanup_13_abort (void);
206 #define main cleanup_13_main
207 #include "cleanup-13.c"
208@@ -148,3 +160,6 @@
209 /* There is an exit (0) call if we find the "main" frame, */
210 error (1, 0, "dwfl_getthreads: %s", dwfl_errmsg (-1));
211 }
212+
213+#endif /* ! __linux__ */
214+
215Index: elfutils-0.158/tests/backtrace-subr.sh
216===================================================================
217--- elfutils-0.158.orig/tests/backtrace-subr.sh 2014-05-01 17:11:18.870616302 +0000
218+++ elfutils-0.158/tests/backtrace-subr.sh 2014-05-01 17:11:18.866616384 +0000
219@@ -84,6 +84,7 @@
220 echo ./backtrace ./backtrace.$arch.{exec,core}
221 testrun ${abs_builddir}/backtrace -e ./backtrace.$arch.exec --core=./backtrace.$arch.core 1>backtrace.$arch.bt 2>backtrace.$arch.err || true
222 cat backtrace.$arch.{bt,err}
223+ check_unsupported backtrace.$arch.err backtrace.$arch.core
224 check_all backtrace.$arch.{bt,err} backtrace.$arch.core
225 }
226
227Index: elfutils-0.158/tests/backtrace.c
228===================================================================
229--- elfutils-0.158.orig/tests/backtrace.c 2014-05-01 17:11:18.870616302 +0000
230+++ elfutils-0.158/tests/backtrace.c 2014-05-01 17:11:18.866616384 +0000
231@@ -39,6 +39,18 @@
232 #include <sys/syscall.h>
233 #include ELFUTILS_HEADER(dwfl)
234
235+#ifndef __linux__
236+
237+int
238+main (int argc __attribute__ ((unused)), char **argv)
239+{
240+ fprintf (stderr, "%s: Unwinding not supported for this architecture\n",
241+ argv[0]);
242+ return 77;
243+}
244+
245+#else /* __linux__ */
246+
247 static int
248 dump_modules (Dwfl_Module *mod, void **userdata __attribute__ ((unused)),
249 const char *name, Dwarf_Addr start,
250@@ -452,3 +464,6 @@
251 dwfl_end (dwfl);
252 return 0;
253 }
254+
255+#endif /* ! __linux__ */
256+