タグ

gccに関するTokyoIncidentsのブックマーク (13)

  • gcovrでコードカバレッジを確認

    May 25, 2014 手元ではCoverStoryを使っていたのですが、なんか使いづらかったのでgcovrを使い始めました。 gcovr 3.1にはhtml出力がついていて、以下のようなコマンドでレポートを出力してくれます。 gcovr \ -r . \ --html --html-detail \ -o build/coverage.html \ -e Pods \ -e UnitTests \ -e ".*\.h"

    gcovrでコードカバレッジを確認
  • gcc と gcov と カバレッジ

    cles::blog 平常心是道 blogs: cles::blog NP_cles() « ニューデリ :: 20th Anniversary ファイアーエムブレム大全 » 2010/07/02 gcc と gcov と カバレッジ  c  softwareengineering 427 0へぇ Javaで使えるカバレッジツールがありますか?と言われれればjcoverageとか、Clover、EMMA、Coberturaあたりがすぐに思い浮かぶのですが、Cでといわれるとさっぱりです。ということで、Cでカバレッジを計測するツールを探すことになりました。 † gcc には gcov というコマンドがついていた Javaでもカバレッジ計測となるとかなり低レベルな部分で結構いろいろなことをしなくてはいけないので、C言語でそれをやるとなるとコンパイルの段階から細工しないといけないのだろうという察し

    gcc と gcov と カバレッジ
  • gcov の使い方 - まめめも

    concov のドキュメントを書こうと思ったけれど、何から書くか困ったので、とりあえずその前に gcov の使い方とはまりどころを書いてみます。 gcov とは C 言語で書かれたプログラムのカバレッジを測定するツールです。gcc に付属しています。 基的な使い方 こういうコードがあるとする。 /* test.c */ #include <stdio.h> int foo(int x, int y) { return x + y; } int bar(int x, int y) { return x - y; } int main(void) { printf("%d\n", foo(2, 3)); printf("%d\n", foo(3, 4)); return 0; } コンパイルする。-coverage をつけると gcov 用のオブジェクトファイルが生成される *1 。 $ g

    gcov の使い方 - まめめも
  • 静的ライブラリ (.a) の作成と利用 | yunabe.jp

    静的ライブラリ (.a) の作成 ar コマンド で複数のオブジェクトファイル (.o) をまとめて静的ライブラリ (.a) を作成できます。

  • MIPSのABIのここが変.md

    MIPSのABIのここが変.md MIPSのABIは変だという話をこないだのシステムプログラミング会でしたら、ややザワッとしたので、なにがおかしいのかというのをちょっとまとめてみました。まとめてみて思いましたが、やっぱりMIPSのELFファイルはちょっと変です。 謎のmixed endianフィールド これが僕は一番ひどいと思ったものです。 ファイルにマルチバイトの数値を保存するときはエンディアンというものが問題になります。たとえば0xBEEFという2バイトの数を保存するときは、1バイト目にBE、2バイト目にEFを書くか、逆順で書くかは、ただの決まり事でどっちでもいいわけですが、書く側と読む側で認識があっていないと困ります。世の中的にはリトルエンディアン(下位バイトから書く)のが主流ですがビッグエンディアンなシステムもあります。 それがですね、MIPSのELFヘッダのr_infoという64

    MIPSのABIのここが変.md
  • GCCの最適化がインテルコンパイラより賢くて驚いた話 - Qiita

    はじめに コンパイラの最適化機能が、どこまで何を見抜くかに興味がある。特に、あるコンパイラができて、他のコンパイラができなかったりすることが見つかると楽しい。そういうのを見つけたのでメモ。 ソース コンパイラにわせるコードはこんなの。

    GCCの最適化がインテルコンパイラより賢くて驚いた話 - Qiita
  • cgoを使ったCとGoのリンクの裏側 (1) - Qiita

    cgoを用いるとCのライブラリをGoバイナリにリンクしたり、Goパッケージの一部をCで書いたりできる。更にGo 1.5以降では、GoのパッケージをC用の静的ライブラリまたは動的ライブラリにまとめておいて、Cからリンクすることもできる。 これらの機能はすべてgo buildコマンドに統合されているので、普段は特にcgoを使っていることを意識することは少ない。しかし、pure goのコードのビルドにしたところでその裏側ではコンパイラ、アセンブラ、リンカが走っているわけである。ではcgoの場合をこの水準で見るとどのような処理が行われているのだろうか。 要は、gcc(1)の裏ではcc1, as, collect2なんかが走ってるよね、cgoではどうなってるの? という話が稿の話題である。 なお、Goのオブジェクトファイルがプラットフォーム独立な(ELFとかではない)フォーマットであることや、Go

    cgoを使ったCとGoのリンクの裏側 (1) - Qiita
  • gccのインクルードパスについて調べたこと - それマグで!

    gccのinclude パスについて調べたい。いっつも何処から読んでるのかよくわからない。 小手先で調べた。 ソースをコンパイルして調べてみる takuya@air:~$ cat test.c #include <stdio.h> int main(){ return 0; }gcc -v test.cと-v オプションをつけると、詳しい状況が表示されます。これをつかってインクルードパスについて調べみた。 -v で調べてみたら・・ takuya@air:~$ gcc -v test.c Using built-in specs. Target: i686-apple-darwin11 (略 #include "..." search starts here: #include <...> search starts here: /usr/llvm-gcc-4.2/bin/../lib/gc

    gccのインクルードパスについて調べたこと - それマグで!
  • Linus Torvalds、 GCC 4.9.0のコード生成にブチ切れる

    Phoronixで知ったが、Linus TorvaldsがGCC 4.9.0のコード生成にブチ切れている。 問題はLinuxカーネルのload_balance()がランダムにパニックを起こすというもので、その原因は、報告者の使っているコンパイラーであるGCC 4.9.0のコード生成がおかしかったという話だ。 Linus様は御自ら生成されたコードを読み給い、平生と変わらぬ調子で物事の道理を示された。 Linux-Kernel Archive: Re: Random panic in load_balance() with 3.16-rc From: Linus Torvalds Date: Thu Jul 24 2014 - 14:47:25 EST On Wed, Jul 23, 2014 at 6:43 PM, Michel DÃnzer <michel@xxxxxxxxxxx> wro

  • なんでGCCはa*a*a*a*a*a を (a*a*a)*(a*a*a) に最適化できないの?っと

    c - Why doesn't GCC optimize a*a*a*a*a*a to (a*a*a)*(a*a*a)? - Stack Overflow 俺は科学技術計算の数値計算の最適化をしてたんだけどさ。GCCはpow(a, 2)をa*aにしてくれるんだな。うん。で、pow(a, 6)は最適化されずに、ライブラリ関数であるpowを呼んじゃうんだ。パフォーマンス的に最悪。(Intel C++ Compilerはpow(a,6)のライブラリ関数呼び出しを消し去ってくれるんだけどな) どうもよくわからんのが、pow(a, 6)をa*a*a*a*a*aで置き換えて、GCC 4.5.1をオプション"-O3 -lm -funroll-loops -msse4"で使ったら、mulsd命令を5個使う。 movapd %xmm14, %xmm13 mulsd %xmm14, %xmm13 mulsd

  • 本の虫: Clang VS 自由ソフトウェア

    オープンソースで有名なEric S. Raymondが、自由ソフトウェアで有名なRichard Stallmanに、GCCのアンチプラグインポリシーについて突っ込んでいる。 GCCは、長年、コンパイラーのモジュール化を政治的な理由で行っていなかった。もし、例えばパーサーや意味解析だけを分離して使えるようにしたり、内部表現を規格化したりしてしまうと、GCCの一部が、不自由なソフトウェアに取り込まれたり、あるいは不自由なソフトウェアがGCCのプラグインという形で入り込むことになってしまう。これは、利用者の自由を第一とする自由ソフトウェアにとって、悪夢のような未来である。そのような未来を未然に防ぐために、政治的な理由で、GCCのはプラグインに反対するポリシーを採用している。もし、GCCを改良したければ、自由なソフトウェアとなるべきなのだ。そして、GCCのプロジェクトに参加するべきなのだ。 とはい

  • GDBでデバッグするなら-g3オプション - 2013-05-08 - ククログ

    RubyPythonなどのスクリプト言語では実行中に例外が発生するとバックトレースを出力してくれます。バックトレースがあるとどこで問題が発生したかがわかるためデバッグに便利です。一方、CやC++では不正なメモリアクセスをすると、バックトレースではなくcoreを残して1終了します2。デバッガーでcoreを解析するとバックトレースを確認できます。 このように、CやC++でデバッグするときにデバッガーはなくてはならない存在です。スクリプト言語にもデバッガーはありますが、デバッガーを使わなくてもデバッグできる範囲が広いため、CやC++をデバッグするときのほうがデバッガーのありがたさがわかります。 この記事では、広く使われているデバッガーであるGDBをもっと便利に使うためのGCCのコンパイルオプション-g3を紹介します。 サンプルプログラム まず、この記事で使うサンプルプログラムを示します。マクロ

    GDBでデバッグするなら-g3オプション - 2013-05-08 - ククログ
  • MacOSXの Homebrewで最新の GCC 4.7.0 をインストール - しがないプログラマ の日記

    普通にはbrewではgccをインストールできません。しかし、XCodeでインストールされるgccは Ver.4.2と古いので C++11標準の機能はまったく使えません。たぶん、clangを使えということなんでしょうけど、gccを使う必要があったのでインストール方法を調べました。 Homebrewの標準の formulaにはgccがないのですが、Homebrew-alt というプロジェクトで標準でサポートされていないモジュールをカバーしているようです。しかし、ちょっと前から dupsやversionsなどの複数のプロジェクトに分割されたようです。 そんな訳で、gccの最新版は homebrew-bupsの下にあるので、以下のコマンドでインストールできます。自分の環境では、gccがないため「--use-llvm」のオプションが必要でした。 $ brew install https://raw.

    MacOSXの Homebrewで最新の GCC 4.7.0 をインストール - しがないプログラマ の日記
  • 1