Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
include: Declare getopt function on old GNU libc
On GNU libc <= 2.25, <unistd.h> includes <getopt.h> with __need_getopt macro defined. That <getopt.h> is intended to be a part of GNU libc but <unistd.h> actually includes include/getopt.h in this project. If HAVE_DECL_GETOPT is defined to 1 and include/getopt.h is included from GNU libc's <unistd.h>, declaration of getopt is suppressed, causing errors on getopt callers. This issue is possibly hidden so long because there are not so many true getopt callers in Binutils, GDB and GCC. Still, this issue needs to be fixed for following components: - Binutils: gprofng (not currently affected due to the configuration script but will be) - GDB (sim): M32C simulator - GDB (sim): RL78 simulator To avoid not defining proper getopt declaration, we have to check __need_getopt macro to detect this include path. With this commit, even if HAVE_DECL_GETOPT is 1, getopt is declared if: - The standard C library is GNU libc and - __need_getopt macro is defined (<unistd.h> includes <getopt.h> to declare getopt function). include/ChangeLog: * getopt.h: Detect special include path on GNU libc 2.25 or older to prevent not declaring getopt function when necessary.
- Loading branch information