[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