diff options
Diffstat (limited to 'extra/Configs/Config.in')
| -rw-r--r-- | extra/Configs/Config.in | 1082 |
1 files changed, 760 insertions, 322 deletions
diff --git a/extra/Configs/Config.in b/extra/Configs/Config.in index 4aca400b5..3afc2912d 100644 --- a/extra/Configs/Config.in +++ b/extra/Configs/Config.in @@ -3,16 +3,50 @@ # see extra/config/Kconfig-language.txt # -mainmenu "uClibc C Library Configuration" +mainmenu "uClibc-ng $VERSION C Library Configuration" + +config DESIRED_TARGET_ARCH + string + option env="ARCH" + +config VERSION + string + option env="VERSION" choice prompt "Target Architecture" - help - Stuff + default TARGET_alpha if DESIRED_TARGET_ARCH = "alpha" + default TARGET_arc if DESIRED_TARGET_ARCH = "arc" + default TARGET_arm if DESIRED_TARGET_ARCH = "arm" + default TARGET_avr32 if DESIRED_TARGET_ARCH = "avr32" + default TARGET_bfin if DESIRED_TARGET_ARCH = "bfin" + default TARGET_cris if DESIRED_TARGET_ARCH = "cris" + default TARGET_frv if DESIRED_TARGET_ARCH = "frv" + default TARGET_h8300 if DESIRED_TARGET_ARCH = "h8300" + default TARGET_hppa if DESIRED_TARGET_ARCH = "hppa" + default TARGET_i386 if DESIRED_TARGET_ARCH = "i386" + default TARGET_ia64 if DESIRED_TARGET_ARCH = "ia64" + default TARGET_lm32 if DESIRED_TARGET_ARCH = "lm32" + default TARGET_m68k if DESIRED_TARGET_ARCH = "m68k" + default TARGET_metag if DESIRED_TARGET_ARCH = "metag" + default TARGET_microblaze if DESIRED_TARGET_ARCH = "microblaze" + default TARGET_mips if DESIRED_TARGET_ARCH = "mips" + default TARGET_nios2 if DESIRED_TARGET_ARCH = "nios2" + default TARGET_or1k if DESIRED_TARGET_ARCH = "or1k" + default TARGET_powerpc if DESIRED_TARGET_ARCH = "powerpc" + default TARGET_sh if DESIRED_TARGET_ARCH = "sh" + default TARGET_sparc if DESIRED_TARGET_ARCH = "sparc" + default TARGET_x86_64 if DESIRED_TARGET_ARCH = "x86_64" + default TARGET_xtensa if DESIRED_TARGET_ARCH = "xtensa" + help + The architecture of your target. config TARGET_alpha bool "alpha" +config TARGET_arc + bool "arc" + config TARGET_arm bool "arm" @@ -22,17 +56,19 @@ config TARGET_avr32 config TARGET_bfin bool "bfin" +# someone could sync this tree: +# http://linux-c6x.org/git/?p=uClibc.git;a=summary +config TARGET_c6x + bool "c6x" + config TARGET_cris bool "cris" -config TARGET_e1 - bool "e1 (BROKEN)" - -config TARGET_frv - bool "frv (BROKEN)" +#config TARGET_frv +# bool "frv (BROKEN)" config TARGET_h8300 - bool "h8300 (BROKEN)" + bool "h8300" config TARGET_hppa bool "hppa" @@ -40,45 +76,39 @@ config TARGET_hppa config TARGET_i386 bool "i386" -config TARGET_i960 - bool "i960 (BROKEN)" - config TARGET_ia64 bool "ia64" +config TARGET_lm32 + bool "lm32" + config TARGET_m68k bool "m68k" +config TARGET_metag + bool "metag" + config TARGET_microblaze - bool "microblaze (BROKEN)" + bool "microblaze" config TARGET_mips bool "mips" -config TARGET_nios - bool "nios" - config TARGET_nios2 bool "nios2" +config TARGET_or1k + bool "or1k" + config TARGET_powerpc bool "powerpc" config TARGET_sh bool "superh" -config TARGET_sh64 - bool "sh64" - config TARGET_sparc bool "sparc" -config TARGET_v850 - bool "v850 (BROKEN)" - -config TARGET_vax - bool "vax" - config TARGET_x86_64 bool "x86_64" @@ -110,10 +140,6 @@ if TARGET_cris source "extra/Configs/Config.cris" endif -if TARGET_e1 -source "extra/Configs/Config.e1" -endif - if TARGET_frv source "extra/Configs/Config.frv" endif @@ -130,20 +156,20 @@ if TARGET_i386 source "extra/Configs/Config.i386" endif -if TARGET_i960 -source "extra/Configs/Config.i960" -endif - if TARGET_ia64 source "extra/Configs/Config.ia64" endif +if TARGET_lm32 +source "extra/Configs/Config.lm32" +endif + if TARGET_m68k source "extra/Configs/Config.m68k" endif -if TARGET_nios -source "extra/Configs/Config.nios" +if TARGET_metag +source "extra/Configs/Config.metag" endif if TARGET_nios2 @@ -158,6 +184,10 @@ if TARGET_mips source "extra/Configs/Config.mips" endif +if TARGET_or1k +source "extra/Configs/Config.or1k" +endif + if TARGET_powerpc source "extra/Configs/Config.powerpc" endif @@ -166,22 +196,10 @@ if TARGET_sh source "extra/Configs/Config.sh" endif -if TARGET_sh64 -source "extra/Configs/Config.sh64" -endif - if TARGET_sparc source "extra/Configs/Config.sparc" endif -if TARGET_v850 -source "extra/Configs/Config.v850" -endif - -if TARGET_vax -source "extra/Configs/Config.vax" -endif - if TARGET_x86_64 source "extra/Configs/Config.x86_64" endif @@ -190,11 +208,25 @@ if TARGET_xtensa source "extra/Configs/Config.xtensa" endif +if TARGET_c6x +source "extra/Configs/Config.c6x" +endif + +if TARGET_arc +source "extra/Configs/Config.arc" +endif + config TARGET_SUBARCH string default "e500" if CONFIG_E500 default "classic" if CONFIG_CLASSIC default "sh4" if CONFIG_SH4 + default "sh4" if CONFIG_SH4A + default "" if CONFIG_386 + default "i486" if CONFIG_486 + default "i586" if CONFIG_586 + default "i686" if CONFIG_686 + default "arcv2" if CONFIG_ARC_CPU_HS default "" source "extra/Configs/Config.in.arch" @@ -205,7 +237,6 @@ menu "General Library Settings" config HAVE_NO_PIC bool - default n config DOPIC bool "Generate only Position Independent Code (PIC)" @@ -217,15 +248,16 @@ config DOPIC config ARCH_HAS_NO_SHARED bool - default n config ARCH_HAS_NO_LDSO bool select ARCH_HAS_NO_SHARED - default n + +config ARCH_HAS_UCONTEXT + bool config HAVE_SHARED - bool "Enable support for shared libraries" + bool "Enable shared libraries" depends on !ARCH_HAS_NO_SHARED default y help @@ -236,28 +268,29 @@ config HAVE_SHARED config FORCE_SHAREABLE_TEXT_SEGMENTS bool "Only load shared libraries which can share their text segment" depends on HAVE_SHARED - default n + select DOPIC help If you answer Y here, the uClibc native shared library loader will - only load shared libraries, which do not need to modify any non-writable - segments. These libraries haven't set the DT_TEXTREL tag in the dynamic - section (==> objdump). All your libraries must be compiled with - -fPIC or -fpic, and all assembler function must be written as position - independent code (PIC). + only load shared libraries, which do not need to modify any + non-writable segments. These libraries haven't set the DT_TEXTREL + tag in the dynamic section (==> objdump). + All your libraries must be compiled with -fPIC or -fpic, and all + assembler function must be written as position independent code (PIC). Enabling this option will make uClibc's shared library loader a - little bit smaller and guarantee that no memory will be wasted by badly - coded shared libraries. + little bit smaller and guarantee that no memory will be wasted by + badly coded shared libraries. config LDSO_LDD_SUPPORT bool "Native 'ldd' support" depends on HAVE_SHARED default y help - Enable this to enable all the code needed to support traditional ldd, + Enable all the code needed to support traditional ldd, which executes the shared library loader to resolve all dependencies and then provide a list of shared libraries that are required for an - application to function. Disabling this option will makes uClibc's - shared library loader a little bit smaller. Most people will answer Y. + application to function. Disabling this option will make uClibc's + shared library loader a little bit smaller. + Most people will answer Y. config LDSO_CACHE_SUPPORT bool "Enable library loader cache (ld.so.conf)" @@ -269,10 +302,21 @@ config LDSO_CACHE_SUPPORT After updating this file, it is necessary to run 'ldconfig' to update the /etc/ld.so.cache shared library loader cache file. +config LDSO_PRELOAD_ENV_SUPPORT + bool "Enable library loader LD_PRELOAD environment" + depends on HAVE_SHARED + default y + help + Enable this to make use of LD_PRELOAD environment variable. + A whitespace-separated list of additional, user-specified, ELF shared + libraries to be loaded before all others. This can be used to + selectively override functions in other shared libraries. For + set-user-ID/set-group-ID ELF binaries, only libraries in the standard + search directories that are also set-user-ID will be loaded. + config LDSO_PRELOAD_FILE_SUPPORT bool "Enable library loader preload file (ld.so.preload)" depends on HAVE_SHARED - default n help Enable this to make use of /etc/ld.so.preload. This file contains a whitespace separated list of shared libraries to be loaded before @@ -295,6 +339,32 @@ config LDSO_BASE_FILENAME WARNING: Changing the default prefix could cause problems with binutils' ld ! +config LDSO_STANDALONE_SUPPORT + bool "Dynamic linker stand-alone mode support" + depends on HAVE_SHARED + help + The dynamic linker can be run either indirectly through running some + dynamically linked program or library (in which case no command line + options to the dynamic linker can be passed and, in the ELF case, the + dynamic linker which is stored in the .interp section of the program + is executed) or directly by running: + + /lib/ld-uClibc.so.* [OPTIONS] [PROGRAM [ARGUMENTS]] + + Stand-alone execution is a prerequisite for adding prelink + capabilities to uClibc dynamic linker, as well useful for testing an + updated version of the dynamic linker without breaking the system. + +config LDSO_PRELINK_SUPPORT + bool "Dynamic linker prelink support" + depends on HAVE_SHARED + select LDSO_STANDALONE_SUPPORT + help + The dynamic linker can be used in stand-alone mode by the prelink tool + for prelinking ELF shared libraries and binaries to speed up startup + time. It also is able to load and handle prelinked libraries and + binaries at runtime. + config UCLIBC_STATIC_LDCONFIG bool "Link ldconfig statically" depends on HAVE_SHARED @@ -303,14 +373,14 @@ config UCLIBC_STATIC_LDCONFIG Enable this option to statically link the ldconfig binary. Making ldconfig static can be beneficial if you have a library - problem and need to use ldconfig to recover. Sometimes, it is + problem and need to use ldconfig to recover. Sometimes it is preferable to instead keep the size of the system down, in which case you should disable this option. config LDSO_RUNPATH bool "Enable ELF RUNPATH tag support" depends on HAVE_SHARED - default y + default y if LDSO_CACHE_SUPPORT help ELF's may have dynamic RPATH/RUNPATH tags. These tags list paths which extend the library search paths. They are really only useful @@ -320,8 +390,60 @@ config LDSO_RUNPATH Usage of RUNPATH tags is not too common, so disabling this feature should be safe for most people. +config LDSO_RUNPATH_OF_EXECUTABLE + bool "Use executables RUNPATH/RPATH when searching for libraries." + depends on LDSO_RUNPATH + default n + help + Use the executables RUNPATH/RPATH to find to find libraries even + though this behavour is not standard. Setting this option causes + the uclibc dynamic linker behavour to match the glibc dynamic linker. + +config LDSO_SAFE_RUNPATH + bool "Allow only RUNPATH beginning with /" + depends on LDSO_RUNPATH + default y + help + Allow only absolute path in RPATH/RUNPATH. + +config LDSO_SEARCH_INTERP_PATH + bool "Add ldso path to lib search path" + depends on HAVE_SHARED + default y + help + The ldso is told where it is being executed from and can use that + path to find related core libraries. This is useful by default, + but can be annoying in a mixed development environment. + + i.e. if the ldso is run from /foo/boo/ldso.so, it will start its + library search with /foo/boo/ + + If unsure, simply say Y here. + +config LDSO_LD_LIBRARY_PATH + bool "Add LD_LIBRARY_PATH to lib search path" + depends on HAVE_SHARED + default y + help + On hardened system it could be useful to disable the use of + LD_LIBRARY_PATH environment variable (a colon-separated list of + directories in which to search for ELF libraries at execution-time). + + If unsure, simply say Y here. + +config LDSO_NO_CLEANUP + bool "Disable automatic unloading of dynamically loaded shared objects" + depends on HAVE_SHARED + help + If you need complete allocation traces when debugging memory leaks + using Valgrind in a process that dynamically loads shared objects, + then answer Y here. Unlike glibc, uClibc unloads all dynamically + loaded shared objects when a process exits, which prevents Valgrind + from correctly resolving the symbols from the unloaded shared objects. + Unless you know you need this, you should answer N. + config UCLIBC_CTOR_DTOR - bool "Support global constructors and destructors" + bool default y help If you wish to build uClibc with support for global constructor @@ -340,39 +462,112 @@ config UCLIBC_CTOR_DTOR config LDSO_GNU_HASH_SUPPORT bool "Enable GNU hash style support" depends on HAVE_SHARED - default n help Newest binutils support a new hash style named GNU-hash. The dynamic linker will use the new GNU-hash section (.gnu.hash) for symbol lookup if present into the ELF binaries, otherwise it will use the old SysV - hash style (.hash). This ensures that it is completely backward compatible. + hash style (.hash). This ensures that it is completely backward + compatible. Further, being the hash table implementation self-contained into each executable and shared libraries, objects with mixed hash style can peacefully coexist in the same process. If you want to use this new feature, answer Y -config HAS_NO_THREADS - bool - default n - -config UCLIBC_HAS_THREADS - bool "POSIX Threading support" - depends on !HAS_NO_THREADS - default y - # linuxthreads and linuxthreads.old need nanosleep() - select UCLIBC_HAS_REALTIME +choice + prompt "Thread support" + #default UCLIBC_HAS_THREADS_NATIVE if (TARGET_alpha || TARGET_arm || TARGET_i386 || TARGET_mips || TARGET_powerpc || TARGET_sh || TARGET_sh64) + default HAS_NO_THREADS help If you want to compile uClibc with pthread support, then answer Y. This will increase the size of uClibc by adding a bunch of locking to critical data structures, and adding extra code to ensure that functions are properly reentrant. - If your applications require pthreads, answer Y. +config HAS_NO_THREADS + bool "none" + help + Disable thread support. + +config LINUXTHREADS_OLD + bool "older (stable) version of linuxthreads" + # linuxthreads and linuxthreads.old need nanosleep() + select UCLIBC_HAS_REALTIME + depends on !TARGET_arc && \ + !TARGET_arm && \ + !TARGET_i386 && \ + !TARGET_metag && \ + !TARGET_mips && \ + !TARGET_powerpc && \ + !TARGET_sparc && \ + !TARGET_x86_64 && \ + !TARGET_xtensa || \ + !ARCH_USE_MMU + help + There are two versions of linuxthreads. The older (stable) version + has been in uClibc for quite a long time but hasn't seen too many + updates other than bugfixes. + + +config LINUXTHREADS_NEW + bool "slightly newer version of linuxthreads" + depends on ARCH_HAS_DEPRECATED_SYSCALLS + depends on !TARGET_arc && \ + !TARGET_arm && \ + !TARGET_i386 && \ + !TARGET_metag && \ + !TARGET_mips && \ + !TARGET_powerpc && \ + !TARGET_sh && \ + !TARGET_sparc && \ + !TARGET_x86_64 && \ + !TARGET_xtensa || \ + !ARCH_USE_MMU + help + The new version has not been tested much, and lacks ports for arches + which glibc does not support (like bfin/frv/etc...), but is based on + the latest code from glibc, so it may be the only choice for the + newer ports (like alpha/amd64/64bit arches and hppa). + +config UCLIBC_HAS_THREADS_NATIVE + bool "Native POSIX Threading (NPTL)" + select UCLIBC_HAS_TLS + select UCLIBC_HAS_STDIO_FUTEXES + select UCLIBC_HAS_REALTIME + # i386 has no lowlevellock support (yet) as opposed to i486 onward + depends on !CONFIG_386 && \ + !TARGET_alpha && \ + !TARGET_avr32 && \ + !TARGET_bfin && \ + !TARGET_c6x && \ + !TARGET_cris && \ + !TARGET_h8300 && \ + !TARGET_hppa && \ + !TARGET_ia64 && \ + !TARGET_m68k && \ + !TARGET_microblaze && \ + !TARGET_nios2 && \ + !TARGET_or1k && \ + ARCH_USE_MMU + help + If you want to compile uClibc with NPTL support, then answer Y. + +endchoice + +config UCLIBC_HAS_THREADS + def_bool y if !HAS_NO_THREADS + +config UCLIBC_HAS_TLS + bool "Thread-Local Storage" + depends on UCLIBC_HAS_THREADS_NATIVE + help + If you want to enable TLS support then answer Y. + This is fast an efficient way to store per-thread local data + which is not on stack. It needs __thread support enabled in + gcc. config PTHREADS_DEBUG_SUPPORT bool "Build pthreads debugging support" - default n depends on UCLIBC_HAS_THREADS help Say Y here if you wish to be able to debug applications that use @@ -387,19 +582,6 @@ config PTHREADS_DEBUG_SUPPORT If you are doing development and want to debug applications using uClibc's pthread library, answer Y. Otherwise, answer N. -config LINUXTHREADS_OLD - bool "Use the older (stable) version of linuxthreads" - default y - depends on UCLIBC_HAS_THREADS - help - There are two versions of linuxthreads. The older (stable) version - has been in uClibc for quite a long time but hasn't seen too many - updates other than bugfixes. - - The new version has not been tested much, and lacks ports for arches - which glibc does not support (like bfin/frv/etc...), but is based on - the latest code from glibc, so it may be the only choice for the - newer ports (like alpha/amd64/64bit arches and hppa). config UCLIBC_HAS_SYSLOG bool "Syslog support" @@ -423,20 +605,34 @@ choice prompt "Malloc Implementation" default MALLOC if ! ARCH_USE_MMU default MALLOC_STANDARD if ARCH_USE_MMU + +config MALLOC + bool "malloc" help - "malloc" use mmap for all allocations and so works very well on MMU-less - systems that do not support the brk() system call. It is pretty smart - about reusing already allocated memory, and minimizing memory wastage. + "malloc" use mmap for all allocations and so works very well on + MMU-less systems that do not support the brk() system call. It is + pretty smart about reusing already allocated memory, and minimizing + memory wastage. This is the default for uClinux MMU-less systems. - "malloc-simple" was written from scratch for uClibc, and is the - simplest possible (and therefore smallest) malloc implementation. - This uses only the mmap() system call to allocation memory, and does - not use the brk() system call at all, making it a fine choice for - MMU-less systems with very limited memory. It is rather dumb, and - certainly isn't the fastest. But it is 100% standards compliant, - thread safe, and very small. +config MALLOC_SIMPLE + bool "malloc-simple" + help + "malloc-simple" is trivially simple and slow as molasses. It + was written from scratch for uClibc, and is the simplest possible + (and therefore smallest) malloc implementation. + + This uses only the mmap() system call to allocate and free memory, + and does not use the brk() system call at all, making it a fine + choice for MMU-less systems with very limited memory. It's 100% + standards compliant, thread safe, very small, and releases freed + memory back to the OS immediately rather than keeping it in the + process's heap for reallocation. It is also VERY SLOW. +config MALLOC_STANDARD + bool "malloc-standard" + depends on ARCH_USE_MMU + help "malloc-standard" is derived from the public domain dlmalloc implementation by Doug Lea. It is quite fast, and is pretty smart about reusing already allocated memory, and minimizing memory @@ -446,21 +642,10 @@ choice If unsure, answer "malloc-standard". -config MALLOC - bool "malloc" - -config MALLOC_SIMPLE - bool "malloc-simple" - -config MALLOC_STANDARD - bool "malloc-standard" - depends on ARCH_USE_MMU - endchoice config MALLOC_GLIBC_COMPAT bool "Malloc returns live pointer for malloc(0)" - default n help The behavior of malloc(0) is listed as implementation-defined by SuSv3. Glibc returns a valid pointer to something, while uClibc @@ -476,6 +661,15 @@ config MALLOC_GLIBC_COMPAT does not detect glibc style returning-a-valid-pointer-for-malloc(0) behavior). Most people can safely answer N. +config UCLIBC_HAS_OBSTACK + bool "Obstack Support (gnu extension)" + help + When this option is enabled, uClibc will provide support for obstacks. + An obstack is a structure in which memory can be dynamically allocated + as a 'stack of objects'. Many programs need this GNU extention and + you should say Y if you are using any. Otherwise, say N to save some + space. + config UCLIBC_DYNAMIC_ATEXIT bool "Dynamic atexit() Support" default y @@ -493,45 +687,116 @@ config UCLIBC_DYNAMIC_ATEXIT config COMPAT_ATEXIT bool "Old (visible) atexit Support" - default n help - Enable this option if you want to update from 0.9.28 to svn/0.9.29, else - you will be missing atexit() until you rebuild all apps. + Enable this option if you want to update from 0.9.28 to git/0.9.29, + else you will be missing atexit() until you rebuild all apps. + +config UCLIBC_HAS_UTMPX + bool "utmpx based support for tracking login/logouts to/from the system" + help + Answer y to enable support for accessing user accounting database. + It can be used to track all login/logout to the system. + +config UCLIBC_HAS_UTMP + bool "utmp support (XPG2 compat, SVr4 compat)" + depends on UCLIBC_HAS_UTMPX + help + Answer y to enable legacy SVID support for accessing + user accounting database: + getutent(), getutid(), getutline(), pututline(), + setutent(), endutent(), utmpname() in utmp.h + It can be used to track all login/logout to the system. + + If unsure, answer N and use corresponding POSIX functions + from utmpx.h + +config UCLIBC_SUSV2_LEGACY + bool "Enable SuSv2 LEGACY functions" + help + Enable this option if you want to have SuSv2 LEGACY functions + Currently applies to: + + valloc + + WARNING! ABI incompatibility. config UCLIBC_SUSV3_LEGACY bool "Enable SuSv3 LEGACY functions" - default n + #vfork, + # h_errno + # gethostbyaddr + # gethostbyname help Enable this option if you want to have SuSv3 LEGACY functions in the library, else they are replaced by SuSv3 proposed macros. - Currently applies to bcopy/bzero/bcmp/index/rindex/ftime. + Currently applies to: + + bcmp, bcopy, bzero, index, rindex, ftime, + bsd_signal, (ecvt), (fcvt), gcvt, (getcontext), + (getwd), (makecontext), + mktemp, (pthread_attr_getstackaddr), (pthread_attr_setstackaddr), + scalb, (setcontext), (swapcontext), ualarm, usleep, + wcswcs. + WARNING! ABI incompatibility. +config UCLIBC_HAS_CONTEXT_FUNCS + bool "Use obsolescent context control functions" + depends on UCLIBC_SUSV3_LEGACY && ARCH_HAS_UCONTEXT + help + Add into library the SuSv3 obsolescent functions used for context + control. The setcontext family allows the implementation in C of + advanced control flow patterns such as iterators, fibers, and + coroutines. They may be viewed as an advanced version of + setjmp/longjmp; whereas the latter allows only a single non-local jump + up the stack, setcontext allows the creation of multiple cooperative + threads of control, each with its own stack. + These functions are: setcontext, getcontext, makecontext, swapcontext. + config UCLIBC_SUSV3_LEGACY_MACROS bool "Enable SuSv3 LEGACY macros" - default n help Enable this option if you want to have SuSv3 LEGACY macros. Currently applies to bcopy/bzero/bcmp/index/rindex et al. WARNING! ABI incompatibility. +config UCLIBC_SUSV4_LEGACY + bool "Enable SuSv4 LEGACY or obsolescent functions" + help + Enable this option if you want to have SuSv4 LEGACY functions + and macros in the library. + Currently applies to: + + - XSI functions: + _longjmp, _setjmp, _tolower, _toupper, ftw, getitimer, + gettimeofday, isascii, pthread_getconcurrency, + pthread_setconcurrency, setitimer, setpgrp, sighold, + sigignore, sigpause, sigrelse, sigset, siginterrupt, + tempnam, toascii, ulimit. + + - Base functions: + asctime, asctime_r, ctime, ctime_r, gets, rand_r, + tmpnam, utime. + + WARNING! ABI incompatibility. + +config UCLIBC_STRICT_HEADERS + bool "Hide structures and constants for unsupported features" + help + Hide structures and constants in headers that should not be used, + because the respective feature is disabled. + + WARNING! enabling this option requires to patch many faulty apps, + since they make (wrongly) use of these structures/constants, + although the feature was disabled. + config UCLIBC_HAS_STUBS bool "Provide stubs for unavailable functionality" - default n help With this option uClibc provides non-functional stubs for functions which are impossible to implement on the target architecture. Otherwise, such functions are simply omitted. - As of 2008-07, this option makes uClibc provide fork() stub - on NOMMU targets. It always sets errno to ENOSYS and returns -1. - - This may be useful if you port a lot of software and cannot - audit all of it and replace or disable fork() usage. - With this option, a program which uses fork() will build - successfully. Of course, it may be useless if fork() - is essential for its operation. - config UCLIBC_HAS_SHADOW bool "Shadow Password Support" default y @@ -541,7 +806,6 @@ config UCLIBC_HAS_SHADOW config UCLIBC_HAS_PROGRAM_INVOCATION_NAME bool "Support for program_invocation_name" - default n help Support for the GNU-specific program_invocation_name and program_invocation_short_name strings. Some GNU packages @@ -556,7 +820,6 @@ config UCLIBC_HAS_PROGRAM_INVOCATION_NAME config UCLIBC_HAS___PROGNAME bool "Support for __progname" default y - depends on UCLIBC_HAS_PROGRAM_INVOCATION_NAME help Some packages (like openssh) like to peek into internal libc symbols to make their output a bit more user friendly. @@ -602,7 +865,6 @@ config UNIX98PTY_ONLY if UNIX98PTY_ONLY config UCLIBC_HAS_GETPT bool "Support getpt() (glibc-compat)" - default n depends on UCLIBC_HAS_PTY help Some packages may need getpt(). @@ -619,6 +881,30 @@ config UCLIBC_HAS_GETPT def_bool y endif +config UCLIBC_HAS_LIBUTIL + bool "Provide libutil library and functions" + depends on UCLIBC_HAS_PTY + help + Provide a libutil library. + This non-standard conforming library provides the following + utility functions: + + forkpty(): combines openpty(), fork(2), and login_tty() to + create a new process operating in a pseudo-terminal. + login(): write utmp and wtmp entries + login_tty(): prepares for a login on the tty fd by creating a + new session, making fd the controlling terminal for + the calling process, setting fd to be the standard + input, output, and error streams of the current + process, and closing fd. + logout(): write utmp and wtmp entries + logwtmp(): constructs a utmp structure and calls updwtmp() to + append the structure to the utmp file. + openpty(): finds an available pseudo-terminal and returns + file descriptors for the master and slave + + This library adds about 3k-4k to your system. + config UCLIBC_HAS_TM_EXTENSIONS bool "Support 'struct tm' timezone extension fields" default y @@ -658,7 +944,7 @@ config UCLIBC_HAS_TZ_FILE file consists of a single line (newline required) of text describing the timezone in the format specified for the TZ environment variable. - Simply doing 'echo CST6CDT > /etc/TZ' is enough to create a valid file. + Doing 'echo CST6CDT > /etc/TZ' is enough to create a valid file. See http://www.opengroup.org/onlinepubs/007904975/basedefs/xbd_chap08.html for details on valid settings of 'TZ'. @@ -671,10 +957,10 @@ config UCLIBC_HAS_TZ_FILE_READ_MANY default y help Answer Y to enable repeated reading of the '/etc/TZ' file even after - a valid value has been read. This incurs the overhead of an open/read/close - for each tzset() call (explicit or implied). However, setting this - will allows applications to update their timezone information if the contents - of the file change. + a valid value has been read. This incurs the overhead of an + open/read/close for each tzset() call (explicit or implied). However, + setting this will allow applications to update their timezone + information if the contents of the file change. Most people will answer Y. @@ -687,6 +973,17 @@ config UCLIBC_TZ_FILE_PATH Most people will use the default of '/etc/TZ'. +config UCLIBC_FALLBACK_TO_ETC_LOCALTIME + bool "Use /etc/localtime as a fallback" + depends on UCLIBC_HAS_TZ_FILE + default y + help + Answer Y to try to use /etc/localtime file. + On glibc systems this file (if it is in TZif2 format) + contains timezone string at the end. + + Most people will answer Y. + endmenu menu "Advanced Library Settings" @@ -713,22 +1010,41 @@ config UCLIBC_GRP_BUFFER_SIZE comment "Support various families of functions" -config UCLIBC_LINUX_MODULE_24 - bool "Linux kernel module functions" +config UCLIBC_LINUX_MODULE_26 + bool "Linux kernel module functions (2.6)" default y help - init_module, create_module, query_module, delete_module - are used in linux (allegedly prior to 2.6) for loadable - kernel modules. + delete_module, init_module + are used in linux for loadable kernel modules. Say N if you do not use kernel modules. +config UCLIBC_LINUX_MODULE_24 + bool "Linux kernel module functions (<2.6)" + depends on !TARGET_bfin && !TARGET_c6x + help + create_module, query_module + are used in linux (prior to 2.6) for loadable kernel modules. + + Say N if you do not use kernel modules, or you only support + Linux 2.6+. + config UCLIBC_LINUX_SPECIFIC bool "Linux specific functions" default y help - fstatfs(), inotify_*(), ioperm(), iopl(), madvise(), modify_ldt(), - personality(), ppoll(), setresuid() + accept4(), bdflush(), + capget(), capset(), eventfd(), fallocate(), + fstatfs(), getrandom(), inotify_*(), ioperm(), iopl(), + madvise(), modify_ldt(), pipe2(), personality(), + prctl()/arch_prctl(), pivot_root(), modify_ldt(), + ppoll(), readahead(), reboot(), remap_file_pages(), + sched_getaffinity(), sched_setaffinity(), sendfile(), + setfsgid(), setfsuid(), setresgid(), setresuid(), + splice(), vmsplice(), tee(), signalfd(), statfs(), + swapoff(), swapon(), sync_file_range(), syncfs(), + _sysctl(), sysinfo(), timerfd_*(), vhangup(), umount(), + umount2() config UCLIBC_HAS_GNU_ERROR bool "Support GNU extensions for error-reporting" @@ -761,9 +1077,8 @@ config UCLIBC_HAS_BSD_ERR config UCLIBC_HAS_OBSOLETE_BSD_SIGNAL bool "BSD obsolete signal functions" - default n help - These functions are provided as a compatibility interface for + These functions are provided as a compatibility interface for programs that make use of the historical System V signal API. This API is obsolete: new applications should use the POSIX signal API (sigaction(2), @@ -776,7 +1091,6 @@ config UCLIBC_HAS_OBSOLETE_BSD_SIGNAL config UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL bool "SYSV obsolete signal functions" - default n help Use of sysv_signal() should be avoided; use sigaction(2) instead. @@ -784,7 +1098,6 @@ config UCLIBC_HAS_OBSOLETE_SYSV_SIGNAL config UCLIBC_NTP_LEGACY bool "ntp_*() aliases" - default n help Provide legacy aliases for ntp functions: ntp_adjtime(), ntp_gettime() @@ -793,7 +1106,6 @@ config UCLIBC_NTP_LEGACY config UCLIBC_SV4_DEPRECATED bool "Enable SVr4 deprecated functions" - default n help These functions are DEPRECATED in System V release 4. Say N unless you desparately need one of the functions below: @@ -803,8 +1115,6 @@ config UCLIBC_SV4_DEPRECATED config UCLIBC_HAS_REALTIME bool "Realtime-related family of SUSv functions" default y - # glitch in mq_{send,receive} currently forces this on - select UCLIBC_HAS_ADVANCED_REALTIME help These functions are part of the Timers option and need not be available on all implementations. @@ -945,6 +1255,20 @@ config UCLIBC_HAS_CRYPT_IMPL help libcrypt contains crypt(), setkey() and encrypt() +config UCLIBC_HAS_SHA256_CRYPT_IMPL + bool "libcrypt SHA256 support" + depends on UCLIBC_HAS_CRYPT_IMPL + help + This adds support for SHA256 password hashing via the crypt() function. + Say N here if you do not need SHA256 crypt support. + +config UCLIBC_HAS_SHA512_CRYPT_IMPL + bool "libcrypt SHA512 support" + depends on UCLIBC_HAS_CRYPT_IMPL + help + This adds support for SHA512 password hashing via the crypt() function. + Say N here if you do not need SHA512 crypt support. + config UCLIBC_HAS_CRYPT_STUB bool "libcrypt stubs" default y @@ -985,7 +1309,6 @@ config UCLIBC_HAS_IPV4 config UCLIBC_HAS_IPV6 bool "IP version 6 support" - default n select UCLIBC_HAS_SOCKET help If you want to include support for the next version of the Internet @@ -995,12 +1318,14 @@ config UCLIBC_HAS_IPV6 config UCLIBC_HAS_RPC bool "Remote Procedure Call (RPC) support" - default n + # RPC+socket-ipvX doesn't currently work. + depends on UCLIBC_HAS_IPV4 || UCLIBC_HAS_IPV6 help If you want to include RPC support, enable this. RPC is rarely used - for anything except for the NFS filesystem. Unless you plan to use NFS, - you can probably leave this set to N and save some space. If you need - to use NFS then you should answer Y. + for anything except for the NFS filesystem. Unless you plan to use + NFS, you can probably leave this set to N and save some space. + + If you need to use NFS then you should answer Y. config UCLIBC_HAS_FULL_RPC bool "Full RPC support" @@ -1023,7 +1348,6 @@ config UCLIBC_HAS_REENTRANT_RPC config UCLIBC_USE_NETLINK bool "Use netlink to query interfaces" - default n depends on UCLIBC_HAS_SOCKET help In newer versions of Linux (2.4.17+), support was added for querying @@ -1038,7 +1362,6 @@ config UCLIBC_USE_NETLINK config UCLIBC_SUPPORT_AI_ADDRCONFIG bool "Support the AI_ADDRCONFIG flag" depends on UCLIBC_USE_NETLINK - default n help The implementation of AI_ADDRCONFIG is aligned with the glibc implementation using netlink to query interfaces to find both @@ -1049,13 +1372,55 @@ config UCLIBC_SUPPORT_AI_ADDRCONFIG config UCLIBC_HAS_BSD_RES_CLOSE bool "Support res_close() (bsd-compat)" - default n help Answer Y if you desperately want to support BSD compatibility in the network code. Most people will say N. +config UCLIBC_HAS_COMPAT_RES_STATE + bool "Use compatible but bloated _res" + default y + help + Answer Y if you build network utilities and they muck with resolver + internals a lot (_res global structure). uclibc does not use most + of _res.XXX fields, and with this option OFF they won't even exist. + Which will make e.g. dig build fail. + Answering N saves around 400 bytes in bss. + +config UCLIBC_HAS_EXTRA_COMPAT_RES_STATE + bool "Use extra compatible but extra bloated _res" + help + Answer Y if selecting UCLIBC_HAS_COMPAT_RES_STATE is not enough. + As far as I can say, this should never be needed. + +config UCLIBC_HAS_RESOLVER_SUPPORT + bool "DNS resolver functions" + select UCLIBC_HAS_COMPAT_RES_STATE + depends on UCLIBC_HAS_IPV4 || UCLIBC_HAS_IPV6 + help + Provide implementations for DNS resolver functions. + In particular, the following functions will be added to the + library: + + ns_skiprr, ns_initparse, ns_parserr, ns_msg_getflag, + res_mkquery, res_init, res_ninit, res_close, res_nclose + res_query, res_search, res_querydomain, + dn_expand, dn_comp, + ns_name_uncompress, ns_name_ntop, ns_name_pton, ns_name_unpack, + ns_name_pack, ns_name_compress, ns_name_skip, dn_skipname, + ns_get16, ns_get32, ns_put16, ns_put32 + +config UCLIBC_HAS_LIBRESOLV_STUB + bool "Provide libresolv stub" + help + Provide a dummy resolv library. + +config UCLIBC_HAS_LIBNSL_STUB + bool "Provide libnsl stub" + help + Provide a dummy nsl library. + endif @@ -1086,6 +1451,13 @@ config UCLIBC_HAS_STRING_ARCH_OPT These are small and fast, the only reason _not_ to say Y here is for debugging purposes. +config UCLIBC_HAS_STDIO_FUTEXES + bool "Use futexes for multithreaded I/O locking" + depends on UCLIBC_HAS_THREADS_NATIVE + help + If you want to compile uClibc to use futexes for low-level + I/O locking, answer Y. Otherwise, answer N. + config UCLIBC_HAS_CTYPE_TABLES bool "Use Table Versions Of 'ctype.h' Functions." default y @@ -1114,7 +1486,8 @@ choice depends on UCLIBC_HAS_CTYPE_TABLES default UCLIBC_HAS_CTYPE_UNSAFE help - Please select the invalid arg behavior you want for the 'ctype' functions. + Please select the invalid arg behavior you want for the 'ctype' + functions. The 'ctype' functions are now implemented using table lookups, with the arg being the index. This can result in incorrect memory accesses @@ -1137,7 +1510,6 @@ endchoice config UCLIBC_HAS_WCHAR bool "Wide Character Support" - default n help Answer Y to enable wide character support. This will make uClibc much larger. It is also currently required for locale support. @@ -1148,7 +1520,6 @@ config UCLIBC_HAS_LOCALE bool "Locale Support" select UCLIBC_HAS_WCHAR select UCLIBC_HAS_CTYPE_TABLES - default n help uClibc now has full ANSI/ISO C99 locale support (except for wcsftime() and collating items in regex). Be aware that enabling @@ -1165,43 +1536,49 @@ config UCLIBC_HAS_LOCALE Answer Y to enable locale support. Most people will answer N. -config UCLIBC_PREGENERATED_LOCALE_DATA - bool "Use Pre-generated Locale Data" +choice + +prompt "Locale data" + depends on UCLIBC_HAS_LOCALE + default UCLIBC_BUILD_ALL_LOCALE + +config UCLIBC_BUILD_ALL_LOCALE + bool "All locales" depends on UCLIBC_HAS_LOCALE - default n help - If you are selective and only want locale data for a few particular - locales, or you enjoy pain, or you are a rabid do-it-yourself sort of - person, you can turn this option off and manually walk through the - mostly undocumented procedure needed to generate your own locale - data. + This builds all the locales that are available on your + host-box. - Mere mortals will answer Y and use the default set of pregenerated - locale data, which supports 169 UTF-8 locales, and 144 locales for - other codesets (for the complete list see extra/locale/LOCALES). +config UCLIBC_BUILD_MINIMAL_LOCALE + bool "Only selected locales" + depends on UCLIBC_HAS_LOCALE + help + If you do not need all locales that are available on your + host-box, then set this to 'Y'. -config UCLIBC_DOWNLOAD_PREGENERATED_LOCALE_DATA - bool "Automagically Download the Pre-generated Locale Data (if necessary)" - depends on UCLIBC_PREGENERATED_LOCALE_DATA - default n +endchoice + +config UCLIBC_BUILD_MINIMAL_LOCALES + string "locales to use" + depends on UCLIBC_BUILD_MINIMAL_LOCALE + default "en_US" help - If you would like the build process to use 'wget' to automatically - download the pregenerated locale data, enable this option. Otherwise - you will need to obtain the locale data yourself from: - http://www.uclibc.org/downloads/uClibc-locale-030818.tgz - and place the uClibc-locale-030818.tgz tarball in the extra/locale/ - directory. + Space separated list of locales to use. - Go ahead and make life easy for yourself... Answer Y. + E.g.: + en_US en_GB de_AT + default: + en_US config UCLIBC_HAS_XLOCALE bool "Extended Locale Support (experimental/incomplete)" depends on UCLIBC_HAS_LOCALE - default n help Answer Y to enable extended locale support similar to that provided - by glibc. This is primarily intended to support libstd++ functionality. - However, it also allows thread-specific locale selection via uselocale(). + by glibc. This is primarily intended to support libstd++ + functionality. + However, it also allows thread-specific locale selection via + uselocale(). Most people will answer N. @@ -1209,7 +1586,6 @@ config UCLIBC_HAS_HEXADECIMAL_FLOATS bool "Support hexadecimal float notation" depends on UCLIBC_HAS_CTYPE_TABLES depends on UCLIBC_HAS_FLOATS - default n help Answer Y to enable support for hexadecimal float notation in the (wchar and) char string to floating point conversion functions, as @@ -1222,11 +1598,11 @@ config UCLIBC_HAS_GLIBC_DIGIT_GROUPING bool "Support glibc's \"'\" flag for allowing locale-specific digit grouping" depends on UCLIBC_HAS_LOCALE depends on UCLIBC_HAS_FLOATS - default n help - Answer Y to enable support for glibc's \"'\" flag for allowing locale-specific - digit grouping in base 10 integer conversions and appropriate floating point - conversions in the *printf() and *scanf() functions. + Answer Y to enable support for glibc's \"'\" flag for allowing + locale-specific digit grouping in base 10 integer conversions and + appropriate floating point conversions in the *printf() and *scanf() + functions. Most people will answer N. @@ -1235,23 +1611,24 @@ config UCLIBC_HAS_SCANF_LENIENT_DIGIT_GROUPING depends on UCLIBC_HAS_GLIBC_DIGIT_GROUPING default y help - Answer Y to make digit grouping optional when the \"'\" flag is specified. + Answer Y to make digit grouping optional when the \"'\" flag is + specified. This is the standard glibc behavior. If the initial string of digits - exceeds the maximum group number, the input will be treated as a normal - non-grouped number. + exceeds the maximum group number, the input will be treated as a + normal non-grouped number. Most people will answer N. config UCLIBC_HAS_GLIBC_CUSTOM_PRINTF bool "Support glibc's register_printf_function() (glibc-compat)" depends on !USE_OLD_VFPRINTF - default n help Answer Y to support glibc's register_printf_function() to allow an application to add its own printf conversion specifiers. + parse_printf_format() is also enabled. - NOTE: This implementation limits the number or registered specifiers to 10. - NOTE: This implementation requires new conversion specifiers to be ASCII + NOTE: Limits the number or registered specifiers to 10. + NOTE: Requires new conversion specifiers to be ASCII characters (0-0x7f). This is to avoid problems with processing format strings in locales with different multibyte conversions. @@ -1260,11 +1637,11 @@ config UCLIBC_HAS_GLIBC_CUSTOM_PRINTF config USE_OLD_VFPRINTF bool "Use the old vfprintf implementation" depends on !UCLIBC_HAS_WCHAR - default n help - Set to true to use the old vfprintf instead of the new. This is roughly - C89 compliant with some extensions, and is much smaller. However, it does - not support wide chars, positional args, or glibc custom printf specifiers. + Set to true to use the old vfprintf instead of the new. This is + roughly C89 compliant with some extensions, and is much smaller. + However, it does not support wide chars, positional args, or glibc + custom printf specifiers. Most people will answer N. @@ -1273,28 +1650,17 @@ config UCLIBC_PRINTF_SCANF_POSITIONAL_ARGS depends on !USE_OLD_VFPRINTF default 9 help - Set the maximum number of positional args supported by the printf/scanf - functions. The Single Unix Specification Version 3 requires a minimum - value of 9. Setting this to a value lower than 9 will disable positional - arg support and cause the NL_ARGMAX macro in limits.h to be #undef'd. - WARNING! The workspace to support positional args is currently allocated - on the stack. You probably don't want to set this to too high a value. - - Most people will answer 9. - - -config UCLIBC_HAS_SCANF_GLIBC_A_FLAG - bool "Support glibc's 'a' flag for scanf string conversions (not implemented)" - default n - help - NOTE!!! Currently Not Implemented!!! Just A Place Holder!! NOTE!!! - NOTE!!! Conflicts with an ANSI/ISO C99 scanf flag!! NOTE!!! + Set the maximum number of positional args supported by the + printf/scanf functions. The Single Unix Specification Version 3 + requires a minimum value of 9. Setting this to a value lower than + 9 will disable positional arg support and cause the NL_ARGMAX macro + in limits.h to be #undef'd. - Answer Y to enable support for glibc's 'a' flag for the scanf string - conversions '%s', '%[', '%ls', '%l[', and '%S'. This is used to - auto-allocate sufficient memory to hold the data retrieved. + WARNING! The workspace to support positional args is currently + allocated on the stack. You probably don't want to set + this to too high a value. - Most people will answer N. + Most people will answer 9. choice prompt "Stdio buffer size" @@ -1363,11 +1729,11 @@ endchoice config UCLIBC_HAS_STDIO_SHUTDOWN_ON_ABORT bool "Attempt to shutdown stdio subsystem when abort() is called." - default n help - ANSI/ISO C99 requires abort() to be asyn-signal-safe. So there was a behavioral - change made in SUSv3. Previously, abort() was required to have the affect of - fclose() on all open streams. The wording has been changed to "may" from "shall". + ANSI/ISO C99 requires abort() to be asyn-signal-safe. So there was + a behavioral change made in SUSv3. Previously, abort() was required + to have the affect of fclose() on all open streams. The wording has + been changed to "may" from "shall". Most people will answer N. @@ -1394,22 +1760,23 @@ config UCLIBC_HAS_STDIO_AUTO_RW_TRANSITION default y help Answer Y to enable the stdio subsystem to automaticly transition - between reading and writing. This relaxes the ANSI/ISO C99 requirement: - - When a file is opened with update mode ('+' as the second or third character - in the list of mode argument values), both input and output may be performed - on the associated stream. However, output shall not be directly followed by - input without an intervening call to the fflush function or to a file - positioning function (fseek, fsetpos, or rewind), and input shall not be - directly followed by output without an intervening call to a file positioning - function, unless the input operation encounters endoffile. + between reading and writing. This relaxes the ANSI/ISO C99 + requirement: + + When a file is opened with update mode ('+' as the second or third + character in the list of mode argument values), both input and output + may be performed on the associated stream. However, output shall not + be directly followed by input without an intervening call to the + fflush function or to a file positioning function (fseek, fsetpos, + or rewind), and input shall not be directly followed by output without + an intervening call to a file positioning function, unless the input + operation encounters endoffile. Most people will answer Y. config UCLIBC_HAS_FOPEN_LARGEFILE_MODE bool "Support an fopen() 'F' flag for large file mode (uClibc-specific)" depends on UCLIBC_HAS_LFS - default n help Answer Y to enable a uClibc-specific extension to allow passing an additional 'F' flag in the mode string for fopen() to specify that @@ -1419,7 +1786,6 @@ config UCLIBC_HAS_FOPEN_LARGEFILE_MODE config UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE bool "Support an fopen() 'x' flag for exclusive mode (glibc-compat)" - default n help Answer Y to support a glibc extension to allow passing additional 'x' flag in the mode string for fopen() to specify that @@ -1427,9 +1793,17 @@ config UCLIBC_HAS_FOPEN_EXCLUSIVE_MODE Most people will answer N. +config UCLIBC_HAS_FOPEN_CLOSEEXEC_MODE + bool "Support an fopen() 'e' flag for close-on-exec mode (glibc-compat)" + help + Answer Y to support a glibc extension to allow passing + additional 'e' flag in the mode string for fopen() to specify that + the file should be open()ed with the O_CLOEXEC flag set. + + Most people will answer N. + config UCLIBC_HAS_GLIBC_CUSTOM_STREAMS bool "Support fmemopen(), open_memstream(), and fopencookie() (glibc-compat)" - default n help Answer Y to support the glibc 'custom stream' extension functions fmemopen(), open_memstream(), and fopencookie(). @@ -1440,11 +1814,11 @@ config UCLIBC_HAS_GLIBC_CUSTOM_STREAMS config UCLIBC_HAS_PRINTF_M_SPEC bool "Support the '%m' specifier in printf format strings (glibc-compat)" - default n help Answer Y to support a glibc extension to interpret '%m' in printf format strings as an instruction to output the error message string - (as generated by strerror) corresponding to the current value of 'errno'. + (as generated by strerror) corresponding to the current value of + 'errno'. Most people will answer N. @@ -1461,14 +1835,14 @@ config UCLIBC_HAS_ERRNO_MESSAGES config UCLIBC_HAS_SYS_ERRLIST bool "Support sys_errlist[] (obsolete-compat)" depends on UCLIBC_HAS_ERRNO_MESSAGES - default n help Answer Y if you want to support the obsolete sys_errlist[]. This adds about 0.5k to the library, except for the mips arch where it adds over 4K. WARNING! In the future, support for sys_errlist[] may be unavailable - in at least some configurations. In fact, it may be removed altogether. + in at least some configurations. In fact, it may be removed + altogether. Most people will answer N. @@ -1487,19 +1861,18 @@ config UCLIBC_HAS_SIGNUM_MESSAGES config UCLIBC_HAS_SYS_SIGLIST bool "Support sys_siglist[] (bsd-compat)" depends on UCLIBC_HAS_SIGNUM_MESSAGES - default n help Answer Y if you want to support sys_siglist[]. WARNING! In the future, support for sys_siglist[] may be unavailable - in at least some configurations. In fact, it may be removed altogether. + in at least some configurations. In fact, it may be removed + altogether. Most people will answer N. config UCLIBC_HAS_GETTEXT_AWARENESS bool "Include gettext awareness" depends on UCLIBC_HAS_LOCALE && UCLIBC_MJN3_ONLY - default n help NOTE!!! Not yet integrated with strerror and strsignal. NOTE!!! @@ -1517,27 +1890,44 @@ config UCLIBC_HAS_GNU_GETOPT help Answer Y if you want to include full gnu getopt() instead of a (much smaller) SUSv3 compatible getopt(). + Note that getopt_long, getopt_long_only as well as getsubopt + are implemented on top of this choice. Most people will answer Y. config UCLIBC_HAS_GETOPT_LONG - bool "Support getopt_long/getopt_long_only" - depends on !UCLIBC_HAS_GNU_GETOPT + bool "Support getopt_long/getopt_long_only (glibc-compat)" default y help - Answer Y if you want to include getopt_long[_only() used by many - apps, even busybox. + Answer Y if you want to include getopt_long[_only()] used by many + apps. Most people will answer Y. config UCLIBC_HAS_GNU_GETSUBOPT - bool "Support glibc getsubopt" + bool "Support getsubopt" default y help - Answer Y if you want to include glibc getsubopt() instead of a - smaller SUSv3 compatible getsubopt(). + Answer Y if you want to include getsubopt(). Most people will answer Y. + +config UCLIBC_HAS_ARGP + bool "Support argp (as standalone shared object)" + default n + help + Argp is an interface for parsing unix-style argument vectors. Unlike + the common getopt interface, it provides many advanced features in + addition to parsing options, such as automatic output in response to + `--help' and `--version' options. + A library can export an argp option parser, which programs can easily + use in conjunction with their own option parser. + A new shared object "libuargp" is created. The "libc.so" linker script + contains the AS_NEEDED entry for getting the libuargp linked automatically. + Argp support is needed by elfutils libdw. + + Most people can safely answer N. + endmenu @@ -1591,7 +1981,6 @@ config UCLIBC_HAS_FNMATCH_OLD config UCLIBC_HAS_WORDEXP bool "Support the wordexp() interface" depends on UCLIBC_HAS_GLOB - default n help The SuSv3 wordexp() interface performs word expansions per the Shell and Utilities volume of IEEE Std 1003.1-2001, Section 2.6. It is @@ -1601,15 +1990,36 @@ config UCLIBC_HAS_WORDEXP This interface is rarely used, and very large. Unless you have a pressing need for wordexp(), you should probably answer N. +config UCLIBC_HAS_NFTW + bool "Support the nftw() interface" + help + The SuSv3 nftw() interface is used to recursively descend + directory paths while repeatedly calling a function. + + This interface is rarely used, and adds around 4.5k. Unless you have + a pressing need for nftw(), you should probably answer N. + config UCLIBC_HAS_FTW - bool "Support the ftw() and nftw() interfaces" - default n + bool "Support the ftw() interface (SUSv4-obsolete)" + depends on UCLIBC_SUSV4_LEGACY help - The SuSv3 ftw() and nftw() interfaces are used to recursively descend + The SuSv3 ftw() interface is used to recursively descend directory paths while repeatedly calling a function. This interface is rarely used, and adds around 4.5k. Unless you have - a pressing need for ftw() or nftw(), you should probably answer N. + a pressing need for ftw(), you should probably answer N. + +config UCLIBC_HAS_FTS + bool "Support the fts() interface (bsd-compat)" + help + The fts functions are provided for traversing UNIX file hierarchies. + + This interface is currently used by the elfutils and adds + around 7.5k. + You should port your application to use the POSIX nftw() + interface. + + Unless you need to build/use elfutils, you should prolly answer N. config UCLIBC_HAS_GLOB bool "Support the glob() interface" @@ -1626,14 +2036,13 @@ config UCLIBC_HAS_GLOB config UCLIBC_HAS_GNU_GLOB bool "Support gnu glob() interface" depends on UCLIBC_HAS_GLOB - default n help - The gnu glob interface is somewhat larger (weighing in at about 4,2k) than - it's SuSv3 counterpart (and is out of date). It is an old copy from glibc and - does not support all the GNU specific options. + The gnu glob interface is somewhat larger (weighing in at about 4,2k) + than it's SuSv3 counterpart (and is out of date). It is an old copy + from glibc and does not support all the GNU specific options. - Answer Y if you want to include full gnu glob() instead of the smaller SUSv3 - compatible glob(). + Answer Y if you want to include full gnu glob() instead of the smaller + SUSv3 compatible glob(). Most people will answer N. @@ -1644,23 +2053,6 @@ endmenu menu "Library Installation Options" -config SHARED_LIB_LOADER_PREFIX - string "Shared library loader path" - depends on HAVE_SHARED - default "$(RUNTIME_PREFIX)lib" - help - When using shared libraries, this path is the location where the - shared library will be invoked. This value will be compiled into - every binary compiled with uClibc. - - For a typical target system this should be set to "/lib", such that - 'make install' will install /lib/ld-uClibc.so.0. - - BIG FAT WARNING: - If you do not have a shared library loader with the correct name - sitting in the directory this points to, your binaries will not - run. - config RUNTIME_PREFIX string "uClibc runtime library directory" default "/usr/$(TARGET_ARCH)-linux-uclibc/" @@ -1695,6 +2087,39 @@ config DEVEL_PREFIX For a typical target system this should be set to "/usr", such that 'make install' will install /usr/include/<header files>. +config MULTILIB_DIR + string "library path component" + default "lib" + help + Path component where libraries reside. + + For a typical target system this should be set to "lib", such that + 'make install' will install libraries to "/lib" and "/usr/lib" + respectively + DEVEL_PREFIX/MULTILIB_DIR + RUNTIME_PREFIX/MULTILIB_DIR + + Other settings may include "lib32" or "lib64". + +config HARDWIRED_ABSPATH + bool "Hardwire absolute paths into linker scripts" + default y + help + This prepends absolute paths to the libraries mentioned in linker + scripts such as libc.so. + + This is a build time optimization. It has no impact on dynamic + linking at runtime, which doesn't use linker scripts. + + You must disable this to use uClibc with old non-sysroot toolchains, + such as the prebuilt binary cross compilers at: + http://uclibc.org/downloads/binaries + + The amount of time saved by this optimization is actually too small to + measure. The linker just had to search the library path to find the + linker script, so the dentries are cache hot if it has to search the + same path again. But it's what glibc does, so we do it too. + endmenu @@ -1705,18 +2130,20 @@ config UCLIBC_BUILD_PIE depends on HAVE_SHARED depends on TARGET_arm || TARGET_frv || TARGET_i386 || TARGET_mips || TARGET_powerpc select FORCE_SHAREABLE_TEXT_SEGMENTS - default n help - If you answer Y here, ldd and iconv are built as ET_DYN/PIE executables. + If you answer Y here, ldd and iconv are built as ET_DYN/PIE + executables. + It requires gcc-3.4 and binutils-2.15 (for arm 2.16) or later. More about ET_DYN/PIE binaries on <http://pax.grsecurity.net/> . - WARNING: This option also enables FORCE_SHAREABLE_TEXT_SEGMENTS, so all - libraries have to be built with -fPIC or -fpic, and all assembler - functions must be written as position independent code (PIC). + + WARNING: This option also enables FORCE_SHAREABLE_TEXT_SEGMENTS, so + all libraries have to be built with -fPIC or -fpic, and all + assembler functions must be written as position independent + code (PIC). config UCLIBC_HAS_ARC4RANDOM bool "Include the arc4random() function" - default n help Answer Y to support the OpenBSD-like arc4random() function. This function picks a random number between 0 and N, and will always return @@ -1727,14 +2154,22 @@ config UCLIBC_HAS_ARC4RANDOM Most people will answer N. +config ARC4RANDOM_USES_NODEV + bool "Do not use /dev/urandom with arc4random()" + depends on UCLIBC_HAS_ARC4RANDOM + help + Answer Y to use gettimeofday(2) and getpid(2) exclusively for + arc4random(). This is not a bad idea for a diskless system, but + it uses a lot of syscalls to stir each array element. + + Most people will answer N. + config HAVE_NO_SSP bool - default n config UCLIBC_HAS_SSP bool "Support for GCC stack smashing protector" depends on !HAVE_NO_SSP - default n help Add code to support GCC's -fstack-protector[-all] option to uClibc. This requires GCC 4.1 or newer. GCC does not have to provide libssp, @@ -1755,7 +2190,6 @@ config UCLIBC_HAS_SSP config UCLIBC_HAS_SSP_COMPAT bool "Support for gcc-3.x propolice smashing stack protector" depends on UCLIBC_HAS_SSP - default n help Add gcc-3.x propolice smashing stack protector to the library. @@ -1772,7 +2206,6 @@ config UCLIBC_HAS_SSP_COMPAT config SSP_QUICK_CANARY bool "Use simple guard values without accessing /dev/urandom" depends on UCLIBC_HAS_SSP - default n help Use gettimeofday(2) to define the __guard without accessing /dev/urandom. @@ -1783,8 +2216,8 @@ config SSP_QUICK_CANARY choice prompt "Propolice protection blocking signal" depends on UCLIBC_HAS_SSP - default PROPOLICE_BLOCK_ABRT if ! DODEBUG - default PROPOLICE_BLOCK_SEGV if DODEBUG + depends on DODEBUG + default PROPOLICE_BLOCK_SEGV help "abort" use SIGABRT to block offending programs. This is the default implementation. @@ -1805,7 +2238,6 @@ endchoice config UCLIBC_BUILD_SSP bool "Build uClibc with -fstack-protector" depends on UCLIBC_HAS_SSP - default n help Build all uClibc libraries and executables with -fstack-protector, adding extra stack overflow checking to most uClibc functions. @@ -1835,7 +2267,6 @@ config UCLIBC_BUILD_RELRO config UCLIBC_BUILD_NOW bool "Build uClibc with linker option -z NOW" depends on HAVE_SHARED - default n help Build all libraries and executables with "ld -z now". @@ -1874,7 +2305,7 @@ config UCLIBC_BUILD_NOEXECSTACK endmenu -menu "uClibc development/debugging options" +menu "Development/debugging options" config CROSS_COMPILER_PREFIX string "Cross-compiling toolchain prefix" @@ -1885,14 +2316,13 @@ config CROSS_COMPILER_PREFIX then enter 'arm-linux-uclibc-' here. config UCLIBC_EXTRA_CFLAGS - string "Enter any extra CFLAGS to use to build uClibc" + string "Extra CFLAGS" default "" help Add any additional CFLAGS to be used to build uClibc. config DODEBUG - bool "Build uClibc with debugging symbols" - default n + bool "Enable debugging symbols" select EXTRA_WARNINGS help Say Y here if you wish to compile uClibc with debugging symbols. @@ -1906,7 +2336,6 @@ config DODEBUG config DODEBUG_PT bool "Build pthread with debugging output" depends on UCLIBC_HAS_THREADS && LINUXTHREADS_OLD - default n help Enable debug output in libpthread. This is only useful when doing development in libpthread itself. @@ -1924,8 +2353,7 @@ config DOSTRIP Most people will answer Y. config DOASSERTS - bool "Build uClibc with run-time assertion testing" - default n + bool "Build with run-time assertion testing" help Say Y here to include runtime assertion tests. This enables runtime assertion testing in some code, which can @@ -1935,7 +2363,6 @@ config DOASSERTS config SUPPORT_LD_DEBUG bool "Build the shared library loader with debugging support" depends on HAVE_SHARED - default n help Answer Y here to enable all the extra code needed to debug the uClibc native shared library loader. The level of debugging noise that is @@ -1948,9 +2375,11 @@ config SUPPORT_LD_DEBUG detail provide more information for some options move display copy processing symbols display symbol table processing - reloc display relocation processing; detail shows the relocation patch + reloc display relocation processing; detail shows the + relocation patch nofixups never fixes up jump relocations - bindings displays the resolve processing (function calls); detail shows the relocation patch + bindings displays the resolve processing (function calls); + detail shows the relocation patch all Enable everything! The additional environment variable: @@ -1969,7 +2398,6 @@ config SUPPORT_LD_DEBUG config SUPPORT_LD_DEBUG_EARLY bool "Build the shared library loader with early debugging support" depends on HAVE_SHARED - default n help Answer Y here to if you find the uClibc shared library loader is crashing or otherwise not working very early on. This is typical @@ -1983,37 +2411,55 @@ config SUPPORT_LD_DEBUG_EARLY config UCLIBC_MALLOC_DEBUGGING bool "Build malloc with debugging support" depends on MALLOC || MALLOC_STANDARD - default n + select DOASSERTS help Answer Y here to compile extra debugging support code into malloc. Malloc debugging output may then be enabled at runtime using the MALLOC_DEBUG environment variable. - The value of MALLOC_DEBUG should be an integer, which is interpreted as - a bitmask with the following bits: + The value of MALLOC_DEBUG should be an integer, which is interpreted + as a bitmask with the following bits: 1 - do extra consistency checking - 2 - output messages for malloc/free calls and OS allocation calls + 2 - output messages for malloc/free calls and OS + allocation calls 4 - output messages for the `MMB' layer - 8 - output messages for internal malloc heap manipulation calls + 8 - output messages for internal malloc heap manipulation + calls Because this increases the size of malloc appreciably (due to strings etc), you should say N unless you need to debug a malloc problem. +config UCLIBC_HAS_BACKTRACE + bool "Add support for application self-debugging" + depends on HAVE_SHARED + help + Answer Y here to compile support for application self-debugging, by adding + a new shared object "libubacktrace.so" that provides the following new + functions: + backtrace, backtrace_symbols, backtrace_symbols_fd + + The backtrace functionality is currently supported on SH platform, and it + based on dwarf2 informations to properly work, so any application that + want to use backtrace needs to be built with -fexceptions flag. + + The symbol names may be unavailable without the use of special linker + options. For systems using the GNU linker, it is necessary to use the + -rdynamic linker option too. Note that names of "static" functions are not + exposed, and won't be available in the backtrace. + config WARNINGS string "Compiler Warnings" default "-Wall" help - Set this to the set of gcc warnings you wish to see while compiling. + Set this to the set of compiler warnings you wish to see while compiling. config EXTRA_WARNINGS bool "Enable extra annoying warnings" - default n help If you wish to build with extra warnings enabled, say Y here. config DOMULTI bool "Compile all sources at once into an object" - default n help Set this to compile all sources at once into an object (IMA). This mode of compilation uses alot of memory but may produce @@ -2024,12 +2470,4 @@ config DOMULTI If unsure, keep the default of N. -config UCLIBC_MJN3_ONLY - bool "Manuel's hidden warnings" - default n - help - Answer Y here to see all Manuel's personal notes, warnings, and todos. - - Most people will answer N. - endmenu |
