NPTL compile error without MMU (ARM)
Dear developers.
Hi. I found out that nptl make a compile error when MMU (i.e. 'Toolchain
- Enable MMU support') is disabled.
Detailed error message is as below.
--------------------------------------------------------------------------------
In file included from libpthread/nptl/sysdeps/unix/sysv/linux/arm/fork.c:31:0:libpthread/nptl/sysdeps/unix/sysv/linux/arm/../fork.c:61:17: error:
'fork' undeclared here (not in a function) libpthread/nptl/sysdeps/unix/sysv/linux/arm/../fork.c:63:1: error:
'__libc_fork' redeclared as different kind of symbol libpthread/nptl/sysdeps/unix/sysv/linux/arm/../fork.c:61:23: note:
previous declaration of '__libc_fork' was here libpthread/nptl/sysdeps/unix/sysv/linux/arm/../fork.c:228:1: error:
'fork' redeclared as different kind of symbol libpthread/nptl/sysdeps/unix/sysv/linux/arm/../fork.c:227:1: note:
previous declaration of 'fork' was here libpthread/nptl/sysdeps/unix/sysv/linux/arm/../fork.c:229:1: error:
'__EI_fork' aliased to undefined symbol '__GI_fork'
make[1]: *** [libpthread/nptl/sysdeps/unix/sysv/linux/arm/fork.os] Error 1
--------------------------------------------------------------------------------
This problem is already reported by Axel Lin.
(Link: http://lists.uclibc.org/pipermail/uclibc-cvs/2013-May/031094.html)
However, it looks like that this issue is not solved for a long time. If someone let me know the alternative solution, I'd be really happy.
Thank you in advances.
BRs,
Sangjung
Dear Sangjung,
Quoted 26 lines · Sangjung
Dear developers.
Hi. I found out that nptl make a compile error when MMU (i.e. 'Toolchain
- Enable MMU support') is disabled.Detailed error message is as below.
--------------------------------------------------------------------------------
In file included from
libpthread/nptl/sysdeps/unix/sysv/linux/arm/fork.c:31:0:libpthread/nptl/sysdeps/unix/sysv/linux/arm/../fork.c:61:17: error:
'fork' undeclared here (not in a function)libpthread/nptl/sysdeps/unix/sysv/linux/arm/../fork.c:63:1: error:
'__libc_fork' redeclared as different kind of symbollibpthread/nptl/sysdeps/unix/sysv/linux/arm/../fork.c:61:23: note:
previous declaration of '__libc_fork' was herelibpthread/nptl/sysdeps/unix/sysv/linux/arm/../fork.c:228:1: error:
'fork' redeclared as different kind of symbollibpthread/nptl/sysdeps/unix/sysv/linux/arm/../fork.c:227:1: note:
previous declaration of 'fork' was herelibpthread/nptl/sysdeps/unix/sysv/linux/arm/../fork.c:229:1: error:
'__EI_fork' aliased to undefined symbol '__GI_fork'
make[1]: *** [libpthread/nptl/sysdeps/unix/sysv/linux/arm/fork.os] Error 1
--------------------------------------------------------------------------------
Quoted 5 lines
This problem is already reported by Axel Lin.
(Link: http://lists.uclibc.org/pipermail/uclibc-cvs/2013-May/031094.html)However, it looks like that this issue is not solved for a long time. If someone let me know the alternative solution, I'd be really happy.
Thanks for your report. The problem really looks like a uClibc problem, so I would suggest you to take the uClibc configuration file in output/build/uclibc-<version>/.config, and sent the report to the uClibc developers. I am also on the uClibc mailing list, so I will be able to add additional Buildroot-specific details if requested by the uClibc developers.
Outside of this, it is interesting to see that you are looking at the ARM non-MMU support. Do you have an actual hardware platform? In fact, I have been interested by looking into ARM non-MMU support in Buildroot for a long time, but I have never found a hardware platform, or emulated platform, to test things on. If this is something you can help with, I'm pretty sure the ARM non-MMU support would make more significant progress.
Thanks!
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
Dear Thomas.
Quoted 6 lines · Thomas Petazzoni
Thanks for your report. The problem really looks like a uClibc problem, so I would suggest you to take the uClibc configuration file in output/build/uclibc-<version>/.config, and sent the report to the uClibc developers. I am also on the uClibc mailing list, so I will be able to add additional Buildroot-specific details if requested by the uClibc developers.
Thank you for your quick reply.
I will also report this issue to uClibc mailing list ASAP.
Quoted 8 lines
Outside of this, it is interesting to see that you are looking at the ARM non-MMU support. Do you have an actual hardware platform? In fact, I have been interested by looking into ARM non-MMU support in Buildroot for a long time, but I have never found a hardware platform, or emulated platform, to test things on. If this is something you can help with, I'm pretty sure the ARM non-MMU support would make more significant progress.
Our target device is for very small wearable thing. Because of various issue such as power consumption and cost, ARM Cortex M (that is MMU-less) series are commonly used.
BRs
Sangjung
Dear Sangjung,
Quoted 10 lines · Sangjung
Quoted 6 lines · Thomas Petazzoni
Thanks for your report. The problem really looks like a uClibc problem, so I would suggest you to take the uClibc configuration file in output/build/uclibc-<version>/.config, and sent the report to the uClibc developers. I am also on the uClibc mailing list, so I will be able to add additional Buildroot-specific details if requested by the uClibc developers.
Thank you for your quick reply.
I will also report this issue to uClibc mailing list ASAP.
Excellent, thanks!
Quoted 11 lines
Quoted 7 lines
Outside of this, it is interesting to see that you are looking at the ARM non-MMU support. Do you have an actual hardware platform? In fact, I have been interested by looking into ARM non-MMU support in Buildroot for a long time, but I have never found a hardware platform, or emulated platform, to test things on. If this is something you can help with, I'm pretty sure the ARM non-MMU support would make more significant progress.
Our target device is for very small wearable thing. Because of various issue such as power consumption and cost, ARM Cortex M (that is MMU-less) series are commonly used.
So I suppose these platforms have external RAM and Flash, right? Because most of the Cortex-M platforms I've seen have only the internal RAM and Flash of the Cortex-M processor, and the amount available internally is usually not sufficient to run Linux.
Best regards,
Thomas
Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons Embedded Linux, Kernel and Android engineering http://free-electrons.com
Dear Thomas
Quoted 32 lines · Thomas Petazzoni
Dear Sangjung,
Quoted 29 lines · Sangjung
Dear developers.
Hi. I found out that nptl make a compile error when MMU (i.e. 'Toolchain
- Enable MMU support') is disabled.Detailed error message is as below.
--------------------------------------------------------------------------------
In file included from
libpthread/nptl/sysdeps/unix/sysv/linux/arm/fork.c:31:0:libpthread/nptl/sysdeps/unix/sysv/linux/arm/../fork.c:61:17: error:
'fork' undeclared here (not in a function)libpthread/nptl/sysdeps/unix/sysv/linux/arm/../fork.c:63:1: error:
'__libc_fork' redeclared as different kind of symbollibpthread/nptl/sysdeps/unix/sysv/linux/arm/../fork.c:61:23: note:
previous declaration of '__libc_fork' was herelibpthread/nptl/sysdeps/unix/sysv/linux/arm/../fork.c:228:1: error:
'fork' redeclared as different kind of symbollibpthread/nptl/sysdeps/unix/sysv/linux/arm/../fork.c:227:1: note:
previous declaration of 'fork' was herelibpthread/nptl/sysdeps/unix/sysv/linux/arm/../fork.c:229:1: error:
'__EI_fork' aliased to undefined symbol '__GI_fork'
make[1]: *** [libpthread/nptl/sysdeps/unix/sysv/linux/arm/fork.os] Error 1
--------------------------------------------------------------------------------This problem is already reported by Axel Lin.
(Link: http://lists.uclibc.org/pipermail/uclibc-cvs/2013-May/031094.html)
Quoted 8 lines
Quoted 2 lines
However, it looks like that this issue is not solved for a long time. If someone let me know the alternative solution, I'd be really happy.
Thanks for your report. The problem really looks like a uClibc problem, so I would suggest you to take the uClibc configuration file in output/build/uclibc-<version>/.config, and sent the report to the uClibc developers. I am also on the uClibc mailing list, so I will be able to add additional Buildroot-specific details if requested by the uClibc developers.
After looking into this issue for a while,
in my opinion, buildroot generated the wrong configuration for uclibc.
I also found out that the _SAME_ problem already reported in _uclibc_ Bugzilla.
(URL: https://bugs.uclibc.org/show_bug.cgi?id=6224)
What if you want to reproduce this error, 'qemu_arm_versatile_defconfig' could be used as below. Then, you will face the same errors that I reported.
---------------------------------------------
$ make qemu_arm_versatile_defconfig Disable MMU (i.e. 'BR2_USE_MMU is not set' in .config) $ make ---------------------------------------------
If I misunderstood something, let me know it.
BRs
Sangjung.