mips32 still supported?

Adhemerval Zanella Netto adhemerval.zanella@linaro.org
Thu Jun 13 18:14:26 GMT 2024



On 13/06/24 08:57, Waldemar Brodkorb wrote:
> Hi,
> Adhemerval Zanella Netto wrote,
> 
>>
>>
>> On 11/06/24 02:44, Waldemar Brodkorb wrote:
>>> Hi,
>>>
>>> is mips32 (big endian or little endian) still supported by glibc?
>>>
>>> I am seeing following build error with glibc 2.39 (gcc 13.3.0, binutils 2.42):
>>>
>>> /home/wbx/openadk/toolchain_qemu-mips_glibc_mips32r6_hard/usr/bin/mips-openadk-linux-gnu-gcc -mabi=32   -shared -static-libgcc  -Wl,-dynamic-linker=/lib/ld-linux-mipsn8.so.1 -Wl,-z,defs  -B/home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final/csu/  -Wl,-z,relro   -L/home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final -L/home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final/math -L/home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final/elf -L/home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final/dlfcn -L/home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final/nss -L/home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final/nis -L/home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final/rt -L/home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final/resolv -L/home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final/mathvec -L/home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final/support -L/home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final/nptl -Wl,-rpath-link=/home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final:/home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final/math:/home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final/elf:/home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final/dlfcn:/home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final/nss:/home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final/nis:/home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final/rt:/home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final/resolv:/home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final/mathvec:/home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final/support:/home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final/nptl -o /home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final/elf/sotruss-lib.so /home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final/csu/abi-note.o -Wl,--as-needed /home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final/elf/sotruss-lib.os  -Wl,--no-as-needed -Wl,--start-group /home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final/libc.so /home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final/libc_nonshared.a -Wl,--as-needed /home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final/elf/ld.so -Wl,--no-as-needed -Wl,--end-group
>>> /home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final/csu/crti.o: in function `_init':
>>> (.init+0x0): relocation R_MIPS_HI16 against `__gnu_local_gp' cannot be used when making a shared object; recompile with -fPIC
>>> /home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final/csu/crti.o: in function `_fini':
>>> (.fini+0x0): relocation R_MIPS_HI16 against `__gnu_local_gp' cannot be used when making a shared object; recompile with -fPIC
>>> collect2: error: ld returned 1 exit status
>>> gmake[8]: *** [Makefile:247: /home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39-final/elf/sotruss-lib.so] Error 1
>>> gmake[7]: *** [Makefile:484: elf/subdir_lib] Error 2
>>> gmake[6]: *** [Makefile:9: all] Error 2
>>> gmake[5]: *** [Makefile:71: /home/wbx/openadk/toolchain_build_qemu-mips_glibc_mips32r6_hard/w-glibc-2.39-1/glibc-2.39/.compiled] Error 2
>>> gmake[4]: *** [Makefile:106: glibc-compile] Error 2
>>> gmake[3]: *** [mk/build.mk:227: toolchain/final] Error 2
>>> gmake[2]: *** [/home/wbx/openadk/mk/build.mk:176: world] Error 2
>>>
>>> No matter if I targeting mips32r1, mips32r2 or mips32r6.
>>>
>>> For a full build log targeting mips32r1 download this file here:
>>> https://debug.openadk.org/glibc-mips32-make.log
>>>
>>
>> I have not see any issues building with gcc 14.1.1 / binutils 2.42
>> for mips with -mips1/-mips2/-mips32r6:
>>
>> mips-linux-gnu-mips1$ ./elf/ld.so ./libc.so
>> GNU C Library (GNU libc) development release version 2.39.9000.
>> [...]
>> Compiled by GNU CC version 14.1.1 20240507 [releases/gcc-11 revision 624c3bb9ff7:d12f6ad7ecf:09910b6753427eeb3f6dded4fae3578851da7422].
>> libc ABIs: MIPS_PLT UNIQUE MIPS_O32_FP64 ABSOLUTE MIPS_XHASH
>> [...]
>>
>> Nor Joseph's automated bots that constantly checks all supported ABIs [1]
>> has reported any issue for mips.
>>
>> As a side note, you are using some outdated configure options like
>> --enable-stackguard-randomization (removed on 2.34 [2]) and --disable-nls
>> (not really a glibc option), 
>>
>> [1] https://sourceware.org/pipermail/libc-testresults/2024q2/thread.html
>> [2] https://sourceware.org/bugzilla/show_bug.cgi?id=27872
> 
> Thanks for your response. I found the reason. I disabled default-pie
> confgiure option by default for my sparc64 issues. But mips seems
> not to be compilable with PIE off. I think this might be a bug.
> Or is everyone nowadays using PIE?

The PIE is enabled as default, although some ABIs seems to be broken (sparc).
For mips I did not see any issue, at least on qemu and qemu-user both 
default and --disable-default-pie works as expected.


More information about the Libc-help mailing list