source: rtems/contrib/crossrpms/patches/newlib-1.16.0-rtems4.9-20081203.diff @ 118d237d

4.9
Last change on this file since 118d237d was 9d146ecc, checked in by Ralf Corsepius <ralf.corsepius@…>, on 12/05/08 at 08:27:08

Make c99 io default.
Add prototype for ttyname_t.

  • Property mode set to 100644
File size: 33.7 KB
  • newlib/configure.host

    diff -Naur newlib-1.16.0.orig/newlib/configure.host newlib-1.16.0/newlib/configure.host
    old new  
    528528#  NOTE: When newlib malloc uses a semaphore, RTEMS will switch to that.
    529529  *-*-rtems*)
    530530        default_newlib_io_long_long="yes"
     531        default_newlib_io_c99_formats="yes"
    531532        newlib_cflags="${newlib_cflags} -DMALLOC_PROVIDED -DEXIT_PROVIDED -DMISSING_SYSCALL_NAMES -DSIGNAL_PROVIDED -DREENTRANT_SYSCALLS_PROVIDED -DHAVE_OPENDIR -DNO_EXEC -DHAVE_FCNTL"
    532533        ;;
    533534# VxWorks supplies its own version of malloc, and the newlib one
  • newlib/libc/include/getopt.h

    diff -Naur newlib-1.16.0.orig/newlib/libc/include/getopt.h newlib-1.16.0/newlib/libc/include/getopt.h
    old new  
    8989
    9090/* include files needed by this include file */
    9191
    92 /* macros defined by this include file */
    93 #define NO_ARG          0
    94 #define REQUIRED_ARG    1
    95 #define OPTIONAL_ARG    2
    96 
    97 /* types defined by this include file */
    98 
    99 struct option
    100 {
    101   char *name;                   /* the name of the long option */
    102   int has_arg;                  /* one of the above macros */
    103   int *flag;                    /* determines if getopt_long() returns a
    104                                  * value for a long option; if it is
    105                                  * non-NULL, 0 is returned as a function
    106                                  * value and the value of val is stored in
    107                                  * the area pointed to by flag.  Otherwise,
    108                                  * val is returned. */
    109   int val;                      /* determines the value to return if flag is
    110                                  * NULL. */
    111 };
     92  /* These #defines are to keep the namespace clear... */
     93#define getopt_r                __getopt_r
     94#define getopt_long_r           __getopt_long_r
     95#define getopt_long_only_r      __getopt_long_only_r
    11296
    11397#ifdef __cplusplus
    11498extern "C"
    11599{
    116 #endif
     100
     101#endif                          /* __cplusplus */
     102
     103/* types defined by this include file */
     104  struct option
     105  {
     106    char *name;                 /* the name of the long option */
     107    int has_arg;                /* one of the above macros */
     108    int *flag;                  /* determines if getopt_long() returns a
     109                                 * value for a long option; if it is
     110                                 * non-NULL, 0 is returned as a function
     111                                 * value and the value of val is stored in
     112                                 * the area pointed to by flag.  Otherwise,
     113                                 * val is returned. */
     114    int val;                    /* determines the value to return if flag is
     115                                 * NULL. */
     116
     117  };
     118
     119  /* The getopt_data structure is for reentrancy. Its members are similar to
     120     the externally-defined variables.  */
     121  typedef struct getopt_data
     122  {
     123    char *optarg;
     124    int optind, opterr, optopt, optwhere;
     125  } getopt_data;
    117126
    118127  /* externally-defined variables */
    119128  extern char *optarg;
     
    122131  extern int optopt;
    123132
    124133  /* function prototypes */
    125   int _EXFUN (getopt, (int __argc, char *const __argv[], const char *__optstring));
    126   int _EXFUN (getopt_long, (int __argc, char *const __argv[], const char *__shortopts, const struct option *__longopts, int *__longind));
    127   int _EXFUN (getopt_long_only, (int __argc, char *const __argv[], const char *__shortopts, const struct option *__longopts, int *__longind));
     134  int _EXFUN (getopt,
     135              (int __argc, char *const __argv[], const char *__optstring));
     136
     137  int _EXFUN (getopt_long,
     138              (int __argc, char *const __argv[], const char *__shortopts,
     139               const struct option * __longopts, int *__longind));
     140
     141  int _EXFUN (getopt_long_only,
     142              (int __argc, char *const __argv[], const char *__shortopts,
     143               const struct option * __longopts, int *__longind));
     144
     145  int _EXFUN (__getopt_r,
     146              (int __argc, char *const __argv[], const char *__optstring,
     147               struct getopt_data * __data));
     148
     149  int _EXFUN (__getopt_long_r,
     150              (int __argc, char *const __argv[], const char *__shortopts,
     151               const struct option * __longopts, int *__longind,
     152               struct getopt_data * __data));
     153
     154  int _EXFUN (__getopt_long_only_r,
     155              (int __argc, char *const __argv[], const char *__shortopts,
     156               const struct option * __longopts, int *__longind,
     157               struct getopt_data * __data));
    128158
    129159#ifdef __cplusplus
    130160};
    131161
    132 #endif
     162#endif /* __cplusplus  */
    133163
    134164#endif /* GETOPT_H */
    135165
  • newlib/libc/include/inttypes.h

    diff -Naur newlib-1.16.0.orig/newlib/libc/include/inttypes.h newlib-1.16.0/newlib/libc/include/inttypes.h
    old new  
    242242#define SCNxMAX         __SCNMAX(x)
    243243
    244244/* ptr types */
    245 #if __have_longlong64
    246 #define __PRIPTR(x) __STRINGIFY(ll##x)
    247 #define __SCNPTR(x) __STRINGIFY(ll##x)
     245#if __ptrint_t_long_defined
     246#define __PRIPTR(x) __STRINGIFY(l##x)
     247#define __SCNPTR(x) __STRINGIFY(l##x)
     248#elif __ptrint_t_int_defined
     249#define __PRIPTR(x) __STRINGIFY(x)
     250#define __SCNPTR(x) __STRINGIFY(x)
    248251#elif __have_long64
    249252#define __PRIPTR(x) __STRINGIFY(l##x)
    250253#define __SCNPTR(x) __STRINGIFY(l##x)
  • newlib/libc/include/machine/ieeefp.h

    diff -Naur newlib-1.16.0.orig/newlib/libc/include/machine/ieeefp.h newlib-1.16.0/newlib/libc/include/machine/ieeefp.h
    old new  
    6262#  define __IEEE_BIG_ENDIAN
    6363# endif
    6464#else
    65 # define __IEEE_BIG_ENDIAN
    6665# ifdef __ARMEL__
     66#  define __IEEE_LITTLE_ENDIAN
     67# else
     68#  define __IEEE_BIG_ENDIAN
     69# endif
     70# ifdef __ARMWEL__
    6771#  define __IEEE_BYTES_LITTLE_ENDIAN
    6872# endif
    6973#endif
  • newlib/libc/include/machine/setjmp.h

    diff -Naur newlib-1.16.0.orig/newlib/libc/include/machine/setjmp.h newlib-1.16.0/newlib/libc/include/machine/setjmp.h
    old new  
    2727
    2828/* necv70 was 9 as well. */
    2929
    30 #ifdef __mc68000__
     30#if defined(__m68k__) || defined(__mc68000__)
    3131/*
    3232 * onsstack,sigmask,sp,pc,psl,d2-d7,a2-a6,
    3333 * fp2-fp7      for 68881.
     
    268268# define _CYGWIN_WORKING_SIGSETJMP
    269269#endif
    270270
     271#ifdef _POSIX_THREADS
     272#define __SIGMASK_FUNC pthread_sigmask
     273#else
     274#define __SIGMASK_FUNC sigprocmask
     275#endif
     276
    271277#if defined(__GNUC__)
    272278
    273279#define sigsetjmp(env, savemask) \
     
    275281            ({ \
    276282              sigjmp_buf *_sjbuf = &(env); \
    277283              ((*_sjbuf)[_SAVEMASK] = savemask,\
    278               sigprocmask (SIG_SETMASK, 0, (sigset_t *)((*_sjbuf) + _SIGMASK)),\
     284              __SIGMASK_FUNC (SIG_SETMASK, 0, (sigset_t *)((*_sjbuf) + _SIGMASK)),\
    279285              setjmp (*_sjbuf)); \
    280286            })
    281287
     
    284290            ({ \
    285291              sigjmp_buf *_sjbuf = &(env); \
    286292              ((((*_sjbuf)[_SAVEMASK]) ? \
    287                sigprocmask (SIG_SETMASK, (sigset_t *)((*_sjbuf) + _SIGMASK), 0)\
     293               __SIGMASK_FUNC (SIG_SETMASK, (sigset_t *)((*_sjbuf) + _SIGMASK), 0)\
    288294               : 0), \
    289295               longjmp (*_sjbuf, val)); \
    290296            })
     
    292298#else /* !__GNUC__ */
    293299
    294300#define sigsetjmp(env, savemask) ((env)[_SAVEMASK] = savemask,\
    295                sigprocmask (SIG_SETMASK, 0, (sigset_t *) ((env) + _SIGMASK)),\
     301               __SIGMASK_FUNC (SIG_SETMASK, 0, (sigset_t *) ((env) + _SIGMASK)),\
    296302               setjmp (env))
    297303
    298304#define siglongjmp(env, val) ((((env)[_SAVEMASK])?\
    299                sigprocmask (SIG_SETMASK, (sigset_t *) ((env) + _SIGMASK), 0):0),\
     305               __SIGMASK_FUNC (SIG_SETMASK, (sigset_t *) ((env) + _SIGMASK), 0):0),\
    300306               longjmp (env, val))
    301307
    302308#endif
    303309
     310/* POSIX _setjmp/_longjmp macros, maintained for XSI compatibility.  These
     311   are equivalent to sigsetjmp/siglongjmp when not saving the signal mask.
     312   New applications should use sigsetjmp/siglongjmp instead. */
     313#define _setjmp(env)            sigsetjmp ((env), 0)
     314#define _longjmp(env, val)      siglongjmp ((env), (val))
     315
    304316#ifdef __cplusplus
    305317}
    306318#endif
  • newlib/libc/include/pthread.h

    diff -Naur newlib-1.16.0.orig/newlib/libc/include/pthread.h newlib-1.16.0/newlib/libc/include/pthread.h
    old new  
    283283int     _EXFUN(pthread_getcpuclockid,
    284284        (pthread_t __pthread_id, clockid_t *__clock_id));
    285285 
    286 /* CPU-time Clock Thread Creation Attribute, P1003.4b/D8, p. 59 */
    287 
    288 int     _EXFUN(pthread_attr_setcputime,
    289         (pthread_attr_t *__attr, int __clock_allowed));
    290 
    291 int     _EXFUN(pthread_attr_getcputime,
    292         (pthread_attr_t *__attr, int *__clock_allowed));
    293 
    294286#endif /* defined(_POSIX_THREAD_CPUTIME) */
    295287
    296288
  • newlib/libc/include/stdint.h

    diff -Naur newlib-1.16.0.orig/newlib/libc/include/stdint.h newlib-1.16.0/newlib/libc/include/stdint.h
    old new  
    348348#endif
    349349
    350350/* This must match size_t in stddef.h, currently long unsigned int */
    351 #define SIZE_MIN (-__STDINT_EXP(LONG_MAX) - 1L)
    352 #define SIZE_MAX __STDINT_EXP(LONG_MAX)
     351#define SIZE_MAX (__STDINT_EXP(LONG_MAX) * 2UL + 1)
    353352
    354353/* This must match sig_atomic_t in <signal.h> (currently int) */
    355354#define SIG_ATOMIC_MIN (-__STDINT_EXP(INT_MAX) - 1)
     
    393392#define UINTMAX_C(x)    x##UL
    394393#endif
    395394
     395#ifdef __rtems__
     396#include <machine/stdint.h>
     397#endif
    396398
    397399#ifdef __cplusplus
    398400}
  • newlib/libc/include/sys/features.h

    diff -Naur newlib-1.16.0.orig/newlib/libc/include/sys/features.h newlib-1.16.0/newlib/libc/include/sys/features.h
    old new  
    3838#define _POSIX_MEMLOCK_RANGE            1
    3939#define _POSIX_MEMORY_PROTECTION        1
    4040#define _POSIX_MESSAGE_PASSING          1
     41#define _POSIX_MONOTONIC_CLOCK          200112L
    4142#define _POSIX_PRIORITIZED_IO           1
    4243#define _POSIX_PRIORITY_SCHEDULING      1
    4344#define _POSIX_REALTIME_SIGNALS         1
    4445#define _POSIX_SEMAPHORES               1
    45 #define _POSIX_SHARED_MEMORY_OBJECTS    1
     46/* #define _POSIX_SHARED_MEMORY_OBJECTS 1 */
    4647#define _POSIX_SYNCHRONIZED_IO          1
    4748#define _POSIX_TIMERS                   1
    4849#define _POSIX_BARRIERS                 200112L
  • newlib/libc/include/sys/_types.h

    diff -Naur newlib-1.16.0.orig/newlib/libc/include/sys/_types.h newlib-1.16.0/newlib/libc/include/sys/_types.h
    old new  
    8484typedef void *_iconv_t;
    8585#endif
    8686
     87typedef long * __intptr_t;
     88typedef unsigned long* __uintptr_t;
     89
    8790#endif  /* _SYS__TYPES_H */
  • newlib/libc/include/sys/unistd.h

    diff -Naur newlib-1.16.0.orig/newlib/libc/include/sys/unistd.h newlib-1.16.0/newlib/libc/include/sys/unistd.h
    old new  
    157157pid_t   _EXFUN(tcgetpgrp, (int __fildes ));
    158158int     _EXFUN(tcsetpgrp, (int __fildes, pid_t __pgrp_id ));
    159159char    _EXFUN(*ttyname, (int __fildes ));
    160 #if defined(__CYGWIN__)
     160#if defined(__CYGWIN__) || defined(__rtems__)
    161161int     _EXFUN(ttyname_r, (int, char *, size_t));
    162162#endif
    163163int     _EXFUN(unlink, (const char *__path ));
     
    219219char *  _EXFUN(mktemp, (char *));
    220220#endif
    221221
    222 #if defined(__CYGWIN__) || defined(__SPU__)
     222#if defined(__CYGWIN__) || defined(__SPU__) || defined(__rtems__)
    223223void    _EXFUN(sync, (void));
    224 #elif defined(__rtems__)
    225 int     _EXFUN(sync, (void));
    226224#endif
    227225
    228 int     _EXFUN(readlink, (const char *__path, char *__buf, int __buflen));
     226ssize_t _EXFUN(readlink, (const char *__path, char *__buf, size_t __buflen));
    229227int     _EXFUN(symlink, (const char *__name1, const char *__name2));
    230228
    231229#define F_OK    0
  • newlib/libc/include/_syslist.h

    diff -Naur newlib-1.16.0.orig/newlib/libc/include/_syslist.h newlib-1.16.0/newlib/libc/include/_syslist.h
    old new  
    1111#define _fstat fstat
    1212#define _getpid getpid
    1313#define _gettimeofday gettimeofday
     14#define _isatty isatty
    1415#define _kill kill
    1516#define _link link
    1617#define _lseek lseek
  • newlib/libc/include/time.h

    diff -Naur newlib-1.16.0.orig/newlib/libc/include/time.h newlib-1.16.0/newlib/libc/include/time.h
    old new  
    226226
    227227#endif
    228228
     229#if defined(_POSIX_MONOTONIC_CLOCK)
     230
     231/*  The identifier for the system-wide monotonic clock, which is defined
     232    as a clock whose value cannot be set via clock_settime() and which
     233    cannot have backward clock jumps. */
     234
     235#define CLOCK_MONOTONIC (clockid_t)4
     236
     237#endif
     238
    229239#if defined(_POSIX_CPUTIME)
    230240
    231241/* Accessing a Process CPU-time CLock, P1003.4b/D8, p. 55 */
  • newlib/libc/machine/arm/machine/endian.h

    diff -Naur newlib-1.16.0.orig/newlib/libc/machine/arm/machine/endian.h newlib-1.16.0/newlib/libc/machine/arm/machine/endian.h
    old new  
    1 /* ARM configuration file */
    2 
    3 #ifndef _MACHINE_ENDIAN_H
    4 # define _MACHINE_ENDIAN_H
    5 
    6 #ifdef __ARMEB__
    7 #define BYTE_ORDER BIG_ENDIAN
    8 #else
    9 #define BYTE_ORDER LITTLE_ENDIAN
    10 #endif
    11 
    12 #endif
  • newlib/libc/stdlib/getopt.c

    diff -Naur newlib-1.16.0.orig/newlib/libc/stdlib/getopt.c newlib-1.16.0/newlib/libc/stdlib/getopt.c
    old new  
    9090#include <getopt.h>
    9191
    9292/* macros */
     93#define NO_ARG                  0
     94#define REQUIRED_ARG            1
     95#define OPTIONAL_ARG            2
    9396
    9497/* types */
    9598typedef enum GETOPT_ORDERING_T
     
    100103} GETOPT_ORDERING_T;
    101104
    102105/* globally-defined variables */
    103 char *optarg = NULL;
     106char *optarg = 0;
    104107int optind = 0;
    105108int opterr = 1;
    106109int optopt = '?';
    107110
     111/* static variables */
     112static int optwhere = 0;
     113
    108114/* functions */
    109115
    110116/* reverse_argv_elements:  reverses num elements starting at argv */
    111117static void
    112 reverse_argv_elements (char ** argv, int num)
     118reverse_argv_elements (char **argv, int num)
    113119{
    114120  int i;
    115121  char *tmp;
     
    126132static void
    127133permute (char *const argv[], int len1, int len2)
    128134{
    129   reverse_argv_elements ((char **)argv, len1);
    130   reverse_argv_elements ((char **)argv, len1 + len2);
    131   reverse_argv_elements ((char **)argv, len2);
     135  reverse_argv_elements ((char **) argv, len1);
     136  reverse_argv_elements ((char **) argv, len1 + len2);
     137  reverse_argv_elements ((char **) argv, len2);
    132138}
    133139
    134140/* is_option: is this argv-element an option or the end of the option list? */
    135141static int
    136142is_option (char *argv_element, int only)
    137143{
    138   return ((argv_element == NULL)
    139           || (argv_element[0] == '-') || (only && argv_element[0] == '+'));
     144  return ((argv_element == 0)
     145          || (argv_element[0] == '-') || (only && argv_element[0] == '+'));
     146}
     147
     148/* read_globals: read the values from the globals into a getopt_data
     149   structure */
     150static void
     151read_globals (struct getopt_data *data)
     152{
     153  data->optarg = optarg;
     154  data->optind = optind;
     155  data->opterr = opterr;
     156  data->optopt = optopt;
     157  data->optwhere = optwhere;
     158}
     159
     160/* write_globals: write the values into the globals from a getopt_data
     161   structure */
     162static void
     163write_globals (struct getopt_data *data)
     164{
     165  optarg = data->optarg;
     166  optind = data->optind;
     167  opterr = data->opterr;
     168  optopt = data->optopt;
     169  optwhere = data->optwhere;
    140170}
    141171
    142172/* getopt_internal:  the function that does all the dirty work */
    143173static int
    144174getopt_internal (int argc, char *const argv[], const char *shortopts,
    145                  const struct option *longopts, int *longind, int only)
     175                 const struct option *longopts, int *longind, int only,
     176                 struct getopt_data *data)
    146177{
    147178  GETOPT_ORDERING_T ordering = PERMUTE;
    148   static size_t optwhere = 0;
    149179  size_t permute_from = 0;
    150180  int num_nonopts = 0;
    151181  int optindex = 0;
    152182  size_t match_chars = 0;
    153   char *possible_arg = NULL;
     183  char *possible_arg = 0;
    154184  int longopt_match = -1;
    155185  int has_arg = -1;
    156   char *cp = NULL;
     186  char *cp = 0;
    157187  int arg_next = 0;
    158188
    159189  /* first, deal with silly parameters and easy stuff */
    160   if (argc == 0 || argv == NULL || (shortopts == NULL && longopts == NULL))
    161     return EOF;
    162   if (optind >= argc || argv[optind] == NULL)
     190  if (argc == 0 || argv == 0 || (shortopts == 0 && longopts == 0)
     191      || data->optind >= argc || argv[data->optind] == 0)
    163192    return EOF;
    164   if (strcmp (argv[optind], "--") == 0)
     193  if (strcmp (argv[data->optind], "--") == 0)
    165194    {
    166       optind++;
     195      data->optind++;
    167196      return EOF;
    168197    }
     198
    169199  /* if this is our first time through */
    170   if (optind == 0)
    171     optind = optwhere = 1;
     200  if (data->optind == 0)
     201    data->optind = data->optwhere = 1;
    172202
    173203  /* define ordering */
    174   if (shortopts != NULL && (*shortopts == '-' || *shortopts == '+'))
     204  if (shortopts != 0 && (*shortopts == '-' || *shortopts == '+'))
    175205    {
    176206      ordering = (*shortopts == '-') ? RETURN_IN_ORDER : REQUIRE_ORDER;
    177207      shortopts++;
    178208    }
    179209  else
    180     ordering = (getenv ("POSIXLY_CORRECT") != NULL) ? REQUIRE_ORDER : PERMUTE;
     210    ordering = (getenv ("POSIXLY_CORRECT") != 0) ? REQUIRE_ORDER : PERMUTE;
    181211
    182212  /*
    183213   * based on ordering, find our next option, if we're at the beginning of
    184214   * one
    185215   */
    186   if (optwhere == 1)
     216  if (data->optwhere == 1)
    187217    {
    188218      switch (ordering)
    189         {
    190         case PERMUTE:
    191           permute_from = optind;
    192           num_nonopts = 0;
    193           while (!is_option (argv[optind], only))
    194             {
    195               optind++;
    196               num_nonopts++;
    197             }
    198           if (argv[optind] == NULL)
    199             {
    200               /* no more options */
    201               optind = permute_from;
    202               return EOF;
    203             }
    204           else if (strcmp (argv[optind], "--") == 0)
    205             {
    206               /* no more options, but have to get `--' out of the way */
    207               permute (argv + permute_from, num_nonopts, 1);
    208               optind = permute_from + 1;
    209               return EOF;
    210             }
    211           break;
    212         case RETURN_IN_ORDER:
    213           if (!is_option (argv[optind], only))
    214             {
    215               optarg = argv[optind++];
    216               return (optopt = 1);
    217             }
    218           break;
    219         case REQUIRE_ORDER:
    220           if (!is_option (argv[optind], only))
    221             return EOF;
    222           break;
    223         }
     219        {
     220        default:                /* shouldn't happen */
     221        case PERMUTE:
     222          permute_from = data->optind;
     223          num_nonopts = 0;
     224          while (!is_option (argv[data->optind], only))
     225            {
     226              data->optind++;
     227              num_nonopts++;
     228            }
     229          if (argv[data->optind] == 0)
     230            {
     231              /* no more options */
     232              data->optind = permute_from;
     233              return EOF;
     234            }
     235          else if (strcmp (argv[data->optind], "--") == 0)
     236            {
     237              /* no more options, but have to get `--' out of the way */
     238              permute (argv + permute_from, num_nonopts, 1);
     239              data->optind = permute_from + 1;
     240              return EOF;
     241            }
     242          break;
     243        case RETURN_IN_ORDER:
     244          if (!is_option (argv[data->optind], only))
     245            {
     246              data->optarg = argv[data->optind++];
     247              return (data->optopt = 1);
     248            }
     249          break;
     250        case REQUIRE_ORDER:
     251          if (!is_option (argv[data->optind], only))
     252            return EOF;
     253          break;
     254        }
    224255    }
    225256  /* we've got an option, so parse it */
    226257
    227258  /* first, is it a long option? */
    228   if (longopts != NULL
    229       && (memcmp (argv[optind], "--", 2) == 0
    230           || (only && argv[optind][0] == '+')) && optwhere == 1)
     259  if (longopts != 0
     260      && (memcmp (argv[data->optind], "--", 2) == 0
     261          || (only && argv[data->optind][0] == '+')) && data->optwhere == 1)
    231262    {
    232263      /* handle long options */
    233       if (memcmp (argv[optind], "--", 2) == 0)
    234         optwhere = 2;
     264      if (memcmp (argv[data->optind], "--", 2) == 0)
     265        data->optwhere = 2;
    235266      longopt_match = -1;
    236       possible_arg = strchr (argv[optind] + optwhere, '=');
    237       if (possible_arg == NULL)
    238         {
    239           /* no =, so next argv might be arg */
    240           match_chars = strlen (argv[optind]);
    241           possible_arg = argv[optind] + match_chars;
    242           match_chars = match_chars - optwhere;
    243         }
     267      possible_arg = strchr (argv[data->optind] + data->optwhere, '=');
     268      if (possible_arg == 0)
     269        {
     270          /* no =, so next argv might be arg */
     271          match_chars = strlen (argv[data->optind]);
     272          possible_arg = argv[data->optind] + match_chars;
     273          match_chars = match_chars - data->optwhere;
     274        }
    244275      else
    245         match_chars = (possible_arg - argv[optind]) - optwhere;
    246       for (optindex = 0; longopts[optindex].name != NULL; optindex++)
    247         {
    248           if (memcmp (argv[optind] + optwhere,
    249                       longopts[optindex].name, match_chars) == 0)
    250             {
    251               /* do we have an exact match? */
    252               if (match_chars == (int) (strlen (longopts[optindex].name)))
    253                 {
    254                   longopt_match = optindex;
    255                   break;
    256                 }
    257               /* do any characters match? */
    258               else
    259                 {
    260                   if (longopt_match < 0)
    261                     longopt_match = optindex;
    262                   else
    263                     {
    264                       /* we have ambiguous options */
    265                       if (opterr)
    266                         fprintf (stderr, "%s: option `%s' is ambiguous "
    267                                  "(could be `--%s' or `--%s')\n",
    268                                  argv[0],
    269                                  argv[optind],
    270                                  longopts[longopt_match].name,
    271                                  longopts[optindex].name);
    272                       return (optopt = '?');
    273                     }
    274                 }
    275             }
    276         }
     276        match_chars = (possible_arg - argv[data->optind]) - data->optwhere;
     277      for (optindex = 0; longopts[optindex].name != 0; ++optindex)
     278        {
     279          if (memcmp
     280              (argv[data->optind] + data->optwhere, longopts[optindex].name,
     281               match_chars) == 0)
     282            {
     283              /* do we have an exact match? */
     284              if (match_chars == (int) (strlen (longopts[optindex].name)))
     285                {
     286                  longopt_match = optindex;
     287                  break;
     288                }
     289              /* do any characters match? */
     290              else
     291                {
     292                  if (longopt_match < 0)
     293                    longopt_match = optindex;
     294                  else
     295                    {
     296                      /* we have ambiguous options */
     297                      if (data->opterr)
     298                        fprintf (stderr, "%s: option `%s' is ambiguous "
     299                                 "(could be `--%s' or `--%s')\n",
     300                                 argv[0],
     301                                 argv[data->optind],
     302                                 longopts[longopt_match].name,
     303                                 longopts[optindex].name);
     304                      return (data->optopt = '?');
     305                    }
     306                }
     307            }
     308        }
    277309      if (longopt_match >= 0)
    278         has_arg = longopts[longopt_match].has_arg;
     310        has_arg = longopts[longopt_match].has_arg;
    279311    }
     312
    280313  /* if we didn't find a long option, is it a short option? */
    281   if (longopt_match < 0 && shortopts != NULL)
     314  if (longopt_match < 0 && shortopts != 0)
    282315    {
    283       cp = strchr (shortopts, argv[optind][optwhere]);
    284       if (cp == NULL)
    285         {
    286           /* couldn't find option in shortopts */
    287           if (opterr)
    288             fprintf (stderr,
    289                      "%s: invalid option -- `-%c'\n",
    290                      argv[0], argv[optind][optwhere]);
    291           optwhere++;
    292           if (argv[optind][optwhere] == '\0')
    293             {
    294               optind++;
    295               optwhere = 1;
    296             }
    297           return (optopt = '?');
    298         }
     316      cp = strchr (shortopts, argv[data->optind][data->optwhere]);
     317      if (cp == 0)
     318        {
     319          /* couldn't find option in shortopts */
     320          if (data->opterr)
     321            fprintf (stderr,
     322                     "%s: invalid option -- `-%c'\n",
     323                     argv[0], argv[data->optind][data->optwhere]);
     324          data->optwhere++;
     325          if (argv[data->optind][data->optwhere] == '\0')
     326            {
     327              data->optind++;
     328              data->optwhere = 1;
     329            }
     330          return (data->optopt = '?');
     331        }
    299332      has_arg = ((cp[1] == ':')
    300                 ? ((cp[2] == ':') ? OPTIONAL_ARG : REQUIRED_ARG) : NO_ARG);
    301       possible_arg = argv[optind] + optwhere + 1;
    302       optopt = *cp;
     333                ? ((cp[2] == ':') ? OPTIONAL_ARG : REQUIRED_ARG) : NO_ARG);
     334      possible_arg = argv[data->optind] + data->optwhere + 1;
     335      data->optopt = *cp;
    303336    }
    304   /* get argument and reset optwhere */
     337
     338  /* get argument and reset data->optwhere */
    305339  arg_next = 0;
    306340  switch (has_arg)
    307341    {
    308342    case OPTIONAL_ARG:
    309343      if (*possible_arg == '=')
    310         possible_arg++;
    311       if (*possible_arg != '\0')
    312         {
    313           optarg = possible_arg;
    314           optwhere = 1;
    315         }
    316       else
    317         optarg = NULL;
     344        possible_arg++;
     345      data->optarg = (*possible_arg != '\0') ? possible_arg : 0;
     346      data->optwhere = 1;
    318347      break;
    319348    case REQUIRED_ARG:
    320349      if (*possible_arg == '=')
    321         possible_arg++;
     350        possible_arg++;
    322351      if (*possible_arg != '\0')
    323         {
    324           optarg = possible_arg;
    325           optwhere = 1;
    326         }
    327       else if (optind + 1 >= argc)
    328         {
    329           if (opterr)
    330             {
    331               fprintf (stderr, "%s: argument required for option `", argv[0]);
    332               if (longopt_match >= 0)
    333                 fprintf (stderr, "--%s'\n", longopts[longopt_match].name);
    334               else
    335                 fprintf (stderr, "-%c'\n", *cp);
    336             }
    337           optind++;
    338           return (optopt = ':');
    339         }
     352        {
     353          data->optarg = possible_arg;
     354          data->optwhere = 1;
     355        }
     356      else if (data->optind + 1 >= argc)
     357        {
     358          if (data->opterr)
     359            {
     360              fprintf (stderr, "%s: argument required for option `", argv[0]);
     361              if (longopt_match >= 0)
     362                fprintf (stderr, "--%s'\n", longopts[longopt_match].name);
     363              else
     364                fprintf (stderr, "-%c'\n", *cp);
     365            }
     366          data->optind++;
     367          return (data->optopt = ':');
     368        }
    340369      else
    341         {
    342           optarg = argv[optind + 1];
    343           arg_next = 1;
    344           optwhere = 1;
    345         }
     370        {
     371          data->optarg = argv[data->optind + 1];
     372          arg_next = 1;
     373          data->optwhere = 1;
     374        }
    346375      break;
     376    default:                    /* shouldn't happen */
    347377    case NO_ARG:
    348378      if (longopt_match < 0)
    349         {
    350           optwhere++;
    351           if (argv[optind][optwhere] == '\0')
    352             optwhere = 1;
    353         }
     379        {
     380          data->optwhere++;
     381          if (argv[data->optind][data->optwhere] == '\0')
     382            data->optwhere = 1;
     383        }
    354384      else
    355         optwhere = 1;
    356       optarg = NULL;
     385        data->optwhere = 1;
     386      data->optarg = 0;
    357387      break;
    358388    }
    359389
    360   /* do we have to permute or otherwise modify optind? */
    361   if (ordering == PERMUTE && optwhere == 1 && num_nonopts != 0)
     390  /* do we have to permute or otherwise modify data->optind? */
     391  if (ordering == PERMUTE && data->optwhere == 1 && num_nonopts != 0)
    362392    {
    363393      permute (argv + permute_from, num_nonopts, 1 + arg_next);
    364       optind = permute_from + 1 + arg_next;
     394      data->optind = permute_from + 1 + arg_next;
    365395    }
    366   else if (optwhere == 1)
    367     optind = optind + 1 + arg_next;
     396  else if (data->optwhere == 1)
     397    data->optind = data->optind + 1 + arg_next;
    368398
    369399  /* finally return */
    370400  if (longopt_match >= 0)
    371401    {
    372       if (longind != NULL)
    373         *longind = longopt_match;
    374       if (longopts[longopt_match].flag != NULL)
    375         {
    376           *(longopts[longopt_match].flag) = longopts[longopt_match].val;
    377           return 0;
    378         }
     402      if (longind != 0)
     403        *longind = longopt_match;
     404      if (longopts[longopt_match].flag != 0)
     405        {
     406          *(longopts[longopt_match].flag) = longopts[longopt_match].val;
     407          return 0;
     408        }
    379409      else
    380         return longopts[longopt_match].val;
     410        return longopts[longopt_match].val;
    381411    }
    382412  else
    383     return optopt;
     413    return data->optopt;
    384414}
    385415
    386416int
    387417getopt (int argc, char *const argv[], const char *optstring)
    388418{
    389   return getopt_internal (argc, argv, optstring, NULL, NULL, 0);
     419  struct getopt_data data;
     420  int r;
     421
     422  read_globals (&data);
     423  r = getopt_internal (argc, argv, optstring, 0, 0, 0, &data);
     424  write_globals (&data);
     425  return r;
    390426}
    391427
    392428int
    393429getopt_long (int argc, char *const argv[], const char *shortopts,
    394              const struct option *longopts, int *longind)
     430             const struct option *longopts, int *longind)
    395431{
    396   return getopt_internal (argc, argv, shortopts, longopts, longind, 0);
     432  struct getopt_data data;
     433  int r;
     434
     435  read_globals (&data);
     436  r = getopt_internal (argc, argv, shortopts, longopts, longind, 0, &data);
     437  write_globals (&data);
     438  return r;
    397439}
    398440
    399441int
    400442getopt_long_only (int argc, char *const argv[], const char *shortopts,
    401                   const struct option *longopts, int *longind)
     443                  const struct option *longopts, int *longind)
     444{
     445  struct getopt_data data;
     446  int r;
     447
     448  read_globals (&data);
     449  r = getopt_internal (argc, argv, shortopts, longopts, longind, 1, &data);
     450  write_globals (&data);
     451  return r;
     452}
     453
     454int
     455__getopt_r (int argc, char *const argv[], const char *optstring,
     456            struct getopt_data *data)
     457{
     458  return getopt_internal (argc, argv, optstring, 0, 0, 0, data);
     459}
     460
     461int
     462__getopt_long_r (int argc, char *const argv[], const char *shortopts,
     463                 const struct option *longopts, int *longind,
     464                 struct getopt_data *data)
     465{
     466  return getopt_internal (argc, argv, shortopts, longopts, longind, 0, data);
     467}
     468
     469int
     470__getopt_long_only_r (int argc, char *const argv[], const char *shortopts,
     471                      const struct option *longopts, int *longind,
     472                      struct getopt_data *data)
    402473{
    403   return getopt_internal (argc, argv, shortopts, longopts, longind, 1);
     474  return getopt_internal (argc, argv, shortopts, longopts, longind, 1, data);
    404475}
    405476
    406477/* end of file GETOPT.C */
  • newlib/libc/sys/rtems/machine/stdint.h

    diff -Naur newlib-1.16.0.orig/newlib/libc/sys/rtems/machine/stdint.h newlib-1.16.0/newlib/libc/sys/rtems/machine/stdint.h
    old new  
     1/*
     2 *
     3 */
     4#ifndef _MACHINE_STDINT_H
     5#define _MACHINE_STDINT_H
     6
     7#ifndef _STDINT_H
     8#error machine/stdint.h is an internal file and must not be directly included
     9#endif
     10
     11#ifndef __rtems__
     12#error machine/stdint.h is an RTEMS specific internal file and must not be used otherwise
     13#endif
     14
     15#if defined(__sparc__) \
     16  || defined(__powerpc__) || defined(__PPC__) \
     17  || defined(__mips__) \
     18  || defined(__sh__) \
     19  || defined(__AVR__) \
     20  || defined(_C4x) || defined(_C3x) \
     21  || defined(__H8300__)
     22/* PTRDIFF_TYPE = int */
     23#define __ptrint_t_int_defined 1
     24#endif
     25
     26#if defined(__i386__) \
     27  || defined(__m68k__) \
     28  || defined(__bfin__) \
     29  || defined(__arm__) \
     30  || defined(__H8300S__) || defined(__H8300H__)
     31/* PTRDIFF_TYPE = long */
     32#define __ptrint_t_long_defined 1
     33#endif
     34
     35#endif
  • newlib/libc/sys/rtems/sys/param.h

    diff -Naur newlib-1.16.0.orig/newlib/libc/sys/rtems/sys/param.h newlib-1.16.0/newlib/libc/sys/rtems/sys/param.h
    old new  
    9393#include <sys/resource.h>
    9494#include <sys/ucred.h>
    9595#include <sys/uio.h>
    96 #include <sys/rtprio.h>
    9796
    9897#ifndef FALSE
    9998#define FALSE   0
  • newlib/Makefile.am

    diff -Naur newlib-1.16.0.orig/newlib/Makefile.am newlib-1.16.0/newlib/Makefile.am
    old new  
    8181        libc.a
    8282endif
    8383
    84 noinst_DATA = stmp-targ-include
     84BUILT_SOURCES = stmp-targ-include
    8585
    8686toollib_DATA = $(CRT0) $(CRT1)
    8787
     
    186186
    187187$(CRT1_DIR)$(CRT1): ; @true
    188188
    189 
    190 all-recursive: stmp-targ-include
    191 
    192189# The targ-include directory just holds the includes files for the
    193190# particular system and machine we have been configured for.  It is
    194191# used while building.
  • newlib/Makefile.in

    diff -Naur newlib-1.16.0.orig/newlib/Makefile.in newlib-1.16.0/newlib/Makefile.in
    old new  
    105105        pdf-recursive ps-recursive uninstall-info-recursive \
    106106        uninstall-recursive
    107107toollibDATA_INSTALL = $(INSTALL_DATA)
    108 DATA = $(noinst_DATA) $(toollib_DATA)
     108DATA = $(toollib_DATA)
    109109ETAGS = etags
    110110CTAGS = ctags
    111111DEJATOOL = $(PACKAGE)
     
    339339@USE_LIBTOOL_FALSE@toollib_LIBRARIES = libm.a \
    340340@USE_LIBTOOL_FALSE@     libc.a
    341341
    342 noinst_DATA = stmp-targ-include
     342BUILT_SOURCES = stmp-targ-include
    343343toollib_DATA = $(CRT0) $(CRT1)
    344344
    345345# The functions ldexp, frexp and modf are traditionally supplied in
     
    398398
    399399# dejagnu support
    400400RUNTESTFLAGS =
    401 all: newlib.h
     401all: $(BUILT_SOURCES) newlib.h
    402402        $(MAKE) $(AM_MAKEFLAGS) all-recursive
    403403
    404404.SUFFIXES:
     
    703703        done
    704704check-am:
    705705        $(MAKE) $(AM_MAKEFLAGS) check-DEJAGNU
    706 check: check-recursive
     706check: $(BUILT_SOURCES)
     707        $(MAKE) $(AM_MAKEFLAGS) check-recursive
    707708all-am: Makefile $(LIBRARIES) $(LTLIBRARIES) $(DATA) newlib.h
    708709installdirs: installdirs-recursive
    709710installdirs-am:
    710711        for dir in "$(DESTDIR)$(toollibdir)" "$(DESTDIR)$(toollibdir)" "$(DESTDIR)$(toollibdir)"; do \
    711712          test -z "$$dir" || $(mkdir_p) "$$dir"; \
    712713        done
    713 install: install-recursive
     714install: $(BUILT_SOURCES)
     715        $(MAKE) $(AM_MAKEFLAGS) install-recursive
    714716install-exec: install-exec-recursive
    715717install-data: install-data-recursive
    716718uninstall: uninstall-recursive
     
    735737maintainer-clean-generic:
    736738        @echo "This command is intended for maintainers to use"
    737739        @echo "it deletes files that may require special tools to rebuild."
     740        -test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES)
    738741clean: clean-recursive
    739742
    740743clean-am: clean-generic clean-libtool clean-toollibLIBRARIES \
     
    853856
    854857$(CRT1_DIR)$(CRT1): ; @true
    855858
    856 all-recursive: stmp-targ-include
    857 
    858859# The targ-include directory just holds the includes files for the
    859860# particular system and machine we have been configured for.  It is
    860861# used while building.
Note: See TracBrowser for help on using the repository browser.