summaryrefslogtreecommitdiffstats
path: root/lib/libc
diff options
context:
space:
mode:
authorkib <kib@FreeBSD.org>2015-04-02 20:14:51 +0000
committerkib <kib@FreeBSD.org>2015-04-02 20:14:51 +0000
commit75d8fc688e044030c9435bfda5c9d81f3f058d5c (patch)
tree2c789564741e8f635bf86423ac2e418b982d8ff9 /lib/libc
parent8de179eddf5fc142e63c0a9170439a00934c4609 (diff)
downloadFreeBSD-src-75d8fc688e044030c9435bfda5c9d81f3f058d5c.zip
FreeBSD-src-75d8fc688e044030c9435bfda5c9d81f3f058d5c.tar.gz
Speed up symbol lookup for the amd64 kernel modules.
Amd64 uses relocatable object files as the modules format. It is good WRT not having unneeded overhead for PIC code, in particular, due to absence of useless GOT and PLT. But the cost is that the module linking process cannot use hash to speed up the symbol lookup, and that each reference to the symbol requiring a relocation, instead of single-place relocation in GOT. Cache the successfull symbol lookup results in the module symbol table, using the newly allocated SHN_FBSD_CACHED value from SHN_LOOS-HIOS range as an indicator. The SHN_FBSD_CACHED together with the non-existent definition of the found symbol are reverted after successfull relocations, which is done under kld_sx lock, so it should not be visible to other consumers of the symbol table. Submitted by: Conrad Meyer Differential Revision: https://reviews.freebsd.org/D1718 MFC after: 3 weeks
Diffstat (limited to 'lib/libc')
0 files changed, 0 insertions, 0 deletions
OpenPOWER on IntegriCloud