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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libstdc++-v3/] [doc/] [xml/] [manual/] [intro.xml] - Blame information for rev 745

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

Line No. Rev Author Line
1 742 jeremybenn
2
3
 
4
</code></pre></td>
      </tr>
      <tr valign="middle">
         <td>5</td>
         <td></td>
         <td></td>
         <td class="code"><pre><code>  Introduction</code></pre></td>
      </tr>
      <tr valign="middle">
         <td>6</td>
         <td></td>
         <td></td>
         <td class="code"><pre><code>  <indexterm><primary>Introduction</primary></indexterm></code></pre></td>
      </tr>
      <tr valign="middle">
         <td>7</td>
         <td></td>
         <td></td>
         <td class="code"><pre><code>
8
  
9
    
10
      ISO C++
11
    
12
    
13
      library
14
    
15
  
16
17
 
18
 
19
20
Status
21
  
22
 
23
 
24
  
25
  
Implementation Status
26
 
27
 
28
    
29
    
30
    
31
 
32
    
33
    
34
    
35
 
36
    
37
    
38
    
39
 
40
    
41
    
42
    
43
  
44
 
45
  
46
  
License
47
    
48
 
49
    
50
    There are two licenses affecting GNU libstdc++: one for the code,
51
    and one for the documentation.
52
    
53
 
54
    
55
      There is a license section in the FAQ regarding common questions. If you have more
56
      questions, ask the FSF or the gcc mailing list.
57
    
58
 
59
    
The Code: GPL
60
 
61
 
62
    
63
      The source code is distributed under the GNU General Public License version 3,
64
      with the addition under section 7 of an exception described in
65
      the GCC Runtime Library Exception, version 3.1
66
      as follows (or see the file COPYING.RUNTIME):
67
    
68
 
69
    
70
GCC RUNTIME LIBRARY EXCEPTION
71
 
72
Version 3.1, 31 March 2009
73
 
74
Copyright (C) 2009 Free Software Foundation, Inc.
75
 
76
Everyone is permitted to copy and distribute verbatim copies of this
77
license document, but changing it is not allowed.
78
 
79
This GCC Runtime Library Exception ("Exception") is an additional
80
permission under section 7 of the GNU General Public License, version
81
3 ("GPLv3"). It applies to a given file (the "Runtime Library") that
82
bears a notice placed by the copyright holder of the file stating that
83
the file is governed by GPLv3 along with this Exception.
84
 
85
When you use GCC to compile a program, GCC may combine portions of
86
certain GCC header files and runtime libraries with the compiled
87
program. The purpose of this Exception is to allow compilation of
88
non-GPL (including proprietary) programs to use, in this way, the
89
header files and runtime libraries covered by this Exception.
90
 
91
0. Definitions.
92
 
93
A file is an "Independent Module" if it either requires the Runtime
94
Library for execution after a Compilation Process, or makes use of an
95
interface provided by the Runtime Library, but is not otherwise based
96
on the Runtime Library.
97
 
98
"GCC" means a version of the GNU Compiler Collection, with or without
99
modifications, governed by version 3 (or a specified later version) of
100
the GNU General Public License (GPL) with the option of using any
101
subsequent versions published by the FSF.
102
 
103
"GPL-compatible Software" is software whose conditions of propagation,
104
modification and use would permit combination with GCC in accord with
105
the license of GCC.
106
 
107
"Target Code" refers to output from any compiler for a real or virtual
108
target processor architecture, in executable form or suitable for
109
input to an assembler, loader, linker and/or execution
110
phase. Notwithstanding that, Target Code does not include data in any
111
format that is used as a compiler intermediate representation, or used
112
for producing a compiler intermediate representation.
113
 
114
The "Compilation Process" transforms code entirely represented in
115
non-intermediate languages designed for human-written code, and/or in
116
Java Virtual Machine byte code, into Target Code. Thus, for example,
117
use of source code generators and preprocessors need not be considered
118
part of the Compilation Process, since the Compilation Process can be
119
understood as starting with the output of the generators or
120
preprocessors.
121
 
122
A Compilation Process is "Eligible" if it is done using GCC, alone or
123
with other GPL-compatible software, or if it is done without using any
124
work based on GCC. For example, using non-GPL-compatible Software to
125
optimize any GCC intermediate representations would not qualify as an
126
Eligible Compilation Process.
127
 
128
1. Grant of Additional Permission.
129
 
130
You have permission to propagate a work of Target Code formed by
131
combining the Runtime Library with Independent Modules, even if such
132
propagation would otherwise violate the terms of GPLv3, provided that
133
all Target Code was generated by Eligible Compilation Processes. You
134
may then convey such a combination under terms of your choice,
135
consistent with the licensing of the Independent Modules.
136
 
137
2. No Weakening of GCC Copyleft.
138
 
139
The availability of this Exception does not imply any general
140
presumption that third-party software is unaffected by the copyleft
141
requirements of the license of GCC.
142
    
143
 
144
    
145
      Hopefully that text is self-explanatory.  If it isn't, you need to speak
146
      to your lawyer, or the Free Software Foundation.
147
    
148
    
149
 
150
    
The Documentation: GPL, FDL
151
 
152
 
153
    
154
      The documentation shipped with the library and made available over
155
      the web, excluding the pages generated from source comments, are
156
      copyrighted by the Free Software Foundation, and placed under the
157
       GNU Free Documentation
158
      License version 1.3.  There are no Front-Cover Texts, no
159
      Back-Cover Texts, and no Invariant Sections.
160
    
161
 
162
    
163
      For documentation generated by doxygen or other automated tools
164
      via processing source code comments and markup, the original source
165
      code license applies to the generated files. Thus, the doxygen
166
      documents are licensed GPL.
167
    
168
 
169
    
170
      If you plan on making copies of the documentation, please let us know.
171
      We can probably offer suggestions.
172
    
173
    
174
 
175
  
176
 
177
  
178
  
Bugs
179
    
180
 
181
 
182
    
Implementation Bugs
183
 
184
    
185
      Information on known bugs, details on efforts to fix them, and
186
      fixed bugs are all available as part of the GCC bug tracking system,
187
      with the category set to libstdc++.
188
    
189
    
190
 
191
    
Standard Bugs
192
 
193
      
194
        Everybody's got issues.  Even the C++ Standard Library.
195
      
196
      
197
        The Library Working Group, or LWG, is the ISO subcommittee responsible
198
        for making changes to the library.  They periodically publish an
199
        Issues List containing problems and possible solutions.  As they reach
200
        a consensus on proposed solutions, we often incorporate the solution.
201
      
202
      
203
        Here are the issues which have resulted in code changes to the library.
204
        The links are to the specific defect reports from a partial
205
        copy of the Issues List.  You can read the full version online
206
        at the ISO C++
207
        Committee homepage, linked to on the
208
        GCC "Readings"
209
        page.  If
210
        you spend a lot of time reading the issues, we recommend downloading
211
        the ZIP file and reading them locally.
212
      
213
      
214
        (NB: partial copy means that not all
215
        links within the lwg-*.html pages will work.  Specifically,
216
        links to defect reports that have not been accorded full DR
217
        status will probably break.  Rather than trying to mirror the
218
        entire issues list on our overworked web server, we recommend
219
        you go to the LWG homepage instead.)
220
      
221
      
222
        If a DR is not listed here, we may simply not have gotten to
223
        it yet; feel free to submit a patch.  Search the include/bits
224
        and src directories for appearances of
225
        _GLIBCXX_RESOLVE_LIB_DEFECTS for examples
226
        of style.  Note that we usually do not make changes to the
227
        code until an issue has reached DR status.
228
      
229
 
230
      
231
    5:
232
        string::compare specification questionable
233
    
234
    This should be two overloaded functions rather than a single function.
235
    
236
 
237
    17:
238
        Bad bool parsing
239
    
240
    Apparently extracting Boolean values was messed up...
241
    
242
 
243
    19:
244
        "Noconv" definition too vague
245
    
246
    If codecvt::do_in returns noconv there are
247
        no changes to the values in [to, to_limit).
248
    
249
 
250
    22:
251
        Member open vs flags
252
    
253
    Re-opening a file stream does not clear the state flags.
254
    
255
 
256
    23:
257
        Num_get overflow result
258
    
259
    Implement the proposed resolution.
260
    
261
 
262
    25:
263
        String operator<< uses width() value wrong
264
    
265
    Padding issues.
266
    
267
 
268
    48:
269
        Use of non-existent exception constructor
270
    
271
    An instance of ios_base::failure is constructed instead.
272
    
273
 
274
    49:
275
        Underspecification of ios_base::sync_with_stdio
276
    
277
    The return type is the previous state of synchronization.
278
    
279
 
280
    50:
281
        Copy constructor and assignment operator of ios_base
282
    
283
    These members functions are declared private and are
284
        thus inaccessible.  Specifying the correct semantics of
285
        "copying stream state" was deemed too complicated.
286
    
287
 
288
    60:
289
        What is a formatted input function?
290
    
291
    This DR made many widespread changes to basic_istream
292
        and basic_ostream all of which have been implemented.
293
    
294
 
295
    63:
296
        Exception-handling policy for unformatted output
297
    
298
    Make the policy consistent with that of formatted input, unformatted
299
        input, and formatted output.
300
    
301
 
302
    68:
303
        Extractors for char* should store null at end
304
    
305
    And they do now.  An editing glitch in the last item in the list of
306
        [27.6.1.2.3]/7.
307
    
308
 
309
    74:
310
        Garbled text for codecvt::do_max_length
311
    
312
    The text of the standard was gibberish.  Typos gone rampant.
313
    
314
 
315
    75:
316
        Contradiction in codecvt::length's argument types
317
    
318
    Change the first parameter to stateT& and implement
319
        the new effects paragraph.
320
    
321
 
322
    83:
323
        string::npos vs. string::max_size()
324
    
325
    Safety checks on the size of the string should test against
326
        max_size() rather than npos.
327
    
328
 
329
    90:
330
        Incorrect description of operator>> for strings
331
    
332
    The effect contain isspace(c,getloc()) which must be
333
        replaced by isspace(c,is.getloc()).
334
    
335
 
336
    91:
337
        Description of operator>> and getline() for string<>
338
            might cause endless loop
339
    
340
    They behave as a formatted input function and as an unformatted
341
        input function, respectively (except that getline is
342
        not required to set gcount).
343
    
344
 
345
    103:
346
        set::iterator is required to be modifiable, but this allows
347
            modification of keys.
348
    
349
    For associative containers where the value type is the same as
350
        the key type, both iterator and const_iterator
351
         are constant iterators.
352
    
353
 
354
    109:
355
        Missing binders for non-const sequence elements
356
    
357
    The binder1st and binder2nd didn't have an
358
        operator() taking a non-const parameter.
359
    
360
 
361
    110:
362
        istreambuf_iterator::equal not const
363
    
364
    This was not a const member function.  Note that the DR says to
365
        replace the function with a const one; we have instead provided an
366
        overloaded version with identical contents.
367
    
368
 
369
    117:
370
        basic_ostream uses nonexistent num_put member functions
371
    
372
    num_put::put() was overloaded on the wrong types.
373
    
374
 
375
    118:
376
        basic_istream uses nonexistent num_get member functions
377
    
378
    Same as 117, but for num_get::get().
379
    
380
 
381
    129:
382
        Need error indication from seekp() and seekg()
383
    
384
    These functions set failbit on error now.
385
    
386
 
387
    130:
388
        Return type of container::erase(iterator) differs for associative containers
389
    
390
    Make member erase return iterator for set, multiset, map, multimap.
391
    
392
 
393
    136:
394
        seekp, seekg setting wrong streams?
395
    
396
    seekp should only set the output stream, and
397
        seekg should only set the input stream.
398
    
399
 
400
406
 
407
    167:
408
        Improper use of traits_type::length()
409
    
410
    op<< with a const char* was
411
        calculating an incorrect number of characters to write.
412
    
413
 
414
    169:
415
        Bad efficiency of overflow() mandated
416
    
417
    Grow efficiently the internal array object.
418
    
419
 
420
    171:
421
        Strange seekpos() semantics due to joint position
422
    
423
    Quite complex to summarize...
424
    
425
 
426
    181:
427
        make_pair() unintended behavior
428
    
429
    This function used to take its arguments as reference-to-const, now
430
        it copies them (pass by value).
431
    
432
 
433
    195:
434
        Should basic_istream::sentry's constructor ever set eofbit?
435
    
436
    Yes, it can, specifically if EOF is reached while skipping whitespace.
437
    
438
 
439
    211:
440
        operator>>(istream&, string&) doesn't set failbit
441
    
442
    If nothing is extracted into the string, op>> now
443
        sets failbit (which can cause an exception, etc., etc.).
444
    
445
 
446
    214:
447
        set::find() missing const overload
448
    
449
    Both set and multiset were missing
450
        overloaded find, lower_bound, upper_bound, and equal_range functions
451
        for const instances.
452
    
453
 
454
    231:
455
        Precision in iostream?
456
    
457
    For conversion from a floating-point type, str.precision()
458
        is specified in the conversion specification.
459
    
460
 
461
    233:
462
        Insertion hints in associative containers
463
    
464
    Implement N1780, first check before then check after, insert as close
465
        to hint as possible.
466
    
467
 
468
    235:
469
        No specification of default ctor for reverse_iterator
470
    
471
    The declaration of reverse_iterator lists a default constructor.
472
        However, no specification is given what this constructor should do.
473
    
474
 
475
    241:
476
        Does unique_copy() require CopyConstructible and Assignable?
477
    
478
    Add a helper for forward_iterator/output_iterator, fix the existing
479
        one for input_iterator/output_iterator to not rely on Assignability.
480
    
481
 
482
    243:
483
        get and getline when sentry reports failure
484
    
485
    Store a null character only if the character array has a non-zero size.
486
    
487
 
488
    251:
489
        basic_stringbuf missing allocator_type
490
    
491
    This nested typedef was originally not specified.
492
    
493
 
494
    253:
495
        valarray helper functions are almost entirely useless
496
    
497
    Make the copy constructor and copy-assignment operator declarations
498
        public in gslice_array, indirect_array, mask_array, slice_array; provide
499
        definitions.
500
    
501
 
502
    265:
503
        std::pair::pair() effects overly restrictive
504
    
505
    The default ctor would build its members from copies of temporaries;
506
        now it simply uses their respective default ctors.
507
    
508
 
509
    266:
510
        bad_exception::~bad_exception() missing Effects clause
511
    
512
    The bad_* classes no longer have destructors (they
513
        are trivial), since no description of them was ever given.
514
    
515
 
516
    271:
517
        basic_iostream missing typedefs
518
    
519
    The typedefs it inherits from its base classes can't be used, since
520
        (for example) basic_iostream<T>::traits_type is ambiguous.
521
    
522
 
523
    275:
524
        Wrong type in num_get::get() overloads
525
    
526
    Similar to 118.
527
    
528
 
529
    280:
530
        Comparison of reverse_iterator to const reverse_iterator
531
    
532
    Add global functions with two template parameters.
533
        (NB: not added for now a templated assignment operator)
534
    
535
 
536
    292:
537
        Effects of a.copyfmt (a)
538
    
539
    If (this == &rhs) do nothing.
540
    
541
 
542
    300:
543
        List::merge() specification incomplete
544
    
545
    If (this == &x) do nothing.
546
    
547
 
548
    303:
549
        Bitset input operator underspecified
550
    
551
    Basically, compare the input character to
552
                    is.widen(0) and is.widen(1).
553
    
554
 
555
    305:
556
        Default behavior of codecvt<wchar_t, char,
557
                  mbstate_t>::length()
558
    
559
    Do not specify what codecvt<wchar_t, char,
560
                    mbstate_t>::do_length must return.
561
    
562
 
563
    328:
564
        Bad sprintf format modifier in
565
                  money_put<>::do_put()
566
    
567
    Change the format string to "%.0Lf".
568
    
569
 
570
    365:
571
        Lack of const-qualification in clause 27
572
    
573
    Add const overloads of is_open.
574
    
575
 
576
    387:
577
        std::complex over-encapsulated
578
    
579
    Add the real(T) and imag(T)
580
                    members;  in C++11 mode, also adjust the existing
581
                    real() and imag() members and
582
                    free functions.
583
    
584
 
585
    389:
586
        Const overload of valarray::operator[] returns
587
                  by value
588
    
589
    Change it to return a const T&.
590
    
591
 
592
    396:
593
        what are characters zero and one
594
    
595
    Implement the proposed resolution.
596
    
597
 
598
    402:
599
        Wrong new expression in [some_]allocator::construct
600
    
601
    Replace "new" with "::new".
602
    
603
 
604
    408:
605
        
606
        Is vector<reverse_iterator<char*> > forbidden?
607
        
608
    
609
    Tweak the debug-mode checks in _Safe_iterator.
610
    
611
 
612
    409:
613
        Closing an fstream should clear the error state
614
    
615
    Have open clear the error flags.
616
    
617
 
618
    431:
619
        Swapping containers with unequal allocators
620
    
621
    Implement Option 3, as per N1599.
622
    
623
 
624
    432:
625
        stringbuf::overflow() makes only one write position
626
            available
627
    
628
    Implement the resolution, beyond DR 169.
629
    
630
 
631
    434:
632
        bitset::to_string() hard to use
633
    
634
    Add three overloads, taking fewer template arguments.
635
    
636
 
637
    438:
638
        Ambiguity in the "do the right thing" clause
639
    
640
    Implement the resolution, basically cast less.
641
    
642
 
643
    453:
644
        basic_stringbuf::seekoff need not always fail for an empty stream
645
    
646
    Don't fail if the next pointer is null and newoff is zero.
647
    
648
 
649
    455:
650
        cerr::tie() and wcerr::tie() are overspecified
651
    
652
    Initialize cerr tied to cout and wcerr tied to wcout.
653
    
654
 
655
    464:
656
        Suggestion for new member functions in standard containers
657
    
658
    Add data() to std::vector and
659
        at(const key_type&) to std::map.
660
    
661
 
662
    508:
663
        Bad parameters for ranlux64_base_01
664
    
665
    Fix the parameters.
666
    
667
 
668
    512:
669
        Seeding subtract_with_carry_01 from a single unsigned long
670
    
671
    Construct a linear_congruential engine and seed with it.
672
    
673
 
674
    526:
675
        Is it undefined if a function in the standard changes in
676
            parameters?
677
    
678
    Use &value.
679
    
680
 
681
    538:
682
        241 again: Does unique_copy() require CopyConstructible
683
            and Assignable?
684
    
685
    In case of input_iterator/output_iterator rely on Assignability of
686
        input_iterator' value_type.
687
    
688
 
689
    539:
690
        partial_sum and adjacent_difference should mention
691
            requirements
692
    
693
    We were almost doing the right thing, just use std::move
694
        in adjacent_difference.
695
    
696
 
697
    541:
698
        shared_ptr template assignment and void
699
    
700
    Add an auto_ptr<void> specialization.
701
    
702
 
703
    543:
704
        valarray slice default constructor
705
    
706
    Follow the straightforward proposed resolution.
707
    
708
 
709
    550:
710
        What should the return type of pow(float,int) be?
711
    
712
    In C++11 mode, remove the pow(float,int), etc., signatures.
713
    
714
 
715
    586:
716
        string inserter not a formatted function
717
    
718
    Change it to be a formatted output function (i.e. catch exceptions).
719
    
720
 
721
    596:
722
        27.8.1.3 Table 112 omits "a+" and "a+b" modes
723
    
724
    Add the missing modes to fopen_mode.
725
    
726
 
727
    630:
728
        arrays of valarray
729
    
730
    Implement the simple resolution.
731
    
732
 
733
    660:
734
        Missing bitwise operations
735
    
736
    Add the missing operations.
737
    
738
 
739
    691:
740
        const_local_iterator cbegin, cend missing from TR1
741
    
742
    In C++11 mode add cbegin(size_type) and cend(size_type)
743
                    to the unordered containers.
744
    
745
 
746
    693:
747
        std::bitset::all() missing
748
    
749
    Add it, consistently with the discussion.
750
    
751
 
752
    695:
753
        ctype<char>::classic_table() not accessible
754
    
755
    Make the member functions table and classic_table public.
756
    
757
 
758
    696:
759
        istream::operator>>(int&) broken
760
    
761
    Implement the straightforward resolution.
762
    
763
 
764
    761:
765
        unordered_map needs an at() member function
766
    
767
    In C++11 mode, add at() and at() const.
768
    
769
 
770
    775:
771
        Tuple indexing should be unsigned?
772
    
773
    Implement the int -> size_t replacements.
774
    
775
 
776
    776:
777
        Undescribed assign function of std::array
778
    
779
    In C++11 mode, remove assign, add fill.
780
    
781
 
782
    781:
783
        std::complex should add missing C99 functions
784
    
785
    In C++11 mode, add std::proj.
786
    
787
 
788
    809:
789
        std::swap should be overloaded for array types
790
    
791
    Add the overload.
792
    
793
 
794
    844:
795
        complex pow return type is ambiguous
796
    
797
    In C++11 mode, remove the pow(complex<T>, int) signature.
798
    
799
 
800
    853:
801
        to_string needs updating with zero and one
802
    
803
    Update / add the signatures.
804
    
805
 
806
    865:
807
        More algorithms that throw away information
808
    
809
    The traditional HP / SGI return type and value is blessed
810
                    by the resolution of the DR.
811
    
812
  
813
 
814
 
815
  
816
817
 
818
 
819
820
Setup
821
  
822
 
823
 
824
   To transform libstdc++ sources into installed include files
825
   and properly built binaries useful for linking to other software is
826
   a multi-step process. Steps include getting the sources,
827
   configuring and building the sources, testing, and installation.
828
   
829
 
830
   The general outline of commands is something like:
831
   
832
 
833
   
834
   get gcc sources
835
   extract into gccsrcdir
836
   mkdir gccbuilddir
837
   cd gccbuilddir
838
   gccsrcdir/configure --prefix=destdir --other-opts...
839
   make
840
   make check
841
   make install
842
   
843
 
844
   
845
     Each step is described in more detail in the following sections.
846
   
847
 
848
  
849
  
850
  
851
 
852
  
853
  
854
  
855
 
856
  
857
Make
858
  
859
 
860
   If you have never done this before, you should read the basic
861
      GCC Installation
862
      Instructions first.  Read all of them.
863
      Twice.
864
   
865
 
866
Then type: make, and congratulations, you've
867
started to build.
868
869
 
870
871
 
872
873
 
874
875
876
877
 
878

powered by: WebSVN 2.1.0

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