Skip to content

excessive amount of startup time is spent in ld #4219

@llvmbot

Description

@llvmbot
Bugzilla Link 3847
Resolution INVALID
Resolved on Mar 20, 2009 10:57
Version trunk
OS Linux
Reporter LLVM Bugzilla Contributor

Extended Description

Even with the recent work to use an export map, LLVM tools are still spending an unreasonable amount of time in the dynamic linker on Linux.

Over 2 million instructions just to print an error message:

ddunbar@frank:tmp$ valgrind --tool=callgrind ~/llvm/Release-Asserts/bin/llvm-ar
==31810== Callgrind, a call-graph generating cache profiler.
==31810== Copyright (C) 2002-2008, and GNU GPL'd, by Josef Weidendorfer et al.
==31810== Using LibVEX rev 1884, a library for dynamic binary translation.
==31810== Copyright (C) 2004-2008, and GNU GPL'd, by OpenWorks LLP.
==31810== Using valgrind-3.4.1-Debian, a dynamic binary instrumentation framework.
==31810== Copyright (C) 2000-2008, and GNU GPL'd, by Julian Seward et al.
==31810== For more details, rerun with: -v
==31810==
==31810== For interactive control, run 'callgrind_control -h'.
llvm-ar: Not enough positional command line arguments specified!
Must specify at least 2 positional arguments: See: /home/ddunbar/llvm/Release-Asserts/bin/llvm-ar --help
==31810==
==31810== Events : Ir
==31810== Collected : 2178896
==31810==
==31810== I refs: 2,178,896

Here is the tools link line:

g++ -I/home/ddunbar/llvm.trunk/include -I/home/ddunbar/llvm.trunk/tools/llvm-ar -DNDEBUG -D_GNU_SOURCE -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -O3 -fomit-frame-pointer -fPIC -Woverloaded-virtual -pedantic -Wall -W -Wwrite-strings -Wno-long-long -Wunused -Wno-unused-parameter -O3 -Wl,-R -Wl,/home/ddunbar/llvm.trunk/Release-Asserts/bin -Wl,-export-dynamic -L/home/ddunbar/llvm.trunk/Release-Asserts/lib -L/home/ddunbar/llvm.trunk/Release-Asserts/lib -Wl,--version-script=/home/ddunbar/llvm.trunk/autoconf/ExportMap.map -o /home/ddunbar/llvm.trunk/Release-Asserts/bin/llvm-ar /home/ddunbar/llvm.trunk/tools/llvm-ar/Release-Asserts/llvm-ar.o
-lLLVMArchive -lLLVMBitReader -lLLVMCore -lLLVMSupport -lLLVMSystem -lpthread -ldl -lm -lelf

and nm shows 2644 external symbols:

ddunbar@frank:tmp$ nm --extern-only ~/llvm/Release-Asserts/bin/llvm-ar | wc -l
2644

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions