Commit 7e2a8417 by Tony Reix Committed by Ian Lance Taylor

configure.ac: Check for XCOFF32/XCOFF64.

	* configure.ac: Check for XCOFF32/XCOFF64.  Check for loadquery.
	* filetype.awk: Separate AIX XCOFF32 and XCOFF64.
	* xcoff.c: Add support for AIX XCOFF32 and XCOFF64 formats.
	* configure, config.h.in: Regenerate.

From-SVN: r250590
parent 993323a1
2017-07-26 Tony Reix <tony.reix@atos.net>
* configure.ac: Check for XCOFF32/XCOFF64. Check for loadquery.
* filetype.awk: Separate AIX XCOFF32 and XCOFF64.
* xcoff.c: Add support for AIX XCOFF32 and XCOFF64 formats.
* configure, config.h.in: Regenerate.
2017-07-21 Tony Reix <tony.reix@atos.net> 2017-07-21 Tony Reix <tony.reix@atos.net>
* filetype.awk: Add AIX XCOFF type detection. * filetype.awk: Add AIX XCOFF type detection.
......
...@@ -3,6 +3,9 @@ ...@@ -3,6 +3,9 @@
/* ELF size: 32 or 64 */ /* ELF size: 32 or 64 */
#undef BACKTRACE_ELF_SIZE #undef BACKTRACE_ELF_SIZE
/* XCOFF size: 32 or 64 */
#undef BACKTRACE_XCOFF_SIZE
/* Define to 1 if you have the __atomic functions */ /* Define to 1 if you have the __atomic functions */
#undef HAVE_ATOMIC_FUNCTIONS #undef HAVE_ATOMIC_FUNCTIONS
...@@ -31,6 +34,9 @@ ...@@ -31,6 +34,9 @@
/* Define to 1 if you have the <link.h> header file. */ /* Define to 1 if you have the <link.h> header file. */
#undef HAVE_LINK_H #undef HAVE_LINK_H
/* Define if AIX loadquery is available. */
#undef HAVE_LOADQUERY
/* Define to 1 if you have the <memory.h> header file. */ /* Define to 1 if you have the <memory.h> header file. */
#undef HAVE_MEMORY_H #undef HAVE_MEMORY_H
...@@ -49,6 +55,9 @@ ...@@ -49,6 +55,9 @@
/* Define to 1 if you have the __sync functions */ /* Define to 1 if you have the __sync functions */
#undef HAVE_SYNC_FUNCTIONS #undef HAVE_SYNC_FUNCTIONS
/* Define to 1 if you have the <sys/ldr.h> header file. */
#undef HAVE_SYS_LDR_H
/* Define to 1 if you have the <sys/mman.h> header file. */ /* Define to 1 if you have the <sys/mman.h> header file. */
#undef HAVE_SYS_MMAN_H #undef HAVE_SYS_MMAN_H
......
...@@ -12048,9 +12048,9 @@ elf*) FORMAT_FILE="elf.lo" ;; ...@@ -12048,9 +12048,9 @@ elf*) FORMAT_FILE="elf.lo" ;;
pecoff) FORMAT_FILE="pecoff.lo" pecoff) FORMAT_FILE="pecoff.lo"
backtrace_supports_data=no backtrace_supports_data=no
;; ;;
xcoff) FORMAT_FILE="xcoff.lo" xcoff*) FORMAT_FILE="xcoff.lo"
backtrace_supports_data=no backtrace_supports_data=no
;; ;;
*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: could not determine output file type" >&5 *) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: could not determine output file type" >&5
$as_echo "$as_me: WARNING: could not determine output file type" >&2;} $as_echo "$as_me: WARNING: could not determine output file type" >&2;}
FORMAT_FILE="unknown.lo" FORMAT_FILE="unknown.lo"
...@@ -12072,6 +12072,19 @@ cat >>confdefs.h <<_ACEOF ...@@ -12072,6 +12072,19 @@ cat >>confdefs.h <<_ACEOF
_ACEOF _ACEOF
# XCOFF defines.
xcoffsize=
case "$libbacktrace_cv_sys_filetype" in
xcoff32) xcoffsize=32 ;;
xcoff64) xcoffsize=64 ;;
*) xcoffsize=unused
esac
cat >>confdefs.h <<_ACEOF
#define BACKTRACE_XCOFF_SIZE $xcoffsize
_ACEOF
BACKTRACE_SUPPORTED=0 BACKTRACE_SUPPORTED=0
if test "$backtrace_supported" = "yes"; then if test "$backtrace_supported" = "yes"; then
BACKTRACE_SUPPORTED=1 BACKTRACE_SUPPORTED=1
...@@ -12610,6 +12623,53 @@ $as_echo "#define HAVE_DL_ITERATE_PHDR 1" >>confdefs.h ...@@ -12610,6 +12623,53 @@ $as_echo "#define HAVE_DL_ITERATE_PHDR 1" >>confdefs.h
fi fi
# Check for loadquery.
for ac_header in sys/ldr.h
do :
ac_fn_c_check_header_mongrel "$LINENO" "sys/ldr.h" "ac_cv_header_sys_ldr_h" "$ac_includes_default"
if test "x$ac_cv_header_sys_ldr_h" = x""yes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_SYS_LDR_H 1
_ACEOF
fi
done
if test "$ac_cv_header_sys_ldr_h" = "no"; then
have_loadquery=no
else
if test -n "${with_target_subdir}"; then
# When built as a GCC target library, we can't do a link test.
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
#include <sys/ldr.h>
_ACEOF
if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
$EGREP "loadquery" >/dev/null 2>&1; then :
have_loadquery=yes
else
have_loadquery=no
fi
rm -f conftest*
else
ac_fn_c_check_func "$LINENO" "loadquery" "ac_cv_func_loadquery"
if test "x$ac_cv_func_loadquery" = x""yes; then :
have_loadquery=yes
else
have_loadquery=no
fi
fi
fi
if test "$have_loadquery" = "yes"; then
$as_echo "#define HAVE_LOADQUERY 1" >>confdefs.h
fi
# Check for the fcntl function. # Check for the fcntl function.
if test -n "${with_target_subdir}"; then if test -n "${with_target_subdir}"; then
case "${host}" in case "${host}" in
......
...@@ -233,9 +233,9 @@ elf*) FORMAT_FILE="elf.lo" ;; ...@@ -233,9 +233,9 @@ elf*) FORMAT_FILE="elf.lo" ;;
pecoff) FORMAT_FILE="pecoff.lo" pecoff) FORMAT_FILE="pecoff.lo"
backtrace_supports_data=no backtrace_supports_data=no
;; ;;
xcoff) FORMAT_FILE="xcoff.lo" xcoff*) FORMAT_FILE="xcoff.lo"
backtrace_supports_data=no backtrace_supports_data=no
;; ;;
*) AC_MSG_WARN([could not determine output file type]) *) AC_MSG_WARN([could not determine output file type])
FORMAT_FILE="unknown.lo" FORMAT_FILE="unknown.lo"
backtrace_supported=no backtrace_supported=no
...@@ -252,6 +252,15 @@ elf64) elfsize=64 ;; ...@@ -252,6 +252,15 @@ elf64) elfsize=64 ;;
esac esac
AC_DEFINE_UNQUOTED([BACKTRACE_ELF_SIZE], [$elfsize], [ELF size: 32 or 64]) AC_DEFINE_UNQUOTED([BACKTRACE_ELF_SIZE], [$elfsize], [ELF size: 32 or 64])
# XCOFF defines.
xcoffsize=
case "$libbacktrace_cv_sys_filetype" in
xcoff32) xcoffsize=32 ;;
xcoff64) xcoffsize=64 ;;
*) xcoffsize=unused
esac
AC_DEFINE_UNQUOTED([BACKTRACE_XCOFF_SIZE], [$xcoffsize], [XCOFF size: 32 or 64])
BACKTRACE_SUPPORTED=0 BACKTRACE_SUPPORTED=0
if test "$backtrace_supported" = "yes"; then if test "$backtrace_supported" = "yes"; then
BACKTRACE_SUPPORTED=1 BACKTRACE_SUPPORTED=1
...@@ -330,6 +339,24 @@ if test "$have_dl_iterate_phdr" = "yes"; then ...@@ -330,6 +339,24 @@ if test "$have_dl_iterate_phdr" = "yes"; then
AC_DEFINE(HAVE_DL_ITERATE_PHDR, 1, [Define if dl_iterate_phdr is available.]) AC_DEFINE(HAVE_DL_ITERATE_PHDR, 1, [Define if dl_iterate_phdr is available.])
fi fi
# Check for loadquery.
AC_CHECK_HEADERS(sys/ldr.h)
if test "$ac_cv_header_sys_ldr_h" = "no"; then
have_loadquery=no
else
if test -n "${with_target_subdir}"; then
# When built as a GCC target library, we can't do a link test.
AC_EGREP_HEADER([loadquery], [sys/ldr.h], [have_loadquery=yes],
[have_loadquery=no])
else
AC_CHECK_FUNC([loadquery], [have_loadquery=yes],
[have_loadquery=no])
fi
fi
if test "$have_loadquery" = "yes"; then
AC_DEFINE(HAVE_LOADQUERY, 1, [Define if AIX loadquery is available.])
fi
# Check for the fcntl function. # Check for the fcntl function.
if test -n "${with_target_subdir}"; then if test -n "${with_target_subdir}"; then
case "${host}" in case "${host}" in
......
...@@ -70,7 +70,7 @@ dl_iterate_phdr (int (*callback) (struct dl_phdr_info *, ...@@ -70,7 +70,7 @@ dl_iterate_phdr (int (*callback) (struct dl_phdr_info *,
ELF. We could make this code test and support either possibility, ELF. We could make this code test and support either possibility,
but there is no point. This code only works for the currently but there is no point. This code only works for the currently
running executable, which means that we know the ELF mode at running executable, which means that we know the ELF mode at
configure mode. */ configure time. */
#if BACKTRACE_ELF_SIZE != 32 && BACKTRACE_ELF_SIZE != 64 #if BACKTRACE_ELF_SIZE != 32 && BACKTRACE_ELF_SIZE != 64
#error "Unknown BACKTRACE_ELF_SIZE" #error "Unknown BACKTRACE_ELF_SIZE"
......
...@@ -3,6 +3,6 @@ ...@@ -3,6 +3,6 @@
/\177ELF\002/ { if (NR == 1) { print "elf64"; exit } } /\177ELF\002/ { if (NR == 1) { print "elf64"; exit } }
/\114\001/ { if (NR == 1) { print "pecoff"; exit } } /\114\001/ { if (NR == 1) { print "pecoff"; exit } }
/\144\206/ { if (NR == 1) { print "pecoff"; exit } } /\144\206/ { if (NR == 1) { print "pecoff"; exit } }
/\001\337/ { if (NR == 1) { print "xcoff"; exit } } /\001\337/ { if (NR == 1) { print "xcoff32"; exit } }
/\001\367/ { if (NR == 1) { print "xcoff"; exit } } /\001\367/ { if (NR == 1) { print "xcoff64"; exit } }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment