diff options
author | Zack Weinberg <zackw@panix.com> | 2018-06-01 12:53:59 -0400 |
---|---|---|
committer | Zack Weinberg <zackw@panix.com> | 2018-06-12 10:02:27 -0400 |
commit | 2ba9f2eb978b27ddfa39cd769b73136d0ac4c4ae (patch) | |
tree | fabc08af34d8fbe8227e072ade54be411c6a4123 /elf/dl-close.c | |
parent | 329ea513b451ae8322aa7a24ed84da13992af2dd (diff) | |
download | glibc-2ba9f2eb978b27ddfa39cd769b73136d0ac4c4ae.tar.gz glibc-2ba9f2eb978b27ddfa39cd769b73136d0ac4c4ae.tar.xz glibc-2ba9f2eb978b27ddfa39cd769b73136d0ac4c4ae.zip |
Convert __builtin_expect to __glibc_(un)likely throughout elf/. zack/elf-builtin-expect-conversion
In the previous patch I didn't change a use of __builtin_expect to __glibc_(un)likely that happened to be right next to the code I was actually working on; Andreas asked why not, and I said that there were a bunch more uses of __builtin_expect in that file and I would convert them all in a separate patch. This is that patch, converting all of elf/. I would appreciate someone checking over this patch very carefully indeed. In a whole bunch of places, __builtin_expect was used in a way that did not map mechanically to the newer convention. The test suite caught one mistake; I'm not confident I didn't make any more. Writing this patch gave me a deeper appreciation for why we _want_ to switch to __glibc_(un)likely, but also for how difficult it can be. I now think that people should _not_ be asked to change existing uses of __builtin_expect in a patch whose purpose is something else. * elf/dl-addr.c, elf/dl-cache.c, elf/dl-close.c, elf/dl-deps.c * elf/dl-environ.c, elf/dl-error-skeleton.c, elf/dl-fini.c * elf/dl-fptr.c, elf/dl-init.c, elf/dl-libc.c, elf/dl-minimal.c * elf/dl-open.c, elf/dl-reloc.c, elf/dl-runtime.c * elf/dl-sysdep.c, elf/dl-tls.c, elf/dl-version.c, elf/ldconfig.c * elf/rtld.c: Replace __builtin_expect with __glibc_likely or __glibc_unlikely, as appropriate, throughout.
Diffstat (limited to 'elf/dl-close.c')
-rw-r--r-- | elf/dl-close.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/elf/dl-close.c b/elf/dl-close.c index ecd6729704..4e44bdd930 100644 --- a/elf/dl-close.c +++ b/elf/dl-close.c @@ -271,8 +271,8 @@ _dl_close_worker (struct link_map *map, bool force) if (imap->l_init_called) { /* When debugging print a message first. */ - if (__builtin_expect (GLRO(dl_debug_mask) & DL_DEBUG_IMPCALLS, - 0)) + if (__glibc_unlikely ((GLRO(dl_debug_mask) & DL_DEBUG_IMPCALLS) + != 0)) _dl_debug_printf ("\ncalling fini: %s [%lu]\n\n", imap->l_name, nsid); @@ -782,7 +782,7 @@ _dl_close_worker (struct link_map *map, bool force) } #endif - if (__builtin_expect (ns->_ns_loaded == NULL, 0) + if (__glibc_unlikely (ns->_ns_loaded == NULL) && nsid == GL(dl_nns) - 1) do --GL(dl_nns); @@ -833,7 +833,7 @@ _dl_close (void *_map) should be a detectable case and given that dlclose should be threadsafe we need this to be a reliable detection. This is bug 20990. */ - if (__builtin_expect (map->l_direct_opencount, 1) == 0) + if (__glibc_unlikely (map->l_direct_opencount == 0)) { __rtld_lock_unlock_recursive (GL(dl_load_lock)); _dl_signal_error (0, map->l_name, NULL, N_("shared object not open")); |