[PATCH v3] ld: Limit cache size and add --max-cache-size=SIZE
Nick Clifton
nickc@redhat.com
Thu Jul 8 16:35:01 GMT 2021
Hi H.J.
> When link_info.keep_memory is true, linker caches the relocation
> information and symbol tables of input files in memory. When there
> are many input files with many relocations, we may run out of memory.
> Add --max-cache-size=SIZE to set the maximum cache size.
>
> bfd/
>
> PR ld/18028
> * bfd.c (bfd): Add alloc_size.
> * elf-bfd.h (_bfd_elf_link_info_read_relocs): New.
> * elf32-i386.c (elf_i386_check_relocs): Use _bfd_link_keep_memory.
> Update cache_size.
> * elf64-x86-64.c (elf_x86_64_check_relocs): Likewise.
> * elflink.c (_bfd_elf_link_read_relocs): Renamed to ...
> (_bfd_elf_link_info_read_relocs): This. Update cache_size.
> (_bfd_elf_link_read_relocs): New.
> (_bfd_elf_link_check_relocs): Call _bfd_elf_link_info_read_relocs
> instead of _bfd_elf_link_read_relocs.
> (elf_link_add_object_symbols): Likewise.
> (elf_link_input_bfd): Likewise.
> (init_reloc_cookie_rels): Likewise.
> (init_reloc_cookie): Update cache_size. Call
> _bfd_elf_link_info_read_relocs instead of
> _bfd_elf_link_read_relocs.
> (link_info_ok): New.
> (elf_gc_smash_unused_vtentry_relocs): Updated. Call
> _bfd_elf_link_info_read_relocs instead of
> _bfd_elf_link_read_relocs.
> (bfd_elf_gc_sections): Use link_info_ok. Pass &link_info_ok
> to elf_gc_smash_unused_vtentry_relocs.
> * libbfd-in.h (_bfd_link_keep_memory): New.
> * linker.c (_bfd_link_keep_memory): New.
> * opncls.c (bfd_alloc): Update alloc_size.
> * bfd-in2.h: Regenerated.
> * libbfd.h: Likewise.
>
> include/
>
> PR ld/18028
> * bfdlink.h (bfd_link_info): Add cache_size and max_cache_size.
>
> ld/
>
> PR ld/18028
> * NEWS: Mention --max-cache-size=SIZE.
> * ld.texi: Document --max-cache-size=SIZE.
> * ldlex.h (option_values): Add OPTION_MAX_CACHE_SIZE.
> * ldmain.c: (main): Set link_info.max_cache_size to -1.
> * lexsup.c (ld_options): Add --max-cache-size=SIZE.
> (parse_args): Support OPTION_MAX_CACHE_SIZE.
> * testsuite/ld-bootstrap/bootstrap.exp: Add test for
> --max-cache-size=-1.
Approved - please apply.
Cheers
Nick
More information about the Binutils
mailing list