トップ «前の日(09-14) 最新 次の日(09-16)» 追記

Orz日記 by Akio Morita

ToDo:

  • 15 SAD Fit[]回りの障害事例の解析
  • 10 smart pointer版PEGクラスの再実装(Left Recursionまわり)
2006|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|06|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|07|08|09|10|11|12|
2013|01|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|06|07|08|10|12|
2016|01|02|03|05|06|08|10|11|
2017|01|02|03|04|05|06|07|09|10|11|12|
2018|01|02|03|04|06|07|08|09|10|11|12|
2019|01|03|04|05|07|08|09|10|11|12|
2020|01|02|03|04|05|06|07|08|09|10|11|12|
2021|01|02|03|04|05|06|07|08|09|10|11|12|
2022|01|02|03|04|05|06|07|08|09|10|11|12|
2023|01|02|03|04|05|06|07|08|09|10|11|12|
2024|01|02|03|04|05|06|07|08|09|10|11|

2008-09-15

_ [LHC]運休中 Orz

冷凍系の作業で水曜日まで運休中

_ [SAD]newlibだめだめ Orz

Cygwinのエラーの件だが、 GCCのソースを読み進めて行くと、-std=オプションを使って ISO Cを指定したり(例えば-std=c99)、-ansiオプションが 設定された場合、cppにてマクロ__STRICT_ANSI__が 自動的に定義される(参照: gcc/c-cppbuiltin.c)。

ここまでは問題無いのですが、Cygwinの newlib付属のヘッダー群は、 __STRICT_ANSI__定義時にそれなりの数の関数の定義が無効になる と言う動作をしています。

FreeBSDのヘッダー(newlibの元ネタは BSD libc)を覗いてみると /usr/include/sys/cdefs.h当たりで !defined(__STRICT_ANSI__) || __STDC_VERSION__ >= 199901 といった使い方をしています。 意味的には、__STDC_VERSION__199901未満 (つまり、ISO C99以前)かつ、 __STRICT_ANSI__が定義されているときに、 以降のヘッダー宣言が無効になるというものです。

__STRICT_ANSI__定義時は、厳格なANSI規格に適合しない コードを除外しているわけだが、ISO C99な関数の宣言まで無効になっている ということは、newlibヘッダーは最新の規格に追従出来てないということ。

と言う訳で、CygwinでコンパイルできないのはSAD側のソースの問題ではなく Cygwinが標準規格に追従出来ていないのが主原因と言える。


2010-09-15

_ [SAD]テスト・テスト・テスト

表題のとおり、環境毎の構築試験と修正を実施

以下の環境は動作確認が取れました

  • 巫女 GNYO/Linux 4.2
  • NetBSD/amd64 5.0.2
  • DragonFly BSD/i386 2.6.3

未テストですが、NetBSD/i386 5.0.2も問題なく動くと思われます。

OpenBSDに関しては、ports/lang/gccが GCC 4.2.4なのでテストしていません (少なくとも GCC 4.3.x以降でないと amorita branchは動かない)

DragonFly BSDでも使っている NetBSD pkgsrcでの問題点を 以下にまとめておきます。

  • DragonFly BSD/x86_64では pkgsrc/lang/gcc44はコンパイル不能
  • DragonFly BSD/i386用の 2010Q2 gcc44 binary packageがバギー
    • -fPICが動かない(-fpicは動くし、ccなら-fPICが動く)
    • libgfortran.so.3にdynamic linkされているlibgcc_s.so.1への runtime library path情報が欠落しており ld-elf.so.1が runtime linkに失敗する
    • libgfortran.so.3が、libmで未実装のscalbnl関数シンボルを参照している
  • NetBSD/amd64の 2010Q2 gcc44 binary packageがバギー
    • gfortranが、libmで未実装のhypotl関数シンボルを参照するコードを生成する

少なくとも試した範囲では、ISO C99実装はFreeBSD/Linuxが 一番進んでいるようです。

ISO C99の未実装について

  • NetBSD 5.0.2
    • ISO C99 double precision math function fmin/fmaxが未実装
    • ISO C99 long double precision math function hypotlが未実装
  • DragonFly BSD 2.6.3
    • ISO C99 long double precision math function scalbnlが未実装

カテゴリー: Admin | Emacs | EPICS | Fortran | FreeBSD | GCC | hgsubversion | IPv6 | KEKB | LHC | Lisp | LLVM | MADX | Ryzen | SAD | samba | tDiary | unix | WWW | YaSAI | お仕事 | イベント | 出張 | 宴会 | 数学 | 艦これ | 買いもの | 追記 | 雑記