Currently this is only enabled in the top-level as that's the only
place where it seemed to be used. But the libc/sys/phoenix/ dir
also uses this functionality, but fails to explicitly enable it.
Automake workedaround it, but generated warnings. Move the option
to NEWLIB_CONFIGURE so all dirs get it automatically iff they end
up using the option. If they don't use the option, there's no
difference to the generated code.
This matches what the other GNU toolchain projects have done already.
The generated diff in practice isn't terribly large. This will allow
more use of subdir local.mk includes due to fixes & improvements that
came after the 1.11 release series.
The newlib & libgloss dirs are already generated using autoconf-2.69.
To avoid merging new code and/or accidental regeneration using diff
versions, leverage config/override.m4 to pin to 2.69 exactly. This
matches what gcc/binutils/gdb are already doing.
The README file already says to use autoconf-2.69.
To accomplish this, it's just as simple as adding -I flags to the
top-level config/ dir when running aclocal. This is because the
override.m4 file overrides AC_INIT to first require the specific
autoconf version before calling the real AC_INIT.
- Currently, printf("%La\n", 1e1000L) crashes with segv due to lack
of frexpl() function. With this patch, frexpl() function has been
implemented in libm to solve this issue.
Addresses: https://sourceware.org/pipermail/newlib/2021/018718.html
So far the build mechanism in newlib only allowed to either define
machine-specific headers, or headers shared between all machines.
In some cases, architectures are sufficiently alike to share header
files between them, but not with other architectures. A good example
is ix86 vs. x86_64, which share certain traits with each other, but
not with other architectures.
Introduce a new configure variable called "shared_machine_dir". This
dir can then be used for headers shared between architectures.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
- From: Cesar Philippidis <cesar@codesourcery.com>
Date: Tue, 10 Apr 2018 14:43:42 -0700
Subject: [PATCH] nvptx port
This port adds support for Nvidia GPU's, which are primarily used as
offload accelerators in OpenACC and OpenMP.
previous commit 4c90db7bc8 introduced
a compile time error because libm/common/s_infconst.c used the remove
__fmath, __dmath, and __ldmath union types.
Since this is very old, and unused for a very long time, just drop the
file and thus the __infinity constants entirely.
Exception: Cygwin exports __infinity from the beginning. There's a very,
VERY low probability that any existing executable or lib still uses this
constant, but we just keep it in for backward compat, nevertheless.
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
https://sourceware.org/ml/newlib/2016/msg01139.htmlhttps://gcc.gnu.org/ml/gcc/2016-12/msg00010.html
There is no change if libtool is used.
Some run-time support libraries provided by GCC (e.g. libgomp) use
configure checks to detect certain features, e.g. availability of
thread-local storage. The configure script generates a test program and
tries to compile and link it. It should use target libraries and
startfiles of the build tree if available and not random ones from the
installation prefix for this procedure. The search directories
specified by -B are a bit special, see for_each_path() in gcc.c of the
GCC sources. First a search is performed on all search paths with the
multilib directory appended (if desired), then a second search is
performed on demand with the base directory only. For each multilib
there is a "newlib" subdirectory. This directory is specified by a -B
option for the support libraries. In order to find the newlib artifacts
(ctr0.o, libc.a, libg.a and libm.a) they must be located in a proper
multilib subdirectory withing the build directory.
Signed-off-by: Sebastian Huber <sebastian.huber@embedded-brains.de>
Ensure the Python Lex/Yacc (PLY) cache used by makedocbook is initialized
before it is used by parallelizable rules to make the DocBook XML, as it
appears that these can collide in cache generation, leading to errors.
Signed-off-by: Jon Turney <jon.turney@dronecode.org.uk>
Currently, the newlib version information needs to be updated in two places:
- newlib/acinclude.m4
- newlib/libc/include/sys/features.h
The goal of this patch is to:
- supply a single location for defining the newlib version
information: newlib/acinclude.m4
- define __NEWLIB__, __NEWLIB_MINOR__ and __NEWLIB_PATCHLEVEL__
This is in line with what gcc does for its version macros. See:
https://gcc.gnu.org/onlinedocs/cpp/Common-Predefined-Macros.html
This patch moves the definition of the _NEWLIB_VERSION, __NEWLIB__
and __NEWLIB_MINOR__ macros from newlib/libc/include/sys/features.h,
to the newly generated newlib/_newlib_version.h file. Additionally,
the __NEWLIB_PATCHLEVEL__ macro was created, for completeness.
In order to stay backwards compatible, newlib/_newlib_version.h gets
included by newlib/newlib.h and newlib/libc/include/sys/features.h.
Note: This patch does _not_ include the modifications to the following
files, as these should all be generated any way.
*Makefile.in,
*aclocal.m4,
*configure
stamp-* files
Signed-off-by: Pieter du Preez <pdupreez@gmail.com>
* configure.in: Comment out the --enable-newlib-fp-hw option
as the mathfp library is inaccurate and should not be used.
* Makefile.am: Add comment regarding the mathfp directory.
* configure: Regenerated.
* Makefile.in: Ditto.
* libm/mathfp/README: New file that details why the mathfp
directory is not used.
* configure.host: Add noinclude variable to allow specification
of header files to remove from installation.
* acinclude.m4: Provide NO_INCLUDE_LIST variable based on
noinclude variable in configure.host.
* configure: Regenerated.
* Makefile.am: Remove all header files in NO_INCLUDE_LIST.
* Makefile.in: Regenerated.
* configure.in: Add configuration test for long double type existing
and set flag _HAVE_LONG_DOUBLE if true. Fix INIT_ARRAY (.init_array)
and _LDBL_EQ_DBL tests to not link so that will work with
cross-compilers.
* configure: Regenerated.
* Makefile.in: Ditto.
* newlib.hin: Add _HAVE_LONG_DOUBLE flag.
* libc/include/math.h: Change non-builtin defines for HUGE_VAL,
HUGE_VALF, and HUGE_VALL to be constant expressions. Add definitions
for the non-builtin case for INFINITY and NAN. Gate HUGE_VALL and
union __ldmath definitions with (new) _HAVE_LONG_DOUBLE.
*libm/common/s_infconst.c: Change definitions to use values from
float.h instead of non-so-portable integer forms. Mark as being
deprecated (because now removed from math.h, are not used anywhere
in Newlib, itself).
* acinclude.m4: Check for readelf tool.
* configure.in: Use ${READELF} instead of hard-coding.
* Regenerate all aclocal.m4, Makefile.in, and configure files.
* Makefile.am (MATHOBJS_IN_LIBC): Add s_isinfd, sf_isinff,
s_isnand, and sf_isnanf object files.
* Makefile.in: Regenerated.
* libc/include/ieeefp.h: Undef isnan and isinf to avoid
conflict if <math.h> has previously been included.
* libc/include/math.h
* libm/common/Makefile.am: Add new s_isinfd, s_isnand, sf_isinff,
and sf_isnanf files. Also support s_isnan, sf_isnan, s_isinf, and
sf_isinf files which have been moved from math/mathfp directories.
* libm/common/Makefile.in: Regenerated.
* libm/common/s_isinfd.c: New file.
* libm/common/s_isnand.c: Ditto.
* libm/common/sf_isinff.c: Ditto.
* libm/common/sf_isnanf.c: Ditto.
* libm/common/s_isinf.c: Moved from libm/math directory.
* libm/common/s_isnan.c: Ditto.
* libm/common/sf_isinf.c: Ditto.
* libm/common/sf_isnan.c: Ditto.
* libm/math/Makefile.am: Remove isinf and isnan family functions
which have been moved into common directory.
* libm/mathfp/Makefile.am: Ditto.
* libm/math/Makefile.in: Regenerated.
* libm/mathfp/Makefile.in: Ditto.
* libm/math/s_isinf.c: Removed.
* libm/math/s_isnan.c: Ditto.
* libm/math/sf_isinf.c: Ditto.
* libm/math/sf_isnan.c: Ditto.
* libm/mathfp/s_isinf.c: Ditto.
* libm/mathfp/s_isnan.c: Ditto.
* libm/mathfp/sf_isinf.c: Ditto.
* libm/mathfp/sf_isnan.c: Ditto.
* Makefile.am: Add include files under bits sub-directory.
* Makefile.in: Regenerated.
* libc/sys/linux/argp/argp-fs-xinl.c: Set __OPTIMIZE__ to
actual value of 1 to be compatible with newer glibc headers.
* libc/sys/linux/sys/cdefs.h: Fix to be compatible with newer
glibc headers.
* libc/sys/linux/sys/dirent.h: Ditto.
* libc/sys/linux/argp/argp-xinl.c: Ditto.
* libc/sys/linux/dl/dl-runtime.c: Make sure fixup and
profile_fixup routines are marked used so they won't be
optimized away.
* libc/sys/linux/dl/dl-cache.c: Don't use weak_extern macro
to mark functions as weak.
* libc/sys/linux/dl/dl-open.c: Ditto.
* libc/sys/linux/iconv/gconv_open.c: Fix to obey new gcc4
rules about lvalues.
* libc/sys/linux/iconv/gconv_simple.c: Ditto.
* libc/sys/linux/linuxthreads/bits/libc-lock.h: Don't use
weak_extern macro to mark functions as weak. Instead always
use #pragma weak.
* iconvdata/jis0208.h: Fix to work with gcc4.
* libc/sys/linux/dl/dl-load.c: Ditto.
* libc/sys/linux/dl/dl-reloc.c: Ditto.
* libc/sys/linux/dl/do-rel.h: Ditto.
* libc/sys/linux/dl/dynamic-link.h: Ditto.
* libc/sys/linux/include/ltdl.h: Ditto.
* libc/sys/linux/machine/i386/dl-machine.h: Ditto.
* libc/sys/linux/machine/i386/weakalias.h: Ditto.
* libc/sys/linux/net/ns_ntoa.c: Ditto.
* libc/sys/linux/bits/initspin.h: New file.
* libc/sys/linux/bits/libc-lock.h: Ditto.
* libc/sys/linux/bits/pthreadtypes.h: Ditto.
* libc/sys/linux/bits/typesizes.h: Ditto.
* Makefile.am (site.exp): Set tmpdir.
* Makefile.in: Regenerated.
* testsuite/lib/checkoutput.exp (newlib_check_output): Put
executables in $tmpdir.
* testsuite/lib/flags.exp (libgloss_link_flags): Use the original
libgloss version if not running in the build directory.
* testsuite/lib/newlib.exp (newlib_init): Put testglue.o in
$tmpdir.
* testsuite/lib/passfail.exp (newlib_pass_fail): Put executables
in $tmpdir.
* configure.in: Add new check to see if compiler supports
aliasing of arrays and define _HAVE_ARRAY_ALIASING if true.
* configure: Regenerated.
* Makefile.in: Ditto.
* newlib.hin: Add _HAVE_ARRAY_ALIASING.
* libc/ctype/ctype_.c: Check for _HAVE_ARRAY_ALIASING before
aliasing the _ctype_ array to _ctype_b.
* libc/include/ctype.h: Change macros to use __ctype_ptr. Mark
_ctype_ as deprecated.
* libc/stdlib/strtod.c (_strtod_r): Add NaN support.
* (strtof): Ditto.
* libc/stdio/vfscanf.c (__svfscanf_r): Ditto.
* Makefile.am (MATHOBJS_IN_LIBC): Add s_nan and sf_nan
functions for use by strtod and strtof.
* Makefile.in: Regenerated.
* configure.in: Change check for libc/include in ${CC} to
use an intermediate value so as to work with different shells.
* configure: Regenerated.
* Makefile.in: Ditto.
* libc/sys/rtems/machine: New directory.
* libc/sys/rtems/machine/limits.h, libc/sys/rtems/machine/param.h,
libc/sys/rtems/sys/param.h, libc/sys/rtems/sys/syslimits.h,
libc/sys/rtems/sys/utime.h: New files added to make *-rtems newlib
targets more BSD like when installed without requiring files to
be overwritten at install point when RTEMS itself is installed.
* Makefile.am: Pick up system dependent machine .h files such as
might be found on a BSD-ish system.
* Makefile.in: Regenerate.
* libc/include/machine/types.h: When on an RTEMS target, define a
few BSD flavor types.
* Makefile.am (install-data-local): Move install of build
newlib.h after installing headers in libc/include so as to
overwrite default newlib.h.
* Makefile.in: Regenerated.
* Makefile.am(stmp-targ-include): Copy newlib.h to targ-include.
(install-data-local): Install newlib.h.
* Makefile.in: Regenerated.
* aclocal.m4: Ditto.
* configure: Ditto.
* configure.in: Add AM_CONFIG_HEADER to generate newlib.h based on
newlib.hin. Add AC_DEFINE_UNQUOTED entries for _ELIX_LEVEL
and _NEWLIB_VERSION to fill in newlib.h header file entries.
In AC_OUTPUT statement, unset ac_file so multilib support does
not use last ac_file temporary used in newlib.h configuration.
* libc/include/_ansi.h: Include <newlib.h>.
* newlib.hin: New template file for newlib.h.
* stamp-h.in: New file.
* Makefile.am: Move cmath stuff into libc/sys/linux.
* Makefile.in: Regenerated.
* configure.host: Default -DMB_CAPABLE for x86-linux.
* libc/include/reent.h: Define _sbrk to take signed int argument.
* libc/include/sys/unistd.h: Ditto for _sbrk_r and sbrk.
* libc/locale/locale.c[MB_CAPABLE]: Add LC_MESSAGES support and
make locale name checking more efficient. Also allow "C-ISO-8859-1"
locale for LC_CTYPE and LC_MESSAGES.
* libc/reent/sbrkr.c: Change prototype to take ptrdiff_t.
* libc/sys/linux/brk.c: Change sbrk prototype.
* libc/sys/linux/include/time.h: Remove Cygwin stuff and
include <sys/features.h>.
(CLOCK_THREAD_CPUTIME): Renamed to CLOCK_THREAD_CPUTIME_ID.
(CLOCK_PROCESS_CPUTIME): Renamed to CLOCK_PROCESS_CPUTIME_ID.
* libc/sys/linux/sys/cdefs.h: Replace with glibc sys/cdefs.h
with a few local additions.
* libc/sys/linux/sys/features.h: New file.
* libc/sys/linux/sys/unistd.h: Change _sbrk_r and sbrk prototypes
to take signed argument.
* libc/syscalls/syssbrk.c: Change sbrk, _sbrk_r, and _sbrk
prototypes to take signed size argument.
libc/search/objectlist.awk.in.
* libc/Makefile.am (SUBDIRS): Add search.
(SUBLIBS): Add search/libsearch.la.
* libc/configure.in (AC_OUTPUT): Add search/Makefile.
* libc/search: New directory.
* libc/search/Makefile.am: New file.
* libc/search/extern.h: New file.
* libc/search/hash.c: New file.
* libc/search/hash.h: New file.
* libc/search/hash_bigkey.c: New file.
* libc/search/hash_buf.c: New file.
* libc/search/hash_func.c: New file.
* libc/search/hash_log2.c: New file.
* libc/search/hash_page.c: New file.
* libc/search/hcreate.3: New file.
* libc/search/hcreate.c: New file.
* libc/search/hcreate.c~: New file.
* libc/search/hcreate_r.c: New file.
* libc/search/ndbm.c: New file.
* libc/search/page.h: New file.
* libc/search/tdelete.c: New file.
* libc/search/tdestroy.c: New file.
* libc/search/tfind.c: New file.
* libc/search/tsearch.3: New file.
* libc/search/tsearch.c: New file.
* libc/search/twalk.c: New file.
* libc/include/db.h: New file.
* libc/include/ndbm.h: New file.
* libc/include/search.h: New file.
* libc/include/sys/queue.h: New file.
* libc/include/sys/cdefs.h: New file.
* libc/include/sys/param.h
[__IEEE_LITTLE_ENDIAN,__IEEE_BIG_ENDIAN]: Set BYTE_ORDER to
LITTLE_ENDIAN or BIG_ENDIAN.
* libc/include/sys/errno.h (EFTYPE): New macro.
* libc/search/bsearch.c: Move from libc/stdlib.
* libc/search/qsort.c: Likewise.
* libc/stdlib/Makefile.am (LIB_SOURCES): Remove bsearch.c and
qsort.c.
(CHEWOUT_FILES): Remove bsearch.def and qsort.def.
* libc/stdlib/stdlib.tex: Remove references to bsearch and qsort.
* Makefile.am: Don't pass $toollibdir down directly in
AM_MAKEFLAGS as it causes all multilibs to use the same toollibdir.
Pass it under the name: top_toollibdir.
* Makefile.in: Regenerated.
* Makefile.am: Copy and install headers from sys/machine/include
directory. Also pass $toollibdir to lower-level directories.
* Makefile.in: Regenerated.
* libc/include/stdio.h[!_REENT_ONLY]: Change stdin, stdout, and
stderr to use _REENT macro instead of _impure_ptr directly.
* libc/include/sys/config.h[__i386__][__linux__]: Define
__DYNAMIC_REENT__.
* libc/include/sys/reent.h[!_REENT_ONLY]: Change _REENT macro to be
call to __getreent() function if !__SINGLE_THREAD__ and
__DYNAMIC_REENT__ is set.
* libc/reent/Makefile.am: Add support for getreent.c.
* libc/reent/Makefile.in: Regenerated.
* libc/string/strerror.c: Add check if EOPNOTSUPP and ENOTSUP are same.
* libc/sys/linux/Makefile.am: Add support for new files.
* libc/sys/linux/configure.in: Add $EXTRA_DIRS variable.
* libc/sys/linux/Makefile.in: Regenerated.
* libc/sys/linux/configure: Ditto.
* libc/sys/linux/io.c: Add poll syscall. Also weak-alias
__close, __read, __write, __poll, __open, __lseek, __fcntl from
their __libc_ counterparts.
* libc/sys/linux/io64.c: Add __libc_ prefix to lseek64 and open64
and weak-alias to regular names.
* libc/sys/linux/pread64.c: Rename to __libc_pread64 and weak-alias
to pread64 and __pread64.
* libc/sys/linux/process.c: Weak_alias __libc_getpid to __getpid.
* libc/sys/linux/pwrite64.c: Rename to __libc_pwrite64 and
weak-alias to pwrite64.
* libc/sys/linux/sched.c: Weak-alias __libc_sched_getparam,
__libc_sched_getscheduler, __libc_sched_get_priority_max,
__libc_sched_get_priority_min, and __libc_sched_setschedule to
name with __ instead of __libc_.
* libc/sys/linux/siglongjmp.c: Include <machine/weakalias.h>.
Rename siglongjmp to __libc_siglongjmp and weak-alias to siglongjmp.
Call __libc_longjmp instead of longjmp, from __libc_siglongjmp.
* libc/sys/linux/signal.c: Rename raise to __libc_raise and weak-alias
to raise.
* libc/sys/linux/socket.c: Weak-alias __libc_connect to __connect and
__libc_send to __send.
* libc/sys/linux/time.c: Weak-alias __libc_gettimeofday to
__gettimeofday.
* libc/sys/linux/wait.c: Rename wait to __libc_wait and weak-alias
it to wait. Rename wait3 to __libc_wait3 and weak-alias it to wait3.
* libc/sys/linux/include/setjmp.h: Use __jmp_buf in sigjmp_buf
type and typedef __jmp_buf to jmp_buf.
* libc/sys/linux/machine/i386/Makefile.am: Add syscalls.c and
setjmp.S.
* libc/sys/linux/machine/i386/Makefile.in: Regenerated.
* libc/sys/linux/machine/i386/crt0.c: Add support to clear .bss
section.
* libc/sys/linux/machine/i386/socketcall.h: Change to use __libc_
prefix for function macros and then use weak_alias() to regular names.
* libc/sys/linux/machine/i386/syscall.h: Ditto.
* libc/sys/linux/sys/errno.h: Define EOPNOTSUP to be ENOTSUP.
* libc/sys/linux/sys/stdio.h: Define _flockfile and _funlockfile
to be flockfile() and funlockfile() respectively.
* libc/sys/linux/sys/types.h
* libc/reent/getreent.c: New file.
* libc/sys/linux/flockfile.c: Ditto.
* libc/sys/linux/funlockfile.c: Ditto.
* libc/sys/linux/getreent.c: Ditto.
* libc/sys/linux/pread.c: Ditto.
* libc/sys/linux/pwrite.c: Ditto.
* libc/sys/linux/raise.c: Ditto.
* libc/sys/linux/system.c: Ditto.
* libc/sys/linux/tcdrain.c: Ditto.
* libc/sys/linux/machine/i386/i386mach.h: Ditto.
* libc/sys/linux/machine/i386/setjmp.S: Ditto.
* libc/sys/linux/machine/i386/syscalls.c: Ditto.
* libc/sys/linux/machine/i386/weakalias.h: Ditto.
* libc/sys/linux/machine/i386/include/setjmp.h: Ditto.
* configure.in (CC_FOR_NEWLIB): New variable that
bases on $(CC) and adds targ-include and libc/include as
-isystem directives if they are not already part of $(CC).
* Makefile.am (AM_MAKEFLAGS): Change setting of CC to equal
$(CC_FOR_NEWLIB).
* configure: Regenerated.
* Makefile.in: Ditto.
(CRT1_DIR): Set to ${crt1_dir}/ if crt1_dir is non-empty.
* Makefile.am: Change all occurrences of $(CRT0_DIR)/$(CRT0) to
$(CRT0_DIR)$(CRT0) to prevent make warnings. Likewise for
$(CRT1_DIR)/$(CRT1).
* libc/machine/xstormy16/Makefile.in: Regenerated.
* libc/machine/xstormy16/aclocal.m4: Regenerated.
* libc/machine/xstormy16/configure: Regenerated.
* Makefile.am: Add support for installing crt1.o if one exists.
* configure.host: Specify crt1.o for linux.
* configure.in: Expose CRT1 and CRT1_DIR for Makefile.am to use.
* Makefile.in: Regenerated.
* configure: Ditto.
* libc/include/sys/unistd.h (_SC_STREAM_MAX, _SC_PRIORITY_SCHEDULING):
Added for non-Cygwin, non-RTEMS configurations.
* libc/sys/linux/Makefile.am: Add support for crt1 and sysconf.
* libc/sys/linux/Makefile.in: Regenerated.
* libc/sys/linux/crt1.c: New empty file to override one defaulted
by gcc. This fixes problem with reconfiguring linux newlib build.
* libc/sys/linux/sysconf.c: New file.
* Makefile.am: Fixed install-data-local target to use
$(mkinstalldirs) for the installed header files to ensure
the directories exist before copying.
* Makefile.in: Regenerated.
* Makefile.am: $(INSTALL), $(INSTALL_DATA), and $(INSTALL_PROGRAM)
can be a relative path to $(top_srcdir)/install.sh so ensure the
autoconf detected settings are properly passed recursively.
Similarly, add AM_MAKEFLAGS to FLAGS_TO_PASS so they also get passed
properly to subdirectories.
* Makefile.in: Regenerated.
* Makefile.in: Regenerate.
* libc/include/_ansi.h (_EXFUN): Define specially for __CYGWIN__.
(_EXPARM): New macro for defining a function parameter.
* libc/include/stdlib.h: Use _EXPARM.
* libc/stdlib/mallocr.c: Don't build cfree for Cygwin.