Modify

Opened 8 years ago

Closed 8 years ago

Last modified 4 years ago

#5766 closed defect (fixed)

udev doesn't compile for nslu2 (ixp4xx) - arm kernel doesn't have ppoll

Reported by: jake1981 <oskari.rauta@…> Owned by: developers
Priority: normal Milestone: Barrier Breaker 14.07
Component: kernel Version: Trunk
Keywords: udev ppoll arm undefined reference Cc:

Description

udev compilation fails to:

udevd.o: In function 'main':
udevd.c:(.text+0x1664): undefined reference to 'ppoll'
collect2: ld returned 1 exit status
make[7]: *** [udevd] Error 1

I searched around the net and found out why:

arm kernel doesn't support ppoll.

Somewhere is a patch for arm kernel to support ppoll, but I don't know where + uclibc would require patching as well, as ppoll should be enabled there as well.

Hope this link helps someone to create necessary patches:
http://www.mail-archive.com/angstrom-distro-devel@linuxtogo.org/msg03111.html

Attachments (1)

udev_without_ppoll.patch (711 bytes) - added by jake1981 <oskari.rauta@…> 8 years ago.
patch to use poll instead of ppoll

Download all attachments as: .zip

Change History (12)

comment:1 Changed 8 years ago by jake1981 <oskari.rauta@…>

I got a temporar solution for this problem - a patch that changes udev to use poll instead of ppoll.
Thanks for people behind gentoo for providing it - I just converted it for openwrt - although, it's not necessary on other architechtures than just arm so I think someone else should take this patch and add some ifdefs that decide whether we use ppoll or poll accordingly to architechture..

comment:2 Changed 8 years ago by jake1981 <oskari.rauta@…>

I forgot to add source where this idea came from:
http://bugs.gentoo.org/attachment.cgi?id=194978

Changed 8 years ago by jake1981 <oskari.rauta@…>

patch to use poll instead of ppoll

comment:3 Changed 8 years ago by Maddes <maddes_trac@…>

I can confirm the same problem for Orion (arm architecture) in the latest revision [17456]:

/bin/sh ../libtool --tag=CC   --mode=link arm-openwrt-linux-uclibcgnueabi-gcc  -Os -pipe -march=armv5te -mtune=xscale -funit-at-a-time -fhonour-copts -msoft-float  -Wl,--as-needed -L/home/openwrt/kernel/staging_dir/toolchain-arm_gcc-4.1.2_uClibc-0.9.30.1/usr/lib -L/home/openwrt/kernel/staging_dir/toolchain-arm_gcc-4.1.2_uClibc-0.9.30.1/lib -L/home/openwrt/kernel/staging_dir/target-arm_uClibc-0.9.30.1/usr/lib -L/home/openwrt/kernel/staging_dir/target-arm_uClibc-0.9.30.1/lib  -o udevd udev-event.o udev-watch.o udev-node.o udev-rules.o udev-util.o libudev.o libudev-list.o libudev-util.o libudev-device.o libudev-device-db-write.o libudev-monitor.o libudev-enumerate.o libudev-queue.o libudev-ctrl.o  udevd.o  
libtool: link: arm-openwrt-linux-uclibcgnueabi-gcc -Os -pipe -march=armv5te -mtune=xscale -funit-at-a-time -fhonour-copts -msoft-float -Wl,--as-needed -o udevd udev-event.o udev-watch.o udev-node.o udev-rules.o udev-util.o libudev.o libudev-list.o libudev-util.o libudev-device.o libudev-device-db-write.o libudev-monitor.o libudev-enumerate.o libudev-queue.o libudev-ctrl.o udevd.o  -L/home/openwrt/kernel/staging_dir/toolchain-arm_gcc-4.1.2_uClibc-0.9.30.1/usr/lib -L/home/openwrt/kernel/staging_dir/toolchain-arm_gcc-4.1.2_uClibc-0.9.30.1/lib -L/home/openwrt/kernel/staging_dir/target-arm_uClibc-0.9.30.1/usr/lib -L/home/openwrt/kernel/staging_dir/target-arm_uClibc-0.9.30.1/lib
udevd.o: In function `main':
udevd.c:(.text+0x1660): undefined reference to `ppoll'
collect2: ld returned 1 exit status
make[7]: *** [udevd] Error 1
make[7]: Leaving directory `/home/openwrt/kernel/build_dir/target-arm_uClibc-0.9.30.1/udev-142/udev'

comment:4 Changed 8 years ago by Maddes <maddes_trac@…>

Btw the ticket related to above linked patch is http://bugs.gentoo.org/show_bug.cgi?id=272199

comment:5 Changed 8 years ago by Maddes <maddes_trac@…>

The patch from jake1981 works great for the Orion boards.

Is it possible to have it as a board/target dependent patch?
Like putting it into "package/udev/patches/orion/"

Otherwise an #IFDEF ARM clause would also make it a clean patch.

comment:6 Changed 8 years ago by jake1981 <oskari.rauta@…>

It's useless to try making a board/target dependant patch, too hard to maintain and I am not sure if it even can be done (add package/udev definition to target's makefile, I am not sure if udev's own makefile overwrites it or not).

So #ifdef ARM clause is much better. I would send the patch - but I don't right now have my environment here, so..

comment:7 Changed 8 years ago by Maddes <maddes_trac@…>

fixed for me with Orion in revision [17573]

comment:8 Changed 8 years ago by florian

  • Resolution set to fixed
  • Status changed from new to closed

comment:9 Changed 8 years ago by nico

  • Resolution fixed deleted
  • Status changed from closed to reopened

Support for ppoll syscall has been added for 2.6.30+, but ipx4xx is still 2.6.28.x...

comment:10 Changed 8 years ago by florian

  • Resolution set to fixed
  • Status changed from reopened to closed

Fixed with r18952.

comment:11 Changed 4 years ago by jow

  • Milestone changed from Attitude Adjustment 12.09 to Barrier Breaker 14.07

Milestone Attitude Adjustment 12.09 deleted

Add Comment

Modify Ticket

Action
as closed .
The resolution will be deleted. Next status will be 'reopened'.
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.