diff options
Diffstat (limited to 'gdb/nlm/ppc.c')
-rw-r--r-- | gdb/nlm/ppc.c | 163 |
1 files changed, 5 insertions, 158 deletions
diff --git a/gdb/nlm/ppc.c b/gdb/nlm/ppc.c index d869e01..80185c1 100644 --- a/gdb/nlm/ppc.c +++ b/gdb/nlm/ppc.c @@ -1,12 +1,14 @@ -#include <nwdfs.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> +#include <errno.h> + +#include <nwtypes.h> +#include <nwdfs.h> #include <nwconio.h> #include <nwadv.h> #include <nwdbgapi.h> -#include <errno.h> #include <nwthread.h> #include "ppc.h" @@ -253,162 +255,7 @@ do_status (ptr, frame) *ptr = '\000'; } -#if 0 -/* - * strtol : convert a string to long. - * - * Andy Wilson, 2-Oct-89. - */ - -/* FIXME: It'd be nice to configure around these, but the include files are too - painful. These macros should at least be more portable than hardwired hex - constants. */ - -#define ULONG_MAX ((unsigned long)(~0L)) /* 0xFFFFFFFF */ -#define LONG_MAX ((long)(ULONG_MAX >> 1)) /* 0x7FFFFFFF */ -#define LONG_MIN ((long)(~LONG_MAX)) /* 0x80000000 */ - -extern int errno; - -unsigned long strtoul(const char *s, char **ptr, int base); - -long -strtol(s, ptr, base) - const char *s; char **ptr; int base; -{ - int minus=0; - unsigned long tmp; - const char *start=s; - char *eptr; - - if (s==NULL) - { - errno = ERANGE; - if (!ptr) - *ptr = (char *)start; - return 0L; - } - while (isspace(*s)) - s++; - if (*s == '-') { - s++; - minus = 1; - } - else if (*s == '+') - s++; - - /* - * let strtoul do the hard work. - */ - tmp = strtoul(s, &eptr, base); - if (ptr != NULL) - *ptr = (char *)((eptr==s) ? (char *)start : eptr); - if (tmp > (minus ? - (unsigned long) LONG_MIN : (unsigned long) LONG_MAX)) - { - errno = ERANGE; - return (minus ? LONG_MIN : LONG_MAX); - } - return (minus ? (long) -tmp : (long) tmp); -} - -/* - * strtol : convert a string to long. - * - * Andy Wilson, 2-Oct-89. - */ - -#ifndef ULONG_MAX -#define ULONG_MAX ((unsigned long)(~0L)) /* 0xFFFFFFFF */ -#endif - -extern int errno; - -unsigned long -strtoul(s, ptr, base) - const char *s; char **ptr; int base; -{ - unsigned long total = 0; - unsigned digit; - const char *start=s; - int did_conversion=0; - int overflow = 0; - int negate = 0; - unsigned long maxdiv, maxrem; - - if (s==NULL) - { - errno = ERANGE; - if (!ptr) - *ptr = (char *)start; - return 0L; - } - - while (isspace(*s)) - s++; - if (*s == '+') - s++; - else if (*s == '-') - s++, negate = 1; - if (base==0 || base==16) /* the 'base==16' is for handling 0x */ - { - int tmp; - - /* - * try to infer base from the string - */ - if (*s != '0') - tmp = 10; /* doesn't start with 0 - assume decimal */ - else if (s[1] == 'X' || s[1] == 'x') - tmp = 16, s += 2; /* starts with 0x or 0X - hence hex */ - else - tmp = 8; /* starts with 0 - hence octal */ - if (base==0) - base = (int)tmp; - } - - maxdiv = ULONG_MAX / base; - maxrem = ULONG_MAX % base; - - while ((digit = *s) != '\0') - { - if (digit >= '0' && digit < ('0'+base)) - digit -= '0'; - else - if (base > 10) - { - if (digit >= 'a' && digit < ('a'+(base-10))) - digit = digit - 'a' + 10; - else if (digit >= 'A' && digit < ('A'+(base-10))) - digit = digit - 'A' + 10; - else - break; - } - else - break; - did_conversion = 1; - if (total > maxdiv - || (total == maxdiv && digit > maxrem)) - overflow = 1; - total = (total * base) + digit; - s++; - } - if (overflow) - { - errno = ERANGE; - if (ptr != NULL) - *ptr = (char *)s; - return (ULONG_MAX); - } - if (ptr != NULL) - *ptr = (char *) ((did_conversion) ? (char *)s : (char *)start); - return negate ? -total : total; -} -#endif - -void _exit (int foo) __attribute__ ((noreturn)); - void -exit (int foo) +StopBell() { - _exit (foo); } |