[systemd-devel] minimal-uclibc: systemd fails with `src/manager.c:257:42: error: 'EPOLL_CLOEXEC' undeclared (first use in this function)`

Gustavo Sverzut Barbieri barbieri at profusion.mobi
Wed May 11 05:06:37 PDT 2011


On Wed, May 11, 2011 at 2:58 AM, Thierry Reding
<thierry.reding at avionic-design.de> wrote:
> * Paul Menzel wrote:
>> Dear OE folks,
>>
>>
>> task compile of `systemd_git.bb` fails with the following error message
>> using `minimal-uclibc` for `MACHINE = "beagleboard"`. Using `minimal`,
>> i. e. EGLIBC, works.
>>
>>         […]
>>         |   CC     src/libsystemd_core_la-manager.lo
>>         | src/manager.c: In function 'manager_new':
>>         | src/manager.c:257:9: warning: implicit declaration of function 'epoll_create1' [-Wimplicit-function-declaration]
>>         | src/manager.c:257:42: error: 'EPOLL_CLOEXEC' undeclared (first use in this function)
>>         | src/manager.c:257:42: note: each undeclared identifier is reported only once for each function it appears in
>>         | src/manager.c: In function 'manager_process_notify_fd':
>>         | src/manager.c:1956:25: warning: cast increases required alignment of target type [-Wcast-align]
>>         […]
>>
>> `manager.c` includes
>>
>>         #include <sys/epoll.h>
>>         #include <fcntl.h>
>>
>> which I read should contain that definition. But looking at `fcntl.h` I
>> could not find it. I then looked in
>>
>>         ./minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi/usr/include/sys/epoll.h
>>
>> where it is defined for EGLIBC but not for uClibc. I also found the
>> patch for uClibc [1] but there `EPOLL_CLOEXEC` is enclosed in `#if 0`.
>>
>> I am no uClibc expert, but do you know if uClibc will provide
>> `EPOLL_CLOEXEC` in the near future? How should systemd fix that?
>
> uClibc is also missing an implementation of the epoll_create1() syscall. I'm
> using a patch against uClibc to fix a similar issue in udev but haven't
> gotten around to sending it upstream yet.

Koen just noticed that his eglibc was missing accept4(), due old
kernel headers and likely something missing in eglibc's itself. That
was not visible as a compile-time error, but was causing issues. I'd
check if uclibc implements that as well.

-- 
Gustavo Sverzut Barbieri
http://profusion.mobi embedded systems
--------------------------------------
MSN: barbieri at gmail.com
Skype: gsbarbieri
Mobile: +55 (19) 9225-2202


More information about the systemd-devel mailing list