mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-19 09:14:14 +08:00
Warn when the plugin interface runs out of file descriptors.
* plugin.c (bfd_plugin_open_input): Inform the user if the limit on the number of open files is reached. If possible, try to increase this limit before failing.
This commit is contained in:
@ -1,3 +1,9 @@
|
|||||||
|
2021-05-19 Nick Clifton <nickc@redhat.com>
|
||||||
|
|
||||||
|
* plugin.c (bfd_plugin_open_input): Inform the user if the limit
|
||||||
|
on the number of open files is reached. If possible, try to
|
||||||
|
increase this limit before failing.
|
||||||
|
|
||||||
2021-05-14 Nelson Chu <nelson.chu@sifive.com>
|
2021-05-14 Nelson Chu <nelson.chu@sifive.com>
|
||||||
|
|
||||||
* elfnn-riscv.c (riscv_resolve_pcrel_lo_relocs): Check the values
|
* elfnn-riscv.c (riscv_resolve_pcrel_lo_relocs): Check the values
|
||||||
|
30
bfd/plugin.c
30
bfd/plugin.c
@ -209,7 +209,35 @@ bfd_plugin_open_input (bfd *ibfd, struct ld_plugin_input_file *file)
|
|||||||
the same underlying file descriptor. */
|
the same underlying file descriptor. */
|
||||||
file->fd = open (file->name, O_RDONLY | O_BINARY);
|
file->fd = open (file->name, O_RDONLY | O_BINARY);
|
||||||
if (file->fd < 0)
|
if (file->fd < 0)
|
||||||
return 0;
|
{
|
||||||
|
#ifndef EMFILE
|
||||||
|
return 0;
|
||||||
|
#else
|
||||||
|
if (errno != EMFILE)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
#ifdef HAVE_GETRLIMIT
|
||||||
|
struct rlimit lim;
|
||||||
|
|
||||||
|
/* Complicated links involving lots of files and/or large archives
|
||||||
|
can exhaust the number of file descriptors available to us.
|
||||||
|
If possible, try to allocate more descriptors. */
|
||||||
|
if (getrlimit (RLIMIT_NOFILE, & lim) == 0
|
||||||
|
&& lim.rlim_cur < lim.rlim_max)
|
||||||
|
{
|
||||||
|
lim.rlim_cur = lim.rlim_max;
|
||||||
|
if (setrlimit (RLIMIT_NOFILE, &lim) == 0)
|
||||||
|
file->fd = open (file->name, O_RDONLY | O_BINARY);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (file->fd < 0)
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
_bfd_error_handler (_("plugin framework: out of file descriptors. Try using fewer objects/archives\n"));
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
if (iobfd == ibfd)
|
if (iobfd == ibfd)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user