mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-17 06:00:08 +00: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:
parent
061d137bd7
commit
cd33623e19
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>
|
||||
|
||||
* stdlib/msort.c: Include <alloca.h> for prototype.
|
||||
|
@ -50,7 +50,7 @@ ifeq ($(build-shared),yes)
|
||||
install-bin += catchsegv
|
||||
endif
|
||||
endif
|
||||
generated = catchsegv
|
||||
generated = catchsegv xtrace
|
||||
|
||||
include ../Rules
|
||||
|
||||
|
@ -41,6 +41,7 @@ categories = ctype messages monetary numeric time paper name \
|
||||
address telephone measurement identification collate
|
||||
aux = $(categories:%=lc-%) $(categories:%=C-%) SYS_libc C_name
|
||||
# XXX For testing this is now others-static instead of others.
|
||||
others = localedef locale
|
||||
others-static = localedef locale
|
||||
install-bin = localedef locale
|
||||
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 output_max_error; /* Should the maximal errors 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 plus_infty, minus_infty, nan_value;
|
||||
@ -315,7 +316,7 @@ print_max_error (const char *func_name, FLOAT allowed, int xfail)
|
||||
{
|
||||
int ok = 0;
|
||||
|
||||
if (max_error <= allowed)
|
||||
if (max_error == 0.0 || (max_error <= allowed && !ignore_max_ulp))
|
||||
{
|
||||
ok = 1;
|
||||
}
|
||||
@ -477,7 +478,7 @@ check_float_internal (const char *test_name, FLOAT computed, FLOAT expected,
|
||||
&& (computed == 0.0 && expected == 0.0
|
||||
&& signbit(computed) != signbit (expected)))
|
||||
ok = 0;
|
||||
else if (ulp <= max_ulp)
|
||||
else if (ulp == 0.0 || (ulp <= max_ulp && !ignore_max_ulp))
|
||||
ok = 1;
|
||||
else
|
||||
{
|
||||
@ -3875,6 +3876,8 @@ static const struct argp_option options[] =
|
||||
"Don't output maximal errors of functions"},
|
||||
{ "no-points", 'p', NULL, 0,
|
||||
"Don't output results of functions invocations"},
|
||||
{ "ignore-max-ulp", 'i', "yes/no", 0,
|
||||
"Ignore given maximal errors"},
|
||||
{ NULL, 0, NULL, 0, NULL }
|
||||
};
|
||||
|
||||
@ -3900,6 +3903,12 @@ parse_opt (int key, char *arg, struct argp_state *state)
|
||||
case 'f':
|
||||
output_max_error = 0;
|
||||
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':
|
||||
output_points = 0;
|
||||
break;
|
||||
@ -3954,7 +3963,9 @@ main (int argc, char **argv)
|
||||
output_ulps = 0;
|
||||
output_max_error = 1;
|
||||
output_points = 1;
|
||||
|
||||
/* XXX set to 0 for releases. */
|
||||
ignore_max_ulp = 0;
|
||||
|
||||
/* Parse and process arguments. */
|
||||
argp_parse (&argp, argc, argv, 0, &remaining, NULL);
|
||||
|
||||
|
@ -39,6 +39,8 @@ static const struct ltest tests[] =
|
||||
{ "0e-19", 0, '\0', 0 },
|
||||
{ "4\00012", 4.0, '\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 }
|
||||
};
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@ -68,6 +68,9 @@ __fpathconf (fd, name)
|
||||
case UFS_CIGAM:
|
||||
return UFS_LINK_MAX;
|
||||
|
||||
case REISERFS_SUPER_MAGIC:
|
||||
return REISERFS_LINK_MAX;
|
||||
|
||||
default:
|
||||
return LINK_MAX;
|
||||
}
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@ -27,6 +27,8 @@
|
||||
#define ADFS_SUPER_MAGIC 0xadf5
|
||||
#define AFFS_SUPER_MAGIC 0xadff
|
||||
#define CODA_SUPER_MAGIC 0x73757245
|
||||
#define DEVPTS_SUPER_MAGIC 0x1cd1
|
||||
#define EFS_SUPER_MAGIC 0x414A53
|
||||
#define EXT2_SUPER_MAGIC 0xef53
|
||||
#define HPFS_SUPER_MAGIC 0xf995e849
|
||||
#define ISOFS_SUPER_MAGIC 0x9660
|
||||
@ -38,6 +40,8 @@
|
||||
#define NCP_SUPER_MAGIC 0x564c
|
||||
#define NFS_SUPER_MAGIC 0x6969
|
||||
#define PROC_SUPER_MAGIC 0x9fa0
|
||||
#define QNX4_SUPER_MAGIC 0x002f
|
||||
#define REISERFS_SUPER_MAGIC 0x52654973
|
||||
#define SMB_SUPER_MAGIC 0x517b
|
||||
#define XENIX_SUPER_MAGIC 0x012ff7b4
|
||||
#define SYSV4_SUPER_MAGIC 0x012ff7b5
|
||||
@ -51,6 +55,7 @@
|
||||
#define MINIX_LINK_MAX 250
|
||||
#define MINIX2_LINK_MAX 65530
|
||||
#define XENIX_LINK_MAX 126 /* ?? */
|
||||
#define REISERFS_LINK_MAX 64535
|
||||
#define SYSV_LINK_MAX 126 /* 127? 251? */
|
||||
#define COH_LINK_MAX 10000
|
||||
#define UFS_LINK_MAX EXT2_LINK_MAX
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* 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.
|
||||
|
||||
The GNU C Library is free software; you can redistribute it and/or
|
||||
@ -68,6 +68,9 @@ __pathconf (path, name)
|
||||
case UFS_CIGAM:
|
||||
return UFS_LINK_MAX;
|
||||
|
||||
case REISERFS_SUPER_MAGIC:
|
||||
return REISERFS_LINK_MAX;
|
||||
|
||||
default:
|
||||
return LINK_MAX;
|
||||
}
|
||||
|
@ -20,7 +20,7 @@
|
||||
#include <signal.h>
|
||||
|
||||
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 */
|
Loading…
Reference in New Issue
Block a user