2016-07-17 16 views
1

Auf EuroLLVM 2014 Kostya Serebryany presented eine Möglichkeit für Vektorüberlauferkennung. Auf Folie 12 zeigt er einen Link zu GCC revision 207517 wo man branches/google/gcc-4_8/libstdc++-v3/ sehen kann.
Ich frage mich, auf welche GCC-Version kann ich Container Overflow Bugs Erkennung verwenden? Wenn es nur im Kofferraum ist, ist es in Clang 3.9 verfügbar oder ist es auch im Kofferraum?Wie kann die Erkennung von Containerüberlauffehlern in GCC verwendet werden?

+0

Ich habe ein funy Problem - es gibt eine Art von Container Overflow Bugs Erkennung, die in MSVC 2015 präsentiert und erzwungen wird. In Versionen kompiliert damit alle unsere Unit-Tests scheitern ... also muss ich Linux (wo diese Bugs nicht auftauchen) Entwickler tha überzeugen Es ist kein Windows-Problem, sondern ein Code-Bug, den sie beheben müssen. – DuckQueen

+1

Sie sollten die Frage so bearbeiten, dass sie diese Informationen enthält, anstatt sie zu kommentieren. – Borgleader

+0

Hilft dies [http://stackoverflow.com/a/24247724/3002139]? –

Antwort

1

Sanitizer Vektor Annotationen sind nicht in Original gcc verfügbar, die Änderungen sind nur ein Teil von googles Zweig von gcc (veröffentlicht unter gcc.gnu.org). Beschreibung der Filialen: https://www.gnu.org/software/gcc/svn.html

google/main Dieser Zweig enthält Google lokalen Patches, die in Szene gesetzt werden mit dem Stamm eingebracht werden. Einige dieser Patches werden entweder überprüft oder wurden noch nicht vorgeschlagen. Die Absicht dieser Branche ist es, als eine Plattform für die Zusammenarbeit mit externen Entwicklern zu dienen. Es wird erwartet, dass Patches in diesem Zweig nur hier verbleiben, bis sie im Stamm überprüft und akzeptiert werden. Dieser Zweig wird von Diego Novillo gehalten

Commit Hinzufügen AddressSanitizer Anmerkungen Vektor:

https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=207517 "Für Google b/8513090, fügen AddressSanitizer Anmerkungen std :: vector":

https://gcc.gnu.org/viewcvs/gcc/branches/google/gcc-4_8/libstdc%2B%2B-v3/include/bits/vector.tcc?r1=207517&r2=207516&pathrev=207517

Wir können Namen von Anmerkungen aus dem Festschreiben erhalten:

// When sanitizer annotataions are off, avoid bazillion of no-op 
// functions that blow up debug binary size. 
#define __sanitizer_vector_annotate_new() 
#define __sanitizer_vector_annotate_delete() 
#define __sanitizer_vector_annotate_increase(a) 
#define __sanitizer_vector_annotate_shrink(a) 

Es gibt keine Sanitizer Annotationen in GNU Rüssel Version von vector.tcc oder stl_vector.h jetzt (Suche nach "Sanitizer"):

https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/bits/vector.tcc https://github.com/gcc-mirror/gcc/blob/master/libstdc%2B%2B-v3/include/bits/stl_vector.h

Thema in Mailingliste gcc-Patches: https://gcc.gnu.org/ml/gcc-patches/2014-05/msg02180.html „Erkennung "container overflow" Bugs in std :: vector ", Von: Konstantin Serebryany, 26 Mai 2014.