トップ 追記

毎日が反省会

rss
2007|04|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|

2010-02-04

_ [Debian] binutils クロスコンパイル on amd64

先月の中頃までDebian/amd64でbinutilsのクロスコンパイルができなったのですが、zumbi がパッチを教えてくれたので、コンパイルできるようになりました。sh4 のクロスコンパイラはいつもの場所に置いておきます。


2010-02-03

_ [Debian][ghc6] ghc6 が動いた

ghc6 が動きました。stage2 & helloworld だけですが。

今、stage2 を使って ghc6 パッケージをビルド中。

_ [子供]恵方巻

嫁が玄関にある鬼のお面をかぶってリビングに入ってこい!というのでお面をかぶってリビングに入ったのはいいが、子供にキャッキャッと笑われる罠。思っていた反応と違ったのでガッカリですよ。


2010-02-01

_ [Linux] あるイーサネットデバイスのリンクアップを知るには

たまにはLinuxカーネルネタを書いてみるテスト。
Linux であるイーサネットデバイスのリンクアップを知るにはsysfsを見ればよいです。
$ cat /sys/class/net/eth0/carrier
1
では、カーネル空間からチェックするにはどうしたらいいのか。 __dev_get_by_index で指定したネットワークデバイス番号のstruct net_deviceを取得し、netif_carrier_ok を使って、状態をチェックします。
キモはグローバル変数のinit_netを使うことですかね。あと、デバイス番号は見つかったネットワークデバイス番号なので、大抵の環境では lo が取れます。eth0 は2を指定します。ちゃんとしたい場合には name変数でデバイス名をチェックしましょう。
struct net_device *dev;
dev = __dev_get_by_index(&init_net, 1);
if (dev)
  printk("%s: %d\n", dev->name, netif_carrier_ok(dev));

2010-01-25

_ [Debian] DELAYED Upload したパッケージを削除する

Debian では NMU などで DELAYED Upload をする場合があるのですが、アップロードしたものを削除したいという場合があります。このような場合には 以下のようなcommandsファイルを作成して、gpg でクリアサインした後に dcut の -U オプションでcommandsファイルを指定してアップロードします。
$ cat hoge.commands
Uploader: Nobuhiro Iwamatsu 
Commands:
  cancel hoge-0.0.0-1_i386.changes
詳細は UploadQueue/READMEに書いてあります。 ちなみにDELAYED Uploadされたパッケージはhttp://ftp-master.debian.org/deferred/にあります。

2010-01-19

_ UQ WiMax 端末を借りてみる

今週末に行われる Debian BSP のために Try WiMaxサービスを利用してみることにした。

ビックカメラ等の店頭でも申し込みができるとのこと。ちょうど立川に用事があったのでビックカメラ立川店に行って申し込みをした。

後日郵送なのかな?と思ったらそのまま実機を渡された。ちょっとびっくり。あと、使い方とかも聞かれなかった。そういうもんなのかな。今住んでいるところではWiMaxサポートエリアではない(笑のでまだどんなもんなのか試してない。あと、借りている端末はまだLinuxのドライバがないようだ。


2010-01-15

_ [Debian][SuperH] undefined reference to `__set_fpscr(unsigned long)'

今日のハメ。
テストソースコード:
$ cat f.c
#include 
int main(void)
{
        _FPU_SETCW(0);
        return 0;
}
gcc の場合。これは良いパターン。
$ gcc -o f f.c -Wl,-t
/usr/bin/ld: mode shlelf_linux
/usr/lib/gcc/sh4-linux-gnu/4.4.2/../../../crt1.o
/usr/lib/gcc/sh4-linux-gnu/4.4.2/../../../crti.o
/usr/lib/gcc/sh4-linux-gnu/4.4.2/crtbegin.o
/tmp/ccQQKhOh.o
(/usr/lib/gcc/sh4-linux-gnu/4.4.2/libgcc.a)_set_fpscr.o
libgcc_s.so.1 (/usr/lib/gcc/sh4-linux-gnu/4.4.2/libgcc_s.so.1)
/lib/libc.so.6
(/usr/lib/libc_nonshared.a)elf-init.oS
/lib/ld-linux.so.2
libgcc_s.so.1 (/usr/lib/gcc/sh4-linux-gnu/4.4.2/libgcc_s.so.1)
/usr/lib/gcc/sh4-linux-gnu/4.4.2/crtend.o
/usr/lib/gcc/sh4-linux-gnu/4.4.2/../../../crtn.o
g++ の場合。
g++ -o f f.c -Wl,-t
/usr/bin/ld: mode shlelf_linux
/usr/lib/gcc/sh4-linux-gnu/4.4.2/../../../crt1.o
/usr/lib/gcc/sh4-linux-gnu/4.4.2/../../../crti.o
/usr/lib/gcc/sh4-linux-gnu/4.4.2/crtbegin.o
/tmp/ccZX5ufD.o
-lstdc++ (/usr/lib/gcc/sh4-linux-gnu/4.4.2/libstdc++.so)
-lm (/usr/lib/gcc/sh4-linux-gnu/4.4.2/../../../libm.so)
libgcc_s.so.1 (/usr/lib/gcc/sh4-linux-gnu/4.4.2/libgcc_s.so.1)
/lib/libc.so.6
(/usr/lib/libc_nonshared.a)elf-init.oS
/lib/ld-linux.so.2
libgcc_s.so.1 (/usr/lib/gcc/sh4-linux-gnu/4.4.2/libgcc_s.so.1)
/usr/lib/gcc/sh4-linux-gnu/4.4.2/crtend.o
/usr/lib/gcc/sh4-linux-gnu/4.4.2/../../../crtn.o
/tmp/ccZX5ufD.o: In function `main':
f.c:(.text+0x24): undefined reference to `__set_fpscr(unsigned long)'
/usr/bin/ld: link errors found, deleting executable `f'
collect2: ld returned 1 exit status
g++ の場合はlibgcc.a を見ないで、libgcc_s.so.1を見に行っている。うーむ。
/usr/include/fpu_control.h はこんなん。
[....]
/* Macros for accessing the hardware control word.  */
#define _FPU_GETCW(cw) __asm__ ("sts fpscr,%0" : "=r" (cw))
 
#if defined __GNUC__
extern void __set_fpscr(unsigned long);
#define _FPU_SETCW(cw) __set_fpscr ((cw))
#else
#define _FPU_SETCW(cw) __asm__ ("lds %0,fpscr" : : "r" (cw))
#endif
[....]
んで、悩む。C++ のコードからCの関数を呼んでいることに気がつく。 すぐに気がつけよ。<俺
--- a/sysdeps/sh/sh4/fpu/fpu_control.h  2006-08-17 10:18:26.000000000 +0900
+++ b/sysdeps/sh/sh4/fpu/fpu_control.h  2010-01-15 15:31:04.000000000 +0900
@@ -45,6 +45,14 @@
 #define _FPU_GETCW(cw) __asm__ ("sts fpscr,%0" : "=r" (cw))
 
 #if defined __GNUC__
+/* Allow the use in C++ code.  */
+#ifdef __cplusplus
+extern "C" {
+#endif
+extern void __set_fpscr(unsigned long);
+#ifdef __cplusplus
+}
+#endif  /* C++ */
 #define _FPU_SETCW(cw) __set_fpscr ((cw))
 #else
 #define _FPU_SETCW(cw) __asm__ ("lds %0,fpscr" : : "r" (cw))
こんな感じで。glibcで提供されるヘッダファイル内でextern "C"を使うのはどうかと思ったけど、regex.h でもやっているからいいよね。

2010-01-14

_ バーガーキング

今年初のバーガーキング。

バーボンワッパーなんてあるのね。


2010-01-13

_ [Debian] ITA bluez, bluez-hcidump and obexd

filippoがOしちゃったので、ITAした。ついでに alioth のアカウントの更新依頼もした。

_ [Debian] ghc6 6.12.1-1

ghc6 6.12.1 が experimental に入った。これで sh4 にもポーティングしやすくなるはず。たぶん。

_ [Debian][SuperH] openjdk

dokoが交渉してくれて、 1.7 ブランチに突っ込んでくれたようだ。


2010-01-12

_ [子供] 予防接種

今日は予防接種の日。うちの子は注射には強いみたい。全然泣かないらしい。しかし鼻水を吸い取られるのは嫌いなようで、いつも暴れて泣く。

鼻がすっきりして気持ちいいのにね。

本日のツッコミ(全2件) [ツッコミを入れる]

_ aya [これから泣くよ!お医者さんか聴診器見ただけで泣くよ〜щ( ̄∀ ̄)ш ヶヶヶ. 後、予防接種受けるならヒブワクチン..]

_ iwamatsu [ビブワクチン受けたよ。3回。あと1回あるみたい。]


2010-01-11

_ ニトリ

久々に二トリに行った。二トリはよいよいよいよい。

新しいシーツを買った。二トリの近くにびっくりドンキーあって、いつか帰れま10をやりたいと思った。