タグ

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

  • 革命の日々! __attribute__(alloc_size) を使わないと_FORTIFY_SOURCE を活かせないよ。という話

    _FORTIFY_SOURCEというバッファーオーバーフロー攻撃を防ぐのにとても有用なマクロがある。 知らなかった人は以下のmanでもまず見てください http://linuxjm.sourceforge.jp/html/LDP_man-pages/man7/feature_test_macros.7.html _FORTIFY_SOURCE (glibc 2.3.4 以降) このマクロを定義すると、文字列やメモリの操作を行う様々な関数を 使用する際にバッファオーバーフローを検出するための軽めのチェックが 実行されるようになる。すべてのバッファオーバーフローが検出される わけではなく、あくまでよくある例についてだけである。 現在の実装では、以下の関数にチェックが追加されている: memcpy(3), mempcpy(3), memmove(3), memset(3), stpcpy(3),

  • 『今時のgcc に驚いた。kernel/VM advent cal. 2012/ DEC/07』

    今時のgcc に驚いた。kernel/VM advent cal. 2012/ DEC/07 | たけおか ぼちぼち日記 kernelVM advent calendar 2012/ DEC/07 今時のgcc に驚いた話。 (kernelともVMとも関係なくて、スマソ) -- a.c main() { foo(); } foo() { printf("FOO"); bar(); } bar() { printf("BAR"); foo(); } -- というソースを書く。 foo()とbar()は、お互いに呼びあい無限ループを描く。 % cc -S -O0 a.c で、出たオブジェクトは -- a.s -O0 (略) main: .LFB0: (略) movl $0, %eax call foo (略) ret .cfi_endproc .LFE0: (略) .LC0: .string

    『今時のgcc に驚いた。kernel/VM advent cal. 2012/ DEC/07』
  • Compiler Explorer

    Add new...Clone CompilerExecutor From ThisOptimizationStack UsagePreprocessorASTLLVM IROpt PipelineDeviceRust MIRRust HIRRust Macro ExpansionGHC CoreGHC STGGHC CmmGCC Tree/RTLGNAT Debug TreeGNAT Debug Expanded CodeControl Flow Graph

    Compiler Explorer
  • HOWTO fix -fPIC errors — Gentoo Linux Documentation

    [ << ] [ < ] [ Home ] [ > ] [ >> ] 3. HOWTO fix -fPIC errors Content: The Problem What is PIC? What are "relocations"? Case 1: Broken compiler Case 2: Broken `-fPIC' support checks in configure Case 3: Lack of `-fPIC' flag in the software to be built Case 4: Linking dynamically against static archives 3.a. The Problem Sometimes it occurs that gcc bails out with an error message like the followin

  • HomePage - GCC Wiki

    Welcome to GCC Wiki This page contains information about the GNU Compiler Collection. Please read HowToUseWiki if you need help editing this WikiWikiWeb. (Only members of the EditorGroup group may edit this wiki.) This wiki is not for random discussion of GCC, nor for asking questions. It is here to provide information. If you have questions, please use the mailing list. Do not add questions to th

  • Let's distcc!

    Distcc というソフトウェアをご存じでしょうか。このソフトウェアは、プログラムのコンパイルを複数の計算機に分散して並列で行ない、コンパイルをスピードアップさせるためのものです。特に手許の計算機が遅い場合や、リモートに高速な計算機がある場合に使うと効果的です。台数が多いと段々効力は下がりますが、分散コンパイルに使う計算機の数が少なければ、ほぼ足した分だけコンパイルが速くなります。この文書では Gentoo Linux を用いて distcc の設定から始め、異なるバージョンの gcc を切り替えて使う方法、そしてその応用として distcc を用いたクロスコンパイルの方法までを解説します。あなたも遊んでいるサーバを有効利用してみませんか? 分散コンパイル環境構築 今回 distcc の環境を構築するために用いるものは Gentoo Linux です。Gentoo Linux では Por

  • Cのコールバック関数をC++のメンバ関数にバインディングする方法 - kazuhoのメモ置き場

    たとえば libevent のような C 言語でかかれたイベント駆動型のライブラリを C++ から使っていると、C++ のメンバ関数をコールバックとしてセットできたらうれしいことが多いですよね。以下のようにすればできます。 たとえば、コールバック関数をセットする関数の型が、 void set_foo_callback(void (*)(void* cb_arg), void* cb_arg); なら、以下のようにクラスとメンバ関数を引数にとるテンプレート関数を定義し、 template <typename T, void (T::*FUNC)()> void to_foo_callback(void* cb_arg) { T* obj = reinterpret_cast<T*>(cb_arg); (obj->*FUNC)(); }以下のように受け渡せばいい。 class K { publ

    Cのコールバック関数をC++のメンバ関数にバインディングする方法 - kazuhoのメモ置き場
  • プログラミング/C,C++/2GBより大きなファイルの扱い - PukiWiki

    この文書について † この文書では,gcc を利用している場合に C,C++ において 2GB よりも大きなサイズのファイルにアクセスするための方法を説明しています. この文書を記述するために,以下の文書を参照しました. http://www.ece.utexas.edu/~luo/linux_lfs.html http://www.turbolinux.co.jp/world/library/features/SoftwareDesign/200401/AMD64/64bit-ch3a-2.html ↑ プログラミング/C,C++/2GBより大きなファイルの扱い † とりあえず訳しておきます. IA-32 アーキテクチャでは,メモリアドレス幅が 32 ビットであるため,Linux/x86 で扱えるファイルのサイズは 2GB に制限されていることが多いです.しかしながら,Large Fil

  • 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 の使い方 - まめめも
  • gccにおけるatomic操作命令の個別関数

     gccとVC x86/x64環境で開発する上で, gccとVCはどちらも非常に優れたC/C++コンパイラです. ただLinuxWindowsのどちらの環境でも動作するようなC/C++コードを書くためには, gccとVC, およびそれらが動作するOSの違いが問題になることがあります. ここではそれらの違いについてまとめていきたいと思います. なお説明を簡単にするためにマクロを多用していますが実際には可能なら別の手段をとるか, 名前がぶつからないような命名規則に則ったマクロ名をつけることをお薦めします. 対象 定義済みマクロ 有用なマクロ コンパイルオプション 演算子の代替表現の抑制 日語のコメント 型 pragma attributeとdeclspec ファイル入出力 テキストとバイナリ 巨大なファイル static変数の初期化 snprintf 例外ハンドラ intrinsic関数

  • GCCのプリプロセッサの動きをみて遊ぶ - big-eyed-hamster’s diary

    ruby-libvirtのソースコードを読んでいたら、何やら怪しげなマクロが。 67 #define generic_get(kind, v) \ 68 do { \ 69 vir##kind##Ptr ptr; \ 70 Data_Get_Struct(v, vir##kind, ptr); \ 71 if (!ptr) \ 72 rb_raise(rb_eArgError, #kind " has been freed"); \ 73 return ptr; \ 74 } while (0); 75 シャープだと!しかも2つだと!見たことないぞ! というわけで引数マクロについてちょっと実験してみました。 基的な引数付きマクロ まずは基的な引数マクロ。 1 #include <stdio.h> 2 3 #define test_puts(hoge) \ 4 do { \ 5 hoge

    GCCのプリプロセッサの動きをみて遊ぶ - big-eyed-hamster’s diary
  • GNU コンパイラ集(GCC) の使い方と移植について

    Node:Top, Next:G++ and GCC, Previous:(dir), Up:(dir) Introduction このマニュアルでは、GNU コンパイラの使い方、インストール方法、移植方法や、新しい機能や互換性の無い部分、それにバグレポートの方法などについて説明している。GNU CC のバージョン 2.95 に対応している。(日語版ドラフト-17 July 2001) G++ and GCC: C や C++ のプログラムがコンパイル可能Invoking GCC: gcc のコマンド行オプションInstallation: GCC のインストール方法C Extensions: C 言語の GNU の拡張C++ Extensions: C++ 言語の GNU の拡張Gcov: gcov: GCC のテストカバレージプログラムTrouble: GCC のインストールで問題が起

  • 【インフォシーク】Infoseek : 楽天が運営するポータルサイト

    日頃より楽天のサービスをご利用いただきましてありがとうございます。 サービスをご利用いただいておりますところ大変申し訳ございませんが、現在、緊急メンテナンスを行わせていただいております。 お客様には、緊急のメンテナンスにより、ご迷惑をおかけしており、誠に申し訳ございません。 メンテナンスが終了次第、サービスを復旧いたしますので、 今しばらくお待ちいただけますよう、お願い申し上げます。

  • 1