I'm about to commit NetBSD's implementation of the vis(3) and unvis(3)
APIs to FreeBSD. When I asked for review Jilles Tjoelker commented:
> Please avoid adding 100 relative relocations, for example by changing
> const char *name to char name[7].
>
> RTLD will have to adjust 100 pointers for the load address of libc.so.7,
> and even in a static library the pointers take up a disproportionate
> amount of space.
The following patch accomplishes this.
Thanks,
Brooks
Index: unvis.c
===================================================================
RCS file: /cvsroot/src/lib/libc/gen/unvis.c,v
retrieving revision 1.39
diff -u -r1.39 unvis.c
--- unvis.c 13 Mar 2012 21:13:37 -0000 1.39
+++ unvis.c 14 Dec 2012 17:00:36 -0000
@@ -81,7 +81,7 @@
* RFC 1866
*/
static const struct nv {
- const char *name;
+ char name[7];
uint8_t value;
} nv[] = {
{ "AElig", 198 }, /* capital AE diphthong (ligature) */
Attachment:
pgpYg56wRCXRN.pgp
Description: PGP signature