Recently I am trying bootstrap compiling haiku for mips64el(loongson) platform. I have got the buildtool configure building success. And finally I got gcc-bootstrap from sys-devel compiling works. but it failed when compiling libiberty* of gcc.
/home/kurain/build/haiku/generated.mipsel/objects/haiku/mips64el/packaging/repositories/HaikuPortsCross-build/sys-devel/gcc_bootstrap/work-8.3.0_2019_05_24/sources/buildtools-32f9366f9eac1c2ea7d41f067432e636bb735806/libiberty/physmem.c: In function 'physmem_total':
/home/kurain/build/haiku/generated.mipsel/objects/haiku/mips64el/packaging/repositories/HaikuPortsCross-build/sys-devel/gcc_bootstrap/work-8.3.0_2019_05_24/sources/buildtools-32f9366f9eac1c2ea7d41f067432e636bb735806/libiberty/physmem.c:96:23: error: storage size of 'pss' isn't known
struct pst_static pss;
^~~
/home/kurain/build/haiku/generated.mipsel/objects/haiku/mips64el/packaging/repositories/HaikuPortsCross-build/sys-devel/gcc_bootstrap/work-8.3.0_2019_05_24/sources/buildtools-32f9366f9eac1c2ea7d41f067432e636bb735806/libiberty/physmem.c:97:14: warning: implicit declaration of function 'pstat_getstatic'; did you mean 'pex_get_status'? [-Wimplicit-function-declaration]
if (0 <= pstat_getstatic (&pss, sizeof pss, 1, 0))
^~~~~~~~~~~~~~~
pex_get_status
/home/kurain/build/haiku/generated.mipsel/objects/haiku/mips64el/packaging/repositories/HaikuPortsCross-build/sys-devel/gcc_bootstrap/work-8.3.0_2019_05_24/sources/buildtools-32f9366f9eac1c2ea7d41f067432e636bb735806/libiberty/physmem.c:96:23: warning: unused variable 'pss' [-Wunused-variable]
struct pst_static pss;
^~~
/home/kurain/build/haiku/generated.mipsel/objects/haiku/mips64el/packaging/repositories/HaikuPortsCross-build/sys-devel/gcc_bootstrap/work-8.3.0_2019_05_24/sources/buildtools-32f9366f9eac1c2ea7d41f067432e636bb735806/libiberty/physmem.c: In function 'physmem_available':
/home/kurain/build/haiku/generated.mipsel/objects/haiku/mips64el/packaging/repositories/HaikuPortsCross-build/sys-devel/gcc_bootstrap/work-8.3.0_2019_05_24/sources/buildtools-32f9366f9eac1c2ea7d41f067432e636bb735806/libiberty/physmem.c:200:23: error: storage size of 'pss' isn't known
struct pst_static pss;
^~~
/home/kurain/build/haiku/generated.mipsel/objects/haiku/mips64el/packaging/repositories/HaikuPortsCross-build/sys-devel/gcc_bootstrap/work-8.3.0_2019_05_24/sources/buildtools-32f9366f9eac1c2ea7d41f067432e636bb735806/libiberty/physmem.c:201:24: error: storage size of 'psd' isn't known
struct pst_dynamic psd;
^~~
/home/kurain/build/haiku/generated.mipsel/objects/haiku/mips64el/packaging/repositories/HaikuPortsCross-build/sys-devel/gcc_bootstrap/work-8.3.0_2019_05_24/sources/buildtools-32f9366f9eac1c2ea7d41f067432e636bb735806/libiberty/physmem.c:203:10: warning: implicit declaration of function 'pstat_getdynamic' [-Wimplicit-function-declaration]
&& 0 <= pstat_getdynamic (&psd, sizeof psd, 1, 0))
And I have checked the libiberty , it could be compiled successfully. And finally I found that it’s caused by the config.h generated, which is differrent.
config.h of libiberty from binutils:
/* #undef HAVE_PSTAT_GETSTATIC */
config.h of libiberty from gcc:
#define HAVE_PSTAT_GETSTATIC 1
And we don’t have any function for pstat_getstatic, I have no idea what’s going on.