The script below works when the linker is "GNU ld version 2.13.90.0.18 20030206"
(RedHat 9) but not when it is "GNU ld version 2.16.91 20050608" (CVS HEAD).  In
both cases, the compiler used is "gcc version 3.2.2 20030222 (Red Hat Linux
3.2.2-5)".

The reason is that the new ld keeps one file open for each object file, while
the old ld did not---it only ever opened about 15 files.

To switch between linkers, I copied ld-new to /tmp/test/ld and used
COMPILER_PATH=/tmp/test.

I believe this worked (did not regress) with binutils CVS from around 20040924,
but I don't have that tree any longer to test.

My application links in approximately 6000 objects, specifying them through a
single linker script to avoid the kernel command-line limit.

#------------------------------------------------------------------------------
#!/bin/sh

set -ex

mkdir /tmp/linker_test_$$
cd /tmp/linker_test_$$

echo > dummy.c

n=1
while [[ $n -lt 100 ]]
do
    gcc -c dummy.c -o dummy$n.o
    n=$(($n+1))
done
    
echo "main() {}" > main.c

ulimit -n 25 
gcc main.c dummy*.o
#------------------------------------------------------------------------------

-- 
           Summary: Linking requires one open file per object file
           Product: binutils
           Version: 2.17 (HEAD)
            Status: NEW
          Severity: normal
          Priority: P2
         Component: ld
        AssignedTo: unassigned at sources dot redhat dot com
        ReportedBy: jepler at sds2 dot com
                CC: bug-binutils at gnu dot org
 GCC build triplet: i686-pc-linux
  GCC host triplet: i686-pc-linux
GCC target triplet: i686-pc-linux


http://sources.redhat.com/bugzilla/show_bug.cgi?id=996

------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.


_______________________________________________
bug-binutils mailing list
bug-binutils@gnu.org
http://lists.gnu.org/mailman/listinfo/bug-binutils

Reply via email to