タグ

gccに関するmapk0yのブックマーク (18)

  • C言語をマスターしたい人はGCCのバージョン14を使いましょう - pyopyopyo - Linuxとかプログラミングの覚え書き -

    C言語(C++を含む)を習得したい人,ポインタを勉強したい人はgcc-14を使いましょう.難しいところは gcc-14 が丁寧に解説してくれます C言語の難しいところ 例を示します.C言語で記述された,たった6行のソースコードです int main() { int buf[10]; buf[10] = 0; return 0; } このソースコードには問題があります.初見でわかるでしょうか? : : : 問題があるのは buf[10]=0 の部分です.C言語でやりがちなミスですが,これがバグやセキュリティホールの原因になります. C言語が難しい理由は二つあります.この手の問題を見逃しやすい点と,この手の問題を理解することが難しい点の二つです gcc 14 に解説してもらいましょう 上記の6行のソースコードをgcc14を使ってコンパイルしてみます ソースコードのファイル名は test.c と

    C言語をマスターしたい人はGCCのバージョン14を使いましょう - pyopyopyo - Linuxとかプログラミングの覚え書き -
    mapk0y
    mapk0y 2024/06/12
  • AMDが未発表のZen 5アーキテクチャ向けコンパイル機能をGCCに追加

    オープンソースのコンパイラ「GCC」にAMDが開発中のCPUアーキテクチャ「Zen 5」に関連すると思われるパッチが導入されました。 AMD Zen 5 "Znver5" CPU Enablement Merged For GCC 14 - Phoronix https://www.phoronix.com/news/AMD-Zen-5-Znver5-Merged-GCC14 AMD adds support for Zen 5 to Linux GCC compiler | Tom's Hardware https://www.tomshardware.com/pc-components/cpus/amd-adds-support-for-zen-5-to-linux-gcc-compiler AMDは、2024年2月に「znver5」と呼ばれるプロセッサを対象にしたパッチを提出していま

    AMDが未発表のZen 5アーキテクチャ向けコンパイル機能をGCCに追加
    mapk0y
    mapk0y 2024/03/21
  • gccの最適化指示-Ofastは危険 - Qiita

    はじめに gccの最適化指示である-Ofastをお気軽に使ってる記事を見掛けたので注意喚起的なやつです。 -Ofastとは何ぞや gccのドキュメントから引用 https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html#index-Ofast -Ofast Disregard strict standards compliance. -Ofast enables all -O3 optimizations. It also enables optimizations that are not valid for all standard-compliant programs. It turns on -ffast-math, -fallow-store-data-races and the Fortran-specific -fstac

    gccの最適化指示-Ofastは危険 - Qiita
    mapk0y
    mapk0y 2023/02/06
  • GCC undefined behaviors are getting wild

    Happy with my recent breakthrough in understanding C integer divisions after weeks of struggle, I was minding my own business having fun writing integer arithmetic code. Life was good, when suddenly… zsh: segmentation fault (core dumped). That code wasn't messing with memory much so it was more likely to be a side effect of an arithmetic overflow or something. Using -fsanitize=undefined quickly id

    mapk0y
    mapk0y 2022/11/29
  • Big Sky :: gcc は副作用のある関数呼び出しを含む式評価順序を最適化する。

    2013/04/30 タイトル修正 昨日、とある場所でこんな話で盛り上がった。 逆ポーランド計算機を作ろうと思ったんだけど、どうも結果が期待通りにならない。 ソースコードを見せて貰うと以下の様なコードだった。 #include<stdio.h> #include<stdlib.h> #define MAX_SIZE 100 int stack[MAX_SIZE]; int stack_pointer = 0; void push(int data){ stack[stack_pointer++] = data; } int pop(){ return stack[--stack_pointer]; } int pop1(int n){ printf("pop %d\n", n); return stack[--stack_pointer]; } int main(void){ char s

    Big Sky :: gcc は副作用のある関数呼び出しを含む式評価順序を最適化する。
    mapk0y
    mapk0y 2021/12/05
  • 最近のC言語と、次期C標準(C23)

    C言語といえば古い言語なイメージですが、その重要性はまだまだ落ちていません(多分)。重要な言語だからこそ、今もひっそりと進化を続けています。この記事では、そんなC言語の最近の動向を紹介します。 まずはC言語の前世紀の標準であるC99、現行の標準であるC11/C17を振り返り、その後に未来の標準であるC23に触れます。 C99 C99では色々追加されました。ここでは一部のみの紹介とします。 _Bool _Complex C++の std::complex とメモリ上での互換性がある(C++11以降)。 可変長配列(VLA) 可変長引数マクロ 浮動小数点数の強化 十六進表記 筆者による関連記事:浮動小数点数の16進表記 fma 筆者による関連記事:FMA (fused multiply-add) の話 #pragma STDC FENV_ACCESS, #pragma STDC CX_LIMI

    最近のC言語と、次期C標準(C23)
  • ネイティブコンパイルEmacsの登場

    時間の2021年4月26日午前3時6分、Emacsのmasterブランチにfeature/native-compブランチがマージされました(コミット:Merge branch ‘feature/native-comp’ into into trunk)。これにより、HEADのEmacsをビルドすると、Native compilation機能を兼ね備えたネイティブコンパイルEmacs、通称Gcc Emacsが使えるようになりました。 ネイティブコンパイルEmacsの機能 # ネイティブコンパイルEmacs(以下、Gcc Emacsと呼びます)は、Andrea Corallo、Luca Nassi、Nicola Mancaの3名によるBringing GNU Emacs to Native Code という論文で詳細が説明されています。 簡単に説明すると、これまでのEmacsは、Elisp

    ネイティブコンパイルEmacsの登場
  • 「GCC 7.3」リリース、CPUの脆弱性「Spectre」への対応も含む | OSDN Magazine

    GNU Compiler Collection(GCC)開発チームは1月25日、「GCC 7.3」を公開した。CPUの脆弱性「Spectre」への対応などが含まれている。 GNU Compiler Collection(GCC)はGNU Projectが開発するコンパイラ集で、C/C++/Objective-C、Fortran、Java、Ada、Goなどさまざまな言語やライブラリに対応する。 GCC 7.3は2017年5月に登場したバージョン7系の最新安定版。8月にリリースしたバージョン7.2から、99件以上のバグを修正したという。この中には、年初に大きく報じられたCPUの脆弱性問題「Spectre」に関連するx86およびPowerターゲット向けのセキュリティ修正(CVE 2017-5715)も含まれている。 また、Spactre脆弱性を緩和するGoogleのRetpolineパッチのバッ

    「GCC 7.3」リリース、CPUの脆弱性「Spectre」への対応も含む | OSDN Magazine
    mapk0y
    mapk0y 2018/01/27
  • gccを使って、制御フローグラフを作成

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

    gccを使って、制御フローグラフを作成
    mapk0y
    mapk0y 2017/12/15
  • SEGV探偵が往く - なるせにっき

    人は誰しも108つの夢を持つと言いますが、読者の皆さんにも探偵を夢見た人は多いことでしょう。実際問題として探偵業をやろうと思ったら地道な聞き込み&張り込みの日々でしょうし、逆に派手な探偵業は陰謀&殺人で恐ろしい。わたしも自分の命は大事ですからどうするか。そう、探偵ごっこをするわけですね。 というわけでSEGV探偵です。死ぬのはプロセスなので安心。Rubyを使っていればSEGVなんて見慣れたものですが、いざ捜査しようと思うと意外とその辺には転がっていないもの。(むかしはつかみ取り出来るくらいいたそうですよ)とはいえ今でもいわゆる「バグ鉱脈」みたいなものはありまして、その一つが「最新のコンパイラでビルドしてみる」です。 今日はGCCの開発版であるGCC8を試してみましょう。FreeBSDだとsudo pkg install lang/gcc8-develで簡単に入れられるのですが、他の環境だと

    SEGV探偵が往く - なるせにっき
    mapk0y
    mapk0y 2017/09/03
    Reverse Debug 初めて知った。便利そう
  • GCCのSVN trunkをビルドする方法

    GCC 7がC++17のコア言語機能を完全に実装したので、ようやく参考書のサンプルコードが検証できるようになった。 C++ Standards Support in GCC - GNU Project - Free Software Foundation (FSF) しかし、GCC 7はまだリリースされていない。少し試すだけならばwandboxが使えるが、格的に使うにはローカルにほしい。 [Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ そこで、GCCを自前でビルドすることにした。ビルドは以下の手順に従う。 Installing GCC - GNU Project - Free Software Foundation (FSF) GCCのコンパイルに必要なソフトウェア Prerequisites for GCC - GNU Project - Free Software Foundat

    mapk0y
    mapk0y 2017/01/19
  • お手軽に使える高速なSSE4.2専用文字検索ライブラリ - Cybozu Inside Out | サイボウズエンジニアのブログ

    サイボウズ・ラボの光成です。 今回はC/C++用文字検索ライブラリmie_stringを紹介します。 mie_stringはテキストの中から複数文字のいずれかが存在する場所を高速に検索する関数を提供します。 文ではその使い方と性能を紹介します。また後半ではSIMD命令を使うときに悩ましい端数処理について詳解します。 準備 mie_stringではCのintrinsic関数(SSE4.2)を使ったものとアセンブリ言語で書いたものの二つを用意しました。 intrinsic関数を使う場合はMIE_STRING_INLINEを定義してからmie_string.hをincludeしてください。 これ以外のファイルは不要です。C/C++のどちらからも使えます。 includeするだけでつかえるので簡単ですね。 なお、コンパイルオプションにはgcc/clangなら-msse42や-mavx、Visua

    お手軽に使える高速なSSE4.2専用文字検索ライブラリ - Cybozu Inside Out | サイボウズエンジニアのブログ
  • GCC x86インラインアセンブラ

    ○GCC x86インラインアセンブラ asm ("命令 source,dest"); ■グローバル変数 --------------------------------------------------------- そのまま使えます #include <stdio.h> int i; int j; main(){ i=10; asm ("movl i,%eax"); asm ("add $10,%eax");  //数値は先頭に$マークを付ける asm ("movl %eax,j"); printf("%d %d\n",i,j); } ▼上のプログラムの書き方を変えたもの #include <stdio.h> int i; int j; main(){ i=10; asm (  "movl i,%eax  \n\t" "add $10,%eax  \n\t" "movl %eax,j"

  • 普通のやつらの下を行け: C でバックトレース表示 - bkブログ

    普通のやつらの下を行け: C でバックトレース表示 普通のやつらの下を行けの第2回として、今回は glibc の関数を使って C でバックトレース (スタックトレース) の表示を行ってみます。 バックトレースとは バックトレースとは、大ざっぱに言うと、現在の関数に至るまでの道筋です。たとえば、次の Ruby プログラムを実行すると、 1 / 0 の行で例外が発生して、バックトレースの表示とともにプログラムは異常終了します。 def foo 1 / 0 end def main foo end main この例では main から foo を呼び foo の中の 1 / 0 の部分で例外が発生しています。 % ruby divide-by-zero.rb divide-by-zero.rb:2:in `/': divided by 0 (ZeroDivisionError) from div

    mapk0y
    mapk0y 2015/07/11
    “LD_PRELOAD=/lib/libSegFault.so SEGFAULT_SIGNALS=all をセットした上で実行する”
  • DebugFission - GCC Wiki

    DWARF Extensions for Separate Debug Information Files Updated January 24, 2013 The "Fission" project was started in response to the problems caused by huge amounts of debug information in large applications. By splitting the debug information into two parts at compile time -- one part that remains in the .o file and another part that is written to a parallel .dwo ("DWARF object") file -- we can re

  • GitHub - lpsantil/rt0: A minimal C runtime for Linux i386 & x86_64

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - lpsantil/rt0: A minimal C runtime for Linux i386 & x86_64
    mapk0y
    mapk0y 2015/02/01
  • 革命の日々! a.out からコンパイラバージョンを取得する方法

    忘れないうちにメモ Linuxで普通に実行ファイルつくると.commentセクションとデバッグインフォメーションの 二箇所にコンパイラのバージョンが入ってる。これはobjdumpやreadelfで観測できる。 なぜこんなテクニックを知る必要があるかというとバグ報告で嘘のコンパイラバージョンを 報告してくる輩はけしてレアではないからである 1つめ。.comment セクションを objdumpで表示 % objdump -s -j .comment a.out a.out: file format elf64-x86-64 Contents of section .comment: 0000 4743433a 2028474e 55292034 2e342e36 GCC: (GNU) 4.4.6 0010 20323031 32303330 35202852 65642048 2012030

    革命の日々! a.out からコンパイラバージョンを取得する方法
  • GCCの最適化オプション

    郷に入っては郷に従えというが、GNU/Linuxのプログラミング環境にはまだまだ慣れない。とりあえず今のC++執筆作業には、最新のClangでコンパイルできればそれで用が足りるので、Clangのビルドが楽なGNU/Linux環境は悪くない。欲を言えばlibc++もまともに動くようになってほしい。Ubuntu 12.10でlibsupc++を使ってlibc++をビルドしてみたところ、RTTI周りのABIに問題があるらしく、virtual関数呼び出しすらできなかった。 しかし、GNU/Linuxにおけるプログラミングはどうにも学ぶことが多すぎる。GNUのgdbの使い方もそろそろ覚えたいし、Autotoolsの使い方も覚えたいものだ。幸い、GNU/Linuxで一般的なテキストエディターであるVimは、特に何も学ばなくても使えるので楽だ。たかがテキスト編集作業に、多数のキーボードショートカットを

  • 1