Browse Source

docs: cleanup directory, fix some porting information

Waldemar Brodkorb 6 years ago
parent
commit
dc7ad97385
6 changed files with 4 additions and 528 deletions
  1. 0 110
      docs/man/arc4random.3
  2. 0 73
      docs/man/ldconfig.8
  3. 0 17
      docs/man/ldd.1
  4. 4 15
      docs/porting.txt
  5. 0 64
      docs/probe_math_exception.c
  6. 0 249
      docs/sigaction.txt

+ 0 - 110
docs/man/arc4random.3

@@ -1,110 +0,0 @@
-.\" $OpenBSD: arc4random.3,v 1.19 2005/07/17 08:50:55 jaredy Exp $
-.\"
-.\" Copyright 1997 Niels Provos <provos@physnet.uni-hamburg.de>
-.\" All rights reserved.
-.\"
-.\" Redistribution and use in source and binary forms, with or without
-.\" modification, are permitted provided that the following conditions
-.\" are met:
-.\" 1. Redistributions of source code must retain the above copyright
-.\"    notice, this list of conditions and the following disclaimer.
-.\" 2. Redistributions in binary form must reproduce the above copyright
-.\"    notice, this list of conditions and the following disclaimer in the
-.\"    documentation and/or other materials provided with the distribution.
-.\" 3. All advertising materials mentioning features or use of this software
-.\"    must display the following acknowledgement:
-.\"      This product includes software developed by Niels Provos.
-.\" 4. The name of the author may not be used to endorse or promote products
-.\"    derived from this software without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
-.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
-.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
-.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
-.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
-.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
-.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-.\"
-.\" Manual page, using -mandoc macros
-.\"
-.Dd April 15, 1997
-.Dt ARC4RANDOM 3
-.Os
-.Sh NAME
-.Nm arc4random ,
-.Nm arc4random_stir ,
-.Nm arc4random_addrandom
-.Nd arc4 random number generator
-.Sh SYNOPSIS
-.Fd #include <stdlib.h>
-.Ft uint32_t
-.Fn arc4random "void"
-.Ft void
-.Fn arc4random_stir "void"
-.Ft void
-.Fn arc4random_addrandom "u_char *dat" "int datlen"
-.Sh DESCRIPTION
-The
-.Fn arc4random
-function provides a high quality 32-bit pseudo-random
-number very quickly.
-.Fn arc4random
-seeds itself on a regular basis from the kernel strong random number
-subsystem described in
-.Xr random 4 .
-On each call, an ARC4 generator is used to generate a new result.
-The
-.Fn arc4random
-function uses the ARC4 cipher key stream generator,
-which uses 8*8 8-bit S-Boxes.
-The S-Boxes can be in about (2**1700) states.
-.Pp
-.Fn arc4random
-fits into a middle ground not covered by other subsystems such as
-the strong, slow, and resource expensive random
-devices described in
-.Xr random 4
-versus the fast but poor quality interfaces described in
-.Xr rand 3 ,
-.Xr random 3 ,
-and
-.Xr drand48 3 .
-.Pp
-The
-.Fn arc4random_stir
-function reads data from a pseudo-random device, usually
-.Pa /dev/urandom,
-and uses it to permute the S-Boxes via
-.Fn arc4random_addrandom .
-.Pp
-There is no need to call
-.Fn arc4random_stir
-before using
-.Fn arc4random ,
-since
-.Fn arc4random
-automatically initializes itself.
-.Sh SEE ALSO
-.Xr rand 3 ,
-.Xr rand48 3 ,
-.Xr random 3
-.Sh HISTORY
-An algorithm called
-.Pa RC4
-was designed by RSA Data Security, Inc.
-It was considered a trade secret.
-Because it was a trade secret, it obviously could not be patented.
-A clone of this was posted anonymously to USENET and confirmed to
-be equivalent by several sources who had access to the original cipher.
-Because of the trade secret situation, RSA Data Security, Inc. can do
-nothing about the release of the ARC4 algorithm.
-Since
-.Pa RC4
-used to be a trade secret, the cipher is now referred to as
-.Pa ARC4 .
-.Pp
-These functions first appeared in
-.Ox 2.1 .

+ 0 - 73
docs/man/ldconfig.8

@@ -1,73 +0,0 @@
-.TH LDCONFIG 8 2005-08-15 uClibc "Linux Programmer's Manual"
-.SH NAME
-ldconfig \- updates symlinks and cache for shared libraries
-.SH SYNOPSIS
-.B ldconfig
-[
-.B -DvqnNX
-] [
-.B -f conf
-] [
-.B -C cache
-] [
-.B -r root
-] 
-.B dir ...
-.br
-.B ldconfig -l
-[
-.B -Dv
-] 
-.B lib ...
-.br
-.B ldconfig -p
-.SH DESCRIPTION
-.B ldconfig 
-creates the necessary links and cache to the most recent shared libraries 
-found in the directories specified on the command line, in the file 
-\fI/etc/ld.so.conf\fR, and in the default trusted directories (\fI/lib\fR and 
-\fI/usr/lib\fR).  The cache is used by the run-time linker.
-.B ldconfig
-checks the header and file names of the libraries it encounters when 
-determining which versions should have their links updated.
-
-.B Note:
-Some features may not exist depending on how uClibc was built
-.SH OPTIONS
-.TP
-.B -C cache
-use specified \fIcache\fR instead of default
-.TP
-.B -D
-debug mode, do not update links
-.TP
-.B -f conf
-use specified \fIconf\fR instead of default
-.TP
-.B -l
-library mode, manually link libraries
-.TP
-.B -n
-do not process standard trusted directories
-.TP
-.B -N
-do not update the library cache
-.TP
-.B -p
-print the current library cache
-.TP
-.B -q
-quiet mode, do not print warnings you should actually be reading
-.TP
-.B -r root
-chroot to \fIroot\fR before running
-.TP
-.B -v
-verbose mode, print things as we go, and generally be annoying
-.TP
-.B -X
-do not update the library links
-.SH BUGS
-Probably, make sure you complain when you find them:
-.br
-http://bugs.uclibc.org/

+ 0 - 17
docs/man/ldd.1

@@ -1,17 +0,0 @@
-.TH LDD 1 2005-08-15 uClibc "Linux Programmer's Manual"
-.SH NAME
-ldd \- Print shared library dependencies
-.SH SYNOPSIS
-.B ldd
-[
-.B OPTIONS
-]
-.B FILE ...
-.SH DESCRIPTION
-Prints shared library dependencies.
-.SH OPTIONS
-None actually, we lied about that part.
-.SH BUGS
-Probably, make sure you complain when you find them:
-.br
-http://bugs.uclibc.org/

+ 4 - 15
docs/PORTING → docs/porting.txt

@@ -56,12 +56,6 @@ you are hacking on.
   usually these are written in assembler, but you may be able to cheat and
   usually these are written in assembler, but you may be able to cheat and
   write them in C ... see other ports for more information
   write them in C ... see other ports for more information
 
 
-====================
-=== pthread deps ===
-====================
-
-TODO: nptl / linuxthreads / linuxthreads.old
-
 ====================
 ====================
 === ldso sysdeps ===
 === ldso sysdeps ===
 ====================
 ====================
@@ -72,17 +66,12 @@ TODO: nptl / linuxthreads / linuxthreads.old
 
 
 - enable ldso/shared options in your extra/Configs/Config.ARCH file
 - enable ldso/shared options in your extra/Configs/Config.ARCH file
 - you will need to create the following files in ldso/ldso/ARCH/
 - you will need to create the following files in ldso/ldso/ARCH/
-  dl-debug.h  dl-startup.h  dl-syscalls.h  dl-sysdep.h  elfinterp.c  resolve.S
-
-- dl-debug.h: define string versions of all the relocations of your arch in the
-  _dl_reltypes_tab array ... the index should match the actual reloc type, so
-  if the value of say R_X86_64_PC16 is 13, then "R_X86_64_PC16" better be at
-  index 13 of the array
+  dl-startup.h  dl-syscalls.h  dl-sysdep.h  elfinterp.c  resolve.S
 
 
 - dl-startup.h:
 - dl-startup.h:
   - define the _start function which should call _dl_start which takes just one
   - define the _start function which should call _dl_start which takes just one
     parameter ... a pointer to argc (usually on the stack)
     parameter ... a pointer to argc (usually on the stack)
-    glibc stores this function in libc/sysdeps/ARCH/dl-machine.h as RTLD_START
+    glibc stores this function in sysdeps/ARCH/dl-machine.h as RTLD_START
   - define the GET_ARGV() macro which calculates the value of argv based upon
   - define the GET_ARGV() macro which calculates the value of argv based upon
     the parameter passed to _dl_start (usually it's simply just ARGS+1)
     the parameter passed to _dl_start (usually it's simply just ARGS+1)
   - define PERFORM_BOOTSTRAP_RELOC() macro which will handle just the relocs
   - define PERFORM_BOOTSTRAP_RELOC() macro which will handle just the relocs
@@ -105,7 +94,7 @@ TODO: nptl / linuxthreads / linuxthreads.old
   - define elf_machine_type_class() macro
   - define elf_machine_type_class() macro
   - define the inline functions elf_machine_dynamic, elf_machine_load_address,
   - define the inline functions elf_machine_dynamic, elf_machine_load_address,
     and elf_machine_relative
     and elf_machine_relative
-  glibc stores a bunch of these values in libc/sysdeps/ARCH/dl-machine.h
+  glibc stores a bunch of these values in sysdeps/ARCH/dl-machine.h
 
 
 - elfinterp.c:
 - elfinterp.c:
   define all the relocation functions ... it's best if you just copy from
   define all the relocation functions ... it's best if you just copy from
@@ -119,7 +108,7 @@ TODO: nptl / linuxthreads / linuxthreads.old
   - call _dl_linux_resolver()
   - call _dl_linux_resolver()
   - clean up after call
   - clean up after call
   - jump to function address now stored in PLT
   - jump to function address now stored in PLT
-  glibc stores this function in libc/sysdeps/ARCH/dl-trampoline.S
+  glibc stores this function in sysdeps/ARCH/dl-trampoline.S
 
 
 - utils/ldd.c - if you want support for ldso cache files (spoiler: you do),
 - utils/ldd.c - if you want support for ldso cache files (spoiler: you do),
   then you'll need to teach ldd a little.  generally, the fallback code
   then you'll need to teach ldd a little.  generally, the fallback code

+ 0 - 64
docs/probe_math_exception.c

@@ -1,64 +0,0 @@
-/* Small test program for probing how various math functions
- * with specific operands set floating point exceptions
- */
-
-#define _ISOC99_SOURCE 1
-#define _GNU_SOURCE    1
-
-#include <stdint.h>
-#include <math.h>
-#include <fenv.h>
-#include <stdio.h>
-
-int main(int argc, char **argv)
-{
-	float largest, small, t, inf_float;
-
-	largest = small = 1;
-	while (1) {
-		t = largest + small;
-		/* optimizations may make plain "t == largest" unreliable */
-		if (memcmp(&t, &largest, sizeof(float)) == 0)
-			break;
-		if (isfinite(t)) {
-			largest = t;
-			small *= 2;
-			continue;
-		}
-		small /= 2;
-	}
-	inf_float = largest + largest;
-	//printf("%.40g ", largest);
-	//printf("[%llx]\n", (long long) (*(uint32_t *)&largest));
-
-	feclearexcept(FE_ALL_EXCEPT);
-
-	//t = 1.0 / 0.0; // simple test: FE_DIVBYZERO
-	//t = nextafterf(largest, 1); // glibc 2.8: no math exceptions raised
-	//t = nextafterf(largest, largest); // glibc 2.8: no math exceptions raised
-	//t = nextafterf(largest, inf_float); // glibc 2.8: FE_INEXACT FE_OVERFLOW
-
-#define PREX(ex) do { if (fetestexcept(ex)) printf(#ex " "); } while(0)
-#ifdef FE_INEXACT
-	PREX(FE_INEXACT);
-#endif
-#ifdef FE_DIVBYZERO
-	PREX(FE_DIVBYZERO);
-#endif
-#ifdef FE_UNDERFLOW
-	PREX(FE_UNDERFLOW);
-#endif
-#ifdef FE_OVERFLOW
-	PREX(FE_OVERFLOW);
-#endif
-#ifdef FE_INVALID
-	PREX(FE_INVALID);
-#endif
-	if (fetestexcept(FE_ALL_EXCEPT))
-		printf("\n");
-	else
-		printf("no math exceptions raised\n");
-
-	printf("%.40g\n", t);
-	return 0;
-}

+ 0 - 249
docs/sigaction.txt

@@ -1,249 +0,0 @@
-	All what you never wanted to know about sigaction(),
-	struct sigaction, and sigset_t.
-
-
-Before vda started messing with sigset_t, struct sigaction
-and sigaction() functions, things looked this way:
-
-
-	Structures
-
-MIPS:
-
-Ignoring bogus "#if defined(__mips__) ..." block in
-libc/sysdeps/linux/common/bits/kernel_sigaction.h
-and using
-libc/sysdeps/linux/mips/bits/kernel_sigaction.h
-as an authoritative source:
-
-HAVE_SA_RESTORER is #defined
-struct old_kernel_sigaction {
-        unsigned      sa_flags;
-        sighandler_t  k_sa_handler;
-        unsigned long sa_mask;
-        unsigned      pad0[3]; /* reserved, keep size constant */
-        /* Abi says here follows reserved int[2] */
-        void          (*sa_restorer)(void);
-#if (_MIPS_SZPTR < 64)
-        /* For 32 bit code we have to pad struct sigaction to get
-         * constant size for the ABI */
-        int           pad1[1]; /* reserved */
-#endif
-};
-struct kernel_sigaction {
-        unsigned int  sa_flags;
-        sighandler_t  k_sa_handler;
-        kernel_sigset_t sa_mask;
-        void          (*sa_restorer)(void);
-        int           s_resv[1]; /* reserved */
-};
-struct sigaction {
-	unsigned      sa_flags;
-	sighandler_t  sa_handler;
-	sigset_t      sa_mask;
-	/* The ABI says here are two unused ints following. */
-	/* Restore handler.  */
-	void          (*sa_restorer)(void);
-#if _MIPS_SZPTR < 64
-	int           sa_resv[1];
-#endif
-};
-
-IA64:
-
-Has no old_sigaction. What a relief.
-
-struct kernel_sigaction {
-        sighandler_t  k_sa_handler;
-        unsigned long sa_flags;
-        sigset_t      sa_mask;
-};
-struct sigaction {
-	sighandler_t  sa_handler;
-	unsigned long sa_flags;
-	sigset_t      sa_mask;
-};
-
-Alpha:
-
-struct old_kernel_sigaction {
-	sighandler_t  k_sa_handler;
-	unsigned long sa_mask;
-	unsigned      sa_flags;
-};
-struct kernel_sigaction {
-	sighandler_t  k_sa_handler;
-	unsigned      sa_flags;
-	sigset_t      sa_mask;
-};
-struct sigaction {
-	sighandler_t  sa_handler;
-	sigset_t      sa_mask;
-	unsigned      sa_flags;
-};
-
-HPPA:
-
-struct kernel_sigaction {
-	sighandler_t  k_sa_handler;
-	unsigned long sa_flags;
-	sigset_t      sa_mask;
-};
-struct sigaction {
-	sighandler_t  sa_handler;
-	unsigned long sa_flags;
-	sigset_t      sa_mask;
-};
-
-The rest, kernel side:
-
-HAVE_SA_RESTORER #defined
-struct old_kernel_sigaction {
-	sighandler_t  k_sa_handler;
-	unsigned long sa_mask;
-	unsigned long sa_flags;
-	void          (*sa_restorer)(void);
-};
-struct kernel_sigaction {
-	sighandler_t  k_sa_handler;
-	unsigned long sa_flags;
-	void          (*sa_restorer)(void);
-	sigset_t      sa_mask;
-};
-
-On userspace side, Sparc has special struct sigaction:
-
-struct sigaction {
-	sighandler_t  sa_handler;
-	sigset_t      sa_mask;
-	unsigned long sa_flags;
-	void          (*sa_restorer)(void); /* Not used by Linux/Sparc */
-};
-
-And finally the rest has:
-
-struct sigaction {
-	sighandler_t  sa_handler;
-	sigset_t      sa_mask;
-	int           sa_flags;
-	void          (*sa_restorer)(void);
-};
-
-Userspace sigset_t was uniformly defined as vector of longs
-big enough to hold 1024 (!) bits - carried over from glibc.
-Since the only arch whose struct kernel_sigaction contains sa_mask
-not as a last member is MIPS, MIPS has special kernel_sigset_t,
-which is an array of longs long enough for 128 bits.
-Other arches still used userspace sigset_t in struct kernel_sigaction,
-but it did not really matter because overlong kernel_sigaction
-does not hurt in sigaction() [explained below].
-On kernel side, all arches define _NSIG to 65 (meaning
-there are 64 signals, 1..64) except MIPS, which define it to 129.
-
-
-	Functions
-
-sigaction() [libc function] usually has two kernel_sigaction's
-on stack and copy (userspace) struct sigaction members into
-first one, executes syscall, then pulls out the result from
-second one. This accomodates differences in layouts of structs.
-
-The only typically present quirk is what to do with sa_restorer.
-
-    libc/sysdeps/linux/arm/sigaction.c
-
-if HAVE_SA_RESTORER and (sa_flags & SA_RESTORER) is not set,
-sets sa_restorer to
-(flags & SA_SIGINFO) ? __default_rt_sa_restorer : __default_sa_restorer,
-and sets SA_RESTORER,
-otherwise passes it as-is. Which is kinda strange, because AFAICS
-HAVE_SA_RESTORER is *not* defined for ARM.
-
-    libc/sysdeps/linux/i386/sigaction.c
-
-Forcibly sets SA_RESTORER and sa_restorer:
-kact.sa_flags = act->sa_flags | SA_RESTORER;
-kact.sa_restorer = ((act->sa_flags & SA_SIGINFO) ? &restore_rt : &restore);
-
-    libc/sysdeps/linux/x86_64/sigaction.c
-
-Forcibly sets SA_RESTORER and sa_restorer:
-kact.sa_flags = act->sa_flags | SA_RESTORER;
-kact.sa_restorer = &restore_rt;
-
-    libc/sysdeps/linux/mips/sigaction.c
-
-# ifdef HAVE_SA_RESTORER
-#  if _MIPS_SIM == _ABIO32
-                kact.sa_restorer = act->sa_restorer;
-#  else
-                kact.sa_restorer = &restore_rt;
-#  endif
-# endif
-No confusion here, HAVE_SA_RESTORER is #defined for MIPS
-
-    libc/sysdeps/linux/avr32/sigaction.c
-
-if (kact.sa_flags & SA_RESTORER) {
-        kact.sa_restorer = act->sa_restorer;
-} else {
-        kact.sa_restorer = __default_rt_sa_restorer;
-	kact.sa_flags |= SA_RESTORER;
-}
-Does not check HAVE_SA_RESTORER, but avr32 falls
-in "completely ordinary" category on both kernel and
-userspace sides, and those have it defined.
-
-    libc/sysdeps/linux/xtensa/sigaction.c
-
-if (kact.sa_flags & SA_RESTORER) {
-        kact.sa_restorer = act->sa_restorer;
-} else {
-        kact.sa_restorer = __default_sa_restorer;
-	kact.sa_flags |= SA_RESTORER;
-}
-Thus, similar to avr32.
-
-    libc/signal/sigaction.c (i.e. the all other arches)
-
-# ifdef HAVE_SA_RESTORER
-        kact.sa_restorer = act->sa_restorer;
-# endif
-Plain translation, just sa_restorer copy is protected
-by HAVE_SA_RESTORER #define check. Looks like here
-HAVE_SA_RESTORER will be undef'ed only for IA64,
-Alpha an HPPA.
-
-
-	Proposed overhaul past 0.9.30
-
-Since we can define libc-side structures at will:
-make sigset_t and struct sigaction identical on kernel side and libc side
-within each arch. If arches do not need special handling of sa_restorer,
-then sigaction() can directly use passed struct sigaction as-is.
-Otherwise, a copy is still needed, although sigaction() might have
-just one struct kernel_sigaction on stack and use it both for passing
-data to kernel and for receiving it back. Might save a few bytes.
-
-To this effect:
-
-* Make sigset_t size match kernel side on all arches.
-  This is easy since all arches have 64 signals and only MIPS has 128.
-
-* Modify libc/sysdeps/linux/$ARCH/bits/sigaction.h
-  so that its struct sigaction matches kernel's. If sa_restorer
-  field is present in libc but is missing in kernel_sigaction,
-  add it at the bottom in order to not mess up kernel_sigaction layout.
-
-* Modify libc/sysdeps/linux/$ARCH/sigaction.c
-  to implement the logic above. In "common" pseudo-arch
-  (libc/signal/sigaction.c file),
-  we would not even need to do any copying, as described above.
-
-* Document discovered arch quirks while debugging this mess.
-
-* struct old_kernel_sigaction can't be disposed of in a similar way,
-  we need to have userspace struct sigaction unchanged regardless
-  whether we use "old" or "new" kernel sigaction() syscall.
-  It's moot anyway because "old" one is long unused, it's from
-  pre-2.2 kernels.