diff options
-rw-r--r-- | ChangeLog | 27 | ||||
-rw-r--r-- | Makefile | 6 | ||||
-rw-r--r-- | elf/elf.h | 2 | ||||
-rw-r--r-- | manual/texinfo.tex | 63 | ||||
-rw-r--r-- | posix/regex.c | 9 | ||||
-rw-r--r-- | sysdeps/arm/elf/setjmp.S | 76 | ||||
-rw-r--r-- | sysdeps/arm/fpu/setjmp.S | 3 | ||||
-rw-r--r-- | sysdeps/powerpc/backtrace.c | 63 |
8 files changed, 136 insertions, 113 deletions
diff --git a/ChangeLog b/ChangeLog index cb43dc593e..967f2173f0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,30 @@ +1998-08-14 10:08 Ulrich Drepper <drepper@cygnus.com> + + * manual/texinfo.tex: Update. + +1998-08-07 Geoff Keating <geoffk@ozemail.com.au> + + * sysdeps/powerpc/backtrace.c: New file. + +1998-08-14 Philip Blundell <pb@nexus.co.uk> + + * sysdeps/arm/fpu/setjmp.S: Correct value of R0 before calling + sigjmp_save. + * sysdeps/arm/elf/setjmp.S: Obsolete, deleted. + +1998-08-11 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + * Makefile (install-symbolic-link): Fix spelling. + +1998-08-11 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + * elf/elf.h (SHT_HIOS): Fix value. + +1998-08-10 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> + + * posix/regex.c (WIDE_CHAR_SUPPORT): Don't generate defined as + part of the expansion, this is undefined by the standard. + 1998-08-13 19:41 Ulrich Drepper <drepper@cygnus.com> * posix/getconf.c: Add support for systems with incomplete confname.h. diff --git a/Makefile b/Makefile index b558a25564..14355f0b04 100644 --- a/Makefile +++ b/Makefile @@ -90,9 +90,9 @@ install: subdir_install # Ignore the error if we cannot update /etc/ld.so.cache. ifeq (no,$(cross-compiling)) ifeq (yes,$(build-shared)) -install: install-symblolic-link -.PHONY: install-symblolic-link -install-symblolic-link: subdir_install +install: install-symbolic-link +.PHONY: install-symbolic-link +install-symbolic-link: subdir_install $(symbolic-link-prog) $(symbolic-link-list) install: diff --git a/elf/elf.h b/elf/elf.h index e149b6f4aa..cc33624208 100644 --- a/elf/elf.h +++ b/elf/elf.h @@ -267,7 +267,7 @@ typedef struct #define SHT_GNU_verneed 0x6ffffffe /* Version needs section. */ #define SHT_GNU_versym 0x6fffffff /* Version symbol table. */ #define SHT_HISUNW 0x6fffffff /* Sun-specific high bound. */ -#define SHT_HIOS 0x60000000 /* End OS-specific type */ +#define SHT_HIOS 0x6fffffff /* End OS-specific type */ #define SHT_LOPROC 0x70000000 /* Start of processor-specific */ #define SHT_HIPROC 0x7fffffff /* End of processor-specific */ #define SHT_LOUSER 0x80000000 /* Start of application-specific */ diff --git a/manual/texinfo.tex b/manual/texinfo.tex index fada53dffc..0d6e2890ba 100644 --- a/manual/texinfo.tex +++ b/manual/texinfo.tex @@ -1,5 +1,5 @@ % texinfo.tex -- TeX macros to handle Texinfo files. -% $Id: texinfo.tex,v 2.218 1998/07/22 10:59:56 drepper Exp $ +% $Id: texinfo.tex,v 2.219 1998/08/15 02:38:13 drepper Exp $ % % Copyright (C) 1985, 86, 88, 90, 91, 92, 93, 94, 95, 96, 97, 98 % Free Software Foundation, Inc. @@ -27,10 +27,10 @@ % reports; you can get the latest version from: % ftp://ftp.gnu.org/pub/gnu/texinfo.tex % /home/gd/gnu/doc/texinfo.tex on the GNU machines. -% (and all GNU mirrors, see ftp://ftp.gnu.org/pub/gnu/README.mirrors) +% (and all GNU mirrors, see ftp://ftp.gnu.org/pub/gnu/GNUinfo/FTP) % ftp://tug.org/tex/texinfo.tex % ftp://ctan.org/macros/texinfo/texinfo.tex -% (and all CTAN mirrors, finger ctan@tug.org for a list). +% (and all CTAN mirrors, finger ctan@ctan.org for a list). % The texinfo.tex in the texinfo distribution itself could well be out % of date, so if that's what you're using, please check. % @@ -40,7 +40,7 @@ % % To process a Texinfo manual with TeX, it's most reliable to use the % texi2dvi shell script that comes with the distribution. For simple -% manuals, you can get away with: +% manuals, however, you can get away with: % tex foo.texi % texindex foo.?? % tex foo.texi @@ -58,7 +58,7 @@ % This automatically updates the version number based on RCS. \def\deftexinfoversion$#1: #2 ${\def\texinfoversion{#2}} -\deftexinfoversion$Revision: 2.218 $ +\deftexinfoversion$Revision: 2.219 $ \message{Loading texinfo package [Version \texinfoversion]:} % If in a .fmt file, print the version number @@ -959,9 +959,17 @@ where each line of input produces a line of output.} % @value{foo} gets the text saved in variable foo. % -\def\value{\begingroup - \catcode`\-=12 \catcode`\_=12 % Allow - and _ in VAR. - \valuexxx} +{ + \catcode`\_ = \active + % + % We might end up with active _ or - characters in the argument if + % we're called from @code, as @code{@value{foo-bar_}}. So \let any + % such active characters to their normal equivalents. + \gdef\value{\begingroup + \catcode`\-=12 \catcode`\_=12 + \indexbreaks \let_\normalunderscore + \valuexxx} +} \def\valuexxx#1{\expandablevalue{#1}\endgroup} % We have this subroutine so that we can handle at least some @value's @@ -1190,8 +1198,8 @@ where each line of input produces a line of output.} \setfont\ninett\ttshape{9}{1000} \setfont\ninettsl\ttslshape{10}{900} \setfont\indrm\rmshape{9}{1000} -\setfont\indit\slshape{9}{1000} -\let\indsl=\indit +\setfont\indit\itshape{9}{1000} +\setfont\indsl\slshape{9}{1000} \let\indtt=\ninett \let\indttsl=\ninettsl \let\indsf=\indrm @@ -1340,13 +1348,14 @@ where each line of input produces a line of output.} % \smartitalic{ARG} outputs arg in italics, followed by an italic correction % unless the following character is such as not to need one. \def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else\/\fi\fi\fi} -\def\smartitalic#1{{\sl #1}\futurelet\next\smartitalicx} +\def\smartslanted#1{{\sl #1}\futurelet\next\smartitalicx} +\def\smartitalic#1{{\it #1}\futurelet\next\smartitalicx} \let\i=\smartitalic -\let\var=\smartitalic -\let\dfn=\smartitalic +\let\var=\smartslanted +\let\dfn=\smartslanted \let\emph=\smartitalic -\let\cite=\smartitalic +\let\cite=\smartslanted \def\b#1{{\bf #1}} \let\strong=\b @@ -1413,20 +1422,18 @@ where each line of input produces a line of output.} % and arrange explicitly to hyphenate at a dash. % -- rms. { -\catcode`\-=\active -\catcode`\_=\active -\catcode`\|=\active -\global\def\code{\begingroup \catcode`\-=\active \let-\codedash \catcode`\_=\active \let_\codeunder \codex} -% The following is used by \doprintindex to insure that long function names -% wrap around. It is necessary for - and _ to be active before the index is -% read from the file, as \entry parses the arguments long before \code is -% ever called. -- mycroft -% _ is always active; and it shouldn't be \let = to an _ that is a -% subscript character anyway. Then, @cindex @samp{_} (for example) -% fails. --karl -\global\def\indexbreaks{% - \catcode`\-=\active \let-\realdash -} + \catcode`\-=\active + \catcode`\_=\active + % + \global\def\code{\begingroup + \catcode`\-=\active \let-\codedash + \catcode`\_=\active \let_\codeunder + \codex + } + % + % If we end up with any active - characters when handling the index, + % just treat them as a normal -. + \global\def\indexbreaks{\catcode`\-=\active \let-\realdash} } \def\realdash{-} diff --git a/posix/regex.c b/posix/regex.c index 0543433fbe..98ff8dfcbd 100644 --- a/posix/regex.c +++ b/posix/regex.c @@ -46,12 +46,11 @@ # include <sys/types.h> #endif -#define WIDE_CHAR_SUPPORT \ - defined _LIBC || (HAVE_WCTYPE_H && HAVE_WCHAR_H && HAVE_BTOWC) +#define WIDE_CHAR_SUPPORT (HAVE_WCTYPE_H && HAVE_WCHAR_H && HAVE_BTOWC) /* For platform which support the ISO C amendement 1 functionality we support user defined character classes. */ -#if WIDE_CHAR_SUPPORT +#if defined _LIBC || WIDE_CHAR_SUPPORT /* Solaris 2.5 has a bug: <wchar.h> must be included before <wctype.h>. */ # include <wchar.h> # include <wctype.h> @@ -1719,7 +1718,7 @@ typedef struct } \ } -#if WIDE_CHAR_SUPPORT +#if defined _LIBC || WIDE_CHAR_SUPPORT /* The GNU C library provides support for user-defined character classes and the functions from ISO C amendement 1. */ # ifdef CHARCLASS_NAME_MAX @@ -2223,7 +2222,7 @@ regex_compile (pattern, size, syntax, bufp) the leading `:' and `[' (but set bits for them). */ if (c == ':' && *p == ']') { -#if WIDE_CHAR_SUPPORT +#if defined _LIBC || WIDE_CHAR_SUPPORT boolean is_lower = STREQ (str, "lower"); boolean is_upper = STREQ (str, "upper"); wctype_t wt; diff --git a/sysdeps/arm/elf/setjmp.S b/sysdeps/arm/elf/setjmp.S deleted file mode 100644 index 51572ca515..0000000000 --- a/sysdeps/arm/elf/setjmp.S +++ /dev/null @@ -1,76 +0,0 @@ -/* setjmp for arm, ELF version. - Copyright (C) 1995, 1996, 1997, 1998 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 <sysdep.h> -#define _ASM -#define _SETJMP_H -#include <bits/setjmp.h> - - /* We include the BSD entry points here as well but we make - them weak. */ -ENTRY (setjmp) - .weak C_SYMBOL_NAME (setjmp) - @ call comes here with - @ lr = return pc - @ r0 = &jump_buf - - @ add a second argument into the fray - mov r1, #1 - @ call the common code - b __sigsetjmp(PLT) -END (setjmp) - - /* Binary compatibility entry point. */ -ENTRY (_setjmp) - .weak C_SYMBOL_NAME (_setjmp) -ENTRY (__setjmp) - @ call comes here with - @ lr = return pc - @ r0 = &jump_buf - - @ add a second argument into the fray - mov r1, #1 - @ fall through to the common code.... - -ENTRY (__sigsetjmp) - @ save the registers into the jmp_buf.... - stmia r0, {r1-r6, sl, fp, sp, lr} - - /* Make a tail call to __sigjmp_save; it takes the same args. */ -#ifdef PIC - /* We cannot use the PLT, because it requires that sl==r10 be set, but - we can't save and restore our caller's value. Instead, we do an - indirect jump through the GOT, using for the temporary register - ip, which is call-clobbered. */ - ldr ip, 1f - add ip, ip, pc -2: @ get the address of __sigjmp_save - ldr r1, 3f - ldr ip, [ip, r1] - @ restore r1 - ldr r1, [r0] - @ jump to *__sigjmp_save - mov pc, ip -1: .word _GLOBAL_OFFSET_TABLE_ - 2b - 4 -3: .word __sigjmp_save(GOT) - -#else - b __sigjmp_save -#endif -END (__sigsetjmp) diff --git a/sysdeps/arm/fpu/setjmp.S b/sysdeps/arm/fpu/setjmp.S index 790e7566d4..6ee53c57b0 100644 --- a/sysdeps/arm/fpu/setjmp.S +++ b/sysdeps/arm/fpu/setjmp.S @@ -30,6 +30,9 @@ ENTRY (__sigsetjmp) sfmea f4, 4, [r0]! stmia r0, {v1-v6, sl, fp, sp, lr} + /* Restore pointer to jmp_buf */ + sub r0, r0, #48 + /* Make a tail call to __sigjmp_save; it takes the same args. */ B PLTJMP(C_SYMBOL_NAME(__sigjmp_save)) END (__setjmp) diff --git a/sysdeps/powerpc/backtrace.c b/sysdeps/powerpc/backtrace.c new file mode 100644 index 0000000000..7d71fbd9a8 --- /dev/null +++ b/sysdeps/powerpc/backtrace.c @@ -0,0 +1,63 @@ +/* Return backtrace of current program state. + Copyright (C) 1998 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 <execinfo.h> + +/* This is the stack layout we see with every stack frame. + Note that every routine is required by the ABI to lay out the stack + like this. + + +----------------+ +-----------------+ + %r1 -> | %r1 last frame--------> | %r1 last frame--->... --> NULL + | | | | + | (unused) | | return address | + +----------------+ +-----------------+ +*/ +struct layout +{ + struct layout *next; + void *return_address; +}; + +int +__backtrace (void **array, int size) +{ + struct layout *current; + int count; + + /* Force gcc to spill LR. */ + asm volatile ("" : "=l"(current)); + + /* Get the address on top-of-stack. */ + asm volatile ("lwz %0,0(1)" : "=r"(current)); + + for ( count = 0; + current != NULL && count < size; + current = current->next, count++) + array[count] = current->return_address; + + /* It's possible the second-last stack frame can't return + (that is, it's __libc_start_main), in which case + the CRT startup code will have set its LR to 'NULL'. */ + if (count > 0 && array[count-1] == NULL) + count--; + + return count; +} +weak_alias (__backtrace, backtrace) |