mirror of
https://sourceware.org/git/glibc.git
synced 2025-07-29 11:41:21 +03:00
Update.
1999-10-29 Andreas Jaeger <aj@suse.de> * math/gen-libm-test.pl: New file to generate a table of libm-test-ulps values. 1999-10-29 Ulrich Drepper <drepper@cygnus.com> * sysdeps/unix/sysv/linux/sparc/sys/ptrace.h: New file. * sysdeps/unix/sysv/linux/sparc/sparc64/profil-counter.h: Expect struct sigcontext* object as second parameter for profil_counter. Patches by Jakub Jelinek <jakub@redhat.com>. 1999-10-29 Andreas Jaeger <aj@suse.de> * sysdeps/unix/sysv/linux/fpathconf.c (__fpathconf): Handle reiserfs. * sysdeps/unix/sysv/linux/pathconf.c: Likewise. * sysdeps/unix/sysv/linux/linux_fsinfo.h: Add values for devpts, efs, qnx4 and reiser file systems. 1999-10-29 Andreas Jaeger <aj@suse.de> * locale/Makefile (others): Set to localedef and locale for make clean. * debug/Makefile (generated): Add xtrace for make clean to work. 1999-10-29 Andreas Jaeger <aj@suse.de> * stdlib/tst-strtod.c: Add two testcases for hexadecimal input. 1999-10-25 Andreas Jaeger <aj@suse.de> * math/libm-test.inc: Added code to ignore the given max ulps. (print_max_error): Check for ignore_max_ulp. (check_float_internal): Likewise. (parse_opt): Parse --ignore-max-ulp. (main): Initialize ignore_max_ulp.
This commit is contained in:
39
ChangeLog
39
ChangeLog
@ -1,3 +1,42 @@
|
|||||||
|
1999-10-29 Andreas Jaeger <aj@suse.de>
|
||||||
|
|
||||||
|
* math/gen-libm-test.pl: New file to generate a table of
|
||||||
|
libm-test-ulps values.
|
||||||
|
|
||||||
|
1999-10-29 Ulrich Drepper <drepper@cygnus.com>
|
||||||
|
|
||||||
|
* sysdeps/unix/sysv/linux/sparc/sys/ptrace.h: New file.
|
||||||
|
* sysdeps/unix/sysv/linux/sparc/sparc64/profil-counter.h: Expect
|
||||||
|
struct sigcontext* object as second parameter for profil_counter.
|
||||||
|
Patches by Jakub Jelinek <jakub@redhat.com>.
|
||||||
|
|
||||||
|
1999-10-29 Andreas Jaeger <aj@suse.de>
|
||||||
|
|
||||||
|
* sysdeps/unix/sysv/linux/fpathconf.c (__fpathconf): Handle reiserfs.
|
||||||
|
* sysdeps/unix/sysv/linux/pathconf.c: Likewise.
|
||||||
|
|
||||||
|
* sysdeps/unix/sysv/linux/linux_fsinfo.h: Add values for devpts,
|
||||||
|
efs, qnx4 and reiser file systems.
|
||||||
|
|
||||||
|
1999-10-29 Andreas Jaeger <aj@suse.de>
|
||||||
|
|
||||||
|
* locale/Makefile (others): Set to localedef and locale for make
|
||||||
|
clean.
|
||||||
|
|
||||||
|
* debug/Makefile (generated): Add xtrace for make clean to work.
|
||||||
|
|
||||||
|
1999-10-29 Andreas Jaeger <aj@suse.de>
|
||||||
|
|
||||||
|
* stdlib/tst-strtod.c: Add two testcases for hexadecimal input.
|
||||||
|
|
||||||
|
1999-10-25 Andreas Jaeger <aj@suse.de>
|
||||||
|
|
||||||
|
* math/libm-test.inc: Added code to ignore the given max ulps.
|
||||||
|
(print_max_error): Check for ignore_max_ulp.
|
||||||
|
(check_float_internal): Likewise.
|
||||||
|
(parse_opt): Parse --ignore-max-ulp.
|
||||||
|
(main): Initialize ignore_max_ulp.
|
||||||
|
|
||||||
1999-10-26 Andreas Jaeger <aj@suse.de>
|
1999-10-26 Andreas Jaeger <aj@suse.de>
|
||||||
|
|
||||||
* stdlib/msort.c: Include <alloca.h> for prototype.
|
* stdlib/msort.c: Include <alloca.h> for prototype.
|
||||||
|
@ -50,7 +50,7 @@ ifeq ($(build-shared),yes)
|
|||||||
install-bin += catchsegv
|
install-bin += catchsegv
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
generated = catchsegv
|
generated = catchsegv xtrace
|
||||||
|
|
||||||
include ../Rules
|
include ../Rules
|
||||||
|
|
||||||
|
@ -41,6 +41,7 @@ categories = ctype messages monetary numeric time paper name \
|
|||||||
address telephone measurement identification collate
|
address telephone measurement identification collate
|
||||||
aux = $(categories:%=lc-%) $(categories:%=C-%) SYS_libc C_name
|
aux = $(categories:%=lc-%) $(categories:%=C-%) SYS_libc C_name
|
||||||
# XXX For testing this is now others-static instead of others.
|
# XXX For testing this is now others-static instead of others.
|
||||||
|
others = localedef locale
|
||||||
others-static = localedef locale
|
others-static = localedef locale
|
||||||
install-bin = localedef locale
|
install-bin = localedef locale
|
||||||
extra-objs = $(localedef-modules:=.o) $(locale-modules:=.o) \
|
extra-objs = $(localedef-modules:=.o) $(locale-modules:=.o) \
|
||||||
|
207
math/libm-err-tab.pl
Executable file
207
math/libm-err-tab.pl
Executable file
@ -0,0 +1,207 @@
|
|||||||
|
#!/usr/bin/perl -w
|
||||||
|
|
||||||
|
# Copyright (C) 1999 Free Software Foundation, Inc.
|
||||||
|
# This file is part of the GNU C Library.
|
||||||
|
# Contributed by Andreas Jaeger <aj@suse.de>, 1999.
|
||||||
|
|
||||||
|
# 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.
|
||||||
|
|
||||||
|
# Information about tests are stored in: %results
|
||||||
|
# $results{$test}{"type"} is the result type, e.g. normal or complex.
|
||||||
|
# In the following description $platform, $type and $float are:
|
||||||
|
# - $platform is the used platform
|
||||||
|
# - $type is either "normal", "real" (for the real part of a complex number)
|
||||||
|
# or "imag" (for the imaginary part # of a complex number).
|
||||||
|
# - $float is either of float, ifloat, double, idouble, ldouble, ildouble;
|
||||||
|
# It represents the underlying floating point type (float, double or long
|
||||||
|
# double) and if inline functions (the leading i stands for inline)
|
||||||
|
# are used.
|
||||||
|
# $results{$test}{$platform}{$type}{$float} is defined and has a delta
|
||||||
|
# or 'fail' as value.
|
||||||
|
|
||||||
|
use File::Find;
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
|
||||||
|
use vars qw ($sources @platforms %pplatforms);
|
||||||
|
use vars qw (%results @all_floats %suffices @all_functions);
|
||||||
|
|
||||||
|
|
||||||
|
# all_floats is in output order and contains all recognised float types that
|
||||||
|
# we're going to output
|
||||||
|
@all_floats = ('float', 'double', 'ldouble');
|
||||||
|
%suffices =
|
||||||
|
( 'float' => 'f',
|
||||||
|
'double' => '',
|
||||||
|
'ldouble' => 'l'
|
||||||
|
);
|
||||||
|
|
||||||
|
# Pretty description of platform
|
||||||
|
%pplatforms =
|
||||||
|
( "i386/fpu" => "ix86",
|
||||||
|
"generic" => "Generic",
|
||||||
|
"alpha" => "Alpha"
|
||||||
|
);
|
||||||
|
|
||||||
|
@all_functions =
|
||||||
|
( "acos", "acosh", "asin", "asinh", "atan", "atanh",
|
||||||
|
"atan2", "cabs", "cacos", "cacosh", "carg", "casin", "casinh",
|
||||||
|
"catan", "catanh", "cbrt", "ccos", "ccosh", "ceil", "cexp", "cimag",
|
||||||
|
"clog", "clog10", "conj", "copysign", "cos", "cosh", "cpow", "cproj",
|
||||||
|
"creal", "csin", "csinh", "csqrt", "ctan", "ctanh", "erf", "erfc",
|
||||||
|
"exp", "exp10", "exp2", "expm1", "fabs", "fdim", "floor", "fma",
|
||||||
|
"fmax", "fmin", "fmod", "frexp", "gamma", "hypot",
|
||||||
|
"ilogb", "j0", "j1", "jn", "lgamma", "lrint",
|
||||||
|
"llrint", "log", "log10", "log1p", "log2", "logb", "lround",
|
||||||
|
"llround", "modf", "nearbyint", "nextafter", "nexttoward", "pow",
|
||||||
|
"remainder", "remquo", "rint", "round", "scalb", "scalbn", "scalbln",
|
||||||
|
"sin", "sincos", "sinh", "sqrt", "tan", "tanh", "tgamma",
|
||||||
|
"trunc", "y0", "y1", "yn" );
|
||||||
|
# "fpclassify", "isfinite", "isnormal", "signbit" are not tabulated
|
||||||
|
|
||||||
|
if ($#ARGV == 0) {
|
||||||
|
$sources = $ARGV[0];
|
||||||
|
} else {
|
||||||
|
$sources = '/usr/src/cvs/libc';
|
||||||
|
}
|
||||||
|
|
||||||
|
find (\&find_files, $sources);
|
||||||
|
|
||||||
|
&print_all;
|
||||||
|
|
||||||
|
sub find_files {
|
||||||
|
if ($_ eq 'libm-test-ulps') {
|
||||||
|
# print "Parsing $File::Find::name\n";
|
||||||
|
push @platforms, $File::Find::dir;
|
||||||
|
&parse_ulps ($File::Find::name, $File::Find::dir);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Parse ulps file
|
||||||
|
sub parse_ulps {
|
||||||
|
my ($file, $platform) = @_;
|
||||||
|
my ($test, $type, $float, $eps, $kind);
|
||||||
|
|
||||||
|
# $type has the following values:
|
||||||
|
# "normal": No complex variable
|
||||||
|
# "real": Real part of complex result
|
||||||
|
# "imag": Imaginary part of complex result
|
||||||
|
open ULP, $file or die ("Can't open $file: $!");
|
||||||
|
while (<ULP>) {
|
||||||
|
chop;
|
||||||
|
# ignore comments and empty lines
|
||||||
|
next if /^#/;
|
||||||
|
next if /^\s*$/;
|
||||||
|
if (/^Test/) {
|
||||||
|
$kind = 'test';
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
if (/^Function: /) {
|
||||||
|
if (/\Real part of/) {
|
||||||
|
s/Real part of //;
|
||||||
|
$type = 'real';
|
||||||
|
} elsif (/Imaginary part of/) {
|
||||||
|
s/Imaginary part of //;
|
||||||
|
$type = 'imag';
|
||||||
|
} else {
|
||||||
|
$type = 'normal';
|
||||||
|
}
|
||||||
|
($test) = ($_ =~ /^Function:\s*\"([a-zA-Z0-9_]+)\"/);
|
||||||
|
$kind = 'fct';
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
# Only handle maximal errors of functions
|
||||||
|
next if ($kind eq 'test');
|
||||||
|
if (/^i?(float|double|ldouble):/) {
|
||||||
|
($float, $eps) = split /\s*:\s*/,$_,2;
|
||||||
|
if ($eps eq 'fail') {
|
||||||
|
$results{$test}{$platform}{$type}{$float} = 'fail';
|
||||||
|
} elsif ($eps eq "0") {
|
||||||
|
# ignore
|
||||||
|
next;
|
||||||
|
} elsif (!exists $results{$test}{$platform}{$type}{$float}
|
||||||
|
|| $results{$test}{$platform}{$type}{$float} ne 'fail') {
|
||||||
|
$results{$test}{$platform}{$type}{$float} = $eps;
|
||||||
|
}
|
||||||
|
if ($type =~ /^real|imag$/) {
|
||||||
|
$results{$test}{'type'} = 'complex';
|
||||||
|
} elsif ($type eq 'normal') {
|
||||||
|
$results{$test}{'type'} = 'normal';
|
||||||
|
}
|
||||||
|
next;
|
||||||
|
}
|
||||||
|
print "Skipping unknown entry: `$_'\n";
|
||||||
|
}
|
||||||
|
close ULP;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub get_value {
|
||||||
|
my ($fct, $platform, $type, $float) = @_;
|
||||||
|
|
||||||
|
return (exists $results{$fct}{$platform}{$type}{$float}
|
||||||
|
? $results{$fct}{$platform}{$type}{$float} : "0");
|
||||||
|
}
|
||||||
|
|
||||||
|
sub canonicalize_platform {
|
||||||
|
my ($platform) = @_;
|
||||||
|
|
||||||
|
$platform =~ s|^(.*/sysdeps/)||;
|
||||||
|
|
||||||
|
|
||||||
|
return exists $pplatforms{$platform} ? $pplatforms{$platform} : $platform;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub print_all {
|
||||||
|
my ($fct, $platform, $float, $first, $i);
|
||||||
|
|
||||||
|
print '@multitable {nexttowardf} ';
|
||||||
|
foreach (@platforms) {
|
||||||
|
print ' {1000 + i 1000}';
|
||||||
|
}
|
||||||
|
print "\n";
|
||||||
|
|
||||||
|
print '@item Function ';
|
||||||
|
foreach (@platforms) {
|
||||||
|
print ' @tab ';
|
||||||
|
print &canonicalize_platform ($_);
|
||||||
|
}
|
||||||
|
print "\n";
|
||||||
|
|
||||||
|
|
||||||
|
foreach $fct (@all_functions) {
|
||||||
|
foreach $float (@all_floats) {
|
||||||
|
print "\@item $fct$suffices{$float} ";
|
||||||
|
foreach $platform (@platforms) {
|
||||||
|
print ' @tab ';
|
||||||
|
if (exists $results{$fct}{$platform}{'normal'}{$float}
|
||||||
|
|| exists $results{$fct}{$platform}{'real'}{$float}
|
||||||
|
|| exists $results{$fct}{$platform}{'imag'}{$float}) {
|
||||||
|
if ($results{$fct}{'type'} eq 'complex') {
|
||||||
|
print &get_value ($fct, $platform, 'real', $float),
|
||||||
|
' + i ', &get_value ($fct, $platform, 'imag', $float);
|
||||||
|
} else {
|
||||||
|
print $results{$fct}{$platform}{'normal'}{$float};
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
print '-';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
print "\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
print "\@end multitable\n";
|
||||||
|
}
|
@ -158,6 +158,7 @@ static int noXPasses; /* number of unexpected passes. */
|
|||||||
static int verbose;
|
static int verbose;
|
||||||
static int output_max_error; /* Should the maximal errors printed? */
|
static int output_max_error; /* Should the maximal errors printed? */
|
||||||
static int output_points; /* Should the single function results printed? */
|
static int output_points; /* Should the single function results printed? */
|
||||||
|
static int ignore_max_ulp; /* Should we ignore max_ulp? */
|
||||||
|
|
||||||
static FLOAT minus_zero, plus_zero;
|
static FLOAT minus_zero, plus_zero;
|
||||||
static FLOAT plus_infty, minus_infty, nan_value;
|
static FLOAT plus_infty, minus_infty, nan_value;
|
||||||
@ -315,7 +316,7 @@ print_max_error (const char *func_name, FLOAT allowed, int xfail)
|
|||||||
{
|
{
|
||||||
int ok = 0;
|
int ok = 0;
|
||||||
|
|
||||||
if (max_error <= allowed)
|
if (max_error == 0.0 || (max_error <= allowed && !ignore_max_ulp))
|
||||||
{
|
{
|
||||||
ok = 1;
|
ok = 1;
|
||||||
}
|
}
|
||||||
@ -477,7 +478,7 @@ check_float_internal (const char *test_name, FLOAT computed, FLOAT expected,
|
|||||||
&& (computed == 0.0 && expected == 0.0
|
&& (computed == 0.0 && expected == 0.0
|
||||||
&& signbit(computed) != signbit (expected)))
|
&& signbit(computed) != signbit (expected)))
|
||||||
ok = 0;
|
ok = 0;
|
||||||
else if (ulp <= max_ulp)
|
else if (ulp == 0.0 || (ulp <= max_ulp && !ignore_max_ulp))
|
||||||
ok = 1;
|
ok = 1;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -3875,6 +3876,8 @@ static const struct argp_option options[] =
|
|||||||
"Don't output maximal errors of functions"},
|
"Don't output maximal errors of functions"},
|
||||||
{ "no-points", 'p', NULL, 0,
|
{ "no-points", 'p', NULL, 0,
|
||||||
"Don't output results of functions invocations"},
|
"Don't output results of functions invocations"},
|
||||||
|
{ "ignore-max-ulp", 'i', "yes/no", 0,
|
||||||
|
"Ignore given maximal errors"},
|
||||||
{ NULL, 0, NULL, 0, NULL }
|
{ NULL, 0, NULL, 0, NULL }
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -3900,6 +3903,12 @@ parse_opt (int key, char *arg, struct argp_state *state)
|
|||||||
case 'f':
|
case 'f':
|
||||||
output_max_error = 0;
|
output_max_error = 0;
|
||||||
break;
|
break;
|
||||||
|
case 'i':
|
||||||
|
if (strcmp (arg, "yes") == 0)
|
||||||
|
ignore_max_ulp = 1;
|
||||||
|
else if (strcmp (arg, "no") == 0)
|
||||||
|
ignore_max_ulp = 0;
|
||||||
|
break;
|
||||||
case 'p':
|
case 'p':
|
||||||
output_points = 0;
|
output_points = 0;
|
||||||
break;
|
break;
|
||||||
@ -3954,6 +3963,8 @@ main (int argc, char **argv)
|
|||||||
output_ulps = 0;
|
output_ulps = 0;
|
||||||
output_max_error = 1;
|
output_max_error = 1;
|
||||||
output_points = 1;
|
output_points = 1;
|
||||||
|
/* XXX set to 0 for releases. */
|
||||||
|
ignore_max_ulp = 0;
|
||||||
|
|
||||||
/* Parse and process arguments. */
|
/* Parse and process arguments. */
|
||||||
argp_parse (&argp, argc, argv, 0, &remaining, NULL);
|
argp_parse (&argp, argc, argv, 0, &remaining, NULL);
|
||||||
|
@ -39,6 +39,8 @@ static const struct ltest tests[] =
|
|||||||
{ "0e-19", 0, '\0', 0 },
|
{ "0e-19", 0, '\0', 0 },
|
||||||
{ "4\00012", 4.0, '\0', 0 },
|
{ "4\00012", 4.0, '\0', 0 },
|
||||||
{ "5.9e-76", 5.9e-76, '\0', 0 },
|
{ "5.9e-76", 5.9e-76, '\0', 0 },
|
||||||
|
{ "0x1.4p+3", 10.0, '\0', 0 },
|
||||||
|
{ "0x0A", 10.0, '\0', 0 },
|
||||||
{ NULL, 0, '\0', 0 }
|
{ NULL, 0, '\0', 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Linux specific extensions to fpathconf.
|
/* Linux specific extensions to fpathconf.
|
||||||
Copyright (C) 1991, 1995, 1996, 1998 Free Software Foundation, Inc.
|
Copyright (C) 1991, 1995, 1996, 1998, 1999 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -68,6 +68,9 @@ __fpathconf (fd, name)
|
|||||||
case UFS_CIGAM:
|
case UFS_CIGAM:
|
||||||
return UFS_LINK_MAX;
|
return UFS_LINK_MAX;
|
||||||
|
|
||||||
|
case REISERFS_SUPER_MAGIC:
|
||||||
|
return REISERFS_LINK_MAX;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return LINK_MAX;
|
return LINK_MAX;
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Constants from kernel header for various FSes.
|
/* Constants from kernel header for various FSes.
|
||||||
Copyright (C) 1998 Free Software Foundation, Inc.
|
Copyright (C) 1998, 1999 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -27,6 +27,8 @@
|
|||||||
#define ADFS_SUPER_MAGIC 0xadf5
|
#define ADFS_SUPER_MAGIC 0xadf5
|
||||||
#define AFFS_SUPER_MAGIC 0xadff
|
#define AFFS_SUPER_MAGIC 0xadff
|
||||||
#define CODA_SUPER_MAGIC 0x73757245
|
#define CODA_SUPER_MAGIC 0x73757245
|
||||||
|
#define DEVPTS_SUPER_MAGIC 0x1cd1
|
||||||
|
#define EFS_SUPER_MAGIC 0x414A53
|
||||||
#define EXT2_SUPER_MAGIC 0xef53
|
#define EXT2_SUPER_MAGIC 0xef53
|
||||||
#define HPFS_SUPER_MAGIC 0xf995e849
|
#define HPFS_SUPER_MAGIC 0xf995e849
|
||||||
#define ISOFS_SUPER_MAGIC 0x9660
|
#define ISOFS_SUPER_MAGIC 0x9660
|
||||||
@ -38,6 +40,8 @@
|
|||||||
#define NCP_SUPER_MAGIC 0x564c
|
#define NCP_SUPER_MAGIC 0x564c
|
||||||
#define NFS_SUPER_MAGIC 0x6969
|
#define NFS_SUPER_MAGIC 0x6969
|
||||||
#define PROC_SUPER_MAGIC 0x9fa0
|
#define PROC_SUPER_MAGIC 0x9fa0
|
||||||
|
#define QNX4_SUPER_MAGIC 0x002f
|
||||||
|
#define REISERFS_SUPER_MAGIC 0x52654973
|
||||||
#define SMB_SUPER_MAGIC 0x517b
|
#define SMB_SUPER_MAGIC 0x517b
|
||||||
#define XENIX_SUPER_MAGIC 0x012ff7b4
|
#define XENIX_SUPER_MAGIC 0x012ff7b4
|
||||||
#define SYSV4_SUPER_MAGIC 0x012ff7b5
|
#define SYSV4_SUPER_MAGIC 0x012ff7b5
|
||||||
@ -51,6 +55,7 @@
|
|||||||
#define MINIX_LINK_MAX 250
|
#define MINIX_LINK_MAX 250
|
||||||
#define MINIX2_LINK_MAX 65530
|
#define MINIX2_LINK_MAX 65530
|
||||||
#define XENIX_LINK_MAX 126 /* ?? */
|
#define XENIX_LINK_MAX 126 /* ?? */
|
||||||
|
#define REISERFS_LINK_MAX 64535
|
||||||
#define SYSV_LINK_MAX 126 /* 127? 251? */
|
#define SYSV_LINK_MAX 126 /* 127? 251? */
|
||||||
#define COH_LINK_MAX 10000
|
#define COH_LINK_MAX 10000
|
||||||
#define UFS_LINK_MAX EXT2_LINK_MAX
|
#define UFS_LINK_MAX EXT2_LINK_MAX
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/* Linux specific extensions to pathconf.
|
/* Linux specific extensions to pathconf.
|
||||||
Copyright (C) 1991, 1995, 1996, 1998 Free Software Foundation, Inc.
|
Copyright (C) 1991, 1995, 1996, 1998, 1999 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
|
|
||||||
The GNU C Library is free software; you can redistribute it and/or
|
The GNU C Library is free software; you can redistribute it and/or
|
||||||
@ -68,6 +68,9 @@ __pathconf (path, name)
|
|||||||
case UFS_CIGAM:
|
case UFS_CIGAM:
|
||||||
return UFS_LINK_MAX;
|
return UFS_LINK_MAX;
|
||||||
|
|
||||||
|
case REISERFS_SUPER_MAGIC:
|
||||||
|
return REISERFS_LINK_MAX;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return LINK_MAX;
|
return LINK_MAX;
|
||||||
}
|
}
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
|
|
||||||
void
|
void
|
||||||
profil_counter (int signo, __siginfo_t *si)
|
profil_counter (int signo, struct sigcontext *si)
|
||||||
{
|
{
|
||||||
profil_count ((void *) si->si_regs.tpc);
|
profil_count ((void *) si->sigc_regs.tpc);
|
||||||
}
|
}
|
||||||
|
179
sysdeps/unix/sysv/linux/sparc/sys/ptrace.h
Normal file
179
sysdeps/unix/sysv/linux/sparc/sys/ptrace.h
Normal file
@ -0,0 +1,179 @@
|
|||||||
|
/* `ptrace' debugger support interface. Linux/SPARC version.
|
||||||
|
Copyright (C) 1996, 1997, 1998, 1999 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. */
|
||||||
|
|
||||||
|
#ifndef _SYS_PTRACE_H
|
||||||
|
#define _SYS_PTRACE_H 1
|
||||||
|
|
||||||
|
#include <features.h>
|
||||||
|
|
||||||
|
#include <bits/wordsize.h>
|
||||||
|
|
||||||
|
/* Linux/SPARC kernels up to 2.3.18 do not care much
|
||||||
|
about what namespace polution, so use a kludge now. */
|
||||||
|
#undef PTRACE_GETREGS
|
||||||
|
#undef PTRACE_SETREGS
|
||||||
|
#undef PTRACE_GETFPREGS
|
||||||
|
#undef PTRACE_SETFPREGS
|
||||||
|
#undef PTRACE_READDATA
|
||||||
|
#undef PTRACE_WRITEDATA
|
||||||
|
#undef PTRACE_READTEXT
|
||||||
|
#undef PTRACE_WRITETEXT
|
||||||
|
#undef PTRACE_SUNDETACH
|
||||||
|
|
||||||
|
__BEGIN_DECLS
|
||||||
|
|
||||||
|
/* Type of the REQUEST argument to `ptrace.' */
|
||||||
|
enum __ptrace_request
|
||||||
|
{
|
||||||
|
/* Indicate that the process making this request should be traced.
|
||||||
|
All signals received by this process can be intercepted by its
|
||||||
|
parent, and its parent can use the other `ptrace' requests. */
|
||||||
|
PTRACE_TRACEME = 0,
|
||||||
|
#define PT_TRACE_ME PTRACE_TRACEME
|
||||||
|
|
||||||
|
/* Return the word in the process's text space at address ADDR. */
|
||||||
|
PTRACE_PEEKTEXT = 1,
|
||||||
|
#define PT_READ_I PTRACE_PEEKTEXT
|
||||||
|
|
||||||
|
/* Return the word in the process's data space at address ADDR. */
|
||||||
|
PTRACE_PEEKDATA = 2,
|
||||||
|
#define PT_READ_D PTRACE_PEEKDATA
|
||||||
|
|
||||||
|
/* Return the word in the process's user area at offset ADDR. */
|
||||||
|
PTRACE_PEEKUSER = 3,
|
||||||
|
#define PT_READ_U PTRACE_PEEKUSER
|
||||||
|
|
||||||
|
/* Write the word DATA into the process's text space at address ADDR. */
|
||||||
|
PTRACE_POKETEXT = 4,
|
||||||
|
#define PT_WRITE_I PTRACE_POKETEXT
|
||||||
|
|
||||||
|
/* Write the word DATA into the process's data space at address ADDR. */
|
||||||
|
PTRACE_POKEDATA = 5,
|
||||||
|
#define PT_WRITE_D PTRACE_POKEDATA
|
||||||
|
|
||||||
|
/* Write the word DATA into the process's user area at offset ADDR. */
|
||||||
|
PTRACE_POKEUSER = 6,
|
||||||
|
#define PT_WRITE_U PTRACE_POKEUSER
|
||||||
|
|
||||||
|
/* Continue the process. */
|
||||||
|
PTRACE_CONT = 7,
|
||||||
|
#define PT_CONTINUE PTRACE_CONT
|
||||||
|
|
||||||
|
/* Kill the process. */
|
||||||
|
PTRACE_KILL = 8,
|
||||||
|
#define PT_KILL PTRACE_KILL
|
||||||
|
|
||||||
|
/* Single step the process.
|
||||||
|
This is not supported on all machines. */
|
||||||
|
PTRACE_SINGLESTEP = 9,
|
||||||
|
#define PT_STEP PTRACE_SINGLESTEP
|
||||||
|
|
||||||
|
/* Detach from a process attached to with PTRACE_ATTACH. */
|
||||||
|
PTRACE_DETACH = 11,
|
||||||
|
#define PT_DETACH PTRACE_DETACH
|
||||||
|
|
||||||
|
/* This define is needed for older programs which were
|
||||||
|
trying to work around sparc-linux ptrace nastiness. */
|
||||||
|
#define PTRACE_SUNDETACH PTRACE_DETACH
|
||||||
|
|
||||||
|
#if __WORDSIZE == 32
|
||||||
|
|
||||||
|
/* Get all general purpose registers used by a processes.
|
||||||
|
This is not supported on all machines. */
|
||||||
|
PTRACE_GETREGS = 12,
|
||||||
|
#define PT_GETREGS PTRACE_GETREGS
|
||||||
|
|
||||||
|
/* Set all general purpose registers used by a processes.
|
||||||
|
This is not supported on all machines. */
|
||||||
|
PTRACE_SETREGS = 13,
|
||||||
|
#define PT_SETREGS PTRACE_SETREGS
|
||||||
|
|
||||||
|
/* Get all floating point registers used by a processes.
|
||||||
|
This is not supported on all machines. */
|
||||||
|
PTRACE_GETFPREGS = 14,
|
||||||
|
#define PT_GETFPREGS PTRACE_GETFPREGS
|
||||||
|
|
||||||
|
/* Set all floating point registers used by a processes.
|
||||||
|
This is not supported on all machines. */
|
||||||
|
PTRACE_SETFPREGS = 15,
|
||||||
|
#define PT_SETFPREGS PTRACE_SETFPREGS
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Attach to a process that is already running. */
|
||||||
|
PTRACE_ATTACH = 16,
|
||||||
|
#define PT_ATTACH PTRACE_ATTACH
|
||||||
|
|
||||||
|
/* Read several bytes at a time. */
|
||||||
|
PTRACE_READTEXT = 18,
|
||||||
|
#define PTRACE_READTEXT PTRACE_READTEXT
|
||||||
|
#define PTRACE_READDATA PTRACE_READTEXT
|
||||||
|
|
||||||
|
/* Write several bytes at a time. */
|
||||||
|
PTRACE_WRITETEXT = 19,
|
||||||
|
#define PTRACE_WRITETEXT PTRACE_WRITETEXT
|
||||||
|
#define PTRACE_WRITEDATA PTRACE_WRITETEXT
|
||||||
|
|
||||||
|
#if __WORDSIZE == 64
|
||||||
|
|
||||||
|
/* Get all general purpose registers used by a processes.
|
||||||
|
This is not supported on all machines. */
|
||||||
|
PTRACE_GETREGS = 22,
|
||||||
|
#define PT_GETREGS PTRACE_GETREGS
|
||||||
|
|
||||||
|
/* Set all general purpose registers used by a processes.
|
||||||
|
This is not supported on all machines. */
|
||||||
|
PTRACE_SETREGS = 23,
|
||||||
|
#define PT_SETREGS PTRACE_SETREGS
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Continue and stop at the next (return from) syscall. */
|
||||||
|
PTRACE_SYSCALL = 24
|
||||||
|
#define PTRACE_SYSCALL PTRACE_SYSCALL
|
||||||
|
|
||||||
|
#if __WORDSIZE == 64
|
||||||
|
|
||||||
|
/* Get all floating point registers used by a processes.
|
||||||
|
This is not supported on all machines. */
|
||||||
|
PTRACE_GETFPREGS = 25,
|
||||||
|
#define PT_GETFPREGS PTRACE_GETFPREGS
|
||||||
|
|
||||||
|
/* Set all floating point registers used by a processes.
|
||||||
|
This is not supported on all machines. */
|
||||||
|
PTRACE_SETFPREGS = 26,
|
||||||
|
#define PT_SETFPREGS PTRACE_SETFPREGS
|
||||||
|
|
||||||
|
#endif
|
||||||
|
};
|
||||||
|
|
||||||
|
/* Perform process tracing functions. REQUEST is one of the values
|
||||||
|
above, and determines the action to be taken.
|
||||||
|
For all requests except PTRACE_TRACEME, PID specifies the process to be
|
||||||
|
traced.
|
||||||
|
|
||||||
|
PID and the other arguments described above for the various requests should
|
||||||
|
appear (those that are used for the particular request) as:
|
||||||
|
pid_t PID, void *ADDR, int DATA, void *ADDR2
|
||||||
|
after REQUEST. */
|
||||||
|
extern long int ptrace __P ((enum __ptrace_request __request, ...));
|
||||||
|
|
||||||
|
__END_DECLS
|
||||||
|
|
||||||
|
#endif /* _SYS_PTRACE_H */
|
Reference in New Issue
Block a user