Releases: yunkya2/elf2x68k
Releases · yunkya2/elf2x68k
20260331
20260301
-specs=xc.specsなどでXCライブラリを使用するとスタックとヒープのサイズが正しく設定されない不具合を修正しました (#32) (Thanks to @kg68k)- C++のstd::filesystem::pathでパス名、ドライブ名が正しく扱えるようにしました (#30) (Thanks to @iwadon)
- libsocketでソケットの接続待ちや読み書きをノンブロッキングで行えるようにしました
- 詳細は README-socket.md の ノンブロッキングモードについて を参照してください
- 以下のPOSIX API対応を追加しました
- poll()
- getcwd()
- dup(), dup2()
- 詳細は README-libc.md の X68k 対応追加 API を参照してください
※ macOS 版の更新は brew upgrade yunkya2/tap/elf2x68k で行ってください。
20251124
pthread_create()でのスレッド生成時、pthread_attr_setname_np()で指定した名前と同名のスレッドが既に存在すると固まる不具合を修正しました。gethostbyname()やgetaddrinfo()でホスト名に"192.168.1.1"のようなIPアドレス形式の文字列を与えると、IPアドレスへの変換に失敗することがある不具合を修正しました。- コンパイルするプログラムに日本語シンボル名が含まれている場合に、*.Xファイルのシンボル情報にもシフトJISコードに変換して格納するようにしました。
- リンク時のコマンドラインに
-nostartfilesオプションを付けてC言語のスタートアップ処理をリンクしない場合でも、malloc()などによってヒープ領域を利用できるようにしました。- ヒープ領域のサイズは
_heap_size変数の値(デフォルトでは65536)に固定です。領域が足りなくなってもメモリブロックの拡張は行われず、ENOMEMエラーとなります。 - その他、オプション指定によるスタートアップ処理やヒープ、スタック領域の関係については、こちらのコメントを参考にしてください。
- ヒープ領域のサイズは
※ macOS 版の更新は brew upgrade yunkya2/tap/elf2x68k で行ってください。
20251106
- printf()等の書式文字列で、
"%lld"のような64bit値表示やC99で追加された"%zu"などに対応しました。 - リンク時に
".header"セクションの内容を実行ファイルの.textの先頭に配置するようにしました。- X68kのデバイスドライバは実行ファイルの先頭にデバイスヘッダというデータを置く必要がありますが、デバイスヘッダの構造体に
__attribute__((section(".header")))という属性を追加することで、リンク順に関係なく必ず先頭に配置されるようになります。
- X68kのデバイスドライバは実行ファイルの先頭にデバイスヘッダというデータを置く必要がありますが、デバイスヘッダの構造体に
- DOSコールライブラリ libx68kdos.a で、Human68k v3.xで番号が変わったDOSコールの呼び出し処理を改善しました。
- libpthread ライブラリに以下の変更を行いました。
- 独自API
pthread_attr_setname_np(),pthread_attr_getname_np()で生成するスレッドに名前を付けられるようにしました。 - スレッドのスーパバイザスタック領域を指定・取得する独自API
pthread_attr_setsystemstack()等の名称を変更しました。- 末尾に "_np" が追加されて
pthread_attr_setsystemstack_np()のようになります
- 末尾に "_np" が追加されて
- 独自API
- 環境変数
TZが設定されていない場合のデフォルトのタイムゾーンを JST-9 に変更しました。 - 縮小版Cライブラリの Newlib-nano を選択できるようにしました。
- printf() での浮動小数点出力機能を削除することなどでライブラリのサイズが削減されています。
- リンクの際のオプションで
-specs=nano.specsを追加すると使用されます。
※ macOS 版の更新は brew upgrade yunkya2/tap/elf2x68k で行ってください。
20250907
20250727
- gdbserver-x68k による libpthread を用いたマルチスレッドプログラムのデバッグに対応しました。
- libpthread でスレッドを削除する際にfree()で解放した後の領域をアクセスしている不具合を修正しました。
- libpthread API の呼び出し順によって内部状態の初期化が正しく行われないことがある不具合を修正しました。
※ macOS 版の更新は brew upgrade yunkya2/tap/elf2x68k で行ってください。
20250712
- 使用するソースコードを以下のバージョンに更新しました。
- binutils-2.44
- gcc-13.4.0
- newlib-4.5.0.20241231
- gdb-16.3
- m68k版gdbを追加しました(m68k-xelf-gdb)。
- _dos_open_pr()の引数が正しく渡されていなかった不具合を修正しました。
- elf2x68kでコンパイルした実行ファイルを環境変数エリアが確保されていない状態(CONFIG.SYSにENVSET=行がなく、PROGRAM=行でプログラムを起動した場合)で実行するとアドレスエラーが発生する不具合を修正しました。
- libx68kに
sleep(),usleep()を追加しました。 - 計測技研製TCP/IPドライバを用いたネットワーク処理を提供するソケットライブラリ libsocket を追加しました。
- バックグラウンドプロセス機能を用いたPOSIXスレッド機能を提供するPOSIXスレッドライブラリ libpthread を追加しました。
※ macOS 版の更新は brew upgrade yunkya2/tap/elf2x68k で行ってください。
elf2x68kにm68k版gdbが含まれるようになったため、m68k-gdb パッケージは不要になりました。インストールされている場合は更新前に brew uninstall m68k-gdb でアンインストールしてください。
20250410
write()での改行コードの変換時にバッファオーバーフローが発生する可能性がある不具合を修正しました。- libx68k のコンパイル時の最適化オプションを修正しました。
- x68k2elf.py で一部のオブジェクトファイルがELF形式に正しく変換されないことがある不具合を修正しました。
- x68k2elf.py で変換元ファイルの日本語シンボル名やアーカイブ内の日本語ファイル名を正しく扱えるようにしました (変換時にシフトJISからUTF-8に変換されます)。
- m68k-xelf-objdump コマンドによる逆アセンブル時にプログラム中のIOCSコールやDOSコール、FEファンクションコールをコメントとして表示するようにしました。
- コンパイル後のCプログラムをメモリブロックの空きがほとんどない状態で起動すると、スタックがメモリブロックの範囲外に設定されてしまう不具合を修正しました。
- macOS Sequoia (15.4) でのインストールに失敗する問題を修正しました。
- プログラムが利用するスタックサイズやヒープサイズ初期値を変更できるようにしました。詳細はドキュメントの「スタックサイズ、ヒープサイズの指定」を参照してください。
※ macOS 版の更新は brew upgrade yunkya2/tap/elf2x68k で行ってください。
20240929
- x68k2elf.py でX68k libcなど一部のライブラリのELF形式への変換に失敗する不具合を修正しました。
- x68k2elf.py で変換元のオブジェクトファイルの拡張アラインメント情報が変換後のELF形式に反映されない問題を修正しました。
- _dos_bus_err() の関数プロトタイプ宣言がx68k/dos.hになかったのを修正しました。
- Human68k v3.x でのDOSコール番号の変更に関して、Humanのバージョン番号を参照してDOSコール番号を使い分ける処理が_dos_rename() でのみ行われていなかったのを修正しました。
※ macOS 版の更新は brew upgrade yunkya2/tap/elf2x68k で行ってください。
20240716
- dirent.h のディレクトリ操作関連API (opendir(), readdir() 等) に対応しました。
- samples/ に置いていたサンプルコードを別リポジトリ elf2x68k-sample に分離しました。
- macOS向けのインストール手順を変更して、バイナリ配布の代わりにHomebrewのFormulaとして提供するようにしました。
brew install yunkya2/tap/elf2x68kでインストールされます- ソースコードからのビルドを行うため数10分程度かかります
- macOS向けにリモートデバッグをサポートするためのスクリプト
m68k-xelf-gdb,m68k-xelf-gdb-init,m68k-xelf-gdb-killを追加しました。