http://sourceware.org/bugzilla/show_bug.cgi?id=15545
Bug ID: 15545 Summary: BFD cache loses cloexec flag Product: binutils Version: unspecified Status: NEW Severity: minor Priority: P2 Component: binutils Assignee: unassigned at sourceware dot org Reporter: tromey at redhat dot com Created attachment 7047 --> http://sourceware.org/bugzilla/attachment.cgi?id=7047&action=edit test program Consider the attached program. (Compile it and run it on itself to see the error.) It opens a BFD using an explicit fd. Then it calls bfd_cache_close_all. Despite the comment in opncls.c: /* If we opened the file by name, mark it cacheable; we can close it and reopen it later. However, if a file descriptor was provided, then it may have been opened with special flags that make it unsafe to close and reopen the file. */ if (fd == -1) (void) bfd_set_cacheable (nbfd, TRUE); ... this causes the fd to be closed. The BFD is not marked "cacheable" but bfd_cache_close_all ignores this flag. Then, the test program forces the BFD to be reopened. Now, the "cacheable" flag is set. All this is more subtle than it appears because I think GDB relies on bfd_cache_close_all actually closing such fds. One idea would be to simply remove the calls to bfd_cache_init from opncls.c, but at the same time change gdb to add them. -- You are receiving this mail because: You are on the CC list for the bug. _______________________________________________ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils