diff options
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.patch | 256 |
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 @@ | |||
1 | From 02cefdaa6429e620d6457fdb3ad9934f194c5a93 Mon Sep 17 00:00:00 2001 | ||
2 | From: Kurt Roeckx <kurt@roeckx.be> | ||
3 | Date: Tue, 22 Apr 2014 21:46:22 +0200 | ||
4 | Subject: [PATCH] Unwinding is only supported on Linux | ||
5 | |||
6 | Index: 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; | ||
19 | Index: 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; | ||
32 | Index: 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 | + | ||
133 | Index: 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 | + | ||
163 | Index: 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 | |||
185 | Index: 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 | + | ||
215 | Index: 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 | |||
227 | Index: 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 | + | ||