C99 ld configury

* configure.ac: Move initfini-array arg handling earlier.  Don't
	check for string.h, strings.h, stdlib.h, or locale.h.  Do check
	for inttypes.h, stdint.h, sys/types.h.  Don't check for
	setlocale, free, getev or strstr.
	(AC_ISC_POSIX): Don't invoke.
	* sysdep.h: Include string.h and stdlib.h unconditionally.  Test
	HAVE_SYS_TYPE_H and HAVE_SYS_STAT_H.  Remove strstr, free and
	getenv fallback declarations.
	* ld.h: Don't test HAVE_LOCALE_H.
	* ldmain.c: Don't test HAVE_SETLOCALE.
	* config.in: Regenerate.
	* configure: Regenerate.
This commit is contained in:
Alan Modra 2021-04-05 15:31:53 +09:30
parent 23d613801d
commit c774eab1c8
7 changed files with 797 additions and 1737 deletions

View File

@ -1,3 +1,18 @@
2021-04-05 Alan Modra <amodra@gmail.com>
* configure.ac: Move initfini-array arg handling earlier. Don't
check for string.h, strings.h, stdlib.h, or locale.h. Do check
for inttypes.h, stdint.h, sys/types.h. Don't check for
setlocale, free, getev or strstr.
(AC_ISC_POSIX): Don't invoke.
* sysdep.h: Include string.h and stdlib.h unconditionally. Test
HAVE_SYS_TYPE_H and HAVE_SYS_STAT_H. Remove strstr, free and
getenv fallback declarations.
* ld.h: Don't test HAVE_LOCALE_H.
* ldmain.c: Don't test HAVE_SETLOCALE.
* config.in: Regenerate.
* configure: Regenerate.
2021-04-01 Tamar Christina <tamar.christina@arm.com> 2021-04-01 Tamar Christina <tamar.christina@arm.com>
PR ld/26659 PR ld/26659

View File

@ -57,14 +57,6 @@
don't. */ don't. */
#undef HAVE_DECL_ENVIRON #undef HAVE_DECL_ENVIRON
/* Define to 1 if you have the declaration of `free', and to 0 if you don't.
*/
#undef HAVE_DECL_FREE
/* Define to 1 if you have the declaration of `getenv', and to 0 if you don't.
*/
#undef HAVE_DECL_GETENV
/* Is the prototype for getopt in <unistd.h> in the expected format? */ /* Is the prototype for getopt in <unistd.h> in the expected format? */
#undef HAVE_DECL_GETOPT #undef HAVE_DECL_GETOPT
@ -72,14 +64,6 @@
*/ */
#undef HAVE_DECL_SBRK #undef HAVE_DECL_SBRK
/* Define to 1 if you have the declaration of `strstr', and to 0 if you don't.
*/
#undef HAVE_DECL_STRSTR
/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
*/
#undef HAVE_DIRENT_H
/* Define to 1 if you have the <dlfcn.h> header file. */ /* Define to 1 if you have the <dlfcn.h> header file. */
#undef HAVE_DLFCN_H #undef HAVE_DLFCN_H
@ -107,9 +91,6 @@
/* Define to 1 if you have the <limits.h> header file. */ /* Define to 1 if you have the <limits.h> header file. */
#undef HAVE_LIMITS_H #undef HAVE_LIMITS_H
/* Define to 1 if you have the <locale.h> header file. */
#undef HAVE_LOCALE_H
/* Define to 1 if you have the `lseek' function. */ /* Define to 1 if you have the `lseek' function. */
#undef HAVE_LSEEK #undef HAVE_LSEEK
@ -122,9 +103,6 @@
/* Define to 1 if you have a working `mmap' system call. */ /* Define to 1 if you have a working `mmap' system call. */
#undef HAVE_MMAP #undef HAVE_MMAP
/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
#undef HAVE_NDIR_H
/* Define to 1 if you have the `open' function. */ /* Define to 1 if you have the `open' function. */
#undef HAVE_OPEN #undef HAVE_OPEN
@ -134,9 +112,6 @@
/* Define to 1 if you have the `sbrk' function. */ /* Define to 1 if you have the `sbrk' function. */
#undef HAVE_SBRK #undef HAVE_SBRK
/* Define to 1 if you have the `setlocale' function. */
#undef HAVE_SETLOCALE
/* Define to 1 if you have the <stdint.h> header file. */ /* Define to 1 if you have the <stdint.h> header file. */
#undef HAVE_STDINT_H #undef HAVE_STDINT_H
@ -149,16 +124,11 @@
/* Define to 1 if you have the <string.h> header file. */ /* Define to 1 if you have the <string.h> header file. */
#undef HAVE_STRING_H #undef HAVE_STRING_H
/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
*/
#undef HAVE_SYS_DIR_H
/* Define to 1 if you have the <sys/file.h> header file. */ /* Define to 1 if you have the <sys/file.h> header file. */
#undef HAVE_SYS_FILE_H #undef HAVE_SYS_FILE_H
/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'. /* Define to 1 if you have the <sys/mman.h> header file. */
*/ #undef HAVE_SYS_MMAN_H
#undef HAVE_SYS_NDIR_H
/* Define to 1 if you have the <sys/param.h> header file. */ /* Define to 1 if you have the <sys/param.h> header file. */
#undef HAVE_SYS_PARAM_H #undef HAVE_SYS_PARAM_H
@ -212,9 +182,6 @@
/* Define to 1 if you have the ANSI C header files. */ /* Define to 1 if you have the ANSI C header files. */
#undef STDC_HEADERS #undef STDC_HEADERS
/* Define if you can safely include both <string.h> and <strings.h>. */
#undef STRING_WITH_STRINGS
/* Define to 1 if you want to support the --error-handling-script command line /* Define to 1 if you want to support the --error-handling-script command line
option. */ option. */
#undef SUPPORT_ERROR_HANDLING_SCRIPT #undef SUPPORT_ERROR_HANDLING_SCRIPT

2365
ld/configure vendored

File diff suppressed because it is too large Load Diff

View File

@ -23,7 +23,6 @@ AC_CONFIG_SRCDIR(ldmain.c)
AC_CANONICAL_TARGET AC_CANONICAL_TARGET
AC_CANONICAL_BUILD AC_CANONICAL_BUILD
AC_ISC_POSIX
AM_INIT_AUTOMAKE AM_INIT_AUTOMAKE
AM_MAINTAINER_MODE AM_MAINTAINER_MODE
@ -231,6 +230,18 @@ case "${enable_default_hash_style}" in
*) ac_default_emit_gnu_hash=0 ;; *) ac_default_emit_gnu_hash=0 ;;
esac esac
AC_ARG_ENABLE(initfini-array,
[ --disable-initfini-array do not use .init_array/.fini_array sections],
[case "${enableval}" in
yes|no) ;;
*) AC_MSG_ERROR([invalid --enable-initfini-array argument]) ;;
esac], [enable_initfini_array=yes])
AC_SUBST(enable_initfini_array)
if test $enable_initfini_array = yes; then
AC_DEFINE(HAVE_INITFINI_ARRAY, 1,
[Define .init_array/.fini_array sections are available and working.])
fi
GCC_ENABLE([libctf], [yes], [], [Handle .ctf type-info sections]) GCC_ENABLE([libctf], [yes], [], [Handle .ctf type-info sections])
if test "${enable_libctf}" = yes; then if test "${enable_libctf}" = yes; then
AC_DEFINE(ENABLE_LIBCTF, 1, [Handle .ctf type-info sections]) AC_DEFINE(ENABLE_LIBCTF, 1, [Handle .ctf type-info sections])
@ -280,30 +291,25 @@ ACX_PROG_CMP_IGNORE_INITIAL
AC_SUBST(HDEFINES) AC_SUBST(HDEFINES)
AC_SUBST(NATIVE_LIB_DIRS) AC_SUBST(NATIVE_LIB_DIRS)
AC_CHECK_HEADERS(string.h strings.h stdlib.h unistd.h elf-hints.h limits.h locale.h sys/param.h) # We use headers from include/ that check various HAVE_*_H macros, thus
AC_CHECK_HEADERS(fcntl.h sys/file.h sys/time.h sys/stat.h) # should ensure they are set by configure. This is true even when C99
ACX_HEADER_STRING # guarantees they are available.
AC_CHECK_FUNCS(glob mkstemp realpath sbrk setlocale waitpid) # sha1.h and md4.h test HAVE_LIMITS_H, HAVE_SYS_TYPES_H and HAVE_STDINT_H
AC_CHECK_FUNCS(open lseek close) # plugin-api.h tests HAVE_STDINT_H and HAVE_INTTYPES_H
AC_HEADER_DIRENT # Besides those, we need to check anything used in ld/ not in C99.
AC_CHECK_HEADERS(fcntl.h elf-hints.h limits.h inttypes.h stdint.h \
sys/file.h sys/mman.h sys/param.h sys/stat.h sys/time.h \
sys/types.h unistd.h)
AC_CHECK_FUNCS(close glob lseek mkstemp open realpath sbrk waitpid)
BFD_BINARY_FOPEN
AC_CHECK_DECLS([asprintf, environ, sbrk])
dnl AC_CHECK_HEADERS(sys/mman.h)
AC_FUNC_MMAP AC_FUNC_MMAP
AC_SEARCH_LIBS([dlopen], [dl]) AC_SEARCH_LIBS([dlopen], [dl])
AC_ARG_ENABLE(initfini-array,
[ --disable-initfini-array do not use .init_array/.fini_array sections],
[case "${enableval}" in
yes|no) ;;
*) AC_MSG_ERROR([invalid --enable-initfini-array argument]) ;;
esac], [enable_initfini_array=yes])
AC_SUBST(enable_initfini_array)
if test $enable_initfini_array = yes; then
AC_DEFINE(HAVE_INITFINI_ARRAY, 1,
[Define .init_array/.fini_array sections are available and working.])
fi
AC_MSG_CHECKING(for a known getopt prototype in unistd.h) AC_MSG_CHECKING(for a known getopt prototype in unistd.h)
AC_CACHE_VAL(ld_cv_decl_getopt_unistd_h, AC_CACHE_VAL(ld_cv_decl_getopt_unistd_h,
[AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <unistd.h>], [extern int getopt (int, char *const*, const char *);])], [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([#include <unistd.h>], [extern int getopt (int, char *const*, const char *);])],
@ -314,10 +320,6 @@ if test $ld_cv_decl_getopt_unistd_h = yes; then
[Is the prototype for getopt in <unistd.h> in the expected format?]) [Is the prototype for getopt in <unistd.h> in the expected format?])
fi fi
BFD_BINARY_FOPEN
AC_CHECK_DECLS([asprintf, environ, free, getenv, sbrk, strstr])
# Link in zlib if we can. This allows us to read and write # Link in zlib if we can. This allows us to read and write
# compressed CTF sections. # compressed CTF sections.
AM_ZLIB AM_ZLIB

View File

@ -21,8 +21,6 @@
#ifndef LD_H #ifndef LD_H
#define LD_H #define LD_H
#ifdef HAVE_LOCALE_H
#endif
#ifndef SEEK_CUR #ifndef SEEK_CUR
#define SEEK_CUR 1 #define SEEK_CUR 1
#endif #endif
@ -30,7 +28,6 @@
#define SEEK_END 2 #define SEEK_END 2
#endif #endif
#ifdef HAVE_LOCALE_H
#ifndef ENABLE_NLS #ifndef ENABLE_NLS
/* The Solaris version of locale.h always includes libintl.h. If we have /* The Solaris version of locale.h always includes libintl.h. If we have
been configured with --disable-nls then ENABLE_NLS will not be defined been configured with --disable-nls then ENABLE_NLS will not be defined
@ -41,7 +38,6 @@
# define _LIBGETTEXT_H # define _LIBGETTEXT_H
#endif #endif
#include <locale.h> #include <locale.h>
#endif
#ifdef ENABLE_NLS #ifdef ENABLE_NLS
# include <libintl.h> # include <libintl.h>

View File

@ -246,12 +246,10 @@ main (int argc, char **argv)
char *emulation; char *emulation;
long start_time = get_run_time (); long start_time = get_run_time ();
#if defined (HAVE_SETLOCALE) && defined (HAVE_LC_MESSAGES) #ifdef HAVE_LC_MESSAGES
setlocale (LC_MESSAGES, ""); setlocale (LC_MESSAGES, "");
#endif #endif
#if defined (HAVE_SETLOCALE)
setlocale (LC_CTYPE, ""); setlocale (LC_CTYPE, "");
#endif
bindtextdomain (PACKAGE, LOCALEDIR); bindtextdomain (PACKAGE, LOCALEDIR);
textdomain (PACKAGE); textdomain (PACKAGE);

View File

@ -28,30 +28,15 @@
#include "config.h" #include "config.h"
#include <stdio.h> #include <stdio.h>
#ifdef HAVE_SYS_TYPES_H
#include <sys/types.h> #include <sys/types.h>
#endif
#ifdef HAVE_SYS_STAT_H
#include <sys/stat.h> #include <sys/stat.h>
#include <stdarg.h>
#ifdef STRING_WITH_STRINGS
#include <string.h>
#include <strings.h>
#else
#ifdef HAVE_STRING_H
#include <string.h>
#else
#ifdef HAVE_STRINGS_H
#include <strings.h>
#else
extern char *strchr ();
extern char *strrchr ();
#endif #endif
#endif
#endif
#ifdef HAVE_STDLIB_H
#include <stdlib.h> #include <stdlib.h>
#endif #include <string.h>
#include <stdarg.h>
#ifdef HAVE_UNISTD_H #ifdef HAVE_UNISTD_H
#include <unistd.h> #include <unistd.h>
#endif #endif
@ -107,18 +92,6 @@ extern char *strrchr ();
#define SEEK_END 2 #define SEEK_END 2
#endif #endif
#if !HAVE_DECL_STRSTR
extern char *strstr ();
#endif
#if !HAVE_DECL_FREE
extern void free ();
#endif
#if !HAVE_DECL_GETENV
extern char *getenv ();
#endif
#if !HAVE_DECL_ENVIRON #if !HAVE_DECL_ENVIRON
extern char **environ; extern char **environ;
#endif #endif