From 714a562f0bf855da3835adb2dbecc245e39f8759 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Thu, 12 Jun 1997 21:38:55 +0000 Subject: Update. <1997-06-12 21:22 Ulrich Drepper * Makefile (libc-map): Define before including Makerules. * Makerules (lib%.so): Depend on $(lib%-map). (build-shlib): Adapt rule for above change. (libc.so): Depend on $(libc-map). * db/Makefile (libcdb-map): New definition. * elf/Makefile (libdl-map): New definition. * elf/dl-lookup.c: Don't use relative include path. (undefined_msg): New variable. Use single string in all functions. (do_lookup): Correctly recognize default version. Return -2 if no version information is available. Stop processing hash entries when string was found. Don't bark about missing versioned symbol in file with original reference if it is a weak symbol. (_dl_lookup_symbol): Use undefined_msg. (_dl_lookup_versioned_symbol): Likewise. Give extra information if no verdef info is available. * elf/dl-version.c (file_needed): Remove first argument. We must seek in the whole search list. (match_symbol): Correct check for available verdef info. (_dl_check_map_versions): Correct call of find_needed. * locale/Makefile (libBrokenLocale-map): New definition. * login/Makefile (libutil-map): New definition. * math/Makefile (libm-map): New definition. * md5-crypt/Makefile (libcrypt-map): New definition. * nis/Makefile (libnsl-map, libnss_compat-map, libnss_nis-map, libnss_nisplus-map): New definition. * nss/Makefile (libnss_files-map, libnss_db-map): New definitions. * resolv/Makefile (libresolv-map, libnss_dns-map): New definitions. * libc.map: New file. * db/libdb.map: New file. * elf/libdl.map: New file. * locale/libBrokenLocale.map: New file. * login/libutil.map: New file. * math/libm.map: New file. * md5-crypt/libcrypt.map: New file. * nis/libnss_compat.map: New file. * nis/libnsl.map: New file. * nis/libnss_nis.map: New file. * nis/libnss_nisplus.map: New file. * nss/libnss_files.map: New file. * nss/libnss_db.map: New file. * resolv/libnss_dns.map: New file. * resolv/libresolv.map: New file. * sysdeps/i386/dl-machine.h (elf_machine_rel): Don't do anything for R_386_NONE entries. * Makefile (manual/dir-add.info): New rule. * Makerules: Add vpath definition for .x files. * Makerules (distinfo): Make sure target directory exists. * argp/argp-help.c (argp_args_usage): Don't modify `fdoc' value since it is used to distinguish filtered strings from unmodifed strings. * elf/dl-lookup.c (do_lookup): Optimize STT_* recognition. * elf/dl-reloc.c: Fix typo. * inet/arpa/tftp.h (struct tftphdr): Change type of tu_block to `unsigned short'. * manual/Makefile (dir-add.texi): Also emit wrapper text for info/install-info. (distribute): Add dir-add.texi and dir-add.info. (mostlyclean): Add dir-add.info. (realclean): Add dir-add.texi. (install): Add entries in `dir' file using install-info. * manual/libc.texinfo: Add @dircategory and @direntry text. Reported by Miles Bader . * manual/pattern.texi: Correct description of GLOB_MAGCHAR and GLOB_NOMAGIC. Changes by Roland McGrath . * nis/nis_addmember.c: Little optimizations. * nis/nis_call.c: Likewise. * nis/nis_creategroup.c: Likewise. * nis/nis_defaults.c: Likewise. * nis/nis_destroygroup.c: Likewise. * nis/nis_ismember.c: Likewise. * nis/nis_local_names.c: Likewise. * nis/nis_print_group_entry.c: Likewise. * nis/nis_verifygroup.c: Likewise. * posix/unistd.h: Fix comment for getcwd. * stdlib/Makefile (headers): Remove inttypes.h. It's a system dependent header. * sysdeps/wordsize-32/Dist: New file. * sysdeps/wordsize-32/Makefile: New file. * sysdeps/wordsize-64/Dist: New file. * sysdeps/wordsize-64/Makefile: New file. * sunrpc/Makefile: Adopt comment for real situation. * sysdeps/i386/add_n.S: Add ASM_TYPE_DIRECTIVE and AS_SIZE_DIRECTIVE. * sysdeps/i386/addmul_1.s: Likewise. * sysdeps/i386/lshist.s: Likewise. * sysdeps/i386/rshift.s: Likewise. * sysdeps/i386/sub_n.s: Likewise. * sysdeps/i386/submul_1.s: Likewise. * sysdeps/unix/sysv/linux/i386/sysdep.h (SYSCALL_ERROR_HANDLER): Add .type and .size. 1997-06-12 13:32 Philip Blundell * libc/sysdeps/unix/arm/brk.S: New file. * libc/sysdeps/unix/arm/sysdep.S: Likewise. * libc/sysdeps/unix/sysv/linux/arm/sysdep.S: Likewise. 1997-06-11 11:51 Thorsten Kukuk * nis/nss_nisplus/nisplus-spwd.c (_nss_nisplus_parse_spent): Check if we have shadow information. 1997-06-08 19:33 Thorsten Kukuk * nis/nis_getservlist.c (nis_getservlist): Use calloc instead of malloc, alloc memory for nis_server struct. * nis/nis_getservlist.c (nis_freeservlist): Give the memory for the nis_server struct free, too. * nis/nis_removemember (nis_removemember): Fix for loop. 1997-06-12 12:45 Ulrich Drepper * sysdeps/i386/fpu/__math.h (__M_SQRT2): Define here since we cannot rely on M_SQRT2 being defined. (log1p): Use __M_SQRT2 not M_SQRT2. * math/math.h (_Mldbl): Define even if M_* constants are not defined. Reported by corsepiu@faw.uni-ulm.de. 1997-06-12 03:08 Philip Blundell * nss/getXXbyYY_r.c (do_weak_alias): Remove extra parentheses. 1997-06-11 13:22 Ulrich Drepper * misc/regexp.h (compile): Allow use of macro INIT for variable declaration. Add documentation for INIT. Reported by Robert Bihlmeyer . 1997-06-11 10:47 Philip Blundell * sysdeps/unix/sysv/linux/net/if_arp.h: Add two new hardware types. 1997-06-10 11:31 H.J. Lu * sysdeps/powerpc/strlen.s: Use -0x101 instead of 0xfffffeff for a signed 16-bit value. 1997-06-07 07:54 H.J. Lu * sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c (_dl_sysdep_read_whole_file): Deleted. * sysdeps/powerpc/fenvbits.h (__FE_ALL_INVALID): Changed to FE_ALL_INVALID. * sysdeps/powerpc/fraiseexcpt.c (__FE_INVALID_SOFTWARE): Changed to FE_INVALID_SOFTWARE. (__FPSCR_STICKY_BITS): Changed to FPSCR_STICKY_BITS. * sysdeps/libm-ieee754/s_fmin.c: Fix a typo. 1997-06-07 18:48 H.J. Lu * shlib-versions (.*-.*-linux.*): Set libc to 6. 1997-06-08 15:35 Thorsten Kukuk * nis/nis_add.c (nis_add): Use nis_leaf_of_r instead of nis_name_of_r. * nis/nis_addmember.c (nis_addmember): Fix a lot of pointer errors. * nis/nis_clone.c: Likewise. * nis/nis_removemember.c (nis_removemember): Likewise. * nis/nis_table.c: Likewise. * nis/nss_nis/nis-hosts.c: Use addr, not p for inet_pton call. * nis/nss_nisplus/nisplus-hosts.c: Likewise. * nis/nss_nis/nis-netgrp.c (_nss_nis_setnetgrent): Check for group == NULL. 1997-06-08 21:21 Mark Kettenis * login/login.c, login/utmp_daemon.c, login/utmp_file.c, login/getutent_r.c, login/utmpname.c: Cleanup `#if _LIBC' and `#ifndef _LIBC' fragments. * login/programs/utmpd.c: Define DEFAULT_USER. (drop_priviliges): Use it. (main): Set locale and text domain. * login/programs/utmpd-private.h: Declare proc_utmp_eq. * login/programs/database.c (proc_utmp_eq): Removed. * login/programs/request.c (proc_utmp_eq): Made global. Only use ut_id field if valid. * login/utmp_file.c (proc_utmp_eq): Restore patch made by Miles Bader that was lost when adding the daemon backend; Only use ut_id field if valid. 1997-06-05 23:10 Andreas Schwab * sysdeps/unix/sysv/linux/Dist: Remove netatalk/atalk.h and netinet/icmp.h, add netatalk/at.h. * sysdeps/unix/sysv/linux/powerpc/Dist: Remove termios.h. * sysdeps/unix/sysv/linux/sparc/Dist: Remove start.c. 1997-06-04 19:22 Andreas Schwab * stdlib/testsort.c (compare): Fix parameter types. 1997-06-04 19:05 Andreas Schwab * md5-crypt/Makefile (distribute): Fix name of file. 1997-06-04 19:02 Andreas Schwab * login/Makefile (utmpd-routines): Remove utmpd again, which is already added implicitly through $(others). 1997-06-05 13:43 Fila Kolodny * sysdeps/unix/sysv/linux/Makefile (sysdep_headers): Add netipx/ipx.h. 1997-06-05 13:25 Andreas Jaeger * md5-crypt/md5-crypt.c: Add prototype for __md5_crypt. 1997-06-05 17:08 Ulrich Drepper * string/argz-addsep.c: Correct weak alias. Reported by Ben Pfaff . * locale/setlocale.c (setlocale): Free variable with locale path before returning. (setname): Don't test for _nl_current[category] being NULL before freeing. Reported by Ben Pfaff . 1997-06-04 12:41 Andreas Jaeger * manual/intro.texi (XPG): Correct some typos. * manual/libc.texinfo (Program Arguments): Menu updated. * nis/nis_local_names.c (nis_local_host): Fix pointer errors. --- sysdeps/i386/add_n.S | 3 ++ sysdeps/i386/addmul_1.S | 3 ++ sysdeps/i386/dl-machine.h | 4 +-- sysdeps/i386/fpu/__math.h | 6 +++- sysdeps/i386/lshift.S | 3 ++ sysdeps/i386/rshift.S | 3 ++ sysdeps/i386/sub_n.S | 3 ++ sysdeps/i386/submul_1.S | 3 ++ sysdeps/libm-ieee754/s_fmin.c | 2 +- sysdeps/powerpc/fenvbits.h | 2 +- sysdeps/powerpc/fraiseexcpt.c | 4 +-- sysdeps/powerpc/strlen.s | 10 +++--- sysdeps/unix/arm/brk.S | 43 ++++++++++++++++++++++++ sysdeps/unix/arm/sysdep.S | 49 +++++++++++++++++++++++++++ sysdeps/unix/sysv/linux/Dist | 3 +- sysdeps/unix/sysv/linux/Makefile | 3 +- sysdeps/unix/sysv/linux/arm/sysdep.S | 51 +++++++++++++++++++++++++++++ sysdeps/unix/sysv/linux/i386/sysdep.h | 8 +++-- sysdeps/unix/sysv/linux/net/if_arp.h | 2 ++ sysdeps/unix/sysv/linux/powerpc/Dist | 1 - sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c | 35 -------------------- sysdeps/unix/sysv/linux/sparc/Dist | 1 - sysdeps/wordsize-32/Dist | 1 + sysdeps/wordsize-32/Makefile | 3 ++ sysdeps/wordsize-64/Dist | 1 + sysdeps/wordsize-64/Makefile | 3 ++ 26 files changed, 195 insertions(+), 55 deletions(-) create mode 100644 sysdeps/unix/arm/brk.S create mode 100644 sysdeps/unix/arm/sysdep.S create mode 100644 sysdeps/unix/sysv/linux/arm/sysdep.S create mode 100644 sysdeps/wordsize-32/Dist create mode 100644 sysdeps/wordsize-32/Makefile create mode 100644 sysdeps/wordsize-64/Dist create mode 100644 sysdeps/wordsize-64/Makefile (limited to 'sysdeps') diff --git a/sysdeps/i386/add_n.S b/sysdeps/i386/add_n.S index a68fe2ed39..55c5dda446 100644 --- a/sysdeps/i386/add_n.S +++ b/sysdeps/i386/add_n.S @@ -32,6 +32,7 @@ .text ALIGN (3) .globl C_SYMBOL_NAME(__mpn_add_n) + ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(__mpn_add_n),@function) C_SYMBOL_NAME(__mpn_add_n:) pushl %edi pushl %esi @@ -102,3 +103,5 @@ L(oop): movl (%esi),%eax popl %esi popl %edi ret + + ASM_SIZE_DIRECTIVE(C_SYMBOL_NAME(__mpn_add_n)) \ No newline at end of file diff --git a/sysdeps/i386/addmul_1.S b/sysdeps/i386/addmul_1.S index 3e2c5cd616..8194ec495e 100644 --- a/sysdeps/i386/addmul_1.S +++ b/sysdeps/i386/addmul_1.S @@ -37,6 +37,7 @@ TEXT ALIGN (3) GLOBL C_SYMBOL_NAME(__mpn_addmul_1) + ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(__mpn_addmul_1),@function) C_SYMBOL_NAME(__mpn_addmul_1:) INSN1(push,l ,R(edi)) @@ -72,3 +73,5 @@ L(oop): INSN1(pop,l ,R(esi)) INSN1(pop,l ,R(edi)) ret + + ASM_SIZE_DIRECTIVE(C_SYMBOL_NAME(__mpn_addmul_1)) diff --git a/sysdeps/i386/dl-machine.h b/sysdeps/i386/dl-machine.h index 3e0f9b126c..6efa32bcd1 100644 --- a/sysdeps/i386/dl-machine.h +++ b/sysdeps/i386/dl-machine.h @@ -253,7 +253,7 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc, #endif *reloc_addr += map->l_addr; } - else + else if (ELF32_R_TYPE (reloc->r_info) != R_386_NONE) { const Elf32_Sym *const refsym = sym; Elf32_Addr value = RESOLVE (&sym, version, ELF32_R_TYPE (reloc->r_info)); @@ -305,8 +305,6 @@ elf_machine_rel (struct link_map *map, const Elf32_Rel *reloc, case R_386_PC32: *reloc_addr += (value - (Elf32_Addr) reloc_addr); break; - case R_386_NONE: /* Alright, Wilbur. */ - break; default: assert (! "unexpected dynamic reloc type"); break; diff --git a/sysdeps/i386/fpu/__math.h b/sysdeps/i386/fpu/__math.h index d5945e8ca2..9e1c23cec0 100644 --- a/sysdeps/i386/fpu/__math.h +++ b/sysdeps/i386/fpu/__math.h @@ -382,13 +382,17 @@ hypot (double __x, double __y) return sqrt (__x * __x + __y * __y); } +/* We cannot rely on M_SQRT being defined. So we do it for ourself + here. */ +#define __M_SQRT2 _Mldbl(1.41421356237309504880) /* sqrt(2) */ + __MATH_INLINE double log1p (double __x); __MATH_INLINE double log1p (double __x) { register double __value; - if (fabs (__x) >= 1.0 - 0.5 * M_SQRT2) + if (fabs (__x) >= 1.0 - 0.5 * __M_SQRT2) __value = log (1.0 + __x); else __asm __volatile__ diff --git a/sysdeps/i386/lshift.S b/sysdeps/i386/lshift.S index cd6d95b62e..2f629b0303 100644 --- a/sysdeps/i386/lshift.S +++ b/sysdeps/i386/lshift.S @@ -31,6 +31,7 @@ .text ALIGN (3) .globl C_SYMBOL_NAME(__mpn_lshift) + ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(__mpn_lshift),@function) C_SYMBOL_NAME(__mpn_lshift:) pushl %edi pushl %esi @@ -81,3 +82,5 @@ L(end): shll %cl,%ebx /* compute least significant limb */ popl %esi popl %edi ret + + ASM_SIZE_DIRECTIVE(C_SYMBOL_NAME(__mpn_lshift)) \ No newline at end of file diff --git a/sysdeps/i386/rshift.S b/sysdeps/i386/rshift.S index f00f9d59f2..a0382672de 100644 --- a/sysdeps/i386/rshift.S +++ b/sysdeps/i386/rshift.S @@ -31,6 +31,7 @@ .text ALIGN (3) .globl C_SYMBOL_NAME(__mpn_rshift) + ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(__mpn_rshift),@function) C_SYMBOL_NAME(__mpn_rshift:) pushl %edi pushl %esi @@ -83,3 +84,5 @@ L(end): shrl %cl,%ebx /* compute most significant limb */ popl %esi popl %edi ret + + ASM_SIZE_DIRECTIVE(C_SYMBOL_NAME(__mpn_rshift)) \ No newline at end of file diff --git a/sysdeps/i386/sub_n.S b/sysdeps/i386/sub_n.S index 229734c2e9..c41c9a6408 100644 --- a/sysdeps/i386/sub_n.S +++ b/sysdeps/i386/sub_n.S @@ -32,6 +32,7 @@ .text ALIGN (3) .globl C_SYMBOL_NAME(__mpn_sub_n) + ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(__mpn_sub_n),@function) C_SYMBOL_NAME(__mpn_sub_n:) pushl %edi pushl %esi @@ -102,3 +103,5 @@ L(oop): movl (%esi),%eax popl %esi popl %edi ret + + ASM_SIZE_DIRECTIVE(C_SYMBOL_NAME(__mpn_sub_n)) \ No newline at end of file diff --git a/sysdeps/i386/submul_1.S b/sysdeps/i386/submul_1.S index 8efef7609f..6bba494417 100644 --- a/sysdeps/i386/submul_1.S +++ b/sysdeps/i386/submul_1.S @@ -37,6 +37,7 @@ TEXT ALIGN (3) GLOBL C_SYMBOL_NAME(__mpn_submul_1) + ASM_TYPE_DIRECTIVE(C_SYMBOL_NAME(__mpn_submul_1),@function) C_SYMBOL_NAME(__mpn_submul_1:) INSN1(push,l ,R(edi)) @@ -72,3 +73,5 @@ L(oop): INSN1(pop,l ,R(esi)) INSN1(pop,l ,R(edi)) ret + + ASM_SIZE_DIRECTIVE(C_SYMBOL_NAME(__mpn_addmul_1)) diff --git a/sysdeps/libm-ieee754/s_fmin.c b/sysdeps/libm-ieee754/s_fmin.c index f9a937c850..b79e6eca5a 100644 --- a/sysdeps/libm-ieee754/s_fmin.c +++ b/sysdeps/libm-ieee754/s_fmin.c @@ -28,6 +28,6 @@ __fmin (double x, double y) } weak_alias (__fmin, fmin) #ifdef NO_LONG_DOUBLE -strong_alias (__fmim, __fminl) +strong_alias (__fmin, __fminl) weak_alias (__fmin, fminl) #endif diff --git a/sysdeps/powerpc/fenvbits.h b/sysdeps/powerpc/fenvbits.h index 867ea5f5b4..8acd0ab8a4 100644 --- a/sysdeps/powerpc/fenvbits.h +++ b/sysdeps/powerpc/fenvbits.h @@ -85,7 +85,7 @@ enum FE_INVALID_INTEGER_CONVERSION = 1 << 31-23, #define FE_INVALID_INTEGER_CONVERSION FE_INVALID_INTEGER_CONVERSION -#define __FE_ALL_INVALID \ +#define FE_ALL_INVALID \ (FE_INVALID_SNAN | FE_INVALID_ISI | FE_INVALID_IDI | FE_INVALID_ZDZ \ | FE_INVALID_IMZ | FE_INVALID_COMPARE | FE_INVALID_SOFTWARE \ | FE_INVALID_SQRT | FE_INVALID_INTEGER_CONVERSION) diff --git a/sysdeps/powerpc/fraiseexcpt.c b/sysdeps/powerpc/fraiseexcpt.c index aa8f1fcdc6..4305c3dcd2 100644 --- a/sysdeps/powerpc/fraiseexcpt.c +++ b/sysdeps/powerpc/fraiseexcpt.c @@ -34,9 +34,9 @@ feraiseexcept (int excepts) /* Add the exceptions */ u.l[1] = (u.l[1] - | excepts & __FPSCR_STICKY_BITS + | excepts & FPSCR_STICKY_BITS /* Turn FE_INVALID into FE_INVALID_SOFTWARE. */ - | excepts << (31 - 21) - (31 - 24) & __FE_INVALID_SOFTWARE); + | excepts << (31 - 21) - (31 - 24) & FE_INVALID_SOFTWARE); /* Store the new status word (along with the rest of the environment), triggering any appropriate exceptions. */ diff --git a/sysdeps/powerpc/strlen.s b/sysdeps/powerpc/strlen.s index fa1c670912..9d671cabc3 100644 --- a/sysdeps/powerpc/strlen.s +++ b/sysdeps/powerpc/strlen.s @@ -100,8 +100,8 @@ strlen: bne done0 # Handle second word of pair. Put addi between branches to avoid hurting # branch prediction. - addi %r6,%r6,0xfffffeff - + addi %r6,%r6,-0x101 + bne %cr1,loop lwzu %r8,4(%r4) and %r0,%r7,%r8 @@ -111,7 +111,7 @@ strlen: bne done0 # The loop. - + loop: lwz %r8,4(%r4) lwzu %r9,8(%r4) add %r0,%r6,%r8 @@ -127,12 +127,12 @@ loop: lwz %r8,4(%r4) add %r0,%r0,%r7 andc %r8,%r12,%r0 b done0 - + done1: and %r0,%r7,%r8 subi %r4,%r4,4 add %r0,%r0,%r7 andc %r8,%r10,%r0 - + # When we get to here, r4 points to the first word in the string that # contains a zero byte, and the most significant set bit in r8 is in that # byte. diff --git a/sysdeps/unix/arm/brk.S b/sysdeps/unix/arm/brk.S new file mode 100644 index 0000000000..a801674283 --- /dev/null +++ b/sysdeps/unix/arm/brk.S @@ -0,0 +1,43 @@ +/* Copyright (C) 1991, 1992, 1993, 1995 Free Software Foundation, Inc. +This file is part of the GNU C Library. + +The GNU C Library is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public License as +published by the Free Software Foundation; either version 2 of the +License, or (at your option) any later version. + +The GNU C Library is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with the GNU C Library; see the file COPYING.LIB. If +not, write to the Free Software Foundation, Inc., 675 Mass Ave, +Cambridge, MA 02139, USA. */ + +#include + +#ifndef SYS_brk +#define SYS_brk 17 +#endif + +.data +.globl C_SYMBOL_NAME(__curbrk) +C_LABEL(__curbrk) +#ifdef HAVE_GNU_LD + .long C_SYMBOL_NAME(_end) +#else + .long C_SYMBOL_NAME(end) +#endif + +.text +SYSCALL__ (brk, 1) + ldr r1, _cb_addr + str r0, [r1] + mov r0, $0 + RETINSTR(mov, pc, r14) +_cb_addr: .long C_SYMBOL_NAME(__curbrk) + + +weak_alias (__brk, brk) diff --git a/sysdeps/unix/arm/sysdep.S b/sysdeps/unix/arm/sysdep.S new file mode 100644 index 0000000000..5d3ad551c6 --- /dev/null +++ b/sysdeps/unix/arm/sysdep.S @@ -0,0 +1,49 @@ +/* Copyright (C) 1991, 92, 93, 94, 95, 96, 97 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include +#define _ERRNO_H +#include + +.globl C_SYMBOL_NAME(errno) +.globl syscall_error + +_errno_loc: .long C_SYMBOL_NAME(errno) + +#undef syscall_error +#ifdef NO_UNDERSCORES +__syscall_error: +#else +syscall_error: +#endif +#if defined (EWOULDBLOCK_sys) && EWOULDBLOCK_sys != EAGAIN + /* We translate the system's EWOULDBLOCK error into EAGAIN. + The GNU C library always defines EWOULDBLOCK==EAGAIN. + EWOULDBLOCK_sys is the original number. */ + cmp r0, $EWOULDBLOCK_sys /* Is it the old EWOULDBLOCK? */ + moveq r0, $EAGAIN /* Yes; translate it to EAGAIN. */ +#endif +#ifndef PIC + ldr r1, _errno_loc + str r0, [r1] +#endif + mvn r0, $0 + RETINSTR(mov, pc, r14) + +#undef __syscall_error +END (__syscall_error) diff --git a/sysdeps/unix/sysv/linux/Dist b/sysdeps/unix/sysv/linux/Dist index d4b6bac217..fc403871f3 100644 --- a/sysdeps/unix/sysv/linux/Dist +++ b/sysdeps/unix/sysv/linux/Dist @@ -13,8 +13,7 @@ net/if_ppp.h net/ppp-comp.h net/ppp_defs.h net/route.h -netatalk/atalk.h -netinet/icmp.h +netatalk/at.h netinet/if_fddi.h netinet/if_tr.h netinet/igmp.h diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile index 4e698ce1d8..c61904a3b8 100644 --- a/sysdeps/unix/sysv/linux/Makefile +++ b/sysdeps/unix/sysv/linux/Makefile @@ -55,7 +55,8 @@ endif ifeq ($(subdir),inet) sysdep_headers += netinet/in_systm.h netinet/udp.h \ netinet/if_fddi.h netinet/if_tr.h netinet/igmp.h \ - netinet/ip_fw.h netinet/ip_icmp.h sys/socketvar.h + netinet/ip_fw.h netinet/ip_icmp.h netipx/ipx.h \ + sys/socketvar.h endif # Don't compile the ctype glue code, since there is no old non-GNU C library. diff --git a/sysdeps/unix/sysv/linux/arm/sysdep.S b/sysdeps/unix/sysv/linux/arm/sysdep.S new file mode 100644 index 0000000000..a71181c911 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arm/sysdep.S @@ -0,0 +1,51 @@ +/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include + +/* We define errno here, to be consistent with Linux/i386. */ + .bss + .globl errno + .type errno,@object + .size errno,4 +errno: .zero 4 + .globl _errno + .type _errno,@object +_errno = errno /* This name is expected by hj's libc.so.5 startup code. */ + .text + +/* The following code is only used in the shared library when we + compile the reentrant version. Otherwise each system call defines + each own version. */ + +#ifndef PIC + +/* The syscall stubs jump here when they detect an error. + The code for Linux is almost identical to the canonical Unix/i386 + code, except that the error number in %eax is negated. */ + +#undef CALL_MCOUNT +#define CALL_MCOUNT /* Don't insert the profiling call, it clobbers %eax. */ + +ENTRY (__syscall_error) + mvn r0, r0 + +#define __syscall_error __syscall_error_1 +#include + +#endif /* !PIC */ diff --git a/sysdeps/unix/sysv/linux/i386/sysdep.h b/sysdeps/unix/sysv/linux/i386/sysdep.h index a38e4b3531..66fbeca73e 100644 --- a/sysdeps/unix/sysv/linux/i386/sysdep.h +++ b/sysdeps/unix/sysv/linux/i386/sysdep.h @@ -62,6 +62,7 @@ /* Store (- %eax) into errno through the GOT. */ #ifdef _LIBC_REENTRANT #define SYSCALL_ERROR_HANDLER \ + .type syscall_error,@function; \ syscall_error: \ pushl %ebx; \ call 0f; \ @@ -77,11 +78,13 @@ syscall_error: \ popl %ebx; \ movl %ecx, (%eax); \ movl $-1, %eax; \ - ret; + ret; \ + .size syscall_error,.-syscall_error; /* A quick note: it is assumed that the call to `__errno_location' does not modify the stack! */ #else #define SYSCALL_ERROR_HANDLER \ + .type syscall_error,@function; \ syscall_error: \ call 0f; \ 0:popl %ecx; \ @@ -91,7 +94,8 @@ syscall_error: \ movl errno@GOT(%ecx), %ecx; \ movl %edx, (%ecx); \ movl $-1, %eax; \ - ret; + ret; \ + .size syscall_error,.-syscall_error; #endif /* _LIBC_REENTRANT */ #endif /* PIC */ diff --git a/sysdeps/unix/sysv/linux/net/if_arp.h b/sysdeps/unix/sysv/linux/net/if_arp.h index b1cd18360e..d784f0cfc7 100644 --- a/sysdeps/unix/sysv/linux/net/if_arp.h +++ b/sysdeps/unix/sysv/linux/net/if_arp.h @@ -90,6 +90,8 @@ struct arphdr #define ARPHRD_ROSE 270 #define ARPHRD_X25 271 /* CCITT X.25. */ #define ARPHRD_PPP 512 +#define ARPHRD_HDLC 513 /* (Cisco) HDLC. */ +#define ARPHRD_LAPB 516 /* LAPB. */ #define ARPHRD_TUNNEL 768 /* IPIP tunnel. */ #define ARPHRD_TUNNEL6 769 /* IPIP6 tunnel. */ diff --git a/sysdeps/unix/sysv/linux/powerpc/Dist b/sysdeps/unix/sysv/linux/powerpc/Dist index c8c265c474..27a951f169 100644 --- a/sysdeps/unix/sysv/linux/powerpc/Dist +++ b/sysdeps/unix/sysv/linux/powerpc/Dist @@ -1,7 +1,6 @@ clone.S ioctl-types.h termbits.h -termios.h kernel_stat.h kernel_termios.h sys/kernel_termios.h diff --git a/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c b/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c index 1c79f6a93c..7280315933 100644 --- a/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c +++ b/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c @@ -149,38 +149,3 @@ _dl_sysdep_open_zero_fill (void) return __open ("/dev/zero", O_RDONLY); } #endif - -/* Read the whole contents of FILE into new mmap'd space with given - protections. *SIZEP gets the size of the file. */ - -void * -_dl_sysdep_read_whole_file (const char *file, size_t *sizep, int prot) -{ - void *result; - struct stat st; - int fd = __open (file, O_RDONLY); - if (fd < 0) - return NULL; - if (__fstat (fd, &st) < 0) - result = NULL; - else - { - /* Map a copy of the file contents. */ - result = __mmap (0, st.st_size, prot, -#ifdef MAP_COPY - MAP_COPY -#else - MAP_PRIVATE -#endif -#ifdef MAP_FILE - | MAP_FILE -#endif - , fd, 0); - if (result == (void *) -1) - result = NULL; - else - *sizep = st.st_size; - } - __close (fd); - return result; -} diff --git a/sysdeps/unix/sysv/linux/sparc/Dist b/sysdeps/unix/sysv/linux/sparc/Dist index ab22392c04..c31f140137 100644 --- a/sysdeps/unix/sysv/linux/sparc/Dist +++ b/sysdeps/unix/sysv/linux/sparc/Dist @@ -1,6 +1,5 @@ __sigtrampoline.S clone.S -start.c pipe.S fork.S kernel_stat.h diff --git a/sysdeps/wordsize-32/Dist b/sysdeps/wordsize-32/Dist new file mode 100644 index 0000000000..625e4d0fc7 --- /dev/null +++ b/sysdeps/wordsize-32/Dist @@ -0,0 +1 @@ +inttypes.h \ No newline at end of file diff --git a/sysdeps/wordsize-32/Makefile b/sysdeps/wordsize-32/Makefile new file mode 100644 index 0000000000..73b64ed054 --- /dev/null +++ b/sysdeps/wordsize-32/Makefile @@ -0,0 +1,3 @@ +ifeq ($(subdir),stdlib) +sysdep_headers += inttypes.h +endif \ No newline at end of file diff --git a/sysdeps/wordsize-64/Dist b/sysdeps/wordsize-64/Dist new file mode 100644 index 0000000000..625e4d0fc7 --- /dev/null +++ b/sysdeps/wordsize-64/Dist @@ -0,0 +1 @@ +inttypes.h \ No newline at end of file diff --git a/sysdeps/wordsize-64/Makefile b/sysdeps/wordsize-64/Makefile new file mode 100644 index 0000000000..73b64ed054 --- /dev/null +++ b/sysdeps/wordsize-64/Makefile @@ -0,0 +1,3 @@ +ifeq ($(subdir),stdlib) +sysdep_headers += inttypes.h +endif \ No newline at end of file -- cgit v1.2.3