address sanitizer
clangのASanはdlopen時にRTLD_DEEPBIND指定すると駄目らしい. 昔はまったのはこれかなあ(当時は警告も出ずに落ちていた). gccのASanは動いてる模様. ちなみにclangのメッセージにtypoが(incompatibe→incompatible).
shared library with RTLD_DEEPBIND flag which is incompatibe with sanitizer runtime
address sanitizer
clangのASanはdlopen時にRTLD_DEEPBIND指定すると駄目らしい. 昔はまったのはこれかなあ(当時は警告も出ずに落ちていた). gccのASanは動いてる模様. ちなみにclangのメッセージにtypoが(incompatibe→incompatible).
shared library with RTLD_DEEPBIND flag which is incompatibe with sanitizer runtime
ゆるバグ開催
結局28人参加でLTも4名。楽しんでもらえたようでよかった. 調子に乗ってゆるバグ2も.
大学のゼミ
とある大学のゼミで私の暗号の本を使ってくれてるらしい. ありがたい.
回数券
当分使えないので払い戻ししてもらった. メトロのはそこまでいくのが面倒なので手元にあるまま.
Travis-cis on Linuxでだけ落ちるバグ
Xgoでもbuild errorになるという報告. 試そうとしたけどXgo自体を動かせなかった.
ゆるバグ
フル在宅勤務になってもう2カ月になるのでちょっと雑談したくなった. ゆるバグをしてみることにした.
wasm for clang
wasm-ldに渡すスタックサイズのオプションは--stack-size=ではなく-z --stack-size=だった. clangでまとめて複数ファイルをbuildしたものは落ちなくなった. しかしclangでobjファイルを作り、wasm-ldでlinkしたものは落ちる. なんでかなあ.
とりあえずベンチマーク.
emscripten | clang | |
---|---|---|
pure C++ | 4.465 | 4.924 |
with llvm bitcode | 4.617 | 4.887 |
なんとemscripten + pure C++が一番速いという結果に. 同じ-O3オプションなのになぜだろう. もっといろいろリンカオプション試さないといけないのか. でも疲れた. emscriptenでCライブラリなしバージョンを作る方法を調べる方がよいか.
wasm for clang
emscriptenとclangの違い. exportされる関数にアンダースコアがつくかつかないか. WebAssembly.instantiateされたinstance.exportsにメンバーはふやせない. HEAP8やHEAP32はexportsに追加する. clangは__memory_baseや__stack_pointerはみてくれない???
blsInitはできるようになったけどスタックが約65KBでGLVメソッドが動かない. それ以外は大丈夫な模様. あと一息か.
wasm for clang
malloc/freeをstackのalloca/releaseに置き換える準備としてmallocとfreeが正しく入れ子になってるか確認する.
一カ所ミスっていたので修正.
やっぱり目視じゃだめだな.
その他いろいろ.
シンボルなどをみるにはllvm-objdump -full-contents -section-headers
llvm-8から--export-dynamicをつけないとexportされない.
clang vs gcc
mclが何故かgccでbuildするとclangより15%ほど遅くて何が悪いのかよく分からなかったのだけどずっと放置していた. ちゃんと調べようとJITプロファイルをとる. asm化されているのは差がない(当たり前)なかでsqrFp4と関数だけ結構違いがあった.
asmコードを見比べるとgccはfs:40にアクセスしにいってる. スタックオーバーフロー検知が有効になっていた. -fno-stack-protectorで無効化する. しかし1%ほどしか速くならず.
もう一度asmコードをよく読むと不要なはずの配列の初期化が走ってる模様. デフォルトcstrは空のはずなんだけどと自分のコードを見直すと、FpDblクラスだけ配列の初期化が入っていた.
FpDblT() : v_() { }
うっかりいれちゃっていた模様. 削除するとgcc-7.5で13%高速化. おおこいつのせいだったのか. それでもclang-8より4%ほど遅いけど気がすっきりした. でも配列の初期化で1割変わるというのは(clangは速いだけに)何か変なことしてるのかな.
clangはxmmレジスタ使ってstackをクリアしてたけどgccはrep stosqを使ってたからその差か. 小さい配列なので(高速化されてる)rep stosbだと互角だったかもしれない.
clangでwasm
昔触ったときは中途半端だったけど, 最近はだいぶよくなっているようだ. emscriptenからclangに移行できるか試してみる.
楕円曲線演算
昔からのec.hppと新しいmapto関数で重複コードがあったのでがんばってリファクタリング. 微妙に高速化も.
私の知らないところで諮問委員会の資料の数値が書き換えられていたのです. (snip) なぜそんな嘘が出回っているのだろうと考えた時に, 背後にどういう人がこういう仕掛けをしているか, 罠のようなものまで見えてきたのです. そこで, 自分で打ち消す発信を始めました.
空気を吸うように嘘をつく政府をまわりが必死に取り繕っていたけど, しがらみのない人はさくっと反論するということだろうな.
私も含めて, 専門家はほぼみんな無報酬でこの仕事をしています. 謝金を受け取れるのかもしれませんが, 専門家として政府や国からの独立性を保つ意味もあります.
(西浦さんがどうこうというのではなく)専門家に仕事をしてもらっているのだから国は正しく対価を払わなければならない. そして, お金をもらったから独立性が保たれない, 国の思惑に従わなければならないというおかしな風潮はなくさなければならない.
マクロ
#define AAA aaa #if AAA == aaa void foo() {} #endif #undef AAA #define AAA bbb #if AAA == aaa void foo() {} #endif
二つ目のifでわざわざAAAをundefしてbbbにしてるのに中に入ってfoo()が二重定義になってしまう. なんでかなとしばらく悩んだけどaaaもbbbも定義されていないのでどちらも0だから等号成立するのであった. マクロ難しい.
MS-Teams
Zoomの脆弱性が話題で少しTeamsを使ってみる. uservoiceに改良点のアイデアを提案.
本屋休館
図書館も休館. 予約資料の受け取りぐらいなら継続できないかなと思うけれども残念だが仕方がない.
モバイルディスプレイ
どうも不安定で時々画面がくずれたり, 消えたりする. ノートPCからtype Cでの給電でなく, ACアダプタに直接つないだら安定した. 電源不足だったか.
TypeScript
勉強始めたけど, 最初の環境構築がめんどいな.
IEICEの氏名和文検索
全文一致で「姓名」, 「姓 名」(半角スペース),「姓 名」(全角スペース)でヒットせず, 部分一致で「姓名」もヒットしないのなんとかならんのか. 正解は「姓 名」か「姓 名」で部分一致を選択. ここって電子情報通信学会だよね.
「全文一致の場合は, 半角と全角の空白は区別されません」は区別せずヒットしないという意味なのか.
multi aggregate signature
ハッシュ関数を適当に決めて実装した.
会社でよく使うマシンがAVX-512対応になった.
マスク2枚
冗談は内輪だけにしてほしい.