FPGA開発日記

カテゴリ別記事インデックス https://msyksphinz.github.io/github_pages , English Version https://fpgadevdiary.hatenadiary.com/

Newlibが使用するmultilibの検出方法

Newlibのマルチプラットフォームのライブラリってどうやって作っているのかと思っていろいろ見ていた。

../configure --prefix=${RISCV} --target=riscv64-unknown-elf
make -j$(nproc)

本質的には以下のようなパラメータからとってくるらしい。

/home/msyksphinz/riscv_gcc_rvv/bin/riscv64-unknown-elf-gcc --print-multi-lib
.;
rv32i/ilp32;@march=rv32i@mabi=ilp32
rv32im/ilp32;@march=rv32im@mabi=ilp32
rv32iac/ilp32;@march=rv32iac@mabi=ilp32
rv32imac/ilp32;@march=rv32imac@mabi=ilp32
rv32imafc/ilp32f;@march=rv32imafc@mabi=ilp32f
rv64imac/lp64;@march=rv64imac@mabi=lp64
rv64imafdc/lp64d;@march=rv64imafdc@mabi=lp64d

この情報をもとにNewlibのライブラリのコンパイルオプションが決まるらしい。

Adding multilib support to Makefile in ../../../newlib
multidirs=rv32i/ilp32 rv32im/ilp32 rv32iac/ilp32 rv32imac/ilp32 rv32imafc/ilp32f rv64imac/lp64 rv64imafdc/lp64d
.../build$ ls -1 riscv64-unknown-elf/
libgloss
newlib
rv32i
rv32iac
rv32im
rv32imac
rv32imafc
rv64imac
rv64imafdc