Package: mklibs Version: 0.1.18 Severity: wishlist Tags: patch The patch below creates a tempfile with a linker script to replace all the -u options with EXTERN(<symbol>) statements in the gcc call for library recompilation. During a build of libc6 for the d-i gtk frontend, this reduces the length of the command line from over 6000 characters to just over 1000. Command line length could cause script failure in extreme cases. Further command line reduction would be possible by moving more options to the linker script (prime candidate: the -L options). --- /usr/bin/mklibs 2005-10-22 21:33:43.000000000 +0200 +++ util/mklibs 2005-10-26 00:04:59.000000000 +0200 @@ -47,6 +47,7 @@ import os import glob import getopt +import tempfile from stat import * DEBUG_NORMAL = 1 @@ -493,11 +494,18 @@ map_file = find_pic_map(library) if map_file: extra_flags = extra_flags + " -Wl,--version-script=" + map_file - # compile in only used symbols + # create linker script with symbols to be treated as EXTERN + (ls_fd, ls_fn) = tempfile.mkstemp('.mklibs') + os.close(ls_fd) + ls_fh=open(ls_fn, 'w') + for a in symbols: + ls_fh.write('EXTERN(' + a + ')\n') + ls_fh.close() + # compile in only used symbols using the linker script command(target + "gcc", "-nostdlib -nostartfiles -shared -Wl,-soname=" + soname,\ - ' '.join(["-u%s" % a for a in symbols]), \ + ls_fn, \ "-o", dest_path + "/" + so_file_name + "-so", \ extra_pre_obj, \ pic_file, \ extra_post_obj, \ @@ -505,6 +513,8 @@ "-lgcc", \ ' '.join(["-L%s" % a for a in [dest_path] + lib_path]), \ library_depends_gcc_libnames(so_file)) + # delete linker script + os.unlink(ls_fn) # strip result command(target + "objcopy", "--strip-unneeded -R .note -R .comment", dest_path + "/" + so_file_name + "-so",
Attachment:
pgpeNZV2wrkDx.pgp
Description: PGP signature