Mike Frysinger [Sun, 13 Feb 2022 08:03:12 +0000 (03:03 -0500)]
newlib: separate out libg from libc
Make this a separate target from libc so that we can migrate libc over
to automake more easily. Having it integrated into the libc target is
difficult to handle when using automake rules which expect a one-to-one
mapping between names & inputs.
Mike Frysinger [Sun, 13 Feb 2022 07:44:31 +0000 (02:44 -0500)]
newlib: libc: reshuffle include order for the manual
When migrating the manual to the top-level, the include order was
sorted by name of the subdir. But this changed the chapter order
of the manual in the process. Change the sorting back to match
existing chapters and update the comments to explain.
Mike Frysinger [Tue, 15 Feb 2022 02:37:38 +0000 (21:37 -0500)]
newlib: powerpc: switch to Automake conditionals
Using xxx_LIBADD, xxx_DEPENDENCIES, and EXTRA_xxx_SOURCES is one way of
conditionally including files into a target. But it's meant more for the
cases where the variables added to LIBADD & DEPENDENCIES are constructed
via substitution (e.g. AC_SUBST) or other dynamic methods. With Automake
conditionals, then the much simpler form is to conditionally append to
the xxx_SOURCES variable and let Automake sort everything out.
Mike Frysinger [Sat, 12 Feb 2022 09:58:24 +0000 (04:58 -0500)]
libgloss: merge wince configure script up a level
Move the minor wince-specific logic to a dedicated file & namespace
them so we can merge its configure logic up a level. The makefile
is a bit tricky, but maybe it still works.
Mike Frysinger [Mon, 7 Feb 2022 06:44:45 +0000 (01:44 -0500)]
newlib: fix mips fenv.o handling
Commit 8fa73a9f8414a4926365324c2fe32a237c2eb91d changed how fenv.c is
compiled wrt mips16 targets used the wrong variable to add fenv.o to
libm.a. Fix that thinko so it's included in the build again.
Mike Frysinger [Sat, 12 Feb 2022 06:59:13 +0000 (01:59 -0500)]
libgloss: build with -nostdinc
We don't want libgloss building against C library headers that happened
to be installed with the toolchain, so add -nostdinc to the build. We
still need access to the compiler internal headers, so probe those and
include them via -isystem. This uses a similar probing style as glibc,
which has used it for over a decade, so it should be safe & stable.
This should prevent any latent bugs due to testing with a toolchain that
is fully configured & installed already.
Mike Frysinger [Sat, 12 Feb 2022 10:04:49 +0000 (05:04 -0500)]
libgloss: aarch64: merge cpu-init/ up a level
The cpu-init/configure script isn't doing anything useful, so merge
the logic up to the parent dir. This is how the arm/ tree integrates
its cpu-init/ subdir too.
Mike Frysinger [Fri, 11 Feb 2022 12:11:15 +0000 (07:11 -0500)]
libgloss: merge mn10300 configure script up a level
Move the minor mn10300-specific logic to a dedicated file & namespace
them so we can merge its configure logic up a level. part_specific_obj
wasn't used anywhere (looks like copy & paste left over from mips), so
drop it entirely.
Mike Frysinger [Fri, 11 Feb 2022 12:04:06 +0000 (07:04 -0500)]
libgloss: merge mn10200 configure script up a level
The mn10200-specific logic (setting up part_specific_obj) isn't used
by the build anywhere -- looks like copy & paste left overs from mips.
So punt that & merge the target_makefile_frag_path up to the top-level.
Mike Frysinger [Fri, 11 Feb 2022 11:58:43 +0000 (06:58 -0500)]
libgloss: m68k: switch to AC_NO_EXECUTABLES
Use this macro rather than hacking up the LDFLAGS settings. This will
make it easier to merge the logic into the top-level which is already
using AC_NO_EXECUTABLES.
Mike Frysinger [Wed, 16 Feb 2022 02:05:25 +0000 (21:05 -0500)]
newlib: rtems: drop redundant header install
The top-level newlib dir already takes care of recursing into the
sys/xxx/include/ subdirs and installing any headers found, so the
rtems subdir doesn't need to do this itself.
Replace the custom build rules (which require copying & pasting from the
current Makefile) with small stub files. This allows us to drop the rules
entirely and let Automake provide everything.
Mike Frysinger [Mon, 14 Feb 2022 06:00:11 +0000 (01:00 -0500)]
newlib: i386/xstormy16: drop unused -I libm/common flag
These subdirs don't actually use anything from libm. The common dir
in particular only has 4 header files, and none are included here.
The xstormy16 code has a comment mentioning why this hack is here, but
it refers to code that was removed when its configure script was merged
up a level.
Takashi Yano [Wed, 16 Feb 2022 09:13:02 +0000 (18:13 +0900)]
Cygwin: wincap: Add capabilities for Windows 11.
- The capability changes since Windows 11 have been reflected in
wincap.cc. The capability has_con_broken_tabs is added, which is
false since Windows 11.
Mike Frysinger [Mon, 14 Feb 2022 05:52:55 +0000 (00:52 -0500)]
newlib/libgloss: drop unused $(CROSS_CFLAGS)
This is used in a bunch of places, but nowhere is it ever set, and
nowhere can I find any documentation, nor can I find any other project
using it. So delete the flags to simplify.
Mike Frysinger [Mon, 14 Feb 2022 00:15:57 +0000 (19:15 -0500)]
newlib: drop support for decstation & sunos systems
These targets don't actually cross-compile -- they try to pull some
objects out of the host's /lib/libc.a, /lib/libm.a, and /lib/crt0.o
directly and merge them into newlib's own libraries. This is hard
to keep working and impossible to test. Considering the vintage of
such targets, and gcc dropping them many many years ago, drop them
from newlib too. This will make cleaning up the build a lot easier.
Mike Frysinger [Thu, 10 Feb 2022 08:27:29 +0000 (03:27 -0500)]
newlib: phoenix: merge machine/ trampoline up a level
The machine/{configure,Makefile} files exist only to fan out to the
specific machine/$arch/ subdir. We already have all that same info
in the phoenix/ dir itself, so by moving the recursive configure and
make calls into it, we can cut off this logic entirely and save the
overhead.
Mike Frysinger [Thu, 10 Feb 2022 08:32:51 +0000 (03:32 -0500)]
newlib: phoenix: drop missing machine subdirs
These were never added to the tree, and as we transition from autoconf
to automake, it really wants the latter subdirs to always exist. These
don't, so delete the logic.
Andoni Arregi [Fri, 11 Feb 2022 11:16:00 +0000 (12:16 +0100)]
Improve lgammaf range for very small cases
The original cut for small arguments at |x|<2**-70 (copied from the
double version) produces that when computing nadj we get a subnormal
number for t*x and thus, the division of pi/subnormal will be INF and
the logarithm of it too, which is wrong as a result for lgammaf in this
range.
The proposed new limit seems to be safe and has been tested to
produce accurate results.
(Courtesy of Andreas Jung, ESA)
Takashi Yano [Sun, 13 Feb 2022 08:11:02 +0000 (17:11 +0900)]
Cygwin: console: Set console mode even if stdin/stdout is redirected.
- When non-cygwin app is started in console, console mode is set to
tty::native. However, if stdin is redirected, current code does not
set the input mode of the console. In this case, if the app opens
"CONIN$", the console mode will not be appropriate for non-cygwin
app. This patch fixes the issue.
Takashi Yano [Sun, 13 Feb 2022 03:03:45 +0000 (12:03 +0900)]
Cygwin: console: Fix console mode for non-cygwin inferior of GDB.
- Currently, there is no chance to change console mode for non-cygwin
inferior of GDB. With this patch, the console mode is changed to
tty::native in CreateProcess() and ContinueDebugEvent() hooked in
fhandler_console.
Takashi Yano [Sat, 12 Feb 2022 20:12:18 +0000 (05:12 +0900)]
Cygwin: pty: Fix a bug in tty_min::segpgid().
- In tty_min::setpgid(), a pointer to fhandler instance is casted to
fhandler_pty_slave and accessed even if terminal is not a pty slave.
This patch fixes the issue.
Takashi Yano [Sat, 12 Feb 2022 17:16:32 +0000 (02:16 +0900)]
Cygwin: pty: Discard input in from_master_nat pipe on signal as well.
- Currently, pty discards input only in from_master pipe on signal.
Due to this, if pty is started without pseudo console support and
start a non-cygwin process from cmd.exe, type adhead input is not
discarded on signals such as Ctrl-C. This patch fixes the issue.
Takashi Yano [Thu, 10 Feb 2022 08:47:51 +0000 (17:47 +0900)]
Cygwin: pty: Revise the code to wait for completion of forwarding.
- With this patch, the code to wait for completion of forwarding of
output from non-cygwin app is revised so that it can more reliably
detect the completion.
Takashi Yano [Thu, 10 Feb 2022 08:22:11 +0000 (17:22 +0900)]
Cygwin: pty: Prevent deadlock on echo output.
- If the slave process writes a lot of text output, doecho() can
cause deadlock. This is because output_mutex is held in slave::
write() and if WriteFile() is blocked due to pipe full, doecho()
tries to acquire output_mutex and gets into deadlock. With this
patch, the deadlock is prevented on the sacrifice of atomicity
of doecho().
Takashi Yano [Sat, 12 Feb 2022 08:51:55 +0000 (17:51 +0900)]
Cygwin: pty: Pass Ctrl-Z (EOF) to non-cygwin apps with disable_pcon.
- Previously, non-cygwin app running in pty started without pseudo
console support was suspended by Ctrl-Z rather than sending EOF.
Even worse, suspended app could not be resumed by fg command. With
this patch, Ctrl-Z (EOF for non-cygwin apps) is passed to non-cygwin
app instead of suspending that app. This patch also handles Ctrl-\
(QUIT) and Ctrl-D (EOF) as well.
Takashi Yano [Thu, 10 Feb 2022 07:53:47 +0000 (16:53 +0900)]
Cygwin: pty, console: Fix Ctrl-C handling for non-cygwin apps.
- Currently, if cat is started from cmd.exe which is started in cygwin
console, Ctrl-C terminates not only cat but also cmd.exe. This also
happens in pty in which pseudo console is disabled. This patch fixes
the issue.
Mike Frysinger [Sat, 12 Feb 2022 06:34:21 +0000 (01:34 -0500)]
libgloss: bfin: fix various warnings
No functional changes here, just fix warnings the compiler noticed.
bfin/syscalls.c:156:13: warning: conflicting types for built-in function ‘memset’
bfin/syscalls.c: In function ‘_unlink’:
bfin/syscalls.c:193:3: warning: passing argument 2 of ‘do_syscall’ discards qualifiers from pointer target type
bfin/syscalls.c:33:1: note: expected ‘void *’ but argument is of type ‘const char *’
bfin/syscalls.c: In function ‘_exit’:
bfin/syscalls.c:104:1: warning: ‘noreturn’ function does return
Mike Frysinger [Thu, 10 Feb 2022 05:49:08 +0000 (00:49 -0500)]
newlib: remove unused fenv flags
These look like they were just copied & pasted from common/Makefile.am.
The funcs in this dir are all stubs that don't actually call any math
or builtin functions, and a simple compile shows they produce identical
object code. So delete to simplify the build rules.
Mike Frysinger [Wed, 9 Feb 2022 04:51:17 +0000 (23:51 -0500)]
libgloss: csky: clean up unused m68k logic
It looks like csky was created by copying & pasting the m68k port,
but m68k-specific stuff was left over related to target selection.
The makefile doesn't do anything with it, so punt it all to make
the file much simpler.
- Currently, ENABLE_INSERT_MODE and ENABLE_QUICK_EDIT_MODE are cleared
if cygwin is started in console. These flags will not be recovered
even when exiting from cygwin. Also note that if ENABLE_EXTENDED_FLAGS
is once unset, then the flag ENABLE_QUICK_EDIT_MODE it's associated
with will no longer be preserved. Unfortunately, we're accidentally
stepping on this in fhandler_console::set_input_mode().
This patch solves this by carrying forward these flags in the place
where it had been ignoring them. Since the previous behaviour of
leaving these flags unset would essentially maintain their existing
state, adding the carry-over of the flags now should not alter console
behaviour.
Andoni Arregi [Wed, 9 Feb 2022 13:52:07 +0000 (14:52 +0100)]
Fix expf overflow limit
Correct the overflow limit in the variable o_threshold to be consistent
with the FLT_UWORD_LOG_MAX variable used by the internal implementation
of the expf algorithm itself.
The u_threshold variable has also been modified to be written in the
same format.
Note that this fix improves the situation but does not completely
correct the inconsistencies regarding the overflow and underflow limits
between the expf wrapper (wf_exp.c) and the expf algorithm itself
(ef_exp.c).
Currently these limits are different for the
_FLT_LARGEST_EXPONENT_IS_NORMAL and _FLT_NO_DENORMALS cases as well as
for the case where __OBSOLETE_MATH is not defined (only for the
underflow limit in this case).
Mike Frysinger [Tue, 1 Feb 2022 07:32:17 +0000 (02:32 -0500)]
newlib: libm: move configure into top-level
This kills off the last configure script under libm/ and folds it
into the top newlib configure script. The vast majority of logic
was already in the top configure script, so move the little that
is left into a libm/acinclude.m4 file.
Mike Frysinger [Mon, 7 Feb 2022 10:12:05 +0000 (05:12 -0500)]
newlib: drop libtool support
This was only ever used for i?86-pc-linux-gnu targets, but that's been
broken for years, and has since been dropped. So clean this up too.
This also deletes the funky objectlist logic since it only existed for
the libtool libraries. Since it was the only thing left in the small
Makefile.shared file, we can punt that too.
Mike Frysinger [Mon, 7 Feb 2022 09:57:29 +0000 (04:57 -0500)]
newlib: punt sys/linux support
This was only used by the i?86-pc-linux-gnu target which we've removed,
and even though it's using a "sys/linux/" dir to make it sound like it
only depends on the Linux kernel, it's actually tied to glibc APIs built
on top of Linux. Since the code relies on internal glibc APIs and has
been broken for some time, punt it all. If someone wants to bring it
back, they can try and actually keep the Linux-vs-glibc APIs separate.
Mike Frysinger [Mon, 7 Feb 2022 09:57:29 +0000 (04:57 -0500)]
newlib: drop i?86-pc-linux-* target support
This was added 20+ years ago. It seems to have very few (or no users)
as it only works on 32-bit x86 GNU/Linux (i.e. glibc) systems, and even
then only with old versions of glibc. It hasn't compiled in at least 5
years, but most likely been broken for more like 15 years -- it relies
on internal glibc APIs (like linuxthreads), and that code has changed
and been deleted significantly since.
This single target ends up dragging in a lot of non-trivial code that is
hard to keep working, and currently impossible to verify -- the libtool
and iconvdata and sys/linux/ code isn't used by anything else, but ends
up touching just about every build file in the tree. Punt the target so
we can start stripping out all these unique code paths.
This commit by itself just disables the target. We'll start deleting the
individual unused pieces in followups.
Mike Frysinger [Mon, 17 Jan 2022 09:12:11 +0000 (04:12 -0500)]
libgloss: convert top level to automake
The top level dir isn't doing anything interesting, just recursing into
subdirs. So this change isn't terribly exciting. But it sets us up for
doing more fun stuff in follow up commits.
Mike Frysinger [Wed, 9 Feb 2022 04:53:13 +0000 (23:53 -0500)]
libgloss: m68k: rename $DO to $TARGET
The common $DO variable is used by the multilib logic to control which
target to multiplex. But the m68k subdir is also using $DO to control
which target (m68k or fido) to build. As we flatten things to automake,
this conflict shows up and breaks the m68k build. Just rename the m68k
variable to something unique to avoid it.
Mike Frysinger [Sat, 5 Feb 2022 06:14:50 +0000 (01:14 -0500)]
newlib: switch to standard AC_PROG_CC
Now that we use AC_NO_EXECUTABLES, and we require a recent version of
autoconf, we don't need to define our own copies of these macros. So
switch to the standard AC_PROG_CC.
Mike Frysinger [Sat, 5 Feb 2022 06:05:06 +0000 (01:05 -0500)]
newlib: move AC_NO_EXECUTABLES logic up to common code
This logic was added to libc & libm to get it working again after some
reworks in the CPP handling, but now that that's settled, let's move
this to the common newlib configure logic. This will make it easier
to consolidate all the configure calls into the top-level newlib dir.
This does create a lot of noise in the generate scripts, but that's
because of the ordering of the calls, not because of correctness. We
will try to draw that back down in follow up commits as we modernize
the toolchain calls in here.
Mike Frysinger [Mon, 7 Feb 2022 06:15:00 +0000 (01:15 -0500)]
newlib: simplify nds32 automake checks
This code is a bit more convoluted than it needs to be. GPR_SOURCES
is never set to anything, and the automake checks use negative logic
to add the SP & DP source files to dedicated variables that are only
expanded once. Get rid of the unused variable, use normal boolean
logic, and collapse the source settings into a single variable.
Mike Frysinger [Sat, 22 Jan 2022 02:50:20 +0000 (21:50 -0500)]
newlib: libc: move manual into top-level build
This doesn't migrate all the docs, just the libc's manual (pdf/info).
This is to show the basic form of migrating the chew files.
For subdirs that didn't have any docs, I've stripped their settings
for clarity. If someone wanted to suddenly add docs, they can add
the corresponding Makefile.inc files easily.
Mike Frysinger [Sat, 22 Jan 2022 01:59:36 +0000 (20:59 -0500)]
newlib: libc: include all chapters all the time in the manual
THe stdio subdir is actually required by the documentation. The
stdio/def is handled dynamically, but libc.texi always expects it
to be included, and fails if it isn't. So making it required when
building docs is safe.
The xdr subdir is handled dynamically, but it doesn't include any
docs, so the dynamic logic isn't (currently) adding any value. So
making it required when building docs is safe.
That leaves: iconv, stdio64, posix, and signal subdirs. The chapters
have a little disclaimer saying they are system-dependent, but even
then, imo having stable manuals regardless of the target is preferable,
and we can add more disclaimer language to these chapters if we want.
This doesn't touch the man page codepaths, just the info/pdf.
Mike Frysinger [Fri, 4 Feb 2022 06:17:54 +0000 (01:17 -0500)]
libgloss: restore multilib settings in subdir makefiles
Commit 754f8def0dfeeb43afa5a96ad1971fd0ef02c419 ("libgloss: merge stub
arch configure scripts up a level") had an unintended side-effect: the
MULTI* variables in the Makefiles no longer get rewritten at configure
time in the subdirs. Only the top-level Makefile still is. This is
because the configure integration of multilib (both the way libgloss
did it manually and the way AM_ENABLE_MULTILIB does it) only rewrites
"Makefile".
We could try propagating the MULTI* variables from libgloss/Makefile
down via FLAGS_TO_PASS, but this runs into a limitation: the multilib
logic uses this variable to switch from libgloss/ to each multilib
libgloss/, and libgloss uses this variable to enter subdirectories.
The latter we want, but the former ends up overridding the Makefile
environment. We could side-step that with some GNU Make directives,
but it feels like we're getting a bit too deep down the rabbit hole.
Instead, let's call config-ml.in ourselves for each subdir Makefile
that the top-level configure generates. This restores the previous
behavior and should be less risky in general.
This logic should be unnecessary when/if we switch libgloss over to
a non-recursive Automake build (since all build+install settings are
in the single libgloss/Makefile), but it'll be a while before we can
land that rework, so let's fix this up now.
- formatting
- use array pointer as argument rather than variable arguments
- syntactical fixes
- add comments
- drop unnecessary recomputation of all section VMAs.
Mike Frysinger [Tue, 1 Feb 2022 05:46:42 +0000 (00:46 -0500)]
newlib: arm & v850: simplify build rules
Let automake manage whether the objects are included in lib.a. This
fixes failures after to commit 71086e8b2d70c1e71a8372f35d9901505fc72905
("newlib: delete (most) redundant lib_a_CCASFLAGS=$(AM_CCASFLAGS)") due
to automake generating different set of implicit rules, and the code in
here assuming the names of the generated objects.
Change dllfixdbg to keep the input DLL intact and just generate
a new DLL matching the debug file. Fix Makefile rule accordingly.
The result is, cygwin0.dll is the original DLL created with full
debug sections and stays that way throughout the build process.
Only new-cygwin1.dll will become the stripped DLL matching with
the file containing the debug sections cygwin1.dbg. This is ok,
because commit ba02fef995ac ("Cygwin: Makefile.am: fix DLL build rule")
made new-cygwin1.dll the DLL to be installed.
Takashi Yano [Thu, 3 Feb 2022 03:00:14 +0000 (12:00 +0900)]
Cygwin: path: Fix UNC path handling for SMB3 mounted to a drive.
- If an UNC path is mounted to a drive using SMB3.11, accessing to
the drive fails with error "Too many levels of symbolic links."
This patch fixes the issue.
A single Makefile rule creates three files in three steps, the second
and third one never showing up in dependencies. The next step creating
the link lib only depends on the first of these files. Even if the
second or third step in the DLL build rule fails, the next make
invocation never picks up on this and just goes ahead creating the
link lib.
Fix this by splitting the DLL build rule into three rules, with
every step on the way depending on the previous rule. Also fix up
the names, TEST_DLL_NAME just doesn't cut it.
Mike Frysinger [Mon, 24 Jan 2022 04:24:52 +0000 (23:24 -0500)]
libgloss: move to ../config/multi.m4 for multilib logic
The current libgloss multilib logic is almost exactly the same as the
config/multi.m4, and the differences should be minor, so switch over
to that to delete custom logic on ourside.
The insertions here look larger and that's because none of the scripts
were declaring --enable-multilib explicitly even though they checked the
flag and changed behavior.
Mike Frysinger [Mon, 24 Jan 2022 05:12:58 +0000 (00:12 -0500)]
libgloss: merge epiphany & libnosys & or1k configure scripts up a level
These subdirs have unique configure scripts to do some compiler tests.
The checks should work for all targets, so hoist them up to the top
libgloss dir. This should allow us to delete these subdir configure
scripts.
It means the top-level gains autoheader support, but that's fine.
It wasn't exporting any defines previously (i.e. -D into CPPFLAGS),
and all of the defines it now exports are only used by code in the
libnosys subdir which was expecting to have a config.h.
Mike Frysinger [Wed, 2 Feb 2022 02:37:00 +0000 (21:37 -0500)]
newlib: rename libc_cv_ prefix to newlib_cv_
We've been using both libc_cv_ and newlib_cv_ for our cache vars.
Let's consolidate on newlib_cv_ to avoid conflicts with glibc which
is already using the libc_cv_ prefix.
Mike Frysinger [Fri, 28 Jan 2022 10:17:46 +0000 (05:17 -0500)]
newlib: add AC_CACHE_CHECK sugar around preprocessor checks
This isn't strictly necessary, but it makes for much clearer logs as
to what the target is doing, and provides cache vars for anyone who
wants to force the test a different way, and it lets the build cache
its own results when rerunning config.status.
Mike Frysinger [Tue, 1 Feb 2022 23:13:53 +0000 (18:13 -0500)]
newlib: delete unused iconvdata subdir config
Since commit dcbff9eea71d06454e7d55d6b7e72672c0987d6d ("newlib: merge
iconvdata into top-level Makefile"), there is no configure script in
the iconvdata/ subdir, so this call will just issue a warning and not
do anything useful. Punt it.