diff options
63 files changed, 774 insertions, 245 deletions
@@ -16,12 +16,12 @@ e2fsprogs, fbv, freetype, iperf, iptables, iw, less, libaio,libdrm, libgcrypt, libglib2, libpng, libxml2, matchbox, mdadm, memstat, mesa3d, mtd-utils, nano, openssl, pciutils, - php, pixman, pppd, pthread-stubs, qt, radvd, setserial, - squashfs, usb_modeswith, wget, xdriver_xf86-video-intel, - xkeyboard-config, xlib_libX11, xlib_libXfont, - xlib_libXfontcache, xlib_libXxf86misc, xlib_libpciaccess, - xproto_dri2proto, xproto_eviext, xproto_fontcacheproto, - xproto_xf86miscproto + php, pixman, portage, pppd, pthread-stubs, python, qt, radvd, + setserial, squashfs, usb_modeswith, wget, + xdriver_xf86-video-intel, xkeyboard-config, xlib_libX11, + xlib_libXfont, xlib_libXfontcache, xlib_libXxf86misc, + xlib_libpciaccess, xproto_dri2proto, xproto_eviext, + xproto_fontcacheproto, xproto_xf86miscproto Issues resolved (http://bugs.uclibc.org): @@ -56,7 +56,10 @@ #1459: Misc QA fixes #1489: radvd update to 1.6 #1513: Enable powerpc e300c2, e300c3 and e500mc optimization + #1537: dev entries not created anymore + #1555: Fix default uclibc-0.9.31 configuration #1567: openssl0.9.8n fails to compile + #1591: portmap fails to compile 2010.02, Release February 26th, 2010: diff --git a/configs/arm_toolchain_defconfig b/configs/arm_toolchain_defconfig index 529a3631b..8e89107b4 100644 --- a/configs/arm_toolchain_defconfig +++ b/configs/arm_toolchain_defconfig @@ -714,6 +714,7 @@ BR2_PACKAGE_XSERVER_none=y # # filesystem for target device # +BR2_ROOTFS_DEVICE_TABLE="target/device/generic/device_table.txt" # BR2_TARGET_ROOTFS_CRAMFS is not set # BR2_TARGET_ROOTFS_CLOOP is not set # BR2_TARGET_ROOTFS_EXT2 is not set diff --git a/configs/at91rm9200df_defconfig b/configs/at91rm9200df_defconfig index e4c0b0ef6..e004b21c2 100644 --- a/configs/at91rm9200df_defconfig +++ b/configs/at91rm9200df_defconfig @@ -839,6 +839,7 @@ BR2_PACKAGE_LIBXML2=y # # filesystem for target device # +BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt" # BR2_TARGET_ROOTFS_CRAMFS is not set # BR2_TARGET_ROOTFS_CLOOP is not set BR2_TARGET_ROOTFS_EXT2=y diff --git a/configs/at91rm9200df_ext_bare_defconfig b/configs/at91rm9200df_ext_bare_defconfig index 65a640b23..032064a84 100644 --- a/configs/at91rm9200df_ext_bare_defconfig +++ b/configs/at91rm9200df_ext_bare_defconfig @@ -635,6 +635,7 @@ BR2_PACKAGE_XSERVER_none=y # # filesystem for target device # +BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt" # BR2_TARGET_ROOTFS_CRAMFS is not set # BR2_TARGET_ROOTFS_CLOOP is not set # BR2_TARGET_ROOTFS_EXT2 is not set diff --git a/configs/at91rm9200df_ext_defconfig b/configs/at91rm9200df_ext_defconfig index 6a39002f5..35251a362 100644 --- a/configs/at91rm9200df_ext_defconfig +++ b/configs/at91rm9200df_ext_defconfig @@ -765,6 +765,7 @@ BR2_PACKAGE_LIBXML2=y # # filesystem for target device # +BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt" # BR2_TARGET_ROOTFS_CRAMFS is not set # BR2_TARGET_ROOTFS_CLOOP is not set BR2_TARGET_ROOTFS_EXT2=y diff --git a/configs/at91sam9260dfc_defconfig b/configs/at91sam9260dfc_defconfig index 8fb7f0ea1..b571c8030 100644 --- a/configs/at91sam9260dfc_defconfig +++ b/configs/at91sam9260dfc_defconfig @@ -853,6 +853,7 @@ BR2_PACKAGE_LIBXML2=y # # filesystem for target device # +BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt" # BR2_TARGET_ROOTFS_CRAMFS is not set # BR2_TARGET_ROOTFS_CLOOP is not set BR2_TARGET_ROOTFS_EXT2=y diff --git a/configs/at91sam9260dfc_ext_bare_defconfig b/configs/at91sam9260dfc_ext_bare_defconfig index 6e4d47883..e1ace69ca 100644 --- a/configs/at91sam9260dfc_ext_bare_defconfig +++ b/configs/at91sam9260dfc_ext_bare_defconfig @@ -635,6 +635,7 @@ BR2_PACKAGE_XSERVER_none=y # # filesystem for target device # +BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt" # BR2_TARGET_ROOTFS_CRAMFS is not set # BR2_TARGET_ROOTFS_CLOOP is not set # BR2_TARGET_ROOTFS_EXT2 is not set diff --git a/configs/at91sam9260dfc_ext_defconfig b/configs/at91sam9260dfc_ext_defconfig index 22287bae9..c430d3db8 100644 --- a/configs/at91sam9260dfc_ext_defconfig +++ b/configs/at91sam9260dfc_ext_defconfig @@ -773,6 +773,7 @@ BR2_PACKAGE_LIBXML2=y # # filesystem for target device # +BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt" # BR2_TARGET_ROOTFS_CRAMFS is not set # BR2_TARGET_ROOTFS_CLOOP is not set BR2_TARGET_ROOTFS_EXT2=y diff --git a/configs/at91sam9260pf_defconfig b/configs/at91sam9260pf_defconfig index 396adeea9..a2b86951b 100644 --- a/configs/at91sam9260pf_defconfig +++ b/configs/at91sam9260pf_defconfig @@ -548,6 +548,7 @@ BR2_SCRIPTING_SUPPORT=y # # filesystem for target device # +BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt" # BR2_TARGET_ROOTFS_CRAMFS is not set # BR2_TARGET_ROOTFS_CLOOP is not set BR2_TARGET_ROOTFS_EXT2=y diff --git a/configs/at91sam9261ek_defconfig b/configs/at91sam9261ek_defconfig index 73fc09cb7..1cfc2e7cf 100644 --- a/configs/at91sam9261ek_defconfig +++ b/configs/at91sam9261ek_defconfig @@ -904,6 +904,7 @@ BR2_PACKAGE_LIBXSLT=y # # filesystem for target device # +BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt" # BR2_TARGET_ROOTFS_CRAMFS is not set # BR2_TARGET_ROOTFS_CLOOP is not set BR2_TARGET_ROOTFS_EXT2=y diff --git a/configs/at91sam9261ek_ext_bare_defconfig b/configs/at91sam9261ek_ext_bare_defconfig index 316c15ed6..5e5e22da2 100644 --- a/configs/at91sam9261ek_ext_bare_defconfig +++ b/configs/at91sam9261ek_ext_bare_defconfig @@ -638,6 +638,7 @@ BR2_PACKAGE_XSERVER_none=y # # filesystem for target device # +BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt" # BR2_TARGET_ROOTFS_CRAMFS is not set # BR2_TARGET_ROOTFS_CLOOP is not set # BR2_TARGET_ROOTFS_EXT2 is not set diff --git a/configs/at91sam9261ek_ext_defconfig b/configs/at91sam9261ek_ext_defconfig index 4bb96f13a..362680b49 100644 --- a/configs/at91sam9261ek_ext_defconfig +++ b/configs/at91sam9261ek_ext_defconfig @@ -861,6 +861,7 @@ BR2_PACKAGE_LIBXSLT=y # # filesystem for target device # +BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt" # BR2_TARGET_ROOTFS_CRAMFS is not set # BR2_TARGET_ROOTFS_CLOOP is not set BR2_TARGET_ROOTFS_EXT2=y diff --git a/configs/at91sam9263ek_defconfig b/configs/at91sam9263ek_defconfig index cdbeaa393..a670b41cc 100644 --- a/configs/at91sam9263ek_defconfig +++ b/configs/at91sam9263ek_defconfig @@ -901,6 +901,7 @@ BR2_PACKAGE_LIBXSLT=y # # filesystem for target device # +BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt" # BR2_TARGET_ROOTFS_CRAMFS is not set # BR2_TARGET_ROOTFS_CLOOP is not set BR2_TARGET_ROOTFS_EXT2=y diff --git a/configs/at91sam9263ek_ext_bare_defconfig b/configs/at91sam9263ek_ext_bare_defconfig index 3e57789b6..bc6f62623 100644 --- a/configs/at91sam9263ek_ext_bare_defconfig +++ b/configs/at91sam9263ek_ext_bare_defconfig @@ -637,6 +637,7 @@ BR2_PACKAGE_XSERVER_none=y # # filesystem for target device # +BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt" # BR2_TARGET_ROOTFS_CRAMFS is not set # BR2_TARGET_ROOTFS_CLOOP is not set # BR2_TARGET_ROOTFS_EXT2 is not set diff --git a/configs/at91sam9263ek_ext_defconfig b/configs/at91sam9263ek_ext_defconfig index 944811faf..4a59ea61a 100644 --- a/configs/at91sam9263ek_ext_defconfig +++ b/configs/at91sam9263ek_ext_defconfig @@ -823,6 +823,7 @@ BR2_PACKAGE_LIBXSLT=y # # filesystem for target device # +BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt" # BR2_TARGET_ROOTFS_CRAMFS is not set # BR2_TARGET_ROOTFS_CLOOP is not set BR2_TARGET_ROOTFS_EXT2=y diff --git a/configs/at91sam9g20dfc_defconfig b/configs/at91sam9g20dfc_defconfig index 710639bc3..a57dcffed 100644 --- a/configs/at91sam9g20dfc_defconfig +++ b/configs/at91sam9g20dfc_defconfig @@ -769,6 +769,7 @@ BR2_PACKAGE_EXPAT=y # # filesystem for target device # +BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt" # BR2_TARGET_ROOTFS_CRAMFS is not set # BR2_TARGET_ROOTFS_CLOOP is not set BR2_TARGET_ROOTFS_EXT2=y diff --git a/configs/at91sam9g20dfc_ext_bare_defconfig b/configs/at91sam9g20dfc_ext_bare_defconfig index 4db69f375..3977dc987 100644 --- a/configs/at91sam9g20dfc_ext_bare_defconfig +++ b/configs/at91sam9g20dfc_ext_bare_defconfig @@ -635,6 +635,7 @@ BR2_PACKAGE_XSERVER_none=y # # filesystem for target device # +BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt" # BR2_TARGET_ROOTFS_CRAMFS is not set # BR2_TARGET_ROOTFS_CLOOP is not set # BR2_TARGET_ROOTFS_EXT2 is not set diff --git a/configs/at91sam9g20dfc_ext_defconfig b/configs/at91sam9g20dfc_ext_defconfig index a2f34a2f3..632f2d1c6 100644 --- a/configs/at91sam9g20dfc_ext_defconfig +++ b/configs/at91sam9g20dfc_ext_defconfig @@ -773,6 +773,7 @@ BR2_PACKAGE_LIBXML2=y # # filesystem for target device # +BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/root/device_table.txt" # BR2_TARGET_ROOTFS_CRAMFS is not set # BR2_TARGET_ROOTFS_CLOOP is not set BR2_TARGET_ROOTFS_EXT2=y diff --git a/configs/atngw100-base_defconfig b/configs/atngw100-base_defconfig index cd5a6767f..15d779a0b 100644 --- a/configs/atngw100-base_defconfig +++ b/configs/atngw100-base_defconfig @@ -698,6 +698,7 @@ BR2_ROOTFS_SUFFIX="$(DATE)" # # filesystem for target device # +BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/atngw100-base/device_table.txt" # BR2_TARGET_ROOTFS_CRAMFS is not set # BR2_TARGET_ROOTFS_CLOOP is not set # BR2_TARGET_ROOTFS_EXT2 is not set diff --git a/configs/atngw100_defconfig b/configs/atngw100_defconfig index 367bcdc5b..ecaf77410 100644 --- a/configs/atngw100_defconfig +++ b/configs/atngw100_defconfig @@ -688,6 +688,7 @@ BR2_ROOTFS_SUFFIX="$(DATE)" # # filesystem for target device # +BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/atngw100/device_table.txt" # BR2_TARGET_ROOTFS_CRAMFS is not set # BR2_TARGET_ROOTFS_CLOOP is not set # BR2_TARGET_ROOTFS_EXT2 is not set diff --git a/configs/atstk1005_defconfig b/configs/atstk1005_defconfig index 50e013e3f..6b7a7b6d4 100644 --- a/configs/atstk1005_defconfig +++ b/configs/atstk1005_defconfig @@ -731,6 +731,7 @@ BR2_PACKAGE_ZLIB=y # # filesystem for target device # +BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/atstk1005/device_table.txt" # BR2_TARGET_ROOTFS_CRAMFS is not set # BR2_TARGET_ROOTFS_CLOOP is not set # BR2_TARGET_ROOTFS_EXT2 is not set diff --git a/configs/atstk100x_defconfig b/configs/atstk100x_defconfig index df30b05c2..1a27f1af4 100644 --- a/configs/atstk100x_defconfig +++ b/configs/atstk100x_defconfig @@ -834,6 +834,7 @@ BR2_ROOTFS_SUFFIX="$(DATE)" # # filesystem for target device # +BR2_ROOTFS_DEVICE_TABLE="target/device/Atmel/atstk100x/device_table.txt" # BR2_TARGET_ROOTFS_CRAMFS is not set # BR2_TARGET_ROOTFS_CLOOP is not set BR2_TARGET_ROOTFS_EXT2=y diff --git a/configs/kb9202_defconfig b/configs/kb9202_defconfig index b1ec3233c..e66348b70 100644 --- a/configs/kb9202_defconfig +++ b/configs/kb9202_defconfig @@ -654,6 +654,7 @@ BR2_GAMES=y # # filesystem for target device # +BR2_ROOTFS_DEVICE_TABLE="target/device/KwikByte/kb9202/device_table.txt" # BR2_TARGET_ROOTFS_CRAMFS is not set # BR2_TARGET_ROOTFS_CLOOP is not set # BR2_TARGET_ROOTFS_EXT2 is not set diff --git a/configs/v100sc2_defconfig b/configs/v100sc2_defconfig index 309b80e4b..b139c277f 100644 --- a/configs/v100sc2_defconfig +++ b/configs/v100sc2_defconfig @@ -685,6 +685,7 @@ BR2_PACKAGE_LIBXSLT=y # # filesystem for target device # +BR2_ROOTFS_DEVICE_TABLE="target/device/valka/device_table.txt" # BR2_TARGET_ROOTFS_CRAMFS is not set # BR2_TARGET_ROOTFS_CLOOP is not set # BR2_TARGET_ROOTFS_EXT2 is not set diff --git a/docs/buildroot.html b/docs/buildroot.html index dfa69e0dd..abe822f79 100644 --- a/docs/buildroot.html +++ b/docs/buildroot.html @@ -661,16 +661,6 @@ endif <code>$(BOARD_PATH)/target_skeleton</code> so that the target skeleton is stored in the board specific directory.</li> - <li><code>TARGET_DEVICE_TABLE</code> to a file that contains - the target device table — the list of device files (in - <code>/dev/</code>) to be created by the root filesystem build - procedure. If this variable is defined, the given device table - will be used instead of the default one. If defined, the - convention is to define it to - <code>$(BOARD_PATH)/target_device_table.txt</code>. See - <code>target/generic/device_table.txt</code> for an example - file.</li> - </ul> </li> diff --git a/fs/Config.in b/fs/Config.in index f885c52e7..6865eeaff 100644 --- a/fs/Config.in +++ b/fs/Config.in @@ -15,6 +15,14 @@ config BR2_ROOTFS_POST_BUILD_SCRIPT only argument. Make sure the exit code of that script is 0, otherwise make will stop after calling it. +config BR2_ROOTFS_DEVICE_TABLE + string "Path to the device table" + default "target/generic/device_table.txt" + help + Specify the location of a device table, that will be passed + to the makedevs utility to create all the special device + files in the target filesystem. + source "fs/cramfs/Config.in" source "fs/cloop/Config.in" source "fs/ext2/Config.in" diff --git a/fs/common.mk b/fs/common.mk index fa6afd94d..a3248c165 100644 --- a/fs/common.mk +++ b/fs/common.mk @@ -28,18 +28,19 @@ # macro will automatically generate a compressed filesystem image. FAKEROOT_SCRIPT = $(BUILD_DIR)/_fakeroot.fs +ROOTFS_DEVICE_TABLE = $(call qstrip,$(BR2_ROOTFS_DEVICE_TABLE)) define ROOTFS_TARGET_INTERNAL -$(BINARIES_DIR)/rootfs.$(1): $(ROOTFS_$(2)_DEPENDENCIES) host-fakeroot makedevs $(if $(BR2_TARGET_ROOTFS_$(2)_LZMA),host-lzma) +$(BINARIES_DIR)/rootfs.$(1): $(ROOTFS_$(2)_DEPENDENCIES) host-fakeroot host-makedevs $(if $(BR2_TARGET_ROOTFS_$(2)_LZMA),host-lzma) @$(call MESSAGE,"Generating root filesystem image rootfs.$(1)") $(foreach hook,$(ROOTFS_$(2)_PRE_GEN_HOOKS),$(call $(hook))$(sep)) rm -f $(FAKEROOT_SCRIPT) touch $(BUILD_DIR)/.fakeroot.00000 cat $(BUILD_DIR)/.fakeroot* > $(FAKEROOT_SCRIPT) echo "chown -R 0:0 $(TARGET_DIR)" >> $(FAKEROOT_SCRIPT) -ifneq ($(TARGET_DEVICE_TABLE),) - echo "$(HOST_DIR)/usr/bin/makedevs -d $(TARGET_DEVICE_TABLE) $(TARGET_DIR)" >> $(FAKEROOT_SCRIPT) +ifneq ($(ROOTFS_DEVICE_TABLE),) + echo "$(HOST_DIR)/usr/bin/makedevs -d $(ROOTFS_DEVICE_TABLE) $(TARGET_DIR)" >> $(FAKEROOT_SCRIPT) endif echo "$(ROOTFS_$(2)_CMD)" >> $(FAKEROOT_SCRIPT) chmod a+x $(FAKEROOT_SCRIPT) diff --git a/fs/cramfs/cramfs.mk b/fs/cramfs/cramfs.mk index ccd316f5d..e0deb7e2a 100644 --- a/fs/cramfs/cramfs.mk +++ b/fs/cramfs/cramfs.mk @@ -9,8 +9,8 @@ else CRAMFS_OPTS=-l endif -ifneq ($(TARGET_DEVICE_TABLE),) -CRAMFS_OPTS += -D $(TARGET_DEVICE_TABLE) +ifneq ($(ROOTFS_DEVICE_TABLE),) +CRAMFS_OPTS += -D $(ROOTFS_DEVICE_TABLE) endif define ROOTFS_CRAMFS_CMD diff --git a/fs/ext2/ext2.mk b/fs/ext2/ext2.mk index 68b3b813c..18a6df424 100644 --- a/fs/ext2/ext2.mk +++ b/fs/ext2/ext2.mk @@ -18,23 +18,14 @@ ifneq ($(strip $(BR2_TARGET_ROOTFS_EXT2_INODES)),0) EXT2_OPTS += -N $(BR2_TARGET_ROOTFS_EXT2_INODES) endif -ifneq ($(strip $(BR2_TARGET_ROOTFS_EXT2_RESBLKS)),) +ifneq ($(strip $(BR2_TARGET_ROOTFS_EXT2_RESBLKS)),0) EXT2_OPTS += -m $(BR2_TARGET_ROOTFS_EXT2_RESBLKS) endif ROOTFS_EXT2_DEPENDENCIES = host-genext2fs -ifeq ($(strip $(BR2_TARGET_ROOTFS_EXT2_BLOCKS)),0) -GENEXT2_REALSIZE=$(shell LC_ALL=C du -s -c -k $(TARGET_DIR) | grep total | sed -e "s/total//") -GENEXT2_ADDTOROOTSIZE=$(shell if [ $(GENEXT2_REALSIZE) -ge 20000 ]; then echo 16384; else echo 2400; fi) -GENEXT2_SIZE=$(shell expr $(GENEXT2_REALSIZE) + $(GENEXT2_ADDTOROOTSIZE)) -GENEXT2_ADDTOINODESIZE=$(shell find $(TARGET_DIR) | wc -l) -GENEXT2_INODES=$(shell expr $(GENEXT2_ADDTOINODESIZE) + 400) -EXT2_OPTS += -b $(GENEXT2_SIZE) -N $(GENEXT2_INODES) -endif - define ROOTFS_EXT2_CMD - $(HOST_DIR)/usr/bin/genext2fs -d $(TARGET_DIR) $(EXT2_OPTS) $$@ + PATH=$(TARGET_PATH) fs/ext2/genext2fs.sh -d $(TARGET_DIR) $(EXT2_OPTS) $$@ endef -$(eval $(call ROOTFS_TARGET,ext2))
\ No newline at end of file +$(eval $(call ROOTFS_TARGET,ext2)) diff --git a/fs/ext2/genext2fs.sh b/fs/ext2/genext2fs.sh new file mode 100755 index 000000000..b315ec30a --- /dev/null +++ b/fs/ext2/genext2fs.sh @@ -0,0 +1,39 @@ +#!/bin/sh +# genext2fs wrapper calculating needed blocks/inodes values if not specified + +export LC_ALL=C + +CALC_BLOCKS=1 +CALC_INODES=1 + +while getopts x:d:D:b:i:N:m:g:e:zfqUPhVv f +do + case $f in + b) CALC_BLOCKS=0 ;; + N) CALC_INODES=0 ;; + d) TARGET_DIR=$OPTARG ;; + esac +done + +# calculate needed blocks +if [ $CALC_BLOCKS -eq 1 ]; +then + BLOCKS=$(du -s -c -k $TARGET_DIR | grep total | sed -e "s/total//") + if [ $BLOCKS -ge 20000 ]; + then + BLOCKS=$(expr $BLOCKS + 16384) + else + BLOCKS=$(expr $BLOCKS + 2400) + fi + set -- $@ -b $BLOCKS +fi + +# calculate needed inodes +if [ $CALC_INODES -eq 1 ]; +then + INODES=$(find $TARGET_DIR | wc -l) + INODES=$(expr $INODES + 400) + set -- $@ -N $INODES +fi + +exec genext2fs $@ diff --git a/fs/initramfs/initramfs.mk b/fs/initramfs/initramfs.mk index 4a205d1ce..3e8156761 100644 --- a/fs/initramfs/initramfs.mk +++ b/fs/initramfs/initramfs.mk @@ -6,11 +6,19 @@ # ############################################################# +ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y) +INITRAMFS_TARGET:=initramfs-root +else +INITRAMFS_TARGET:= #nothing +endif + define ROOTFS_INITRAMFS_INIT_SYMLINK rm -f $(TARGET_DIR)/init ln -s sbin/init $(TARGET_DIR)/init endef +ROOTFS_INITRAMFS_PRE_GEN_HOOKS += ROOTFS_INITRAMFS_INIT_SYMLINK + define ROOTFS_INITRAMFS_CMD $(SHELL) fs/initramfs/gen_initramfs_list.sh -u 0 -g 0 $(TARGET_DIR) > $$@ endef diff --git a/fs/jffs2/jffs2.mk b/fs/jffs2/jffs2.mk index a0a563d18..36be03741 100644 --- a/fs/jffs2/jffs2.mk +++ b/fs/jffs2/jffs2.mk @@ -32,8 +32,8 @@ JFFS2_OPTS += -n SUMTOOL_OPTS += -n endif -ifneq ($(TARGET_DEVICE_TABLE),) -JFFS2_OPTS += -D $(TARGET_DEVICE_TABLE) +ifneq ($(ROOTFS_DEVICE_TABLE),) +JFFS2_OPTS += -D $(ROOTFS_DEVICE_TABLE) endif ROOTFS_JFFS2_DEPENDENCIES = host-mtd diff --git a/package/Config.in b/package/Config.in index 610490342..a4ef36261 100644 --- a/package/Config.in +++ b/package/Config.in @@ -175,6 +175,7 @@ source "package/input-tools/Config.in" source "package/iostat/Config.in" source "package/lm-sensors/Config.in" source "package/lvm2/Config.in" +source "package/makedevs/Config.in" source "package/mdadm/Config.in" source "package/memtester/Config.in" source "package/mtd/Config.in" diff --git a/package/busybox/busybox-1.16.1-sed.patch b/package/busybox/busybox-1.16.1-sed.patch new file mode 100644 index 000000000..56d2304d2 --- /dev/null +++ b/package/busybox/busybox-1.16.1-sed.patch @@ -0,0 +1,47 @@ +diff -urpN busybox-1.16.1/editors/sed.c busybox-1.16.1-sed/editors/sed.c +--- busybox-1.16.1/editors/sed.c 2010-03-28 13:43:35.000000000 -0400 ++++ busybox-1.16.1-sed/editors/sed.c 2010-04-20 13:33:26.301975462 -0400 +@@ -936,7 +936,15 @@ static void process_files(void) + /* Skip blocks of commands we didn't match */ + if (sed_cmd->cmd == '{') { + if (sed_cmd->invert ? matched : !matched) { +- while (sed_cmd->cmd != '}') { ++ unsigned nest_cnt = 0; ++ while (1) { ++ if (sed_cmd->cmd == '{') ++ nest_cnt++; ++ if (sed_cmd->cmd == '}') { ++ nest_cnt--; ++ if (nest_cnt == 0) ++ break; ++ } + sed_cmd = sed_cmd->next; + if (!sed_cmd) + bb_error_msg_and_die("unterminated {"); +@@ -1031,7 +1039,7 @@ static void process_files(void) + case 'c': + /* Only triggers on last line of a matching range. */ + if (!sed_cmd->in_match) +- sed_puts(sed_cmd->string, NO_EOL_CHAR); ++ sed_puts(sed_cmd->string, '\n'); + goto discard_line; + + /* Read file, append contents to output */ +diff -urpN busybox-1.16.1/testsuite/sed.tests busybox-1.16.1-sed/testsuite/sed.tests +--- busybox-1.16.1/testsuite/sed.tests 2010-03-19 22:58:07.000000000 -0400 ++++ busybox-1.16.1-sed/testsuite/sed.tests 2010-04-20 13:33:26.301975462 -0400 +@@ -248,4 +248,14 @@ testing "sed beginning (^) matches only + ">/usr</>lib<\n" "" \ + "/usr/lib\n" + ++testing "sed c" \ ++ "sed 'crepl'" \ ++ "repl\nrepl\n" "" \ ++ "first\nsecond\n" ++ ++testing "sed nested {}s" \ ++ "sed '/asd/ { p; /s/ { s/s/c/ }; p; q }'" \ ++ "qwe\nasd\nacd\nacd\n" "" \ ++ "qwe\nasd\nzxc\n" ++ + exit $FAILCOUNT diff --git a/package/busybox/initramfs.mk b/package/busybox/initramfs.mk deleted file mode 100644 index 2f1e34cdc..000000000 --- a/package/busybox/initramfs.mk +++ /dev/null @@ -1,141 +0,0 @@ -############################################################# -# -# busybox image for initramfs -# -############################################################# -ifeq ($(BR2_PACKAGE_BUSYBOX_INITRAMFS),y) - -BUSYBOX_INITRAMFS_DIR:=$(BUSYBOX_DIR)-initramfs -BR2_INITRAMFS_DIR:=$(BUILD_DIR)/initramfs -BB_INITRAMFS_TARGET:=rootfs.initramfs_lst - -$(BUSYBOX_INITRAMFS_DIR)/.unpacked: $(DL_DIR)/$(BUSYBOX_SOURCE) - rm -rf $(BUILD_DIR)/tmp $(BUSYBOX_INITRAMFS_DIR) - mkdir -p $(BUILD_DIR)/tmp - $(BUSYBOX_UNZIP) $(DL_DIR)/$(BUSYBOX_SOURCE) | tar -C $(BUILD_DIR)/tmp $(TAR_OPTIONS) - -ifeq ($(BR2_PACKAGE_BUSYBOX_SNAPSHOT),y) - mv $(BUILD_DIR)/tmp/busybox $(BUSYBOX_INITRAMFS_DIR) -else - mv $(BUILD_DIR)/tmp/busybox-$(BUSYBOX_VERSION) $(BUSYBOX_INITRAMFS_DIR) -endif - touch $@ - -$(BUSYBOX_INITRAMFS_DIR)/.config $(BUSYBOX_INITRAMFS_DIR)/.configured: $(BUSYBOX_INITRAMFS_DIR)/.unpacked - $(MAKE) CC=$(TARGET_CC) CROSS_COMPILE="$(TARGET_CROSS)" \ - CROSS="$(TARGET_CROSS)" -C $(BUSYBOX_INITRAMFS_DIR) \ - allnoconfig - mv $(BUSYBOX_INITRAMFS_DIR)/.config $(BUSYBOX_INITRAMFS_DIR)/.config.no - (echo CONFIG_PREFIX=\"$(BR2_INITRAMFS_DIR)\"; \ - echo CONFIG_NITPICK=y; \ - echo CONFIG_FEATURE_BUFFERS_USE_MALLOC=y; \ - echo CONFIG_INCLUDE_SUSv2=n; \ - echo CONFIG_CAT=y; \ - echo CONFIG_CHROOT=y; \ - echo CONFIG_DD=y; \ - echo CONFIG_FEATURE_DD_IBS_OBS=y; \ - echo CONFIG_FALSE=y; \ - echo CONFIG_GUNZIP=y; \ - echo CONFIG_HALT=y; \ - echo CONFIG_INIT=y; \ - echo CONFIG_INSMOD=y; \ - echo CONFIG_KILL=y; \ - echo CONFIG_LN=y; \ - echo CONFIG_MDEV=y; \ - echo CONFIG_MKDIR=y; \ - echo CONFIG_MKFIFO=y; \ - echo CONFIG_MKNOD=y; \ - echo CONFIG_MODPROBE=y; \ - echo CONFIG_FEATURE_MODPROBE_MULTIPLE_OPTIONS=y; \ - echo CONFIG_FEATURE_MODPROBE_FANCY_ALIAS=y; \ - echo CONFIG_FEATURE_CHECK_TAINTED_MODULE=n; \ - echo CONFIG_FEATURE_2_4_MODULES=n; \ - echo CONFIG_MOUNT=y; \ - echo CONFIG_MSH=y; \ - echo CONFIG_FEATURE_SH_IS_MSH=y; \ - echo CONFIG_PS=y; \ - echo CONFIG_READLINK=y; \ - echo CONFIG_RMMOD=y; \ - echo CONFIG_STATIC=y; \ - echo CONFIG_SWITCH_ROOT=y; \ - echo CONFIG_SYNC=y; \ - echo CONFIG_TFTP=y; \ - echo CONFIG_FEATURE_TFTP_GET=y; \ - echo CONFIG_FEATURE_TFTP_PUT=y; \ - echo CONFIG_TRUE=y; \ - echo CONFIG_UMOUNT=y; \ - echo CONFIG_FEATURE_UMOUNT_ALL=y; \ - echo CONFIG_UNAME=y; \ - ) > $(BUSYBOX_INITRAMFS_DIR)/.config - cp -f $(BUSYBOX_INITRAMFS_DIR)/.config \ - $(BUSYBOX_INITRAMFS_DIR)/.config.prune - $(SED) 's|\([^=]*\)=.*|/\1[^_]*/d|g' \ - $(BUSYBOX_INITRAMFS_DIR)/.config.prune - $(SED) '' -f $(BUSYBOX_INITRAMFS_DIR)/.config.prune \ - $(BUSYBOX_INITRAMFS_DIR)/.config.no - cat $(BUSYBOX_INITRAMFS_DIR)/.config.no >> \ - $(BUSYBOX_INITRAMFS_DIR)/.config - yes "" | $(MAKE) CC=$(TARGET_CC) CROSS_COMPILE="$(TARGET_CROSS)" \ - CROSS="$(TARGET_CROSS)" -C $(BUSYBOX_INITRAMFS_DIR) \ - oldconfig - touch $@ - - -$(BUSYBOX_INITRAMFS_DIR)/busybox: $(BUSYBOX_INITRAMFS_DIR)/.configured - $(MAKE) CC=$(TARGET_CC) CROSS_COMPILE="$(TARGET_CROSS)" \ - CROSS="$(TARGET_CROSS)" PREFIX="$(TARGET_DIR)" \ - ARCH=$(KERNEL_ARCH) \ - EXTRA_CFLAGS="$(TARGET_CFLAGS)" -C $(BUSYBOX_INITRAMFS_DIR) \ - busybox.links busybox - -$(BR2_INITRAMFS_DIR)/bin/busybox: $(BUSYBOX_INITRAMFS_DIR)/busybox - $(MAKE) CC=$(TARGET_CC) CROSS_COMPILE="$(TARGET_CROSS)" \ - CROSS="$(TARGET_CROSS)" \ - ARCH=$(KERNEL_ARCH) STRIP="$(STRIPCMD)" \ - EXTRA_CFLAGS="$(TARGET_CFLAGS)" -C $(BUSYBOX_INITRAMFS_DIR) \ - install - $(STRIPCMD) $(STRIP_STRIP_ALL) $@ - - -$(BB_INITRAMFS_TARGET): host-fakeroot $(BR2_INITRAMFS_DIR)/bin/busybox - ln -fs bin/busybox $(BUILD_DIR)/initramfs/init - mkdir -p $(BUILD_DIR)/initramfs/etc - cat target/generic/target_busybox_skeleton/etc/inittab > \ - $(BUILD_DIR)/initramfs/etc/inittab - rm -f $(BUILD_DIR)/_fakeroot.$(notdir $(BB_INITRAMFS_TARGET)) - (echo "chown -R 0:0 $(BUILD_DIR)/initramfs"; \ - echo "$(HOST_DIR)/usr/bin/makedevs -d $(TARGET_DEVICE_TABLE) $(BUILD_DIR)/initramfs"; \ - echo "$(SHELL) target/initramfs/gen_initramfs_list.sh -u 0 -g 0 $(BUILD_DIR)/initramfs > $(BB_INITRAMFS_TARGET)"; \ - ) > $(BUILD_DIR)/_fakeroot.$(notdir $(BB_INITRAMFS_TARGET)) - chmod +x $(BUILD_DIR)/_fakeroot.$(notdir $(BB_INITRAMFS_TARGET)) - $(HOST_DIR)/usr/bin/fakeroot -- \ - $(BUILD_DIR)/_fakeroot.$(notdir $(BB_INITRAMFS_TARGET)) - rm -f $(BUILD_DIR)/_fakeroot.$(notdir $(BB_INITRAMFS_TARGET)) - touch -c $@ - -$(BUILD_DIR)/.initramfs_done: $(BR2_INITRAMFS_DIR)/bin/busybox \ - $(BB_INITRAMFS_TARGET) - touch $@ - -busybox-initramfs-source: -busybox-initramfs: $(BUILD_DIR)/.initramfs_done - -busybox-initramfs-menuconfig: host-sed $(BUILD_DIR) busybox-source $(BUSYBOX_INITRAMFS_DIR)/.configured - $(MAKE) __TARGET_ARCH=$(ARCH) -C $(BUSYBOX_INITRAMFS_DIR) menuconfig - -busybox-initramfs-clean: - rm -f $(BUSYBOX_INITRAMFS_DIR)/busybox $(BUILD_DIR)/.initramfs_* - rm -rf $(BR2_INITRAMFS_DIR) $(BB_INITRAMFS_TARGET) - -$(MAKE) -C $(BUSYBOX_INITRAMFS_DIR) clean - -busybox-initramfs-dirclean: - rm -rf $(BUSYBOX_INITRAMFS_DIR) $(BR2_INITRAMFS_DIR) \ - $(BUILD_DIR)/.initramfs_* -endif -############################################################# -# -# Toplevel Makefile options -# -############################################################# -ifeq ($(BR2_PACKAGE_BUSYBOX_INITRAMFS),y) -TARGETS+=busybox-initramfs -endif diff --git a/package/cramfs/cramfs.mk b/package/cramfs/cramfs.mk index 7b1924e81..9073ae542 100644 --- a/package/cramfs/cramfs.mk +++ b/package/cramfs/cramfs.mk @@ -16,8 +16,8 @@ define CRAMFS_BUILD_CMDS endef define CRAMFS_INSTALL_TARGET_CMDS - install -m 755 $(@D)/mkcramfs $(TARGET_DIR)/usr/bin - install -m 755 $(@D)/cramfsck $(TARGET_DIR)/usr/bin + install -D -m 755 $(@D)/mkcramfs $(TARGET_DIR)/usr/bin/mkcramfs + install -D -m 755 $(@D)/cramfsck $(TARGET_DIR)/usr/bin/cramfsck endef define HOST_CRAMFS_BUILD_CMDS @@ -25,8 +25,8 @@ define HOST_CRAMFS_BUILD_CMDS endef define HOST_CRAMFS_INSTALL_CMDS - install -m 755 $(@D)/mkcramfs $(HOST_DIR)/usr/bin - install -m 755 $(@D)/cramfsck $(HOST_DIR)/usr/bin + install -D -m 755 $(@D)/mkcramfs $(HOST_DIR)/usr/bin/mkcramfs + install -D -m 755 $(@D)/cramfsck $(HOST_DIR)/usr/bin/cramfsck endef $(eval $(call GENTARGETS,package,cramfs)) diff --git a/package/makedevs/Config.in b/package/makedevs/Config.in new file mode 100644 index 000000000..4f8c38d0a --- /dev/null +++ b/package/makedevs/Config.in @@ -0,0 +1,5 @@ +config BR2_PACKAGE_MAKEDEVS + bool "makedevs" + help + The makedevs utility allows to create a set of device files + according to a configuration file.
\ No newline at end of file diff --git a/target/makedevs/makedevs.c b/package/makedevs/makedevs.c index 5ca45e9ae..5ca45e9ae 100644 --- a/target/makedevs/makedevs.c +++ b/package/makedevs/makedevs.c diff --git a/package/makedevs/makedevs.mk b/package/makedevs/makedevs.mk new file mode 100644 index 000000000..a3bb5cb54 --- /dev/null +++ b/package/makedevs/makedevs.mk @@ -0,0 +1,35 @@ +############################################################# +# +# makedevs +# +############################################################# + +MAKEDEVS_DIR=$(BUILD_DIR)/makedevs + +$(MAKEDEVS_DIR)/makedevs.c: + rm -rf $(MAKEDEVS_DIR) + mkdir $(MAKEDEVS_DIR) + cp package/makedevs/makedevs.c $(MAKEDEVS_DIR) + +$(MAKEDEVS_DIR)/makedevs: $(MAKEDEVS_DIR)/makedevs.c + $(CC) -Wall -Werror -O2 $(MAKEDEVS_DIR)/makedevs.c -o $@ + +$(TARGET_DIR)/usr/bin/makedevs: $(MAKEDEVS_DIR)/makedevs + $(INSTALL) -m 755 $^ $@ + +makedevs: $(TARGET_DIR)/usr/bin/makedevs + +HOST_MAKEDEVS_DIR=$(BUILD_DIR)/host-makedevs + +$(HOST_MAKEDEVS_DIR)/makedevs.c: + rm -rf $(HOST_MAKEDEVS_DIR) + mkdir $(HOST_MAKEDEVS_DIR) + cp package/makedevs/makedevs.c $(HOST_MAKEDEVS_DIR) + +$(HOST_MAKEDEVS_DIR)/makedevs: $(HOST_MAKEDEVS_DIR)/makedevs.c + $(CC) -Wall -Werror -O2 $(HOST_MAKEDEVS_DIR)/makedevs.c -o $@ + +$(HOST_DIR)/usr/bin/makedevs: $(HOST_MAKEDEVS_DIR)/makedevs + $(INSTALL) -m 755 $^ $@ + +host-makedevs: $(HOST_DIR)/usr/bin/makedevs
\ No newline at end of file diff --git a/package/mtd/Config.in b/package/mtd/Config.in index 8e846a371..0ba71d333 100644 --- a/package/mtd/Config.in +++ b/package/mtd/Config.in @@ -93,6 +93,10 @@ config BR2_PACKAGE_MTD_SERVE_IMAGE config BR2_PACKAGE_MTD_SUMTOOL bool "sumtool" +config BR2_PACKAGE_MTD_MTDINFO + bool "mtdinfo" + default y + config BR2_PACKAGE_MTD_UBIATTACH bool "ubiattach" default y diff --git a/package/portage/Config.in b/package/portage/Config.in index 27661cd92..83778ff3c 100644 --- a/package/portage/Config.in +++ b/package/portage/Config.in @@ -1,7 +1,11 @@ config BR2_PACKAGE_PORTAGE bool "portage" select BR2_PACKAGE_PYTHON + depends on BR2_USE_WCHAR help Portage, the Gentoo package management tool. http://www.gentoo.org/ + +comment "portage requires a toolchain with WCHAR support" + depends on !BR2_USE_WCHAR diff --git a/package/python/Config.in b/package/python/Config.in index 6931eb70f..e77d7aa40 100644 --- a/package/python/Config.in +++ b/package/python/Config.in @@ -1,10 +1,14 @@ config BR2_PACKAGE_PYTHON bool "python" + depends on BR2_USE_WCHAR help The python language interpreter. http://www.python.org/ +comment "python requires a toolchain with WCHAR support" + depends on !BR2_USE_WCHAR + config BR2_PACKAGE_PYTHON_DEV depends on BR2_PACKAGE_PYTHON bool "development files on target" diff --git a/target/Makefile.in b/target/Makefile.in index 48396d5d8..afe96a7f0 100644 --- a/target/Makefile.in +++ b/target/Makefile.in @@ -62,8 +62,6 @@ ifeq ($(BR2_TARGET_UBOOT),y) include target/u-boot/Makefile.in endif -include target/*/*.mk - # kernel rules # We already did add the kernel target to TARGETS and now just pull in the rules # to actually build this target. diff --git a/target/device/Atmel/Makefile.in b/target/device/Atmel/Makefile.in index bf7a2d108..c5dfffd70 100644 --- a/target/device/Atmel/Makefile.in +++ b/target/device/Atmel/Makefile.in @@ -8,7 +8,6 @@ BOARD_PATH:=$(call qstrip,$(BR2_BOARD_PATH)) ATMEL_TARGET:=$(ATMEL_PATH)/root TARGET_SKELETON:=$(ATMEL_TARGET)/target_skeleton -TARGET_DEVICE_TABLE:=$(ATMEL_TARGET)/device_table.txt TARGET_SKELETON_LINKS:=$(ATMEL_TARGET)/skel.tar.gz ifeq ($(BR2_avr32),y) diff --git a/target/device/Atmel/arch-arm/Config.in.linux.patches b/target/device/Atmel/arch-arm/Config.in.linux.patches index 0ea509196..8cd9a856a 100644 --- a/target/device/Atmel/arch-arm/Config.in.linux.patches +++ b/target/device/Atmel/arch-arm/Config.in.linux.patches @@ -2,11 +2,17 @@ choice prompt "Add AT91 specific patches" depends on BR2_KERNEL_ARCH_PATCH_ENABLED depends on BR2_TARGET_ATMEL && BR2_arm + default BR2_ARCH_AT91_2_6_30 if BR2_LINUX_2_6_30 default BR2_ARCH_AT91_2_6_28 if BR2_LINUX_2_6_28 default BR2_ARCH_AT91_2_6_27 if BR2_LINUX_2_6_27 help Select a patch to add to the Linux kernel +config BR2_ARCH_AT91_2_6_30 + bool "2.6.30" + help + Apply the at91 linux-2.6.30 patches + config BR2_ARCH_AT91_2_6_28 bool "2.6.28" help @@ -22,6 +28,7 @@ config BR2_KERNEL_ARCH_PATCH_VERSION string depends on BR2_KERNEL_ARCH_PATCH_ENABLED depends on BR2_TARGET_ATMEL && BR2_arm + default "2.6.30" if BR2_ARCH_AT91_2_6_30 default "2.6.28" if BR2_ARCH_AT91_2_6_28 default "2.6.27" if BR2_ARCH_AT91_2_6_27 diff --git a/target/device/Atmel/atngw100-base/Makefile.in b/target/device/Atmel/atngw100-base/Makefile.in index 467951f08..c2f296970 100644 --- a/target/device/Atmel/atngw100-base/Makefile.in +++ b/target/device/Atmel/atngw100-base/Makefile.in @@ -1,5 +1,4 @@ ifeq ($(BR2_TARGET_AVR32_ATNGW100_BASE),y) UBOOT_BOARD_NAME:=atngw100 TARGET_SKELETON=$(BOARD_PATH)/target_skeleton -TARGET_DEVICE_TABLE=$(BOARD_PATH)/device_table.txt endif diff --git a/target/device/Atmel/atngw100/Makefile.in b/target/device/Atmel/atngw100/Makefile.in index 3c34d8d4a..7e02d8e83 100644 --- a/target/device/Atmel/atngw100/Makefile.in +++ b/target/device/Atmel/atngw100/Makefile.in @@ -1,5 +1,4 @@ ifeq ($(BR2_TARGET_AVR32_ATNGW100),y) UBOOT_BOARD_NAME:=atngw100 TARGET_SKELETON=$(BOARD_PATH)/target_skeleton -TARGET_DEVICE_TABLE=$(BOARD_PATH)/device_table.txt endif diff --git a/target/device/Atmel/atstk1005/Makefile.in b/target/device/Atmel/atstk1005/Makefile.in index 4c3aadffb..84b31070d 100644 --- a/target/device/Atmel/atstk1005/Makefile.in +++ b/target/device/Atmel/atstk1005/Makefile.in @@ -1,4 +1,3 @@ ifeq ($(strip $(BR2_TARGET_AVR32_ATSTK1005)),y) TARGET_SKELETON=$(BOARD_PATH)/target_skeleton -TARGET_DEVICE_TABLE=$(BOARD_PATH)/device_table.txt endif diff --git a/target/device/Atmel/atstk100x/Makefile.in b/target/device/Atmel/atstk100x/Makefile.in index e9dd4dc42..395c74a6e 100644 --- a/target/device/Atmel/atstk100x/Makefile.in +++ b/target/device/Atmel/atstk100x/Makefile.in @@ -1,5 +1,4 @@ ifeq ($(strip $(BR2_TARGET_AVR32_ATSTK1002)),y) UBOOT_BOARD_NAME:=atstk1002 TARGET_SKELETON=$(BOARD_PATH)/target_skeleton -TARGET_DEVICE_TABLE=$(BOARD_PATH)/device_table.txt endif diff --git a/target/device/KwikByte/kb9202/Makefile.in b/target/device/KwikByte/kb9202/Makefile.in index 5d743cec5..0048dcc3a 100644 --- a/target/device/KwikByte/kb9202/Makefile.in +++ b/target/device/KwikByte/kb9202/Makefile.in @@ -1,4 +1,3 @@ BOARD_PATH=target/device/KwikByte/kb9202 TARGET_SKELETON=$(BOARD_PATH)/target_skeleton -TARGET_DEVICE_TABLE=$(BOARD_PATH)/device_table.txt diff --git a/target/device/valka/Makefile.in b/target/device/valka/Makefile.in index 01422465e..fec4d88d5 100644 --- a/target/device/valka/Makefile.in +++ b/target/device/valka/Makefile.in @@ -2,7 +2,6 @@ ifeq ($(BR2_TARGET_VALKA),y) VALKA_PATH= target/device/valka TARGET_SKELETON=$(VALKA_PATH)/target_skeleton -TARGET_DEVICE_TABLE=$(VALKA_PATH)/device_table.txt KERNEL_HEADERS_PATCH_DIR=target/device/Atmel/arch-avr32/kernel-headers-2.6.28.2 valka_status: @@ -10,7 +9,6 @@ valka_status: @echo VALKA_PATH = $(VALKA_PATH) @echo BOARD_NAME = $(BR_BOARD_NAME) @echo TARGET_SKELETON = $(TARGET_SKELETON) - @echo TARGET_DEVICE_TABLE = $(TARGET_DEVICE_TABLE) @echo BR2_PACKAGE_BUSYBOX_CONFIG = $(BR2_PACKAGE_BUSYBOX_CONFIG) @echo BR2_PACKAGE_LINUX_KCONFIG = $(BR2_PACKAGE_LINUX_KCONFIG) @echo "*****************************************************************" diff --git a/target/device/xtensa/Makefile.in b/target/device/xtensa/Makefile.in index 7c95c239b..f878a822a 100644 --- a/target/device/xtensa/Makefile.in +++ b/target/device/xtensa/Makefile.in @@ -6,12 +6,4 @@ ifeq ($(strip $(BR2_TARGET_XTENSA_XTAV60)),y) TARGET_SKELETON_PATCH:=target/device/xtensa endif -# Custom device table patch used when targeting ISS: -OLD_TARGET_DEVICE_TABLE := $(TARGET_DEVICE_TABLE) -TARGET_DEVICE_TABLE := target/device/xtensa/device_table.txt -makedevs: - @echo "Applying patch to $(TARGET_DEVICE_TABLE)" - cp -f $(OLD_TARGET_DEVICE_TABLE) $(TARGET_DEVICE_TABLE) - patch -p1 -g 0 < target/device/xtensa/device_table.diff - endif diff --git a/target/device/xtensa/device_table.diff b/target/device/xtensa/device_table.diff deleted file mode 100644 index 12f682546..000000000 --- a/target/device/xtensa/device_table.diff +++ /dev/null @@ -1,10 +0,0 @@ -diff --git a/target/generic/device_table.txt b/target/generic/device_table.txt -index f4b16ba..b87bf69 100644 ---- a/target/device/xtensa/device_table.txt -+++ b/target/device/xtensa/device_table.txt -@@ -169,3 +169,5 @@ - #/dev/mcd b 640 0 0 23 0 0 0 - #/dev/optcd b 640 0 0 17 0 0 0 - -+/dev/simdisk0 b 640 0 0 240 0 0 0 -+/dev/simdisk1 b 640 0 0 240 1 0 0 diff --git a/target/device/xtensa/device_table.txt b/target/device/xtensa/device_table.txt new file mode 100644 index 000000000..d0c746797 --- /dev/null +++ b/target/device/xtensa/device_table.txt @@ -0,0 +1,189 @@ +# When building a target filesystem, it is desirable to not have to +# become root and then run 'mknod' a thousand times. Using a device +# table you can create device nodes and directories "on the fly". +# +# This is a sample device table file for use with genext2fs. You can +# do all sorts of interesting things with a device table file. For +# example, if you want to adjust the permissions on a particular file +# you can just add an entry like: +# /sbin/foobar f 2755 0 0 - - - - - +# and (assuming the file /sbin/foobar exists) it will be made setuid +# root (regardless of what its permissions are on the host filesystem. +# Furthermore, you can use a single table entry to create a many device +# minors. For example, if I wanted to create /dev/hda and /dev/hda[0-15] +# I could just use the following two table entries: +# /dev/hda b 640 0 0 3 0 0 0 - +# /dev/hda b 640 0 0 3 1 1 1 15 +# +# Device table entries take the form of: +# <name> <type> <mode> <uid> <gid> <major> <minor> <start> <inc> <count> +# where name is the file name, type can be one of: +# f A regular file +# d Directory +# c Character special device file +# b Block special device file +# p Fifo (named pipe) +# uid is the user id for the target file, gid is the group id for the +# target file. The rest of the entries (major, minor, etc) apply only +# to device special files. + +# Have fun +# -Erik Andersen <andersen@codepoet.org> +# + +#<name> <type> <mode> <uid> <gid> <major> <minor> <start> <inc> <count> +/dev d 755 0 0 - - - - - +/dev/pts d 755 0 0 - - - - - +/dev/shm d 755 0 0 - - - - - +/tmp d 1777 0 0 - - - - - +/etc d 755 0 0 - - - - - +/home/default d 2755 1000 1000 - - - - - +#<name> <type> <mode> <uid> <gid> <major> <minor> <start> <inc> <count> +/bin/busybox f 4755 0 0 - - - - - +/etc/shadow f 600 0 0 - - - - - +/etc/passwd f 644 0 0 - - - - - +/etc/network/if-up.d d 755 0 0 - - - - - +/etc/network/if-pre-up.d d 755 0 0 - - - - - +/etc/network/if-down.d d 755 0 0 - - - - - +/etc/network/if-post-down.d d 755 0 0 - - - - - +/usr/share/udhcpc/default.script f 755 0 0 - - - - - +# uncomment this to allow starting x as non-root +#/usr/X11R6/bin/Xfbdev f 4755 0 0 - - - - - +# Normal system devices +/dev/mem c 640 0 0 1 1 0 0 - +/dev/kmem c 640 0 0 1 2 0 0 - +/dev/null c 666 0 0 1 3 0 0 - +/dev/zero c 666 0 0 1 5 0 0 - +/dev/random c 666 0 0 1 8 0 0 - +/dev/urandom c 666 0 0 1 9 0 0 - +/dev/ram b 640 0 0 1 1 0 0 - +/dev/ram b 640 0 0 1 0 0 1 4 +/dev/loop b 640 0 0 7 0 0 1 2 +/dev/rtc c 640 0 0 10 135 - - - +/dev/console c 666 0 0 5 1 - - - +/dev/tty c 666 0 0 5 0 - - - +/dev/tty c 666 0 0 4 0 0 1 8 +/dev/ttyp c 666 0 0 3 0 0 1 10 +/dev/ptyp c 666 0 0 2 0 0 1 10 +/dev/ptmx c 666 0 0 5 2 - - - +/dev/ttyP c 666 0 0 57 0 0 1 4 +/dev/ttyS c 666 0 0 4 64 0 1 4 +/dev/fb c 640 0 5 29 0 0 1 4 +#/dev/ttySA c 666 0 0 204 5 0 1 3 +/dev/psaux c 666 0 0 10 1 0 0 - +#/dev/ppp c 666 0 0 108 0 - - - +/dev/ttyCPM c 666 0 0 204 46 0 1 4 +/dev/ttyAMA c 666 0 0 204 64 0 1 4 +/dev/ttySAC c 666 0 0 204 64 0 1 4 +/dev/ttyPSC c 666 0 0 204 148 0 1 4 +/dev/ttyUL c 666 0 0 204 187 0 1 4 +/dev/ttymxc c 666 0 0 207 16 0 1 3 + +# Input stuff +/dev/input d 755 0 0 - - - - - +/dev/input/mice c 640 0 0 13 63 0 0 - +/dev/input/mouse c 660 0 0 13 32 0 1 4 +/dev/input/event c 660 0 0 13 64 0 1 4 +#/dev/input/js c 660 0 0 13 0 0 1 4 + + +# MTD stuff +/dev/mtd c 640 0 0 90 0 0 2 4 +/dev/mtdblock b 640 0 0 31 0 0 1 4 + +#Tun/tap driver +/dev/net d 755 0 0 - - - - - +/dev/net/tun c 660 0 0 10 200 - - - + +# Audio stuff +#/dev/audio c 666 0 29 14 4 - - - +#/dev/audio1 c 666 0 29 14 20 - - - +#/dev/dsp c 666 0 29 14 3 - - - +#/dev/dsp1 c 666 0 29 14 19 - - - +#/dev/sndstat c 666 0 29 14 6 - - - + +# User-mode Linux stuff +#/dev/ubda b 640 0 0 98 0 0 0 - +#/dev/ubda b 640 0 0 98 1 1 1 15 + +# IDE Devices +/dev/hda b 640 0 0 3 0 0 0 - +/dev/hda b 640 0 0 3 1 1 1 15 +/dev/hdb b 640 0 0 3 64 0 0 - +/dev/hdb b 640 0 0 3 65 1 1 15 +#/dev/hdc b 640 0 0 22 0 0 0 - +#/dev/hdc b 640 0 0 22 1 1 1 15 +#/dev/hdd b 640 0 0 22 64 0 0 - +#/dev/hdd b 640 0 0 22 65 1 1 15 +#/dev/hde b 640 0 0 33 0 0 0 - +#/dev/hde b 640 0 0 33 1 1 1 15 +#/dev/hdf b 640 0 0 33 64 0 0 - +#/dev/hdf b 640 0 0 33 65 1 1 15 +#/dev/hdg b 640 0 0 34 0 0 0 - +#/dev/hdg b 640 0 0 34 1 1 1 15 +#/dev/hdh b 640 0 0 34 64 0 0 - +#/dev/hdh b 640 0 0 34 65 1 1 15 + +# SCSI Devices +/dev/sda b 640 0 0 8 0 0 0 - +/dev/sda b 640 0 0 8 1 1 1 15 +/dev/sdb b 640 0 0 8 16 0 0 - +/dev/sdb b 640 0 0 8 17 1 1 15 +#/dev/sdc b 640 0 0 8 32 0 0 - +#/dev/sdc b 640 0 0 8 33 1 1 15 +#/dev/sdd b 640 0 0 8 48 0 0 - +#/dev/sdd b 640 0 0 8 49 1 1 15 +#/dev/sde b 640 0 0 8 64 0 0 - +#/dev/sde b 640 0 0 8 65 1 1 15 +#/dev/sdf b 640 0 0 8 80 0 0 - +#/dev/sdf b 640 0 0 8 81 1 1 15 +#/dev/sdg b 640 0 0 8 96 0 0 - +#/dev/sdg b 640 0 0 8 97 1 1 15 +#/dev/sdh b 640 0 0 8 112 0 0 - +#/dev/sdh b 640 0 0 8 113 1 1 15 +#/dev/sg c 640 0 0 21 0 0 1 15 +#/dev/scd b 640 0 0 11 0 0 1 15 +#/dev/st c 640 0 0 9 0 0 1 8 +#/dev/nst c 640 0 0 9 128 0 1 8 +#/dev/st c 640 0 0 9 32 1 1 4 +#/dev/st c 640 0 0 9 64 1 1 4 +#/dev/st c 640 0 0 9 96 1 1 4 + +# USB block devices (ub driver) +/dev/uba b 640 0 0 180 0 0 0 - +/dev/uba b 640 0 0 180 1 1 1 6 +/dev/ubb b 640 0 0 180 8 0 0 - +/dev/ubb b 640 0 0 180 65 1 1 6 + +# Floppy disk devices +#/dev/fd b 640 0 0 2 0 0 1 2 +#/dev/fd0d360 b 640 0 0 2 4 0 0 - +#/dev/fd1d360 b 640 0 0 2 5 0 0 - +#/dev/fd0h1200 b 640 0 0 2 8 0 0 - +#/dev/fd1h1200 b 640 0 0 2 9 0 0 - +#/dev/fd0u1440 b 640 0 0 2 28 0 0 - +#/dev/fd1u1440 b 640 0 0 2 29 0 0 - +#/dev/fd0u2880 b 640 0 0 2 32 0 0 - +#/dev/fd1u2880 b 640 0 0 2 33 0 0 - + +# All the proprietary cdrom devices in the world +#/dev/aztcd b 640 0 0 29 0 0 0 - +#/dev/bpcd b 640 0 0 41 0 0 0 - +#/dev/capi20 c 640 0 0 68 0 0 1 2 +#/dev/cdu31a b 640 0 0 15 0 0 0 - +#/dev/cdu535 b 640 0 0 24 0 0 0 - +#/dev/cm206cd b 640 0 0 32 0 0 0 - +#/dev/sjcd b 640 0 0 18 0 0 0 - +#/dev/sonycd b 640 0 0 15 0 0 0 - +#/dev/gscd b 640 0 0 16 0 0 0 - +#/dev/sbpcd b 640 0 0 25 0 0 0 - +#/dev/sbpcd b 640 0 0 25 0 0 1 4 +#/dev/mcd b 640 0 0 23 0 0 0 - +#/dev/optcd b 640 0 0 17 0 0 0 - + +# I2C device nodes +/dev/i2c- c 666 0 0 89 0 0 1 4 + +# Xtensa special devices +/dev/simdisk0 b 640 0 0 240 0 0 0 +/dev/simdisk1 b 640 0 0 240 1 0 0 diff --git a/target/generic/Makefile.in b/target/generic/Makefile.in index f77f9698c..9a56f7604 100644 --- a/target/generic/Makefile.in +++ b/target/generic/Makefile.in @@ -1,10 +1,8 @@ # Default target skeleton stuff, may be overridden TARGET_SKELETON=target/generic/target_skeleton -TARGET_DEVICE_TABLE=target/generic/device_table.txt ifeq ($(BR2_PACKAGE_BUSYBOX_SKELETON),y) TARGET_SKELETON=target/generic/target_busybox_skeleton -TARGET_DEVICE_TABLE=target/generic/mini_device_table.txt endif TARGET_GENERIC_HOSTNAME:=$(call qstrip,$(BR2_TARGET_GENERIC_HOSTNAME)) diff --git a/target/linux/Makefile.in b/target/linux/Makefile.in index f3c7807c7..41e482131 100644 --- a/target/linux/Makefile.in +++ b/target/linux/Makefile.in @@ -153,7 +153,7 @@ endif $(SED) '/CONFIG_INITRAMFS_SOURCE/d' $(LINUX26_DIR)/.config $(SED) '/INITRAMFS_ROOT_.ID/d' $(LINUX26_DIR)/.config ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y) - echo "CONFIG_INITRAMFS_SOURCE=\"$(INITRAMFS_TARGET)\"" >> \ + echo "CONFIG_INITRAMFS_SOURCE=\"$(BINARIES_DIR)/rootfs.initramfs\"" >> \ $(LINUX26_DIR)/.config echo "CONFIG_INITRAMFS_ROOT_UID=0" >> $(LINUX26_DIR)/.config echo "CONFIG_INITRAMFS_ROOT_GID=0" >> $(LINUX26_DIR)/.config diff --git a/target/linux/Makefile.in.advanced b/target/linux/Makefile.in.advanced index f87d14d1b..745224d3f 100644 --- a/target/linux/Makefile.in.advanced +++ b/target/linux/Makefile.in.advanced @@ -344,7 +344,7 @@ endif $(SED) '/CONFIG_INITRAMFS_SOURCE/d' $(LINUX26_DIR)/.config $(SED) '/INITRAMFS_ROOT_.ID/d' $(LINUX26_DIR)/.config ifeq ($(BR2_TARGET_ROOTFS_INITRAMFS),y) - echo "CONFIG_INITRAMFS_SOURCE=\"$(INITRAMFS_TARGET)\"" >> \ + echo "CONFIG_INITRAMFS_SOURCE=\"$(BINARIES_DIR)/rootfs.initramfs\"" >> \ $(LINUX26_DIR)/.config echo "CONFIG_INITRAMFS_ROOT_UID=0" >> $(LINUX26_DIR)/.config echo "CONFIG_INITRAMFS_ROOT_GID=0" >> $(LINUX26_DIR)/.config diff --git a/target/makedevs/makedevs.mk b/target/makedevs/makedevs.mk deleted file mode 100644 index fe426cafe..000000000 --- a/target/makedevs/makedevs.mk +++ /dev/null @@ -1,30 +0,0 @@ -############################################################# -# -# build makedevs to run on the build system, in order to create -# device nodes and whatnot for the target device, in conjunction -# with fakeroot. -# -############################################################# -MAKEDEVS_DIR=$(BUILD_DIR)/makedevs-host - -$(MAKEDEVS_DIR)/makedevs.c: target/makedevs/makedevs.c - rm -rf $(MAKEDEVS_DIR) - mkdir $(MAKEDEVS_DIR) - cp target/makedevs/makedevs.c $(MAKEDEVS_DIR) - -$(MAKEDEVS_DIR)/makedevs: $(MAKEDEVS_DIR)/makedevs.c - $(HOSTCC) -Wall -Werror -O2 $(MAKEDEVS_DIR)/makedevs.c -o $@ - -$(HOST_DIR)/usr/bin/makedevs: $(MAKEDEVS_DIR)/makedevs - $(INSTALL) -m 755 $^ $@ - -makedevs: $(HOST_DIR)/usr/bin/makedevs - -makedevs-source: - -makedevs-clean: - rm -rf $(MAKEDEVS_DIR)/makedevs - -makedevs-dirclean: - rm -rf $(MAKEDEVS_DIR) - diff --git a/target/xtensa/defconfig b/target/xtensa/defconfig index f03f7a6d9..49b7eb3fd 100644 --- a/target/xtensa/defconfig +++ b/target/xtensa/defconfig @@ -104,6 +104,7 @@ BR2_PACKAGE_PORTMAP=y # # filesystem for target device # +BR2_ROOTFS_DEVICE_TABLE="target/device/xtensa/device_table.txt" BR2_TARGET_ROOTFS_CPIO=y BR2_TARGET_ROOTFS_CPIO_GZIP=y BR2_TARGET_ROOTFS_INITRAMFS=y diff --git a/toolchain/binutils/2.20.1/400-arm_link_speed.patch b/toolchain/binutils/2.20.1/400-arm_link_speed.patch new file mode 100644 index 000000000..d03385a13 --- /dev/null +++ b/toolchain/binutils/2.20.1/400-arm_link_speed.patch @@ -0,0 +1,183 @@ +From Binutils CVS: + +http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf32-arm.c?rev=1.230&content-type=text/x-cvsweb-markup&cvsroot=src + +Improves linking time from large projects on ARM. +diff -dupr binutils-2.20.orig/bfd/elf32-arm.c binutils-2.20/bfd/elf32-arm.c +--- binutils-2.20.orig/bfd/elf32-arm.c 2010-04-19 10:08:50.000000000 -0700 ++++ binutils-2.20/bfd/elf32-arm.c 2010-04-19 10:12:45.000000000 -0700 +@@ -12736,108 +12736,15 @@ elf32_arm_section_from_shdr (bfd *abfd, + return TRUE; + } + +-/* A structure used to record a list of sections, independently +- of the next and prev fields in the asection structure. */ +-typedef struct section_list +-{ +- asection * sec; +- struct section_list * next; +- struct section_list * prev; +-} +-section_list; +- +-/* Unfortunately we need to keep a list of sections for which +- an _arm_elf_section_data structure has been allocated. This +- is because it is possible for functions like elf32_arm_write_section +- to be called on a section which has had an elf_data_structure +- allocated for it (and so the used_by_bfd field is valid) but +- for which the ARM extended version of this structure - the +- _arm_elf_section_data structure - has not been allocated. */ +-static section_list * sections_with_arm_elf_section_data = NULL; +- +-static void +-record_section_with_arm_elf_section_data (asection * sec) +-{ +- struct section_list * entry; +- +- entry = bfd_malloc (sizeof (* entry)); +- if (entry == NULL) +- return; +- entry->sec = sec; +- entry->next = sections_with_arm_elf_section_data; +- entry->prev = NULL; +- if (entry->next != NULL) +- entry->next->prev = entry; +- sections_with_arm_elf_section_data = entry; +-} +- +-static struct section_list * +-find_arm_elf_section_entry (asection * sec) +-{ +- struct section_list * entry; +- static struct section_list * last_entry = NULL; +- +- /* This is a short cut for the typical case where the sections are added +- to the sections_with_arm_elf_section_data list in forward order and +- then looked up here in backwards order. This makes a real difference +- to the ld-srec/sec64k.exp linker test. */ +- entry = sections_with_arm_elf_section_data; +- if (last_entry != NULL) +- { +- if (last_entry->sec == sec) +- entry = last_entry; +- else if (last_entry->next != NULL +- && last_entry->next->sec == sec) +- entry = last_entry->next; +- } +- +- for (; entry; entry = entry->next) +- if (entry->sec == sec) +- break; +- +- if (entry) +- /* Record the entry prior to this one - it is the entry we are most +- likely to want to locate next time. Also this way if we have been +- called from unrecord_section_with_arm_elf_section_data() we will not +- be caching a pointer that is about to be freed. */ +- last_entry = entry->prev; +- +- return entry; +-} +- + static _arm_elf_section_data * + get_arm_elf_section_data (asection * sec) + { +- struct section_list * entry; +- +- entry = find_arm_elf_section_entry (sec); +- +- if (entry) +- return elf32_arm_section_data (entry->sec); ++ if (sec && sec->owner && is_arm_elf (sec->owner)) ++ return elf32_arm_section_data (sec); + else + return NULL; + } + +-static void +-unrecord_section_with_arm_elf_section_data (asection * sec) +-{ +- struct section_list * entry; +- +- entry = find_arm_elf_section_entry (sec); +- +- if (entry) +- { +- if (entry->prev != NULL) +- entry->prev->next = entry->next; +- if (entry->next != NULL) +- entry->next->prev = entry->prev; +- if (entry == sections_with_arm_elf_section_data) +- sections_with_arm_elf_section_data = entry->next; +- free (entry); +- } +-} +- +- + typedef struct + { + void *finfo; +@@ -13230,8 +13137,6 @@ elf32_arm_new_section_hook (bfd *abfd, a + sec->used_by_bfd = sdata; + } + +- record_section_with_arm_elf_section_data (sec); +- + return _bfd_elf_new_section_hook (abfd, sec); + } + +@@ -13659,44 +13564,13 @@ elf32_arm_write_section (bfd *output_bfd + } + + free (map); +- arm_data->mapcount = 0; ++ arm_data->mapcount = -1; + arm_data->mapsize = 0; + arm_data->map = NULL; +- unrecord_section_with_arm_elf_section_data (sec); + + return FALSE; + } + +-static void +-unrecord_section_via_map_over_sections (bfd * abfd ATTRIBUTE_UNUSED, +- asection * sec, +- void * ignore ATTRIBUTE_UNUSED) +-{ +- unrecord_section_with_arm_elf_section_data (sec); +-} +- +-static bfd_boolean +-elf32_arm_close_and_cleanup (bfd * abfd) +-{ +- if (abfd->sections) +- bfd_map_over_sections (abfd, +- unrecord_section_via_map_over_sections, +- NULL); +- +- return _bfd_elf_close_and_cleanup (abfd); +-} +- +-static bfd_boolean +-elf32_arm_bfd_free_cached_info (bfd * abfd) +-{ +- if (abfd->sections) +- bfd_map_over_sections (abfd, +- unrecord_section_via_map_over_sections, +- NULL); +- +- return _bfd_free_cached_info (abfd); +-} +- + /* Display STT_ARM_TFUNC symbols as functions. */ + + static void +@@ -13882,8 +13756,6 @@ const struct elf_size_info elf32_arm_siz + #define bfd_elf32_find_inliner_info elf32_arm_find_inliner_info + #define bfd_elf32_new_section_hook elf32_arm_new_section_hook + #define bfd_elf32_bfd_is_target_special_symbol elf32_arm_is_target_special_symbol +-#define bfd_elf32_close_and_cleanup elf32_arm_close_and_cleanup +-#define bfd_elf32_bfd_free_cached_info elf32_arm_bfd_free_cached_info + #define bfd_elf32_bfd_final_link elf32_arm_final_link + + #define elf_backend_get_symbol_type elf32_arm_get_symbol_type diff --git a/toolchain/binutils/2.20/400-arm_link_speed.patch b/toolchain/binutils/2.20/400-arm_link_speed.patch new file mode 100644 index 000000000..d03385a13 --- /dev/null +++ b/toolchain/binutils/2.20/400-arm_link_speed.patch @@ -0,0 +1,183 @@ +From Binutils CVS: + +http://sourceware.org/cgi-bin/cvsweb.cgi/src/bfd/elf32-arm.c?rev=1.230&content-type=text/x-cvsweb-markup&cvsroot=src + +Improves linking time from large projects on ARM. +diff -dupr binutils-2.20.orig/bfd/elf32-arm.c binutils-2.20/bfd/elf32-arm.c +--- binutils-2.20.orig/bfd/elf32-arm.c 2010-04-19 10:08:50.000000000 -0700 ++++ binutils-2.20/bfd/elf32-arm.c 2010-04-19 10:12:45.000000000 -0700 +@@ -12736,108 +12736,15 @@ elf32_arm_section_from_shdr (bfd *abfd, + return TRUE; + } + +-/* A structure used to record a list of sections, independently +- of the next and prev fields in the asection structure. */ +-typedef struct section_list +-{ +- asection * sec; +- struct section_list * next; +- struct section_list * prev; +-} +-section_list; +- +-/* Unfortunately we need to keep a list of sections for which +- an _arm_elf_section_data structure has been allocated. This +- is because it is possible for functions like elf32_arm_write_section +- to be called on a section which has had an elf_data_structure +- allocated for it (and so the used_by_bfd field is valid) but +- for which the ARM extended version of this structure - the +- _arm_elf_section_data structure - has not been allocated. */ +-static section_list * sections_with_arm_elf_section_data = NULL; +- +-static void +-record_section_with_arm_elf_section_data (asection * sec) +-{ +- struct section_list * entry; +- +- entry = bfd_malloc (sizeof (* entry)); +- if (entry == NULL) +- return; +- entry->sec = sec; +- entry->next = sections_with_arm_elf_section_data; +- entry->prev = NULL; +- if (entry->next != NULL) +- entry->next->prev = entry; +- sections_with_arm_elf_section_data = entry; +-} +- +-static struct section_list * +-find_arm_elf_section_entry (asection * sec) +-{ +- struct section_list * entry; +- static struct section_list * last_entry = NULL; +- +- /* This is a short cut for the typical case where the sections are added +- to the sections_with_arm_elf_section_data list in forward order and +- then looked up here in backwards order. This makes a real difference +- to the ld-srec/sec64k.exp linker test. */ +- entry = sections_with_arm_elf_section_data; +- if (last_entry != NULL) +- { +- if (last_entry->sec == sec) +- entry = last_entry; +- else if (last_entry->next != NULL +- && last_entry->next->sec == sec) +- entry = last_entry->next; +- } +- +- for (; entry; entry = entry->next) +- if (entry->sec == sec) +- break; +- +- if (entry) +- /* Record the entry prior to this one - it is the entry we are most +- likely to want to locate next time. Also this way if we have been +- called from unrecord_section_with_arm_elf_section_data() we will not +- be caching a pointer that is about to be freed. */ +- last_entry = entry->prev; +- +- return entry; +-} +- + static _arm_elf_section_data * + get_arm_elf_section_data (asection * sec) + { +- struct section_list * entry; +- +- entry = find_arm_elf_section_entry (sec); +- +- if (entry) +- return elf32_arm_section_data (entry->sec); ++ if (sec && sec->owner && is_arm_elf (sec->owner)) ++ return elf32_arm_section_data (sec); + else + return NULL; + } + +-static void +-unrecord_section_with_arm_elf_section_data (asection * sec) +-{ +- struct section_list * entry; +- +- entry = find_arm_elf_section_entry (sec); +- +- if (entry) +- { +- if (entry->prev != NULL) +- entry->prev->next = entry->next; +- if (entry->next != NULL) +- entry->next->prev = entry->prev; +- if (entry == sections_with_arm_elf_section_data) +- sections_with_arm_elf_section_data = entry->next; +- free (entry); +- } +-} +- +- + typedef struct + { + void *finfo; +@@ -13230,8 +13137,6 @@ elf32_arm_new_section_hook (bfd *abfd, a + sec->used_by_bfd = sdata; + } + +- record_section_with_arm_elf_section_data (sec); +- + return _bfd_elf_new_section_hook (abfd, sec); + } + +@@ -13659,44 +13564,13 @@ elf32_arm_write_section (bfd *output_bfd + } + + free (map); +- arm_data->mapcount = 0; ++ arm_data->mapcount = -1; + arm_data->mapsize = 0; + arm_data->map = NULL; +- unrecord_section_with_arm_elf_section_data (sec); + + return FALSE; + } + +-static void +-unrecord_section_via_map_over_sections (bfd * abfd ATTRIBUTE_UNUSED, +- asection * sec, +- void * ignore ATTRIBUTE_UNUSED) +-{ +- unrecord_section_with_arm_elf_section_data (sec); +-} +- +-static bfd_boolean +-elf32_arm_close_and_cleanup (bfd * abfd) +-{ +- if (abfd->sections) +- bfd_map_over_sections (abfd, +- unrecord_section_via_map_over_sections, +- NULL); +- +- return _bfd_elf_close_and_cleanup (abfd); +-} +- +-static bfd_boolean +-elf32_arm_bfd_free_cached_info (bfd * abfd) +-{ +- if (abfd->sections) +- bfd_map_over_sections (abfd, +- unrecord_section_via_map_over_sections, +- NULL); +- +- return _bfd_free_cached_info (abfd); +-} +- + /* Display STT_ARM_TFUNC symbols as functions. */ + + static void +@@ -13882,8 +13756,6 @@ const struct elf_size_info elf32_arm_siz + #define bfd_elf32_find_inliner_info elf32_arm_find_inliner_info + #define bfd_elf32_new_section_hook elf32_arm_new_section_hook + #define bfd_elf32_bfd_is_target_special_symbol elf32_arm_is_target_special_symbol +-#define bfd_elf32_close_and_cleanup elf32_arm_close_and_cleanup +-#define bfd_elf32_bfd_free_cached_info elf32_arm_bfd_free_cached_info + #define bfd_elf32_bfd_final_link elf32_arm_final_link + + #define elf_backend_get_symbol_type elf32_arm_get_symbol_type diff --git a/toolchain/gdb/Config.in b/toolchain/gdb/Config.in index 0e17ff673..e383949e5 100644 --- a/toolchain/gdb/Config.in +++ b/toolchain/gdb/Config.in @@ -3,9 +3,13 @@ comment "Gdb Options" config BR2_PACKAGE_GDB bool "Build gdb debugger for the Target" select BR2_PACKAGE_NCURSES + depends on BR2_USE_WCHAR help Build the full gdb debugger to run on the target. +comment "Gdb debugger for the target needs WCHAR support in toolchain" + depends on !BR2_USE_WHCAR + config BR2_PACKAGE_GDB_SERVER bool "Build gdb server for the Target" help diff --git a/toolchain/uClibc/uClibc-0.9.31.config b/toolchain/uClibc/uClibc-0.9.31.config index 8af08d92d..091f179ad 100644 --- a/toolchain/uClibc/uClibc-0.9.31.config +++ b/toolchain/uClibc/uClibc-0.9.31.config @@ -94,7 +94,7 @@ UCLIBC_HAS_PTY=y ASSUME_DEVPTS=y UNIX98PTY_ONLY=y # UCLIBC_HAS_GETPT is not set -# UCLIBC_HAS_LIBUTIL is not set +UCLIBC_HAS_LIBUTIL=y UCLIBC_HAS_TM_EXTENSIONS=y UCLIBC_HAS_TZ_CACHING=y UCLIBC_HAS_TZ_FILE=y @@ -138,8 +138,8 @@ UCLIBC_USE_NETLINK=y # UCLIBC_HAS_BSD_RES_CLOSE is not set UCLIBC_HAS_COMPAT_RES_STATE=y # UCLIBC_HAS_EXTRA_COMPAT_RES_STATE is not set -# UCLIBC_HAS_LIBRESOLV_STUB is not set -# UCLIBC_HAS_LIBNSL_STUB is not set +UCLIBC_HAS_LIBRESOLV_STUB=y +UCLIBC_HAS_LIBNSL_STUB=y # # String and Stdio Support |