OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-stable/] [gcc-4.5.1/] [libstdc++-v3/] [src/] [compatibility.cc] - Blame information for rev 855

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 424 jeremybenn
// Compatibility symbols for previous versions -*- C++ -*-
2
 
3
// Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010
4
// Free Software Foundation, Inc.
5
//
6
// This file is part of the GNU ISO C++ Library.  This library is free
7
// software; you can redistribute it and/or modify it under the
8
// terms of the GNU General Public License as published by the
9
// Free Software Foundation; either version 3, or (at your option)
10
// any later version.
11
 
12
// This library is distributed in the hope that it will be useful,
13
// but WITHOUT ANY WARRANTY; without even the implied warranty of
14
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
// GNU General Public License for more details.
16
 
17
// Under Section 7 of GPL version 3, you are granted additional
18
// permissions described in the GCC Runtime Library Exception, version
19
// 3.1, as published by the Free Software Foundation.
20
 
21
// You should have received a copy of the GNU General Public License and
22
// a copy of the GCC Runtime Library Exception along with this program;
23
// see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
24
// <http://www.gnu.org/licenses/>.
25
 
26
#include <bits/c++config.h>
27
 
28
#if defined(_GLIBCXX_SYMVER_GNU) && defined(PIC) \
29
    && defined(_GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE)
30
#define istreambuf_iterator istreambuf_iteratorXX
31
#define basic_fstream basic_fstreamXX
32
#define basic_ifstream basic_ifstreamXX
33
#define basic_ofstream basic_ofstreamXX
34
#define _M_copy(a, b, c) _M_copyXX(a, b, c)
35
#define _M_move(a, b, c) _M_moveXX(a, b, c)
36
#define _M_assign(a, b, c) _M_assignXX(a, b, c)
37
#define _M_disjunct(a) _M_disjunctXX(a)
38
#define _M_check_length(a, b, c) _M_check_lengthXX(a, b, c)
39
#define _M_set_length_and_sharable(a) _M_set_length_and_sharableXX(a)
40
#define ignore ignoreXX
41
#define eq eqXX
42
#define _List_node_base _List_node_baseXX
43
#endif
44
 
45
#include <string>
46
#include <istream>
47
#include <fstream>
48
#include <sstream>
49
#include <cmath>
50
#include <ext/numeric_traits.h>
51
 
52
_GLIBCXX_BEGIN_NAMESPACE(std)
53
 
54
  // std::istream ignore explicit specializations.
55
  template<>
56
    basic_istream<char>&
57
    basic_istream<char>::
58
    ignore(streamsize __n)
59
    {
60
      if (__n == 1)
61
        return ignore();
62
 
63
      _M_gcount = 0;
64
      sentry __cerb(*this, true);
65
      if ( __n > 0 && __cerb)
66
        {
67
          ios_base::iostate __err = ios_base::goodbit;
68
          __try
69
            {
70
              const int_type __eof = traits_type::eof();
71
              __streambuf_type* __sb = this->rdbuf();
72
              int_type __c = __sb->sgetc();
73
 
74
              // See comment in istream.tcc.
75
              bool __large_ignore = false;
76
              while (true)
77
                {
78
                  while (_M_gcount < __n
79
                         && !traits_type::eq_int_type(__c, __eof))
80
                    {
81
                      streamsize __size = std::min(streamsize(__sb->egptr()
82
                                                              - __sb->gptr()),
83
                                                  streamsize(__n - _M_gcount));
84
                      if (__size > 1)
85
                        {
86
                          __sb->gbump(__size);
87
                          _M_gcount += __size;
88
                          __c = __sb->sgetc();
89
                        }
90
                      else
91
                        {
92
                          ++_M_gcount;
93
                          __c = __sb->snextc();
94
                        }
95
                    }
96
                  if (__n == __gnu_cxx::__numeric_traits<streamsize>::__max
97
                      && !traits_type::eq_int_type(__c, __eof))
98
                    {
99
                      _M_gcount =
100
                        __gnu_cxx::__numeric_traits<streamsize>::__min;
101
                      __large_ignore = true;
102
                    }
103
                  else
104
                    break;
105
                }
106
 
107
              if (__large_ignore)
108
                _M_gcount = __gnu_cxx::__numeric_traits<streamsize>::__max;
109
 
110
              if (traits_type::eq_int_type(__c, __eof))
111
                __err |= ios_base::eofbit;
112
            }
113
          __catch(__cxxabiv1::__forced_unwind&)
114
            {
115
              this->_M_setstate(ios_base::badbit);
116
              __throw_exception_again;
117
            }
118
          __catch(...)
119
            { this->_M_setstate(ios_base::badbit); }
120
          if (__err)
121
            this->setstate(__err);
122
        }
123
      return *this;
124
    }
125
 
126
#ifdef _GLIBCXX_USE_WCHAR_T
127
  template<>
128
    basic_istream<wchar_t>&
129
    basic_istream<wchar_t>::
130
    ignore(streamsize __n)
131
    {
132
      if (__n == 1)
133
        return ignore();
134
 
135
      _M_gcount = 0;
136
      sentry __cerb(*this, true);
137
      if (__n > 0 && __cerb)
138
        {
139
          ios_base::iostate __err = ios_base::goodbit;
140
          __try
141
            {
142
              const int_type __eof = traits_type::eof();
143
              __streambuf_type* __sb = this->rdbuf();
144
              int_type __c = __sb->sgetc();
145
 
146
              bool __large_ignore = false;
147
              while (true)
148
                {
149
                  while (_M_gcount < __n
150
                         && !traits_type::eq_int_type(__c, __eof))
151
                    {
152
                      streamsize __size = std::min(streamsize(__sb->egptr()
153
                                                              - __sb->gptr()),
154
                                                  streamsize(__n - _M_gcount));
155
                      if (__size > 1)
156
                        {
157
                          __sb->gbump(__size);
158
                          _M_gcount += __size;
159
                          __c = __sb->sgetc();
160
                        }
161
                      else
162
                        {
163
                          ++_M_gcount;
164
                          __c = __sb->snextc();
165
                        }
166
                    }
167
                  if (__n == __gnu_cxx::__numeric_traits<streamsize>::__max
168
                      && !traits_type::eq_int_type(__c, __eof))
169
                    {
170
                      _M_gcount =
171
                        __gnu_cxx::__numeric_traits<streamsize>::__min;
172
                      __large_ignore = true;
173
                    }
174
                  else
175
                    break;
176
                }
177
 
178
              if (__large_ignore)
179
                _M_gcount = __gnu_cxx::__numeric_traits<streamsize>::__max;
180
 
181
              if (traits_type::eq_int_type(__c, __eof))
182
                __err |= ios_base::eofbit;
183
            }
184
          __catch(__cxxabiv1::__forced_unwind&)
185
            {
186
              this->_M_setstate(ios_base::badbit);
187
              __throw_exception_again;
188
            }
189
          __catch(...)
190
            { this->_M_setstate(ios_base::badbit); }
191
          if (__err)
192
            this->setstate(__err);
193
        }
194
      return *this;
195
    }
196
#endif
197
 
198
_GLIBCXX_END_NAMESPACE
199
 
200
 
201
// NB: These symbols renames should go into the shared library only,
202
// and only those shared libraries that support versioning.
203
#if defined(_GLIBCXX_SYMVER_GNU) && defined(PIC) \
204
    && defined(_GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE)
205
 
206
/* gcc-3.4.4
207
_ZNSt19istreambuf_iteratorIcSt11char_traitsIcEEppEv
208
_ZNSt19istreambuf_iteratorIwSt11char_traitsIwEEppEv
209
 */
210
 
211
_GLIBCXX_BEGIN_NAMESPACE(std)
212
 
213
  template
214
    istreambuf_iterator<char>&
215
    istreambuf_iterator<char>::operator++();
216
 
217
#ifdef _GLIBCXX_USE_WCHAR_T
218
  template
219
    istreambuf_iterator<wchar_t>&
220
    istreambuf_iterator<wchar_t>::operator++();
221
#endif
222
 
223
_GLIBCXX_END_NAMESPACE
224
 
225
 
226
/* gcc-4.0.0
227
_ZNSs4_Rep26_M_set_length_and_sharableEj
228
_ZNSs7_M_copyEPcPKcj
229
_ZNSs7_M_moveEPcPKcj
230
_ZNSs9_M_assignEPcjc
231
_ZNKSs11_M_disjunctEPKc
232
_ZNKSs15_M_check_lengthEjjPKc
233
_ZNSbIwSt11char_traitsIwESaIwEE4_Rep26_M_set_length_and_sharableEj
234
_ZNSbIwSt11char_traitsIwESaIwEE7_M_copyEPwPKwj
235
_ZNSbIwSt11char_traitsIwESaIwEE7_M_moveEPwPKwj
236
_ZNSbIwSt11char_traitsIwESaIwEE9_M_assignEPwjw
237
_ZNKSbIwSt11char_traitsIwESaIwEE11_M_disjunctEPKw
238
_ZNKSbIwSt11char_traitsIwESaIwEE15_M_check_lengthEjjPKc
239
 
240
_ZNKSt13basic_fstreamIcSt11char_traitsIcEE7is_openEv
241
_ZNKSt13basic_fstreamIwSt11char_traitsIwEE7is_openEv
242
_ZNKSt14basic_ifstreamIcSt11char_traitsIcEE7is_openEv
243
_ZNKSt14basic_ifstreamIwSt11char_traitsIwEE7is_openEv
244
_ZNKSt14basic_ofstreamIcSt11char_traitsIcEE7is_openEv
245
_ZNKSt14basic_ofstreamIwSt11char_traitsIwEE7is_openEv
246
 
247
_ZNSi6ignoreEi
248
_ZNSi6ignoreEv
249
_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEi
250
_ZNSt13basic_istreamIwSt11char_traitsIwEE6ignoreEv
251
 
252
_ZNSt11char_traitsIcE2eqERKcS2_
253
_ZNSt11char_traitsIwE2eqERKwS2_
254
 */
255
_GLIBCXX_BEGIN_NAMESPACE(std)
256
 
257
  // std::char_traits is explicitly specialized
258
  bool (* __p1)(const char&, const char&) = &char_traits<char>::eq;
259
 
260
  // std::string
261
  template
262
    void
263
    basic_string<char>::_M_copy(char*, const char*, size_t);
264
 
265
  template
266
    void
267
    basic_string<char>::_M_move(char*, const char*, size_t);
268
 
269
  template
270
    void
271
    basic_string<char>::_M_assign(char*, size_t, char);
272
 
273
  template
274
    bool
275
    basic_string<char>::_M_disjunct(const char*) const;
276
 
277
  template
278
    void
279
    basic_string<char>::_M_check_length(size_t, size_t, const char*) const;
280
 
281
  template
282
    void
283
    basic_string<char>::_Rep::_M_set_length_and_sharable(size_t);
284
 
285
 
286
  // std::istream
287
  template
288
    basic_istream<char>&
289
    basic_istream<char>::ignore();
290
 
291
  template
292
    bool
293
    basic_fstream<char>::is_open() const;
294
 
295
  template
296
    bool
297
    basic_ifstream<char>::is_open() const;
298
 
299
  template
300
    bool
301
    basic_ofstream<char>::is_open() const;
302
 
303
#ifdef _GLIBCXX_USE_WCHAR_T
304
  bool (* __p2)(const wchar_t&, const wchar_t&) = &char_traits<wchar_t>::eq;
305
 
306
  // std::wstring
307
  template
308
    void
309
    basic_string<wchar_t>::_M_copy(wchar_t*, const wchar_t*, size_t);
310
 
311
  template
312
    void
313
    basic_string<wchar_t>::_M_move(wchar_t*, const wchar_t*, size_t);
314
 
315
  template
316
    void
317
    basic_string<wchar_t>::_M_assign(wchar_t*, size_t, wchar_t);
318
 
319
  template
320
    bool
321
    basic_string<wchar_t>::_M_disjunct(const wchar_t*) const;
322
 
323
  template
324
    void
325
    basic_string<wchar_t>::_M_check_length(size_t, size_t,
326
                                           const char*) const;
327
 
328
  template
329
    void
330
    basic_string<wchar_t>::_Rep::_M_set_length_and_sharable(size_t);
331
 
332
  template
333
    basic_istream<wchar_t>&
334
    basic_istream<wchar_t>::ignore();
335
 
336
  template
337
    bool
338
    basic_fstream<wchar_t>::is_open() const;
339
 
340
  template
341
    bool
342
    basic_ifstream<wchar_t>::is_open() const;
343
 
344
  template
345
    bool
346
    basic_ofstream<wchar_t>::is_open() const;
347
#endif
348
 
349
_GLIBCXX_END_NAMESPACE
350
 
351
// The rename syntax for default exported names is
352
//   asm (".symver name1,exportedname@GLIBCXX_3.4")
353
//   asm (".symver name2,exportedname@@GLIBCXX_3.4.5")
354
// In the future, GLIBCXX_ABI > 6 should remove all uses of
355
// _GLIBCXX_*_SYMVER macros in this file.
356
 
357
#define _GLIBCXX_3_4_SYMVER(XXname, name) \
358
   extern "C" void \
359
   _X##name() \
360
   __attribute__ ((alias(#XXname))); \
361
   asm (".symver " "_X" #name "," #name "@GLIBCXX_3.4");
362
 
363
#define _GLIBCXX_3_4_5_SYMVER(XXname, name) \
364
   extern "C" void \
365
   _Y##name() \
366
   __attribute__ ((alias(#XXname))); \
367
   asm (".symver " "_Y" #name  "," #name "@@GLIBCXX_3.4.5");
368
 
369
#define _GLIBCXX_ASM_SYMVER(cur, old, version) \
370
   asm (".symver " #cur "," #old "@@" #version);
371
 
372
#define _GLIBCXX_APPLY_SYMVER _GLIBCXX_3_4_SYMVER
373
#include <bits/compatibility.h>
374
#undef _GLIBCXX_APPLY_SYMVER
375
 
376
#define _GLIBCXX_APPLY_SYMVER _GLIBCXX_3_4_5_SYMVER
377
#include <bits/compatibility.h>
378
#undef _GLIBCXX_APPLY_SYMVER
379
 
380
 
381
/* gcc-3.4.0
382
_ZN10__gnu_norm15_List_node_base4hookEPS0_;
383
_ZN10__gnu_norm15_List_node_base4swapERS0_S1_;
384
_ZN10__gnu_norm15_List_node_base6unhookEv;
385
_ZN10__gnu_norm15_List_node_base7reverseEv;
386
_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_;
387
*/
388
#include "list.cc"
389
_GLIBCXX_ASM_SYMVER(_ZNSt17_List_node_baseXX7_M_hookEPS_, \
390
_ZN10__gnu_norm15_List_node_base4hookEPS0_, \
391
GLIBCXX_3.4)
392
 
393
_GLIBCXX_ASM_SYMVER(_ZNSt17_List_node_baseXX4swapERS_S0_, \
394
_ZN10__gnu_norm15_List_node_base4swapERS0_S1_, \
395
GLIBCXX_3.4)
396
 
397
_GLIBCXX_ASM_SYMVER(_ZNSt17_List_node_baseXX9_M_unhookEv, \
398
_ZN10__gnu_norm15_List_node_base6unhookEv, \
399
GLIBCXX_3.4)
400
 
401
_GLIBCXX_ASM_SYMVER(_ZNSt17_List_node_baseXX10_M_reverseEv, \
402
_ZN10__gnu_norm15_List_node_base7reverseEv, \
403
GLIBCXX_3.4)
404
 
405
_GLIBCXX_ASM_SYMVER(_ZNSt17_List_node_baseXX11_M_transferEPS_S0_, \
406
_ZN10__gnu_norm15_List_node_base8transferEPS0_S1_, \
407
GLIBCXX_3.4)
408
#undef _List_node_base
409
 
410
// gcc-4.1.0
411
// Long double versions of "C" math functions. 
412
#if defined (_GLIBCXX_LONG_DOUBLE_COMPAT) \
413
    || (defined (__arm__) && defined (__linux__) && defined (__ARM_EABI__)) \
414
    || (defined (__hppa__) && defined (__linux__)) \
415
    || (defined (__m68k__) && defined (__mcoldfire__) && defined (__linux__)) \
416
    || (defined (__mips__) && defined (_ABIO32) && defined (__linux__)) \
417
    || (defined (__sh__) && defined (__linux__) && __SIZEOF_SIZE_T__ == 4) \
418
 
419
#define _GLIBCXX_MATHL_WRAPPER(name, argdecl, args, ver) \
420
extern "C" double                                               \
421
__ ## name ## l_wrapper argdecl                                 \
422
{                                                               \
423
  return name args;                                             \
424
}                                                               \
425
asm (".symver __" #name "l_wrapper, " #name "l@" #ver)
426
 
427
#define _GLIBCXX_MATHL_WRAPPER1(name, ver) \
428
  _GLIBCXX_MATHL_WRAPPER (name, (double x), (x), ver)
429
 
430
#define _GLIBCXX_MATHL_WRAPPER2(name, ver) \
431
  _GLIBCXX_MATHL_WRAPPER (name, (double x, double y), (x, y), ver)
432
 
433
#ifdef _GLIBCXX_HAVE_ACOSL
434
_GLIBCXX_MATHL_WRAPPER1 (acos, GLIBCXX_3.4.3);
435
#endif
436
#ifdef _GLIBCXX_HAVE_ASINL
437
_GLIBCXX_MATHL_WRAPPER1 (asin, GLIBCXX_3.4.3);
438
#endif
439
#ifdef _GLIBCXX_HAVE_ATAN2L
440
_GLIBCXX_MATHL_WRAPPER2 (atan2, GLIBCXX_3.4);
441
#endif
442
#ifdef _GLIBCXX_HAVE_ATANL
443
_GLIBCXX_MATHL_WRAPPER1 (atan, GLIBCXX_3.4.3);
444
#endif
445
#ifdef _GLIBCXX_HAVE_CEILL
446
_GLIBCXX_MATHL_WRAPPER1 (ceil, GLIBCXX_3.4.3);
447
#endif
448
#ifdef _GLIBCXX_HAVE_COSHL
449
_GLIBCXX_MATHL_WRAPPER1 (cosh, GLIBCXX_3.4);
450
#endif
451
#ifdef _GLIBCXX_HAVE_COSL
452
_GLIBCXX_MATHL_WRAPPER1 (cos, GLIBCXX_3.4);
453
#endif
454
#ifdef _GLIBCXX_HAVE_EXPL
455
_GLIBCXX_MATHL_WRAPPER1 (exp, GLIBCXX_3.4);
456
#endif
457
#ifdef _GLIBCXX_HAVE_FLOORL
458
_GLIBCXX_MATHL_WRAPPER1 (floor, GLIBCXX_3.4.3);
459
#endif
460
#ifdef _GLIBCXX_HAVE_FMODL
461
_GLIBCXX_MATHL_WRAPPER2 (fmod, GLIBCXX_3.4.3);
462
#endif
463
#ifdef _GLIBCXX_HAVE_FREXPL
464
_GLIBCXX_MATHL_WRAPPER (frexp, (double x, int *y), (x, y), GLIBCXX_3.4.3);
465
#endif
466
#ifdef _GLIBCXX_HAVE_HYPOTL
467
_GLIBCXX_MATHL_WRAPPER2 (hypot, GLIBCXX_3.4);
468
#endif
469
#ifdef _GLIBCXX_HAVE_LDEXPL
470
_GLIBCXX_MATHL_WRAPPER (ldexp, (double x, int y), (x, y), GLIBCXX_3.4.3);
471
#endif
472
#ifdef _GLIBCXX_HAVE_LOG10L
473
_GLIBCXX_MATHL_WRAPPER1 (log10, GLIBCXX_3.4);
474
#endif
475
#ifdef _GLIBCXX_HAVE_LOGL
476
_GLIBCXX_MATHL_WRAPPER1 (log, GLIBCXX_3.4);
477
#endif
478
#ifdef _GLIBCXX_HAVE_MODFL
479
_GLIBCXX_MATHL_WRAPPER (modf, (double x, double *y), (x, y), GLIBCXX_3.4.3);
480
#endif
481
#ifdef _GLIBCXX_HAVE_POWL
482
_GLIBCXX_MATHL_WRAPPER2 (pow, GLIBCXX_3.4);
483
#endif
484
#ifdef _GLIBCXX_HAVE_SINHL
485
_GLIBCXX_MATHL_WRAPPER1 (sinh, GLIBCXX_3.4);
486
#endif
487
#ifdef _GLIBCXX_HAVE_SINL
488
_GLIBCXX_MATHL_WRAPPER1 (sin, GLIBCXX_3.4);
489
#endif
490
#ifdef _GLIBCXX_HAVE_SQRTL
491
_GLIBCXX_MATHL_WRAPPER1 (sqrt, GLIBCXX_3.4);
492
#endif
493
#ifdef _GLIBCXX_HAVE_TANHL
494
_GLIBCXX_MATHL_WRAPPER1 (tanh, GLIBCXX_3.4);
495
#endif
496
#ifdef _GLIBCXX_HAVE_TANL
497
_GLIBCXX_MATHL_WRAPPER1 (tan, GLIBCXX_3.4);
498
#endif
499
#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
500
 
501
#endif
502
 
503
#ifdef _GLIBCXX_LONG_DOUBLE_COMPAT
504
extern void *_ZTVN10__cxxabiv123__fundamental_type_infoE[];
505
extern void *_ZTVN10__cxxabiv119__pointer_type_infoE[];
506
extern __attribute__((used, weak)) const char _ZTSe[2] = "e";
507
extern __attribute__((used, weak)) const char _ZTSPe[3] = "Pe";
508
extern __attribute__((used, weak)) const char _ZTSPKe[4] = "PKe";
509
extern __attribute__((used, weak)) const void * const _ZTIe[2]
510
  = { (void *) &_ZTVN10__cxxabiv123__fundamental_type_infoE[2],
511
      (void *) _ZTSe };
512
extern __attribute__((used, weak)) const void * const _ZTIPe[4]
513
  = { (void *) &_ZTVN10__cxxabiv119__pointer_type_infoE[2],
514
      (void *) _ZTSPe, (void *) 0L, (void *) _ZTIe };
515
extern __attribute__((used, weak)) const void * const _ZTIPKe[4]
516
  = { (void *) &_ZTVN10__cxxabiv119__pointer_type_infoE[2],
517
      (void *) _ZTSPKe, (void *) 1L, (void *) _ZTIe };
518
#endif // _GLIBCXX_LONG_DOUBLE_COMPAT
519
 
520
#ifdef _GLIBCXX_SYMVER_DARWIN
521
#if (defined(__ppc__) || defined(__ppc64__)) && defined(PIC)
522
/* __eprintf shouldn't have been made visible from libstdc++, or
523
   anywhere, but on Mac OS X 10.4 it was defined in
524
   libstdc++.6.0.3.dylib; so on that platform we have to keep defining
525
   it to keep binary compatibility.  We can't just put the libgcc
526
   version in the export list, because that doesn't work; once a
527
   symbol is marked as hidden, it stays that way.  */
528
 
529
#include <cstdio>
530
#include <cstdlib>
531
 
532
using namespace std;
533
 
534
extern "C" void
535
__eprintf(const char *string, const char *expression,
536
          unsigned int line, const char *filename)
537
{
538
  fprintf(stderr, string, expression, line, filename);
539
  fflush(stderr);
540
  abort();
541
}
542
#endif
543
#endif

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.