> On 09/ 8/10 01:44 AM, Ian Lance Taylor wrote: >> "Dr. David Kirkby"<david.kirkby@xxxxxxxxxx> writes: >>> IMHO, it would be very sensible if gcc had an option to configure >>> such that the location of the run-time libraries was hard-coded in. >>> Then, as long as "gcc" is in the path, the libraries would be found. GCC on Solaris, UNIX, Linux or your microwave if you please. ------------------------------------------------------------- David, there is no magic pill. No cure for the common cold ( yet ) and no way will an operating system exec a binary and then simply perform magic and go find any lib that you may need regardless of where it is installed or buried. That won't happen. If you can prove me wrong than I'm more than happy to eat my socks with ketchup and tarter sauce. ( ewww ) I may regret saying that someday. Look .. let me demonstrate the issue you bring up because I think GCC is near and dear to my heart as much as I love Sun Studio. Please keep in mind that Sun Studio 12 is closed, proprietary, secret and with a bucket of patches that require a bucket of money. Sun Studio 11 and 12 are a thing of beauty that seem to work very very well and Sun Studio 12 Update 1 should be avoided like the mad dog that it is. I may be wrong and David, if it were any of a billion other names on maillists I wouldn't make the effort but you are so involved in so many open source things that I just have to jump in and help, talk, perhaps even whine a little with you. You do good things and I have my eyes on Sage too you know! :-) The issue you are running into is related to the way the run time linker deals with the needed libs in a binary. When you compile a binary you *should* also specify where to find any needed dynamic libraries if they are not in the default places. The only real default place is /usr/lib and maybe /usr/lib/64. I hope you are familiar with isalist also. When the in memory image of the executable is being built the run time linker will do a breadth-first search for any and all libs needed. So if you want to run the binary "hello" which needs a few things then the run time linker will look in the dynamic section of the ELF header to see what is "NEEDED". Here is an example : bash-4.1$ uname -a SunOS orcus 5.10 Generic_142901-14 i86pc i386 i86pc bash-4.1$ cat /etc/release Solaris 10 10/09 s10x_u8wos_08a X86 Copyright 2009 Sun Microsystems, Inc. All Rights Reserved. Use is subject to license terms. Assembled 16 September 2009 bash-4.1$ bash-4.1$ env | sort AR=/opt/csw/bin/gar AS=/opt/csw/bin/gas CC=gcc CFLAGS=-m64 -v -march=opteron -mno-mmx -mno-sse -malign-double -mpreferred-stack-boundary=8 COLUMNS=80 CONFIG_SHELL=/bin/bash CPPFLAGS=-I/opt/csw/include CXX=g++ EDITOR=/usr/xpg4/bin/vi HOME=/home/dclarke LANG=C LC_ALL=C LINES=24 LOGNAME=dclarke MAIL=/usr/mail/dclarke NM=/opt/csw/bin/gnm OBJCOPY=/opt/csw/bin/gobjcopy OBJDUMP=/opt/csw/bin/gobjdump OLDPWD=/export/fibre_zpool2/dclarke/build/m4/i386 PATH=/opt/csw/gcc4/bin:/opt/csw/bin:/usr/xpg6/bin:/usr/xpg4/bin:/usr/ccs/bin:/usr/bin:/sbin:/bin:/usr/sbin:/usr/dt/bin:/usr/openwin/bin:/opt/schily/bin PWD=/export/fibre_zpool2/dclarke/build/test RANLIB=/opt/csw/bin/granlib SHELL=/bin/bash SHLVL=1 SRC=/shared/gar/src SSH_CLIENT=192.168.35.7 49598 22 SSH_CONNECTION=192.168.35.7 49598 192.168.35.62 22 SSH_TTY=/dev/pts/2 STRIP=/opt/csw/bin/gstrip TERM=vt100 TZ=GMT0 USER=dclarke VISUAL=/usr/xpg4/bin/vi _=/usr/xpg4/bin/env bash-4.1$ cat -n hello.c 1 #include <stdio.h> 2 3 int 4 main(int argc, char *argv[]) 5 { 6 printf ( "Hello World!\n" ); 7 return (0); 8 } bash-4.1$ gcc -m64 -mno-mmx -mno-sse -malign-double -mpreferred-stack-boundary=8 hello.c -o hello bash-4.1$ file hello hello: ELF 64-bit LSB executable AMD64 Version 1, dynamically linked, not stripped, no debugging information available bash-4.1$ mcs -p hello hello: @(#)SunOS 5.10 Generic January 2005 @(#)SunOS 5.10 Generic January 2005 @(#)SunOS 5.10 Generic January 2005 GCC: (Blastwave.org Inc. Mon Aug 23 11:16:32 GMT 2010) 4.5.1 GCC: (Blastwave.org Inc. Mon Aug 23 11:16:32 GMT 2010) 4.5.1 GCC: (Blastwave.org Inc. Mon Aug 23 11:16:32 GMT 2010) 4.5.1 @(#)SunOS 5.10 Generic January 2005 ld: Software Generation Utilities - Solaris Link Editors: 5.10-1.497 bash-4.1$ elfdump -d hello Dynamic Section: .dynamic index tag value [0] NEEDED 0x107 libc.so.1 [1] INIT 0x4009d0 [2] FINI 0x4009e0 [3] HASH 0x400208 [4] STRTAB 0x400540 [5] STRSZ 0x11a [6] SYMTAB 0x4002e8 [7] SYMENT 0x18 [8] CHECKSUM 0x929e [9] VERNEED 0x400660 [10] VERNEEDNUM 0x1 [11] PLTRELSZ 0xa8 [12] PLTREL 0x7 [13] JMPREL 0x4006c8 [14] RELA 0x400680 [15] RELASZ 0xf0 [16] RELAENT 0x18 [17] DEBUG 0 [18] FEATURE_1 0x1 [ PARINIT ] [19] FLAGS 0 0 [20] FLAGS_1 0 0 [21] PLTGOT 0x410a00 [22] NULL 0 bash-4.1$ dumpstabs hello | head -8 Elf Header: Ident = "\x7fELF", Class = 2 (64), Data = 1 (2LSB), Id ver = 1 (CURRENT) Type = 2 (EXEC), Machine = 62 (OUT_OF_RANGE), Version = 1 (CURRENT) Start address = 0x004007f0, Phdr offset = 0x00000040 Shdr offset = 0x000017f0, File flags = 0x00000000 Ehdr size = 64, Phdr size = 56, Num Phdrs = 6 Shdr size = 64, Num Shdrs = 26, Str Index = 25 bash-4.1$ ./hello Hello World! Now if you look carefully you will see that only libc.so.1 is needed by that binary "hello" and nothing else. Well where is that located? There is no path there. Just a shared object name or SONAME. Well where is that located and how does the run time linker figure out where to look for it? bash-4.1$ LD_DEBUG=files bash-4.1$ export LD_DEBUG bash-4.1$ ./hello 08706: 08706: hardware capabilities - 0x1ff7 [ SSE2 SSE FXSR AMD_3DNowx AMD_3DNow AMD_MMX MMX CMOV AMD_SYSC CX8 TSC FPU ] 08706: 08706: 08706: configuration file=/var/ld/64/ld.config: unable to process file 08706: 08706: file=/export/fibre_zpool2/dclarke/build/test/hello [ ELF ]; generating link map 08706: dynamic: 0x410a88 base: 0x400000 08706: size: 0x10cb0 entry: 0x400810 08706: lmid: BASE lmco: 0x10 08706: 08706: file=hello; analyzing [ RTLD_LAZY RTLD_GLOBAL RTLD_WORLD RTLD_NODELETE ] 08706: 08706: file=libc.so.1; needed by hello 08706: file=/lib/64/libc.so.1 [ ELF ]; generating link map 08706: dynamic: 0xfffffd7fff1db578 base: 0xfffffd7fff090000 08706: size: 0x157000 entry: 0xfffffd7fff090120 08706: lmid: BASE lmco: 0x10 08706: 08706: file=/lib/64/libc.so.1; analyzing [ RTLD_LAZY RTLD_GLOBAL RTLD_WORLD RTLD_NODELETE ] 08706: 08706: 1: file=/lib/64/libc.so.1; filter for /usr/lib/amd64/ld.so.1 08706: 1: 08706: 1: file=/usr/lib/amd64/ld.so.1; filtered by /lib/64/libc.so.1 08706: 1: 08706: 1: 08706: 1: transferring control: hello 08706: 1: Hello World! 08706: 1: bash-4.1$ Well that sure is educational. First you see this : 08706: hardware capabilities - 0x1ff7 [ SSE2 SSE FXSR AMD_3DNowx AMD_3DNow AMD_MMX MMX CMOV AMD_SYSC CX8 TSC FPU ] The pid is 8706 and first thing to determine is what can this machine run? Well it looks like those flags 0x1ff7 result in a pile of things like sse2 and mmx etc. If the binary to be executed needs those features then we are okay to run. This looks like cause for concern but it isn't : configuration file=/var/ld/64/ld.config: unable to process file Then the actual executable file is looked at : file=/export/fibre_zpool2/dclarke/build/test/hello Then what dynamic libs are NEEDED ? I mean it all makes sense to me. If the run time linker needs something then it looked in the default locations. If you don't specify where a SONAME should be found with a RUNPATH then you're in deep trouble. You may need LD_OPTIONS set to find libraries and that is expected when the vendor of the compiler is not also the manufacturer of the OS. Consider the need for the lib libstdc++.so.6.0.14. FIRST TRY THIS : C++ with no LD_OPTIONS bash-4.1$ cat -n hello.cpp 1 #include <iostream> 2 3 int main() 4 { 5 std::cout << "Hello, world!\n"; 6 } bash-4.1$ g++ -m64 -mno-mmx -mno-sse -malign-double -mpreferred-stack-boundary=8 hello.cpp -o hello bash-4.1$ file hello hello: ELF 64-bit LSB executable AMD64 Version 1, dynamically linked, not stripped, no debugging information available bash-4.1$ elfdump -d hello Dynamic Section: .dynamic index tag value [0] NEEDED 0x19d libstdc++.so.6 [1] NEEDED 0x1ac libm.so.2 [2] NEEDED 0x174 libgcc_s.so.1 [3] NEEDED 0x18a libc.so.1 [4] INIT 0x400ca0 [5] FINI 0x400cb0 [6] HASH 0x4002c8 [7] STRTAB 0x400658 [8] STRSZ 0x1b6 [9] SYMTAB 0x4003b8 [10] SYMENT 0x18 [11] CHECKSUM 0x3cf6 [12] VERNEED 0x400810 [13] VERNEEDNUM 0x2 [14] PLTRELSZ 0xd8 [15] PLTREL 0x7 [16] JMPREL 0x4008b0 [17] RELA 0x400850 [18] RELASZ 0x138 [19] RELAENT 0x18 [20] DEBUG 0 [21] FEATURE_1 0x1 [ PARINIT ] [22] FLAGS 0 0 [23] FLAGS_1 0 0 [24] PLTGOT 0x410cd0 [25] NULL 0 bash-4.1$ ./hello ld.so.1: hello: fatal: libstdc++.so.6: open failed: No such file or directory Killed Of course. You would expect that with anything that needs a lib that is not in /usr/lib/{%ARCH%} right ? Set your LD_OPTIONS for when you compile. bash-4.1$ LD_OPTIONS=\-R/opt/csw/lib/\$ISALIST:/opt/csw/lib\ \-L/opt/csw/lib/\$ISALIST:/opt/csw/lib bash-4.1$ export LD_OPTIONS bash-4.1$ bash-4.1$ g++ -m64 -mno-mmx -mno-sse -malign-double -mpreferred-stack-boundary=8 hello.cpp -o hello bash-4.1$ ldd hello libstdc++.so.6 => /opt/csw/lib/amd64/libstdc++.so.6 libm.so.2 => /lib/64/libm.so.2 libgcc_s.so.1 => /opt/csw/lib/amd64/libgcc_s.so.1 libc.so.1 => /lib/64/libc.so.1 This is because the actual binary now has a expected place to look for the libs it needs that are OTHER then /usr/lib : bash-4.1$ elfdump -d hello Dynamic Section: .dynamic index tag value [0] NEEDED 0x19d libstdc++.so.6 [1] NEEDED 0x1ac libm.so.2 [2] NEEDED 0x174 libgcc_s.so.1 [3] NEEDED 0x18a libc.so.1 [4] INIT 0x400cc0 [5] FINI 0x400cd0 [6] RUNPATH 0x1b6 /opt/csw/lib/$ISALIST:/opt/csw/lib [7] RPATH 0x1b6 /opt/csw/lib/$ISALIST:/opt/csw/lib [8] HASH 0x4002c8 [9] STRTAB 0x400658 [10] STRSZ 0x1d9 [11] SYMTAB 0x4003b8 [12] SYMENT 0x18 [13] CHECKSUM 0x4371 [14] VERNEED 0x400838 [15] VERNEEDNUM 0x2 [16] PLTRELSZ 0xd8 [17] PLTREL 0x7 [18] JMPREL 0x4008d8 [19] RELA 0x400878 [20] RELASZ 0x138 [21] RELAENT 0x18 [22] DEBUG 0 [23] FEATURE_1 0x1 [ PARINIT ] [24] FLAGS 0 0 [25] FLAGS_1 0 0 [26] PLTGOT 0x410cf0 [27] NULL 0 bash-4.1$ bash-4.1$ ./hello Hello, world! Want to see that with LD_DEBUG=files ? bash-4.1$ ./hello 18554: 18554: hardware capabilities - 0x1ff7 [ SSE2 SSE FXSR AMD_3DNowx AMD_3DNow AMD_MMX MMX CMOV AMD_SYSC CX8 TSC FPU ] 18554: 18554: 18554: configuration file=/var/ld/64/ld.config: unable to process file 18554: 18554: file=/export/medusa/dclarke/build/test/hello [ ELF ]; generating link map 18554: dynamic: 0x410d68 base: 0x400000 18554: size: 0x11110 entry: 0x400a50 18554: lmid: BASE lmco: 0x10 18554: 18554: file=hello; analyzing [ RTLD_LAZY RTLD_GLOBAL RTLD_WORLD RTLD_NODELETE ] 18554: 18554: file=libstdc++.so.6; needed by hello 18554: file=/opt/csw/lib/amd64/libstdc++.so.6 [ ELF ]; generating link map 18554: dynamic: 0xfffffd7fff1c5648 base: 0xfffffd7fff0b0000 18554: size: 0x132000 entry: 0xfffffd7fff0b0000 18554: lmid: BASE lmco: 0x10 18554: 18554: file=libm.so.2; needed by hello 18554: file=/lib/64/libm.so.2 [ ELF ]; generating link map 18554: dynamic: 0xfffffd7fff0a5778 base: 0xfffffd7fff030000 18554: size: 0x7a000 entry: 0xfffffd7fff030000 18554: lmid: BASE lmco: 0x10 18554: 18554: file=libgcc_s.so.1; needed by hello 18554: file=/opt/csw/lib/amd64/libgcc_s.so.1 [ ELF ]; generating link map 18554: dynamic: 0xfffffd7fff024db8 base: 0xfffffd7fff000000 18554: size: 0x26000 entry: 0xfffffd7fff000000 18554: lmid: BASE lmco: 0x10 18554: 18554: file=libc.so.1; needed by hello 18554: file=/lib/64/libc.so.1 [ ELF ]; generating link map 18554: dynamic: 0xfffffd7ffefeb578 base: 0xfffffd7ffeea0000 18554: size: 0x157000 entry: 0xfffffd7ffeea0120 18554: lmid: BASE lmco: 0x10 18554: 18554: file=/opt/csw/lib/amd64/libstdc++.so.6; analyzing [ RTLD_LAZY RTLD_GLOBAL RTLD_WORLD RTLD_NODELETE ] 18554: 18554: file=libm.so.2; needed by /opt/csw/lib/amd64/libstdc++.so.6 18554: 18554: file=libgcc_s.so.1; needed by /opt/csw/lib/amd64/libstdc++.so.6 18554: 18554: file=/lib/64/libm.so.2; analyzing [ RTLD_LAZY RTLD_GLOBAL RTLD_WORLD RTLD_NODELETE ] 18554: 18554: file=libc.so.1; needed by /lib/64/libm.so.2 18554: 18554: file=/opt/csw/lib/amd64/libgcc_s.so.1; analyzing [ RTLD_LAZY RTLD_GLOBAL RTLD_WORLD RTLD_NODELETE ] 18554: 18554: file=libc.so.1; needed by /opt/csw/lib/amd64/libgcc_s.so.1 18554: 18554: file=/lib/64/libc.so.1; analyzing [ RTLD_LAZY RTLD_GLOBAL RTLD_WORLD RTLD_NODELETE ] 18554: 18554: 1: file=/lib/64/libc.so.1; filter for /usr/lib/amd64/ld.so.1 18554: 1: 18554: 1: file=/usr/lib/amd64/ld.so.1; filtered by /lib/64/libc.so.1 18554: 1: 18554: 1: 18554: 1: transferring control: hello 18554: 1: Hello, world! 18554: 1: make sense ? Lastly ... why does this compile correctly in the first place with those libs under /opt/csw/lib ? Here is why : bash-4.1$ dumpstabs -d /opt/csw/gcc4/libexec/gcc/i386-pc-solaris2.10/4.5.1/cc1plus Dynamic table -- 28 entries 0: Tag = 1 (NEEDED) libiconv.so.2 1: Tag = 1 (NEEDED) libelf.so.1 2: Tag = 1 (NEEDED) libc.so.1 3: Tag = 12 (INIT) 0x0888d560 4: Tag = 13 (FINI) 0x0888d580 5: Tag = 0x1d (unknown) 6: Tag = 15 (RPATH) /opt/csw/lib/$ISALIST:/opt/csw/lib:/opt/csw/gcc4/lib/$ISALIST:/opt/csw/gcc4/lib:/opt/csw/lib 7: Tag = 4 (HASH) 0x080500e8 8: Tag = 5 (STRTAB) 0x0808f7b8 9: Tag = 10 (STRSZ) 209311 10: Tag = 6 (SYMTAB) 0x08065348 11: Tag = 11 (SYMENT) 16 12: Tag = 1879047672 (CHECKSUM) 0x0000c67b 13: Tag = 1879048190 (VERNEED) 0x080c2958 14: Tag = 1879048191 (VERNEEDNUM) 1 15: Tag = 22 (TEXTREL) 16: Tag = 2 (PLTRELSZ) 984 17: Tag = 20 (PLTREL) 17 18: Tag = 23 (JMPREL) 0x080c29c8 19: Tag = 17 (REL) 0x080c2988 20: Tag = 18 (RELSZ) 1048 21: Tag = 19 (RELENT) 8 22: Tag = 21 (DEBUG) 0x00000000 23: Tag = 1879047676 (FEATURE_1) PARINIT 24: Tag = 30 (DT_FLAGS) TEXTREL 25: Tag = 1879048187 (FLAGS_1) 26: Tag = 3 (PLTGOT) 0x089ec5c4 27: Tag = 0 (NULL) bash-4.1$ See the RPATH there ? -- Dennis Clarke dclarke@xxxxxxxxxxxxxx <- Email related to the open source Solaris dclarke@xxxxxxxxxxxxx <- Email related to open source for Solaris ps : here are the gory details of the GCC 4.5.1 compiler doing a very simple compile of hello.cpp seen above : bash-4.1$ g++ -m64 -mno-mmx -mno-sse -malign-double -mpreferred-stack-boundary=8 hello.cpp -o hello 18399: 18399: hardware capabilities - 0x1ff7 [ SSE2 SSE FXSR AMD_3DNowx AMD_3DNow AMD_MMX MMX CMOV AMD_SYSC CX8 TSC FPU ] 18399: 18399: 18399: configuration file=/var/ld/ld.config: unable to process file 18399: 18399: file=/opt/csw/gcc4/bin/g++ [ ELF ]; generating link map 18399: dynamic: 0x80a2e7c base: 0x8050000 18399: size: 0x546cc entry: 0x80576e0 18399: lmid: BASE lmco: 0xc 18399: 18399: file=/opt/csw/gcc4/bin/g++; analyzing [ RTLD_LAZY RTLD_GLOBAL RTLD_WORLD RTLD_NODELETE ] 18399: 18399: file=libiconv.so.2; needed by /opt/csw/gcc4/bin/g++ 18399: 18399: file=/opt/csw/lib/amd64/libiconv.so.2; rejected: wrong ELF class: ELFCLASS64 18399: 18399: file=/opt/csw/lib/pentium_pro/libiconv.so.2 [ ELF ]; generating link map 18399: dynamic: 0xfee3a3c4 base: 0xfed30000 18399: size: 0x10b000 entry: 0xfed30094 18399: lmid: BASE lmco: 0xc 18399: 18399: file=libc.so.1; needed by /opt/csw/gcc4/bin/g++ 18399: file=/lib/libc.so.1 [ ELF ]; generating link map 18399: dynamic: 0xfed1db44 base: 0xfec00000 18399: size: 0x127000 entry: 0xfec20780 18399: lmid: BASE lmco: 0xc 18399: 18399: file=/opt/csw/lib/pentium_pro/libiconv.so.2; analyzing [ RTLD_LAZY RTLD_GLOBAL RTLD_WORLD RTLD_NODELETE ] 18399: 18399: file=libc.so.1; needed by /opt/csw/lib/pentium_pro/libiconv.so.2 18399: 18399: file=/lib/libc.so.1; analyzing [ RTLD_LAZY RTLD_GLOBAL RTLD_WORLD RTLD_NODELETE ] 18399: 18399: 1: file=/lib/libc.so.1; filter for /usr/lib/ld.so.1 18399: 1: 18399: 1: file=/usr/lib/ld.so.1; filtered by /lib/libc.so.1 18399: 1: 18399: 1: 18399: 1: transferring control: /opt/csw/gcc4/bin/g++ 18399: 1: 18400: 18400: hardware capabilities - 0x1ff7 [ SSE2 SSE FXSR AMD_3DNowx AMD_3DNow AMD_MMX MMX CMOV AMD_SYSC CX8 TSC FPU ] 18400: 18400: 18400: configuration file=/var/ld/ld.config: unable to process file 18400: 18400: file=/opt/csw/gcc4/libexec/gcc/i386-pc-solaris2.10/4.5.1/cc1plus [ ELF ]; generating link map 18400: dynamic: 0x89ec7cc base: 0x8050000 18400: size: 0xabd534 entry: 0x80c3560 18400: lmid: BASE lmco: 0xc 18400: 18400: file=/opt/csw/gcc4/libexec/gcc/i386-pc-solaris2.10/4.5.1/cc1plus; analyzing [ RTLD_LAZY RTLD_GLOBAL RTLD_WORLD RTLD_NODELETE ] 18400: 18400: file=libiconv.so.2; needed by /opt/csw/gcc4/libexec/gcc/i386-pc-solaris2.10/4.5.1/cc1plus 18400: 18400: file=/opt/csw/lib/amd64/libiconv.so.2; rejected: wrong ELF class: ELFCLASS64 18400: 18400: file=/opt/csw/lib/pentium_pro/libiconv.so.2 [ ELF ]; generating link map 18400: dynamic: 0xfee3a3c4 base: 0xfed30000 18400: size: 0x10b000 entry: 0xfed30094 18400: lmid: BASE lmco: 0xc 18400: 18400: file=libelf.so.1; needed by /opt/csw/gcc4/libexec/gcc/i386-pc-solaris2.10/4.5.1/cc1plus 18400: file=/lib/libelf.so.1 [ ELF ]; generating link map 18400: dynamic: 0xfed2a1b4 base: 0xfed00000 18400: size: 0x2b000 entry: 0xfed000b4 18400: lmid: BASE lmco: 0xc 18400: 18400: file=libc.so.1; needed by /opt/csw/gcc4/libexec/gcc/i386-pc-solaris2.10/4.5.1/cc1plus 18400: file=/lib/libc.so.1 [ ELF ]; generating link map 18400: dynamic: 0xfecedb44 base: 0xfebd0000 18400: size: 0x127000 entry: 0xfebf0780 18400: lmid: BASE lmco: 0xc 18400: 18400: file=/opt/csw/lib/pentium_pro/libiconv.so.2; analyzing [ RTLD_LAZY RTLD_GLOBAL RTLD_WORLD RTLD_NODELETE ] 18400: 18400: file=libc.so.1; needed by /opt/csw/lib/pentium_pro/libiconv.so.2 18400: 18400: file=/lib/libelf.so.1; analyzing [ RTLD_LAZY RTLD_GLOBAL RTLD_WORLD RTLD_NODELETE ] 18400: 18400: file=libc.so.1; needed by /lib/libelf.so.1 18400: 18400: file=/lib/libc.so.1; analyzing [ RTLD_LAZY RTLD_GLOBAL RTLD_WORLD RTLD_NODELETE ] 18400: 18400: 1: file=/lib/libc.so.1; filter for /usr/lib/ld.so.1 18400: 1: 18400: 1: file=/usr/lib/ld.so.1; filtered by /lib/libc.so.1 18400: 1: 18400: 1: 18400: 1: transferring control: /opt/csw/gcc4/libexec/gcc/i386-pc-solaris2.10/4.5.1/cc1plus 18400: 1: 18400: 1: 18401: 18401: hardware capabilities - 0x1ff7 [ SSE2 SSE FXSR AMD_3DNowx AMD_3DNow AMD_MMX MMX CMOV AMD_SYSC CX8 TSC FPU ] 18401: 18401: 18401: configuration file=/var/ld/ld.config: unable to process file 18401: 18401: file=/opt/csw/bin/gas [ ELF ]; generating link map 18401: dynamic: 0x815a540 base: 0x8050000 18401: size: 0x119760 entry: 0x805f358 18401: lmid: BASE lmco: 0xc 18401: 18401: file=/opt/csw/bin/gas; analyzing [ RTLD_LAZY RTLD_GLOBAL RTLD_WORLD RTLD_NODELETE ] 18401: 18401: file=libintl.so.8; needed by /opt/csw/bin/gas 18401: 18401: file=/opt/csw/lib/amd64/libintl.so.8; rejected: wrong ELF class: ELFCLASS64 18401: 18401: file=/opt/csw/lib/pentium_pro/libintl.so.8 [ ELF ]; generating link map 18401: dynamic: 0xfee3e2f8 base: 0xfee20000 18401: size: 0x1f000 entry: 0xfee20094 18401: lmid: BASE lmco: 0xc 18401: 18401: file=libiconv.so.2; needed by /opt/csw/bin/gas 18401: 18401: file=/opt/csw/lib/amd64/libiconv.so.2; rejected: wrong ELF class: ELFCLASS64 18401: 18401: file=/opt/csw/lib/pentium_pro/libiconv.so.2 [ ELF ]; generating link map 18401: dynamic: 0xfee1a3c4 base: 0xfed10000 18401: size: 0x10b000 entry: 0xfed10094 18401: lmid: BASE lmco: 0xc 18401: 18401: file=libz.so; needed by /opt/csw/bin/gas 18401: 18401: file=/opt/csw/lib/amd64/libz.so; rejected: wrong ELF class: ELFCLASS64 18401: 18401: file=/opt/csw/lib/i486/libz.so [ ELF ]; generating link map 18401: dynamic: 0xfed01a80 base: 0xfece0000 18401: size: 0x22000 entry: 0xfece00b4 18401: lmid: BASE lmco: 0xc 18401: 18401: file=libc.so.1; needed by /opt/csw/bin/gas 18401: file=/lib/libc.so.1 [ ELF ]; generating link map 18401: dynamic: 0xfeccdb44 base: 0xfebb0000 18401: size: 0x127000 entry: 0xfebd0780 18401: lmid: BASE lmco: 0xc 18401: 18401: file=/opt/csw/lib/pentium_pro/libintl.so.8; analyzing [ RTLD_LAZY RTLD_GLOBAL RTLD_WORLD RTLD_NODELETE ] 18401: 18401: file=libiconv.so.2; needed by /opt/csw/lib/pentium_pro/libintl.so.8 18401: 18401: file=libc.so.1; needed by /opt/csw/lib/pentium_pro/libintl.so.8 18401: 18401: file=/opt/csw/lib/pentium_pro/libiconv.so.2; analyzing [ RTLD_LAZY RTLD_GLOBAL RTLD_WORLD RTLD_NODELETE ] 18401: 18401: file=libc.so.1; needed by /opt/csw/lib/pentium_pro/libiconv.so.2 18401: 18401: file=/opt/csw/lib/i486/libz.so; analyzing [ RTLD_LAZY RTLD_GLOBAL RTLD_WORLD RTLD_NODELETE ] 18401: 18401: file=libc.so.1; needed by /opt/csw/lib/i486/libz.so 18401: 18401: file=/lib/libc.so.1; analyzing [ RTLD_LAZY RTLD_GLOBAL RTLD_WORLD RTLD_NODELETE ] 18401: 18401: 1: file=/lib/libc.so.1; filter for /usr/lib/ld.so.1 18401: 1: 18401: 1: file=/usr/lib/ld.so.1; filtered by /lib/libc.so.1 18401: 1: 18401: 1: 18401: 1: transferring control: /opt/csw/bin/gas 18401: 1: 18401: 2: 18401: 2: 18401: 2: ld.so.1: gas: fatal: _ex_unwind: can't find symbol 18401: 2: 18401: 2: 18402: 18402: hardware capabilities - 0x1ff7 [ SSE2 SSE FXSR AMD_3DNowx AMD_3DNow AMD_MMX MMX CMOV AMD_SYSC CX8 TSC FPU ] 18402: 18402: 18402: configuration file=/var/ld/ld.config: unable to process file 18402: 18402: file=/opt/csw/gcc4/libexec/gcc/i386-pc-solaris2.10/4.5.1/collect2 [ ELF ]; generating link map 18402: dynamic: 0x8082a14 base: 0x8050000 18402: size: 0x33470 entry: 0x80537d0 18402: lmid: BASE lmco: 0xc 18402: 18402: file=/opt/csw/gcc4/libexec/gcc/i386-pc-solaris2.10/4.5.1/collect2; analyzing [ RTLD_LAZY RTLD_GLOBAL RTLD_WORLD RTLD_NODELETE ] 18402: 18402: file=libiconv.so.2; needed by /opt/csw/gcc4/libexec/gcc/i386-pc-solaris2.10/4.5.1/collect2 18402: 18402: file=/opt/csw/lib/amd64/libiconv.so.2; rejected: wrong ELF class: ELFCLASS64 18402: 18402: file=/opt/csw/lib/pentium_pro/libiconv.so.2 [ ELF ]; generating link map 18402: dynamic: 0xfee3a3c4 base: 0xfed30000 18402: size: 0x10b000 entry: 0xfed30094 18402: lmid: BASE lmco: 0xc 18402: 18402: file=libc.so.1; needed by /opt/csw/gcc4/libexec/gcc/i386-pc-solaris2.10/4.5.1/collect2 18402: file=/lib/libc.so.1 [ ELF ]; generating link map 18402: dynamic: 0xfed1db44 base: 0xfec00000 18402: size: 0x127000 entry: 0xfec20780 18402: lmid: BASE lmco: 0xc 18402: 18402: file=/opt/csw/lib/pentium_pro/libiconv.so.2; analyzing [ RTLD_LAZY RTLD_GLOBAL RTLD_WORLD RTLD_NODELETE ] 18402: 18402: file=libc.so.1; needed by /opt/csw/lib/pentium_pro/libiconv.so.2 18402: 18402: file=/lib/libc.so.1; analyzing [ RTLD_LAZY RTLD_GLOBAL RTLD_WORLD RTLD_NODELETE ] 18402: 18402: 1: file=/lib/libc.so.1; filter for /usr/lib/ld.so.1 18402: 1: 18402: 1: file=/usr/lib/ld.so.1; filtered by /lib/libc.so.1 18402: 1: 18402: 1: 18402: 1: transferring control: /opt/csw/gcc4/libexec/gcc/i386-pc-solaris2.10/4.5.1/collect2 18402: 1: 18403: 18403: hardware capabilities - 0x1ff7 [ SSE2 SSE FXSR AMD_3DNowx AMD_3DNow AMD_MMX MMX CMOV AMD_SYSC CX8 TSC FPU ] 18403: 18403: 18403: configuration file=/var/ld/ld.config: unable to process file 18403: 18403: file=/usr/ccs/bin/ld [ ELF ]; generating link map 18403: dynamic: 0x8062088 base: 0x8050000 18403: size: 0x125cc entry: 0x8050c3c 18403: lmid: BASE lmco: 0xc 18403: 18403: file=/usr/ccs/bin/ld; analyzing [ RTLD_LAZY RTLD_GLOBAL RTLD_WORLD RTLD_NODELETE ] 18403: 18403: file=libc.so.1; needed by /usr/ccs/bin/ld 18403: file=/usr/ccs/bin/../../../lib/libc.so.1 [ ELF ]; generating link map 18403: dynamic: 0xfee2db44 base: 0xfed10000 18403: size: 0x127000 entry: 0xfed30780 18403: lmid: BASE lmco: 0xc 18403: 18403: file=/usr/ccs/bin/../../../lib/libc.so.1; analyzing [ RTLD_LAZY RTLD_GLOBAL RTLD_WORLD RTLD_NODELETE ] 18403: 18403: 1: file=/usr/ccs/bin/../../../lib/libc.so.1; filter for /usr/lib/ld.so.1 18403: 1: 18403: 1: file=/usr/lib/ld.so.1; filtered by /usr/ccs/bin/../../../lib/libc.so.1 18403: 1: 18403: 1: 18403: 1: transferring control: /usr/ccs/bin/ld 18403: 1: 18403: 18403: hardware capabilities - 0x1ff7 [ SSE2 SSE FXSR AMD_3DNowx AMD_3DNow AMD_MMX MMX CMOV AMD_SYSC CX8 TSC FPU ] 18403: 18403: 18403: configuration file=/var/ld/64/ld.config: unable to process file 18403: 18403: file=/usr/ccs/bin/amd64/ld [ ELF ]; generating link map 18403: dynamic: 0x412130 base: 0x400000 18403: size: 0x12e44 entry: 0x401430 18403: lmid: BASE lmco: 0x10 18403: 18403: file=/usr/ccs/bin/amd64/ld; analyzing [ RTLD_LAZY RTLD_GLOBAL RTLD_WORLD RTLD_NODELETE ] 18403: 18403: file=libc.so.1; needed by /usr/ccs/bin/amd64/ld 18403: file=/usr/ccs/bin/amd64/../../../../lib/amd64/libc.so.1 [ ELF ]; generating link map 18403: dynamic: 0xfffffd7fff1db578 base: 0xfffffd7fff090000 18403: size: 0x157000 entry: 0xfffffd7fff090120 18403: lmid: BASE lmco: 0x10 18403: 18403: file=/usr/ccs/bin/amd64/../../../../lib/amd64/libc.so.1; analyzing [ RTLD_LAZY RTLD_GLOBAL RTLD_WORLD RTLD_NODELETE ] 18403: 18403: 1: file=/usr/ccs/bin/amd64/../../../../lib/amd64/libc.so.1; filter for /usr/lib/amd64/ld.so.1 18403: 1: 18403: 1: file=/usr/lib/amd64/ld.so.1; filtered by /usr/ccs/bin/amd64/../../../../lib/amd64/libc.so.1 18403: 1: 18403: 1: 18403: 1: transferring control: /usr/ccs/bin/amd64/ld 18403: 1: 18403: 1: 18403: 1: file=libld.so.4; lazy loading from file=/usr/ccs/bin/amd64/ld: symbol=ld64_main 18403: 1: file=/usr/ccs/bin/amd64/../../../../lib/amd64/libld.so.4 [ ELF ]; generating link map 18403: 1: dynamic: 0xfffffd7fff067b10 base: 0xfffffd7ffeff0000 18403: 1: size: 0x7b000 entry: 0xfffffd7ffeff0158 18403: 1: lmid: BASE lmco: 0x30 18403: 1: 18403: 1: file=/usr/ccs/bin/amd64/../../../../lib/amd64/libld.so.4; analyzing [ RTLD_LAZY RTLD_GLOBAL RTLD_WORLD RTLD_NODELETE ] 18403: 1: 18403: 1: file=libc.so.1; needed by /usr/ccs/bin/amd64/../../../../lib/amd64/libld.so.4 18403: 1: 18403: 1: file=liblddbg.so.4; lazy loading from file=/usr/ccs/bin/amd64/../../../../lib/amd64/libld.so.4: symbol=dbg_desc 18403: 1: file=/lib/amd64/liblddbg.so.4 [ ELF ]; generating link map 18403: 1: dynamic: 0xfffffd7ffefe3528 base: 0xfffffd7ffefa0000 18403: 1: size: 0x47000 entry: 0xfffffd7ffefa0158 18403: 1: lmid: BASE lmco: 0x50 18403: 1: 18403: 1: file=/lib/amd64/liblddbg.so.4; analyzing [ RTLD_LAZY RTLD_GLOBAL RTLD_WORLD RTLD_NODELETE ] 18403: 1: 18403: 1: file=libc.so.1; needed by /lib/amd64/liblddbg.so.4 18403: 1: 18403: 1: file=libelf.so.1; lazy loading from file=/usr/ccs/bin/amd64/../../../../lib/amd64/libld.so.4: symbol=elf_version 18403: 1: file=/lib/amd64/libelf.so.1 [ ELF ]; generating link map 18403: 1: dynamic: 0xfffffd7ffef2d350 base: 0xfffffd7ffef00000 18403: 1: size: 0x2e000 entry: 0xfffffd7ffef00158 18403: 1: lmid: BASE lmco: 0x30 18403: 1: 18403: 1: file=/lib/amd64/libelf.so.1; analyzing [ RTLD_LAZY RTLD_GLOBAL RTLD_WORLD RTLD_NODELETE ] 18403: 1: 18403: 1: file=libc.so.1; needed by /lib/amd64/libelf.so.1 18403: 1: file=/lib/64/libc.so.1; skipped: already processed as /usr/ccs/bin/amd64/../../../../lib/amd64/libc.so.1 18403: 1: 18403: 1: file=libldstab.so.1; dlopen() called from file=/usr/ccs/bin/amd64/../../../../lib/amd64/libld.so.4 [ RTLD_LAZY RTLD_LOCAL RTLD_GROUP RTLD_WORLD ] 18403: 1: file=/usr/lib/64/libldstab.so.1 [ ELF ]; generating link map 18403: 1: dynamic: 0xfffffd7ffeef3178 base: 0xfffffd7ffeee0000 18403: 1: size: 0x14000 entry: 0xfffffd7ffeee0158 18403: 1: lmid: BASE lmco: 0x30 18403: 1: 18403: 1: file=/usr/lib/64/libldstab.so.1; analyzing [ RTLD_LAZY RTLD_LOCAL RTLD_GROUP RTLD_WORLD ] 18403: 1: 18403: 1: file=libelf.so.1; needed by /usr/lib/64/libldstab.so.1 18403: 1: file=/lib/64/libelf.so.1; skipped: already processed as /lib/amd64/libelf.so.1 18403: 1: 18403: 1: file=libc.so.1; needed by /usr/lib/64/libldstab.so.1 18403: 1: 18403: 1: rescanning for lazy dependencies for symbol: ld_version 18403: 1: 18403: 1: 18403: 1: ld.so.1: ld: fatal: ld_version: can't find symbol 18403: 1: 18403: 1: 18403: 1: rescanning for lazy dependencies for symbol: ld_input_done 18403: 1: 18403: 1: 18403: 1: ld.so.1: ld: fatal: ld_input_done: can't find symbol 18403: 1: 18403: 1: 18403: 1: rescanning for lazy dependencies for symbol: ld_open64 18403: 1: 18403: 1: 18403: 1: ld.so.1: ld: fatal: ld_open64: can't find symbol 18403: 1: 18403: 1: 18403: 1: rescanning for lazy dependencies for symbol: ld_input_section64 18403: 1: 18403: 1: 18403: 1: ld.so.1: ld: fatal: ld_input_section64: can't find symbol 18403: 1: 18403: 1: 18402: 1: 18399: 1: