|
Packit Service |
4684c1 |
# ldd.m4 serial 1
|
|
Packit Service |
4684c1 |
dnl Copyright (C) 2006, 2009-2020 Free Software Foundation, Inc.
|
|
Packit Service |
4684c1 |
dnl This file is free software; the Free Software Foundation
|
|
Packit Service |
4684c1 |
dnl gives unlimited permission to copy and/or distribute it,
|
|
Packit Service |
4684c1 |
dnl with or without modifications, as long as this notice is preserved.
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
# Sets LDDPROG to a command and LDDPOSTPROC to a filter command, such that
|
|
Packit Service |
4684c1 |
# $LDDPROG program $LDDPOSTPROC
|
|
Packit Service |
4684c1 |
# outputs a whitespace-separated list of the dynamically linked dependencies
|
|
Packit Service |
4684c1 |
# of the program, as library names (no full pathnames), or nothing if the
|
|
Packit Service |
4684c1 |
# program is statically linked or if the service is not supported on the given
|
|
Packit Service |
4684c1 |
# system.
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
dnl From Bruno Haible.
|
|
Packit Service |
4684c1 |
|
|
Packit Service |
4684c1 |
AC_DEFUN([gl_LDD],
|
|
Packit Service |
4684c1 |
[
|
|
Packit Service |
4684c1 |
AC_REQUIRE([AC_CANONICAL_HOST])
|
|
Packit Service |
4684c1 |
AC_REQUIRE([AC_PROG_CC])
|
|
Packit Service |
4684c1 |
dnl Default values.
|
|
Packit Service |
4684c1 |
LDDPROG=':'
|
|
Packit Service |
4684c1 |
LDDPOSTPROC=
|
|
Packit Service |
4684c1 |
dnl First try objdump, since it works when cross-compiling.
|
|
Packit Service |
4684c1 |
AC_CHECK_TOOL([OBJDUMP], [objdump], [false])
|
|
Packit Service |
4684c1 |
changequote(,)dnl
|
|
Packit Service |
4684c1 |
if test "$OBJDUMP" != "false"; then
|
|
Packit Service |
4684c1 |
LDDPROG="$OBJDUMP -p"
|
|
Packit Service |
4684c1 |
dnl The output of "LC_ALL=C objdump -p program" of a program or library
|
|
Packit Service |
4684c1 |
dnl looks like this:
|
|
Packit Service |
4684c1 |
dnl
|
|
Packit Service |
4684c1 |
dnl libnet.so: file format elf32-i386
|
|
Packit Service |
4684c1 |
dnl
|
|
Packit Service |
4684c1 |
dnl Program Header:
|
|
Packit Service |
4684c1 |
dnl LOAD off 0x00000000 vaddr 0x00000000 paddr 0x00000000 align 2**12
|
|
Packit Service |
4684c1 |
dnl filesz 0x0001391d memsz 0x0001391d flags r-x
|
|
Packit Service |
4684c1 |
dnl LOAD off 0x00013920 vaddr 0x00014920 paddr 0x00014920 align 2**12
|
|
Packit Service |
4684c1 |
dnl filesz 0x00001874 memsz 0x0001b020 flags rw-
|
|
Packit Service |
4684c1 |
dnl DYNAMIC off 0x00015104 vaddr 0x00016104 paddr 0x00016104 align 2**2
|
|
Packit Service |
4684c1 |
dnl filesz 0x00000090 memsz 0x00000090 flags rw-
|
|
Packit Service |
4684c1 |
dnl
|
|
Packit Service |
4684c1 |
dnl Dynamic Section:
|
|
Packit Service |
4684c1 |
dnl NEEDED libroot.so
|
|
Packit Service |
4684c1 |
dnl SONAME libnet.so
|
|
Packit Service |
4684c1 |
dnl SYMBOLIC 0x0
|
|
Packit Service |
4684c1 |
dnl INIT 0x2aec
|
|
Packit Service |
4684c1 |
dnl FINI 0x12a2c
|
|
Packit Service |
4684c1 |
dnl HASH 0x94
|
|
Packit Service |
4684c1 |
dnl STRTAB 0x1684
|
|
Packit Service |
4684c1 |
dnl SYMTAB 0x774
|
|
Packit Service |
4684c1 |
dnl STRSZ 0xbd5
|
|
Packit Service |
4684c1 |
dnl SYMENT 0x10
|
|
Packit Service |
4684c1 |
dnl PLTGOT 0x15f20
|
|
Packit Service |
4684c1 |
dnl PLTRELSZ 0x320
|
|
Packit Service |
4684c1 |
dnl PLTREL 0x11
|
|
Packit Service |
4684c1 |
dnl JMPREL 0x27cc
|
|
Packit Service |
4684c1 |
dnl REL 0x225c
|
|
Packit Service |
4684c1 |
dnl RELSZ 0x570
|
|
Packit Service |
4684c1 |
dnl RELENT 0x8
|
|
Packit Service |
4684c1 |
LDDPOSTPROC="2>/dev/null | sed -n -e 's,^ NEEDED *\\([^ ].*\\)\$,\\1,p'"
|
|
Packit Service |
4684c1 |
else
|
|
Packit Service |
4684c1 |
if test "$cross_compiling" = no; then
|
|
Packit Service |
4684c1 |
dnl Not cross-compiling. Try system dependent vendor tools.
|
|
Packit Service |
4684c1 |
case "$host_os" in
|
|
Packit Service |
4684c1 |
aix*)
|
|
Packit Service |
4684c1 |
LDDPROG="dump -H"
|
|
Packit Service |
4684c1 |
dnl The output of "LC_ALL=C dump -H program" looks like this:
|
|
Packit Service |
4684c1 |
dnl
|
|
Packit Service |
4684c1 |
dnl program:
|
|
Packit Service |
4684c1 |
dnl
|
|
Packit Service |
4684c1 |
dnl ***Loader Section***
|
|
Packit Service |
4684c1 |
dnl Loader Header Information
|
|
Packit Service |
4684c1 |
dnl VERSION# #SYMtableENT #RELOCent LENidSTR
|
|
Packit Service |
4684c1 |
dnl 0x00000001 0x00000005 0x0000000d 0x0000001e
|
|
Packit Service |
4684c1 |
dnl
|
|
Packit Service |
4684c1 |
dnl #IMPfilID OFFidSTR LENstrTBL OFFstrTBL
|
|
Packit Service |
4684c1 |
dnl 0x00000002 0x00000134 0x0000000d 0x00000152
|
|
Packit Service |
4684c1 |
dnl
|
|
Packit Service |
4684c1 |
dnl
|
|
Packit Service |
4684c1 |
dnl ***Import File Strings***
|
|
Packit Service |
4684c1 |
dnl INDEX PATH BASE MEMBER
|
|
Packit Service |
4684c1 |
dnl 0 /usr/lib:/lib
|
|
Packit Service |
4684c1 |
dnl 1 libc.a shr.o
|
|
Packit Service |
4684c1 |
dnl
|
|
Packit Service |
4684c1 |
LDDPOSTPROC="2>/dev/null | sed -e '/^[^0-9]/d' -e '/^0x/d' | sed -n -e 's,^[0-9]* *\\([^ ]*\\).*\$,\\1,p' | sed -e 's,^.*/,,'"
|
|
Packit Service |
4684c1 |
;;
|
|
Packit Service |
4684c1 |
darwin*)
|
|
Packit Service |
4684c1 |
LDDPROG="otool -L"
|
|
Packit Service |
4684c1 |
dnl The output of "otool -L program" looks like this:
|
|
Packit Service |
4684c1 |
dnl program:
|
|
Packit Service |
4684c1 |
dnl /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 71.1.4)
|
|
Packit Service |
4684c1 |
LDDPOSTPROC="2>/dev/null | sed -n -e 's,^ \\([^ ]*\\).*\$,\\1,p' | sed -e 's,^.*/,,'"
|
|
Packit Service |
4684c1 |
;;
|
|
Packit Service |
4684c1 |
hpux*)
|
|
Packit Service |
4684c1 |
LDDPROG="chatr"
|
|
Packit Service |
4684c1 |
dnl The output of "LC_ALL=C chatr program" looks like this:
|
|
Packit Service |
4684c1 |
dnl program:
|
|
Packit Service |
4684c1 |
dnl shared executable
|
|
Packit Service |
4684c1 |
dnl shared library dynamic path search:
|
|
Packit Service |
4684c1 |
dnl SHLIB_PATH disabled second
|
|
Packit Service |
4684c1 |
dnl embedded path disabled first Not Defined
|
|
Packit Service |
4684c1 |
dnl shared library list:
|
|
Packit Service |
4684c1 |
dnl dynamic /usr/lib/libc.2
|
|
Packit Service |
4684c1 |
dnl shared library binding:
|
|
Packit Service |
4684c1 |
dnl deferred
|
|
Packit Service |
4684c1 |
dnl global hash table disabled
|
|
Packit Service |
4684c1 |
dnl plabel caching disabled
|
|
Packit Service |
4684c1 |
dnl global hash array size:1103
|
|
Packit Service |
4684c1 |
dnl global hash array nbuckets:3
|
|
Packit Service |
4684c1 |
dnl shared vtable support disabled
|
|
Packit Service |
4684c1 |
dnl static branch prediction disabled
|
|
Packit Service |
4684c1 |
dnl executable from stack: D (default)
|
|
Packit Service |
4684c1 |
dnl kernel assisted branch prediction enabled
|
|
Packit Service |
4684c1 |
dnl lazy swap allocation disabled
|
|
Packit Service |
4684c1 |
dnl text segment locking disabled
|
|
Packit Service |
4684c1 |
dnl data segment locking disabled
|
|
Packit Service |
4684c1 |
dnl third quadrant private data space disabled
|
|
Packit Service |
4684c1 |
dnl fourth quadrant private data space disabled
|
|
Packit Service |
4684c1 |
dnl third quadrant global data space disabled
|
|
Packit Service |
4684c1 |
dnl data page size: D (default)
|
|
Packit Service |
4684c1 |
dnl instruction page size: D (default)
|
|
Packit Service |
4684c1 |
dnl nulptr references disabled
|
|
Packit Service |
4684c1 |
dnl shared library private mapping disabled
|
|
Packit Service |
4684c1 |
dnl shared library text merging disabled
|
|
Packit Service |
4684c1 |
dnl
|
|
Packit Service |
4684c1 |
dnl or like this:
|
|
Packit Service |
4684c1 |
dnl a.out:
|
|
Packit Service |
4684c1 |
dnl 32-bit ELF executable
|
|
Packit Service |
4684c1 |
dnl shared library dynamic path search:
|
|
Packit Service |
4684c1 |
dnl LD_LIBRARY_PATH enabled first
|
|
Packit Service |
4684c1 |
dnl SHLIB_PATH enabled second
|
|
Packit Service |
4684c1 |
dnl embedded path enabled third /usr/lib/hpux32:/opt/langtools/lib/hpux32
|
|
Packit Service |
4684c1 |
dnl shared library list:
|
|
Packit Service |
4684c1 |
dnl libc.so.1
|
|
Packit Service |
4684c1 |
dnl shared library binding:
|
|
Packit Service |
4684c1 |
dnl deferred
|
|
Packit Service |
4684c1 |
dnl global hash table disabled
|
|
Packit Service |
4684c1 |
dnl global hash table size 1103
|
|
Packit Service |
4684c1 |
dnl shared library mapped private disabled
|
|
Packit Service |
4684c1 |
dnl shared library segment merging disabled
|
|
Packit Service |
4684c1 |
dnl shared vtable support disabled
|
|
Packit Service |
4684c1 |
dnl explicit unloading disabled
|
|
Packit Service |
4684c1 |
dnl segments:
|
|
Packit Service |
4684c1 |
dnl index type address flags size
|
|
Packit Service |
4684c1 |
dnl 7 text 04000000 z---c- D (default)
|
|
Packit Service |
4684c1 |
dnl 8 data 40000000 ---m-- D (default)
|
|
Packit Service |
4684c1 |
dnl executable from stack: D (default)
|
|
Packit Service |
4684c1 |
dnl kernel assisted branch prediction enabled
|
|
Packit Service |
4684c1 |
dnl lazy swap allocation for dynamic segments disabled
|
|
Packit Service |
4684c1 |
dnl nulptr references disabled
|
|
Packit Service |
4684c1 |
dnl address space model: default
|
|
Packit Service |
4684c1 |
dnl caliper dynamic instrumentation disabled
|
|
Packit Service |
4684c1 |
dnl
|
|
Packit Service |
4684c1 |
LDDPOSTPROC="2>/dev/null | sed -e '1,/shared library list:/d' -e '/shared library binding:/,\$d' | sed -e 's,^.*[ ]\\([^ ][^ ]*\\)\$,\\1,' | sed -e 's,^.*/,,'"
|
|
Packit Service |
4684c1 |
;;
|
|
Packit Service |
4684c1 |
irix*)
|
|
Packit Service |
4684c1 |
LDDPROG="elfdump -Dl"
|
|
Packit Service |
4684c1 |
dnl The output of "elfdump -Dl program" looks like this:
|
|
Packit Service |
4684c1 |
dnl
|
|
Packit Service |
4684c1 |
dnl program:
|
|
Packit Service |
4684c1 |
dnl
|
|
Packit Service |
4684c1 |
dnl **** MIPS LIBLIST INFORMATION ****
|
|
Packit Service |
4684c1 |
dnl .liblist :
|
|
Packit Service |
4684c1 |
dnl [INDEX] Timestamp Checksum Flags Name Version
|
|
Packit Service |
4684c1 |
dnl [1] Oct 2 05:19:12 1999 0x867bf7a8 ----- libc.so.1 sgi1.0
|
|
Packit Service |
4684c1 |
dnl
|
|
Packit Service |
4684c1 |
LDDPOSTPROC="2>/dev/null | sed -n -e 's,^[[][0-9]*[]].* 0x[^ ]* [^ ][^ ]* \\([^ ][^ ]*\\).*\$,\\1,p' | sed -e 's,^.*/,,'"
|
|
Packit Service |
4684c1 |
;;
|
|
Packit Service |
4684c1 |
linux* | gnu* | kfreebsd*-gnu | knetbsd*-gnu) # glibc-based systems
|
|
Packit Service |
4684c1 |
LDDPROG="ldd"
|
|
Packit Service |
4684c1 |
dnl The output of "ldd program" looks like this:
|
|
Packit Service |
4684c1 |
dnl libc.so.6 => /lib/libc.so.6 (0x4002d000)
|
|
Packit Service |
4684c1 |
dnl /lib/ld-linux.so.2 (0x40000000)
|
|
Packit Service |
4684c1 |
LDDPOSTPROC="2>/dev/null | sed -n -e 's,^ \\([^ ][^ ]*\\).*\$,\\1,p' | sed -e 's,^.*/,,'"
|
|
Packit Service |
4684c1 |
;;
|
|
Packit Service |
4684c1 |
osf*)
|
|
Packit Service |
4684c1 |
LDDPROG="odump -Dl"
|
|
Packit Service |
4684c1 |
dnl The output of "odump -Dl program" looks like this:
|
|
Packit Service |
4684c1 |
dnl
|
|
Packit Service |
4684c1 |
dnl ***LIBRARY LIST SECTION***
|
|
Packit Service |
4684c1 |
dnl Name Time-Stamp CheckSum Flags Version
|
|
Packit Service |
4684c1 |
dnl program:
|
|
Packit Service |
4684c1 |
dnl libc.so Dec 30 00:09:30 1997 0x5e955f9b 0 osf.1
|
|
Packit Service |
4684c1 |
dnl
|
|
Packit Service |
4684c1 |
LDDPOSTPROC="2>/dev/null | sed -n -e 's,^ \\([^ ][^ ]*\\).*,\\1,p' | sed -e '/^Name\$/d' | sed -e 's,^.*/,,'"
|
|
Packit Service |
4684c1 |
;;
|
|
Packit Service |
4684c1 |
solaris*)
|
|
Packit Service |
4684c1 |
LDDPROG="ldd"
|
|
Packit Service |
4684c1 |
dnl The output of "ldd program" looks like this:
|
|
Packit Service |
4684c1 |
dnl libc.so.1 => /usr/lib/libc.so.1
|
|
Packit Service |
4684c1 |
dnl libdl.so.1 => /usr/lib/libdl.so.1
|
|
Packit Service |
4684c1 |
dnl /usr/platform/SUNW,Ultra-5_10/lib/libc_psr.so.1
|
|
Packit Service |
4684c1 |
dnl The first sed collects the indented lines.
|
|
Packit Service |
4684c1 |
dnl The second sed extracts the left-hand part.
|
|
Packit Service |
4684c1 |
dnl The third sed removes directory specifications.
|
|
Packit Service |
4684c1 |
LDDPOSTPROC="2>/dev/null | sed -n -e 's,^ \\([^ ].*\\)\$,\\1,p' | sed -e 's, =>.*\$,,' | sed -e 's,^.*/,,'"
|
|
Packit Service |
4684c1 |
;;
|
|
Packit Service |
4684c1 |
esac
|
|
Packit Service |
4684c1 |
fi
|
|
Packit Service |
4684c1 |
fi
|
|
Packit Service |
4684c1 |
dnl Avoid locale dependencies.
|
|
Packit Service |
4684c1 |
if test "$LDDPROG" != ":"; then
|
|
Packit Service |
4684c1 |
LDDPROG="LC_ALL=C $LDDPROG"
|
|
Packit Service |
4684c1 |
fi
|
|
Packit Service |
4684c1 |
changequote([,])dnl
|
|
Packit Service |
4684c1 |
AC_SUBST([LDDPROG])
|
|
Packit Service |
4684c1 |
AC_SUBST([LDDPOSTPROC])
|
|
Packit Service |
4684c1 |
])
|