summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.in2
-rw-r--r--Makerules4
-rw-r--r--extra/Configs/Config.in24
-rw-r--r--extra/Configs/Config.in.arch47
-rw-r--r--libc/misc/internals/Makefile.in2
-rw-r--r--libc/misc/internals/__uClibc_main.c16
-rw-r--r--libc/sysdeps/linux/m68k/crt1.S4
-rw-r--r--libc/sysdeps/linux/m68k/m68k_pic.S6
8 files changed, 64 insertions, 41 deletions
diff --git a/Makefile.in b/Makefile.in
index 4d98c1f8f..f6d3d24f1 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -246,7 +246,7 @@ ifeq ($(DOPIC),y)
fi
endif
endif
-ifeq ($(HAVE_SHARED_FLAT),y)
+ifeq ($(UCLIBC_FORMAT_SHARED_FLAT),y)
for file in lib/lib*.gdb; do \
if test -f $$file; then \
$(INSTALL) -m 755 $$file $(PREFIX)$(DEVEL_PREFIX)lib; \
diff --git a/Makerules b/Makerules
index 44151d45e..b4df69bb6 100644
--- a/Makerules
+++ b/Makerules
@@ -11,7 +11,7 @@ libs: $(lib-so-y) $(lib-a-y)
$(lib-so-y): $(interp)
else
.LIBPATTERNS: "lib%.a"
-ifeq ($(HAVE_SHARED_FLAT),y)
+ifeq ($(UCLIBC_FORMAT_SHARED_FLAT),y)
libs: $(lib-gdb-y)
endif
libs: $(lib-a-y)
@@ -207,7 +207,7 @@ $(headers_dep):
CRT := crt1
-ifeq ($(HAVE_SHARED)$(HAVE_SHARED_FLAT),y)
+ifeq ($(HAVE_SHARED)$(UCLIBC_FORMAT_SHARED_FLAT),y)
CRTS=$(top_builddir)lib/$(CRT).o $(top_builddir)lib/S$(CRT).o
else
CRTS=$(top_builddir)lib/$(CRT).o
diff --git a/extra/Configs/Config.in b/extra/Configs/Config.in
index 9999b370e..b3d9250f0 100644
--- a/extra/Configs/Config.in
+++ b/extra/Configs/Config.in
@@ -196,30 +196,6 @@ config DOPIC
If you wish to build all of uClibc as PIC objects, then answer Y here.
If you are unsure, then you should answer N.
-config HAVE_SHARED_FLAT
- bool "Generate a flat-format shared library"
- default n
- depends on !ARCH_USE_MMU
- help
- Answer Y here if you are using uClinux and wish to build uClibc
- as a flat-format shared library.
-
-config SHARED_FLAT_ID
- int "Shared library id"
- default 1
- depends on HAVE_SHARED_FLAT
- help
- When using flat shared libraries, every library has a unique
- system-wide identifier. Identifier 0 is reserved for
- executables and true shared libraries have identifiers
- starting at 1. The maximum shared library identifier is
- determined by the kernel and is usually 3. Shared library
- N must be available on the target system as "/lib/libN.so".
-
- When a shared C library is used, it usually has identifier 1,
- but you can use this option to select a different identifier
- if you need to.
-
config HAVE_NO_SHARED
bool
default n
diff --git a/extra/Configs/Config.in.arch b/extra/Configs/Config.in.arch
index f5c31b276..b8e326723 100644
--- a/extra/Configs/Config.in.arch
+++ b/extra/Configs/Config.in.arch
@@ -3,6 +3,53 @@
# see extra/config/Kconfig-language.txt
#
+
+#
+# Binary format
+#
+choice
+ prompt "Target File Format"
+config UCLIBC_FORMAT_ELF
+ bool "ELF"
+ depends on ARCH_USE_MMU
+config UCLIBC_FORMAT_FDPIC_ELF
+ bool "FDPIC ELF"
+ depends on !ARCH_USE_MMU
+config UCLIBC_FORMAT_FLAT
+ bool "STATIC FLAT"
+ depends on !ARCH_USE_MMU
+config UCLIBC_FORMAT_FLAT_SEP_DATA
+ bool "STATIC FLAT (sep-data)"
+ depends on !ARCH_USE_MMU
+config UCLIBC_FORMAT_SHARED_FLAT
+ bool "SHARED FLAT"
+ depends on !ARCH_USE_MMU
+ help
+ Pick this one if you are using uClinux and wish to build
+ uClibc as a flat-format shared library.
+endchoice
+
+config UCLIBC_SHARED_FLAT_ID
+ int "Shared library ID"
+ default 1
+ depends on UCLIBC_FORMAT_SHARED_FLAT
+ help
+ When using flat shared libraries, every library has a unique
+ system-wide identifier. Identifier 0 is reserved for
+ executables and true shared libraries have identifiers
+ starting at 1. The maximum shared library identifier is
+ determined by the kernel and is usually 3. Shared library
+ N must be available on the target system as "/lib/libN.so".
+
+ When a shared C library is used, it usually has identifier 1,
+ but you can use this option to select a different identifier
+ if you need to.
+
+
+
+#
+# Endian Format
+#
config ARCH_ANY_ENDIAN
bool
config ARCH_BIG_ENDIAN
diff --git a/libc/misc/internals/Makefile.in b/libc/misc/internals/Makefile.in
index af97b39af..b9f970876 100644
--- a/libc/misc/internals/Makefile.in
+++ b/libc/misc/internals/Makefile.in
@@ -18,7 +18,7 @@ MISC_INTERNALS_OBJ := $(patsubst %.c,$(MISC_INTERNALS_OUT)/%.o,$(CSRC))
libc-y += $(MISC_INTERNALS_OBJ)
libc-shared-y += $(MISC_INTERNALS_OUT)/__uClibc_main.oS
libc-static-y += $(MISC_INTERNALS_OUT)/__uClibc_main.o
-libc-static-$(HAVE_SHARED_FLAT) += \
+libc-static-$(UCLIBC_FORMAT_SHARED_FLAT) += \
$(MISC_INTERNALS_OUT)/shared_flat_initfini.o \
$(MISC_INTERNALS_OUT)/shared_flat_add_library.o
libc-nomulti-y += $(MISC_INTERNALS_OUT)/__uClibc_main.o
diff --git a/libc/misc/internals/__uClibc_main.c b/libc/misc/internals/__uClibc_main.c
index a2fbf6c89..50f3c5cae 100644
--- a/libc/misc/internals/__uClibc_main.c
+++ b/libc/misc/internals/__uClibc_main.c
@@ -88,9 +88,9 @@ extern void weak_function _locale_init(void) attribute_hidden;
extern void weak_function __pthread_initialize_minimal(void);
#endif
-/* If __HAVE_SHARED_FLAT__, all array initialisation and finalisation
+/* If __UCLIBC_FORMAT_SHARED_FLAT__, all array initialisation and finalisation
* is handled by the routines passed to __uClibc_main(). */
-#if defined (__UCLIBC_CTOR_DTOR__) && !defined (__HAVE_SHARED_FLAT__)
+#if defined (__UCLIBC_CTOR_DTOR__) && !defined (__UCLIBC_FORMAT_SHARED_FLAT__)
extern void _dl_app_init_array(void);
extern void _dl_app_fini_array(void);
# ifndef SHARED
@@ -249,11 +249,11 @@ libc_hidden_proto(__uClibc_fini)
void __uClibc_fini(void)
{
#ifdef __UCLIBC_CTOR_DTOR__
- /* If __HAVE_SHARED_FLAT__, all array finalisation is handled
+ /* If __UCLIBC_FORMAT_SHARED_FLAT__, all array finalisation is handled
* by __app_fini. */
# ifdef SHARED
_dl_app_fini_array();
-# elif !defined (__HAVE_SHARED_FLAT__)
+# elif !defined (__UCLIBC_FORMAT_SHARED_FLAT__)
size_t i = __fini_array_end - __fini_array_start;
while (i-- > 0)
(*__fini_array_start [i]) ();
@@ -352,9 +352,9 @@ void __uClibc_main(int (*main)(int, char **, char **), int argc,
/* Arrange for the application's dtors to run before we exit. */
__app_fini = app_fini;
- /* If __HAVE_SHARED_FLAT__, all array initialisation is handled
+ /* If __UCLIBC_FORMAT_SHARED_FLAT__, all array initialisation is handled
* by __app_init. */
-# if !defined (SHARED) && !defined (__HAVE_SHARED_FLAT__)
+# if !defined (SHARED) && !defined (__UCLIBC_FORMAT_SHARED_FLAT__)
/* For dynamically linked executables the preinit array is executed by
the dynamic linker (before initializing any shared object).
For static executables, preinit happens rights before init. */
@@ -369,11 +369,11 @@ void __uClibc_main(int (*main)(int, char **, char **), int argc,
if (app_init!=NULL) {
app_init();
}
- /* If __HAVE_SHARED_FLAT__, all array initialisation is handled
+ /* If __UCLIBC_FORMAT_SHARED_FLAT__, all array initialisation is handled
* by __app_init. */
# ifdef SHARED
_dl_app_init_array();
-# elif !defined (__HAVE_SHARED_FLAT__)
+# elif !defined (__UCLIBC_FORMAT_SHARED_FLAT__)
{
const size_t size = __init_array_end - __init_array_start;
size_t i;
diff --git a/libc/sysdeps/linux/m68k/crt1.S b/libc/sysdeps/linux/m68k/crt1.S
index a5f973fe2..a9cf00193 100644
--- a/libc/sysdeps/linux/m68k/crt1.S
+++ b/libc/sysdeps/linux/m68k/crt1.S
@@ -85,7 +85,7 @@ _start:
.equ have_current_got, 1
#endif
-#ifdef __HAVE_SHARED_FLAT__
+#ifdef __UCLIBC_FORMAT_SHARED_FLAT__
CALL __shared_flat_add_library,%a1
#endif
@@ -113,7 +113,7 @@ _start:
/* Push the address of our own entry points to `.fini' and
`.init'. */
-#if defined __HAVE_SHARED_FLAT__
+#if defined __UCLIBC_FORMAT_SHARED_FLAT__
PEA_TEXT __shared_flat_fini,%a1
PEA_TEXT __shared_flat_init,%a1
#else
diff --git a/libc/sysdeps/linux/m68k/m68k_pic.S b/libc/sysdeps/linux/m68k/m68k_pic.S
index e01e33b83..d41509ec3 100644
--- a/libc/sysdeps/linux/m68k/m68k_pic.S
+++ b/libc/sysdeps/linux/m68k/m68k_pic.S
@@ -16,7 +16,7 @@
* a text address. <tmp> is available as a temporary address
* register. */
.macro DO_TEXT op,target,tmp
-#if defined __HAVE_SHARED_FLAT__
+#if defined __UCLIBC_FORMAT_SHARED_FLAT__
.ifne have_current_got
move.l \target@GOT(%a5),\tmp
.else
@@ -50,7 +50,7 @@
/* Initialize the global pointer, if functions need to do that. */
.macro INIT_GP
-#if defined __HAVE_SHARED_FLAT__
+#if defined __UCLIBC_FORMAT_SHARED_FLAT__
move.l %a5,-(%sp)
move.l _current_shared_library_a5_offset_(%a5),%a5
#endif
@@ -58,7 +58,7 @@
/* Undo the effects of INIT_GP. */
.macro FINI_GP
-#if defined __HAVE_SHARED_FLAT__
+#if defined __UCLIBC_FORMAT_SHARED_FLAT__
move.l (%sp)+,%a5
#endif
.endm