Hi Christophe,
i am doing a large testrun for the global changes and hopefully push on monday or at least have some news. i am afk atm with just little access to a computer.
best regards Waldemar
Am 13.07.2018 um 17:43 schrieb Christophe Lyon christophe.lyon@linaro.org:
Hi,
I'd like to ping the whole series.
For those anxious about Cortex-M support, I'd prefer to have the current patch series merged, and then add the missing parts for Cortex-M: I have a simple patch to enable the uclibc-ng build for such a target, but then there are further problems with binutils and GCC. So for me it would be much more convenient to have Cortex-A/Cortex-R support merged, so that I can focus later on smaller improvements.
Thanks,
Christophe
On Wed, 4 Jul 2018 at 17:56, Christophe Lyon christophe.lyon@st.com wrote:
Hello,
This patch series implements the uClibc-ng contribution of the FDPIC ABI for ARM targets.
This ABI enables to run Linux on ARM MMU-less cores and supports shared libraries to reduce the memory footprint.
Without MMU, text and data segments relative distances are different from one process to another, hence the need for a dedicated FDPIC register holding the start address of the data segment. One of the side effects is that function pointers require two words to be represented: the address of the code, and the data segment start address. These two words are designated as "Function Descriptor", hence the "FD PIC" name.
On ARM, the FDPIC register is r9 [1], and the target name is arm-uclinuxfdpiceabi. Note that arm-uclinux exists, but uses another ABI and the BFLAT file format; it does not support code sharing.
This work was developed some time ago by STMicroelectronics, and was presented during Linaro Connect SFO15 (September 2015). You can watch the discussion and read the slides [2]. This presentation was related to the toolchain published on github [3], which is based on binutils-2.22, gcc-4.7, uclibc-0.9.33.2, gdb-7.5.1 and qemu-2.3.0, and for which pre-built binaries are available [3].
The ABI itself is described in details in [1].
Our Linux kernel patches have been updated and committed by Nicolas Pitre (Linaro) in July 2017. They are required so that the loader is able to handle this new file type. Indeed, the ELF files are tagged with ELFOSABI_ARM_FDPIC. This new tag has been allocated by ARM, as well as the new relocations involved.
The binutils and QEMU patch series have been merged recently. [4][5]
The GCC patch series has been submitted and is under discussion. [6]
This patch series consists in the original uClibc-based patches, which I have rebased and updated for uClibc-ng. Most of them are strictly related to FDPIC on ARM, while a few others address generic issues.
Are the uClibc-ng patches OK for inclusion in master?
Thanks,
Christophe.