Object code files linkable into shared libraries by ld version 2.33 and later
Final Release Note
Object code files generated by YottaDB can be linked into shared libraries by ld
version 2.33 and later. Previously ld
version 2.33 and later, found on distributions with newer toolchains, such as Ubuntu 19.10 & up, and Arch Linux, would not link YottaDB object code files into shared libraries. [#496 (closed)]
Description
Builds on Ubuntu 19.10 fail due to additional checks of elf header flags and values (new enforcement) that are found to be invalid. Using eu-elflint, I could see that there were 3 errors in the header as shown below:
unsupport ABI version e_ident[8] == 1
invalid machine flags: 0x10
section [ 3] '.symtab': symbol 2: local symbol outside range described in sh_info
Fixed the first two of these and an attempted remedy for the 3rd error changed it so that it now complains about symbol 1 instead of symbol 2 like the following:
section [ 3] '.symtab': symbol 1: non-local symbol outside range described in sh_info
Have not understood how to fix this one but this one does not break the loader like the one calling out symbol 2 did so calling this fix good enough for now though would love to understand how to completely fix it.
This is so far known to be broken on Ubuntu 19.10 and with the latest Arch updates.
Draft Release Note
YottaDB creates a correct ELF object file wrapper for generated M object code so object files created by yottadb can be linked into shared libraries. Previously there were a few errors in flags and header information as well as the fact that the symbol table entries were not being generated in the correct order that caused ld version 2.33 and later to have problems with pre r1.30 object files.