[H8-ML(934)] Re: GCC のコンパイラに関しての質問
From: Junsuke Kunugiza <jk@xxxxxxx>
Date: 2001年01月17日(水)11時42分46秒
くぬぎざです。

On Wed, 17 Jan 2001 10:51:14 +0900
"mami" <mami.kimura@xxxxxxxxxxx> wrote:

> newlib の exit() をリンクするとダメであれば、リンクする前に_exit() をコール
> するものに置き換える必要があると思うのですが、
> exit()はどこにあるのでしょうか?

exit() は、stdlib の中にあります。exit() は、atexit() で
登録された関数があればそれらを呼び、最後には _exit() を
呼んで終わります。つまり、atexit() とかを使っていないので
あれば、_exit() へ行けばいいことなので、

#define exit _exit

なんて方法で強引にやっちゃっても、実質的にはOKかと。

また、ごちゃごちゃ推測しているよりも

h8300-hms-objdump -d なんたら.coff 

で逆アセンブラをかけてみて、どんなコードがやたらとサイズを
大きくしているのか調べておくのも良いでしょう。

>  一応、RAM領域を4kbyte以内に収めているつもりの小さなプログラムでさえ
>  コンパイルをすると、どうしてもプログラムサイズが4Kbyte以内に収まらないので
> す。

うーん、わたしはあまりそれで困ったことないんだけどな...

どういうプログラムなのか見ていないので何とも言えませんが、
中身をきちんと作ってきちんとリンクすれば、不必要なコードは
でてきません。本当はいらないものでも、「いる可能性のある」
コードがあれば、必要だと判断するのがリンカーです。それを
バグだと言っちゃあいけません(^^;

無くても困らないライブラリはリンクしないとか、ちょっと面倒
でもデバッグ中は、不必要なコードに #if 0 をかましておく、
というようなこともときどきやります。


椚座 淳介 (Junsuke Kunugiza)

スレッド概略
[924(R)](起点)
 └[931(U)]
   └[表示中]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]