So much has changed in seven years, including the standard C library and multiple major toolchain and kernel versions, that no one wants to look back to the old times (a version that has been EOL for over half a decade).
Actually, not exactly me but manufacturer of that router
It just has happened I had this device around the corner and tried to compile some progs for it.
I see. They have some customized version here at github,
but it failed to build on my host system and then I took latest (non-rc) official release (hence static linking, except explicit dlopen() of course).
Yes, I know that dynamical linking requires matching toolchains but this is another story. The issue actually is not so urgent for me, at the moment I just wanted to have clear understanding why it is happening like this.
Although I've already marked the topic as solved, let me make one note.
It's appeared I did not have to mess around with BuildRoot at all.
Linux MInt distro has gcc-7-multilib-arm-linux-gnueabi package and this
toolchain did the job right.
Compile at host:
arm-linux-gnueabi-gcc-7 dll.c -ldl -odll
$ file dll
dll: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV),
dynamically linked, interpreter /lib/ld-linux.so.3, for GNU/Linux 3.2.0,
BuildID[sha1]=26a880514567c06814a6b2cf4f2274f63e62d5e9, not stripped