2000-12-08 Werner Almesberger <Werner.Almesberger@epfl.ch>
* configure.host: Added x86 linux target. * libc/unix/getpass.c (_PATH_PASSWD, _PASSWORD_LEN): Default definitions provided if not already defined. * libc/sys/linux/crt0.c: New file. * libc/sys/linux/Makefile.am: Ditto. * libc/sys/linux/Makefile.in: Ditto. * libc/sys/linux/aclocal.m4: Ditto. * libc/sys/linux/brk.c: Ditto. * libc/sys/linux/configure: Ditto. * libc/sys/linux/configure.in: Ditto. * libc/sys/linux/getoptlong.c: Ditto. * libc/sys/linux/ids.c: Ditto. * libc/sys/linux/inode.c: Ditto. * libc/sys/linux/io.c: Ditto. * libc/sys/linux/linux.c: Ditto. * libc/sys/linux/process.c: Ditto. * libc/sys/linux/realpath.c: Ditto. * libc/sys/linux/select.c: Ditto. * libc/sys/linux/signal.c: Ditto. * libc/sys/linux/systat.c: Ditto. * libc/sys/linux/termios.c: Ditto. * libc/sys/linux/time.c: Ditto. * libc/sys/linux/wait.c: Ditto. * libc/sys/linux/include/alloca.h: Ditto. * libc/sys/linux/include/getopt.h: Ditto. * libc/sys/linux/include/stdint.h: Ditto. * libc/sys/linux/include/unistd.h: Ditto. * libc/sys/linux/sys/cdefs.h: Ditto. * libc/sys/linux/sys/dirent.h: Ditto. * libc/sys/linux/sys/errno.h: Ditto. * libc/sys/linux/sys/fcntl.h: Ditto. * libc/sys/linux/sys/file.h: Ditto. * libc/sys/linux/sys/ioctl.h: Ditto. * libc/sys/linux/sys/resource.h: Ditto. * libc/sys/linux/sys/signal.h: Ditto. * libc/sys/linux/sys/stat.h: Ditto. * libc/sys/linux/sys/syscall.h: Ditto. * libc/sys/linux/sys/termios.h: Ditto. * libc/sys/linux/sys/time.h: Ditto. * libc/sys/linux/sys/types.h: Ditto. * libc/sys/linux/sys/utmp.h: Ditto. * libc/sys/linux/sys/utsname.h: Ditto. * libc/sys/linux/sys/wait.h: Ditto.
This commit is contained in:
parent
a08c98bb80
commit
2efbc2a7df
@ -1,3 +1,49 @@
|
||||
2000-12-08 Werner Almesberger <Werner.Almesberger@epfl.ch>
|
||||
|
||||
* configure.host: Added x86 linux target.
|
||||
* libc/unix/getpass.c (_PATH_PASSWD, _PASSWORD_LEN): Default
|
||||
definitions provided if not already defined.
|
||||
* libc/sys/linux/crt0.c: New file.
|
||||
* libc/sys/linux/Makefile.am: Ditto.
|
||||
* libc/sys/linux/Makefile.in: Ditto.
|
||||
* libc/sys/linux/aclocal.m4: Ditto.
|
||||
* libc/sys/linux/brk.c: Ditto.
|
||||
* libc/sys/linux/configure: Ditto.
|
||||
* libc/sys/linux/configure.in: Ditto.
|
||||
* libc/sys/linux/getoptlong.c: Ditto.
|
||||
* libc/sys/linux/ids.c: Ditto.
|
||||
* libc/sys/linux/inode.c: Ditto.
|
||||
* libc/sys/linux/io.c: Ditto.
|
||||
* libc/sys/linux/linux.c: Ditto.
|
||||
* libc/sys/linux/process.c: Ditto.
|
||||
* libc/sys/linux/realpath.c: Ditto.
|
||||
* libc/sys/linux/select.c: Ditto.
|
||||
* libc/sys/linux/signal.c: Ditto.
|
||||
* libc/sys/linux/systat.c: Ditto.
|
||||
* libc/sys/linux/termios.c: Ditto.
|
||||
* libc/sys/linux/time.c: Ditto.
|
||||
* libc/sys/linux/wait.c: Ditto.
|
||||
* libc/sys/linux/include/alloca.h: Ditto.
|
||||
* libc/sys/linux/include/getopt.h: Ditto.
|
||||
* libc/sys/linux/include/stdint.h: Ditto.
|
||||
* libc/sys/linux/include/unistd.h: Ditto.
|
||||
* libc/sys/linux/sys/cdefs.h: Ditto.
|
||||
* libc/sys/linux/sys/dirent.h: Ditto.
|
||||
* libc/sys/linux/sys/errno.h: Ditto.
|
||||
* libc/sys/linux/sys/fcntl.h: Ditto.
|
||||
* libc/sys/linux/sys/file.h: Ditto.
|
||||
* libc/sys/linux/sys/ioctl.h: Ditto.
|
||||
* libc/sys/linux/sys/resource.h: Ditto.
|
||||
* libc/sys/linux/sys/signal.h: Ditto.
|
||||
* libc/sys/linux/sys/stat.h: Ditto.
|
||||
* libc/sys/linux/sys/syscall.h: Ditto.
|
||||
* libc/sys/linux/sys/termios.h: Ditto.
|
||||
* libc/sys/linux/sys/time.h: Ditto.
|
||||
* libc/sys/linux/sys/types.h: Ditto.
|
||||
* libc/sys/linux/sys/utmp.h: Ditto.
|
||||
* libc/sys/linux/sys/utsname.h: Ditto.
|
||||
* libc/sys/linux/sys/wait.h: Ditto.
|
||||
|
||||
2000-12-08 Ralf Corsepius <corsepiu@faw.uni-ulm.de>
|
||||
|
||||
* Makefile.am: $(INSTALL), $(INSTALL_DATA), and $(INSTALL_PROGRAM)
|
||||
|
@ -243,6 +243,24 @@ case "${host}" in
|
||||
sys_dir=sysvi386
|
||||
unix_dir=unix
|
||||
;;
|
||||
|
||||
i[3456]86-pc-linux-*)
|
||||
sys_dir=linux
|
||||
unix_dir=unix
|
||||
posix_dir=posix
|
||||
gcc_dir=`gcc -print-search-dirs | awk '/^install:/{print $2}'`
|
||||
#newlib_cflags="${newlib_cflags} -Werror" # DEBUGGING ONLY;BREAKS BUILD
|
||||
newlib_cflags="${newlib_cflags} -Wall"
|
||||
newlib_cflags="${newlib_cflags} -D_I386MACH_ALLOW_HW_INTERRUPTS"
|
||||
newlib_cflags="${newlib_cflags} -D_LOOSE_KERNEL_NAMES"
|
||||
# --- Required when building a shared library ------------------------
|
||||
newlib_cflags="${newlib_cflags} -fPIC -D_I386MACH_NEED_SOTYPE_FUNCTION"
|
||||
# --- The three lines below are optional ------------------------------
|
||||
##newlib_cflags="${newlib_cflags} -nostdinc"
|
||||
##newlib_cflags="${newlib_cflags} -I`newlib-flags --kernel-dir`/include"
|
||||
##newlib_cflags="${newlib_cflags} -idirafter ${gcc_dir}include"
|
||||
;;
|
||||
|
||||
m68k-sun-sunos*)
|
||||
unix_dir=unix
|
||||
;;
|
||||
|
26
newlib/libc/sys/linux/Makefile.am
Normal file
26
newlib/libc/sys/linux/Makefile.am
Normal file
@ -0,0 +1,26 @@
|
||||
## Process this file with automake to generate Makefile.in
|
||||
|
||||
AUTOMAKE_OPTIONS = cygnus
|
||||
|
||||
INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
|
||||
|
||||
noinst_LIBRARIES = lib.a
|
||||
|
||||
lib_a_SOURCES = \
|
||||
brk.c getoptlong.c ids.c inode.c io.c linux.c process.c realpath.c \
|
||||
select.c signal.c systat.c termios.c time.c wait.c
|
||||
|
||||
all: crt0.o
|
||||
|
||||
signal.o: siglist.inc
|
||||
|
||||
siglist.inc:
|
||||
awk '/#define.SIG.*[1-9][0-9]*/ { n[$$3] = $$2 } \
|
||||
/#define.NSIG.*[1-9][0-9]*/ { max = $$3 } \
|
||||
/#define.SIGUNUSED/ \
|
||||
{ for (i = 0; i <= max; i++) print "\"" n[i] "\"," }' \
|
||||
</usr/src/linux/include/asm/signal.h >siglist.inc || \
|
||||
{ rm -f siglist.inc; exit 1; }
|
||||
|
||||
ACLOCAL_AMFLAGS = -I ../../..
|
||||
CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host
|
334
newlib/libc/sys/linux/Makefile.in
Normal file
334
newlib/libc/sys/linux/Makefile.in
Normal file
@ -0,0 +1,334 @@
|
||||
# Makefile.in generated automatically by automake 1.4 from Makefile.am
|
||||
|
||||
# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
|
||||
# This Makefile.in is free software; the Free Software Foundation
|
||||
# gives unlimited permission to copy and/or distribute it,
|
||||
# with or without modifications, as long as this notice is preserved.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
|
||||
SHELL = @SHELL@
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
prefix = @prefix@
|
||||
exec_prefix = @exec_prefix@
|
||||
|
||||
bindir = @bindir@
|
||||
sbindir = @sbindir@
|
||||
libexecdir = @libexecdir@
|
||||
datadir = @datadir@
|
||||
sysconfdir = @sysconfdir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
localstatedir = @localstatedir@
|
||||
libdir = @libdir@
|
||||
infodir = @infodir@
|
||||
mandir = @mandir@
|
||||
includedir = @includedir@
|
||||
oldincludedir = /usr/include
|
||||
|
||||
DESTDIR =
|
||||
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
|
||||
top_builddir = .
|
||||
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
|
||||
INSTALL = @INSTALL@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
transform = @program_transform_name@
|
||||
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
host_alias = @host_alias@
|
||||
host_triplet = @host@
|
||||
AR = @AR@
|
||||
AS = @AS@
|
||||
CC = @CC@
|
||||
CPP = @CPP@
|
||||
EXEEXT = @EXEEXT@
|
||||
MAINT = @MAINT@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
NEWLIB_CFLAGS = @NEWLIB_CFLAGS@
|
||||
PACKAGE = @PACKAGE@
|
||||
RANLIB = @RANLIB@
|
||||
VERSION = @VERSION@
|
||||
machine_dir = @machine_dir@
|
||||
newlib_basedir = @newlib_basedir@
|
||||
sys_dir = @sys_dir@
|
||||
|
||||
AUTOMAKE_OPTIONS = cygnus
|
||||
|
||||
INCLUDES = $(NEWLIB_CFLAGS) $(CROSS_CFLAGS) $(TARGET_CFLAGS)
|
||||
|
||||
noinst_LIBRARIES = lib.a
|
||||
|
||||
lib_a_SOURCES = \
|
||||
brk.c getoptlong.c ids.c inode.c io.c linux.c process.c realpath.c \
|
||||
select.c signal.c systat.c termios.c time.c wait.c
|
||||
|
||||
|
||||
ACLOCAL_AMFLAGS = -I ../../..
|
||||
CONFIG_STATUS_DEPENDENCIES = $(newlib_basedir)/configure.host
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/../../../../mkinstalldirs
|
||||
CONFIG_CLEAN_FILES =
|
||||
LIBRARIES = $(noinst_LIBRARIES)
|
||||
|
||||
|
||||
DEFS = @DEFS@ -I. -I$(srcdir)
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBS = @LIBS@
|
||||
lib_a_LIBADD =
|
||||
lib_a_OBJECTS = brk.o getoptlong.o ids.o inode.o io.o linux.o process.o \
|
||||
realpath.o select.o signal.o systat.o termios.o time.o wait.o
|
||||
CFLAGS = @CFLAGS@
|
||||
COMPILE = $(CC) $(DEFS) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
|
||||
CCLD = $(CC)
|
||||
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@
|
||||
DIST_COMMON = Makefile.am Makefile.in aclocal.m4 configure configure.in
|
||||
|
||||
|
||||
DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
TAR = gtar
|
||||
GZIP_ENV = --best
|
||||
SOURCES = $(lib_a_SOURCES)
|
||||
OBJECTS = $(lib_a_OBJECTS)
|
||||
|
||||
all: all-redirect
|
||||
.SUFFIXES:
|
||||
.SUFFIXES: .S .c .o .s
|
||||
$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && $(AUTOMAKE) --cygnus Makefile
|
||||
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) \
|
||||
&& CONFIG_FILES=$@ CONFIG_HEADERS= $(SHELL) ./config.status
|
||||
|
||||
$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ configure.in \
|
||||
../../../acinclude.m4 ../../../aclocal.m4
|
||||
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||
|
||||
config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
$(SHELL) ./config.status --recheck
|
||||
$(srcdir)/configure: @MAINTAINER_MODE_TRUE@$(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
|
||||
cd $(srcdir) && $(AUTOCONF)
|
||||
|
||||
mostlyclean-noinstLIBRARIES:
|
||||
|
||||
clean-noinstLIBRARIES:
|
||||
-test -z "$(noinst_LIBRARIES)" || rm -f $(noinst_LIBRARIES)
|
||||
|
||||
distclean-noinstLIBRARIES:
|
||||
|
||||
maintainer-clean-noinstLIBRARIES:
|
||||
|
||||
.c.o:
|
||||
$(COMPILE) -c $<
|
||||
|
||||
.s.o:
|
||||
$(COMPILE) -c $<
|
||||
|
||||
.S.o:
|
||||
$(COMPILE) -c $<
|
||||
|
||||
mostlyclean-compile:
|
||||
-rm -f *.o core *.core
|
||||
|
||||
clean-compile:
|
||||
|
||||
distclean-compile:
|
||||
-rm -f *.tab.c
|
||||
|
||||
maintainer-clean-compile:
|
||||
|
||||
lib.a: $(lib_a_OBJECTS) $(lib_a_DEPENDENCIES)
|
||||
-rm -f lib.a
|
||||
$(AR) cru lib.a $(lib_a_OBJECTS) $(lib_a_LIBADD)
|
||||
$(RANLIB) lib.a
|
||||
|
||||
tags: TAGS
|
||||
|
||||
ID: $(HEADERS) $(SOURCES) $(LISP)
|
||||
list='$(SOURCES) $(HEADERS)'; \
|
||||
unique=`for i in $$list; do echo $$i; done | \
|
||||
awk ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
here=`pwd` && cd $(srcdir) \
|
||||
&& mkid -f$$here/ID $$unique $(LISP)
|
||||
|
||||
TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SOURCES) $(HEADERS)'; \
|
||||
unique=`for i in $$list; do echo $$i; done | \
|
||||
awk ' { files[$$0] = 1; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(ETAGS_ARGS)$$unique$(LISP)$$tags" \
|
||||
|| (cd $(srcdir) && etags $(ETAGS_ARGS) $$tags $$unique $(LISP) -o $$here/TAGS)
|
||||
|
||||
mostlyclean-tags:
|
||||
|
||||
clean-tags:
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID
|
||||
|
||||
maintainer-clean-tags:
|
||||
|
||||
distdir = $(PACKAGE)-$(VERSION)
|
||||
top_distdir = $(distdir)
|
||||
|
||||
# This target untars the dist file and tries a VPATH configuration. Then
|
||||
# it guarantees that the distribution is self-contained by making another
|
||||
# tarfile.
|
||||
distcheck: dist
|
||||
-rm -rf $(distdir)
|
||||
GZIP=$(GZIP_ENV) $(TAR) zxf $(distdir).tar.gz
|
||||
mkdir $(distdir)/=build
|
||||
mkdir $(distdir)/=inst
|
||||
dc_install_base=`cd $(distdir)/=inst && pwd`; \
|
||||
cd $(distdir)/=build \
|
||||
&& ../configure --srcdir=.. --prefix=$$dc_install_base \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dist
|
||||
-rm -rf $(distdir)
|
||||
@banner="$(distdir).tar.gz is ready for distribution"; \
|
||||
dashes=`echo "$$banner" | sed s/./=/g`; \
|
||||
echo "$$dashes"; \
|
||||
echo "$$banner"; \
|
||||
echo "$$dashes"
|
||||
dist: distdir
|
||||
-chmod -R a+r $(distdir)
|
||||
GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
|
||||
-rm -rf $(distdir)
|
||||
dist-all: distdir
|
||||
-chmod -R a+r $(distdir)
|
||||
GZIP=$(GZIP_ENV) $(TAR) chozf $(distdir).tar.gz $(distdir)
|
||||
-rm -rf $(distdir)
|
||||
distdir: $(DISTFILES)
|
||||
-rm -rf $(distdir)
|
||||
mkdir $(distdir)
|
||||
-chmod 777 $(distdir)
|
||||
@for file in $(DISTFILES); do \
|
||||
if test -f $$file; then d=.; else d=$(srcdir); fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
cp -pr $$d/$$file $(distdir)/$$file; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| ln $$d/$$file $(distdir)/$$file 2> /dev/null \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file || :; \
|
||||
fi; \
|
||||
done
|
||||
info-am:
|
||||
info: info-am
|
||||
dvi-am:
|
||||
dvi: dvi-am
|
||||
check-am:
|
||||
check: check-am
|
||||
installcheck-am:
|
||||
installcheck: installcheck-am
|
||||
install-info-am:
|
||||
install-info: install-info-am
|
||||
install-exec-am:
|
||||
install-exec: install-exec-am
|
||||
|
||||
install-data-am:
|
||||
install-data: install-data-am
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
install: install-am
|
||||
uninstall-am:
|
||||
uninstall: uninstall-am
|
||||
all-am: Makefile $(LIBRARIES)
|
||||
all-redirect: all-am
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
|
||||
installdirs:
|
||||
|
||||
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-rm -f Makefile $(CONFIG_CLEAN_FILES)
|
||||
-rm -f config.cache config.log stamp-h stamp-h[0-9]*
|
||||
|
||||
maintainer-clean-generic:
|
||||
mostlyclean-am: mostlyclean-noinstLIBRARIES mostlyclean-compile \
|
||||
mostlyclean-tags mostlyclean-generic
|
||||
|
||||
mostlyclean: mostlyclean-am
|
||||
|
||||
clean-am: clean-noinstLIBRARIES clean-compile clean-tags clean-generic \
|
||||
mostlyclean-am
|
||||
|
||||
clean: clean-am
|
||||
|
||||
distclean-am: distclean-noinstLIBRARIES distclean-compile \
|
||||
distclean-tags distclean-generic clean-am
|
||||
|
||||
distclean: distclean-am
|
||||
-rm -f config.status
|
||||
|
||||
maintainer-clean-am: maintainer-clean-noinstLIBRARIES \
|
||||
maintainer-clean-compile maintainer-clean-tags \
|
||||
maintainer-clean-generic distclean-am
|
||||
@echo "This command is intended for maintainers to use;"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
|
||||
maintainer-clean: maintainer-clean-am
|
||||
-rm -f config.status
|
||||
|
||||
.PHONY: mostlyclean-noinstLIBRARIES distclean-noinstLIBRARIES \
|
||||
clean-noinstLIBRARIES maintainer-clean-noinstLIBRARIES \
|
||||
mostlyclean-compile distclean-compile clean-compile \
|
||||
maintainer-clean-compile tags mostlyclean-tags distclean-tags \
|
||||
clean-tags maintainer-clean-tags distdir info-am info dvi-am dvi check \
|
||||
check-am installcheck-am installcheck install-info-am install-info \
|
||||
install-exec-am install-exec install-data-am install-data install-am \
|
||||
install uninstall-am uninstall all-redirect all-am all installdirs \
|
||||
mostlyclean-generic distclean-generic clean-generic \
|
||||
maintainer-clean-generic clean mostlyclean distclean maintainer-clean
|
||||
|
||||
|
||||
all: crt0.o
|
||||
|
||||
signal.o: siglist.inc
|
||||
|
||||
siglist.inc:
|
||||
awk '/#define.SIG.*[1-9][0-9]*/ { n[$$3] = $$2 } \
|
||||
/#define.NSIG.*[1-9][0-9]*/ { max = $$3 } \
|
||||
/#define.SIGUNUSED/ \
|
||||
{ for (i = 0; i <= max; i++) print "\"" n[i] "\"," }' \
|
||||
</usr/src/linux/include/asm/signal.h >siglist.inc || \
|
||||
{ rm -f siglist.inc; exit 1; }
|
||||
|
||||
# Tell versions [3.59,3.63) of GNU make to not export all variables.
|
||||
# Otherwise a system limit (for SysV at least) may be exceeded.
|
||||
.NOEXPORT:
|
282
newlib/libc/sys/linux/aclocal.m4
vendored
Normal file
282
newlib/libc/sys/linux/aclocal.m4
vendored
Normal file
@ -0,0 +1,282 @@
|
||||
dnl aclocal.m4 generated automatically by aclocal 1.4
|
||||
|
||||
dnl Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc.
|
||||
dnl This file is free software; the Free Software Foundation
|
||||
dnl gives unlimited permission to copy and/or distribute it,
|
||||
dnl with or without modifications, as long as this notice is preserved.
|
||||
|
||||
dnl This program is distributed in the hope that it will be useful,
|
||||
dnl but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
dnl even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
dnl PARTICULAR PURPOSE.
|
||||
|
||||
dnl This provides configure definitions used by all the newlib
|
||||
dnl configure.in files.
|
||||
|
||||
dnl Basic newlib configury. This calls basic introductory stuff,
|
||||
dnl including AM_INIT_AUTOMAKE and AC_CANONICAL_HOST. It also runs
|
||||
dnl configure.host. The only argument is the relative path to the top
|
||||
dnl newlib directory.
|
||||
|
||||
AC_DEFUN(NEWLIB_CONFIGURE,
|
||||
[
|
||||
dnl Default to --enable-multilib
|
||||
AC_ARG_ENABLE(multilib,
|
||||
[ --enable-multilib build many library versions (default)],
|
||||
[case "${enableval}" in
|
||||
yes) multilib=yes ;;
|
||||
no) multilib=no ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for multilib option) ;;
|
||||
esac], [multilib=yes])dnl
|
||||
|
||||
dnl Support --enable-target-optspace
|
||||
AC_ARG_ENABLE(target-optspace,
|
||||
[ --enable-target-optspace optimize for space],
|
||||
[case "${enableval}" in
|
||||
yes) target_optspace=yes ;;
|
||||
no) target_optspace=no ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for target-optspace option) ;;
|
||||
esac], [target_optspace=])dnl
|
||||
|
||||
dnl Support --enable-newlib-mb
|
||||
AC_ARG_ENABLE(newlib-mb,
|
||||
[ --enable-newlib-mb enable multibyte support],
|
||||
[case "${enableval}" in
|
||||
yes) newlib_mb=yes ;;
|
||||
no) newlib_mb=no ;;
|
||||
*) AC_MSG_ERROR(bad value ${enableval} for newlib-mb option) ;;
|
||||
esac], [newlib_mb=no])dnl
|
||||
|
||||
dnl We may get other options which we don't document:
|
||||
dnl --with-target-subdir, --with-multisrctop, --with-multisubdir
|
||||
|
||||
test -z "[$]{with_target_subdir}" && with_target_subdir=.
|
||||
|
||||
if test "[$]{srcdir}" = "."; then
|
||||
if test "[$]{with_target_subdir}" != "."; then
|
||||
newlib_basedir="[$]{srcdir}/[$]{with_multisrctop}../$1"
|
||||
else
|
||||
newlib_basedir="[$]{srcdir}/[$]{with_multisrctop}$1"
|
||||
fi
|
||||
else
|
||||
newlib_basedir="[$]{srcdir}/$1"
|
||||
fi
|
||||
AC_SUBST(newlib_basedir)
|
||||
|
||||
AC_CANONICAL_HOST
|
||||
|
||||
AM_INIT_AUTOMAKE(newlib, 1.8.2)
|
||||
|
||||
# FIXME: We temporarily define our own version of AC_PROG_CC. This is
|
||||
# copied from autoconf 2.12, but does not call AC_PROG_CC_WORKS. We
|
||||
# are probably using a cross compiler, which will not be able to fully
|
||||
# link an executable. This should really be fixed in autoconf
|
||||
# itself.
|
||||
|
||||
AC_DEFUN(LIB_AC_PROG_CC,
|
||||
[AC_BEFORE([$0], [AC_PROG_CPP])dnl
|
||||
AC_CHECK_PROG(CC, gcc, gcc)
|
||||
if test -z "$CC"; then
|
||||
AC_CHECK_PROG(CC, cc, cc, , , /usr/ucb/cc)
|
||||
test -z "$CC" && AC_MSG_ERROR([no acceptable cc found in \$PATH])
|
||||
fi
|
||||
|
||||
AC_PROG_CC_GNU
|
||||
|
||||
if test $ac_cv_prog_gcc = yes; then
|
||||
GCC=yes
|
||||
dnl Check whether -g works, even if CFLAGS is set, in case the package
|
||||
dnl plays around with CFLAGS (such as to build both debugging and
|
||||
dnl normal versions of a library), tasteless as that idea is.
|
||||
ac_test_CFLAGS="${CFLAGS+set}"
|
||||
ac_save_CFLAGS="$CFLAGS"
|
||||
CFLAGS=
|
||||
AC_PROG_CC_G
|
||||
if test "$ac_test_CFLAGS" = set; then
|
||||
CFLAGS="$ac_save_CFLAGS"
|
||||
elif test $ac_cv_prog_cc_g = yes; then
|
||||
CFLAGS="-g -O2"
|
||||
else
|
||||
CFLAGS="-O2"
|
||||
fi
|
||||
else
|
||||
GCC=
|
||||
test "${CFLAGS+set}" = set || CFLAGS="-g"
|
||||
fi
|
||||
])
|
||||
|
||||
LIB_AC_PROG_CC
|
||||
|
||||
# AC_CHECK_TOOL does AC_REQUIRE (AC_CANONICAL_BUILD). If we don't
|
||||
# run it explicitly here, it will be run implicitly before
|
||||
# NEWLIB_CONFIGURE, which doesn't work because that means that it will
|
||||
# be run before AC_CANONICAL_HOST.
|
||||
AC_CANONICAL_BUILD
|
||||
|
||||
AC_CHECK_TOOL(AS, as)
|
||||
AC_CHECK_TOOL(AR, ar)
|
||||
AC_CHECK_TOOL(RANLIB, ranlib, :)
|
||||
|
||||
AC_PROG_INSTALL
|
||||
|
||||
AM_MAINTAINER_MODE
|
||||
|
||||
# We need AC_EXEEXT to keep automake happy in cygnus mode. However,
|
||||
# at least currently, we never actually build a program, so we never
|
||||
# need to use $(EXEEXT). Moreover, the test for EXEEXT normally
|
||||
# fails, because we are probably configuring with a cross compiler
|
||||
# which can't create executables. So we include AC_EXEEXT to keep
|
||||
# automake happy, but we don't execute it, since we don't care about
|
||||
# the result.
|
||||
if false; then
|
||||
AC_EXEEXT
|
||||
fi
|
||||
|
||||
. [$]{newlib_basedir}/configure.host
|
||||
|
||||
case [$]{newlib_basedir} in
|
||||
/* | [A-Za-z]:[/\\]*) newlib_flagbasedir=[$]{newlib_basedir} ;;
|
||||
*) newlib_flagbasedir='[$](top_builddir)/'[$]{newlib_basedir} ;;
|
||||
esac
|
||||
|
||||
newlib_cflags="[$]{newlib_cflags} -I"'[$](top_builddir)'"/$1/targ-include -I[$]{newlib_flagbasedir}/libc/include"
|
||||
case "${host}" in
|
||||
*-*-cygwin*)
|
||||
newlib_cflags="[$]{newlib_cflags} -I[$]{newlib_flagbasedir}/../winsup/cygwin/include -I[$]{newlib_flagbasedir}/../winsup/w32api/include"
|
||||
;;
|
||||
esac
|
||||
|
||||
newlib_cflags="[$]{newlib_cflags} -fno-builtin"
|
||||
|
||||
NEWLIB_CFLAGS=${newlib_cflags}
|
||||
AC_SUBST(NEWLIB_CFLAGS)
|
||||
|
||||
AC_SUBST(machine_dir)
|
||||
AC_SUBST(sys_dir)
|
||||
])
|
||||
|
||||
# Do all the work for Automake. This macro actually does too much --
|
||||
# some checks are only needed if your package does certain things.
|
||||
# But this isn't really a big deal.
|
||||
|
||||
# serial 1
|
||||
|
||||
dnl Usage:
|
||||
dnl AM_INIT_AUTOMAKE(package,version, [no-define])
|
||||
|
||||
AC_DEFUN(AM_INIT_AUTOMAKE,
|
||||
[AC_REQUIRE([AC_PROG_INSTALL])
|
||||
PACKAGE=[$1]
|
||||
AC_SUBST(PACKAGE)
|
||||
VERSION=[$2]
|
||||
AC_SUBST(VERSION)
|
||||
dnl test to see if srcdir already configured
|
||||
if test "`cd $srcdir && pwd`" != "`pwd`" && test -f $srcdir/config.status; then
|
||||
AC_MSG_ERROR([source directory already configured; run "make distclean" there first])
|
||||
fi
|
||||
ifelse([$3],,
|
||||
AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package])
|
||||
AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package]))
|
||||
AC_REQUIRE([AM_SANITY_CHECK])
|
||||
AC_REQUIRE([AC_ARG_PROGRAM])
|
||||
dnl FIXME This is truly gross.
|
||||
missing_dir=`cd $ac_aux_dir && pwd`
|
||||
AM_MISSING_PROG(ACLOCAL, aclocal, $missing_dir)
|
||||
AM_MISSING_PROG(AUTOCONF, autoconf, $missing_dir)
|
||||
AM_MISSING_PROG(AUTOMAKE, automake, $missing_dir)
|
||||
AM_MISSING_PROG(AUTOHEADER, autoheader, $missing_dir)
|
||||
AM_MISSING_PROG(MAKEINFO, makeinfo, $missing_dir)
|
||||
AC_REQUIRE([AC_PROG_MAKE_SET])])
|
||||
|
||||
#
|
||||
# Check to make sure that the build environment is sane.
|
||||
#
|
||||
|
||||
AC_DEFUN(AM_SANITY_CHECK,
|
||||
[AC_MSG_CHECKING([whether build environment is sane])
|
||||
# Just in case
|
||||
sleep 1
|
||||
echo timestamp > conftestfile
|
||||
# Do `set' in a subshell so we don't clobber the current shell's
|
||||
# arguments. Must try -L first in case configure is actually a
|
||||
# symlink; some systems play weird games with the mod time of symlinks
|
||||
# (eg FreeBSD returns the mod time of the symlink's containing
|
||||
# directory).
|
||||
if (
|
||||
set X `ls -Lt $srcdir/configure conftestfile 2> /dev/null`
|
||||
if test "[$]*" = "X"; then
|
||||
# -L didn't work.
|
||||
set X `ls -t $srcdir/configure conftestfile`
|
||||
fi
|
||||
if test "[$]*" != "X $srcdir/configure conftestfile" \
|
||||
&& test "[$]*" != "X conftestfile $srcdir/configure"; then
|
||||
|
||||
# If neither matched, then we have a broken ls. This can happen
|
||||
# if, for instance, CONFIG_SHELL is bash and it inherits a
|
||||
# broken ls alias from the environment. This has actually
|
||||
# happened. Such a system could not be considered "sane".
|
||||
AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken
|
||||
alias in your environment])
|
||||
fi
|
||||
|
||||
test "[$]2" = conftestfile
|
||||
)
|
||||
then
|
||||
# Ok.
|
||||
:
|
||||
else
|
||||
AC_MSG_ERROR([newly created file is older than distributed files!
|
||||
Check your system clock])
|
||||
fi
|
||||
rm -f conftest*
|
||||
AC_MSG_RESULT(yes)])
|
||||
|
||||
dnl AM_MISSING_PROG(NAME, PROGRAM, DIRECTORY)
|
||||
dnl The program must properly implement --version.
|
||||
AC_DEFUN(AM_MISSING_PROG,
|
||||
[AC_MSG_CHECKING(for working $2)
|
||||
# Run test in a subshell; some versions of sh will print an error if
|
||||
# an executable is not found, even if stderr is redirected.
|
||||
# Redirect stdin to placate older versions of autoconf. Sigh.
|
||||
if ($2 --version) < /dev/null > /dev/null 2>&1; then
|
||||
$1=$2
|
||||
AC_MSG_RESULT(found)
|
||||
else
|
||||
$1="$3/missing $2"
|
||||
AC_MSG_RESULT(missing)
|
||||
fi
|
||||
AC_SUBST($1)])
|
||||
|
||||
# Add --enable-maintainer-mode option to configure.
|
||||
# From Jim Meyering
|
||||
|
||||
# serial 1
|
||||
|
||||
AC_DEFUN(AM_MAINTAINER_MODE,
|
||||
[AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles])
|
||||
dnl maintainer-mode is disabled by default
|
||||
AC_ARG_ENABLE(maintainer-mode,
|
||||
[ --enable-maintainer-mode enable make rules and dependencies not useful
|
||||
(and sometimes confusing) to the casual installer],
|
||||
USE_MAINTAINER_MODE=$enableval,
|
||||
USE_MAINTAINER_MODE=no)
|
||||
AC_MSG_RESULT($USE_MAINTAINER_MODE)
|
||||
AM_CONDITIONAL(MAINTAINER_MODE, test $USE_MAINTAINER_MODE = yes)
|
||||
MAINT=$MAINTAINER_MODE_TRUE
|
||||
AC_SUBST(MAINT)dnl
|
||||
]
|
||||
)
|
||||
|
||||
# Define a conditional.
|
||||
|
||||
AC_DEFUN(AM_CONDITIONAL,
|
||||
[AC_SUBST($1_TRUE)
|
||||
AC_SUBST($1_FALSE)
|
||||
if $2; then
|
||||
$1_TRUE=
|
||||
$1_FALSE='#'
|
||||
else
|
||||
$1_TRUE='#'
|
||||
$1_FALSE=
|
||||
fi])
|
||||
|
41
newlib/libc/sys/linux/brk.c
Normal file
41
newlib/libc/sys/linux/brk.c
Normal file
@ -0,0 +1,41 @@
|
||||
/* libc/sys/linux/brk.c - Change data segment size */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#include <stddef.h> /* for NULL */
|
||||
#include <sys/types.h>
|
||||
#include <sys/unistd.h>
|
||||
#include <sys/syscall.h>
|
||||
|
||||
|
||||
static char *curr_brk = NULL;
|
||||
|
||||
|
||||
#define __NR___brk __NR_brk /* Linux brk ain't no brk(2) */
|
||||
|
||||
static _syscall1(void *,__brk,void *,end_data_segment)
|
||||
|
||||
|
||||
int brk(void *end_data_segment)
|
||||
{
|
||||
char *new_brk;
|
||||
|
||||
new_brk = __brk(end_data_segment);
|
||||
if (new_brk != end_data_segment) return -1;
|
||||
curr_brk = new_brk;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void *sbrk(size_t increment) /* SHOULD be ptrdiff_t */
|
||||
{
|
||||
char *old_brk,*new_brk;
|
||||
|
||||
if (!curr_brk) curr_brk = __brk(NULL);
|
||||
new_brk = __brk(curr_brk+increment);
|
||||
if (new_brk != curr_brk+increment) return (void *) -1;
|
||||
old_brk = curr_brk;
|
||||
curr_brk = new_brk;
|
||||
return old_brk;
|
||||
}
|
1687
newlib/libc/sys/linux/configure
vendored
Executable file
1687
newlib/libc/sys/linux/configure
vendored
Executable file
File diff suppressed because it is too large
Load Diff
12
newlib/libc/sys/linux/configure.in
Normal file
12
newlib/libc/sys/linux/configure.in
Normal file
@ -0,0 +1,12 @@
|
||||
dnl This is the newlib/libc/sys/linux configure.in file.
|
||||
dnl Process this file with autoconf to produce a configure script.
|
||||
|
||||
AC_PREREQ(2.5)
|
||||
AC_INIT(linux.c)
|
||||
|
||||
dnl Can't be done in NEWLIB_CONFIGURE because that confuses automake.
|
||||
AC_CONFIG_AUX_DIR(../../../..)
|
||||
|
||||
NEWLIB_CONFIGURE(../../..)
|
||||
|
||||
AC_OUTPUT(Makefile)
|
32
newlib/libc/sys/linux/crt0.c
Normal file
32
newlib/libc/sys/linux/crt0.c
Normal file
@ -0,0 +1,32 @@
|
||||
/* libc/sys/linux/crt0.c - Run-time initialization */
|
||||
|
||||
/* FIXME: This should be rewritten in assembler and
|
||||
placed in a subdirectory specific to a platform.
|
||||
There should also be calls to run constructors. */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
|
||||
extern char **environ;
|
||||
|
||||
extern int main(int argc,char **argv,char **envp);
|
||||
|
||||
|
||||
void _start(int args)
|
||||
{
|
||||
/*
|
||||
* The argument block begins above the current stack frame, because we
|
||||
* have no return address. The calculation assumes that sizeof(int) ==
|
||||
* sizeof(void *). This is okay for i386 user space, but may be invalid in
|
||||
* other cases.
|
||||
*/
|
||||
int *params = &args-1;
|
||||
int argc = *params;
|
||||
char **argv = (char **) (params+1);
|
||||
|
||||
environ = argv+argc+1;
|
||||
exit(main(argc,argv,environ));
|
||||
}
|
64
newlib/libc/sys/linux/getoptlong.c
Normal file
64
newlib/libc/sys/linux/getoptlong.c
Normal file
@ -0,0 +1,64 @@
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <getopt.h>
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
static const char *__resume;
|
||||
|
||||
|
||||
int getopt_long(int argc,char *const argv[],const char *optstring,
|
||||
const struct option *longopts,int *longindex)
|
||||
{
|
||||
char *here;
|
||||
|
||||
optarg = NULL;
|
||||
if (!__resume) {
|
||||
if (argc == optind || *argv[optind] != '-') return -1;
|
||||
if (argv[optind][1] == '-') {
|
||||
const struct option *opt;
|
||||
|
||||
optarg = strchr(argv[optind],'=');
|
||||
if (optarg) optarg++;
|
||||
for (opt = longopts; opt->name &&
|
||||
(optarg || strcmp(opt->name,argv[optind]+2)) &&
|
||||
(!optarg || strlen(opt->name) != optarg-argv[optind]-3 ||
|
||||
strncmp(opt->name,argv[optind]+2,optarg-argv[optind]-3));
|
||||
opt++);
|
||||
optind++;
|
||||
if (!opt->name) return '?';
|
||||
if ((opt->has_arg == no_argument && optarg) ||
|
||||
(opt->has_arg == required_argument && !optarg)) return ':';
|
||||
if (longindex) *longindex = opt-longopts;
|
||||
if (!opt->flag) return opt->val;
|
||||
*opt->flag = opt->val;
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
__resume = argv[optind]+1;
|
||||
}
|
||||
}
|
||||
here = strchr(optstring,*__resume);
|
||||
if (!here) {
|
||||
optind++;
|
||||
__resume = NULL;
|
||||
return '?';
|
||||
}
|
||||
if (here[1] != ':') {
|
||||
if (!*++__resume) __resume = NULL;
|
||||
}
|
||||
else {
|
||||
if (__resume[1]) optarg = (char *) __resume+1;
|
||||
else {
|
||||
optarg = (char *) argv[++optind];
|
||||
if (optind == argc || *argv[optind] == '-') {
|
||||
optind++;
|
||||
__resume = NULL;
|
||||
return ':';
|
||||
}
|
||||
}
|
||||
__resume = NULL;
|
||||
}
|
||||
if (!__resume) optind++;
|
||||
return *here;
|
||||
}
|
17
newlib/libc/sys/linux/ids.c
Normal file
17
newlib/libc/sys/linux/ids.c
Normal file
@ -0,0 +1,17 @@
|
||||
/* libc/sys/linux/ids.c - System calls related to user and group ids */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/unistd.h>
|
||||
#include <sys/syscall.h>
|
||||
|
||||
|
||||
_syscall1(int,setuid,uid_t,uid)
|
||||
_syscall0(uid_t,getuid)
|
||||
_syscall1(int,setgid,gid_t,gid)
|
||||
_syscall0(gid_t,getgid)
|
||||
_syscall0(uid_t,geteuid)
|
||||
_syscall0(gid_t,getegid)
|
||||
_syscall2(int,getgroups,int,size,gid_t *,list)
|
13
newlib/libc/sys/linux/include/alloca.h
Normal file
13
newlib/libc/sys/linux/include/alloca.h
Normal file
@ -0,0 +1,13 @@
|
||||
/* libc/sys/linux/include/alloca.h - Allocate memory on stack */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#ifndef _NEWLIB_ALLOCA_H
|
||||
#define _NEWLIB_ALLOCA_H
|
||||
|
||||
/* Simple, since we know that we use gcc */
|
||||
|
||||
#define alloca(size) __builtin_alloca(size)
|
||||
|
||||
#endif
|
27
newlib/libc/sys/linux/include/getopt.h
Normal file
27
newlib/libc/sys/linux/include/getopt.h
Normal file
@ -0,0 +1,27 @@
|
||||
/* libc/sys/linux/include/getopt.h - Extended command line parsing */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#ifndef _NEWLIB_GETOPT_H
|
||||
#define _NEWLIB_GETOPT_H
|
||||
|
||||
#include <unistd.h>
|
||||
|
||||
|
||||
enum { no_argument, required_argument, optional_argument };
|
||||
|
||||
struct option {
|
||||
const char *name;
|
||||
int has_arg;
|
||||
int *flag;
|
||||
int val;
|
||||
};
|
||||
|
||||
int getopt_long(int argc,char *const argv[],const char *optstring,
|
||||
const struct option *longopts,int *longindex);
|
||||
|
||||
int getopt_long_only(int argc,char *const argv[],const char *optstring,
|
||||
const struct option *longopts,int *longindex);
|
||||
|
||||
#endif
|
18
newlib/libc/sys/linux/include/stdint.h
Normal file
18
newlib/libc/sys/linux/include/stdint.h
Normal file
@ -0,0 +1,18 @@
|
||||
/* libc/sys/linux/include/stdint.h - Standard integer types */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#ifndef _NEWLIB_STDINT_H
|
||||
#define _NEWLIB_STDINT_H
|
||||
|
||||
/*
|
||||
* FIXME: linux/types.h defines various types that rightfully belong into
|
||||
* stdint.h. So we have no choice but to include linux/types.h directly, even
|
||||
* if this causes name space pollution. Note: we have to go via sys/types.h
|
||||
* in order to resolve some other compatibility issues.
|
||||
*/
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#endif
|
20
newlib/libc/sys/linux/include/unistd.h
Normal file
20
newlib/libc/sys/linux/include/unistd.h
Normal file
@ -0,0 +1,20 @@
|
||||
/* libc/sys/linux/include/unistd.h - Various standard functions */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#ifndef _NEWLIB_UNISTD_H
|
||||
#define _NEWLIB_UNISTD_H
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/unistd.h>
|
||||
|
||||
/* Declare some missing goodies */
|
||||
|
||||
extern char *optarg;
|
||||
extern int optind, opterr, optopt;
|
||||
|
||||
|
||||
int readlink(const char *path, char *buf, size_t bufsiz);
|
||||
|
||||
#endif
|
32
newlib/libc/sys/linux/inode.c
Normal file
32
newlib/libc/sys/linux/inode.c
Normal file
@ -0,0 +1,32 @@
|
||||
/* libc/sys/linux/inode.c - Inode-related system calls */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/utime.h>
|
||||
#include <linux/dirent.h>
|
||||
#include <sys/syscall.h>
|
||||
|
||||
|
||||
_syscall2(int,link,const char *,oldpath,const char *,newpath)
|
||||
_syscall1(int,unlink,const char *,pathname)
|
||||
_syscall1(int,chdir,const char *,path)
|
||||
_syscall3(int,mknod,const char *,pathname,mode_t,mode,dev_t,dev)
|
||||
_syscall2(int,chmod,const char *,path,mode_t,mode)
|
||||
_syscall2(int,utime,const char *,filename,struct utimbuf *,buf)
|
||||
_syscall2(int,access,const char *,filename,int,mode)
|
||||
_syscall2(int,mkdir,const char *,pathname,mode_t,mode)
|
||||
_syscall1(int,rmdir,const char *,pathname)
|
||||
_syscall1(int,pipe,int *,filedes)
|
||||
_syscall1(mode_t,umask,mode_t,mask)
|
||||
_syscall1(int,chroot,const char *,path)
|
||||
_syscall2(int,symlink,const char *,oldpath,const char *,newpath)
|
||||
_syscall3(int,readlink,const char *,path,char *,buf,size_t,bufsiz)
|
||||
_syscall2(int,stat,const char *,file_name,struct stat *,buf)
|
||||
_syscall2(int,lstat,const char *,file_name,struct stat *,buf)
|
||||
_syscall2(int,fstat,int,filedes,struct stat *,buf)
|
||||
_syscall3(int,getdents,int,fd,struct dirent *,dirp,unsigned int,count)
|
54
newlib/libc/sys/linux/io.c
Normal file
54
newlib/libc/sys/linux/io.c
Normal file
@ -0,0 +1,54 @@
|
||||
/* libc/sys/linux/io.c - Basic input/output system calls */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#define __KERNEL_PROTOTYPES
|
||||
|
||||
#include <stdarg.h>
|
||||
#include <unistd.h>
|
||||
#include <fcntl.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/ioctl.h>
|
||||
#include <sys/syscall.h>
|
||||
|
||||
|
||||
#define __NR___ioctl __NR_ioctl
|
||||
#define __NR___flock __NR_flock
|
||||
|
||||
_syscall3(int,read,int,fd,void *,buf,size_t,count)
|
||||
_syscall3(int,write,int,fd,const void *,buf,size_t,count)
|
||||
_syscall3(int,open,const char *,file,int,flag,mode_t,mode)
|
||||
_syscall1(int,close,int,fd)
|
||||
_syscall3(off_t,lseek,int,fd,off_t,offset,int,count)
|
||||
_syscall0(int,sync)
|
||||
_syscall1(int,dup,int,fd)
|
||||
_syscall2(int,dup2,int,oldfd,int,newfd)
|
||||
_syscall3(int,fcntl,int,fd,int,cmd,long,arg)
|
||||
|
||||
|
||||
static _syscall3(int,__ioctl,int,fd,int,request,void *,arg)
|
||||
|
||||
|
||||
int ioctl(int fd,int request,...)
|
||||
{
|
||||
va_list ap;
|
||||
int res;
|
||||
|
||||
va_start(ap,request);
|
||||
res = __ioctl(fd,request,va_arg(ap,void *));
|
||||
va_end(ap);
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
/* Why are all the types gratuituously different ? */
|
||||
|
||||
static _syscall2(long,__flock,unsigned int,fd,unsigned int,cmd)
|
||||
|
||||
|
||||
int flock(int fd,int operation)
|
||||
{
|
||||
return __flock(fd,operation);
|
||||
}
|
14
newlib/libc/sys/linux/linux.c
Normal file
14
newlib/libc/sys/linux/linux.c
Normal file
@ -0,0 +1,14 @@
|
||||
/* libc/sys/linux/linux.c - System-specific system calls */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
/*
|
||||
* Most system call wrappers have moved to utilities; future fate of this file
|
||||
* is guided by glibc/autoconf compatibility and FFS
|
||||
*/
|
||||
|
||||
#include <sys/syscall.h>
|
||||
|
||||
|
||||
/* _syscall1(int,delete_module,const char *,name) */
|
26
newlib/libc/sys/linux/process.c
Normal file
26
newlib/libc/sys/linux/process.c
Normal file
@ -0,0 +1,26 @@
|
||||
/* libc/sys/linux/process.c - Process-related system calls */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#include <sys/unistd.h>
|
||||
#include <sys/syscall.h>
|
||||
|
||||
|
||||
#define __NR__exit __NR_exit
|
||||
#define __NR__execve __NR_execve
|
||||
|
||||
_syscall0(int,fork)
|
||||
_syscall0(pid_t,vfork)
|
||||
_syscall3(int,_execve,const char *,file,char * const *,argv,char * const *,envp)
|
||||
_syscall0(int,getpid)
|
||||
_syscall2(int,setpgid,pid_t,pid,pid_t,pgid)
|
||||
_syscall0(pid_t,getppid)
|
||||
_syscall0(pid_t,getpgrp)
|
||||
_syscall0(pid_t,setsid)
|
||||
|
||||
/* FIXME: get rid of noreturn warning */
|
||||
|
||||
#define return for (;;)
|
||||
_syscall1(void,_exit,int,exitcode)
|
||||
#undef return
|
92
newlib/libc/sys/linux/realpath.c
Normal file
92
newlib/libc/sys/linux/realpath.c
Normal file
@ -0,0 +1,92 @@
|
||||
/* realpath.c - Return the canonicalized absolute pathname */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
#include <limits.h>
|
||||
#include <errno.h>
|
||||
#include <sys/stat.h>
|
||||
|
||||
|
||||
/* FIXME: buffer overrun possible, loops forever on cyclic symlinks */
|
||||
|
||||
|
||||
/*
|
||||
* Canonical name: never ends with a slash
|
||||
*/
|
||||
|
||||
static int resolve_path(char *path,char *result,char *pos)
|
||||
{
|
||||
if (*path == '/') {
|
||||
*result = '/';
|
||||
pos = result+1;
|
||||
path++;
|
||||
}
|
||||
*pos = 0;
|
||||
if (!*path) return 0;
|
||||
while (1) {
|
||||
char *slash;
|
||||
struct stat st;
|
||||
|
||||
slash = *path ? strchr(path,'/') : NULL;
|
||||
if (slash) *slash = 0;
|
||||
if (!path[0] || (path[0] == '.' &&
|
||||
(!path[1] || (path[1] == '.' && !path[2])))) {
|
||||
pos--;
|
||||
if (pos != result && path[0] && path[1])
|
||||
while (*--pos != '/');
|
||||
}
|
||||
else {
|
||||
strcpy(pos,path);
|
||||
if (lstat(result,&st) < 0) return -1;
|
||||
if (S_ISLNK(st.st_mode)) {
|
||||
char buf[PATH_MAX];
|
||||
|
||||
if (readlink(result,buf,sizeof(buf)) < 0) return -1;
|
||||
*pos = 0;
|
||||
if (slash) {
|
||||
*slash = '/';
|
||||
strcat(buf,slash);
|
||||
}
|
||||
strcpy(path,buf);
|
||||
if (*path == '/') result[1] = 0;
|
||||
pos = strchr(result,0);
|
||||
continue;
|
||||
}
|
||||
pos = strchr(result,0);
|
||||
}
|
||||
if (slash) {
|
||||
*pos++ = '/';
|
||||
path = slash+1;
|
||||
}
|
||||
*pos = 0;
|
||||
if (!slash) break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
char *realpath(const char *path,char *resolved_path)
|
||||
{
|
||||
char cwd[PATH_MAX];
|
||||
char *path_copy;
|
||||
int res;
|
||||
|
||||
if (!*path) {
|
||||
errno = ENOENT; /* SUSv2 */
|
||||
return NULL;
|
||||
}
|
||||
if (!getcwd(cwd,sizeof(cwd))) return NULL;
|
||||
strcpy(resolved_path,"/");
|
||||
if (resolve_path(cwd,resolved_path,resolved_path)) return NULL;
|
||||
strcat(resolved_path,"/");
|
||||
path_copy = strdup(path);
|
||||
if (!path_copy) return NULL;
|
||||
res = resolve_path(path_copy,resolved_path,strchr(resolved_path,0));
|
||||
free(path_copy);
|
||||
if (res) return NULL;
|
||||
return resolved_path;
|
||||
}
|
12
newlib/libc/sys/linux/select.c
Normal file
12
newlib/libc/sys/linux/select.c
Normal file
@ -0,0 +1,12 @@
|
||||
/* libc/sys/linux/select.c - The select system calls */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <sys/time.h>
|
||||
#include <sys/syscall.h>
|
||||
|
||||
|
||||
_syscall5(int,select,int,n,fd_set *,readfds,fd_set *,writefds,
|
||||
fd_set *,exceptfds,struct timeval *,timeout)
|
55
newlib/libc/sys/linux/signal.c
Normal file
55
newlib/libc/sys/linux/signal.c
Normal file
@ -0,0 +1,55 @@
|
||||
/* libc/sys/linux/signal.c - Signal handling functions */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#include <signal.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/syscall.h>
|
||||
|
||||
|
||||
#define __NR___sgetmask __NR_sgetmask /* avoid name space pollution */
|
||||
#define __NR___ssetmask __NR_ssetmask /* avoid name space pollution */
|
||||
|
||||
_syscall2(int,kill,pid_t,pid,int,sig)
|
||||
_syscall2(__sighandler_t,signal,int,signum,__sighandler_t,handler)
|
||||
_syscall3(int,sigaction,int,signum,const struct sigaction *,act,
|
||||
struct sigaction *,oldact)
|
||||
_syscall1(int,sigsuspend,const sigset_t *,mask)
|
||||
_syscall1(int,sigpending,sigset_t *,set)
|
||||
_syscall0(int,pause)
|
||||
_syscall1(unsigned int,alarm,unsigned int,seconds)
|
||||
_syscall3(int,sigprocmask,int,how,const sigset_t *,set,sigset_t *,oldset)
|
||||
|
||||
static _syscall0(int,__sgetmask)
|
||||
static _syscall1(int,__ssetmask,int,newmask)
|
||||
|
||||
|
||||
int sigsetmask(int newmask) /* BSD */
|
||||
{
|
||||
return __ssetmask(newmask);
|
||||
}
|
||||
|
||||
|
||||
int sigmask(int signum) /* BSD */
|
||||
{
|
||||
return 1 << signum;
|
||||
}
|
||||
|
||||
|
||||
int sigblock(int mask) /* BSD */
|
||||
{
|
||||
return __ssetmask(mask | __sgetmask());
|
||||
}
|
||||
|
||||
|
||||
int raise(int sig)
|
||||
{
|
||||
return kill(getpid(),sig);
|
||||
}
|
||||
|
||||
|
||||
const char *const sys_siglist[] = {
|
||||
#include "siglist.inc"
|
||||
};
|
21
newlib/libc/sys/linux/sys/cdefs.h
Normal file
21
newlib/libc/sys/linux/sys/cdefs.h
Normal file
@ -0,0 +1,21 @@
|
||||
/* libc/sys/linux/sys/cdefs.h - Helper macros for K&R vs. ANSI C compat. */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#ifndef _SYS_CDEFS_H
|
||||
#define _SYS_CDEFS_H
|
||||
|
||||
/*
|
||||
* Note: the goal here is not compatibility to K&R C. Since we know that we
|
||||
* have GCC which understands ANSI C perfectly well, we make use of this.
|
||||
*/
|
||||
|
||||
#define __P(args) args
|
||||
#define __PMT(args) args
|
||||
#define __const const
|
||||
#define __signed signed
|
||||
#define __volatile volatile
|
||||
#define __DOTS , ...
|
||||
|
||||
#endif
|
51
newlib/libc/sys/linux/sys/dirent.h
Normal file
51
newlib/libc/sys/linux/sys/dirent.h
Normal file
@ -0,0 +1,51 @@
|
||||
/* libc/sys/linux/sys/dirent.h - Directory entry as returned by readdir */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#ifndef _SYS_DIRENT_H
|
||||
#define _SYS_DIRENT_H
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <linux/dirent.h>
|
||||
|
||||
#define HAVE_NO_D_NAMLEN /* no struct dirent->d_namlen */
|
||||
|
||||
#define MAXNAMLEN 255 /* sizeof(struct dirent.d_name)-1 */
|
||||
|
||||
|
||||
typedef struct {
|
||||
int dd_fd; /* directory file */
|
||||
int dd_loc; /* position in buffer */
|
||||
int dd_seek;
|
||||
char *dd_buf; /* buffer */
|
||||
int dd_len; /* buffer length */
|
||||
int dd_size; /* amount of data in buffer */
|
||||
} DIR;
|
||||
|
||||
|
||||
#define __dirfd(dir) (dir)->dd_fd
|
||||
|
||||
/* --- redundant --- */
|
||||
|
||||
DIR *opendir(const char *);
|
||||
struct dirent *readdir(DIR *);
|
||||
void rewinddir(DIR *);
|
||||
int closedir(DIR *);
|
||||
|
||||
/* internal prototype */
|
||||
void _seekdir(DIR *dir,off_t offset);
|
||||
|
||||
#ifndef _POSIX_SOURCE
|
||||
long telldir (DIR *);
|
||||
void seekdir (DIR *, off_t loc);
|
||||
|
||||
int scandir (const char *__dir,
|
||||
struct dirent ***__namelist,
|
||||
int (*select) (const struct dirent *),
|
||||
int (*compar) (const struct dirent **, const struct dirent **));
|
||||
|
||||
int alphasort (const struct dirent **__a, const struct dirent **__b);
|
||||
#endif /* _POSIX_SOURCE */
|
||||
|
||||
#endif
|
28
newlib/libc/sys/linux/sys/errno.h
Normal file
28
newlib/libc/sys/linux/sys/errno.h
Normal file
@ -0,0 +1,28 @@
|
||||
/* libc/sys/linux/sys/errno.h - Errno variable and codes */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#ifndef _SYS_ERRNO_H
|
||||
#define _SYS_ERRNO_H
|
||||
|
||||
/* --- from newlin's sys/errno.h --- */
|
||||
|
||||
#include <sys/reent.h>
|
||||
|
||||
#ifndef _REENT_ONLY
|
||||
#define errno (*__errno())
|
||||
extern int *__errno _PARAMS ((void));
|
||||
#endif
|
||||
|
||||
extern __IMPORT _CONST char * _CONST _sys_errlist[];
|
||||
extern __IMPORT int _sys_nerr;
|
||||
|
||||
#define __errno_r(ptr) ((ptr)->_errno)
|
||||
|
||||
/* --- end of slight redundancy (the use of struct _reent->_errno is
|
||||
hard-coded in perror.c so why pretend anything else could work too ? */
|
||||
|
||||
#include <asm/errno.h>
|
||||
|
||||
#endif
|
29
newlib/libc/sys/linux/sys/fcntl.h
Normal file
29
newlib/libc/sys/linux/sys/fcntl.h
Normal file
@ -0,0 +1,29 @@
|
||||
/* libc/sys/linux/sys/fcntl.h - File access */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#ifndef _SYS_FCNTL_H
|
||||
#define _SYS_FCNTL_H
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <linux/fcntl.h>
|
||||
|
||||
/* --- redundant stuff below --- */
|
||||
|
||||
#include <_ansi.h>
|
||||
|
||||
extern int creat _PARAMS ((const char *, mode_t));
|
||||
extern int _open _PARAMS ((const char *, int, ...));
|
||||
|
||||
#ifdef __KERNEL_PROTOTYPES
|
||||
extern int open(const char *pathname, int flags, mode_t mode);
|
||||
extern int fcntl(int fd, int cmd, long arg);
|
||||
#else
|
||||
extern int open _PARAMS ((const char *, int, ...));
|
||||
extern int fcntl _PARAMS ((int, int, ...));
|
||||
#endif
|
||||
|
||||
extern int _fcntl _PARAMS ((int, int, ...));
|
||||
|
||||
#endif
|
13
newlib/libc/sys/linux/sys/file.h
Normal file
13
newlib/libc/sys/linux/sys/file.h
Normal file
@ -0,0 +1,13 @@
|
||||
/* libc/sys/linux/sys/file.h - BSD compatibility */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#ifndef _SYS_FILE_H
|
||||
#define _SYS_FILE_H
|
||||
|
||||
#include <sys/fcntl.h>
|
||||
|
||||
int flock(int fd,int operation);
|
||||
|
||||
#endif
|
11
newlib/libc/sys/linux/sys/ioctl.h
Normal file
11
newlib/libc/sys/linux/sys/ioctl.h
Normal file
@ -0,0 +1,11 @@
|
||||
/* libc/sys/linux/sys/ioctl.h - ioctl prototype */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#ifndef _SYS_IOCTL_H
|
||||
#define _SYS_IOCTL_H
|
||||
|
||||
int ioctl(int fd,int request,...);
|
||||
|
||||
#endif
|
12
newlib/libc/sys/linux/sys/resource.h
Normal file
12
newlib/libc/sys/linux/sys/resource.h
Normal file
@ -0,0 +1,12 @@
|
||||
/* libc/sys/linux/sys/resource.h - Resource usage */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#ifndef _SYS_RESOURCE_H
|
||||
#define _SYS_RESOURCE_H
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <linux/resource.h>
|
||||
|
||||
#endif
|
38
newlib/libc/sys/linux/sys/signal.h
Normal file
38
newlib/libc/sys/linux/sys/signal.h
Normal file
@ -0,0 +1,38 @@
|
||||
/* libc/sys/linux/sys/signal.h - Signal handling */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#ifndef _SYS_SIGNAL_H
|
||||
#define _SYS_SIGNAL_H
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <linux/signal.h>
|
||||
|
||||
/* --- include/signal.h thinks it knows better :-( --- */
|
||||
|
||||
#undef SIG_DFL
|
||||
#undef SIG_IGN
|
||||
#undef SIG_ERR
|
||||
|
||||
/* --- redundant stuff below --- */
|
||||
|
||||
#include <_ansi.h>
|
||||
|
||||
int _EXFUN(kill, (int, int));
|
||||
int _EXFUN(sigaction, (int, const struct sigaction *, struct sigaction *));
|
||||
int _EXFUN(sigaddset, (sigset_t *, const int));
|
||||
int _EXFUN(sigdelset, (sigset_t *, const int));
|
||||
int _EXFUN(sigismember, (const sigset_t *, int));
|
||||
int _EXFUN(sigfillset, (sigset_t *));
|
||||
int _EXFUN(sigemptyset, (sigset_t *));
|
||||
int _EXFUN(sigpending, (sigset_t *));
|
||||
int _EXFUN(sigsuspend, (const sigset_t *));
|
||||
int _EXFUN(sigpause, (int));
|
||||
|
||||
#ifndef _POSIX_SOURCE
|
||||
extern const char *const sys_siglist[];
|
||||
typedef __sighandler_t sig_t; /* BSDism */
|
||||
#endif
|
||||
|
||||
#endif
|
29
newlib/libc/sys/linux/sys/stat.h
Normal file
29
newlib/libc/sys/linux/sys/stat.h
Normal file
@ -0,0 +1,29 @@
|
||||
/* libc/sys/linux/sys/stat.h - Stat structure and macros */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#ifndef _SYS_STAT_H
|
||||
#define _SYS_STAT_H
|
||||
|
||||
#include <asm/stat.h>
|
||||
#define __KERNEL__
|
||||
#include <linux/stat.h>
|
||||
#undef __KERNEL__
|
||||
|
||||
/* --- redundant stuff below --- */
|
||||
|
||||
#include <_ansi.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
int _EXFUN(fstat,( int __fd, struct stat *__sbuf ));
|
||||
int _EXFUN(mkdir,( const char *_path, mode_t __mode ));
|
||||
int _EXFUN(mkfifo,( const char *__path, mode_t __mode ));
|
||||
int _EXFUN(stat,( const char *__path, struct stat *__sbuf ));
|
||||
mode_t _EXFUN(umask,( mode_t __mask ));
|
||||
|
||||
#ifndef _POSIX_SOURCE
|
||||
int _EXFUN(lstat,( const char *file_name, struct stat *buf));
|
||||
#endif /* _POSIX_SOURCE */
|
||||
|
||||
#endif /* _SYS_STAT_H */
|
88
newlib/libc/sys/linux/sys/syscall.h
Normal file
88
newlib/libc/sys/linux/sys/syscall.h
Normal file
@ -0,0 +1,88 @@
|
||||
/* libc/sys/linux/syscall.h - Linux system calls, common definitions */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#ifndef SYSCALL_H
|
||||
|
||||
#include <sys/errno.h>
|
||||
#include <asm/unistd.h>
|
||||
|
||||
|
||||
/*
|
||||
* Note: several system calls are for SysV or BSD compatibility, or are
|
||||
* specific Linuxisms. Most of those system calls are not implemented in
|
||||
* this library.
|
||||
*/
|
||||
|
||||
|
||||
#if defined(__PIC__) && defined(__i386__)
|
||||
|
||||
/*
|
||||
* PIC uses %ebx, so we need to save it during system calls
|
||||
*/
|
||||
|
||||
#undef _syscall1
|
||||
#define _syscall1(type,name,type1,arg1) \
|
||||
type name(type1 arg1) \
|
||||
{ \
|
||||
long __res; \
|
||||
__asm__ volatile ("push %%ebx; movl %2,%%ebx; int $0x80; pop %%ebx" \
|
||||
: "=a" (__res) \
|
||||
: "0" (__NR_##name),"r" ((long)(arg1))); \
|
||||
__syscall_return(type,__res); \
|
||||
}
|
||||
|
||||
#undef _syscall2
|
||||
#define _syscall2(type,name,type1,arg1,type2,arg2) \
|
||||
type name(type1 arg1,type2 arg2) \
|
||||
{ \
|
||||
long __res; \
|
||||
__asm__ volatile ("push %%ebx; movl %2,%%ebx; int $0x80; pop %%ebx" \
|
||||
: "=a" (__res) \
|
||||
: "0" (__NR_##name),"r" ((long)(arg1)),"c" ((long)(arg2))); \
|
||||
__syscall_return(type,__res); \
|
||||
}
|
||||
|
||||
#undef _syscall3
|
||||
#define _syscall3(type,name,type1,arg1,type2,arg2,type3,arg3) \
|
||||
type name(type1 arg1,type2 arg2,type3 arg3) \
|
||||
{ \
|
||||
long __res; \
|
||||
__asm__ volatile ("push %%ebx; movl %2,%%ebx; int $0x80; pop %%ebx" \
|
||||
: "=a" (__res) \
|
||||
: "0" (__NR_##name),"r" ((long)(arg1)),"c" ((long)(arg2)), \
|
||||
"d" ((long)(arg3))); \
|
||||
__syscall_return(type,__res); \
|
||||
}
|
||||
|
||||
#undef _syscall4
|
||||
#define _syscall4(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4) \
|
||||
type name (type1 arg1, type2 arg2, type3 arg3, type4 arg4) \
|
||||
{ \
|
||||
long __res; \
|
||||
__asm__ volatile ("push %%ebx; movl %2,%%ebx; int $0x80; pop %%ebx" \
|
||||
: "=a" (__res) \
|
||||
: "0" (__NR_##name),"r" ((long)(arg1)),"c" ((long)(arg2)), \
|
||||
"d" ((long)(arg3)),"S" ((long)(arg4))); \
|
||||
__syscall_return(type,__res); \
|
||||
}
|
||||
|
||||
#undef _syscall5
|
||||
#define _syscall5(type,name,type1,arg1,type2,arg2,type3,arg3,type4,arg4, \
|
||||
type5,arg5) \
|
||||
type name (type1 arg1,type2 arg2,type3 arg3,type4 arg4,type5 arg5) \
|
||||
{ \
|
||||
long __res; \
|
||||
__asm__ volatile ("push %%ebx; movl %2,%%ebx; int $0x80; pop %%ebx" \
|
||||
: "=a" (__res) \
|
||||
: "0" (__NR_##name),"m" ((long)(arg1)),"c" ((long)(arg2)), \
|
||||
"d" ((long)(arg3)),"S" ((long)(arg4)),"D" ((long)(arg5))); \
|
||||
__syscall_return(type,__res); \
|
||||
}
|
||||
|
||||
#undef _syscall6
|
||||
|
||||
#endif /* __PIC__ && __i386__ */
|
||||
|
||||
#endif /* SYSCALL_H */
|
16
newlib/libc/sys/linux/sys/termios.h
Normal file
16
newlib/libc/sys/linux/sys/termios.h
Normal file
@ -0,0 +1,16 @@
|
||||
/* libc/sys/linux/sys/termios.h - Terminal control definitions */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#ifndef _SYS_TERMIOS_H
|
||||
#define _SYS_TERMIOS_H
|
||||
|
||||
#include <linux/termios.h>
|
||||
|
||||
/* grr, this shouldn't have to be here */
|
||||
|
||||
int tcgetattr(int fd,struct termios *termios_p);
|
||||
int tcsetattr(int fd,int optional_actions,const struct termios *termios_p);
|
||||
|
||||
#endif
|
22
newlib/libc/sys/linux/sys/time.h
Normal file
22
newlib/libc/sys/linux/sys/time.h
Normal file
@ -0,0 +1,22 @@
|
||||
/* libc/sys/linux/sys/time.h - Time handling */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#ifndef _SYS_TIME_H
|
||||
#define _SYS_TIME_H
|
||||
|
||||
#include <sys/types.h>
|
||||
#include <linux/time.h>
|
||||
|
||||
/* --- redundant stuff below --- */
|
||||
|
||||
#include <_ansi.h>
|
||||
|
||||
int _EXFUN(gettimeofday, (struct timeval *__p, struct timezone *__z));
|
||||
int _EXFUN(settimeofday, (const struct timeval *, const struct timezone *));
|
||||
int _EXFUN(utimes, (const char *__path, struct timeval *__tvp));
|
||||
int _EXFUN(getitimer, (int __which, struct itimerval *__value));
|
||||
int _EXFUN(setitimer, (int __which, const struct itimerval *__value,
|
||||
struct itimerval *__ovalue));
|
||||
#endif
|
29
newlib/libc/sys/linux/sys/types.h
Normal file
29
newlib/libc/sys/linux/sys/types.h
Normal file
@ -0,0 +1,29 @@
|
||||
/* libc/sys/linux/sys/types.h - The usual type zoo */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#ifndef _SYS_TYPES_H
|
||||
#define _SYS_TYPES_H
|
||||
|
||||
/*
|
||||
* Okay, newlib has its own time_t and clock_t in libc/include/time.h
|
||||
* Since they're equivalent but not identical, we'll just skip the kernel's
|
||||
* definitions.
|
||||
*/
|
||||
|
||||
#ifdef __time_t_defined
|
||||
#define _TIME_T
|
||||
#else
|
||||
#define __time_t_defined
|
||||
#endif
|
||||
|
||||
#ifdef __clock_t_defined
|
||||
#define _CLOCK_T
|
||||
#else
|
||||
#define __clock_t_defined
|
||||
#endif
|
||||
|
||||
#include <linux/types.h>
|
||||
|
||||
#endif
|
54
newlib/libc/sys/linux/sys/utmp.h
Normal file
54
newlib/libc/sys/linux/sys/utmp.h
Normal file
@ -0,0 +1,54 @@
|
||||
/* libc/sys/linux/sys/utmp.h - utmp structure */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
/* Some things copied from glibc's /usr/include/bits/utmp.h */
|
||||
|
||||
|
||||
#ifndef _SYS_UTMP_H
|
||||
#define _SYS_UTMP_H
|
||||
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
|
||||
#define UTMP_FILE "/var/run/utmp"
|
||||
|
||||
#define UT_LINESIZE 32
|
||||
#define UT_NAMESIZE 32
|
||||
#define UT_HOSTSIZE 256
|
||||
|
||||
struct utmp {
|
||||
short int ut_type;
|
||||
pid_t ut_pid;
|
||||
char ut_line[UT_LINESIZE];
|
||||
char ut_id[4];
|
||||
char ut_user[UT_NAMESIZE];
|
||||
char ut_host[UT_HOSTSIZE];
|
||||
char __filler[52];
|
||||
};
|
||||
|
||||
#define RUN_LVL 1
|
||||
#define BOOT_TIME 2
|
||||
#define NEW_TIME 3
|
||||
#define OLD_TIME 4
|
||||
|
||||
#define INIT_PROCESS 5
|
||||
#define LOGIN_PROCESS 6
|
||||
#define USER_PROCESS 7
|
||||
#define DEAD_PROCESS 8
|
||||
|
||||
|
||||
/* --- redundant, from sys/cygwin/sys/utmp.h --- */
|
||||
|
||||
struct utmp *_getutline (struct utmp *);
|
||||
struct utmp *getutent (void);
|
||||
struct utmp *getutid (struct utmp *);
|
||||
struct utmp *getutline (struct utmp *);
|
||||
void endutent (void);
|
||||
void pututline (struct utmp *);
|
||||
void setutent (void);
|
||||
void utmpname (const char *);
|
||||
|
||||
#endif
|
23
newlib/libc/sys/linux/sys/utsname.h
Normal file
23
newlib/libc/sys/linux/sys/utsname.h
Normal file
@ -0,0 +1,23 @@
|
||||
/* libc/sys/linux/sys/utsname.h - System identification */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#ifndef _SYS_UTSNAME_H
|
||||
#define _SYS_UTSNAME_H
|
||||
|
||||
#define __UTSNAMELEN 65 /* synchronize with kernel */
|
||||
|
||||
struct utsname {
|
||||
char sysname[__UTSNAMELEN];
|
||||
char nodename[__UTSNAMELEN];
|
||||
char release[__UTSNAMELEN];
|
||||
char version[__UTSNAMELEN];
|
||||
char machine[__UTSNAMELEN];
|
||||
char domainname[__UTSNAMELEN];
|
||||
};
|
||||
|
||||
|
||||
int uname(struct utsname *name);
|
||||
|
||||
#endif
|
40
newlib/libc/sys/linux/sys/wait.h
Normal file
40
newlib/libc/sys/linux/sys/wait.h
Normal file
@ -0,0 +1,40 @@
|
||||
/* libc/sys/linux/sys/wait.h - Wait for children */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#ifndef _SYS_WAIT_H
|
||||
#define _SYS_WAIT_H
|
||||
|
||||
#include <linux/wait.h>
|
||||
|
||||
#define WIFEXITED(status) (!WTERMSIG(status))
|
||||
#define WEXITSTATUS(status) (((status) >> 8) & 0xff)
|
||||
#define WIFSIGNALED(status) (!WIFSTOPPED(status) && !WIFEXITED(status))
|
||||
#define WTERMSIG(status) ((status ) & 0x7f)
|
||||
#define WIFSTOPPED(status) (((status) & 0xff) == 0x7f)
|
||||
#define WSTOPSIG(status) WEXITSTATUS(status)
|
||||
|
||||
#ifndef _POSIX_SOURCE
|
||||
#define WCOREDUMP(status) ((status) & 0x80)
|
||||
#endif
|
||||
|
||||
/* --- redundant stuff below --- */
|
||||
|
||||
#include <_ansi.h>
|
||||
#include <sys/types.h>
|
||||
|
||||
pid_t wait (int *);
|
||||
pid_t waitpid (pid_t, int *, int);
|
||||
|
||||
pid_t _wait (int *);
|
||||
|
||||
|
||||
#ifndef _POSIX_SOURCE
|
||||
#include <sys/resource.h>
|
||||
|
||||
pid_t wait3(int *status,int options,struct rusage *rusage);
|
||||
pid_t wait4(pid_t pid,int *status,int options,struct rusage *rusage);
|
||||
#endif
|
||||
|
||||
#endif
|
10
newlib/libc/sys/linux/systat.c
Normal file
10
newlib/libc/sys/linux/systat.c
Normal file
@ -0,0 +1,10 @@
|
||||
/* libc/sys/linux/systat.c - System calls related to overall system state */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#include <sys/utsname.h>
|
||||
#include <sys/syscall.h>
|
||||
|
||||
|
||||
_syscall1(int,uname,struct utsname *,name)
|
37
newlib/libc/sys/linux/termios.c
Normal file
37
newlib/libc/sys/linux/termios.c
Normal file
@ -0,0 +1,37 @@
|
||||
/* libc/sys/linux/termios.c - Terminal control */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#include <errno.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/termios.h>
|
||||
#include <sys/ioctl.h>
|
||||
|
||||
|
||||
int tcgetattr(int fd,struct termios *termios_p)
|
||||
{
|
||||
return ioctl(fd,TCGETS,termios_p);
|
||||
}
|
||||
|
||||
|
||||
int tcsetattr(int fd,int optional_actions,const struct termios *termios_p)
|
||||
{
|
||||
int cmd;
|
||||
|
||||
switch (optional_actions) {
|
||||
case TCSANOW:
|
||||
cmd = TCSETS;
|
||||
break;
|
||||
case TCSADRAIN:
|
||||
cmd = TCSETSW;
|
||||
break;
|
||||
case TCSAFLUSH:
|
||||
cmd = TCSETSF;
|
||||
break;
|
||||
default:
|
||||
errno = EINVAL;
|
||||
return -1;
|
||||
}
|
||||
return ioctl(fd,cmd,termios_p);
|
||||
}
|
28
newlib/libc/sys/linux/time.c
Normal file
28
newlib/libc/sys/linux/time.c
Normal file
@ -0,0 +1,28 @@
|
||||
/* libc/sys/linux/time.c - Time-related system calls */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#include <errno.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/time.h>
|
||||
#include <linux/times.h>
|
||||
#include <sys/syscall.h>
|
||||
|
||||
|
||||
_syscall1(time_t,time,time_t *,t)
|
||||
_syscall1(clock_t,times,struct tms *,buf)
|
||||
_syscall2(int,gettimeofday,struct timeval *,tv,struct timezone *,tz)
|
||||
_syscall2(int,nanosleep,const struct timespec *,req,struct timespec *,rem)
|
||||
|
||||
|
||||
unsigned int sleep(unsigned int seconds)
|
||||
{
|
||||
struct timespec ts;
|
||||
|
||||
ts.tv_sec = seconds;
|
||||
ts.tv_nsec = 0;
|
||||
if (!nanosleep(&ts,&ts)) return 0;
|
||||
if (errno == EINTR) return ts.tv_sec;
|
||||
return -1;
|
||||
}
|
23
newlib/libc/sys/linux/wait.c
Normal file
23
newlib/libc/sys/linux/wait.c
Normal file
@ -0,0 +1,23 @@
|
||||
/* libc/sys/linux/wait.c - Wait function wrappers */
|
||||
|
||||
/* Written 2000 by Werner Almesberger */
|
||||
|
||||
|
||||
#include <sys/wait.h>
|
||||
#include <sys/syscall.h>
|
||||
|
||||
|
||||
_syscall3(pid_t,waitpid,pid_t,pid,int *,wait_stat,int,options)
|
||||
_syscall4(pid_t,wait4,pid_t,pid,int *,status,int,options,struct rusage *,rusage)
|
||||
|
||||
|
||||
pid_t wait3(int *status,int options,struct rusage *rusage)
|
||||
{
|
||||
return wait4(-1,status,options,rusage);
|
||||
}
|
||||
|
||||
|
||||
pid_t wait(int *status)
|
||||
{
|
||||
return waitpid(-1,status,0);
|
||||
}
|
@ -42,6 +42,14 @@ static char sccsid[] = "@(#)getpass.c 5.9 (Berkeley) 5/6/91";
|
||||
#include <sys/signal.h>
|
||||
#include <_syslist.h>
|
||||
|
||||
#ifndef _PATH_PASSWD
|
||||
#define _PATH_PASSWD "/etc/passwd"
|
||||
#endif
|
||||
|
||||
#ifndef _PASSWORD_LEN
|
||||
#define _PASSWORD_LEN 128 /* max length, not counting NULL */
|
||||
#endif
|
||||
|
||||
char *
|
||||
getpass (prompt)
|
||||
const char *prompt;
|
||||
|
Loading…
x
Reference in New Issue
Block a user