diff --git a/arch/Config.in b/arch/Config.in index 2e7ac080ef..bd5f9ce470 100644 --- a/arch/Config.in +++ b/arch/Config.in @@ -12,6 +12,9 @@ config BR2_SOFT_FLOAT config BR2_USE_MMU bool +config BR2_ARCH_HAS_FDPIC_SUPPORT + bool + choice prompt "Target Architecture" default BR2_i386 @@ -430,6 +433,7 @@ endif choice prompt "Target Binary Format" default BR2_BINFMT_ELF if BR2_USE_MMU + default BR2_BINFMT_FDPIC if BR2_ARCH_HAS_FDPIC_SUPPORT default BR2_BINFMT_FLAT config BR2_BINFMT_ELF @@ -441,6 +445,16 @@ config BR2_BINFMT_ELF and executables used across different architectures and operating systems. +config BR2_BINFMT_FDPIC + bool "FDPIC" + depends on BR2_ARCH_HAS_FDPIC_SUPPORT + select BR2_BINFMT_SUPPORTS_SHARED + 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_USE_MMU diff --git a/package/uclibc/uclibc.mk b/package/uclibc/uclibc.mk index de834bac4f..600d72ce7b 100644 --- a/package/uclibc/uclibc.mk +++ b/package/uclibc/uclibc.mk @@ -57,6 +57,13 @@ UCLIBC_LOCALES = \ endif # noMMU binary formats +ifeq ($(BR2_BINFMT_FDPIC),y) +define UCLIBC_BINFMT_CONFIG + $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FLAT,$(@D)/.config) + $(call KCONFIG_DISABLE_OPT,UCLIBC_FORMAT_FLAT_SEP_DATA,$(@D)/.config) + $(call KCONFIG_ENABLE_OPT,UCLIBC_FORMAT_FDPIC_ELF,$(@D)/.config) +endef +endif ifeq ($(BR2_BINFMT_FLAT),y) define UCLIBC_BINFMT_CONFIG $(call KCONFIG_ENABLE_OPT,UCLIBC_FORMAT_FLAT)