Skip to content

Releases: yunkya2/elf2x68k

20260331

31 Mar 14:09

Choose a tag to compare

  • 非ロングワード境界かつ64KB以上の領域をmemcpy()で転送すると正常に転送されない不具合を修正しました (#34) (Thanks to @tantanGH)
  • dup()で標準入出力のファイルディスクリプタを複製すると動作しない不具合を修正しました (#33) (Thanks to @68fpjc)

※ macOS 版の更新は brew upgrade yunkya2/tap/elf2x68k で行ってください。

20260301

01 Mar 06:43

Choose a tag to compare

  • -specs=xc.specsなどでXCライブラリを使用するとスタックとヒープのサイズが正しく設定されない不具合を修正しました (#32) (Thanks to @kg68k)
  • C++のstd::filesystem::pathでパス名、ドライブ名が正しく扱えるようにしました (#30) (Thanks to @iwadon)
  • libsocketでソケットの接続待ちや読み書きをノンブロッキングで行えるようにしました
  • 以下のPOSIX API対応を追加しました
    • poll()
    • getcwd()
    • dup(), dup2()
    • 詳細は README-libc.md の X68k 対応追加 API を参照してください

※ macOS 版の更新は brew upgrade yunkya2/tap/elf2x68k で行ってください。

20251124

24 Nov 06:40

Choose a tag to compare

  • 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

06 Nov 14:49

Choose a tag to compare

  • printf()等の書式文字列で、"%lld" のような64bit値表示やC99で追加された "%zu" などに対応しました。
  • リンク時に".header"セクションの内容を実行ファイルの.textの先頭に配置するようにしました。
    • X68kのデバイスドライバは実行ファイルの先頭にデバイスヘッダというデータを置く必要がありますが、デバイスヘッダの構造体に__attribute__((section(".header"))) という属性を追加することで、リンク順に関係なく必ず先頭に配置されるようになります。
  • 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() のようになります
  • 環境変数 TZ が設定されていない場合のデフォルトのタイムゾーンを JST-9 に変更しました。
  • 縮小版Cライブラリの Newlib-nano を選択できるようにしました。
    • printf() での浮動小数点出力機能を削除することなどでライブラリのサイズが削減されています。
    • リンクの際のオプションで -specs=nano.specs を追加すると使用されます。

※ macOS 版の更新は brew upgrade yunkya2/tap/elf2x68k で行ってください。

20250907

07 Sep 14:48

Choose a tag to compare

  • ターゲットOS判別のために、以下の事前定義マクロを追加しました。
    • #define __human68k 1
    • #define __human68k__ 1
  • m68k-xelf-gdb 起動の際に渡す引数が正しくクォートされていない不具合を修正しました。
  • macOS でソースコードからのビルドを行う場合に、環境によってビルドエラーになる不具合を修正しました。

※ macOS 版の更新は brew upgrade yunkya2/tap/elf2x68k で行ってください。

20250727

27 Jul 04:04

Choose a tag to compare

  • gdbserver-x68k による libpthread を用いたマルチスレッドプログラムのデバッグに対応しました。
  • libpthread でスレッドを削除する際にfree()で解放した後の領域をアクセスしている不具合を修正しました。
  • libpthread API の呼び出し順によって内部状態の初期化が正しく行われないことがある不具合を修正しました。

※ macOS 版の更新は brew upgrade yunkya2/tap/elf2x68k で行ってください。

20250712

12 Jul 14:11

Choose a tag to compare

  • 使用するソースコードを以下のバージョンに更新しました。
    • 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

10 Apr 13:59

Choose a tag to compare

  • 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

29 Sep 08:10

Choose a tag to compare

  • 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

16 Jul 12:03

Choose a tag to compare

  • 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 を追加しました。