1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
|
graphic: 0.973
assembly: 0.970
semantic: 0.970
device: 0.967
socket: 0.965
instruction: 0.961
network: 0.960
other: 0.956
vnc: 0.948
KVM: 0.916
boot: 0.904
mistranslation: 0.884
Build of v2.1.0 fails on armv7l due to undeclared __NR_select
After `make clean` and `git clean -x -f -d` `git checkout v2.1.0 && configure --prefix=/home/user/prefix-qemu-2.1.0 && make` fails due to missing declarations
CC qemu-seccomp.o
qemu-seccomp.c:28:1: error: '__NR_select' undeclared here (not in a function)
qemu-seccomp.c:36:1: error: '__NR_mmap' undeclared here (not in a function)
qemu-seccomp.c:57:1: error: '__NR_getrlimit' undeclared here (not in a function)
qemu-seccomp.c:96:1: error: '__NR_time' undeclared here (not in a function)
GEN qmp-marshal.c
qemu-seccomp.c:186:1: error: '__NR_alarm' undeclared here (not in a function)
make: *** [qemu-seccomp.o] Error 1
Same errors for master 8b3030114a449e66c68450acaac4b66f26d91416. `configure`should not succeed for a failing build. `config.log` for v2.1.0 and 8b303011... attached. I'm building on a debian 7.6 chroot on Synology DSM 5.0. `uname -a` says `Linux diskstatation 3.2.40 #4493 SMP Thu Aug 21 21:43:02 CST 2014 armv7l GNU/Linux`.
On 31 August 2014 13:06, Karl-Philipp Richter <email address hidden> wrote:.
> `configure`should not succeed for a failing build.
Your compile failures are definitely bugs, but it isn't expected that
configure will detect all possible kinds of build failure
in advance.
For what it's worth I always build on ARM as part of my
checks before merging things to master, so this issue isn't
"all armv7l builds are broken" but something more specific
(probably some optional bits of the build which my build
platform doesn't have the dependencies for.)
> qemu-seccomp.c:186:1: error: '__NR_alarm' undeclared here (not in a function)
> make: *** [qemu-seccomp.o] Error 1
Ccing Eduardo for the seccomp compile issues.
> + After installing some of the missing header files (-> configure should
> + fail at the right point with a good error message), i.e. `apt-get
> + install liblzo2-dev libbsd-dev syslinux-common libhwloc-dev librdmacm-
> + dev libsnappy-dev libibverbs-dev valgrind linux-headers-3.2.0-4-common`
> + I'm getting
> +
> + CC migration-rdma.o
> + migration-rdma.c: In function 'ram_chunk_start':
> + migration-rdma.c:523:12: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
This probably hasn't been tested on a 32 bit build system :-(
I suggest you work around these bugs by passing configure
--disable-rdma --disable-seccomp while we fix things...
thanks
-- PMM
(cc'ing Michael Hines who owns and knows the RDMA code)
* Karl-Philipp Richter (<email address hidden>) wrote:
> ** Description changed:
>
> After `make clean` and `git clean -x -f -d` `git checkout v2.1.0 &&
> configure --prefix=/home/user/prefix-qemu-2.1.0 && make` fails due to
> missing declarations
>
> CC qemu-seccomp.o
> qemu-seccomp.c:28:1: error: '__NR_select' undeclared here (not in a function)
> qemu-seccomp.c:36:1: error: '__NR_mmap' undeclared here (not in a function)
> qemu-seccomp.c:57:1: error: '__NR_getrlimit' undeclared here (not in a function)
> qemu-seccomp.c:96:1: error: '__NR_time' undeclared here (not in a function)
> GEN qmp-marshal.c
> qemu-seccomp.c:186:1: error: '__NR_alarm' undeclared here (not in a function)
> make: *** [qemu-seccomp.o] Error 1
>
> Same errors for master 8b3030114a449e66c68450acaac4b66f26d91416.
> `configure`should not succeed for a failing build. `config.log` for
> v2.1.0 and 8b303011... attached. The content is mostly compiler output
> which I think is unusual for `config.log`, but see for yourself.
>
> I'm building on a debian 7.6 chroot on Synology DSM 5.0. `uname -a` says
> `Linux diskstatation 3.2.40 #4493 SMP Thu Aug 21 21:43:02 CST 2014
> armv7l GNU/Linux`.
> +
> + After installing some of the missing header files (-> configure should
> + fail at the right point with a good error message), i.e. `apt-get
> + install liblzo2-dev libbsd-dev syslinux-common libhwloc-dev librdmacm-
> + dev libsnappy-dev libibverbs-dev valgrind linux-headers-3.2.0-4-common`
> + I'm getting
> +
> + CC migration-rdma.o
> + migration-rdma.c: In function 'ram_chunk_start':
> + migration-rdma.c:523:12: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
is that:
return (uint8_t *) (((uintptr_t) rdma_ram_block->local_host_addr)
+ (i << RDMA_REG_CHUNK_SHIFT));
244: uint8_t *local_host_addr; /* local virtual address */
in which case I think the problem is the 'i' which is a uint64_t.
> + migration-rdma.c: In function '__qemu_rdma_add_block':
> + migration-rdma.c:556:49: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
> + migration-rdma.c:557:49: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
> + migration-rdma.c: In function '__qemu_rdma_delete_block':
> + migration-rdma.c:664:45: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
> + migration-rdma.c:699:49: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
> + migration-rdma.c: In function 'qemu_rdma_search_ram_block':
> + migration-rdma.c:1113:49: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
> + migration-rdma.c: In function 'qemu_rdma_register_and_get_keys':
> + migration-rdma.c:1176:50: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
> + migration-rdma.c:1177:29: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
> + migration-rdma.c:1177:51: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
> + migration-rdma.c:1178:29: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
> + migration-rdma.c: In function 'qemu_rdma_post_send_control':
> + migration-rdma.c:1562:36: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
> + migration-rdma.c: In function 'qemu_rdma_post_recv_control':
> + migration-rdma.c:1616:37: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
> + migration-rdma.c: In function 'qemu_rdma_write_one':
> + migration-rdma.c:1864:16: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
> + migration-rdma.c:1868:53: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
> + migration-rdma.c:1922:52: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
> + migration-rdma.c:1923:50: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
> + migration-rdma.c:1977:49: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
> + migration-rdma.c:1998:49: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
> + migration-rdma.c:2010:58: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
> + migration-rdma.c: In function 'qemu_rdma_registration_handle':
> + migration-rdma.c:3027:21: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
> + migration-rdma.c:3092:41: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
> + cc1: all warnings being treated as errors
> + make: *** [migration-rdma.o] Error 1
There's lots of stuff there; I think it's one for Michael because it involves understanding the structures
and which ones get passed over the wire etc.
(The quick fix would probably to guard the RDMA configure with a test for 32bit pointers)
Dave
> +
> + i.e. earlier errors than before.
>
> --
> You received this bug notification because you are a member of qemu-
> devel-ml, which is subscribed to QEMU.
> https://bugs.launchpad.net/bugs/1363641
>
> Title:
> Build of v2.1.0 fails on armv7l due to undeclared __NR_select
>
> Status in QEMU:
> New
>
> Bug description:
> After `make clean` and `git clean -x -f -d` `git checkout v2.1.0 &&
> configure --prefix=/home/user/prefix-qemu-2.1.0 && make` fails due to
> missing declarations
>
> CC qemu-seccomp.o
> qemu-seccomp.c:28:1: error: '__NR_select' undeclared here (not in a function)
> qemu-seccomp.c:36:1: error: '__NR_mmap' undeclared here (not in a function)
> qemu-seccomp.c:57:1: error: '__NR_getrlimit' undeclared here (not in a function)
> qemu-seccomp.c:96:1: error: '__NR_time' undeclared here (not in a function)
> GEN qmp-marshal.c
> qemu-seccomp.c:186:1: error: '__NR_alarm' undeclared here (not in a function)
> make: *** [qemu-seccomp.o] Error 1
>
> Same errors for master 8b3030114a449e66c68450acaac4b66f26d91416.
> `configure`should not succeed for a failing build. `config.log` for
> v2.1.0 and 8b303011... attached. The content is mostly compiler output
> which I think is unusual for `config.log`, but see for yourself.
>
> I'm building on a debian 7.6 chroot on Synology DSM 5.0. `uname -a`
> says `Linux diskstatation 3.2.40 #4493 SMP Thu Aug 21 21:43:02 CST
> 2014 armv7l GNU/Linux`.
>
> After installing some of the missing header files (-> configure should
> fail at the right point with a good error message), i.e. `apt-get
> install liblzo2-dev libbsd-dev syslinux-common libhwloc-dev librdmacm-
> dev libsnappy-dev libibverbs-dev valgrind linux-
> headers-3.2.0-4-common` I'm getting
>
> CC migration-rdma.o
> migration-rdma.c: In function 'ram_chunk_start':
> migration-rdma.c:523:12: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
> migration-rdma.c: In function '__qemu_rdma_add_block':
> migration-rdma.c:556:49: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
> migration-rdma.c:557:49: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
> migration-rdma.c: In function '__qemu_rdma_delete_block':
> migration-rdma.c:664:45: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
> migration-rdma.c:699:49: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
> migration-rdma.c: In function 'qemu_rdma_search_ram_block':
> migration-rdma.c:1113:49: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
> migration-rdma.c: In function 'qemu_rdma_register_and_get_keys':
> migration-rdma.c:1176:50: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
> migration-rdma.c:1177:29: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
> migration-rdma.c:1177:51: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
> migration-rdma.c:1178:29: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
> migration-rdma.c: In function 'qemu_rdma_post_send_control':
> migration-rdma.c:1562:36: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
> migration-rdma.c: In function 'qemu_rdma_post_recv_control':
> migration-rdma.c:1616:37: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
> migration-rdma.c: In function 'qemu_rdma_write_one':
> migration-rdma.c:1864:16: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
> migration-rdma.c:1868:53: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
> migration-rdma.c:1922:52: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
> migration-rdma.c:1923:50: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
> migration-rdma.c:1977:49: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
> migration-rdma.c:1998:49: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
> migration-rdma.c:2010:58: error: cast to pointer from integer of different size [-Werror=int-to-pointer-cast]
> migration-rdma.c: In function 'qemu_rdma_registration_handle':
> migration-rdma.c:3027:21: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
> migration-rdma.c:3092:41: error: cast from pointer to integer of different size [-Werror=pointer-to-int-cast]
> cc1: all warnings being treated as errors
> make: *** [migration-rdma.o] Error 1
>
> i.e. earlier errors than before.
>
> To manage notifications about this bug go to:
> https://bugs.launchpad.net/qemu/+bug/1363641/+subscriptions
>
--
Dr. David Alan Gilbert / <email address hidden> / Manchester, UK
On 23 September 2014 09:25, Michael R. Hines <email address hidden> wrote:
> I could use some advice from the community on this: In particular, I have
> *zero* 32-bit machine to
> fix this on........ now, I could easily create a 32-bit machine, but I
> simply don't have any RDMA hardware
> for which to run the 32-bit virtual machine against.
>
> So, what are my options? Can I just submit a patch that completely disables
> RDMA in 32-bit environments?
That's probably better than failing to compile. You might want to
at least shake out the compile errors so you can figure out if
your protocol itself has word-size issues or if it's just the
implementation that needs fixing.
I assume there's nothing inherent to RDMA that mandates 64 bit...
-- PMM
The fix for the syscalls problem is already upstream at libseccomp [0] . The maintainer said he has no plans yet to make a new release, though.
[0] -- http://sourceforge.net/p/libseccomp/mailman/libseccomp-discuss/thread/1661272.9kVko5ssCn%40sifl/#msg32956301
On 22 October 2014 08:31, Eduardo Otubo <email address hidden> wrote:
> The fix for the syscalls problem is already upstream at libseccomp [0] .
> The maintainer said he has no plans yet to make a new release, though.
Then you're going to have to put a fix of some kind locally
into QEMU. I don't want to release 2.2 with basic compile
errors like this on some hosts. If seccomp only supports
specific architectures you should probably enforce this in
configure.
I couldn't identify from your mailing list link what upstream
is proposing to fix this bug either -- could you point me at
the specific changes that they have in mind?
thanks
-- PMM
This commit temporarily fixes this problem.
http://git.qemu.org/?p=qemu.git;a=commit;h=4cc47f8b3cc4f32586ba2f7fce1dc267da774a69
As soon as libseccomp makes a new release I'll update the dependency and hopefully it will be fixed with proper library support.
Hi Eduardo - your above commit doesn't update the version in the error message (a few lines below, still says >= 2.1.0).
Sorry if this isn't the right place to comment on your patch, but it would be nice to fix (just spent a while trying to figure out why having 2.1.0 installed wasn't satisfying the configure check).
Also, I think the way the if statement is constructed it will not properly apply the 2.1.1 version check for i386 (only for x86_64).
Hello Ben, you're completely right on what regards the version on the error message. I'll fix it as soon as possible. Sorry for the trouble on that :( (and sorry for the late reply I was on vacations)
Regarding the if statement, as Peter said here -- http://lists.gnu.org/archive/html/qemu-devel/2014-11/msg00960.html -- shell evaluates the OR before the AND, so that's Ok.
Thanks.
Hello Ben, I just submitted a pull request to fix the issue you reported:
http://lists.gnu.org/archive/html/qemu-devel/2014-12/msg03134.html
Thanks again.
Libseccomp 2.2.0 is now released, can you please try the attached patch and check if it works for you? Regards.
Fix has been included here:
http://git.qemu.org/?p=qemu.git;a=commitdiff;h=8e27fc200457e3f2473d00
|