>Number: 9219 >Category: other >Synopsis: gcc-3.2.1/binutils-2.13.1 problem with perl-5.8.0 >Confidential: no >Severity: serious >Priority: medium >Responsible: unassigned >State: open >Class: wrong-code >Submitter-Id: net >Arrival-Date: Tue Jan 07 11:16:00 PST 2003 >Closed-Date: >Last-Modified: >Originator: Warren Dodge >Release: 3.2.1 >Organization: >Environment: System: SunOS darwin 5.5.1 Generic_103640-36 sun4u sparc SUNW,Ultra-1 Architecture: sun4
host: sparc-sun-solaris2.5.1 build: sparc-sun-solaris2.5.1 target: sparc-sun-solaris2.5.1 configured with: ../gcc-3.2.1/configure --prefix=/proj/wdt/gnu_sun5.1/gcc-3.2.1 --with-local-prefix=/proj/wdt/gnu_sun5.1/gcc-3.2.1 --with-gnu-ld --with-ld=/proj/wdt/sun5.1/bin/ld --with-gnu-nm --with-nm=/proj/wdt/sun5.1/bin/nm --with-gnu-as --with-as=/proj/wdt/sun5.1/bin/as --enable-threads=posix --enable-shared --disable-nls --enable-languages=objc,c++ --disable-libgcj >Description: I have been having problems in getting perl-5.8.0 to build and run properly. It will build but on a few of the tests in make test it fails. It seems to be failing in an area having to do with loading dynamic libraries. I am sending this to see if you have any ideas on what may be wrong. Included below is a copy of what I sent to the perl team for reference. I hope this is an appropriate method to obtain information _____________________________________________________________________________ I have tried a number of tests to try and locate this problem. I "think" I have narrowed it down to something in gcc-3.2.1/binutils-2.13.1 Below is a summary of what I have done and some of the messages from debug sessions. At this point I need some ideas on how to proceed. Again, this is a solaris 2.5.1 issue. I have the same setup for solaris 8 and everything works fine. P.S Details are needed. You helping a hardware engineer not a software guru. _____________________________________________________________________________ I build perl with Sun CC and the tests ran fine I build perl with no shared libraries and the tests ran fine I statically loaded the perl ByteLoader Cwd ... files and the tests passed I then used a precompiled gcc-2.8.1 to compile it as I had originally configured it and the tests passed. (gcc version 2.9-redhat-980810) The as and ld seem to be version 2.13.1 So I then built gcc-3.2.1 again without anything special. ../gcc-3.2.1/configure --prefix=/proj/wdt/gnu_sun5.1/gcc-3.2.1_test --with-local-prefix=/proj/wdt/gnu_sun5.1/gcc-3.2.1_test --with-gnu-ld --with-ld=/proj/wdt/sun5.1/bin/ld --with-gnu-nm --with-nm=/proj/wdt/sun5.1/bin/nm --with-gnu-as --with-as=/proj/wdt/sun5.1/bin/as --enable-threads=posix --enable-shared --disable-nls --enable-languages=objc,c++ --disable-libgcj Then reconfigured perl using that gcc and it fails. I then rebuild gcc using Suns LD and AS , recompiled perl and the tests run. __________________________________________________________________________ I noticed these warning as I built perl. NOTE: You are using GNU as(1). GNU as(1) might not build Perl. If you have trouble, you can use /usr/ccs/bin/as by including -B/usr/ccs/bin/ in your /proj/wdt/gnu_sun5.1/gcc-3.2.1_test/bin/gcc command. (Note that the trailing "/" is required.) ./Configure: Configured: not found Found GNU ld='Configured' NOTE: You are using GNU ld(1). GNU ld(1) might not build Perl. If you have trouble, you can use /usr/ccs/bin/ld by including -B/usr/ccs/bin/ in your /proj/wdt/gnu_sun5.1/gcc-3.2.1_test/bin/gcc command. (Note that the trailing "/" is required.) I will try to use GNU ld by passing in the -Wl,-E flag, but if that doesn't work, you should use -B/usr/ccs/bin/ instead. Does this literally mean build perl or perhaps does it reach into running perl? _____________________________________________________________________________ Here again is a truss -f of the following test command truss -f ../perl -I../lib ../ext/DB_File/t/db-btree.t 17423: stat("../lib/auto/Fcntl/Fcntl.so", 0x0010D798) = 0 17423: stat("../lib/auto/Fcntl/Fcntl.bs", 0x0010D798) = 0 17423: open("../lib/auto/Fcntl/Fcntl.so", O_RDONLY) = 4 17423: fstat(4, 0xEFFFE73C) = 0 17423: mmap(0x00000000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0xEF760000 17423: mmap(0x00000000, 81920, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0xEF540000 17423: munmap(0xEF544000, 57344) = 0 17423: mmap(0xEF552000, 6452, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 4, 8192) = 0xEF552000 17423: close(4) = 0 17423: mprotect(0xEF540000, 13554, PROT_READ|PROT_WRITE|PROT_EXEC) = 0 17423: mprotect(0xEF540000, 13554, PROT_READ|PROT_EXEC) = 0 17423: munmap(0xEF760000, 8192) = 0 17423: brk(0x001AFE10) = 0 17423: brk(0x001B1E10) = 0 17423: brk(0x001B1E10) = 0 17423: brk(0x001B3E10) = 0 17423: brk(0x001B3E10) = 0 17423: brk(0x001B5E10) = 0 17423: brk(0x001B5E10) = 0 17423: brk(0x001B7E10) = 0 17423: stat("../lib/auto/DB_File/DB_File.so", 0x0010D798) = 0 17423: stat("../lib/auto/DB_File/DB_File.bs", 0x0010D798) = 0 17423: open("../lib/auto/DB_File/DB_File.so", O_RDONLY) = 4 17423: fstat(4, 0xEFFFE73C) = 0 17423: mmap(0x00000000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0xEF760000 17423: mmap(0x00000000, 483328, PROT_READ|PROT_EXEC, MAP_PRIVATE, 4, 0) = 0xEF4C0000 17423: munmap(0xEF524000, 65536) = 0 17423: mmap(0xEF534000, 3456, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 4, 409600) = 0xEF534000 17423: open("/dev/zero", O_RDONLY) = 5 17423: mmap(0x00000000, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE, 5, 0) = 0xEF630000 17423: close(4) = 0 17423: Incurred fault #6, FLTBOUNDS %pc = 0xEF7D7500 17423: siginfo: SIGSEGV SEGV_ACCERR addr=0xEF51F810 17423: Received signal #11, SIGSEGV [default] 17423: siginfo: SIGSEGV SEGV_ACCERR addr=0xEF51F810 17423: *** process killed *** _____________________________________________________________________________ Here is a little gdb info gdb ./perl GNU gdb 5.3 Copyright 2002 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "sparc-sun-solaris2.5.1"...(no debugging symbols found)... (gdb) run -I./lib ext/DB_File/t/db-btree.t Starting program: /proj/wdtold/warrend/gnusrc/perl-5.8.0/perl-5.8.0_sun5.1.baregcc/perl -I./lib ext/DB_File/t/db-btree.t (no debugging symbols found)... (no debugging symbols found)... (no debugging symbols found)... (no debugging symbols found)... (no debugging symbols found)... (no debugging symbols found)... (no debugging symbols found)... (no debugging symbols found)... (no debugging symbols found)... Error while mapping shared library sections: ../lib/auto/Fcntl/Fcntl.so: No such file or directory. Error while reading shared library symbols: ../lib/auto/Fcntl/Fcntl.so: No such file or directory. Error while reading shared library symbols: ../lib/auto/Fcntl/Fcntl.so: No such file or directory. Program received signal SIGSEGV, Segmentation fault. 0xef7d7500 in ?? () (gdb) bt #0 0xef7d7500 in ?? () #1 0xef7d1940 in ?? () #2 0xef7c3e8c in ?? () #3 0xef7cdc94 in ?? () #4 0xef7cdd98 in ?? () #5 0xef7cde7c in ?? () #6 0x00023194 in XS_DynaLoader_dl_load_file () #7 0x0007c154 in Perl_pp_entersub () #8 0x000745c8 in Perl_runops_standard () #9 0x00027000 in S_call_body () #10 0x00026cf8 in Perl_call_sv () #11 0x0002a3dc in S_call_list_body () #12 0x00029f88 in Perl_call_list () #13 0x0005305c in Perl_newATTRSUB () #14 0x0004ef24 in Perl_utilize () #15 0x00046548 in Perl_yyparse () #16 0x00025f50 in S_parse_body () #17 0x00025168 in perl_parse () #18 0x00022f08 in main () >How-To-Repeat: Breaks everytime I build perl 5.8.0 >Fix: Don't use the binutils. >Release-Note: >Audit-Trail: >Unformatted: