Browse Source

enable binfmt flat for bfin, fdpic test-suite compile fail

Waldemar Brodkorb 9 years ago
parent
commit
1deac090b0

+ 10 - 0
mk/vars.mk

@@ -159,6 +159,16 @@ TARGET_CXXFLAGS+=	-Wl,-elf2flt
 endif
 endif
 
+ifeq ($(ADK_TARGET_ARCH_BFIN),y)
+ifeq ($(ADK_TARGET_BINFMT_FLAT),y)
+TARGET_LDFLAGS+=	-elf2flt
+endif
+ifeq ($(ADK_TARGET_BINFMT_FLAT_SEP_DATA),y)
+TARGET_CFLAGS+=		-msep-data
+TARGET_CXXFLAGS+=	-msep-data
+endif
+endif
+
 ifeq ($(ADK_TARGET_ARCH_M68K),y)
 ifeq ($(ADK_TARGET_BINFMT_FLAT),y)
 TARGET_LDFLAGS+=	-elf2flt

+ 1 - 0
target/bfin/systems/toolchain-bfin

@@ -2,6 +2,7 @@ config ADK_TARGET_SYSTEM_TOOLCHAIN_BFIN
 	bool "Toolchain only"
 	select ADK_bfin
 	select ADK_toolchain_bfin
+	select ADK_TARGET_UCLINUX
 	select ADK_CPU_BFIN
 	select ADK_TARGET_TOOLCHAIN
 	select ADK_TARGET_PACKAGE_TXZ

+ 4 - 4
target/config/Config.in.binfmt

@@ -9,6 +9,10 @@ config ADK_TARGET_BINFMT_ELF
 	bool "ELF"
 	depends on (ADK_TARGET_ARCH_ARM || ADK_TARGET_ARCH_M68K) && !ADK_TARGET_UCLINUX
 
+config ADK_TARGET_BINFMT_FLAT
+	bool "FLAT"
+	depends on (ADK_TARGET_ARCH_ARM || ADK_TARGET_ARCH_BFIN || ADK_TARGET_ARCH_M68K) && ADK_TARGET_UCLINUX
+
 config ADK_TARGET_BINFMT_DSBT
 	bool "DSBT"
 	depends on ADK_TARGET_ARCH_C6X
@@ -17,10 +21,6 @@ config ADK_TARGET_BINFMT_FDPIC
 	bool "FDPIC"
 	depends on ADK_TARGET_ARCH_BFIN
 
-config ADK_TARGET_BINFMT_FLAT
-	bool "FLAT"
-	depends on (ADK_TARGET_ARCH_ARM || ADK_TARGET_ARCH_M68K) && ADK_TARGET_UCLINUX
-
 endchoice
 
 # Set up flat binary type

+ 3 - 0
toolchain/elf2flt/Makefile

@@ -9,6 +9,9 @@ include ${ADK_TOPDIR}/mk/buildhlp.mk
 ifeq ($(ADK_TOOLCHAIN_BINUTILS_GIT),y)
 BINUTILS_VERSION:=	git
 endif
+ifeq ($(ADK_TOOLCHAIN_BINUTILS_2_22),y)
+BINUTILS_VERSION:=	2.22
+endif
 ifeq ($(ADK_TOOLCHAIN_BINUTILS_2_24),y)
 BINUTILS_VERSION:=	2.24
 endif

+ 16 - 1
toolchain/uclibc-ng/Makefile

@@ -60,15 +60,30 @@ ifeq ($(ADK_TARGET_HARD_FLOAT),y)
 	$(SED) 's/.*\(UCLIBC_HAS_FPU\).*/\1=y/' ${WRKBUILD}/.config
 	$(SED) 's/.*\(UCLIBC_HAS_SOFT_FLOAT\).*/# \1 is not set/' ${WRKBUILD}/.config
 endif
+ifeq ($(ADK_TARGET_BINFMT_FDPIC),y)
+	$(SED) 's/.*\(UCLIBC_FORMAT_FDPIC_ELF\).*/\1=y/' ${WRKBUILD}/.config
+	$(SED) 's/.*\(UCLIBC_FORMAT_FLAT\).*/# \1 is not set/' ${WRKBUILD}/.config
+	$(SED) 's/.*\(UCLIBC_FORMAT_FLAT_SEP_DATA\).*/# \1 is not set/' ${WRKBUILD}/.config
+	$(SED) 's/.*\(UCLIBC_FORMAT_FLAT_SHARED\).*/# \1 is not set/' ${WRKBUILD}/.config
+endif
 ifeq ($(ADK_TARGET_BINFMT_FLAT),y)
 ifeq ($(ADK_TARGET_BINFMT_FLAT_ONE),y)
-	$(SED) 's/.*\(UCLIBC_FORMAT_FLAT_ONE\).*/\1=y/' ${WRKBUILD}/.config
+	$(SED) 's/.*\(UCLIBC_FORMAT_FLAT\).*/\1=y/' ${WRKBUILD}/.config
+	$(SED) 's/.*\(UCLIBC_FORMAT_FLAT_SEP_DATA\).*/# \1 is not set/' ${WRKBUILD}/.config
+	$(SED) 's/.*\(UCLIBC_FORMAT_FLAT_SHARED\).*/# \1 is not set/' ${WRKBUILD}/.config
+	$(SED) 's/.*\(UCLIBC_FORMAT_FDPIC_ELF\).*/# \1 is not set/' ${WRKBUILD}/.config
 endif
 ifeq ($(ADK_TARGET_BINFMT_FLAT_SEP_DATA),y)
 	$(SED) 's/.*\(UCLIBC_FORMAT_FLAT_SEP_DATA\).*/\1=y/' ${WRKBUILD}/.config
+	$(SED) 's/.*\(UCLIBC_FORMAT_FLAT\).*/# \1 is not set/' ${WRKBUILD}/.config
+	$(SED) 's/.*\(UCLIBC_FORMAT_FLAT_SHARED\).*/# \1 is not set/' ${WRKBUILD}/.config
+	$(SED) 's/.*\(UCLIBC_FORMAT_FDPIC_ELF\).*/# \1 is not set/' ${WRKBUILD}/.config
 endif
 ifeq ($(ADK_TARGET_BINFMT_FLAT_SHARED),y)
 	$(SED) 's/.*\(UCLIBC_FORMAT_FLAT_SHARED\).*/\1=y/' ${WRKBUILD}/.config
+	$(SED) 's/.*\(UCLIBC_FORMAT_FLAT\).*/# \1 is not set/' ${WRKBUILD}/.config
+	$(SED) 's/.*\(UCLIBC_FORMAT_FLAT_SEP_DATA\).*/# \1 is not set/' ${WRKBUILD}/.config
+	$(SED) 's/.*\(UCLIBC_FORMAT_FDPIC_ELF\).*/# \1 is not set/' ${WRKBUILD}/.config
 endif
 endif
 ifeq ($(ADK_TARGET_UCLINUX),y)

+ 26 - 1
toolchain/uclibc/Makefile

@@ -57,8 +57,33 @@ ifeq ($(ADK_TARGET_HARD_FLOAT),y)
 	$(SED) 's/.*\(UCLIBC_HAS_FPU\).*/\1=y/' ${WRKBUILD}/.config
 	$(SED) 's/.*\(UCLIBC_HAS_SOFT_FLOAT\).*/# \1 is not set/' ${WRKBUILD}/.config
 endif
-ifeq ($(ADK_TARGET_UCLINUX),y)
+ifeq ($(ADK_TARGET_BINFMT_FDPIC),y)
+	$(SED) 's/.*\(UCLIBC_FORMAT_FDPIC_ELF\).*/\1=y/' ${WRKBUILD}/.config
+	$(SED) 's/.*\(UCLIBC_FORMAT_FLAT\).*/# \1 is not set/' ${WRKBUILD}/.config
+	$(SED) 's/.*\(UCLIBC_FORMAT_FLAT_SEP_DATA\).*/# \1 is not set/' ${WRKBUILD}/.config
+	$(SED) 's/.*\(UCLIBC_FORMAT_FLAT_SHARED\).*/# \1 is not set/' ${WRKBUILD}/.config
+endif
+ifeq ($(ADK_TARGET_BINFMT_FLAT),y)
+ifeq ($(ADK_TARGET_BINFMT_FLAT_ONE),y)
+	$(SED) 's/.*\(UCLIBC_FORMAT_FLAT\).*/\1=y/' ${WRKBUILD}/.config
+	$(SED) 's/.*\(UCLIBC_FORMAT_FLAT_SEP_DATA\).*/# \1 is not set/' ${WRKBUILD}/.config
+	$(SED) 's/.*\(UCLIBC_FORMAT_FLAT_SHARED\).*/# \1 is not set/' ${WRKBUILD}/.config
+	$(SED) 's/.*\(UCLIBC_FORMAT_FDPIC_ELF\).*/# \1 is not set/' ${WRKBUILD}/.config
+endif
+ifeq ($(ADK_TARGET_BINFMT_FLAT_SEP_DATA),y)
 	$(SED) 's/.*\(UCLIBC_FORMAT_FLAT_SEP_DATA\).*/\1=y/' ${WRKBUILD}/.config
+	$(SED) 's/.*\(UCLIBC_FORMAT_FLAT\).*/# \1 is not set/' ${WRKBUILD}/.config
+	$(SED) 's/.*\(UCLIBC_FORMAT_FLAT_SHARED\).*/# \1 is not set/' ${WRKBUILD}/.config
+	$(SED) 's/.*\(UCLIBC_FORMAT_FDPIC_ELF\).*/# \1 is not set/' ${WRKBUILD}/.config
+endif
+ifeq ($(ADK_TARGET_BINFMT_FLAT_SHARED),y)
+	$(SED) 's/.*\(UCLIBC_FORMAT_FLAT_SHARED\).*/\1=y/' ${WRKBUILD}/.config
+	$(SED) 's/.*\(UCLIBC_FORMAT_FLAT\).*/# \1 is not set/' ${WRKBUILD}/.config
+	$(SED) 's/.*\(UCLIBC_FORMAT_FLAT_SEP_DATA\).*/# \1 is not set/' ${WRKBUILD}/.config
+	$(SED) 's/.*\(UCLIBC_FORMAT_FDPIC_ELF\).*/# \1 is not set/' ${WRKBUILD}/.config
+endif
+endif
+ifeq ($(ADK_TARGET_UCLINUX),y)
 	$(SED) 's/.*\(ARCH_USE_MMU\).*/# \1 is not set/' ${WRKBUILD}/.config
 endif
 ifeq ($(ADK_TARGET_USE_STATIC_LIBS)$(ADK_TARGET_BINFMT_FLAT),)