とは、pthread_cleanup_push /ポップを使用してコードの一部をコンパイルするとき、私はいくつかの警告を持っている - O2CFLAGS。 Makefile内のO2のcflagsを削除するだけで問題なくコンパイルできます。は、pthread_cleanup_pushとO2 CFLAGS
これらのpthreadマクロでgcc最適化を使用することは禁じられていますか?私は人や文書で何かを見つけることができませんでした。ちなみに、スレッドの最後には何かをクリーンにする代替手段がありますか?また、gccアームと完全に連携しています。しかし、x86 gcc上ではありません。
警告:
x/x.c:1292:2: warning: variable ‘__cancel_routine’ might be clobbered by ‘longjmp’ or ‘vfork’ [-Wclobbered]
pthread_cleanup_push(x_cleanup, &fd);
私の現在のCFLAGSオプション:この問題は、GCCトラッカーに今何回か報告されている
-W -Wall -Wformat -Wformat-security -Wextra -Wno-unused-result,
-Wextra -Wno-long-long -Wno-variadic-macros -Wno-missing-field-initializers
-std=gnu99 -O2
あなたは[BZ 61118](https://gcc.gnu.org/bugzilla/show_bug.cgi?id=61118)を見たことがありますか? – yugr
@yugrはい、それが理由であるかどうかわからなくても、私はすでにこれを見ました。バグは2014年のレポートでした...その狂った...唯一の解決策は修正までWerrorを削除することですか?以前のバージョンのgcc(x86版)をロールバックしますか?この問題はARMクロスコンパイラには存在しないため、私のコードのデッドロックではありません。しかし、私はコードやバグの予期しない動作を引き起こす大きな問題ではないことを確かめたいと思っていました。 – ArthurLambert
無効な警告リストに '-Wno-clobbered'を追加することができます。 – caf