diff options
author | Alan Modra <amodra@gmail.com> | 2011-04-20 07:17:01 +0000 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2011-04-20 07:17:01 +0000 |
commit | 9e6619e285873fe1cb002da4bb7749be40a5627c (patch) | |
tree | 93aa67371935dfa970f89ec5b84e50e50dd7c5c0 /bfd/elflink.c | |
parent | 595213d4408b3608441bb78fd5ee49efb5b8b97f (diff) | |
download | binutils-9e6619e285873fe1cb002da4bb7749be40a5627c.zip binutils-9e6619e285873fe1cb002da4bb7749be40a5627c.tar.gz binutils-9e6619e285873fe1cb002da4bb7749be40a5627c.tar.bz2 |
* libbfd.c (bfd_log2): Do return rounded up value.
* elflink.c (bfd_elf_size_dynsym_hash_dynstr): Replace bfd_log2
call with expanded old round down version of the function.
Diffstat (limited to 'bfd/elflink.c')
-rw-r--r-- | bfd/elflink.c | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/bfd/elflink.c b/bfd/elflink.c index 3c95b57..3a4d22c 100644 --- a/bfd/elflink.c +++ b/bfd/elflink.c @@ -6537,10 +6537,13 @@ bfd_elf_size_dynsym_hash_dynstr (bfd *output_bfd, struct bfd_link_info *info) } else { - unsigned long int maskwords, maskbitslog2; + unsigned long int maskwords, maskbitslog2, x; BFD_ASSERT (cinfo.min_dynindx != -1); - maskbitslog2 = bfd_log2 (cinfo.nsyms) + 1; + x = cinfo.nsyms; + maskbitslog2 = 1; + while ((x >>= 1) != 0) + ++maskbitslog2; if (maskbitslog2 < 3) maskbitslog2 = 5; else if ((1 << (maskbitslog2 - 2)) & cinfo.nsyms) |