Commit Graph

8 Commits

Author SHA1 Message Date
Thomas Preud'homme bd54749095 Allow locking routine to be retargeted
At the moment when targeting bare-metal targets or systems without
definition for the locking primitives newlib, uses dummy empty macros.
This has the advantage of reduced size and faster implementation but
does not allow the application to retarget the locking routines.
Retargeting is useful for a single toolchain to support multiple systems
since then it's only at link time that you know which system you are
targeting.

This patch adds a new configure option
--enable-newlib-retargetable-locking to use dummy empty functions
instead of dummy empty macros. The default is to keep the current
behavior to not have any size or speed impact on targets not interested
in this feature. To allow for any size of lock, the _LOCK_T type is
changed into pointer to struct _lock and the _init function are tasked
with allocating the locks. The platform being targeted must provide the
static locks. A dummy implementation of the locking routines and static
lock is provided for single-threaded applications to link successfully
out of the box.

To ensure that the behavior is consistent (either no locking whatsoever
or working locking), the dummy implementation is strongly defined such
that a partial retargeting will cause a doubly defined link error.
Indeed, the linker will only pull in the file providing the dummy
implementation if it cannot find an implementation for one of the
routine or lock.
2017-02-13 17:07:11 -05:00
Jeff Johnston 0631279394 Move duplicated documentation rules to Makefile.shared
- Also, harmonize libm to use CHEWOUT_FILES like libc, rather than chobj.
  Update documentation appropriately.

        * HOWTO: Update.
        * Makefile.shared: Move documentation rules to here...
        * libc/argz/Makefile.am: ... from here ...
        * libc/ctype/Makefile.am: ... and here.
        * libc/errno/Makefile.am: Ditto.
        * libc/iconv/Makefile.am: Ditto.
        * libc/iconv/ccs/Makefile.am : Ditto.
        * libc/iconv/ces/Makefile.am: Ditto.
        * libc/iconv/lib/Makefile.am: Ditto.
        * libc/locale/Makefile.am: Ditto.
        * libc/misc/Makefile.am: Ditto.
        * libc/posix/Makefile.am: Ditto.
        * libc/reent/Makefile.am: Ditto.
        * libc/search/Makefile.am: Ditto.
        * libc/stdio/Makefile.am: Ditto.
        * libc/stdio64/Makefile.am: Ditto.
        * libc/stdlib/Makefile.am : Ditto.
        * libc/string/Makefile.am: Ditto.
        * libc/syscalls/Makefile.am: Ditto.
        * libc/time/Makefile.am : Ditto.
        * libc/unix/Makefile.am: Ditto.
        * libc/xdr/Makefile.am: Ditto.
        * libm/common/Makefile.am: Ditto.
        * libm/complex/Makefile.am: Ditto.
        * libm/math/Makefile.am: Ditto.
        * libm/mathfp/Makefile.am: Ditto.
2015-11-02 18:02:39 -05:00
Jeff Johnston ced5f59df9 2010-06-04 Mark Mitchell <mark@codesourcery.com>
* libc/stdlib/__call_atexit.c (__libc_fini): Declare.
        (register_fini): New function.
        * libc/misc/init.c (_fini): Remove.
        (__libc_fini_array): Likewise.
        * libc/misc/fini.c: New file.
        * libc/misc/Makefile.am (LIB_SOURCES): Add fini.c.
        * libc/misc/Makefile.in: Regenerate.
2010-06-04 15:30:40 +00:00
Jeff Johnston f383bda56a 2006-05-23 Jeff Johnston <jjohnstn@redhat.com>
* libc/misc/dprintf.c: Removed.
        * libc/misc/__dprintf.c: Renamed from dprintf.c.
        * libc/misc/Makefile.am: Changed appropriately for rename.
        * libc/misc/Makefile.in: Regenerated.
2006-05-23 20:30:48 +00:00
Jeff Johnston 34e666798a 2006-04-11 Jeff Johnston <jjohnstn@redhat.com>
* acinclude.m4: Properly add square brackets for
        AC_DEFUN macros.  Rewrite LIB_AC_PROG_CC to remove
        macros no longer available.  Add LIB_AM_PROG_AS to
        remove prereq of AC_PROG_CC.  Add LIB_AC_PROG_CC_GNU
        macro.  Substitute lpfx (library object prefix).
        * configure.host: Set lpfx depending on whether
        libtool is used or not.
        * configure.in: Individually specify libc and libm
        to AC_CONFIG_SUBDIRS.  Add square bracket quoting as
        necessary.
        * Makefile.am: Use $(lpfx) to get object names for
        math-library functions that should also be in libc.
        * libc/machine/configure.in: Use case statement to determine
        AC_CONFIG_SUBDIRS statement.
        * libc/sys/linux/linuxthreads/machine/configure.in: Ditto.
        * libc/sys/linux/machine/configure.in: Ditto.
        * libc/sys/configure.in: Ditto.
        * libm/machine/configure.in: Ditto.
        * libc/sys/linux/configure.in: Fix up AC_CONFIG_SUBDIRS.
        * libm/configure.in: Add AM_CONDITIONAL statement
        for HAVE_LIBM_MACHINE_DIR.
        * libc/machine/a29k/Makefile.am: Modified to work with
        latest automake.  Change includes setting AM_CCASFLAGS
        so building .S files will properly pick up flags used
        to build C files.
        * libc/machine/arm/Makefile.am: Ditto.
        * libc/machine/crx/Makefile.am: Ditto.
        * libc/machine/d10v/Makefile.am: Ditto.
        * libc/machine/d30v/Makefile.am: Ditto.
        * libc/machine/fr30/Makefile.am: Ditto.
        * libc/machine/frv/Makefile.am: Ditto.
        * libc/machine/h8300/Makefile.am: Ditto.
        * libc/machine/h8500/Makefile.am: Ditto.
        * libc/machine/hppa/Makefile.am: Ditto.
        * libc/machine/i386/Makefile.am: Ditto.
        * libc/machine/iq2000/Makefile.am: Ditto.
        * libc/machine/m32c/Makefile.am: Ditto.
        * libc/machine/m32r/Makefile.am: Ditto.
        * libc/machine/m68hc11/Makefile.am: Ditto.
        * libc/machine/m68k/Makefile.am: Ditto.
        * libc/machine/m88k/Makefile.am: Ditto.
        * libc/machine/mips/Makefile.am: Ditto.
        * libc/machine/mn10200/Makefile.am: Ditto.
        * libc/machine/mn10300/Makefile.am: Ditto.
        * libc/machine/mt/Makefile.am: Ditto.
        * libc/machine/necv70/Makefile.am: Ditto.
        * libc/machine/powerpc/Makefile.am: Ditto.
        * libc/machine/sh/Makefile.am: Ditto.
        * libc/machine/sparc/Makefile.am: Ditto.
        * libc/machine/tic4x/Makefile.am: Ditto.
        * libc/machine/tic80/Makefile.am: Ditto.
        * libc/machine/v850/Makefile.am: Ditto.
        * libc/machine/w65/Makefile.am: Ditto.
        * libc/machine/xscale/Makefile.am: Ditto.
        * libc/machine/xstormy16/Makefile.am: Ditto.
        * libc/machine/z8k/Makefile.am: Ditto.
        * libc/sys/a29khif/Makefile.am: Ditto.
        * libc/sys/arc/Makefile.am: Ditto.
        * libc/sys/arm/Makefile.am: Ditto.
        * libc/sys/d10v/Makefile.am: Ditto.
        * libc/sys/decstation/Makefile.am: Ditto.
        * libc/sys/h8300hms/Makefile.am: Ditto.
        * libc/sys/h8500hms/Makefile.am: Ditto.
        * libc/sys/linux/linuxthreads/machine/i386/Makefile.am: Ditto.
        * libc/sys/linux/machine/i386/Makefile.am: Ditto.
        * libc/sys/m88kbug/Makefile.am: Ditto.
        * libc/sys/mmixware/Makefile.am: Ditto.
        * libc/sys/netware/Makefile.am: Ditto.
        * libc/sys/rdos/Makefile.am: Ditto.
        * libc/sys/rtems/Makefile.am: Ditto.
        * libc/sys/sh/Makefile.am: Ditto.
        * libc/sys/sparc64/Makefile.am: Ditto.
        * libc/sys/sysmec/Makefile.am: Ditto.
        * libc/sys/sysnec810/Makefile.am: Ditto.
        * libc/sys/sysnecv850/Makefile.am: Ditto.
        * libc/sys/sysvi386/Makefile.am: Ditto.
        * libc/sys/sysvnecv70/Makefile.am: Ditto.
        * libc/sys/tic80/Makefile.am: Ditto.
        * libc/sys/w65/Makefile.am: Ditto.
        * libc/sys/z8ksim/Makefile.am: Ditto.
        * libm/machine/i386/Makefile.am: Ditto.
        * libc/sys/arm/Makefile.am: Ditto plus add EXTRA sources including
        trap.S so that automake will generate a .S.o suffix rule.
        * libc/argz/Makefile.am: Modified to work with
        latest automake.  Change includes adding lib_a_CFLAGS
        so automake doesn't complain about libtool and non-libtool
        libraries sharing objects.
        * libc/ctype/Makefile.am: Ditto.
        * libc/errno/Makefile.am: Ditto.
        * libc/iconv/ccs/Makefile.am: Ditto.
        * libc/iconv/ces/Makefile.am: Ditto.
        * libc/iconv/lib/Makefile.am: Ditto.
        * libc/locale/Makefile.am: Ditto.
        * libc/misc/Makefile.am: Ditto.
        * libc/posix/Makefile.am: Ditto.
        * libc/reent/Makefile.am: Ditto.
        * libc/search/Makefile.am: Ditto.
        * libc/signal/Makefile.am: Ditto.
        * libc/stdio/Makefile.am: Ditto.
        * libc/stdio64/Makefile.am: Ditto.
        * libc/stdlib/Makefile.am: Ditto.
        * libc/string/Makefile.am: Ditto.
        * libc/sys/linux/Makefile.am: Ditto.
        * libc/sys/linux/argp/Makefile.am: Ditto.
        * libc/sys/linux/cmath/Makefile.am: Ditto.
        * libc/sys/linux/dl/Makefile.am: Ditto.
        * libc/sys/linux/iconv/Makefile.am: Ditto.
        * libc/sys/linux/intl/Makefile.am: Ditto.
        * libc/sys/linux/linuxthreads/Makefile.am: Ditto.
        * libc/sys/linux/net/Makefile.am: Ditto.
        * libc/sys/linux/stdlib/Makefile.am: Ditto.
        * libc/syscalls/Makefile.am: Ditto.
        * libc/time/Makefile.am: Ditto.
        * libc/unix/Makefile.am: Ditto.
        * libm/Makefile.am: Ditto.
        * libm/common/Makefile.am: Ditto.
        * libm/math/Makefile.am: Ditto.
        * libm/mathfp/Makefile.am: Ditto.
        * Regenerate all aclocal.m4, Makefile.in, and configure files.
2006-04-11 19:02:16 +00:00
Jeff Johnston f7a74742e6 2005-01-07 Paul Brook <paul@codesourcery.com>
* configure.in: Add test for .init_array.
        * configure: Regenerate.
        * newlib.hin: Add HAVE_INITFINI_ARRAY.
        * libc/misc/Makefile.am: Add init.c
        * libc/misc/Makefile.in: Regenerate.
        * libc/misc/init.c: New file.
        * libc/sys/arm/crt0.S: Call __libc_{init,fini}_array instead of
        _init/_fini if they exist.
2005-01-07 18:04:39 +00:00
Thomas Fitzsimmons 2e1a71756e * Makefile.shared: New file.
* libc/sys/linux/shared.ld: New file.
	* libm/machine/*: New files.
	* libm/machine/i386/*: New files.
	* Makefile.am: Add libtool support.  Change math and mathfp
	references to variables.
	* configure.host: Add variables for libtool support.  Add
	libm_machine_dir variable.
	* configure.in: Add objectlist variables, for libtool
	support.  Add CC_FOR_BUILD tests.
	* libc/Makefile.am: Add libtool support.  Change crt0.o
	reference to be a variable reference.
	* libc/configure.in: Add libtool support.  Change sublib
	names to be lib${subdir}.la when using libtool.
	* libc/ctype/Makefile.am: Add libtool support.
	* libc/errno/Makefile.am: Likewise.
	* libc/locale/Makefile.am: Likewise.
	* libc/machine/Makefile.am: Likewise.
	* libc/machine/configure.in: Likewise.
	* libc/machine/i386/Makefile.am: Likewise.
	* libc/machine/i386/configure.in: Likewise.
	* libc/misc/Makefile.am: Likewise.
	* libc/posix/Makefile.am: Likewise.
	* libc/reent/Makefile.am: Likewise.
	* libc/signal/Makefile.am: Likewise.
	* libc/stdio/Makefile.am: Likewise.
	* libc/stdlib/Makefile.am: Likewise.
	* libc/string/Makefile.am: Likewise.
	* libc/sys/Makefile.am: Likewise.
	* libc/sys/configure.in: Likewise.
	* libc/sys/linux/Makefile.am: Add libtool support.  Change
	awk reference to a variable reference.  Change signal.h
	reference to a variable reference.
	* libc/sys/linux/configure.in: Add libtool support.
	* libc/syscalls/Makefile.am: Likewise.
	* libc/time/Makefile.am: Likewise.
	* libc/unix/Makefile.am: Likewise.
	* libm/Makefile.am: Add libtool support.  Change math and
	mathfp references to variables.
	* libm/configure.in: Add libtool support.  Add
	LIBM_MACHINE_LIB variable.
	* libm/common/Makefile.am: Add libtool support.
	* libm/math/Makefile.am: Likewise.
	* libm/mathfp/Makefile.am: Likewise.
	Regenerate all Makefile.in, aclocal.m4, and configure.
2001-12-13 23:50:11 +00:00
Christopher Faylor 8a0efa53e4 import newlib-2000-02-17 snapshot 2000-02-17 19:39:52 +00:00