Pull request buildroot.git (vapier branch)
The following changes since commit 9f31e2ffa005095206824e08f69da75503e998ab:
busybox: 1.18.2 fixes for ping, tar and udhcp (2011-02-06 21:48:53 +0100)
are available in the git repository at:
git://sources.blackfin.uclinux.org/git/users/vapier/buildroot.git vapier
Mike Frysinger (3):
debugging: do not require no stripping
initial support for Blackfin processors
gdb: add support for Blackfin gdbserver
Config.in | 4 +- Makefile | 1 + boot/u-boot/Config.in | 4 + boot/u-boot/u-boot.mk | 2 + linux/Config.in | 2 +- linux/linux.mk | 5 + target/Config.in.arch | 19 ++- toolchain/gdb/6.6/gdb-6.6-bfin-gdbserver.patch | 238 ++++++++++++++++++++++++ toolchain/gdb/Config.in | 7 +- toolchain/toolchain-common.in | 2 +- 10 files changed, 276 insertions(+), 8 deletions(-) create mode 100644 toolchain/gdb/6.6/gdb-6.6-bfin-gdbserver.patch
PATCH 1/3 debugging: do not require no stripping
The stripping options operate on the final image and not the intermediate builds, so requiring stripping to be disabled just to enable debugging options doesn't make much sense. Especially when working with gdbserver:
only the host needs the debugging information to be available. The board can run & debug perfectly fine without it.
--- Config.in | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-)
Config.in +2 -2
@@ -219,14 +219,14 @@ choice config BR2_STRIP_strip bool "strip" - depends on !BR2_ENABLE_DEBUG && !BR2_ELF2FLT + depends on !BR2_ELF2FLT help strip is the normal strip command config BR2_STRIP_sstrip bool "sstrip" select BR2_PACKAGE_SSTRIP_HOST - depends on !BR2_ENABLE_DEBUG && !BR2_ELF2FLT + depends on !BR2_ELF2FLT help sstrip is a strip that discards more than the normal strip
Signature · 1 line
1.7.4
PATCH 2/3 initial support for Blackfin processors
--- Makefile | 1 + boot/u-boot/Config.in | 4 ++++ boot/u-boot/u-boot.mk | 2 ++ linux/Config.in | 2 +- linux/linux.mk | 5 +++++ target/Config.in.arch | 19 ++++++++++++++++++- toolchain/toolchain-common.in | 2 +- 7 files changed, 32 insertions(+), 3 deletions(-)
Makefile +1 -0
@@ -263,6 +263,7 @@ endif KERNEL_ARCH:=$(shell echo "$(ARCH)" | sed -e "s/-.*//" \ -e s/i.86/i386/ -e s/sun4u/sparc64/ \ -e s/arm.*/arm/ -e s/sa110/arm/ \ + -e s/bfin/blackfin/ \ -e s/parisc64/parisc/ \ -e s/powerpc64/powerpc/ \ -e s/ppc.*/powerpc/ -e s/mips.*/mips/ \
boot/u-boot/Config.in +4 -0
@@ -75,6 +75,10 @@ config BR2_TARGET_UBOOT_FORMAT_KWB depends on BR2_arm bool "u-boot.kwb (Marvell)" +config BR2_TARGET_UBOOT_FORMAT_LDR + depends on BR2_bfin + bool "u-boot.ldr" + endchoice config BR2_TARGET_UBOOT_TOOL_MKIMAGE
boot/u-boot/u-boot.mk +2 -0
@@ -31,6 +31,8 @@ U_BOOT_CAT:=$(BZCAT) ifeq ($(BR2_TARGET_UBOOT_FORMAT_KWB),y) U_BOOT_BIN:=u-boot.kwb U_BOOT_MAKE_OPT:=$(U_BOOT_BIN) +else ifeq ($(BR2_TARGET_UBOOT_FORMAT_LDR),y) +U_BOOT_BIN:=u-boot.ldr else U_BOOT_BIN:=u-boot.bin endif
linux/Config.in +1 -1
@@ -115,7 +115,7 @@ choice config BR2_LINUX_KERNEL_UIMAGE bool "uImage" - depends on BR2_arm || BR2_armeb || BR2_powerpc || BR2_avr32 || BR2_sh || BR2_sh64 + depends on BR2_arm || BR2_armeb || BR2_bfin || BR2_powerpc || BR2_avr32 || BR2_sh || BR2_sh64 config BR2_LINUX_KERNEL_BZIMAGE bool "bzImage"
linux/linux.mk +5 -0
@@ -31,7 +31,12 @@ LINUX26_MAKE_FLAGS = \ LINUX26_VERSION_PROBED = $(shell $(MAKE) $(LINUX26_MAKE_FLAGS) -C $(LINUX26_DIR) --no-print-directory -s kernelrelease) ifeq ($(BR2_LINUX_KERNEL_UIMAGE),y) +ifeq ($(KERNEL_ARCH),blackfin) +# a uImage, but with a diff file name +LINUX26_IMAGE_NAME=vmImage +else LINUX26_IMAGE_NAME=uImage +endif LINUX26_DEPENDENCIES+=$(MKIMAGE) else ifeq ($(BR2_LINUX_KERNEL_BZIMAGE),y) LINUX26_IMAGE_NAME=bzImage
target/Config.in.arch +18 -1
@@ -14,6 +14,8 @@ config BR2_armeb config BR2_avr32 bool "avr32" select BR2_SOFT_FLOAT +config BR2_bfin + bool "bfin" config BR2_i386 bool "i386" config BR2_m68k
@@ -128,6 +130,20 @@ config BR2_ARM_OABI endchoice choice + prompt "Target ABI" + depends on BR2_bfin + default BR2_BFIN_FLAT +config BR2_BFIN_FDPIC + bool "FDPIC" +config BR2_BFIN_FLAT + bool "FLAT" +config BR2_BFIN_FLAT_SEP_DATA + bool "FLAT (Separate data)" +config BR2_BFIN_SHARED_FLAT + bool "Shared FLAT" +endchoice + +choice prompt "Target Architecture Variant" depends on BR2_mips || BR2_mipsel default BR2_mips_3 if BR2_mips
@@ -444,6 +460,7 @@ config BR2_ARCH default "arm" if BR2_arm default "armeb" if BR2_armeb default "avr32" if BR2_avr32 + default "bfin" if BR2_bfin default "i386" if BR2_x86_i386 default "i486" if BR2_x86_i486 default "i586" if BR2_x86_i586
@@ -485,7 +502,7 @@ config BR2_ARCH config BR2_ENDIAN string - default "LITTLE" if BR2_arm || BR2_i386 || BR2_mipsel || \ + default "LITTLE" if BR2_arm || BR2_bfin || BR2_i386 || BR2_mipsel || \ BR2_sh3 || BR2_sh4 || BR2_x86_64 || BR2_sh64 default "BIG" if BR2_armeb || BR2_avr32 || BR2_m68k || BR2_mips || \ BR2_powerpc || BR2_sh2a_nofpueb || BR2_sh2eb || \
toolchain/toolchain-common.in +1 -1
@@ -67,7 +67,7 @@ config BR2_NEEDS_GETTEXT_IF_LOCALE default y if (BR2_NEEDS_GETTEXT && BR2_ENABLE_LOCALE) config BR2_USE_MMU - bool "Enable MMU support" if BR2_arm || BR2_armeb || BR2_mips || BR2_mipsel || BR2_sh || BR2_xtensa + bool "Enable MMU support" if BR2_arm || BR2_armeb || BR2_bfin || BR2_mips || BR2_mipsel || BR2_sh || BR2_xtensa default y help If your target has a MMU, you should say Y here. If you
Signature · 1 line
1.7.4
PATCH 2/3 initial support for Blackfin processors
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Mike" == Mike Frysinger <[email protected]> writes:
Hi,
Mike> +++ b/toolchain/toolchain-common.in
Mike> @@ -67,7 +67,7 @@ config BR2_NEEDS_GETTEXT_IF_LOCALE
Mike> default y if (BR2_NEEDS_GETTEXT && BR2_ENABLE_LOCALE)
Mike> config BR2_USE_MMU
Mike> - bool "Enable MMU support" if BR2_arm || BR2_armeb || BR2_mips || BR2_mipsel || BR2_sh || BR2_xtensa Mike> + bool "Enable MMU support" if BR2_arm || BR2_armeb || BR2_bfin || BR2_mips || BR2_mipsel || BR2_sh || BR2_xtensa
Mike> default y
Bfin doesn't have MMU, right? So enabling USE_MMU doesn't make sense. I've changed it to be 'default y if !BR2_bfin' - Committed, thanks.
Signature · 1 line
Bye, Peter Korsgaard
PATCH 2/3 initial support for Blackfin processors
Quoted 5 lines · Peter Korsgaard
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Mike" == Mike Frysinger <[email protected]> writes:
?Mike> +++ b/toolchain/toolchain-common.in
?Mike> @@ -67,7 +67,7 @@ configBR2_NEEDS_GETTEXT_IF_LOCALE?Mike> ? ? ? ? ?default y if (BR2_NEEDS_GETTEXT&&BR2_ENABLE_LOCALE)
Quoted 7 lines
?Mike> ?config
BR2_USE_MMU?Mike> - ? ? ? ?bool "Enable MMU support" if BR2_arm || BR2_armeb || BR2_mips || BR2_mipsel || BR2_sh || BR2_xtensa ?Mike> + ? ? ? ?bool "Enable MMU support" if BR2_arm || BR2_armeb || BR2_bfin || BR2_mips || BR2_mipsel || BR2_sh || BR2_xtensa?Mike> ? ? ? ? ?default y
Bfin doesn't have MMU, right? So enabling
USE_MMUdoesn't make sense. I've changed it to be 'default y if !BR2_bfin' - Committed, thanks.
thanks ... that obviousness obviously didnt occur to me :) -mike
PATCH 3/3 gdb: add support for Blackfin gdbserver
In reply to Mike FrysingerThis requires removing "deprecated" markings from gdb-6.6, but this isn't that big of a deal. That is the last version with Blackfin support at the moment and we're in the process of getting mainlined.
--- toolchain/gdb/6.6/gdb-6.6-bfin-gdbserver.patch | 238 ++++++++++++++++++++++++ toolchain/gdb/Config.in | 7 +- 2 files changed, 242 insertions(+), 3 deletions(-) create mode 100644 toolchain/gdb/6.6/gdb-6.6-bfin-gdbserver.patch
toolchain/gdb/6.6/gdb-6.6-bfin-gdbserver.patch new file +238 -0
@@ -0,0 +1,238 @@ +--- gdb-6.6/gdb/gdbserver/configure.srv ++++ gdb-6.6/gdb/gdbserver/configure.srv +@@ -23,6 +23,11 @@ case "${target}" in + srv_linux_usrregs=yes + srv_linux_thread_db=yes + ;; ++ bfin-*-*) srv_regobj=reg-bfin.o ++ srv_tgtobj="linux-low.o linux-bfin-low.o" ++ srv_linux_usrregs=yes ++ srv_linux_thread_db=yes ++ ;; + crisv32-*-linux*) srv_regobj=reg-crisv32.o + srv_tgtobj="linux-low.o linux-crisv32-low.o" + srv_linux_regsets=yes +--- gdb-6.6/gdb/gdbserver/linux-bfin-low.c ++++ gdb-6.6/gdb/gdbserver/linux-bfin-low.c +@@ -0,0 +1,101 @@ ++/* GNU/Linux/BFIN specific low level interface, for the remote server for GDB. ++ ++ Copyright (C) 2005 Free Software Foundation, Inc. ++ Contributed by Analog Devices. ++ ++ This file is part of GDB. ++ ++ This program is free software; you can redistribute it and/or modify ++ it under the terms of the GNU General Public License as published by ++ the Free Software Foundation; either version 2 of the License, or ++ (at your option) any later version. ++ ++ This program is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ GNU General Public License for more details. ++ ++ You should have received a copy of the GNU General Public License ++ along with this program; if not, write to the Free Software ++ Foundation, Inc., 51 Franklin Street, Fifth Floor, ++ Boston, MA 02110-1301, USA. */ ++ ++#include "server.h" ++#include "linux-low.h" ++#include <asm/ptrace.h> ++ ++static int bfin_regmap[] = ++{ ++ PT_R0, PT_R1, PT_R2, PT_R3, PT_R4, PT_R5, PT_R6, PT_R7, ++ PT_P0, PT_P1, PT_P2, PT_P3, PT_P4, PT_P5, PT_USP, PT_FP, ++ PT_I0, PT_I1, PT_I2, PT_I3, PT_M0, PT_M1, PT_M2, PT_M3, ++ PT_B0, PT_B1, PT_B2, PT_B3, PT_L0, PT_L1, PT_L2, PT_L3, ++ PT_A0X, PT_A0W, PT_A1X, PT_A1W, PT_ASTAT, PT_RETS, ++ PT_LC0, PT_LT0, PT_LB0, PT_LC1, PT_LT1, PT_LB1, ++ -1 /* PT_CYCLES */, -1 /* PT_CYCLES2 */, ++ -1 /* PT_USP */, PT_SEQSTAT, PT_SYSCFG, PT_PC, PT_RETX, PT_RETN, PT_RETE, ++ PT_PC, -1 /* PT_CC */, PT_TEXT_ADDR, PT_TEXT_END_ADDR, PT_DATA_ADDR, ++ PT_FDPIC_EXEC, PT_FDPIC_INTERP, ++ PT_IPEND ++}; ++ ++#define bfin_num_regs (sizeof(bfin_regmap) / sizeof(bfin_regmap[0])) ++ ++static int ++bfin_cannot_store_register (int regno) ++{ ++ return (regno >= bfin_num_regs); ++} ++ ++static int ++bfin_cannot_fetch_register (int regno) ++{ ++ return (regno >= bfin_num_regs); ++} ++ ++static CORE_ADDR ++bfin_get_pc () ++{ ++ unsigned long pc; ++ collect_register_by_name ("pc", &pc); ++ return pc; ++} ++ ++static void ++bfin_set_pc (CORE_ADDR pc) ++{ ++ unsigned long newpc = pc; ++ supply_register_by_name ("pc", &newpc); ++} ++ ++#define bfin_breakpoint_len 2 ++static const unsigned char bfin_breakpoint[bfin_breakpoint_len]={0xa1, 0x00}; ++ ++static int ++bfin_breakpoint_at (CORE_ADDR where) ++{ ++ unsigned char insn[bfin_breakpoint_len]; ++ ++ read_inferior_memory(where, insn, bfin_breakpoint_len); ++ if (insn[0] == bfin_breakpoint[0] ++ && insn[1] == bfin_breakpoint[1]) ++ return 1; ++ ++ /* If necessary, recognize more trap instructions here. GDB only uses the ++ one. */ ++ return 0; ++} ++ ++struct linux_target_ops the_low_target = { ++ bfin_num_regs, ++ bfin_regmap, ++ bfin_cannot_fetch_register, ++ bfin_cannot_store_register, ++ bfin_get_pc, ++ bfin_set_pc, ++ bfin_breakpoint, ++ bfin_breakpoint_len, ++ 0, ++ 2, ++ bfin_breakpoint_at, ++}; +--- gdb-6.6/gdb/gdbserver/linux-low.c ++++ gdb-6.6/gdb/gdbserver/linux-low.c +@@ -1592,6 +1592,10 @@ linux_stopped_data_address (void) + #define PT_TEXT_ADDR 49*4 + #define PT_DATA_ADDR 50*4 + #define PT_TEXT_END_ADDR 51*4 ++#elif defined(BFIN) ++#define PT_TEXT_ADDR 220 ++#define PT_TEXT_END_ADDR 224 ++#define PT_DATA_ADDR 228 + #endif + + /* Under uClinux, programs are loaded at non-zero offsets, which we need +--- gdb-6.6/gdb/gdbserver/Makefile.in ++++ gdb-6.6/gdb/gdbserver/Makefile.in +@@ -119,9 +119,9 @@ SFILES= $(srcdir)/gdbreplay.c $(srcdir)/ + $(srcdir)/mem-break.c $(srcdir)/proc-service.c $(srcdir)/regcache.c \ + $(srcdir)/remote-utils.c $(srcdir)/server.c $(srcdir)/target.c \ + $(srcdir)/thread-db.c $(srcdir)/utils.c \ +- $(srcdir)/linux-arm-low.c $(srcdir)/linux-cris-low.c \ +- $(srcdir)/linux-crisv32-low.c $(srcdir)/linux-i386-low.c \ +- $(srcdir)/i387-fp.c \ ++ $(srcdir)/linux-arm-low.c $(srcdir)/linux-bfin-low.c \ ++ $(srcdir)/linux-cris-low.c $(srcdir)/linux-crisv32-low.c \ ++ $(srcdir)/linux-i386-low.c $(srcdir)/i387-fp.c \ + $(srcdir)/linux-ia64-low.c $(srcdir)/linux-low.c \ + $(srcdir)/linux-m32r-low.c \ + $(srcdir)/linux-m68k-low.c $(srcdir)/linux-mips-low.c \ +@@ -207,6 +207,7 @@ clean: + rm -f reg-arm.c reg-i386.c reg-ia64.c reg-m32r.c reg-m68k.c reg-mips.c + rm -f reg-ppc.c reg-sh.c reg-spu.c reg-x86-64.c reg-i386-linux.c + rm -f reg-cris.c reg-crisv32.c reg-x86-64-linux.c ++ rm -f reg-bfin.c + + maintainer-clean realclean distclean: clean + rm -f nm.h tm.h xm.h config.status config.h stamp-h config.log +@@ -272,6 +273,7 @@ linux-low.o: linux-low.c $(linux_low_h) + + linux-arm-low.o: linux-arm-low.c $(linux_low_h) $(server_h) \ + $(gdb_proc_service_h) ++linux-bfin-low.o: linux-bfin-low.c $(linux_low_h) $(server_h) + linux-cris-low.o: linux-cris-low.c $(linux_low_h) $(server_h) + linux-crisv32-low.o: linux-crisv32-low.c $(linux_low_h) $(server_h) + linux-i386-low.o: linux-i386-low.c $(linux_low_h) $(server_h) \ +@@ -294,6 +297,9 @@ spu-low.o: spu-low.c $(server_h) + reg-arm.o : reg-arm.c $(regdef_h) + reg-arm.c : $(srcdir)/../regformats/reg-arm.dat $(regdat_sh) + sh $(regdat_sh) $(srcdir)/../regformats/reg-arm.dat reg-arm.c ++reg-bfin.o : reg-bfin.c $(regdef_h) ++reg-bfin.c : $(srcdir)/../regformats/reg-bfin.dat $(regdat_sh) ++ sh $(regdat_sh) $(srcdir)/../regformats/reg-bfin.dat reg-bfin.c + reg-cris.o : reg-cris.c $(regdef_h) + reg-cris.c : $(srcdir)/../regformats/reg-cris.dat $(regdat_sh) + sh $(regdat_sh) $(srcdir)/../regformats/reg-cris.dat reg-cris.c +--- gdb-6.6/gdb/regformats/reg-bfin.dat ++++ gdb-6.6/gdb/regformats/reg-bfin.dat +@@ -0,0 +1,63 @@ ++name:bfin ++expedite:pc,sp,fp ++32:r0 ++32:r1 ++32:r2 ++32:r3 ++32:r4 ++32:r5 ++32:r6 ++32:r7 ++32:p0 ++32:p1 ++32:p2 ++32:p3 ++32:p4 ++32:p5 ++32:sp ++32:fp ++32:i0 ++32:i1 ++32:i2 ++32:i3 ++32:m0 ++32:m1 ++32:m2 ++32:m3 ++32:b0 ++32:b1 ++32:b2 ++32:b3 ++32:l0 ++32:l1 ++32:l2 ++32:l3 ++32:a0x ++32:a0w ++32:a1x ++32:a1w ++32:astat ++32:rets ++32:lc0 ++32:lt0 ++32:lb0 ++32:lc1 ++32:lt1 ++32:lb1 ++32:cycles ++32:cycles2 ++32:usp ++32:seqstat ++32:syscfg ++32:reti ++32:retx ++32:retn ++32:rete ++32:pc ++32:cc ++32:text_addr ++32:text_end_addr ++32:data_addr ++32:fdpic_exec ++32:fdpic_interp ++32:ipend
toolchain/gdb/Config.in +4 -3
@@ -35,10 +35,9 @@ choice config BR2_GDB_VERSION_6_6 bool "gdb 6.6" depends on !BR2_avr32 - depends on BR2_DEPRECATED config BR2_GDB_VERSION_6_7_1 - depends on !BR2_avr32 + depends on !(BR2_avr32 || BR2_bfin) bool "gdb 6.7.1" config BR2_GDB_VERSION_6_7_1_AVR32_2_1_5
@@ -47,14 +46,16 @@ choice config BR2_GDB_VERSION_6_8 bool "gdb 6.8" - depends on !BR2_avr32 + depends on !(BR2_avr32 || BR2_bfin) config BR2_GDB_VERSION_7_0_1 bool "gdb 7.0.1" + depends on !BR2_bfin select BR2_PTHREAD_DEBUG if !BR2_PTHREADS_NONE config BR2_GDB_VERSION_7_1 bool "gdb 7.1" + depends on !BR2_bfin select BR2_PTHREAD_DEBUG if !BR2_PTHREADS_NONE endchoice
Signature · 1 line
1.7.4
PATCH 3/3 gdb: add support for Blackfin gdbserver
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Mike" == Mike Frysinger <[email protected]> writes:
Mike> This requires removing "deprecated" markings from gdb-6.6, but this isn't Mike> that big of a deal. That is the last version with Blackfin support at the Mike> moment and we're in the process of getting mainlined.
I've changed it to only undeprecate for bfin - Committed, thanks.
Signature · 1 line
Bye, Peter Korsgaard
PATCH 1/3 debugging: do not require no stripping
In reply to Mike FrysingerQuoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Mike" == Mike Frysinger <[email protected]> writes:
Mike> The stripping options operate on the final image and not the Mike> intermediate builds, so requiring stripping to be disabled just Mike> to enable debugging options doesn't make much sense. Especially Mike> when working with gdbserver: only the host needs the debugging Mike> information to be available. The board can run & debug perfectly Mike> fine without it.
Committed, thanks.
Signature · 1 line
Bye, Peter Korsgaard