From patchwork Fri May 13 22:15:15 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: new uClibc srcrev fails with `unwind-resume.c:31:19: error: expected ')' before 'struct'` (was: minimal-uclibc: systemd fails with `src/manager.c:257:42: error: 'EPOLL_CLOEXEC' undeclared (first use in this function)`) Date: Fri, 13 May 2011 22:15:15 -0000 From: Paul Menzel X-Patchwork-Id: 3991 Message-Id: <1305324915.7858.11.camel@mattotaupa> To: openembedded-devel@lists.openembedded.org Am Mittwoch, den 11.05.2011, 22:25 +0200 schrieb Bernhard Reutner-Fischer: > On Wed, May 11, 2011 at 06:11:51PM +0100, Phil Blundell wrote: > >On Tue, 2011-05-10 at 23:14 +0200, Paul Menzel wrote: > >> I am no uClibc expert, but do you know if uClibc will provide > >> `EPOLL_CLOEXEC` in the near future? How should systemd fix that? > > > >It's not just EPOLL_CLOEXEC: uClibc seems to be missing epoll_create1() > >entirely. As far as I know there's nothing complex about that, though: > >it's just a standard syscall wrapper, so I don't know why it would have > >been deliberately left out. I guess you'd have to ask the uClibc h4x0rs > >about that. > > > >There probably is no trivial workaround available to systemd. If you > >wanted a quick hack to make it work then you could call > >syscall(SYS_epoll_create1, O_CLOEXEC) manually. Or you could perhaps > >eliminate the usage of EPOLL_CLOEXEC in favour of a separate fcntl() > >call, but that may not be safe if systemd is multithreaded. > > It was only omitted until now since nobody asked for it. > > You should be set if you can trick someone into updating to > c91c3a2b27f5909e190cde4518383864298e82af or later. Bernhard, thank you very much. I tried to update to this revision, but the build fails with the following error. arm-oe-linux-uclibceabi-gcc -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -mthumb-interwork -mno-thumb --sysroot=/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi -c libpthread/nptl/sysdeps/unix/sysv/linux/timer_settime.c -o libpthread/nptl/sysdeps/unix/sysv/linux/timer_settime.oS -include ./include/libc-symbols.h -Wall -Wstrict-prototypes -Wstrict-aliasing -Wformat=2 -Wmissing-noreturn -Wmissing-format-attribute -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wnonnull -Wold-style-declaration -Wold-style-definition -Wshadow -Wundef -funsigned-char -fno-builtin -fno-asm -std=gnu99 -mlittle-endian -fno-stack-protector -nostdinc -I./include -I./include -I. -I./libc/sysdeps/linux -I./libc/sysdeps/linux/arm -fexpensive-optimizations -fomit-frame-pointer -frename-registers -Os -pipe -g -Os -funit-at-a-time -fmerge-all-constants -fstrict-aliasing -fno-tree-loop-optimize -fno-tree-dominator-opts -fno-strength-reduce -DHAVE_FORCED_UNWIND -I./libpthread/nptl -I./libpthread/nptl -I./libpthread/nptl/sysdeps/unix/sysv/linux/arm/ -I./libpthread/nptl/sysdeps/unix/sysv/linux/arm -I./libpthread/nptl/sysdeps/arm -I./libpthread/nptl/sysdeps/arm -I./libpthread/nptl/sysdeps/unix/sysv/linux -I./libpthread/nptl/sysdeps/unix/sysv/linux -I./libpthread/nptl/sysdeps/pthread -I./libpthread/nptl/sysdeps/pthread/bits -I./libpthread/nptl/sysdeps/generic -I./ldso/ldso/arm -I./ldso/include -I./libc/sysdeps/linux/common -I/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi/usr/include/ -isystem /oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/i686-linux/usr/armv7a/lib/gcc/arm-oe-linux-uclibceabi/4.5.3/include-fixed -isystem /oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/i686-linux/usr/armv7a/lib/gcc/arm-oe-linux-uclibceabi/4.5.3/include -DNDEBUG -D__USE_STDIO_FUTEXES__ -fPIC -DSHARED -DNOT_IN_libc -I./librt -DIS_IN_librt -MT libpthread/nptl/sysdeps/unix/sysv/linux/timer_settime.oS -MD -MP -MF libpthread/nptl/sysdeps/unix/sysv/linux/.timer_settime.oS.dep arm-oe-linux-uclibceabi-gcc -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -mthumb-interwork -mno-thumb --sysroot=/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi -c libpthread/nptl/sysdeps/pthread/librt-cancellation.c -o libpthread/nptl/sysdeps/pthread/librt-cancellation.oS -include ./include/libc-symbols.h -Wall -Wstrict-prototypes -Wstrict-aliasing -Wformat=2 -Wmissing-noreturn -Wmissing-format-attribute -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wnonnull -Wold-style-declaration -Wold-style-definition -Wshadow -Wundef -funsigned-char -fno-builtin -fno-asm -std=gnu99 -mlittle-endian -fno-stack-protector -nostdinc -I./include -I./include -I. -I./libc/sysdeps/linux -I./libc/sysdeps/linux/arm -fexpensive-optimizations -fomit-frame-pointer -frename-registers -Os -pipe -g -Os -funit-at-a-time -fmerge-all-constants -fstrict-aliasing -fno-tree-loop-optimize -fno-tree-dominator-opts -fno-strength-reduce -DHAVE_FORCED_UNWIND -I./libpthread/nptl -I./libpthread/nptl -I./libpthread/nptl/sysdeps/unix/sysv/linux/arm/ -I./libpthread/nptl/sysdeps/unix/sysv/linux/arm -I./libpthread/nptl/sysdeps/arm -I./libpthread/nptl/sysdeps/arm -I./libpthread/nptl/sysdeps/unix/sysv/linux -I./libpthread/nptl/sysdeps/unix/sysv/linux -I./libpthread/nptl/sysdeps/pthread -I./libpthread/nptl/sysdeps/pthread/bits -I./libpthread/nptl/sysdeps/generic -I./ldso/ldso/arm -I./ldso/include -I./libc/sysdeps/linux/common -I/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi/usr/include/ -isystem /oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/i686-linux/usr/armv7a/lib/gcc/arm-oe-linux-uclibceabi/4.5.3/include-fixed -isystem /oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/i686-linux/usr/armv7a/lib/gcc/arm-oe-linux-uclibceabi/4.5.3/include -DNDEBUG -D__USE_STDIO_FUTEXES__ -fPIC -DSHARED -DNOT_IN_libc -DIS_IN_librt -fexceptions -fasynchronous-unwind-tables -MT libpthread/nptl/sysdeps/pthread/librt-cancellation.oS -MD -MP -MF libpthread/nptl/sysdeps/pthread/.librt-cancellation.oS.dep libpthread/nptl/sysdeps/unix/sysv/linux/timer_routines.c: In function 'timer_helper_thread': libpthread/nptl/sysdeps/unix/sysv/linux/timer_routines.c:73:1: warning: function might be possible candidate for attribute 'noreturn' arm-oe-linux-uclibceabi-gcc -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -mthumb-interwork -mno-thumb --sysroot=/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi -c libpthread/nptl/sysdeps/pthread/rt-unwind-resume.c -o libpthread/nptl/sysdeps/pthread/rt-unwind-resume.oS -include ./include/libc-symbols.h -Wall -Wstrict-prototypes -Wstrict-aliasing -Wformat=2 -Wmissing-noreturn -Wmissing-format-attribute -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wnonnull -Wold-style-declaration -Wold-style-definition -Wshadow -Wundef -funsigned-char -fno-builtin -fno-asm -std=gnu99 -mlittle-endian -fno-stack-protector -nostdinc -I./include -I./include -I. -I./libc/sysdeps/linux -I./libc/sysdeps/linux/arm -fexpensive-optimizations -fomit-frame-pointer -frename-registers -Os -pipe -g -Os -funit-at-a-time -fmerge-all-constants -fstrict-aliasing -fno-tree-loop-optimize -fno-tree-dominator-opts -fno-strength-reduce -DHAVE_FORCED_UNWIND -I./libpthread/nptl -I./libpthread/nptl -I./libpthread/nptl/sysdeps/unix/sysv/linux/arm/ -I./libpthread/nptl/sysdeps/unix/sysv/linux/arm -I./libpthread/nptl/sysdeps/arm -I./libpthread/nptl/sysdeps/arm -I./libpthread/nptl/sysdeps/unix/sysv/linux -I./libpthread/nptl/sysdeps/unix/sysv/linux -I./libpthread/nptl/sysdeps/pthread -I./libpthread/nptl/sysdeps/pthread/bits -I./libpthread/nptl/sysdeps/generic -I./ldso/ldso/arm -I./ldso/include -I./libc/sysdeps/linux/common -I/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi/usr/include/ -isystem /oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/i686-linux/usr/armv7a/lib/gcc/arm-oe-linux-uclibceabi/4.5.3/include-fixed -isystem /oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/i686-linux/usr/armv7a/lib/gcc/arm-oe-linux-uclibceabi/4.5.3/include -DNDEBUG -D__USE_STDIO_FUTEXES__ -fPIC -DSHARED -DNOT_IN_libc -DIS_IN_librt -fexceptions -fasynchronous-unwind-tables -MT libpthread/nptl/sysdeps/pthread/rt-unwind-resume.oS -MD -MP -MF libpthread/nptl/sysdeps/pthread/.rt-unwind-resume.oS.dep In file included from ./libpthread/nptl/pthreadP.h:23:0, from libpthread/nptl/sysdeps/pthread/librt-cancellation.c:20: ./include/pthread.h:585:1: warning: no previous prototype for '__pthread_cleanup_routine' arm-oe-linux-uclibceabi-gcc -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -mthumb-interwork -mno-thumb --sysroot=/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi -c librt/clock_getcpuclockid.c -o librt/clock_getcpuclockid.oS -include ./include/libc-symbols.h -Wall -Wstrict-prototypes -Wstrict-aliasing -Wformat=2 -Wmissing-noreturn -Wmissing-format-attribute -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wnonnull -Wold-style-declaration -Wold-style-definition -Wshadow -Wundef -funsigned-char -fno-builtin -fno-asm -std=gnu99 -mlittle-endian -fno-stack-protector -nostdinc -I./include -I./include -I. -I./libc/sysdeps/linux -I./libc/sysdeps/linux/arm -fexpensive-optimizations -fomit-frame-pointer -frename-registers -Os -pipe -g -Os -funit-at-a-time -fmerge-all-constants -fstrict-aliasing -fno-tree-loop-optimize -fno-tree-dominator-opts -fno-strength-reduce -DHAVE_FORCED_UNWIND -I./libpthread/nptl -I./libpthread/nptl -I./libpthread/nptl/sysdeps/unix/sysv/linux/arm/ -I./libpthread/nptl/sysdeps/unix/sysv/linux/arm -I./libpthread/nptl/sysdeps/arm -I./libpthread/nptl/sysdeps/arm -I./libpthread/nptl/sysdeps/unix/sysv/linux -I./libpthread/nptl/sysdeps/unix/sysv/linux -I./libpthread/nptl/sysdeps/pthread -I./libpthread/nptl/sysdeps/pthread/bits -I./libpthread/nptl/sysdeps/generic -I./ldso/ldso/arm -I./ldso/include -I./libc/sysdeps/linux/common -I/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi/usr/include/ -isystem /oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/i686-linux/usr/armv7a/lib/gcc/arm-oe-linux-uclibceabi/4.5.3/include-fixed -isystem /oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/i686-linux/usr/armv7a/lib/gcc/arm-oe-linux-uclibceabi/4.5.3/include -DNDEBUG -D__USE_STDIO_FUTEXES__ -fPIC -DSHARED -DNOT_IN_libc -DIS_IN_librt -MT librt/clock_getcpuclockid.oS -MD -MP -MF librt/.clock_getcpuclockid.oS.dep In file included from ./include/bits/uClibc_mutex.h:15:0, from ./include/bits/uClibc_stdio.h:119, from ./include/stdio.h:72, from ./libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c:21, from libpthread/nptl/sysdeps/pthread/rt-unwind-resume.c:1: ./include/pthread.h:585:1: warning: no previous prototype for '__pthread_cleanup_routine' arm-oe-linux-uclibceabi-gcc -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -mthumb-interwork -mno-thumb --sysroot=/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi -c librt/clock_gettime.c -o librt/clock_gettime.oS -include ./include/libc-symbols.h -Wall -Wstrict-prototypes -Wstrict-aliasing -Wformat=2 -Wmissing-noreturn -Wmissing-format-attribute -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wnonnull -Wold-style-declaration -Wold-style-definition -Wshadow -Wundef -funsigned-char -fno-builtin -fno-asm -std=gnu99 -mlittle-endian -fno-stack-protector -nostdinc -I./include -I./include -I. -I./libc/sysdeps/linux -I./libc/sysdeps/linux/arm -fexpensive-optimizations -fomit-frame-pointer -frename-registers -Os -pipe -g -Os -funit-at-a-time -fmerge-all-constants -fstrict-aliasing -fno-tree-loop-optimize -fno-tree-dominator-opts -fno-strength-reduce -DHAVE_FORCED_UNWIND -I./libpthread/nptl -I./libpthread/nptl -I./libpthread/nptl/sysdeps/unix/sysv/linux/arm/ -I./libpthread/nptl/sysdeps/unix/sysv/linux/arm -I./libpthread/nptl/sysdeps/arm -I./libpthread/nptl/sysdeps/arm -I./libpthread/nptl/sysdeps/unix/sysv/linux -I./libpthread/nptl/sysdeps/unix/sysv/linux -I./libpthread/nptl/sysdeps/pthread -I./libpthread/nptl/sysdeps/pthread/bits -I./libpthread/nptl/sysdeps/generic -I./ldso/ldso/arm -I./ldso/include -I./libc/sysdeps/linux/common -I/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi/usr/include/ -isystem /oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/i686-linux/usr/armv7a/lib/gcc/arm-oe-linux-uclibceabi/4.5.3/include-fixed -isystem /oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/i686-linux/usr/armv7a/lib/gcc/arm-oe-linux-uclibceabi/4.5.3/include -DNDEBUG -D__USE_STDIO_FUTEXES__ -fPIC -DSHARED -DNOT_IN_libc -DIS_IN_librt -MT librt/clock_gettime.oS -MD -MP -MF librt/.clock_gettime.oS.dep In file included from libpthread/nptl/sysdeps/pthread/rt-unwind-resume.c:1:0: ./libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c:31:19: error: expected ')' before 'struct' ./libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c: In function 'init': ./libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c:49:3: error: 'libgcc_s_personality' undeclared (first use in this function) ./libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c:49:3: note: each undeclared identifier is reported only once for each function it appears in ./libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c: At top level: ./libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c:109:37: error: expected ')' before 'state' arm-oe-linux-uclibceabi-gcc -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -mthumb-interwork -mno-thumb --sysroot=/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi -c librt/clock_nanosleep.c -o librt/clock_nanosleep.oS -include ./include/libc-symbols.h -Wall -Wstrict-prototypes -Wstrict-aliasing -Wformat=2 -Wmissing-noreturn -Wmissing-format-attribute -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wnonnull -Wold-style-declaration -Wold-style-definition -Wshadow -Wundef -funsigned-char -fno-builtin -fno-asm -std=gnu99 -mlittle-endian -fno-stack-protector -nostdinc -I./include -I./include -I. -I./libc/sysdeps/linux -I./libc/sysdeps/linux/arm -fexpensive-optimizations -fomit-frame-pointer -frename-registers -Os -pipe -g -Os -funit-at-a-time -fmerge-all-constants -fstrict-aliasing -fno-tree-loop-optimize -fno-tree-dominator-opts -fno-strength-reduce -DHAVE_FORCED_UNWIND -I./libpthread/nptl -I./libpthread/nptl -I./libpthread/nptl/sysdeps/unix/sysv/linux/arm/ -I./libpthread/nptl/sysdeps/unix/sysv/linux/arm -I./libpthread/nptl/sysdeps/arm -I./libpthread/nptl/sysdeps/arm -I./libpthread/nptl/sysdeps/unix/sysv/linux -I./libpthread/nptl/sysdeps/unix/sysv/linux -I./libpthread/nptl/sysdeps/pthread -I./libpthread/nptl/sysdeps/pthread/bits -I./libpthread/nptl/sysdeps/generic -I./ldso/ldso/arm -I./ldso/include -I./libc/sysdeps/linux/common -I/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi/usr/include/ -isystem /oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/i686-linux/usr/armv7a/lib/gcc/arm-oe-linux-uclibceabi/4.5.3/include-fixed -isystem /oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/i686-linux/usr/armv7a/lib/gcc/arm-oe-linux-uclibceabi/4.5.3/include -DNDEBUG -D__USE_STDIO_FUTEXES__ -fPIC -DSHARED -DNOT_IN_libc -DIS_IN_librt -MT librt/clock_nanosleep.oS -MD -MP -MF librt/.clock_nanosleep.oS.dep make: *** [libpthread/nptl/sysdeps/pthread/rt-unwind-resume.oS] Error 1 make: *** Waiting for unfinished jobs.... + die 'oe_runmake failed' + oefatal 'oe_runmake failed' + echo FATAL: 'oe_runmake failed' FATAL: oe_runmake failed + exit 1 Please find the patch I did attached. Thanks, Paul >From acb913bc7bbbba4d77c03b892b1b7d571ab342a7 Mon Sep 17 00:00:00 2001 From: Paul Menzel Date: Sat May 14 00:07:18 2011 +0200 Subject: [RFC][PATCH] uclibc_git.bb: update to new srcrev Task compile fails with the following error. arm-oe-linux-uclibceabi-gcc -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -mthumb-interwork -mno-thumb --sysroot=/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi -c libpthread/nptl/sysdeps/unix/sysv/linux/timer_settime.c -o libpthread/nptl/sysdeps/unix/sysv/linux/timer_settime.oS -include ./include/libc-symbols.h -Wall -Wstrict-prototypes -Wstrict-aliasing -Wformat=2 -Wmissing-noreturn -Wmissing-format-attribute -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wnonnull -Wold-style-declaration -Wold-style-definition -Wshadow -Wundef -funsigned-char -fno-builtin -fno-asm -std=gnu99 -mlittle-endian -fno-stack-protector -nostdinc -I./include -I./include -I. -I./libc/sysdeps/linux -I./libc/sysdeps/linux/arm -fexpensive-optimizations -fomit-frame-pointer -frename-registers -Os -pipe -g -Os -funit-at-a-time -fmerge-all-constants -fstrict-aliasing -fno-tree-loop-optimize -fno-tree-dominator-opts -fno-strength-reduce -DHAVE_FORCED_UNWIND -I./libpthread/nptl -I./libpthread/nptl -I./libpthread/nptl/sysdeps/unix/sysv/linux/arm/ -I./libpthread/nptl/sysdeps/unix/sysv/linux/arm -I./libpthread/nptl/sysdeps/arm -I./libpthread/nptl/sysdeps/arm -I./libpthread/nptl/sysdeps/unix/sysv/linux -I./libpthread/nptl/sysdeps/unix/sysv/linux -I./libpthread/nptl/sysdeps/pthread -I./libpthread/nptl/sysdeps/pthread/bits -I./libpthread/nptl/sysdeps/generic -I./ldso/ldso/arm -I./ldso/include -I./libc/sysdeps/linux/common -I/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi/usr/include/ -isystem /oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/i686-linux/usr/armv7a/lib/gcc/arm-oe-linux-uclibceabi/4.5.3/include-fixed -isystem /oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/i686-linux/usr/armv7a/lib/gcc/arm-oe-linux-uclibceabi/4.5.3/include -DNDEBUG -D__USE_STDIO_FUTEXES__ -fPIC -DSHARED -DNOT_IN_libc -I./librt -DIS_IN_librt -MT libpthread/nptl/sysdeps/unix/sysv/linux/timer_settime.oS -MD -MP -MF libpthread/nptl/sysdeps/unix/sysv/linux/.timer_settime.oS.dep arm-oe-linux-uclibceabi-gcc -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -mthumb-interwork -mno-thumb --sysroot=/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi -c libpthread/nptl/sysdeps/pthread/librt-cancellation.c -o libpthread/nptl/sysdeps/pthread/librt-cancellation.oS -include ./include/libc-symbols.h -Wall -Wstrict-prototypes -Wstrict-aliasing -Wformat=2 -Wmissing-noreturn -Wmissing-format-attribute -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wnonnull -Wold-style-declaration -Wold-style-definition -Wshadow -Wundef -funsigned-char -fno-builtin -fno-asm -std=gnu99 -mlittle-endian -fno-stack-protector -nostdinc -I./include -I./include -I. -I./libc/sysdeps/linux -I./libc/sysdeps/linux/arm -fexpensive-optimizations -fomit-frame-pointer -frename-registers -Os -pipe -g -Os -funit-at-a-time -fmerge-all-constants -fstrict-aliasing -fno-tree-loop-optimize -fno-tree-dominator-opts -fno-strength-reduce -DHAVE_FORCED_UNWIND -I./libpthread/nptl -I./libpthread/nptl -I./libpthread/nptl/sysdeps/unix/sysv/linux/arm/ -I./libpthread/nptl/sysdeps/unix/sysv/linux/arm -I./libpthread/nptl/sysdeps/arm -I./libpthread/nptl/sysdeps/arm -I./libpthread/nptl/sysdeps/unix/sysv/linux -I./libpthread/nptl/sysdeps/unix/sysv/linux -I./libpthread/nptl/sysdeps/pthread -I./libpthread/nptl/sysdeps/pthread/bits -I./libpthread/nptl/sysdeps/generic -I./ldso/ldso/arm -I./ldso/include -I./libc/sysdeps/linux/common -I/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi/usr/include/ -isystem /oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/i686-linux/usr/armv7a/lib/gcc/arm-oe-linux-uclibceabi/4.5.3/include-fixed -isystem /oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/i686-linux/usr/armv7a/lib/gcc/arm-oe-linux-uclibceabi/4.5.3/include -DNDEBUG -D__USE_STDIO_FUTEXES__ -fPIC -DSHARED -DNOT_IN_libc -DIS_IN_librt -fexceptions -fasynchronous-unwind-tables -MT libpthread/nptl/sysdeps/pthread/librt-cancellation.oS -MD -MP -MF libpthread/nptl/sysdeps/pthread/.librt-cancellation.oS.dep libpthread/nptl/sysdeps/unix/sysv/linux/timer_routines.c: In function 'timer_helper_thread': libpthread/nptl/sysdeps/unix/sysv/linux/timer_routines.c:73:1: warning: function might be possible candidate for attribute 'noreturn' arm-oe-linux-uclibceabi-gcc -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -mthumb-interwork -mno-thumb --sysroot=/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi -c libpthread/nptl/sysdeps/pthread/rt-unwind-resume.c -o libpthread/nptl/sysdeps/pthread/rt-unwind-resume.oS -include ./include/libc-symbols.h -Wall -Wstrict-prototypes -Wstrict-aliasing -Wformat=2 -Wmissing-noreturn -Wmissing-format-attribute -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wnonnull -Wold-style-declaration -Wold-style-definition -Wshadow -Wundef -funsigned-char -fno-builtin -fno-asm -std=gnu99 -mlittle-endian -fno-stack-protector -nostdinc -I./include -I./include -I. -I./libc/sysdeps/linux -I./libc/sysdeps/linux/arm -fexpensive-optimizations -fomit-frame-pointer -frename-registers -Os -pipe -g -Os -funit-at-a-time -fmerge-all-constants -fstrict-aliasing -fno-tree-loop-optimize -fno-tree-dominator-opts -fno-strength-reduce -DHAVE_FORCED_UNWIND -I./libpthread/nptl -I./libpthread/nptl -I./libpthread/nptl/sysdeps/unix/sysv/linux/arm/ -I./libpthread/nptl/sysdeps/unix/sysv/linux/arm -I./libpthread/nptl/sysdeps/arm -I./libpthread/nptl/sysdeps/arm -I./libpthread/nptl/sysdeps/unix/sysv/linux -I./libpthread/nptl/sysdeps/unix/sysv/linux -I./libpthread/nptl/sysdeps/pthread -I./libpthread/nptl/sysdeps/pthread/bits -I./libpthread/nptl/sysdeps/generic -I./ldso/ldso/arm -I./ldso/include -I./libc/sysdeps/linux/common -I/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi/usr/include/ -isystem /oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/i686-linux/usr/armv7a/lib/gcc/arm-oe-linux-uclibceabi/4.5.3/include-fixed -isystem /oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/i686-linux/usr/armv7a/lib/gcc/arm-oe-linux-uclibceabi/4.5.3/include -DNDEBUG -D__USE_STDIO_FUTEXES__ -fPIC -DSHARED -DNOT_IN_libc -DIS_IN_librt -fexceptions -fasynchronous-unwind-tables -MT libpthread/nptl/sysdeps/pthread/rt-unwind-resume.oS -MD -MP -MF libpthread/nptl/sysdeps/pthread/.rt-unwind-resume.oS.dep In file included from ./libpthread/nptl/pthreadP.h:23:0, from libpthread/nptl/sysdeps/pthread/librt-cancellation.c:20: ./include/pthread.h:585:1: warning: no previous prototype for '__pthread_cleanup_routine' arm-oe-linux-uclibceabi-gcc -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -mthumb-interwork -mno-thumb --sysroot=/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi -c librt/clock_getcpuclockid.c -o librt/clock_getcpuclockid.oS -include ./include/libc-symbols.h -Wall -Wstrict-prototypes -Wstrict-aliasing -Wformat=2 -Wmissing-noreturn -Wmissing-format-attribute -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wnonnull -Wold-style-declaration -Wold-style-definition -Wshadow -Wundef -funsigned-char -fno-builtin -fno-asm -std=gnu99 -mlittle-endian -fno-stack-protector -nostdinc -I./include -I./include -I. -I./libc/sysdeps/linux -I./libc/sysdeps/linux/arm -fexpensive-optimizations -fomit-frame-pointer -frename-registers -Os -pipe -g -Os -funit-at-a-time -fmerge-all-constants -fstrict-aliasing -fno-tree-loop-optimize -fno-tree-dominator-opts -fno-strength-reduce -DHAVE_FORCED_UNWIND -I./libpthread/nptl -I./libpthread/nptl -I./libpthread/nptl/sysdeps/unix/sysv/linux/arm/ -I./libpthread/nptl/sysdeps/unix/sysv/linux/arm -I./libpthread/nptl/sysdeps/arm -I./libpthread/nptl/sysdeps/arm -I./libpthread/nptl/sysdeps/unix/sysv/linux -I./libpthread/nptl/sysdeps/unix/sysv/linux -I./libpthread/nptl/sysdeps/pthread -I./libpthread/nptl/sysdeps/pthread/bits -I./libpthread/nptl/sysdeps/generic -I./ldso/ldso/arm -I./ldso/include -I./libc/sysdeps/linux/common -I/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi/usr/include/ -isystem /oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/i686-linux/usr/armv7a/lib/gcc/arm-oe-linux-uclibceabi/4.5.3/include-fixed -isystem /oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/i686-linux/usr/armv7a/lib/gcc/arm-oe-linux-uclibceabi/4.5.3/include -DNDEBUG -D__USE_STDIO_FUTEXES__ -fPIC -DSHARED -DNOT_IN_libc -DIS_IN_librt -MT librt/clock_getcpuclockid.oS -MD -MP -MF librt/.clock_getcpuclockid.oS.dep In file included from ./include/bits/uClibc_mutex.h:15:0, from ./include/bits/uClibc_stdio.h:119, from ./include/stdio.h:72, from ./libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c:21, from libpthread/nptl/sysdeps/pthread/rt-unwind-resume.c:1: ./include/pthread.h:585:1: warning: no previous prototype for '__pthread_cleanup_routine' arm-oe-linux-uclibceabi-gcc -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -mthumb-interwork -mno-thumb --sysroot=/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi -c librt/clock_gettime.c -o librt/clock_gettime.oS -include ./include/libc-symbols.h -Wall -Wstrict-prototypes -Wstrict-aliasing -Wformat=2 -Wmissing-noreturn -Wmissing-format-attribute -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wnonnull -Wold-style-declaration -Wold-style-definition -Wshadow -Wundef -funsigned-char -fno-builtin -fno-asm -std=gnu99 -mlittle-endian -fno-stack-protector -nostdinc -I./include -I./include -I. -I./libc/sysdeps/linux -I./libc/sysdeps/linux/arm -fexpensive-optimizations -fomit-frame-pointer -frename-registers -Os -pipe -g -Os -funit-at-a-time -fmerge-all-constants -fstrict-aliasing -fno-tree-loop-optimize -fno-tree-dominator-opts -fno-strength-reduce -DHAVE_FORCED_UNWIND -I./libpthread/nptl -I./libpthread/nptl -I./libpthread/nptl/sysdeps/unix/sysv/linux/arm/ -I./libpthread/nptl/sysdeps/unix/sysv/linux/arm -I./libpthread/nptl/sysdeps/arm -I./libpthread/nptl/sysdeps/arm -I./libpthread/nptl/sysdeps/unix/sysv/linux -I./libpthread/nptl/sysdeps/unix/sysv/linux -I./libpthread/nptl/sysdeps/pthread -I./libpthread/nptl/sysdeps/pthread/bits -I./libpthread/nptl/sysdeps/generic -I./ldso/ldso/arm -I./ldso/include -I./libc/sysdeps/linux/common -I/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi/usr/include/ -isystem /oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/i686-linux/usr/armv7a/lib/gcc/arm-oe-linux-uclibceabi/4.5.3/include-fixed -isystem /oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/i686-linux/usr/armv7a/lib/gcc/arm-oe-linux-uclibceabi/4.5.3/include -DNDEBUG -D__USE_STDIO_FUTEXES__ -fPIC -DSHARED -DNOT_IN_libc -DIS_IN_librt -MT librt/clock_gettime.oS -MD -MP -MF librt/.clock_gettime.oS.dep In file included from libpthread/nptl/sysdeps/pthread/rt-unwind-resume.c:1:0: ./libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c:31:19: error: expected ')' before 'struct' ./libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c: In function 'init': ./libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c:49:3: error: 'libgcc_s_personality' undeclared (first use in this function) ./libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c:49:3: note: each undeclared identifier is reported only once for each function it appears in ./libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c: At top level: ./libpthread/nptl/sysdeps/unix/sysv/linux/arm/unwind-resume.c:109:37: error: expected ')' before 'state' arm-oe-linux-uclibceabi-gcc -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -mthumb-interwork -mno-thumb --sysroot=/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi -c librt/clock_nanosleep.c -o librt/clock_nanosleep.oS -include ./include/libc-symbols.h -Wall -Wstrict-prototypes -Wstrict-aliasing -Wformat=2 -Wmissing-noreturn -Wmissing-format-attribute -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Wnonnull -Wold-style-declaration -Wold-style-definition -Wshadow -Wundef -funsigned-char -fno-builtin -fno-asm -std=gnu99 -mlittle-endian -fno-stack-protector -nostdinc -I./include -I./include -I. -I./libc/sysdeps/linux -I./libc/sysdeps/linux/arm -fexpensive-optimizations -fomit-frame-pointer -frename-registers -Os -pipe -g -Os -funit-at-a-time -fmerge-all-constants -fstrict-aliasing -fno-tree-loop-optimize -fno-tree-dominator-opts -fno-strength-reduce -DHAVE_FORCED_UNWIND -I./libpthread/nptl -I./libpthread/nptl -I./libpthread/nptl/sysdeps/unix/sysv/linux/arm/ -I./libpthread/nptl/sysdeps/unix/sysv/linux/arm -I./libpthread/nptl/sysdeps/arm -I./libpthread/nptl/sysdeps/arm -I./libpthread/nptl/sysdeps/unix/sysv/linux -I./libpthread/nptl/sysdeps/unix/sysv/linux -I./libpthread/nptl/sysdeps/pthread -I./libpthread/nptl/sysdeps/pthread/bits -I./libpthread/nptl/sysdeps/generic -I./ldso/ldso/arm -I./ldso/include -I./libc/sysdeps/linux/common -I/oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/armv7a-oe-linux-uclibceabi/usr/include/ -isystem /oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/i686-linux/usr/armv7a/lib/gcc/arm-oe-linux-uclibceabi/4.5.3/include-fixed -isystem /oe/build-minimal-uclibc/minimal-uclibc-dev/sysroots/i686-linux/usr/armv7a/lib/gcc/arm-oe-linux-uclibceabi/4.5.3/include -DNDEBUG -D__USE_STDIO_FUTEXES__ -fPIC -DSHARED -DNOT_IN_libc -DIS_IN_librt -MT librt/clock_nanosleep.oS -MD -MP -MF librt/.clock_nanosleep.oS.dep make: *** [libpthread/nptl/sysdeps/pthread/rt-unwind-resume.oS] Error 1 make: *** Waiting for unfinished jobs.... + die 'oe_runmake failed' + oefatal 'oe_runmake failed' + echo FATAL: 'oe_runmake failed' FATAL: oe_runmake failed + exit 1 Signed-off-by: Paul Menzel --- .../uclibc/uclibc-git/detect-bx-availibility.patch | 75 -- recipes/uclibc/uclibc-git/fts-support.patch | 1375 -------------------- recipes/uclibc/uclibc-git/include-arm-asm.h.patch | 65 - recipes/uclibc/uclibc-git/powerpc_copysignl.patch | 107 -- .../uclibc-git/remove-eabi-oabi-selection.patch | 91 -- .../uclibc-git/remove-sub-arch-variants.patch | 215 --- recipes/uclibc/uclibc-git/reorder-use-BX.patch | 72 - recipes/uclibc/uclibc-git/select-force-thumb.patch | 172 --- .../uclibc-git/transform-eabi-oabi-choice.patch | 71 - .../uclibc-git/uclibc_enable_log2_test.patch | 30 - recipes/uclibc/uclibc_git.bb | 16 +- 11 files changed, 2 insertions(+), 2287 deletions(-) delete mode 100755 recipes/uclibc/uclibc-git/detect-bx-availibility.patch delete mode 100644 recipes/uclibc/uclibc-git/fts-support.patch delete mode 100755 recipes/uclibc/uclibc-git/include-arm-asm.h.patch delete mode 100755 recipes/uclibc/uclibc-git/powerpc_copysignl.patch delete mode 100755 recipes/uclibc/uclibc-git/remove-eabi-oabi-selection.patch delete mode 100755 recipes/uclibc/uclibc-git/remove-sub-arch-variants.patch delete mode 100755 recipes/uclibc/uclibc-git/reorder-use-BX.patch delete mode 100755 recipes/uclibc/uclibc-git/select-force-thumb.patch delete mode 100755 recipes/uclibc/uclibc-git/transform-eabi-oabi-choice.patch delete mode 100644 recipes/uclibc/uclibc-git/uclibc_enable_log2_test.patch diff --git a/recipes/uclibc/uclibc-git/detect-bx-availibility.patch b/recipes/uclibc/uclibc-git/detect-bx-availibility.patch deleted file mode 100755 index 43d19fc..0000000 --- a/recipes/uclibc/uclibc-git/detect-bx-availibility.patch +++ /dev/null @@ -1,75 +0,0 @@ -Delivered-To: raj.khem@gmail.com -Received: by 10.90.86.4 with SMTP id j4cs313307agb; - Sat, 8 Jan 2011 16:45:20 -0800 (PST) -Received: by 10.227.141.78 with SMTP id l14mr16920947wbu.128.1294533919168; - Sat, 08 Jan 2011 16:45:19 -0800 (PST) -Return-Path: -Received: from smtp.smtpout.orange.fr (smtp01.smtpout.orange.fr [80.12.242.123]) - by mx.google.com with ESMTP id w30si33755908wbd.17.2011.01.08.16.45.18; - Sat, 08 Jan 2011 16:45:19 -0800 (PST) -Received-SPF: neutral (google.com: 80.12.242.123 is neither permitted nor denied by best guess record for domain of yann.morin.1998@anciens.enib.fr) client-ip=80.12.242.123; -Authentication-Results: mx.google.com; spf=neutral (google.com: 80.12.242.123 is neither permitted nor denied by best guess record for domain of yann.morin.1998@anciens.enib.fr) smtp.mail=yann.morin.1998@anciens.enib.fr -Received: from roazhon.bzh.lan ([90.32.245.227]) - by mwinf5d24 with ME - id tClC1f0024v5z3u03ClHDo; Sun, 09 Jan 2011 01:45:18 +0100 -From: "Yann E. MORIN" -To: uclibc@uclibc.org -Cc: Khem Raj , - Bernhard Reutner-Fischer , - Carmelo AMOROSO -Subject: [PATCH 6/7] ARM: detect BX availibility at build time -Date: Sun, 9 Jan 2011 01:45:09 +0100 -Message-Id: <1294533910-19305-7-git-send-email-yann.morin.1998@anciens.enib.fr> -X-Mailer: git-send-email 1.7.1 -In-Reply-To: <1294533910-19305-1-git-send-email-yann.morin.1998@anciens.enib.fr> -References: <1294533910-19305-1-git-send-email-yann.morin.1998@anciens.enib.fr> - -The "use BX" option is now a suggestion that BX be used if available. -Use a macro to detect if BX is available at build time. If so, and -the user requested it be used, then use it. Otherwise, error out. - -Macro courtesy Khem RAJ: - http://lists.uclibc.org/pipermail/uclibc/2009-April/042301.html - -Signed-off-by: "Yann E. MORIN" -Cc: Khem Raj -Cc: Bernhard Reutner-Fischer -Cc: Carmelo AMOROSO ---- - extra/Configs/Config.arm | 4 +++- - libc/sysdeps/linux/arm/bits/arm_asm.h | 9 ++++++++- - 2 files changed, 11 insertions(+), 2 deletions(-) - -diff --git a/extra/Configs/Config.arm b/extra/Configs/Config.arm -index 227b90c..9aa9e56 100644 ---- a/extra/Configs/Config.arm -+++ b/extra/Configs/Config.arm -@@ -33,4 +33,6 @@ config COMPILE_IN_THUMB_MODE - config USE_BX - bool "Use BX in function return" - help -- Use BX instruction for THUMB aware architectures. -+ Say 'y' to use BX to return from functions on your thumb-aware -+ processor. Say 'y' if you need to use interworking. Say 'n' if not. -+ It is safe to say 'y' even if you're not doing interworking. -diff --git a/libc/sysdeps/linux/arm/bits/arm_asm.h b/libc/sysdeps/linux/arm/bits/arm_asm.h -index 1d87df6..921c9a3 100644 ---- a/libc/sysdeps/linux/arm/bits/arm_asm.h -+++ b/libc/sysdeps/linux/arm/bits/arm_asm.h -@@ -24,5 +24,12 @@ - #define THUMB1_ONLY 1 - #endif - --#endif /* _ARM_ASM_H */ -+#if defined(__USE_BX__) -+# if ( defined (__ARM_ARCH_2__) || defined (__ARM_ARCH_3__) \ -+ || defined (__ARM_ARCH_3M__) || defined (__ARM_ARCH_4__) \ -+ ) -+# error Use of BX was requested, but is not available on the target processor. -+# endif /* ARCH level */ -+#endif /* __USE_BX__ */ - -+#endif /* _ARM_ASM_H */ --- -1.7.1 - diff --git a/recipes/uclibc/uclibc-git/fts-support.patch b/recipes/uclibc/uclibc-git/fts-support.patch deleted file mode 100644 index eda25c7..0000000 --- a/recipes/uclibc/uclibc-git/fts-support.patch +++ /dev/null @@ -1,1375 +0,0 @@ -Added fts support for traversing UNIX file hierarchies. -It is required by libdwfl in elfutils package. - -Signed-off-by: Salvatore Cro ---- - extra/Configs/Config.in | 9 + - include/fts.h | 131 ++++++ - libc/misc/Makefile.in | 1 + - libc/misc/fts/Makefile | 14 + - libc/misc/fts/Makefile.in | 22 + - libc/misc/fts/fts.c | 1139 +++++++++++++++++++++++++++++++++++++++++++++ - 6 files changed, 1316 insertions(+), 0 deletions(-) - create mode 100644 include/fts.h - create mode 100644 libc/misc/fts/Makefile - create mode 100644 libc/misc/fts/Makefile.in - create mode 100644 libc/misc/fts/fts.c - -Index: git/extra/Configs/Config.in -=================================================================== ---- git.orig/extra/Configs/Config.in -+++ git/extra/Configs/Config.in -@@ -1899,6 +1899,15 @@ config UCLIBC_HAS_FTW - a pressing need for ftw(), you should probably answer N. - - -+config UCLIBC_HAS_FTS -+ bool "Support the fts() interface" -+ default n -+ help -+ The fts functions are provided for traversing UNIX file hierarchies. -+ -+ This interface is currently used by the elfutils, and adds around 7.5k. -+ Unless you need to build/use elfutils, you should probably answer N. -+ - config UCLIBC_HAS_GLOB - bool "Support the glob() interface" - depends on UCLIBC_HAS_FNMATCH -Index: git/include/fts.h -=================================================================== ---- /dev/null -+++ git/include/fts.h -@@ -0,0 +1,131 @@ -+/* -+ * Copyright (c) 1989, 1993 -+ * The Regents of the University of California. All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 4. Neither the name of the University nor the names of its contributors -+ * may be used to endorse or promote products derived from this software -+ * without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ * -+ * @(#)fts.h 8.3 (Berkeley) 8/14/94 -+ */ -+ -+#ifndef _FTS_H -+#define _FTS_H 1 -+ -+#include -+#include -+ -+/* The fts interface is incompatible with the LFS interface which -+ transparently uses the 64-bit file access functions. */ -+#ifdef __USE_FILE_OFFSET64 -+# error " cannot be used with -D_FILE_OFFSET_BITS==64" -+#endif -+ -+ -+typedef struct { -+ struct _ftsent *fts_cur; /* current node */ -+ struct _ftsent *fts_child; /* linked list of children */ -+ struct _ftsent **fts_array; /* sort array */ -+ dev_t fts_dev; /* starting device # */ -+ char *fts_path; /* path for this descent */ -+ int fts_rfd; /* fd for root */ -+ int fts_pathlen; /* sizeof(path) */ -+ int fts_nitems; /* elements in the sort array */ -+ int (*fts_compar) (const void *, const void *); /* compare fn */ -+ -+#define FTS_COMFOLLOW 0x0001 /* follow command line symlinks */ -+#define FTS_LOGICAL 0x0002 /* logical walk */ -+#define FTS_NOCHDIR 0x0004 /* don't change directories */ -+#define FTS_NOSTAT 0x0008 /* don't get stat info */ -+#define FTS_PHYSICAL 0x0010 /* physical walk */ -+#define FTS_SEEDOT 0x0020 /* return dot and dot-dot */ -+#define FTS_XDEV 0x0040 /* don't cross devices */ -+#define FTS_WHITEOUT 0x0080 /* return whiteout information */ -+#define FTS_OPTIONMASK 0x00ff /* valid user option mask */ -+ -+#define FTS_NAMEONLY 0x0100 /* (private) child names only */ -+#define FTS_STOP 0x0200 /* (private) unrecoverable error */ -+ int fts_options; /* fts_open options, global flags */ -+} FTS; -+ -+typedef struct _ftsent { -+ struct _ftsent *fts_cycle; /* cycle node */ -+ struct _ftsent *fts_parent; /* parent directory */ -+ struct _ftsent *fts_link; /* next file in directory */ -+ long fts_number; /* local numeric value */ -+ void *fts_pointer; /* local address value */ -+ char *fts_accpath; /* access path */ -+ char *fts_path; /* root path */ -+ int fts_errno; /* errno for this node */ -+ int fts_symfd; /* fd for symlink */ -+ u_short fts_pathlen; /* strlen(fts_path) */ -+ u_short fts_namelen; /* strlen(fts_name) */ -+ -+ ino_t fts_ino; /* inode */ -+ dev_t fts_dev; /* device */ -+ nlink_t fts_nlink; /* link count */ -+ -+#define FTS_ROOTPARENTLEVEL -1 -+#define FTS_ROOTLEVEL 0 -+ short fts_level; /* depth (-1 to N) */ -+ -+#define FTS_D 1 /* preorder directory */ -+#define FTS_DC 2 /* directory that causes cycles */ -+#define FTS_DEFAULT 3 /* none of the above */ -+#define FTS_DNR 4 /* unreadable directory */ -+#define FTS_DOT 5 /* dot or dot-dot */ -+#define FTS_DP 6 /* postorder directory */ -+#define FTS_ERR 7 /* error; errno is set */ -+#define FTS_F 8 /* regular file */ -+#define FTS_INIT 9 /* initialized only */ -+#define FTS_NS 10 /* stat(2) failed */ -+#define FTS_NSOK 11 /* no stat(2) requested */ -+#define FTS_SL 12 /* symbolic link */ -+#define FTS_SLNONE 13 /* symbolic link without target */ -+#define FTS_W 14 /* whiteout object */ -+ u_short fts_info; /* user flags for FTSENT structure */ -+ -+#define FTS_DONTCHDIR 0x01 /* don't chdir .. to the parent */ -+#define FTS_SYMFOLLOW 0x02 /* followed a symlink to get here */ -+ u_short fts_flags; /* private flags for FTSENT structure */ -+ -+#define FTS_AGAIN 1 /* read node again */ -+#define FTS_FOLLOW 2 /* follow symbolic link */ -+#define FTS_NOINSTR 3 /* no instructions */ -+#define FTS_SKIP 4 /* discard node */ -+ u_short fts_instr; /* fts_set() instructions */ -+ -+ struct stat *fts_statp; /* stat(2) information */ -+ char fts_name[1]; /* file name */ -+} FTSENT; -+ -+__BEGIN_DECLS -+FTSENT *fts_children (FTS *, int); -+int fts_close (FTS *); -+FTS *fts_open (char * const *, int, -+ int (*)(const FTSENT **, const FTSENT **)); -+FTSENT *fts_read (FTS *); -+int fts_set (FTS *, FTSENT *, int) __THROW; -+__END_DECLS -+ -+#endif /* fts.h */ -Index: git/libc/misc/Makefile.in -=================================================================== ---- git.orig/libc/misc/Makefile.in -+++ git/libc/misc/Makefile.in -@@ -16,6 +16,7 @@ include $(top_srcdir)libc/misc/elf/Makef - include $(top_srcdir)libc/misc/file/Makefile.in - include $(top_srcdir)libc/misc/fnmatch/Makefile.in - include $(top_srcdir)libc/misc/ftw/Makefile.in -+include $(top_srcdir)libc/misc/fts/Makefile.in - include $(top_srcdir)libc/misc/glob/Makefile.in - include $(top_srcdir)libc/misc/gnu/Makefile.in - include $(top_srcdir)libc/misc/internals/Makefile.in -Index: git/libc/misc/fts/Makefile -=================================================================== ---- /dev/null -+++ git/libc/misc/fts/Makefile -@@ -0,0 +1,14 @@ -+# Makefile for uClibc -+# -+# Copyright (C) 2009 STMicroelectronics Ltd. -+# Author: Salvatore Cro -+# -+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. -+# -+ -+top_srcdir=../../../ -+top_builddir=../../../ -+all: objs -+include $(top_builddir)Rules.mak -+include Makefile.in -+include $(top_srcdir)Makerules -Index: git/libc/misc/fts/Makefile.in -=================================================================== ---- /dev/null -+++ git/libc/misc/fts/Makefile.in -@@ -0,0 +1,22 @@ -+# FTS Makefile for uClibc -+# -+# Copyright (C) 2009 STMicroelectronics Ltd. -+# Author: Salvatore Cro -+# -+# Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. -+# -+ -+CSRC := fts.c -+ -+MISC_FTS_DIR := $(top_srcdir)libc/misc/fts -+MISC_FTS_OUT := $(top_builddir)libc/misc/fts -+ -+MISC_FTS_SRC := $(patsubst %.c,$(MISC_FTS_DIR)/%.c,$(CSRC)) -+MISC_FTS_OBJ := $(patsubst %.c,$(MISC_FTS_OUT)/%.o,$(CSRC)) -+ -+libc-$(UCLIBC_HAS_FTS) += $(MISC_FTS_OBJ) -+ -+objclean-$(UCLIBC_HAS_FTS) += misc_fts_clean -+ -+misc_fts_clean: -+ $(do_rm) $(addprefix $(MISC_FTS_OUT)/*., o os) -Index: git/libc/misc/fts/fts.c -=================================================================== ---- /dev/null -+++ git/libc/misc/fts/fts.c -@@ -0,0 +1,1139 @@ -+/*- -+ * Copyright (c) 1990, 1993, 1994 -+ * The Regents of the University of California. All rights reserved. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions and the following disclaimer. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 4. Neither the name of the University nor the names of its contributors -+ * may be used to endorse or promote products derived from this software -+ * without specific prior written permission. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -+ * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -+ * SUCH DAMAGE. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+ -+/* Largest alignment size needed, minus one. -+ Usually long double is the worst case. */ -+#ifndef ALIGNBYTES -+#define ALIGNBYTES (__alignof__ (long double) - 1) -+#endif -+/* Align P to that size. */ -+#ifndef ALIGN -+#define ALIGN(p) (((unsigned long int) (p) + ALIGNBYTES) & ~ALIGNBYTES) -+#endif -+ -+ -+static FTSENT *fts_alloc (FTS *, const char *, size_t) internal_function; -+static FTSENT *fts_build (FTS *, int) internal_function; -+static void fts_lfree (FTSENT *) internal_function; -+static void fts_load (FTS *, FTSENT *) internal_function; -+static size_t fts_maxarglen (char * const *) internal_function; -+static void fts_padjust (FTS *, FTSENT *) internal_function; -+static int fts_palloc (FTS *, size_t) internal_function; -+static FTSENT *fts_sort (FTS *, FTSENT *, int) internal_function; -+static u_short fts_stat (FTS *, FTSENT *, int) internal_function; -+static int fts_safe_changedir (FTS *, FTSENT *, int, const char *) -+ internal_function; -+ -+#ifndef MAX -+#define MAX(a, b) ({ __typeof__ (a) _a = (a); \ -+ __typeof__ (b) _b = (b); \ -+ _a > _b ? _a : _b; }) -+#endif -+ -+#define ISDOT(a) (a[0] == '.' && (!a[1] || (a[1] == '.' && !a[2]))) -+ -+#define CLR(opt) (sp->fts_options &= ~(opt)) -+#define ISSET(opt) (sp->fts_options & (opt)) -+#define SET(opt) (sp->fts_options |= (opt)) -+ -+#define FCHDIR(sp, fd) (!ISSET(FTS_NOCHDIR) && fchdir(fd)) -+ -+/* fts_build flags */ -+#define BCHILD 1 /* fts_children */ -+#define BNAMES 2 /* fts_children, names only */ -+#define BREAD 3 /* fts_read */ -+ -+FTS * -+fts_open(argv, options, compar) -+ char * const *argv; -+ register int options; -+ int (*compar) (const FTSENT **, const FTSENT **); -+{ -+ register FTS *sp; -+ register FTSENT *p, *root; -+ register int nitems; -+ FTSENT *parent = NULL; -+ FTSENT *tmp = NULL; -+ -+ /* Options check. */ -+ if (options & ~FTS_OPTIONMASK) { -+ __set_errno (EINVAL); -+ return (NULL); -+ } -+ -+ /* Allocate/initialize the stream */ -+ if ((sp = malloc((u_int)sizeof(FTS))) == NULL) -+ return (NULL); -+ memset(sp, 0, sizeof(FTS)); -+ sp->fts_compar = (int (*) (const void *, const void *)) compar; -+ sp->fts_options = options; -+ -+ /* Logical walks turn on NOCHDIR; symbolic links are too hard. */ -+ if (ISSET(FTS_LOGICAL)) -+ SET(FTS_NOCHDIR); -+ -+ /* -+ * Start out with 1K of path space, and enough, in any case, -+ * to hold the user's paths. -+ */ -+#ifndef MAXPATHLEN -+#define MAXPATHLEN 1024 -+#endif -+ size_t maxarglen = fts_maxarglen(argv); -+ if (fts_palloc(sp, MAX(maxarglen, MAXPATHLEN))) -+ goto mem1; -+ -+ /* Allocate/initialize root's parent. */ -+ if (*argv != NULL) { -+ if ((parent = fts_alloc(sp, "", 0)) == NULL) -+ goto mem2; -+ parent->fts_level = FTS_ROOTPARENTLEVEL; -+ } -+ -+ /* Allocate/initialize root(s). */ -+ for (root = NULL, nitems = 0; *argv != NULL; ++argv, ++nitems) { -+ /* Don't allow zero-length paths. */ -+ size_t len = strlen(*argv); -+ if (len == 0) { -+ __set_errno (ENOENT); -+ goto mem3; -+ } -+ -+ p = fts_alloc(sp, *argv, len); -+ p->fts_level = FTS_ROOTLEVEL; -+ p->fts_parent = parent; -+ p->fts_accpath = p->fts_name; -+ p->fts_info = fts_stat(sp, p, ISSET(FTS_COMFOLLOW)); -+ -+ /* Command-line "." and ".." are real directories. */ -+ if (p->fts_info == FTS_DOT) -+ p->fts_info = FTS_D; -+ -+ /* -+ * If comparison routine supplied, traverse in sorted -+ * order; otherwise traverse in the order specified. -+ */ -+ if (compar) { -+ p->fts_link = root; -+ root = p; -+ } else { -+ p->fts_link = NULL; -+ if (root == NULL) -+ tmp = root = p; -+ else { -+ tmp->fts_link = p; -+ tmp = p; -+ } -+ } -+ } -+ if (compar && nitems > 1) -+ root = fts_sort(sp, root, nitems); -+ -+ /* -+ * Allocate a dummy pointer and make fts_read think that we've just -+ * finished the node before the root(s); set p->fts_info to FTS_INIT -+ * so that everything about the "current" node is ignored. -+ */ -+ if ((sp->fts_cur = fts_alloc(sp, "", 0)) == NULL) -+ goto mem3; -+ sp->fts_cur->fts_link = root; -+ sp->fts_cur->fts_info = FTS_INIT; -+ -+ /* -+ * If using chdir(2), grab a file descriptor pointing to dot to ensure -+ * that we can get back here; this could be avoided for some paths, -+ * but almost certainly not worth the effort. Slashes, symbolic links, -+ * and ".." are all fairly nasty problems. Note, if we can't get the -+ * descriptor we run anyway, just more slowly. -+ */ -+ if (!ISSET(FTS_NOCHDIR) -+ && (sp->fts_rfd = open(".", O_RDONLY, 0)) < 0) -+ SET(FTS_NOCHDIR); -+ -+ return (sp); -+ -+mem3: fts_lfree(root); -+ free(parent); -+mem2: free(sp->fts_path); -+mem1: free(sp); -+ return (NULL); -+} -+ -+static void -+internal_function -+fts_load(sp, p) -+ FTS *sp; -+ register FTSENT *p; -+{ -+ register int len; -+ register char *cp; -+ -+ /* -+ * Load the stream structure for the next traversal. Since we don't -+ * actually enter the directory until after the preorder visit, set -+ * the fts_accpath field specially so the chdir gets done to the right -+ * place and the user can access the first node. From fts_open it's -+ * known that the path will fit. -+ */ -+ len = p->fts_pathlen = p->fts_namelen; -+ memmove(sp->fts_path, p->fts_name, len + 1); -+ if ((cp = strrchr(p->fts_name, '/')) && (cp != p->fts_name || cp[1])) { -+ len = strlen(++cp); -+ memmove(p->fts_name, cp, len + 1); -+ p->fts_namelen = len; -+ } -+ p->fts_accpath = p->fts_path = sp->fts_path; -+ sp->fts_dev = p->fts_dev; -+} -+ -+int -+fts_close(sp) -+ FTS *sp; -+{ -+ register FTSENT *freep, *p; -+ int saved_errno; -+ -+ /* -+ * This still works if we haven't read anything -- the dummy structure -+ * points to the root list, so we step through to the end of the root -+ * list which has a valid parent pointer. -+ */ -+ if (sp->fts_cur) { -+ for (p = sp->fts_cur; p->fts_level >= FTS_ROOTLEVEL;) { -+ freep = p; -+ p = p->fts_link != NULL ? p->fts_link : p->fts_parent; -+ free(freep); -+ } -+ free(p); -+ } -+ -+ /* Free up child linked list, sort array, path buffer. */ -+ if (sp->fts_child) -+ fts_lfree(sp->fts_child); -+ free(sp->fts_array); -+ free(sp->fts_path); -+ -+ /* Return to original directory, save errno if necessary. */ -+ if (!ISSET(FTS_NOCHDIR)) { -+ saved_errno = fchdir(sp->fts_rfd) ? errno : 0; -+ (void)close(sp->fts_rfd); -+ -+ /* Set errno and return. */ -+ if (saved_errno != 0) { -+ /* Free up the stream pointer. */ -+ free(sp); -+ __set_errno (saved_errno); -+ return (-1); -+ } -+ } -+ -+ /* Free up the stream pointer. */ -+ free(sp); -+ return (0); -+} -+ -+/* -+ * Special case of "/" at the end of the path so that slashes aren't -+ * appended which would cause paths to be written as "....//foo". -+ */ -+#define NAPPEND(p) \ -+ (p->fts_path[p->fts_pathlen - 1] == '/' \ -+ ? p->fts_pathlen - 1 : p->fts_pathlen) -+ -+FTSENT * -+fts_read(sp) -+ register FTS *sp; -+{ -+ register FTSENT *p, *tmp; -+ register int instr; -+ register char *t; -+ int saved_errno; -+ -+ /* If finished or unrecoverable error, return NULL. */ -+ if (sp->fts_cur == NULL || ISSET(FTS_STOP)) -+ return (NULL); -+ -+ /* Set current node pointer. */ -+ p = sp->fts_cur; -+ -+ /* Save and zero out user instructions. */ -+ instr = p->fts_instr; -+ p->fts_instr = FTS_NOINSTR; -+ -+ /* Any type of file may be re-visited; re-stat and re-turn. */ -+ if (instr == FTS_AGAIN) { -+ p->fts_info = fts_stat(sp, p, 0); -+ return (p); -+ } -+ -+ /* -+ * Following a symlink -- SLNONE test allows application to see -+ * SLNONE and recover. If indirecting through a symlink, have -+ * keep a pointer to current location. If unable to get that -+ * pointer, follow fails. -+ */ -+ if (instr == FTS_FOLLOW && -+ (p->fts_info == FTS_SL || p->fts_info == FTS_SLNONE)) { -+ p->fts_info = fts_stat(sp, p, 1); -+ if (p->fts_info == FTS_D && !ISSET(FTS_NOCHDIR)) { -+ if ((p->fts_symfd = open(".", O_RDONLY, 0)) < 0) { -+ p->fts_errno = errno; -+ p->fts_info = FTS_ERR; -+ } else -+ p->fts_flags |= FTS_SYMFOLLOW; -+ } -+ return (p); -+ } -+ -+ /* Directory in pre-order. */ -+ if (p->fts_info == FTS_D) { -+ /* If skipped or crossed mount point, do post-order visit. */ -+ if (instr == FTS_SKIP || -+ (ISSET(FTS_XDEV) && p->fts_dev != sp->fts_dev)) { -+ if (p->fts_flags & FTS_SYMFOLLOW) -+ (void)close(p->fts_symfd); -+ if (sp->fts_child) { -+ fts_lfree(sp->fts_child); -+ sp->fts_child = NULL; -+ } -+ p->fts_info = FTS_DP; -+ return (p); -+ } -+ -+ /* Rebuild if only read the names and now traversing. */ -+ if (sp->fts_child != NULL && ISSET(FTS_NAMEONLY)) { -+ CLR(FTS_NAMEONLY); -+ fts_lfree(sp->fts_child); -+ sp->fts_child = NULL; -+ } -+ -+ /* -+ * Cd to the subdirectory. -+ * -+ * If have already read and now fail to chdir, whack the list -+ * to make the names come out right, and set the parent errno -+ * so the application will eventually get an error condition. -+ * Set the FTS_DONTCHDIR flag so that when we logically change -+ * directories back to the parent we don't do a chdir. -+ * -+ * If haven't read do so. If the read fails, fts_build sets -+ * FTS_STOP or the fts_info field of the node. -+ */ -+ if (sp->fts_child != NULL) { -+ if (fts_safe_changedir(sp, p, -1, p->fts_accpath)) { -+ p->fts_errno = errno; -+ p->fts_flags |= FTS_DONTCHDIR; -+ for (p = sp->fts_child; p != NULL; -+ p = p->fts_link) -+ p->fts_accpath = -+ p->fts_parent->fts_accpath; -+ } -+ } else if ((sp->fts_child = fts_build(sp, BREAD)) == NULL) { -+ if (ISSET(FTS_STOP)) -+ return (NULL); -+ return (p); -+ } -+ p = sp->fts_child; -+ sp->fts_child = NULL; -+ sp->fts_cur = p; -+ goto name; -+ } -+ -+ /* Move to the next node on this level. */ -+next: tmp = p; -+ if ((p = p->fts_link) != NULL) { -+ sp->fts_cur = p; -+ free(tmp); -+ -+ /* -+ * If reached the top, return to the original directory (or -+ * the root of the tree), and load the paths for the next root. -+ */ -+ if (p->fts_level == FTS_ROOTLEVEL) { -+ if (FCHDIR(sp, sp->fts_rfd)) { -+ SET(FTS_STOP); -+ return (NULL); -+ } -+ fts_load(sp, p); -+ return p; -+ } -+ -+ /* -+ * User may have called fts_set on the node. If skipped, -+ * ignore. If followed, get a file descriptor so we can -+ * get back if necessary. -+ */ -+ if (p->fts_instr == FTS_SKIP) -+ goto next; -+ if (p->fts_instr == FTS_FOLLOW) { -+ p->fts_info = fts_stat(sp, p, 1); -+ if (p->fts_info == FTS_D && !ISSET(FTS_NOCHDIR)) { -+ if ((p->fts_symfd = -+ open(".", O_RDONLY, 0)) < 0) { -+ p->fts_errno = errno; -+ p->fts_info = FTS_ERR; -+ } else -+ p->fts_flags |= FTS_SYMFOLLOW; -+ } -+ p->fts_instr = FTS_NOINSTR; -+ } -+ -+name: t = sp->fts_path + NAPPEND(p->fts_parent); -+ *t++ = '/'; -+ memmove(t, p->fts_name, p->fts_namelen + 1); -+ return p; -+ } -+ -+ /* Move up to the parent node. */ -+ p = tmp->fts_parent; -+ sp->fts_cur = p; -+ free(tmp); -+ -+ if (p->fts_level == FTS_ROOTPARENTLEVEL) { -+ /* -+ * Done; free everything up and set errno to 0 so the user -+ * can distinguish between error and EOF. -+ */ -+ free(p); -+ __set_errno (0); -+ return (sp->fts_cur = NULL); -+ } -+ -+ /* NUL terminate the pathname. */ -+ sp->fts_path[p->fts_pathlen] = '\0'; -+ -+ /* -+ * Return to the parent directory. If at a root node or came through -+ * a symlink, go back through the file descriptor. Otherwise, cd up -+ * one directory. -+ */ -+ if (p->fts_level == FTS_ROOTLEVEL) { -+ if (FCHDIR(sp, sp->fts_rfd)) { -+ SET(FTS_STOP); -+ return (NULL); -+ } -+ } else if (p->fts_flags & FTS_SYMFOLLOW) { -+ if (FCHDIR(sp, p->fts_symfd)) { -+ saved_errno = errno; -+ (void)close(p->fts_symfd); -+ __set_errno (saved_errno); -+ SET(FTS_STOP); -+ return (NULL); -+ } -+ (void)close(p->fts_symfd); -+ } else if (!(p->fts_flags & FTS_DONTCHDIR) && -+ fts_safe_changedir(sp, p->fts_parent, -1, "..")) { -+ SET(FTS_STOP); -+ return (NULL); -+ } -+ p->fts_info = p->fts_errno ? FTS_ERR : FTS_DP; -+ return p; -+} -+ -+/* -+ * Fts_set takes the stream as an argument although it's not used in this -+ * implementation; it would be necessary if anyone wanted to add global -+ * semantics to fts using fts_set. An error return is allowed for similar -+ * reasons. -+ */ -+/* ARGSUSED */ -+int -+fts_set(sp, p, instr) -+ FTS *sp; -+ FTSENT *p; -+ int instr; -+{ -+ if (instr != 0 && instr != FTS_AGAIN && instr != FTS_FOLLOW && -+ instr != FTS_NOINSTR && instr != FTS_SKIP) { -+ __set_errno (EINVAL); -+ return (1); -+ } -+ p->fts_instr = instr; -+ return (0); -+} -+ -+FTSENT * -+fts_children(sp, instr) -+ register FTS *sp; -+ int instr; -+{ -+ register FTSENT *p; -+ int fd; -+ -+ if (instr != 0 && instr != FTS_NAMEONLY) { -+ __set_errno (EINVAL); -+ return (NULL); -+ } -+ -+ /* Set current node pointer. */ -+ p = sp->fts_cur; -+ -+ /* -+ * Errno set to 0 so user can distinguish empty directory from -+ * an error. -+ */ -+ __set_errno (0); -+ -+ /* Fatal errors stop here. */ -+ if (ISSET(FTS_STOP)) -+ return (NULL); -+ -+ /* Return logical hierarchy of user's arguments. */ -+ if (p->fts_info == FTS_INIT) -+ return (p->fts_link); -+ -+ /* -+ * If not a directory being visited in pre-order, stop here. Could -+ * allow FTS_DNR, assuming the user has fixed the problem, but the -+ * same effect is available with FTS_AGAIN. -+ */ -+ if (p->fts_info != FTS_D /* && p->fts_info != FTS_DNR */) -+ return (NULL); -+ -+ /* Free up any previous child list. */ -+ if (sp->fts_child != NULL) -+ fts_lfree(sp->fts_child); -+ -+ if (instr == FTS_NAMEONLY) { -+ SET(FTS_NAMEONLY); -+ instr = BNAMES; -+ } else -+ instr = BCHILD; -+ -+ /* -+ * If using chdir on a relative path and called BEFORE fts_read does -+ * its chdir to the root of a traversal, we can lose -- we need to -+ * chdir into the subdirectory, and we don't know where the current -+ * directory is, so we can't get back so that the upcoming chdir by -+ * fts_read will work. -+ */ -+ if (p->fts_level != FTS_ROOTLEVEL || p->fts_accpath[0] == '/' || -+ ISSET(FTS_NOCHDIR)) -+ return (sp->fts_child = fts_build(sp, instr)); -+ -+ if ((fd = open(".", O_RDONLY, 0)) < 0) -+ return (NULL); -+ sp->fts_child = fts_build(sp, instr); -+ if (fchdir(fd)) -+ return (NULL); -+ (void)close(fd); -+ return (sp->fts_child); -+} -+ -+/* -+ * This is the tricky part -- do not casually change *anything* in here. The -+ * idea is to build the linked list of entries that are used by fts_children -+ * and fts_read. There are lots of special cases. -+ * -+ * The real slowdown in walking the tree is the stat calls. If FTS_NOSTAT is -+ * set and it's a physical walk (so that symbolic links can't be directories), -+ * we can do things quickly. First, if it's a 4.4BSD file system, the type -+ * of the file is in the directory entry. Otherwise, we assume that the number -+ * of subdirectories in a node is equal to the number of links to the parent. -+ * The former skips all stat calls. The latter skips stat calls in any leaf -+ * directories and for any files after the subdirectories in the directory have -+ * been found, cutting the stat calls by about 2/3. -+ */ -+static FTSENT * -+internal_function -+fts_build(sp, type) -+ register FTS *sp; -+ int type; -+{ -+ register struct dirent *dp; -+ register FTSENT *p, *head; -+ register int nitems; -+ FTSENT *cur, *tail; -+ DIR *dirp; -+ void *oldaddr; -+ int cderrno, descend, len, level, nlinks, saved_errno, -+ nostat, doadjust; -+ size_t maxlen; -+ char *cp; -+ -+ /* Set current node pointer. */ -+ cur = sp->fts_cur; -+ -+ /* -+ * Open the directory for reading. If this fails, we're done. -+ * If being called from fts_read, set the fts_info field. -+ */ -+#if defined FTS_WHITEOUT && 0 -+ if (ISSET(FTS_WHITEOUT)) -+ oflag = DTF_NODUP|DTF_REWIND; -+ else -+ oflag = DTF_HIDEW|DTF_NODUP|DTF_REWIND; -+#else -+# define opendir2(path, flag) opendir(path) -+#endif -+ if ((dirp = opendir2(cur->fts_accpath, oflag)) == NULL) { -+ if (type == BREAD) { -+ cur->fts_info = FTS_DNR; -+ cur->fts_errno = errno; -+ } -+ return (NULL); -+ } -+ -+ /* -+ * Nlinks is the number of possible entries of type directory in the -+ * directory if we're cheating on stat calls, 0 if we're not doing -+ * any stat calls at all, -1 if we're doing stats on everything. -+ */ -+ if (type == BNAMES) { -+ nlinks = 0; -+ /* Be quiet about nostat, GCC. */ -+ nostat = 0; -+ } else if (ISSET(FTS_NOSTAT) && ISSET(FTS_PHYSICAL)) { -+ nlinks = cur->fts_nlink - (ISSET(FTS_SEEDOT) ? 0 : 2); -+ nostat = 1; -+ } else { -+ nlinks = -1; -+ nostat = 0; -+ } -+ -+#ifdef notdef -+ (void)printf("nlinks == %d (cur: %d)\n", nlinks, cur->fts_nlink); -+ (void)printf("NOSTAT %d PHYSICAL %d SEEDOT %d\n", -+ ISSET(FTS_NOSTAT), ISSET(FTS_PHYSICAL), ISSET(FTS_SEEDOT)); -+#endif -+ /* -+ * If we're going to need to stat anything or we want to descend -+ * and stay in the directory, chdir. If this fails we keep going, -+ * but set a flag so we don't chdir after the post-order visit. -+ * We won't be able to stat anything, but we can still return the -+ * names themselves. Note, that since fts_read won't be able to -+ * chdir into the directory, it will have to return different path -+ * names than before, i.e. "a/b" instead of "b". Since the node -+ * has already been visited in pre-order, have to wait until the -+ * post-order visit to return the error. There is a special case -+ * here, if there was nothing to stat then it's not an error to -+ * not be able to stat. This is all fairly nasty. If a program -+ * needed sorted entries or stat information, they had better be -+ * checking FTS_NS on the returned nodes. -+ */ -+ cderrno = 0; -+ if (nlinks || type == BREAD) { -+ if (fts_safe_changedir(sp, cur, dirfd(dirp), NULL)) { -+ if (nlinks && type == BREAD) -+ cur->fts_errno = errno; -+ cur->fts_flags |= FTS_DONTCHDIR; -+ descend = 0; -+ cderrno = errno; -+ (void)closedir(dirp); -+ dirp = NULL; -+ } else -+ descend = 1; -+ } else -+ descend = 0; -+ -+ /* -+ * Figure out the max file name length that can be stored in the -+ * current path -- the inner loop allocates more path as necessary. -+ * We really wouldn't have to do the maxlen calculations here, we -+ * could do them in fts_read before returning the path, but it's a -+ * lot easier here since the length is part of the dirent structure. -+ * -+ * If not changing directories set a pointer so that can just append -+ * each new name into the path. -+ */ -+ len = NAPPEND(cur); -+ if (ISSET(FTS_NOCHDIR)) { -+ cp = sp->fts_path + len; -+ *cp++ = '/'; -+ } else { -+ /* GCC, you're too verbose. */ -+ cp = NULL; -+ } -+ len++; -+ maxlen = sp->fts_pathlen - len; -+ -+ level = cur->fts_level + 1; -+ -+ /* Read the directory, attaching each entry to the `link' pointer. */ -+ doadjust = 0; -+ for (head = tail = NULL, nitems = 0; dirp && (dp = readdir(dirp));) { -+ if (!ISSET(FTS_SEEDOT) && ISDOT(dp->d_name)) -+ continue; -+ -+ if ((p = fts_alloc(sp, dp->d_name, _D_EXACT_NAMLEN (dp))) == NULL) -+ goto mem1; -+ if (_D_EXACT_NAMLEN (dp) >= maxlen) {/* include space for NUL */ -+ oldaddr = sp->fts_path; -+ if (fts_palloc(sp, _D_EXACT_NAMLEN (dp) + len + 1)) { -+ /* -+ * No more memory for path or structures. Save -+ * errno, free up the current structure and the -+ * structures already allocated. -+ */ -+mem1: saved_errno = errno; -+ free(p); -+ fts_lfree(head); -+ (void)closedir(dirp); -+ cur->fts_info = FTS_ERR; -+ SET(FTS_STOP); -+ __set_errno (saved_errno); -+ return (NULL); -+ } -+ /* Did realloc() change the pointer? */ -+ if (oldaddr != sp->fts_path) { -+ doadjust = 1; -+ if (ISSET(FTS_NOCHDIR)) -+ cp = sp->fts_path + len; -+ } -+ maxlen = sp->fts_pathlen - len; -+ } -+ -+ if (len + _D_EXACT_NAMLEN (dp) >= USHRT_MAX) { -+ /* -+ * In an FTSENT, fts_pathlen is a u_short so it is -+ * possible to wraparound here. If we do, free up -+ * the current structure and the structures already -+ * allocated, then error out with ENAMETOOLONG. -+ */ -+ free(p); -+ fts_lfree(head); -+ (void)closedir(dirp); -+ cur->fts_info = FTS_ERR; -+ SET(FTS_STOP); -+ __set_errno (ENAMETOOLONG); -+ return (NULL); -+ } -+ p->fts_level = level; -+ p->fts_parent = sp->fts_cur; -+ p->fts_pathlen = len + _D_EXACT_NAMLEN (dp); -+ -+#if defined FTS_WHITEOUT && 0 -+ if (dp->d_type == DT_WHT) -+ p->fts_flags |= FTS_ISW; -+#endif -+ -+#if 0 -+ /* Unreachable code. cderrno is only ever set to a nonnull -+ value if dirp is closed at the same time. But then we -+ cannot enter this loop. */ -+ if (cderrno) { -+ if (nlinks) { -+ p->fts_info = FTS_NS; -+ p->fts_errno = cderrno; -+ } else -+ p->fts_info = FTS_NSOK; -+ p->fts_accpath = cur->fts_accpath; -+ } else -+#endif -+ if (nlinks == 0 -+#if defined DT_DIR && defined _DIRENT_HAVE_D_TYPE -+ || (nostat && -+ dp->d_type != DT_DIR && dp->d_type != DT_UNKNOWN) -+#endif -+ ) { -+ p->fts_accpath = -+ ISSET(FTS_NOCHDIR) ? p->fts_path : p->fts_name; -+ p->fts_info = FTS_NSOK; -+ } else { -+ /* Build a file name for fts_stat to stat. */ -+ if (ISSET(FTS_NOCHDIR)) { -+ p->fts_accpath = p->fts_path; -+ memmove(cp, p->fts_name, p->fts_namelen + 1); -+ } else -+ p->fts_accpath = p->fts_name; -+ /* Stat it. */ -+ p->fts_info = fts_stat(sp, p, 0); -+ -+ /* Decrement link count if applicable. */ -+ if (nlinks > 0 && (p->fts_info == FTS_D || -+ p->fts_info == FTS_DC || p->fts_info == FTS_DOT)) -+ --nlinks; -+ } -+ -+ /* We walk in directory order so "ls -f" doesn't get upset. */ -+ p->fts_link = NULL; -+ if (head == NULL) -+ head = tail = p; -+ else { -+ tail->fts_link = p; -+ tail = p; -+ } -+ ++nitems; -+ } -+ if (dirp) -+ (void)closedir(dirp); -+ -+ /* -+ * If realloc() changed the address of the path, adjust the -+ * addresses for the rest of the tree and the dir list. -+ */ -+ if (doadjust) -+ fts_padjust(sp, head); -+ -+ /* -+ * If not changing directories, reset the path back to original -+ * state. -+ */ -+ if (ISSET(FTS_NOCHDIR)) { -+ if (len == sp->fts_pathlen || nitems == 0) -+ --cp; -+ *cp = '\0'; -+ } -+ -+ /* -+ * If descended after called from fts_children or after called from -+ * fts_read and nothing found, get back. At the root level we use -+ * the saved fd; if one of fts_open()'s arguments is a relative path -+ * to an empty directory, we wind up here with no other way back. If -+ * can't get back, we're done. -+ */ -+ if (descend && (type == BCHILD || !nitems) && -+ (cur->fts_level == FTS_ROOTLEVEL ? -+ FCHDIR(sp, sp->fts_rfd) : -+ fts_safe_changedir(sp, cur->fts_parent, -1, ".."))) { -+ cur->fts_info = FTS_ERR; -+ SET(FTS_STOP); -+ fts_lfree(head); -+ return (NULL); -+ } -+ -+ /* If didn't find anything, return NULL. */ -+ if (!nitems) { -+ if (type == BREAD) -+ cur->fts_info = FTS_DP; -+ fts_lfree(head); -+ return (NULL); -+ } -+ -+ /* Sort the entries. */ -+ if (sp->fts_compar && nitems > 1) -+ head = fts_sort(sp, head, nitems); -+ return (head); -+} -+ -+static u_short -+internal_function -+fts_stat(sp, p, follow) -+ FTS *sp; -+ register FTSENT *p; -+ int follow; -+{ -+ register FTSENT *t; -+ register dev_t dev; -+ register ino_t ino; -+ struct stat *sbp, sb; -+ int saved_errno; -+ -+ /* If user needs stat info, stat buffer already allocated. */ -+ sbp = ISSET(FTS_NOSTAT) ? &sb : p->fts_statp; -+ -+#if defined FTS_WHITEOUT && 0 -+ /* check for whiteout */ -+ if (p->fts_flags & FTS_ISW) { -+ if (sbp != &sb) { -+ memset(sbp, '\0', sizeof (*sbp)); -+ sbp->st_mode = S_IFWHT; -+ } -+ return (FTS_W); -+ } -+#endif -+ -+ /* -+ * If doing a logical walk, or application requested FTS_FOLLOW, do -+ * a stat(2). If that fails, check for a non-existent symlink. If -+ * fail, set the errno from the stat call. -+ */ -+ if (ISSET(FTS_LOGICAL) || follow) { -+ if (stat(p->fts_accpath, sbp)) { -+ saved_errno = errno; -+ if (!lstat(p->fts_accpath, sbp)) { -+ __set_errno (0); -+ return (FTS_SLNONE); -+ } -+ p->fts_errno = saved_errno; -+ goto err; -+ } -+ } else if (lstat(p->fts_accpath, sbp)) { -+ p->fts_errno = errno; -+err: memset(sbp, 0, sizeof(struct stat)); -+ return (FTS_NS); -+ } -+ -+ if (S_ISDIR(sbp->st_mode)) { -+ /* -+ * Set the device/inode. Used to find cycles and check for -+ * crossing mount points. Also remember the link count, used -+ * in fts_build to limit the number of stat calls. It is -+ * understood that these fields are only referenced if fts_info -+ * is set to FTS_D. -+ */ -+ dev = p->fts_dev = sbp->st_dev; -+ ino = p->fts_ino = sbp->st_ino; -+ p->fts_nlink = sbp->st_nlink; -+ -+ if (ISDOT(p->fts_name)) -+ return (FTS_DOT); -+ -+ /* -+ * Cycle detection is done by brute force when the directory -+ * is first encountered. If the tree gets deep enough or the -+ * number of symbolic links to directories is high enough, -+ * something faster might be worthwhile. -+ */ -+ for (t = p->fts_parent; -+ t->fts_level >= FTS_ROOTLEVEL; t = t->fts_parent) -+ if (ino == t->fts_ino && dev == t->fts_dev) { -+ p->fts_cycle = t; -+ return (FTS_DC); -+ } -+ return (FTS_D); -+ } -+ if (S_ISLNK(sbp->st_mode)) -+ return (FTS_SL); -+ if (S_ISREG(sbp->st_mode)) -+ return (FTS_F); -+ return (FTS_DEFAULT); -+} -+ -+static FTSENT * -+internal_function -+fts_sort(sp, head, nitems) -+ FTS *sp; -+ FTSENT *head; -+ register int nitems; -+{ -+ register FTSENT **ap, *p; -+ -+ /* -+ * Construct an array of pointers to the structures and call qsort(3). -+ * Reassemble the array in the order returned by qsort. If unable to -+ * sort for memory reasons, return the directory entries in their -+ * current order. Allocate enough space for the current needs plus -+ * 40 so don't realloc one entry at a time. -+ */ -+ if (nitems > sp->fts_nitems) { -+ struct _ftsent **a; -+ -+ sp->fts_nitems = nitems + 40; -+ if ((a = realloc(sp->fts_array, -+ (size_t)(sp->fts_nitems * sizeof(FTSENT *)))) == NULL) { -+ free(sp->fts_array); -+ sp->fts_array = NULL; -+ sp->fts_nitems = 0; -+ return (head); -+ } -+ sp->fts_array = a; -+ } -+ for (ap = sp->fts_array, p = head; p; p = p->fts_link) -+ *ap++ = p; -+ qsort((void *)sp->fts_array, nitems, sizeof(FTSENT *), sp->fts_compar); -+ for (head = *(ap = sp->fts_array); --nitems; ++ap) -+ ap[0]->fts_link = ap[1]; -+ ap[0]->fts_link = NULL; -+ return (head); -+} -+ -+static FTSENT * -+internal_function -+fts_alloc(sp, name, namelen) -+ FTS *sp; -+ const char *name; -+ size_t namelen; -+{ -+ register FTSENT *p; -+ size_t len; -+ -+ /* -+ * The file name is a variable length array and no stat structure is -+ * necessary if the user has set the nostat bit. Allocate the FTSENT -+ * structure, the file name and the stat structure in one chunk, but -+ * be careful that the stat structure is reasonably aligned. Since the -+ * fts_name field is declared to be of size 1, the fts_name pointer is -+ * namelen + 2 before the first possible address of the stat structure. -+ */ -+ len = sizeof(FTSENT) + namelen; -+ if (!ISSET(FTS_NOSTAT)) -+ len += sizeof(struct stat) + ALIGNBYTES; -+ if ((p = malloc(len)) == NULL) -+ return (NULL); -+ -+ /* Copy the name and guarantee NUL termination. */ -+ memmove(p->fts_name, name, namelen); -+ p->fts_name[namelen] = '\0'; -+ -+ if (!ISSET(FTS_NOSTAT)) -+ p->fts_statp = (struct stat *)ALIGN(p->fts_name + namelen + 2); -+ p->fts_namelen = namelen; -+ p->fts_path = sp->fts_path; -+ p->fts_errno = 0; -+ p->fts_flags = 0; -+ p->fts_instr = FTS_NOINSTR; -+ p->fts_number = 0; -+ p->fts_pointer = NULL; -+ return (p); -+} -+ -+static void -+internal_function -+fts_lfree(head) -+ register FTSENT *head; -+{ -+ register FTSENT *p; -+ -+ /* Free a linked list of structures. */ -+ while ((p = head)) { -+ head = head->fts_link; -+ free(p); -+ } -+} -+ -+/* -+ * Allow essentially unlimited paths; find, rm, ls should all work on any tree. -+ * Most systems will allow creation of paths much longer than MAXPATHLEN, even -+ * though the kernel won't resolve them. Add the size (not just what's needed) -+ * plus 256 bytes so don't realloc the path 2 bytes at a time. -+ */ -+static int -+internal_function -+fts_palloc(sp, more) -+ FTS *sp; -+ size_t more; -+{ -+ char *p; -+ -+ sp->fts_pathlen += more + 256; -+ /* -+ * Check for possible wraparound. In an FTS, fts_pathlen is -+ * a signed int but in an FTSENT it is an unsigned short. -+ * We limit fts_pathlen to USHRT_MAX to be safe in both cases. -+ */ -+ if (sp->fts_pathlen < 0 || sp->fts_pathlen >= USHRT_MAX) { -+ free(sp->fts_path); -+ sp->fts_path = NULL; -+ __set_errno (ENAMETOOLONG); -+ return (1); -+ } -+ p = realloc(sp->fts_path, sp->fts_pathlen); -+ if (p == NULL) { -+ free(sp->fts_path); -+ sp->fts_path = NULL; -+ return 1; -+ } -+ sp->fts_path = p; -+ return 0; -+} -+ -+/* -+ * When the path is realloc'd, have to fix all of the pointers in structures -+ * already returned. -+ */ -+static void -+internal_function -+fts_padjust(sp, head) -+ FTS *sp; -+ FTSENT *head; -+{ -+ FTSENT *p; -+ char *addr = sp->fts_path; -+ -+#define ADJUST(p) do { \ -+ if ((p)->fts_accpath != (p)->fts_name) { \ -+ (p)->fts_accpath = \ -+ (char *)addr + ((p)->fts_accpath - (p)->fts_path); \ -+ } \ -+ (p)->fts_path = addr; \ -+} while (0) -+ /* Adjust the current set of children. */ -+ for (p = sp->fts_child; p; p = p->fts_link) -+ ADJUST(p); -+ -+ /* Adjust the rest of the tree, including the current level. */ -+ for (p = head; p->fts_level >= FTS_ROOTLEVEL;) { -+ ADJUST(p); -+ p = p->fts_link ? p->fts_link : p->fts_parent; -+ } -+} -+ -+static size_t -+internal_function -+fts_maxarglen(argv) -+ char * const *argv; -+{ -+ size_t len, max; -+ -+ for (max = 0; *argv; ++argv) -+ if ((len = strlen(*argv)) > max) -+ max = len; -+ return (max + 1); -+} -+ -+/* -+ * Change to dir specified by fd or p->fts_accpath without getting -+ * tricked by someone changing the world out from underneath us. -+ * Assumes p->fts_dev and p->fts_ino are filled in. -+ */ -+static int -+internal_function -+fts_safe_changedir(sp, p, fd, path) -+ FTS *sp; -+ FTSENT *p; -+ int fd; -+ const char *path; -+{ -+ int ret, oerrno, newfd; -+ struct stat64 sb; -+ -+ newfd = fd; -+ if (ISSET(FTS_NOCHDIR)) -+ return (0); -+ if (fd < 0 && (newfd = open(path, O_RDONLY, 0)) < 0) -+ return (-1); -+ if (fstat64(newfd, &sb)) { -+ ret = -1; -+ goto bail; -+ } -+ if (p->fts_dev != sb.st_dev || p->fts_ino != sb.st_ino) { -+ __set_errno (ENOENT); /* disinformation */ -+ ret = -1; -+ goto bail; -+ } -+ ret = fchdir(newfd); -+bail: -+ oerrno = errno; -+ if (fd < 0) -+ (void)close(newfd); -+ __set_errno (oerrno); -+ return (ret); -+} diff --git a/recipes/uclibc/uclibc-git/include-arm-asm.h.patch b/recipes/uclibc/uclibc-git/include-arm-asm.h.patch deleted file mode 100755 index 55c312e..0000000 --- a/recipes/uclibc/uclibc-git/include-arm-asm.h.patch +++ /dev/null @@ -1,65 +0,0 @@ -Delivered-To: raj.khem@gmail.com -Received: by 10.90.86.4 with SMTP id j4cs313304agb; - Sat, 8 Jan 2011 16:45:19 -0800 (PST) -Received: by 10.227.155.75 with SMTP id r11mr17188266wbw.3.1294533918432; - Sat, 08 Jan 2011 16:45:18 -0800 (PST) -Return-Path: -Received: from smtp.smtpout.orange.fr (smtp01.smtpout.orange.fr [80.12.242.123]) - by mx.google.com with ESMTP id k3si33753340wbx.29.2011.01.08.16.45.17; - Sat, 08 Jan 2011 16:45:18 -0800 (PST) -Received-SPF: neutral (google.com: 80.12.242.123 is neither permitted nor denied by best guess record for domain of yann.morin.1998@anciens.enib.fr) client-ip=80.12.242.123; -Authentication-Results: mx.google.com; spf=neutral (google.com: 80.12.242.123 is neither permitted nor denied by best guess record for domain of yann.morin.1998@anciens.enib.fr) smtp.mail=yann.morin.1998@anciens.enib.fr -Received: from roazhon.bzh.lan ([90.32.245.227]) - by mwinf5d24 with ME - id tClC1f0024v5z3u03ClHDf; Sun, 09 Jan 2011 01:45:17 +0100 -From: "Yann E. MORIN" -To: uclibc@uclibc.org -Cc: Khem Raj , - Bernhard Reutner-Fischer , - Carmelo AMOROSO -Subject: [PATCH 5/7] ARM: #include where __USE_BX__ is used -Date: Sun, 9 Jan 2011 01:45:08 +0100 -Message-Id: <1294533910-19305-6-git-send-email-yann.morin.1998@anciens.enib.fr> -X-Mailer: git-send-email 1.7.1 -In-Reply-To: <1294533910-19305-1-git-send-email-yann.morin.1998@anciens.enib.fr> -References: <1294533910-19305-1-git-send-email-yann.morin.1998@anciens.enib.fr> - -The check for __USE_BX__ will be available in bits/arm_asm.h, -so the latter must be included wherever the former is used. - -Signed-off-by: "Yann E. MORIN" -Cc: Khem Raj -Cc: Bernhard Reutner-Fischer -Cc: Carmelo AMOROSO ---- - ldso/ldso/arm/dl-startup.h | 1 + - libc/sysdeps/linux/arm/sysdep.h | 1 + - 2 files changed, 2 insertions(+), 0 deletions(-) - -diff --git a/ldso/ldso/arm/dl-startup.h b/ldso/ldso/arm/dl-startup.h -index a95389d..2dfdaff 100644 ---- a/ldso/ldso/arm/dl-startup.h -+++ b/ldso/ldso/arm/dl-startup.h -@@ -7,6 +7,7 @@ - */ - - #include -+#include - - #if !defined(__thumb__) - __asm__( -diff --git a/libc/sysdeps/linux/arm/sysdep.h b/libc/sysdeps/linux/arm/sysdep.h -index 013f88c..e498695 100644 ---- a/libc/sysdeps/linux/arm/sysdep.h -+++ b/libc/sysdeps/linux/arm/sysdep.h -@@ -21,6 +21,7 @@ - #define _LINUX_ARM_SYSDEP_H 1 - - #include -+#include - - #include - /* For Linux we can use the system call table in the header file --- -1.7.1 - diff --git a/recipes/uclibc/uclibc-git/powerpc_copysignl.patch b/recipes/uclibc/uclibc-git/powerpc_copysignl.patch deleted file mode 100755 index 339ce7f..0000000 --- a/recipes/uclibc/uclibc-git/powerpc_copysignl.patch +++ /dev/null @@ -1,107 +0,0 @@ -Index: git/libc/sysdeps/linux/powerpc/Makefile.arch -=================================================================== ---- git.orig/libc/sysdeps/linux/powerpc/Makefile.arch -+++ git/libc/sysdeps/linux/powerpc/Makefile.arch -@@ -5,7 +5,7 @@ - # Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. - # - --CSRC := __syscall_error.c pread_write.c ioctl.c -+CSRC := __syscall_error.c pread_write.c ioctl.c copysignl.c - - ifeq ($(UCLIBC_HAS_ADVANCED_REALTIME),y) - CSRC += posix_fadvise.c posix_fadvise64.c -Index: git/libc/sysdeps/linux/powerpc/copysignl.c -=================================================================== ---- /dev/null -+++ git/libc/sysdeps/linux/powerpc/copysignl.c -@@ -0,0 +1,89 @@ -+/* s_copysignl.c -- long double version of s_copysign.c. -+ * Conversion to long double by Ulrich Drepper, -+ * Cygnus Support, drepper@cygnus.com. -+ */ -+ -+/* -+ * ==================================================== -+ * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. -+ * -+ * Developed at SunPro, a Sun Microsystems, Inc. business. -+ * Permission to use, copy, modify, and distribute this -+ * software is freely granted, provided that this notice -+ * is preserved. -+ * ==================================================== -+ */ -+ -+/* -+ * copysignl(long double x, long double y) -+ * copysignl(x,y) returns a value with the magnitude of x and -+ * with the sign bit of y. -+ */ -+ -+#include -+#include -+ -+#if __FLOAT_WORD_ORDER == BIG_ENDIAN -+ -+typedef union -+{ -+ long double value; -+ struct -+ { -+ int sign_exponent:16; -+ unsigned int empty:16; -+ uint32_t msw; -+ uint32_t lsw; -+ } parts; -+} ieee_long_double_shape_type; -+ -+#endif -+ -+#if __FLOAT_WORD_ORDER == LITTLE_ENDIAN -+ -+typedef union -+{ -+ long double value; -+ struct -+ { -+ uint32_t lsw; -+ uint32_t msw; -+ int sign_exponent:16; -+ unsigned int empty:16; -+ } parts; -+} ieee_long_double_shape_type; -+ -+#endif -+ -+/* Get int from the exponent of a long double. */ -+ -+#define GET_LDOUBLE_EXP(exp,d) \ -+do { \ -+ ieee_long_double_shape_type ge_u; \ -+ ge_u.value = (d); \ -+ (exp) = ge_u.parts.sign_exponent; \ -+} while (0) -+ -+/* Set exponent of a long double from an int. */ -+ -+#define SET_LDOUBLE_EXP(d,exp) \ -+do { \ -+ ieee_long_double_shape_type se_u; \ -+ se_u.value = (d); \ -+ se_u.parts.sign_exponent = (exp); \ -+ (d) = se_u.value; \ -+} while (0) -+ -+long double copysignl(long double x, long double y); -+libc_hidden_proto(copysignl); -+ -+long double copysignl(long double x, long double y) -+{ -+ uint32_t es1,es2; -+ GET_LDOUBLE_EXP(es1,x); -+ GET_LDOUBLE_EXP(es2,y); -+ SET_LDOUBLE_EXP(x,(es1&0x7fff)|(es2&0x8000)); -+ return x; -+} -+ -+libc_hidden_def(copysignl); diff --git a/recipes/uclibc/uclibc-git/remove-eabi-oabi-selection.patch b/recipes/uclibc/uclibc-git/remove-eabi-oabi-selection.patch deleted file mode 100755 index 8f3464e..0000000 --- a/recipes/uclibc/uclibc-git/remove-eabi-oabi-selection.patch +++ /dev/null @@ -1,91 +0,0 @@ -Delivered-To: raj.khem@gmail.com -Received: by 10.90.86.4 with SMTP id j4cs313309agb; - Sat, 8 Jan 2011 16:45:20 -0800 (PST) -Received: by 10.216.173.7 with SMTP id u7mr612034wel.50.1294533919433; - Sat, 08 Jan 2011 16:45:19 -0800 (PST) -Return-Path: -Received: from smtp.smtpout.orange.fr (smtp01.smtpout.orange.fr [80.12.242.123]) - by mx.google.com with ESMTP id e10si33752027wer.68.2011.01.08.16.45.19; - Sat, 08 Jan 2011 16:45:19 -0800 (PST) -Received-SPF: neutral (google.com: 80.12.242.123 is neither permitted nor denied by best guess record for domain of yann.morin.1998@anciens.enib.fr) client-ip=80.12.242.123; -Authentication-Results: mx.google.com; spf=neutral (google.com: 80.12.242.123 is neither permitted nor denied by best guess record for domain of yann.morin.1998@anciens.enib.fr) smtp.mail=yann.morin.1998@anciens.enib.fr -Received: from roazhon.bzh.lan ([90.32.245.227]) - by mwinf5d24 with ME - id tClC1f0024v5z3u03ClJDu; Sun, 09 Jan 2011 01:45:18 +0100 -From: "Yann E. MORIN" -To: uclibc@uclibc.org -Cc: Khem Raj , - Bernhard Reutner-Fischer , - Carmelo AMOROSO -Subject: [PATCH 7/7] ARM: remove EABI/OABI selection -Date: Sun, 9 Jan 2011 01:45:10 +0100 -Message-Id: <1294533910-19305-8-git-send-email-yann.morin.1998@anciens.enib.fr> -X-Mailer: git-send-email 1.7.1 -In-Reply-To: <1294533910-19305-1-git-send-email-yann.morin.1998@anciens.enib.fr> -References: <1294533910-19305-1-git-send-email-yann.morin.1998@anciens.enib.fr> - -Rely on the compiler to be properly setup for the default ABI. - -When installing-headers, there are two cases: -- NPTL: no issue, a cross-compiler is already expected -- LinuxThreads: no issue, EABI/OABI has no impact on installed headers. - -Signed-off-by: "Yann E. MORIN" -Cc: Khem Raj -Cc: Bernhard Reutner-Fischer -Cc: Carmelo AMOROSO ---- - extra/Configs/Config.arm | 11 ----------- - libc/sysdeps/linux/arm/Makefile.arch | 9 +++++++-- - libc/sysdeps/linux/arm/bits/huge_val.h | 4 ++-- - 3 files changed, 9 insertions(+), 15 deletions(-) - -Index: git/libc/sysdeps/linux/arm/Makefile.arch -=================================================================== ---- git.orig/libc/sysdeps/linux/arm/Makefile.arch -+++ git/libc/sysdeps/linux/arm/Makefile.arch -@@ -24,7 +24,12 @@ ifeq ($(UCLIBC_HAS_ADVANCED_REALTIME),y) - CSRC += posix_fadvise.c posix_fadvise64.c - endif - --ifeq ($(CONFIG_ARM_EABI),y) -+# Is our compiler set up for EABI ? -+IS_EABI:=$(shell $(CC) $(CFLAGS) -x c - -E -dM /dev/null \ -+ |sed -r -e '/^\#[[:space:]]*define[[:space:]]+__ARM_EABI__([[:space:]]+1)?$$/!d; s/.+/y/;' \ -+ ) -+ -+ifeq ($(IS_EABI),y) - CSRC += aeabi_assert.c aeabi_atexit.c aeabi_errno_addr.c \ - aeabi_localeconv.c aeabi_memclr.c aeabi_memcpy.c \ - aeabi_memmove.c aeabi_memset.c find_exidx.c -@@ -37,7 +42,7 @@ else - CSRC += syscall.c - endif - --ifeq ($(CONFIG_ARM_EABI),y) -+ifeq ($(IS_EABI),y) - libc-static-y += $(ARCH_OUT)/aeabi_lcsts.o $(ARCH_OUT)/aeabi_math.o \ - $(ARCH_OUT)/aeabi_sighandlers.o - libc-nonshared-y += $(ARCH_OUT)/aeabi_lcsts.os $(ARCH_OUT)/aeabi_math.os \ -Index: git/libc/sysdeps/linux/arm/bits/huge_val.h -=================================================================== ---- git.orig/libc/sysdeps/linux/arm/bits/huge_val.h -+++ git/libc/sysdeps/linux/arm/bits/huge_val.h -@@ -32,7 +32,7 @@ - # define HUGE_VAL (__extension__ 0x1.0p2047) - #elif defined __GNUC__ - --#ifndef __CONFIG_ARM_EABI__ -+#ifndef __ARM_EABI__ - # define HUGE_VAL \ - (__extension__ \ - ((union { unsigned __l __attribute__((__mode__(__DI__))); double __d; }) \ -@@ -50,7 +50,7 @@ - - typedef union { unsigned char __c[8]; double __d; } __huge_val_t; - --#ifndef __CONFIG_ARM_EABI__ -+#ifndef __ARM_EABI__ - # if __BYTE_ORDER == __BIG_ENDIAN - # define __HUGE_VAL_bytes { 0, 0, 0, 0, 0x7f, 0xf0, 0, 0 } - # endif diff --git a/recipes/uclibc/uclibc-git/remove-sub-arch-variants.patch b/recipes/uclibc/uclibc-git/remove-sub-arch-variants.patch deleted file mode 100755 index 920a669..0000000 --- a/recipes/uclibc/uclibc-git/remove-sub-arch-variants.patch +++ /dev/null @@ -1,215 +0,0 @@ -Delivered-To: raj.khem@gmail.com -Received: by 10.90.86.4 with SMTP id j4cs313303agb; - Sat, 8 Jan 2011 16:45:18 -0800 (PST) -Received: by 10.227.98.158 with SMTP id q30mr1255804wbn.151.1294533917314; - Sat, 08 Jan 2011 16:45:17 -0800 (PST) -Return-Path: -Received: from smtp.smtpout.orange.fr (smtp01.smtpout.orange.fr [80.12.242.123]) - by mx.google.com with ESMTP id r3si33749838wbr.54.2011.01.08.16.45.16; - Sat, 08 Jan 2011 16:45:17 -0800 (PST) -Received-SPF: neutral (google.com: 80.12.242.123 is neither permitted nor denied by best guess record for domain of yann.morin.1998@anciens.enib.fr) client-ip=80.12.242.123; -Authentication-Results: mx.google.com; spf=neutral (google.com: 80.12.242.123 is neither permitted nor denied by best guess record for domain of yann.morin.1998@anciens.enib.fr) smtp.mail=yann.morin.1998@anciens.enib.fr -Received: from roazhon.bzh.lan ([90.32.245.227]) - by mwinf5d24 with ME - id tClC1f0024v5z3u03ClGDS; Sun, 09 Jan 2011 01:45:16 +0100 -From: "Yann E. MORIN" -To: uclibc@uclibc.org -Cc: Khem Raj , - Bernhard Reutner-Fischer , - Carmelo AMOROSO -Subject: [PATCH 3/7] ARM: remove sub-arch/variants selection from menuconfig -Date: Sun, 9 Jan 2011 01:45:06 +0100 -Message-Id: <1294533910-19305-4-git-send-email-yann.morin.1998@anciens.enib.fr> -X-Mailer: git-send-email 1.7.1 -In-Reply-To: <1294533910-19305-1-git-send-email-yann.morin.1998@anciens.enib.fr> -References: <1294533910-19305-1-git-send-email-yann.morin.1998@anciens.enib.fr> - -Rely on the compiler to be correctly set up to generate -appropriate code for the target variant. - -This exposes the Thumb option, as it is no longer auto-selected. -The "Use BX" no longer depends on supported CPU to be selected, -so it now defaults to 'n' as it shall work by default on CPUs -that do not have BX. - -Signed-off-by: "Yann E. MORIN" -Cc: Khem Raj -Cc: Bernhard Reutner-Fischer -Cc: Carmelo AMOROSO ---- - Rules.mak | 19 ------- - extra/Configs/Config.arm | 125 ++-------------------------------------------- - 2 files changed, 5 insertions(+), 139 deletions(-) - -diff --git a/Rules.mak b/Rules.mak -index 2a16908..09741a6 100644 ---- a/Rules.mak -+++ b/Rules.mak -@@ -332,25 +332,6 @@ ifeq ($(TARGET_ARCH),arm) - OPTIMIZATION+=-fstrict-aliasing - CPU_CFLAGS-$(ARCH_LITTLE_ENDIAN)+=-mlittle-endian - CPU_CFLAGS-$(ARCH_BIG_ENDIAN)+=-mbig-endian -- CPU_CFLAGS-$(CONFIG_GENERIC_ARM)+= -- CPU_CFLAGS-$(CONFIG_ARM610)+=-mtune=arm610 -march=armv3 -- CPU_CFLAGS-$(CONFIG_ARM710)+=-mtune=arm710 -march=armv3 -- CPU_CFLAGS-$(CONFIG_ARM7TDMI)+=-mtune=arm7tdmi -march=armv4t -- CPU_CFLAGS-$(CONFIG_ARM720T)+=-mtune=arm7tdmi -march=armv4t -- CPU_CFLAGS-$(CONFIG_ARM920T)+=-mtune=arm9tdmi -march=armv4t -- CPU_CFLAGS-$(CONFIG_ARM922T)+=-mtune=arm9tdmi -march=armv4t -- CPU_CFLAGS-$(CONFIG_ARM926T)+=-mtune=arm9e -march=armv5te -- CPU_CFLAGS-$(CONFIG_ARM10T)+=-mtune=arm10tdmi -march=armv5t -- CPU_CFLAGS-$(CONFIG_ARM1136JF_S)+=-mtune=arm1136jf-s -march=armv6 -- CPU_CFLAGS-$(CONFIG_ARM1176JZ_S)+=-mtune=arm1176jz-s -march=armv6 -- CPU_CFLAGS-$(CONFIG_ARM1176JZF_S)+=-mtune=arm1176jzf-s -march=armv6 -- CPU_CFLAGS-$(CONFIG_ARM_SA110)+=-mtune=strongarm110 -march=armv4 -- CPU_CFLAGS-$(CONFIG_ARM_SA1100)+=-mtune=strongarm1100 -march=armv4 -- CPU_CFLAGS-$(CONFIG_ARM_XSCALE)+=$(call check_gcc,-mtune=xscale,-mtune=strongarm110) -- CPU_CFLAGS-$(CONFIG_ARM_XSCALE)+=-march=armv5te -Wa,-mcpu=xscale -- CPU_CFLAGS-$(CONFIG_ARM_IWMMXT)+=-march=iwmmxt -Wa,-mcpu=iwmmxt -mabi=iwmmxt -- CPU_CFLAGS-$(CONFIG_ARM_CORTEX_M3)+=-mcpu=cortex-m3 -- CPU_CFLAGS-$(CONFIG_ARM_CORTEX_M1)+=-mcpu=cortex-m1 - CPU_CFLAGS-$(COMPILE_IN_THUMB_MODE)+=-mthumb - endif - -diff --git a/extra/Configs/Config.arm b/extra/Configs/Config.arm -index c9c40d4..6c75a00 100644 ---- a/extra/Configs/Config.arm -+++ b/extra/Configs/Config.arm -@@ -30,129 +30,14 @@ config CONFIG_ARM_EABI - - endchoice - --choice -- prompt "Target Processor Type" -- default CONFIG_GENERIC_ARM -- help -- This is the processor type of your CPU. This information is used for -- optimizing purposes. To build a library that will run on all ARMCPU -- types (albeit not optimally fast), you can specify "Generic Arm" here. -- If you pick anything other than "Generic Arm", there is no guarantee -- that uClibc will even run on anything other than the selected -- processor type. -- -- Here are the settings recommended for greatest speed: -- - "Generic Arm" select this if your compiler is already setup to -- optimize things properly, or if you want to run on pretty much -- everything, or you just don't much care. -- - For anything else, pick the ARM core type that best matches the -- cpu you will be using on your device. -- -- If you don't know what to do, choose "Generic Arm". -- --config CONFIG_GENERIC_ARM -- bool "Generic Arm" -- --config CONFIG_ARM610 -- bool "Arm 610" -- select ARCH_HAS_MMU -- --config CONFIG_ARM710 -- bool "Arm 710" -- select ARCH_HAS_MMU -- --config CONFIG_ARM7TDMI -- bool "Arm 7TDMI" -- select ARCH_HAS_NO_MMU -- select HAS_THUMB -- --config CONFIG_ARM720T -- bool "Arm 720T" -- select ARCH_HAS_MMU -- select HAS_THUMB -- --config CONFIG_ARM920T -- bool "Arm 920T" -- select ARCH_HAS_MMU -- select HAS_THUMB -- --config CONFIG_ARM922T -- bool "Arm 922T" -- select ARCH_HAS_MMU -- select HAS_THUMB -- --config CONFIG_ARM926T -- bool "Arm 926T" -- select ARCH_HAS_MMU -- select HAS_THUMB -- --config CONFIG_ARM10T -- bool "Arm 10T" -- select ARCH_HAS_MMU -- select HAS_THUMB -- --config CONFIG_ARM1136JF_S -- bool "Arm 1136JF-S" -- select ARCH_HAS_MMU -- select HAS_THUMB -- --config CONFIG_ARM1176JZ_S -- bool "Arm 1176JZ-S" -- select ARCH_HAS_MMU -- select HAS_THUMB -- --config CONFIG_ARM1176JZF_S -- bool "Arm 1176JZF-S" -- select ARCH_HAS_MMU -- select HAS_THUMB -- --config CONFIG_ARM_CORTEX_M3 -- bool "Arm Cortex-M3" -- select ARCH_HAS_NO_MMU -- select FORCE_THUMB -- --config CONFIG_ARM_CORTEX_M1 -- bool "Arm Cortex-M1" -- select ARCH_HAS_NO_MMU -- select FORCE_THUMB -- --config CONFIG_ARM_SA110 -- bool "Intel StrongArm SA-110" -- select ARCH_HAS_MMU -- select HAS_THUMB -- --config CONFIG_ARM_SA1100 -- bool "Intel StrongArm SA-1100" -- select ARCH_HAS_MMU -- select HAS_THUMB -- --config CONFIG_ARM_XSCALE -- bool "Intel Xscale" -- select ARCH_HAS_MMU -- select HAS_THUMB -- --config CONFIG_ARM_IWMMXT -- bool "Intel Xscale With WMMX PXA27x" -- select ARCH_HAS_MMU -- select HAS_THUMB -- --endchoice -- --config HAS_THUMB -- bool -- --config FORCE_THUMB -- bool -- select HAS_THUMB -- select COMPILE_IN_THUMB_MODE -- select USE_BX -- - config COMPILE_IN_THUMB_MODE -- bool -+ bool "Build using Thumb mode" -+ select USE_BX -+ help -+ Say 'y' here to force building uClibc in thumb mode. -+ Say 'n' to use your compiler's default mode. - - config USE_BX - bool "Use BX in function return" -- default y -- depends on HAS_THUMB - help - Use BX instruction for THUMB aware architectures. --- -1.7.1 - diff --git a/recipes/uclibc/uclibc-git/reorder-use-BX.patch b/recipes/uclibc/uclibc-git/reorder-use-BX.patch deleted file mode 100755 index d780b4c..0000000 --- a/recipes/uclibc/uclibc-git/reorder-use-BX.patch +++ /dev/null @@ -1,72 +0,0 @@ -Delivered-To: raj.khem@gmail.com -Received: by 10.90.86.4 with SMTP id j4cs313299agb; - Sat, 8 Jan 2011 16:45:16 -0800 (PST) -Received: by 10.227.134.5 with SMTP id h5mr1312651wbt.75.1294533915992; - Sat, 08 Jan 2011 16:45:15 -0800 (PST) -Return-Path: -Received: from smtp.smtpout.orange.fr (smtp01.smtpout.orange.fr [80.12.242.123]) - by mx.google.com with ESMTP id m42si33753731wej.65.2011.01.08.16.45.15; - Sat, 08 Jan 2011 16:45:15 -0800 (PST) -Received-SPF: neutral (google.com: 80.12.242.123 is neither permitted nor denied by best guess record for domain of yann.morin.1998@anciens.enib.fr) client-ip=80.12.242.123; -Authentication-Results: mx.google.com; spf=neutral (google.com: 80.12.242.123 is neither permitted nor denied by best guess record for domain of yann.morin.1998@anciens.enib.fr) smtp.mail=yann.morin.1998@anciens.enib.fr -Received: from roazhon.bzh.lan ([90.32.245.227]) - by mwinf5d24 with ME - id tClC1f0024v5z3u03ClEDA; Sun, 09 Jan 2011 01:45:15 +0100 -From: "Yann E. MORIN" -To: uclibc@uclibc.org -Cc: Khem Raj , - Bernhard Reutner-Fischer , - Carmelo AMOROSO -Subject: [PATCH 1/7] ARM: reorder "Use BX" option -Date: Sun, 9 Jan 2011 01:45:04 +0100 -Message-Id: <1294533910-19305-2-git-send-email-yann.morin.1998@anciens.enib.fr> -X-Mailer: git-send-email 1.7.1 -In-Reply-To: <1294533910-19305-1-git-send-email-yann.morin.1998@anciens.enib.fr> -References: <1294533910-19305-1-git-send-email-yann.morin.1998@anciens.enib.fr> - -"Use BX" is not available on all CPUs, so the option depends on -a correct CPU to be chosen . It is weird that e BX" then appears -_above_ the CPU selection, not below. - -Move the "Use BX" after the CPU selection. - -Signed-off-by: "Yann E. MORIN" -Cc: Khem Raj -Cc: Bernhard Reutner-Fischer -Cc: Carmelo AMOROSO ---- - extra/Configs/Config.arm | 14 +++++++------- - 1 files changed, 7 insertions(+), 7 deletions(-) - -diff --git a/extra/Configs/Config.arm b/extra/Configs/Config.arm -index b060ace..3b90e67 100644 ---- a/extra/Configs/Config.arm -+++ b/extra/Configs/Config.arm -@@ -30,13 +30,6 @@ config CONFIG_ARM_EABI - - endchoice - --config USE_BX -- bool "Use BX in function return" -- default y -- depends on !CONFIG_GENERIC_ARM && !CONFIG_ARM610 && !CONFIG_ARM710 -- help -- Use BX instruction for THUMB aware architectures. -- - choice - prompt "Target Processor Type" - default CONFIG_GENERIC_ARM -@@ -131,3 +124,10 @@ config CONFIG_ARM_IWMMXT - select ARCH_HAS_MMU - - endchoice -+ -+config USE_BX -+ bool "Use BX in function return" -+ default y -+ depends on !CONFIG_GENERIC_ARM && !CONFIG_ARM610 && !CONFIG_ARM710 -+ help -+ Use BX instruction for THUMB aware architectures. --- -1.7.1 - diff --git a/recipes/uclibc/uclibc-git/select-force-thumb.patch b/recipes/uclibc/uclibc-git/select-force-thumb.patch deleted file mode 100755 index b19408f..0000000 --- a/recipes/uclibc/uclibc-git/select-force-thumb.patch +++ /dev/null @@ -1,172 +0,0 @@ -Delivered-To: raj.khem@gmail.com -Received: by 10.90.86.4 with SMTP id j4cs313301agb; - Sat, 8 Jan 2011 16:45:17 -0800 (PST) -Received: by 10.216.186.82 with SMTP id v60mr20017574wem.56.1294533916559; - Sat, 08 Jan 2011 16:45:16 -0800 (PST) -Return-Path: -Received: from smtp.smtpout.orange.fr (smtp01.smtpout.orange.fr [80.12.242.123]) - by mx.google.com with ESMTP id o13si33755824wee.56.2011.01.08.16.45.16; - Sat, 08 Jan 2011 16:45:16 -0800 (PST) -Received-SPF: neutral (google.com: 80.12.242.123 is neither permitted nor denied by best guess record for domain of yann.morin.1998@anciens.enib.fr) client-ip=80.12.242.123; -Authentication-Results: mx.google.com; spf=neutral (google.com: 80.12.242.123 is neither permitted nor denied by best guess record for domain of yann.morin.1998@anciens.enib.fr) smtp.mail=yann.morin.1998@anciens.enib.fr -Received: from roazhon.bzh.lan ([90.32.245.227]) - by mwinf5d24 with ME - id tClC1f0024v5z3u03ClFDL; Sun, 09 Jan 2011 01:45:16 +0100 -From: "Yann E. MORIN" -To: uclibc@uclibc.org -Cc: Khem Raj , - Bernhard Reutner-Fischer , - Carmelo AMOROSO -Subject: [PATCH 2/7] ARM: introduce blind options to select & force THUMB mode -Date: Sun, 9 Jan 2011 01:45:05 +0100 -Message-Id: <1294533910-19305-3-git-send-email-yann.morin.1998@anciens.enib.fr> -X-Mailer: git-send-email 1.7.1 -In-Reply-To: <1294533910-19305-1-git-send-email-yann.morin.1998@anciens.enib.fr> -References: <1294533910-19305-1-git-send-email-yann.morin.1998@anciens.enib.fr> - -Add three new blind options to set use of Thumb mode: -- COMPILE_IN_THUMB_MODE - - if set, CFLAGS will contain -mthumb - - if unset, the compiler's default is used -- HAS_THUMB - - CPUS with Thumb instruction set can select this - - use of BX depends on this -- FORCE_THUMB - - CPUs that are Thumb-only must select this - - this selects: HAS_THUMB, COMPILE_IN_THUMB_MODE and USE_BX - -Also, remove leading space in Rules.mak. - -Signed-off-by: "Yann E. MORIN" -Cc: Khem Raj -Cc: Bernhard Reutner-Fischer -Cc: Carmelo AMOROSO ---- - Rules.mak | 7 ++++--- - extra/Configs/Config.arm | 31 ++++++++++++++++++++++++++++--- - 2 files changed, 32 insertions(+), 6 deletions(-) - -diff --git a/Rules.mak b/Rules.mak -index eecdc64..2a16908 100644 ---- a/Rules.mak -+++ b/Rules.mak -@@ -348,9 +348,10 @@ ifeq ($(TARGET_ARCH),arm) - CPU_CFLAGS-$(CONFIG_ARM_SA1100)+=-mtune=strongarm1100 -march=armv4 - CPU_CFLAGS-$(CONFIG_ARM_XSCALE)+=$(call check_gcc,-mtune=xscale,-mtune=strongarm110) - CPU_CFLAGS-$(CONFIG_ARM_XSCALE)+=-march=armv5te -Wa,-mcpu=xscale -- CPU_CFLAGS-$(CONFIG_ARM_IWMMXT)+=-march=iwmmxt -Wa,-mcpu=iwmmxt -mabi=iwmmxt -- CPU_CFLAGS-$(CONFIG_ARM_CORTEX_M3)+=-mcpu=cortex-m3 -mthumb -- CPU_CFLAGS-$(CONFIG_ARM_CORTEX_M1)+=-mcpu=cortex-m1 -mthumb -+ CPU_CFLAGS-$(CONFIG_ARM_IWMMXT)+=-march=iwmmxt -Wa,-mcpu=iwmmxt -mabi=iwmmxt -+ CPU_CFLAGS-$(CONFIG_ARM_CORTEX_M3)+=-mcpu=cortex-m3 -+ CPU_CFLAGS-$(CONFIG_ARM_CORTEX_M1)+=-mcpu=cortex-m1 -+ CPU_CFLAGS-$(COMPILE_IN_THUMB_MODE)+=-mthumb - endif - - ifeq ($(TARGET_ARCH),mips) -diff --git a/extra/Configs/Config.arm b/extra/Configs/Config.arm -index 3b90e67..c9c40d4 100644 ---- a/extra/Configs/Config.arm -+++ b/extra/Configs/Config.arm -@@ -64,70 +64,95 @@ config CONFIG_ARM710 - config CONFIG_ARM7TDMI - bool "Arm 7TDMI" - select ARCH_HAS_NO_MMU -+ select HAS_THUMB - - config CONFIG_ARM720T - bool "Arm 720T" - select ARCH_HAS_MMU -+ select HAS_THUMB - - config CONFIG_ARM920T - bool "Arm 920T" - select ARCH_HAS_MMU -+ select HAS_THUMB - - config CONFIG_ARM922T - bool "Arm 922T" - select ARCH_HAS_MMU -+ select HAS_THUMB - - config CONFIG_ARM926T - bool "Arm 926T" - select ARCH_HAS_MMU -+ select HAS_THUMB - - config CONFIG_ARM10T - bool "Arm 10T" - select ARCH_HAS_MMU -+ select HAS_THUMB - - config CONFIG_ARM1136JF_S - bool "Arm 1136JF-S" - select ARCH_HAS_MMU -+ select HAS_THUMB - - config CONFIG_ARM1176JZ_S - bool "Arm 1176JZ-S" - select ARCH_HAS_MMU -+ select HAS_THUMB - - config CONFIG_ARM1176JZF_S - bool "Arm 1176JZF-S" - select ARCH_HAS_MMU -+ select HAS_THUMB - - config CONFIG_ARM_CORTEX_M3 - bool "Arm Cortex-M3" - select ARCH_HAS_NO_MMU -- select USE_BX -+ select FORCE_THUMB - - config CONFIG_ARM_CORTEX_M1 - bool "Arm Cortex-M1" - select ARCH_HAS_NO_MMU -- select USE_BX -+ select FORCE_THUMB - - config CONFIG_ARM_SA110 - bool "Intel StrongArm SA-110" - select ARCH_HAS_MMU -+ select HAS_THUMB - - config CONFIG_ARM_SA1100 - bool "Intel StrongArm SA-1100" - select ARCH_HAS_MMU -+ select HAS_THUMB - - config CONFIG_ARM_XSCALE - bool "Intel Xscale" - select ARCH_HAS_MMU -+ select HAS_THUMB - - config CONFIG_ARM_IWMMXT - bool "Intel Xscale With WMMX PXA27x" - select ARCH_HAS_MMU -+ select HAS_THUMB - - endchoice - -+config HAS_THUMB -+ bool -+ -+config FORCE_THUMB -+ bool -+ select HAS_THUMB -+ select COMPILE_IN_THUMB_MODE -+ select USE_BX -+ -+config COMPILE_IN_THUMB_MODE -+ bool -+ - config USE_BX - bool "Use BX in function return" - default y -- depends on !CONFIG_GENERIC_ARM && !CONFIG_ARM610 && !CONFIG_ARM710 -+ depends on HAS_THUMB - help - Use BX instruction for THUMB aware architectures. --- -1.7.1 - diff --git a/recipes/uclibc/uclibc-git/transform-eabi-oabi-choice.patch b/recipes/uclibc/uclibc-git/transform-eabi-oabi-choice.patch deleted file mode 100755 index 82970ca..0000000 --- a/recipes/uclibc/uclibc-git/transform-eabi-oabi-choice.patch +++ /dev/null @@ -1,71 +0,0 @@ -Delivered-To: raj.khem@gmail.com -Received: by 10.90.86.4 with SMTP id j4cs313305agb; - Sat, 8 Jan 2011 16:45:19 -0800 (PST) -Received: by 10.216.153.210 with SMTP id f60mr573848wek.114.1294533918335; - Sat, 08 Jan 2011 16:45:18 -0800 (PST) -Return-Path: -Received: from smtp.smtpout.orange.fr (smtp01.smtpout.orange.fr [80.12.242.123]) - by mx.google.com with ESMTP id n4si33737071wej.152.2011.01.08.16.45.17; - Sat, 08 Jan 2011 16:45:18 -0800 (PST) -Received-SPF: neutral (google.com: 80.12.242.123 is neither permitted nor denied by best guess record for domain of yann.morin.1998@anciens.enib.fr) client-ip=80.12.242.123; -Authentication-Results: mx.google.com; spf=neutral (google.com: 80.12.242.123 is neither permitted nor denied by best guess record for domain of yann.morin.1998@anciens.enib.fr) smtp.mail=yann.morin.1998@anciens.enib.fr -Received: from roazhon.bzh.lan ([90.32.245.227]) - by mwinf5d24 with ME - id tClC1f0024v5z3u03ClGDX; Sun, 09 Jan 2011 01:45:17 +0100 -From: "Yann E. MORIN" -To: uclibc@uclibc.org -Cc: Khem Raj , - Bernhard Reutner-Fischer , - Carmelo AMOROSO -Subject: [PATCH 4/7] ARM: transform the EABI/OABI choice into a boolean -Date: Sun, 9 Jan 2011 01:45:07 +0100 -Message-Id: <1294533910-19305-5-git-send-email-yann.morin.1998@anciens.enib.fr> -X-Mailer: git-send-email 1.7.1 -In-Reply-To: <1294533910-19305-1-git-send-email-yann.morin.1998@anciens.enib.fr> -References: <1294533910-19305-1-git-send-email-yann.morin.1998@anciens.enib.fr> - -The CONFIG_ARM_OABI option is never used. - -Signed-off-by: "Yann E. MORIN" -Cc: Khem Raj -Cc: Bernhard Reutner-Fischer -Cc: Carmelo AMOROSO ---- - extra/Configs/Config.arm | 23 ++++++++--------------- - 1 files changed, 8 insertions(+), 15 deletions(-) - -Index: git/extra/Configs/Config.arm -=================================================================== ---- git.orig/extra/Configs/Config.arm -+++ git/extra/Configs/Config.arm -@@ -12,23 +12,16 @@ config FORCE_OPTIONS_FOR_ARCH - default y - select ARCH_ANY_ENDIAN - --choice -- prompt "Target ABI" -- default CONFIG_ARM_EABI -+config CONFIG_ARM_EABI -+ bool "Build for EABI" - help -- If you choose "EABI" here, functions and constants required by the -- ARM EABI will be built into the library. You should choose "EABI" -+ If you say 'y' here, functions and constants required by the -+ ARM EABI will be built into the library. You should say 'y' - if your compiler uses the ARM EABI, in which case you will also -- need a kernel supporting the EABI system call interface, or "OABI" -- for a compiler using the old Linux ABI. -- --config CONFIG_ARM_OABI -- bool "OABI" -- --config CONFIG_ARM_EABI -- bool "EABI" -+ need a kernel supporting the EABI system call interface. - --endchoice -+ If you say 'n' here, then the library will be built for the -+ old Linux ABI. - - config COMPILE_IN_THUMB_MODE - bool "Build using Thumb mode" diff --git a/recipes/uclibc/uclibc-git/uclibc_enable_log2_test.patch b/recipes/uclibc/uclibc-git/uclibc_enable_log2_test.patch deleted file mode 100644 index f8f3a7d..0000000 --- a/recipes/uclibc/uclibc-git/uclibc_enable_log2_test.patch +++ /dev/null @@ -1,30 +0,0 @@ -Index: uClibc/test/math/libm-test.inc -=================================================================== ---- uClibc/test/math/libm-test.inc (revision 23784) -+++ uClibc/test/math/libm-test.inc (working copy) -@@ -3414,7 +3414,6 @@ - } - - --#if 0 - static void - log2_test (void) - { -@@ -3444,7 +3443,6 @@ - - END (log2); - } --#endif - - - static void -@@ -4967,9 +4965,7 @@ - log_test (); - log10_test (); - log1p_test (); --#if 0 - log2_test (); --#endif - logb_test (); - modf_test (); - ilogb_test (); diff --git a/recipes/uclibc/uclibc_git.bb b/recipes/uclibc/uclibc_git.bb index 385377c..77fc9f8 100644 --- a/recipes/uclibc/uclibc_git.bb +++ b/recipes/uclibc/uclibc_git.bb @@ -7,14 +7,14 @@ # on whether the base patches apply to the selected (SRCDATE) svn release. # UCLIBC_BASE ?= "0.9.32" -SRCREV="251f2266bf24b1b396f59eef60d0acf41fdd02e4" +SRCREV="1bfe83b42b5b850c20ed8d35819cced510eaef3c" PR_append = "+gitr${SRCPV}" DEFAULT_PREFERENCE = "-1" #DEFAULT_PREFERENCE is 0 (empty), releases have a preference of 1 so take # precedence. require uclibc.inc -PR = "${INC_PR}.9" +PR = "${INC_PR}.10" PROVIDES += "virtual/${TARGET_PREFIX}libc-for-gcc" #recent versions uclibc require real kernel headers @@ -28,17 +28,5 @@ SRC_URI = "git://uclibc.org/uClibc.git;branch=master;protocol=git \ file://uClibc.config \ file://uClibc.machine \ file://uClibc.distro \ - file://uclibc-arm-ftruncate64.patch \ - file://uclibc_enable_log2_test.patch \ - file://ldso_use_arm_dl_linux_resolve_in_thumb_mode.patch \ - file://reorder-use-BX.patch \ - file://select-force-thumb.patch \ - file://remove-sub-arch-variants.patch \ - file://transform-eabi-oabi-choice.patch \ - file://include-arm-asm.h.patch \ - file://detect-bx-availibility.patch \ - file://remove-eabi-oabi-selection.patch \ - file://powerpc_copysignl.patch \ - file://fts-support.patch \ " S = "${WORKDIR}/git" -- 1.7.2.5