Wenn Sie MacPorts GCC unter OS X verwenden und den Clang Integrated Assembler über -Wa,-q
aufrufen, erzeugt der Assembler einen Strom von Warnungen für jede Datei. Eine Auswahl der Warnungen wird unten gezeigt (so viele von ihnen, der Stack Overflow Editor würde es mir nicht erlauben, den gesamten Stream einzufügen).Assembler-Warnung deaktivieren ".section __TEXT, __ textcoal_nt, coalesced, pure_instructions"
Ich fand LLVM Commit r250349, Stop generating coal sections. Hier ist der Code verantwortlich, aber es ist mir nicht klar, wie ich die Warnung deaktivieren soll.
+ // Issue a warning if the target is not powerpc and Section is a *coal* section.
+ Triple TT = getParser().getContext().getObjectFileInfo()->getTargetTriple();
+ Triple::ArchType ArchTy = TT.getArch();
+
+ if (ArchTy != Triple::ppc && ArchTy != Triple::ppc64) {
+ StringRef NonCoalSection = StringSwitch<StringRef>(Section)
+ .Case("__textcoal_nt", "__text")
+ .Case("__const_coal", "__const")
+ .Case("__datacoal_nt", "__data")
+ .Default(Section);
+
+ if (!Section.equals(NonCoalSection)) {
+ StringRef SectionVal(Loc.getPointer());
+ size_t B = SectionVal.find(',') + 1, E = SectionVal.find(',', B);
+ SMLoc BLoc = SMLoc::getFromPointer(SectionVal.data() + B);
+ SMLoc ELoc = SMLoc::getFromPointer(SectionVal.data() + E);
+ getParser().Warning(Loc, "section \"" + Section + "\" is deprecated",
+ SMRange(BLoc, ELoc));
+ getParser().Note(Loc, "change section name to \"" + NonCoalSection +
+ "\"", SMRange(BLoc, ELoc));
+ }
+ }
+
ich 2 > /dev/null
nicht umleiten kann, weil die Konfiguration ein wenig zerbrechlich ist im Moment, und es verwirft andere Warnungen und Fehler.
Wie deaktiviere ich die Clang Assembler Warnung auf Kohle Abschnitte?
Wenn der GCC-Compiler -Wa,-q
trifft, verwendet es /opt/local/bin/clang
als Assembler statt /opt/local/bin/as
. Hier sind die relevanten Versionen.
$ /opt/local/bin/g++-mp-6 --version
g++-mp-6 (MacPorts gcc6 6.1.0_0) 6.1.0
Copyright (C) 2016 Free Software Foundation, Inc.
$ /opt/local/bin/clang --version
clang version 3.8.0 (branches/release_38 262722)
Target: x86_64-apple-darwin12.6.0
$ /opt/local/bin/as -version
Apple Inc version cctools-877.8, GNU assembler version 1.38
-Wno-deprecated
zu CXXFLAGS
Hinzufügen der Warnung nicht unterdrücken. Ich habe auch versucht -fno-tree-coalesce-vars
ohne Freude (was die Leistung beeinträchtigen kann).
und die folgenden sed
nicht auf OS X überein mit sed
oder gsed
:
$ CXXFLAGS="-DNDEBUG -g2 -O2" make CXX=/opt/local/bin/g++-mp-6 2>&1 | \
gsed -e '/(__TEXT|__DATA)/,+2d'
/opt/local/bin/g++-mp-6 -DNDEBUG -g2 -O2 -fPIC -march=native -Wa,-q -pipe -c rijndael.cpp
<stdin>:3:11: warning: section "__textcoal_nt" is deprecated
.section __TEXT,__textcoal_nt,coalesced,pure_instructions
^ ~~~~~~~~~~~~~
<stdin>:3:11: note: change section name to "__text"
.section __TEXT,__textcoal_nt,coalesced,pure_instructions
^ ~~~~~~~~~~~~~
...
/opt/local/bin/g++-mp-6 -DNDEBUG -g2 -O2 -fPIC -march=native -Wa,-q -DMACPORTS_GCC_COMPILER=1 -c cryptlib.cpp
<stdin>:3:11: warning: section "__textcoal_nt" is deprecated
.section __TEXT,__textcoal_nt,coalesced,pure_instructions
^ ~~~~~~~~~~~~~
<stdin>:3:11: note: change section name to "__text"
.section __TEXT,__textcoal_nt,coalesced,pure_instructions
^ ~~~~~~~~~~~~~
<stdin>:2665:11: warning: section "__textcoal_nt" is deprecated
.section __TEXT,__textcoal_nt,coalesced,pure_instructions
^ ~~~~~~~~~~~~~
<stdin>:2665:11: note: change section name to "__text"
.section __TEXT,__textcoal_nt,coalesced,pure_instructions
^ ~~~~~~~~~~~~~
<stdin>:3925:11: warning: section "__textcoal_nt" is deprecated
.section __TEXT,__textcoal_nt,coalesced,pure_instructions
^ ~~~~~~~~~~~~~
<stdin>:3925:11: note: change section name to "__text"
.section __TEXT,__textcoal_nt,coalesced,pure_instructions
^ ~~~~~~~~~~~~~
<stdin>:3963:11: warning: section "__textcoal_nt" is deprecated
.section __TEXT,__textcoal_nt,coalesced,pure_instructions
^ ~~~~~~~~~~~~~
<stdin>:3963:11: note: change section name to "__text"
.section __TEXT,__textcoal_nt,coalesced,pure_instructions
^ ~~~~~~~~~~~~~
[Hundred of these ommitted for each source file]
Hier sind die relevanten GCC und LLVM Fehlerberichte:
- GCC Issue 71767 - Endless stream of warnings when using GCC with -Wa,-q and Clang Integrated Assembler
- LLVM Issue 28427 - Endless stream of warnings when using GCC with -Wa,-q and Clang Integrated Assembler
Nicht die Antwort, die ich hören wollte, aber danke trotzdem. – jww
Danke nochmal Jeremy. Die Fehlerberichte wurden der Frage hinzugefügt. Wenn ich "-g2 -O2" weglasse, verschwindet das Problem. Aber es ist nicht sehr hilfreich, ein unoptimiertes Programm ohne Symbole zu haben. – jww