Message ID | 1365761909-15305-1-git-send-email-sonic.adi@gmail.com |
---|---|
State | Changes Requested |
Headers | show |
Dear Sonic Zhang, On Fri, 12 Apr 2013 18:18:23 +0800, Sonic Zhang wrote: > +# Set up target binary format > +choice > + prompt "Target Binary Format" > + default BR2_BINFMT_FDPIC if BR2_bfin > + default BR2_BINFMT_ELF > + > +config BR2_BINFMT_ELF > + bool "ELF" > + depends on !BR2_bfin > + help > + ELF (Executable and Linkable Format) is a format for libraries and > + executables used across different architectures and operating > + systems. I do agree with Arnout on one point here: we can hide this choice when !BR2_bfin. However, contrary to Arnout, I'd like to keep this BR2_BINFMT_ELF choice as an invisible option, that is always selected on !BR2_bfin. Yes it's useless, but I think it makes the binfmt options clearer. Sonic, once this is changed, you have my Acked-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> on this patch. Thanks! Thomas
On 16/04/13 20:51, Thomas Petazzoni wrote: > Dear Sonic Zhang, > > On Fri, 12 Apr 2013 18:18:23 +0800, Sonic Zhang wrote: > >> +# Set up target binary format >> +choice >> + prompt "Target Binary Format" >> + default BR2_BINFMT_FDPIC if BR2_bfin >> + default BR2_BINFMT_ELF >> + >> +config BR2_BINFMT_ELF >> + bool "ELF" >> + depends on !BR2_bfin >> + help >> + ELF (Executable and Linkable Format) is a format for libraries and >> + executables used across different architectures and operating >> + systems. > > I do agree with Arnout on one point here: we can hide this choice > when !BR2_bfin. However, contrary to Arnout, I'd like to keep this > BR2_BINFMT_ELF choice as an invisible option, that is always selected > on !BR2_bfin. Yes it's useless, but I think it makes the binfmt options > clearer. OK for me. Most important is that the choice is hidden when empty. Regards, Arnout > > Sonic, once this is changed, you have my Acked-by: Thomas Petazzoni > <thomas.petazzoni@free-electrons.com> on this patch. > > Thanks! > > Thomas >
Dear Arnout Vandecappelle, On Wed, 17 Apr 2013 18:42:24 +0200, Arnout Vandecappelle wrote: > > I do agree with Arnout on one point here: we can hide this choice > > when !BR2_bfin. However, contrary to Arnout, I'd like to keep this > > BR2_BINFMT_ELF choice as an invisible option, that is always selected > > on !BR2_bfin. Yes it's useless, but I think it makes the binfmt options > > clearer. > > OK for me. Most important is that the choice is hidden when empty. Agreed. Thomas
diff --git a/arch/Config.in b/arch/Config.in index 472b10c..2a14c29 100644 --- a/arch/Config.in +++ b/arch/Config.in @@ -174,6 +174,40 @@ config BR2_GCC_TARGET_ABI config BR2_GCC_TARGET_CPU string +# Set up target binary format +choice + prompt "Target Binary Format" + default BR2_BINFMT_FDPIC if BR2_bfin + default BR2_BINFMT_ELF + +config BR2_BINFMT_ELF + bool "ELF" + depends on !BR2_bfin + help + ELF (Executable and Linkable Format) is a format for libraries and + executables used across different architectures and operating + systems. + +config BR2_BINFMT_FDPIC + bool "FDPIC" + depends on BR2_bfin + help + ELF FDPIC binaries are based on ELF, but allow the individual load + segments of a binary to be located in memory independently of each + other. This makes this format ideal for use in environments where no + MMU is available. + +config BR2_BINFMT_FLAT + bool "FLAT" + depends on BR2_bfin + select BR2_PREFER_STATIC_LIB + help + FLAT binary is a relatively simple and lightweight executable format + based on the original a.out format. It is widely used in environment + where no MMU is available. + +endchoice + if BR2_arm || BR2_armeb source "arch/Config.in.arm" endif diff --git a/toolchain/toolchain-external/Config.in b/toolchain/toolchain-external/Config.in index 5b26aa9..6cf29aa 100644 --- a/toolchain/toolchain-external/Config.in +++ b/toolchain/toolchain-external/Config.in @@ -758,12 +758,12 @@ config BR2_TOOLCHAIN_EXTERNAL_PREFIX default "i686-pc-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201109 default "i686-pc-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201203 default "i686-pc-linux-gnu" if BR2_TOOLCHAIN_EXTERNAL_CODESOURCERY_X86_201209 - default "bfin-uclinux" if BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2011R1 && !BR2_BFIN_FDPIC - default "bfin-linux-uclibc" if BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2011R1 && BR2_BFIN_FDPIC - default "bfin-uclinux" if BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2012R1 && !BR2_BFIN_FDPIC - default "bfin-linux-uclibc" if BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2012R1 && BR2_BFIN_FDPIC - default "bfin-uclinux" if BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2012R2 && !BR2_BFIN_FDPIC - default "bfin-linux-uclibc" if BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2012R2 && BR2_BFIN_FDPIC + default "bfin-uclinux" if BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2011R1 && BR2_BINFMT_FLAT + default "bfin-linux-uclibc" if BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2011R1 && BR2_BINFMT_FDPIC + default "bfin-uclinux" if BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2012R1 && BR2_BINFMT_FLAT + default "bfin-linux-uclibc" if BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2012R1 && BR2_BINFMT_FDPIC + default "bfin-uclinux" if BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2012R2 && BR2_BINFMT_FLAT + default "bfin-linux-uclibc" if BR2_TOOLCHAIN_EXTERNAL_BLACKFIN_UCLINUX_2012R2 && BR2_BINFMT_FDPIC default $(BR2_TOOLCHAIN_EXTERNAL_CUSTOM_PREFIX) \ if BR2_TOOLCHAIN_EXTERNAL_CUSTOM diff --git a/toolchain/toolchain-external/ext-tool.mk b/toolchain/toolchain-external/ext-tool.mk index b477bc0..92183a4 100644 --- a/toolchain/toolchain-external/ext-tool.mk +++ b/toolchain/toolchain-external/ext-tool.mk @@ -160,6 +160,10 @@ ifneq ($(CC_TARGET_ABI_),) TOOLCHAIN_EXTERNAL_CFLAGS += -mabi=$(CC_TARGET_ABI_) TOOLCHAIN_EXTERNAL_WRAPPER_ARGS += -DBR_ABI='"$(CC_TARGET_ABI_)"' endif +ifeq ($(BR2_BINFMT_FLAT),y) +TOOLCHAIN_EXTERNAL_CFLAGS += -Wl,-elf2flt +TOOLCHAIN_EXTERNAL_WRAPPER_ARGS += -DBR_BINFMT_FLAT +endif ifneq ($(BR2_TARGET_OPTIMIZATION),) TOOLCHAIN_EXTERNAL_CFLAGS += $(call qstrip,$(BR2_TARGET_OPTIMIZATION)) diff --git a/toolchain/toolchain-external/ext-toolchain-wrapper.c b/toolchain/toolchain-external/ext-toolchain-wrapper.c index a92bada..9a2fc70 100644 --- a/toolchain/toolchain-external/ext-toolchain-wrapper.c +++ b/toolchain/toolchain-external/ext-toolchain-wrapper.c @@ -47,6 +47,9 @@ static char *predef_args[] = { #ifdef BR_64 "-m64", #endif +#ifdef BR_BINFMT_FLAT + "-Wl,-elf2flt", +#endif #ifdef BR_ADDITIONAL_CFLAGS BR_ADDITIONAL_CFLAGS #endif