Chromium のリンク時の ld の引数を記録した

今朝のビルド中,ld (gold) のバグを踏んで "fatal error: out of file descriptors and couldn't close any" となった:

この問題自体は要するに ulimit -Hn 2048; ulimit -n 2048 的なことをしてやれば回避でき,具体的には /etc/security/limits.conf

* soft nofile 2048
* hard nofile 2048

とか書いてシェルを立ち上げ直す((本当言うと Ctrl-Alt-F1 で getty(8) からログインし,GNU screenを立ち上げてすぐデタッチし, Ctrl-Alt-F7 でウィンドウ・マネージャ内に戻り,再アタッチしてからリンクに再チャレンジ.PAMによる認証のタイミングで設定が発動するらしいので... ちなみにそのGNU screenからは例によってXサーバに接続できなかった.))ことで解決したんだが,そこで興味が沸いて ld の引数を記録してみた.

#!/bin/sh
echo "$@"
/usr/bin/ld.gold "$@"

結果
--build-id --eh-frame-hdr -m elf_x86_64 --hash-style=both -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o out/Debug/chrome /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib/crt1.o /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib/crti.o /usr/lib/gcc/x86_64-linux-gnu/4.4.5/crtbegin.o -Lout/Debug -L/usr/lib/gcc/x86_64-linux-gnu/4.4.5 -L/usr/lib/gcc/x86_64-linux-gnu/4.4.5 -L/usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib -L/lib/../lib -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../.. -z noexecstack -uIsHeapProfilerRunning -uProfilerStart -u_Z21InitialMallocHook_NewPKvj -u_Z22InitialMallocHook_MMapPKvS0_jiiix -u_Z22InitialMallocHook_SbrkPKvi -u_Z21InitialMallocHook_NewPKvm -u_Z22InitialMallocHook_MMapPKvS0_miiil -u_Z22InitialMallocHook_SbrkPKvl --start-group out/Debug/obj.target/chrome/chrome/app/chrome_main.o out/Debug/obj.target/chrome/chrome/app/chrome_main_posix.o out/Debug/obj.target/chrome/chrome/app/chrome_exe_main_gtk.o out/Debug/obj.target/chrome/content/common/content_switches.o out/Debug/obj.target/chrome/libcommon.a out/Debug/obj.target/chrome/libbrowser.a out/Debug/obj.target/chrome/libchrome_gpu.a out/Debug/obj.target/chrome/libppapi_plugin.a out/Debug/obj.target/chrome/libprofile_import.a out/Debug/obj.target/chrome/librenderer.a out/Debug/obj.target/chrome/libsyncapi.a out/Debug/obj.target/chrome/libutility.a out/Debug/obj.target/chrome/libworker.a out/Debug/obj.target/chrome/libservice.a out/Debug/obj.target/printing/libprinting.a out/Debug/obj.target/chrome/libinstaller_util.a out/Debug/obj.target/base/allocator/liballocator.a out/Debug/obj.target/sandbox/libsandbox.a out/Debug/obj.target/chrome/app/policy/libpolicy.a out/Debug/obj.target/third_party/protobuf/libprotobuf_lite.a out/Debug/obj.target/chrome/libcommon_constants.a out/Debug/obj.target/base/libbase.a out/Debug/obj.target/third_party/modp_b64/libmodp_b64.a out/Debug/obj.target/base/third_party/dynamic_annotations/libdynamic_annotations.a out/Debug/obj.target/base/libsymbolize.a out/Debug/obj.target/base/libxdg_mime.a out/Debug/obj.target/net/third_party/nss/libssl.a out/Debug/obj.target/third_party/zlib/libzlib.a out/Debug/obj.target/third_party/libevent/libevent.a out/Debug/obj.target/chrome/libcommon_net.a out/Debug/obj.target/app/libapp_base.a out/Debug/obj.target/base/libbase_i18n.a out/Debug/obj.target/third_party/icu/libicui18n.a out/Debug/obj.target/third_party/icu/libicuuc.a out/Debug/obj.target/third_party/icu/libicudata.a out/Debug/obj.target/ui/gfx/libgfx.a out/Debug/obj.target/skia/libskia.a out/Debug/obj.target/skia/libskia_opts.a out/Debug/obj.target/third_party/harfbuzz/libharfbuzz.a out/Debug/obj.target/gpu/libgles2_c_lib.a out/Debug/obj.target/gpu/libgles2_implementation.a out/Debug/obj.target/gpu/libgles2_cmd_helper.a out/Debug/obj.target/gpu/libcommand_buffer_client.a out/Debug/obj.target/gpu/libcommand_buffer_common.a out/Debug/obj.target/third_party/libjpeg_turbo/libjpeg_turbo.a out/Debug/obj.target/net/libnet.a out/Debug/obj.target/build/temp_gyp/libgoogleurl.a out/Debug/obj.target/sdch/libsdch.a out/Debug/obj.target/net/libnet_base.a out/Debug/obj.target/v8/tools/gyp/libv8_snapshot.a out/Debug/obj.target/v8/tools/gyp/libv8_base.a out/Debug/obj.target/third_party/sqlite/libsqlite3.a out/Debug/obj.target/gpu/libgpu_ipc.a out/Debug/obj.target/chrome/default_plugin/libdefault_plugin.a out/Debug/obj.target/third_party/libxml/libxml2.a out/Debug/obj.target/content/libcontent_common.a out/Debug/obj.target/ipc/libipc.a out/Debug/obj.target/webkit/support/libappcache.a out/Debug/obj.target/webkit/support/libblob.a out/Debug/obj.target/webkit/support/libglue.a out/Debug/obj.target/ppapi/libppapi_shared_impl.a out/Debug/obj.target/third_party/libjingle/libjingle.a out/Debug/obj.target/third_party/libjingle/libjingle_p2p.a out/Debug/obj.target/webkit/support/libwebkit_user_agent.a out/Debug/obj.target/gpu/libgpu_plugin.a out/Debug/obj.target/gpu/libcommand_buffer_service.a out/Debug/obj.target/third_party/angle/src/libtranslator_glsl.a out/Debug/obj.target/third_party/angle/src/libtranslator_common.a out/Debug/obj.target/remoting/libchromoting_plugin.a out/Debug/obj.target/remoting/libchromoting_base.a out/Debug/obj.target/media/libmedia.a out/Debug/obj.target/media/libyuv_convert.a out/Debug/obj.target/media/libcpu_features.a out/Debug/obj.target/media/libyuv_convert_sse2.a out/Debug/obj.target/third_party/ffmpeg/libffmpeg.a out/Debug/obj.target/media/libomx_wrapper.a out/Debug/obj.target/third_party/openmax/libil.a out/Debug/obj.target/remoting/libchromoting_jingle_glue.a out/Debug/obj.target/jingle/libnotifier.a out/Debug/obj.target/third_party/libsrtp/libsrtp.a out/Debug/obj.target/remoting/proto/libchromotocol_proto_lib.a out/Debug/obj.target/remoting/proto/libtrace_proto_lib.a out/Debug/obj.target/remoting/libchromoting_client.a out/Debug/obj.target/remoting/libchromoting_protocol.a out/Debug/obj.target/ppapi/libppapi_cpp_objects.a out/Debug/obj.target/chrome/libdebugger.a out/Debug/obj.target/net/libhttp_server.a out/Debug/obj.target/testing/libgtest.a out/Debug/obj.target/chrome/libsync.a out/Debug/obj.target/chrome/libsync_notifier.a out/Debug/obj.target/third_party/cacheinvalidation/libcacheinvalidation.a out/Debug/obj.target/content/libcontent_browser.a out/Debug/obj.target/ppapi/libppapi_proxy.a out/Debug/obj.target/third_party/flac/libflac.a out/Debug/obj.target/third_party/speex/libspeex.a out/Debug/obj.target/third_party/WebKit/Source/WebKit/chromium/libwebkit.a out/Debug/obj.target/third_party/WebKit/Source/WebCore/WebCore.gyp/libwebcore_html.a out/Debug/obj.target/third_party/WebKit/Source/WebCore/WebCore.gyp/libwebcore_bindings.a out/Debug/obj.target/third_party/WebKit/Source/JavaScriptCore/JavaScriptCore.gyp/libyarr.a out/Debug/obj.target/third_party/WebKit/Source/JavaScriptCore/JavaScriptCore.gyp/libwtf.a out/Debug/obj.target/third_party/iccjpeg/libiccjpeg.a out/Debug/obj.target/third_party/libxslt/libxslt.a out/Debug/obj.target/third_party/libwebp/libwebp.a out/Debug/obj.target/third_party/ots/libots.a out/Debug/obj.target/third_party/WebKit/Source/WebCore/WebCore.gyp/libwebcore_platform.a out/Debug/obj.target/third_party/WebKit/Source/WebCore/WebCore.gyp/libwebcore_remaining.a out/Debug/obj.target/v8/src/extensions/experimental/libi18n_api.a out/Debug/obj.target/third_party/WebKit/Source/WebCore/WebCore.gyp/libwebcore_rendering.a out/Debug/obj.target/third_party/WebKit/Source/WebCore/WebCore.gyp/libwebcore_svg.a out/Debug/obj.target/ui/libui_base.a out/Debug/obj.target/third_party/hunspell/libhunspell.a out/Debug/obj.target/webkit/support/libdatabase.a out/Debug/obj.target/webkit/support/libfileapi.a out/Debug/obj.target/webkit/support/libquota.a out/Debug/obj.target/third_party/undoview/libundoview.a out/Debug/obj.target/chrome/libplugin.a out/Debug/obj.target/third_party/cld/libcld.a out/Debug/obj.target/webkit/support/libwebkit_gpu.a out/Debug/obj.target/chrome/libnacl.a out/Debug/obj.target/native_client/src/trusted/service_runtime/libsel.a out/Debug/obj.target/native_client/src/trusted/service_runtime/libenv_cleanser.a out/Debug/obj.target/native_client/src/shared/gio/libgio.a out/Debug/obj.target/native_client/src/shared/platform/libplatform.a out/Debug/obj.target/native_client/src/shared/srpc/libnonnacl_srpc.a out/Debug/obj.target/native_client/src/trusted/debug_stub/libdebug_stub.a out/Debug/obj.target/native_client/src/trusted/gdb_rsp/libgdb_rsp.a out/Debug/obj.target/native_client/src/trusted/desc/libnrd_xfer.a out/Debug/obj.target/native_client/src/shared/imc/libimc.a out/Debug/obj.target/native_client/src/trusted/nacl_base/libnacl_base.a out/Debug/obj.target/native_client/src/trusted/gio/libgio_wrapped_desc.a out/Debug/obj.target/native_client/src/trusted/service_runtime/arch/x86/libservice_runtime_x86_common.a out/Debug/obj.target/native_client/src/trusted/validator_x86/libncvalidate.a out/Debug/obj.target/native_client/src/trusted/validator_x86/libncopcode_utils.a out/Debug/obj.target/native_client/src/trusted/service_runtime/arch/x86_64/libservice_runtime_x86_64.a out/Debug/obj.target/native_client/src/trusted/validator_x86/libncvalidate_sfi.a out/Debug/obj.target/native_client/src/trusted/platform_qualify/libplatform_qual_lib.a out/Debug/obj.target/seccompsandbox/libseccomp_sandbox.a out/Debug/obj.target/remoting/libchromoting_host.a out/Debug/obj.target/remoting/libdiffer_block.a out/Debug/obj.target/remoting/libdiffer_block_sse2.a --end-group -lX11 -ldl -lXrender -lXss -lXext -lrt -lgtk-x11-2.0 -lgdk-x11-2.0 -latk-1.0 -lpangoft2-1.0 -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lcairo -lgio-2.0 -lpango-1.0 -lfreetype -lfontconfig -lgobject-2.0 -lgmodule-2.0 -lgthread-2.0 -lglib-2.0 -lXi -lnss3 -lnssutil3 -lsmime3 -lplds4 -lplc4 -lnspr4 -lpthread -lz -lpng12 -lgconf-2 -lresolv -lcups -lgcrypt -lbz2 -lexpat -lasound -ldbus-glib-1 -ldbus-1 -lXdamage -lXtst -lpam -lstdc++ -lm -lgcc_s -lgcc -lpthread -lc -lgcc_s -lgcc /usr/lib/gcc/x86_64-linux-gnu/4.4.5/crtend.o /usr/lib/gcc/x86_64-linux-gnu/4.4.5/../../../../lib/crtn.o
うっはー
ちなみにバージョン情報は

Chromium	11.0.694.0 (Developer Build 77073)
WebKit	534.24 (trunk@80370)
V8	3.1.8
ユーザー エージェント	Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/534.24 (KHTML, like Gecko) Chrome/11.0.694.0 Safari/534.24
コマンドライン	 local/chromium/chrome --flag-switches-begin --enable-accelerated-2d-canvas --flag-switches-end