|
Date: Wed, 8 Aug 2012 08:54:25 -0400 From: Rich Felker <dalias@...ifal.cx> To: musl@...ts.openwall.com Subject: Re: ldso : dladdr support On Wed, Aug 08, 2012 at 01:52:02PM +0200, Szabolcs Nagy wrote: > > + for (h1 &= (uint32_t)-2;; sym++) { > > + h2 = *hashval++; > > + if ((h1 == (h2 & ~1)) && !strcmp(s, strings + sym->st_name)) > > these is still a ~1 > > looking at it now probably writing out & 0xfffffffe > is the cleanest I prefer -2. It's the standard idiom used elsewhere in musl (e.g. in malloc, for alignment purposes, and for page masks) to say ("keep all bits starting with the value of 2 and up and discard the rest"). > another possibility is to have a plain find_sym function > which is simple and only supports sysv hash > and whenever it encounters a lib that has no sysv hash in > it a find_sym_gnu is called that does the hard work > (so using gnu only libs is penalized, i don't know how > common that case is though) It could easily be known in advance if there's any lib that has gnu-only, so I don't see this approach being very helpful. And it would increase code duplication, I think... Rich
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.