diff options
Diffstat (limited to 'ld')
111 files changed, 5102 insertions, 1242 deletions
diff --git a/ld/ChangeLog b/ld/ChangeLog index df1510b..3fec7a5 100644 --- a/ld/ChangeLog +++ b/ld/ChangeLog @@ -1,3 +1,178 @@ +2008-10-25 Nick Clifton <nickc@redhat.com> + + PR 6945 + * ldlang.c (lang_size_sections_1): Do not update the VMAs of + output sections when performing a relocatable link on COFF + objects. + +2008-10-22 Nick Clifton <nickc@redhat.com> + + * emultempl/armelf.em (arm_elf_after_open): Move check for using a + non-arm output target from here... + (arm_elf_create_output_section_statements): ... to here, so that + the check is made at the earliest possible opportunity. + +2008-10-22 Alan Modra <amodra@bigpond.net.au> + + * emulparams/elf32_i960.sh (TEMPLATE_NAME): "generic", not "elf32". + (EXTRA_EM_FILE): Define. + +2008-10-22 Alan Modra <amodra@bigpond.net.au> + + * scripttempl/elf.sc (NO_REL_RELOCS, NO_RELA_RELOCS, NON_ALLOC_DYN): + Handle these defines. + * emulparams/criself.sh, * emulparams/crislinux.sh, + * emulparams/elf32am33lin.sh, * emulparams/elf32fr30.sh, + * emulparams/elf32_i860.sh, * emulparams/elf32ip2k.sh, + * emulparams/elf32mcore.sh, * emulparams/elf32ppccommon.sh, + * emulparams/elf32ppcwindiss.sh, * emulparams/elf32_sparc.sh, + * emulparams/elf32_spu.sh, * emulparams/elf32vax.sh, + * emulparams/elf64alpha.sh, * emulparams/elf64mmix.sh, + * emulparams/elf64ppc.sh, * emulparams/elf64_s390.sh, + * emulparams/elf64_sparc.sh, * emulparams/elf_s390.sh, + * emulparams/elf_x86_64.sh, * emulparams/h8300elf.sh, + * emulparams/hppa64linux.sh, * emulparams/hppalinux.sh, + * emulparams/m68kelf.sh, * emulparams/mn10200.sh, + * emulparams/pjelf.sh, * emulparams/ppclynx.sh, + * emulparams/shelf32.sh, * emulparams/shelf_nto.sh, + * emulparams/shelf.sh, * emulparams/shelf_vxworks.sh, + * emulparams/shlelf32_linux.sh, * emulparams/shlelf_linux.sh, + * emulparams/shlelf_nto.sh (NO_REL_RELOCS): Set. + * emulparams/arcelf.sh, * emulparams/elf32_i960.sh, + * emulparams/elf32openrisc.sh, * emulparams/elf_i386_be.sh, + * emulparams/elf_i386_ldso.sh, * emulparams/elf_i386.sh, + * emulparams/elf_i386_vxworks.sh, * emulparams/i386lynx.sh, + * emulparams/i386moss.sh, * emulparams/i386nto.sh, + * emulparams/or32elf.sh, * emulparams/scoreelf.sh (NO_RELA_RELOCS): Set. + +2008-10-22 Alan Modra <amodra@bigpond.net.au> + + * ldlang.c (lang_output_section_find_by_flags): Handle non-alloc + sections. + * emultempl/elf32.em (enum orphan_save_index): Add orphan_nonalloc. + (hold): Likewise. + (gld${EMULATION_NAME}_place_orphan): Handle non-alloc orphans. + +2008-10-22 Bernhard Reutner-Fischer <aldot@gcc.gnu.org> + + * emultempl/armelf.em (PARSE_AND_LIST_OPTIONS): Correct typo in + help text of --be8. + +2008-10-20 Alan Modra <amodra@bigpond.net.au> + + * ldemul.h (ldemul_place_orphan): Update prototype. + (struct ld_emulation_xfer_struct <place_orphan>): Likewise. + * ldemul.c (ldemul_place_orphan): Return pointer to output + section statement. + * emultempl/beos.em (gld${EMULATION_NAME}_place_orphan): Likewise. + * emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Likewise. + * emultempl/mmo.em (mmo_place_orphan): Likewise. + * emultempl/pe.em (gld_${EMULATION_NAME}_place_orphan): Likewise. + * emultempl/pep.em (gld_${EMULATION_NAME}_place_orphan): Likewise. + +2008-10-08 Nick Clifton <nickc@redhat.com> + + * configure.in (ALL_LINGUAS): Add "id". + * configure: Regenerate. + * po/id.po: New Indonesian translation. + +2008-10-05 Alan Modra <amodra@bigpond.net.au> + + PR 6943 + * scripttempl/avr.sc (.bss): Set lma when relocating. + (.bss, .noinit): No need to set vma when relocating. + (.text, .bss, ,noinit): Set vma to zero when not relocating. + +2008-10-04 Alan Modra <amodra@bigpond.net.au> + + PR 6931 + * ldemul.c (ldemul_place_orphan): Add "constraint" param. + * ldemul.h (ldemul_place_orphan): Update prototype. + (struct ld_emulation_xfer_struct <place_orphan>): Likewise add param. + * ldlang.c (unique_section_p): Make static. + (lang_output_section_statement_lookup): Optimise creation of SPECIAL + sections. + (lang_insert_orphan): Add "constraint" param. Pass to + lang_enter_output_section_statement. + (init_os): Don't use an existing bfd section for SPECIAL sections. + (lang_place_orphans): Don't rename unique output sections, instead + mark their output section statements SPECIAL. + * ldlang.h (lang_insert_orphan): Update prototype. + (unique_section_p): Delete. + * emultempl/beos.em (place_orphan): Add "constraint" param. + * emultempl/elf32.em (place_orphan): Likewise. Don't match existing + output sections if set. + * emultempl/pe.em (place_orphan): Likewise. + * emultempl/pep.em (place_orphan): Likewise. + * emultempl/mmo.em (mmo_place_orphan): Update. + * emultempl/spuelf.em (spu_place_special_section): Update. + +2008-10-03 Alan Modra <amodra@bigpond.net.au> + + PR 6931 + * ldemul.c (ldemul_place_orphan): Add "name" param. + * ldemul.h (ldemul_place_orphan): Update prototype. + (struct ld_emulation_xfer_struct <place_orphan>): Likewise. + * ldlang.c (lang_place_orphans): Generate unique section names here.. + * emultempl/elf32.em (place_orphan): ..rather than here. Don't + directly use an existing output section statement that has no + bfd section. + * emultempl/pe.em (place_orphan): Likewise. + * emultempl/pep.em (place_orphan): Likewise. + * emultempl/beos.em (place_orphan): Adjust. + * emultempl/spuelf.em (spu_place_special_section): Adjust + place_orphan call. + * emultempl/genelf.em (gld${EMULATION_NAME}_after_open): New function. + (LDEMUL_AFTER_OPEN): Define. + +2008-09-30 Joseph Myers <joseph@codesourcery.com> + + * emulparams/elf64ppc.sh (OTHER_GOT_RELOC_SECTIONS): Add .rela.opd + and .rela.branch_lt. + +2008-09-30 Alan Modra <amodra@bigpond.net.au> + + * Makefile.am: Run "make dep-am". + * Makefile.in: Regenerate. + +2008-09-29 Peter O'Gorman <pogma@thewrittenword.com> + Steve Ellcey <sje@cup.hp.com> + + * configure: Regenerate for new libtool. + * aclocal.m4: Ditto. + * Makefile.in: Ditto. + +2008-09-29 Kai Tietz <kai.tietz@onevision.com> + + * pe-dll.c (make_import_fixup_entry): Make sure reloc is addend. + +2008-09-29 Nick Clifton <nickc@redhat.com> + + * po/vi.po: Updated Vietnamese translation. + +2008-09-25 Alan Modra <amodra@bigpond.net.au> + + * ldexp.c (fold_binary): Evaluate rhs when lhs not valid. + +2008-09-11 Jan Kratochvil <jan.kratochvil@redhat.com> + + * configure.in: Call AC_SYS_LARGEFILE. + * config.in: Regenerate. + * configure: Regenerate. + +2008-09-09 Peter Rosin <peda@lysator.liu.se> (tiny change) + + * emultempl/pe.em (pe_find_data_imports): Add trailing newline + to warning message. + * emultempl/pep.em (pep_find_data_imports): Likewise. + +2008-09-08 H.J. Lu <hongjiu.lu@intel.com> + + 2008-09-07 Alan Modra <amodra@bigpond.net.au> + + * emultempl/beos.em (gld${EMULATION_NAME}_place_orphan): Updated. + * emultempl/sunos.em (gld${EMULATION_NAME}_before_allocation): Likewise. + 2008-09-08 Tristan Gingold <gingold@adacore.com> * NEWS: Add a marker for the 2.19 features. @@ -350,7 +525,7 @@ * NEWS: Mention new feature. 2008-05-28 Christophe Lyon <christophe.lyon@st.com> - + * ld.texinfo: State that farcalls stubs are supported for ARM-EABI only. @@ -391,7 +566,7 @@ (PARSE_AND_LIST_OPTIONS): Define shell variable. Print help string for --got option. (PARSE_AND_LIST_ARGS_CASES): Define shell variable. Handle --got - option. + option. * ld.texinfo: Document --got=<type> option. * gen-doc.texi: Add M68K. * NEWS: Mention the new feature. @@ -411,7 +586,7 @@ * NEWS: Mention the support for long function calls. 2008-05-15 Christophe Lyon <christophe.lyon@st.com> - + * emultempl/armelf.em (build_section_lists): New function. (stub_file): Define. (need_laying_out): Define. diff --git a/ld/Makefile.am b/ld/Makefile.am index 1584a24..0093c88 100644 --- a/ld/Makefile.am +++ b/ld/Makefile.am @@ -2021,7 +2021,7 @@ ldmisc.o: ldmisc.c sysdep.h config.h $(INCDIR)/fopen-same.h \ $(INCDIR)/demangle.h $(INCDIR)/libiberty.h ld.h ldmisc.h \ ldexp.h ldlang.h ldgram.h ldlex.h ldmain.h ldfile.h \ $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/external.h \ - $(INCDIR)/elf/internal.h $(INCDIR)/bfdlink.h + $(INCDIR)/elf/internal.h ldver.o: ldver.c sysdep.h config.h $(INCDIR)/fopen-same.h \ ../bfd/bfd.h $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \ ../bfd/bfdver.h ld.h ldver.h ldexp.h ldlang.h ldfile.h \ @@ -2051,14 +2051,13 @@ pe-dll.o: pe-dll.c sysdep.h config.h $(INCDIR)/fopen-same.h \ $(INCDIR)/bfdlink.h $(INCDIR)/libiberty.h $(INCDIR)/ansidecl.h \ $(INCDIR)/safe-ctype.h ld.h ldexp.h ldlang.h ldwrite.h \ ldmisc.h ldgram.h ldmain.h ldfile.h ldemul.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h deffile.h pe-dll.h + $(BFDDIR)/libcoff.h deffile.h pe-dll.h pep-dll.o: pep-dll.c pe-dll.c sysdep.h config.h $(INCDIR)/fopen-same.h \ ../bfd/bfd.h $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \ $(INCDIR)/bfdlink.h $(INCDIR)/libiberty.h $(INCDIR)/ansidecl.h \ $(INCDIR)/safe-ctype.h ld.h ldexp.h ldlang.h ldwrite.h \ ldmisc.h ldgram.h ldmain.h ldfile.h ldemul.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h deffile.h pe-dll.h \ - pep-dll.h + $(BFDDIR)/libcoff.h deffile.h pe-dll.h pep-dll.h ldgram.o: ldgram.c sysdep.h config.h $(INCDIR)/fopen-same.h \ ../bfd/bfd.h $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \ $(INCDIR)/bfdlink.h ld.h ldexp.h ldver.h ldlang.h ldfile.h \ diff --git a/ld/Makefile.in b/ld/Makefile.in index 9b087dd..f2e1030 100644 --- a/ld/Makefile.in +++ b/ld/Makefile.in @@ -66,7 +66,7 @@ am__aclocal_m4_deps = $(top_srcdir)/../bfd/acinclude.m4 \ $(top_srcdir)/../config/progtest.m4 \ $(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \ $(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \ - $(top_srcdir)/configure.in + $(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/configure.in am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ $(ACLOCAL_M4) am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ @@ -149,6 +149,7 @@ CYGPATH_W = @CYGPATH_W@ DATADIRNAME = @DATADIRNAME@ DEFS = @DEFS@ DEPDIR = @DEPDIR@ +DSYMUTIL = @DSYMUTIL@ DUMPBIN = @DUMPBIN@ ECHO_C = @ECHO_C@ ECHO_N = @ECHO_N@ @@ -195,6 +196,7 @@ LIBTOOL = @LIBTOOL@ # which may have the form: LIB_PATH=/lib:/usr/local/lib. This can be set # when the linker is configured via the --with-lib-path configure switch. LIB_PATH = @LIB_PATH@ +LIPO = @LIPO@ LN_S = @LN_S@ LTLIBOBJS = @LTLIBOBJS@ MAINT = @MAINT@ @@ -206,8 +208,12 @@ MSGFMT = @MSGFMT@ MSGMERGE = @MSGMERGE@ NATIVE_LIB_DIRS = @NATIVE_LIB_DIRS@ NM = @NM@ +NMEDIT = @NMEDIT@ NO_WERROR = @NO_WERROR@ +OBJDUMP = @OBJDUMP@ OBJEXT = @OBJEXT@ +OTOOL = @OTOOL@ +OTOOL64 = @OTOOL64@ PACKAGE = @PACKAGE@ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ PACKAGE_NAME = @PACKAGE_NAME@ @@ -234,7 +240,13 @@ XGETTEXT = @XGETTEXT@ YACC = `if [ -f ../bison/bison ]; then echo ../bison/bison -y -L$(srcdir)/../bison/; else echo @YACC@; fi` ac_ct_AR = @ac_ct_AR@ ac_ct_CC = @ac_ct_CC@ +ac_ct_DSYMUTIL = @ac_ct_DSYMUTIL@ ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +ac_ct_LIPO = @ac_ct_LIPO@ +ac_ct_NMEDIT = @ac_ct_NMEDIT@ +ac_ct_OBJDUMP = @ac_ct_OBJDUMP@ +ac_ct_OTOOL = @ac_ct_OTOOL@ +ac_ct_OTOOL64 = @ac_ct_OTOOL64@ ac_ct_RANLIB = @ac_ct_RANLIB@ ac_ct_STRIP = @ac_ct_STRIP@ am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ @@ -2812,7 +2824,7 @@ ldmisc.o: ldmisc.c sysdep.h config.h $(INCDIR)/fopen-same.h \ $(INCDIR)/demangle.h $(INCDIR)/libiberty.h ld.h ldmisc.h \ ldexp.h ldlang.h ldgram.h ldlex.h ldmain.h ldfile.h \ $(BFDDIR)/elf-bfd.h $(INCDIR)/elf/common.h $(INCDIR)/elf/external.h \ - $(INCDIR)/elf/internal.h $(INCDIR)/bfdlink.h + $(INCDIR)/elf/internal.h ldver.o: ldver.c sysdep.h config.h $(INCDIR)/fopen-same.h \ ../bfd/bfd.h $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \ ../bfd/bfdver.h ld.h ldver.h ldexp.h ldlang.h ldfile.h \ @@ -2842,14 +2854,13 @@ pe-dll.o: pe-dll.c sysdep.h config.h $(INCDIR)/fopen-same.h \ $(INCDIR)/bfdlink.h $(INCDIR)/libiberty.h $(INCDIR)/ansidecl.h \ $(INCDIR)/safe-ctype.h ld.h ldexp.h ldlang.h ldwrite.h \ ldmisc.h ldgram.h ldmain.h ldfile.h ldemul.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h deffile.h pe-dll.h + $(BFDDIR)/libcoff.h deffile.h pe-dll.h pep-dll.o: pep-dll.c pe-dll.c sysdep.h config.h $(INCDIR)/fopen-same.h \ ../bfd/bfd.h $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \ $(INCDIR)/bfdlink.h $(INCDIR)/libiberty.h $(INCDIR)/ansidecl.h \ $(INCDIR)/safe-ctype.h ld.h ldexp.h ldlang.h ldwrite.h \ ldmisc.h ldgram.h ldmain.h ldfile.h ldemul.h $(INCDIR)/coff/internal.h \ - $(BFDDIR)/libcoff.h $(INCDIR)/bfdlink.h deffile.h pe-dll.h \ - pep-dll.h + $(BFDDIR)/libcoff.h deffile.h pe-dll.h pep-dll.h ldgram.o: ldgram.c sysdep.h config.h $(INCDIR)/fopen-same.h \ ../bfd/bfd.h $(INCDIR)/ansidecl.h $(INCDIR)/symcat.h \ $(INCDIR)/bfdlink.h ld.h ldexp.h ldver.h ldlang.h ldfile.h \ diff --git a/ld/aclocal.m4 b/ld/aclocal.m4 index 4317ce3..95c2a5c 100644 --- a/ld/aclocal.m4 +++ b/ld/aclocal.m4 @@ -892,3 +892,4 @@ m4_include([../libtool.m4]) m4_include([../ltoptions.m4]) m4_include([../ltsugar.m4]) m4_include([../ltversion.m4]) +m4_include([../lt~obsolete.m4]) diff --git a/ld/config.in b/ld/config.in index 5321a12..e3d4f71 100644 --- a/ld/config.in +++ b/ld/config.in @@ -143,11 +143,17 @@ `char[]'. */ #undef YYTEXT_POINTER +/* Number of bits in a file offset, on hosts where this is settable. */ +#undef _FILE_OFFSET_BITS + /* Enable GNU extensions on systems that have them. */ #ifndef _GNU_SOURCE # undef _GNU_SOURCE #endif +/* Define for large files, on AIX-style hosts. */ +#undef _LARGE_FILES + /* Define to 1 if on MINIX. */ #undef _MINIX diff --git a/ld/configure b/ld/configure index c0ad08b..d828eef 100755 --- a/ld/configure +++ b/ld/configure @@ -458,7 +458,7 @@ ac_includes_default="\ # include <unistd.h> #endif" -ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE use_sysroot TARGET_SYSTEM_ROOT TARGET_SYSTEM_ROOT_DEFINE WARN_CFLAGS NO_WERROR CPP EGREP LIBTOOL SED FGREP GREP LD DUMPBIN ac_ct_DUMPBIN NM LN_S AR ac_ct_AR RANLIB ac_ct_RANLIB lt_ECHO USE_NLS LIBINTL LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS DATADIRNAME INSTOBJEXT GENCAT CATOBJEXT MKINSTALLDIRS MSGFMT MSGMERGE YACC LEX LEXLIB LEX_OUTPUT_ROOT MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT GENINSRC_NEVER_TRUE GENINSRC_NEVER_FALSE HDEFINES HOSTING_CRT0 HOSTING_LIBS NATIVE_LIB_DIRS STRINGIFY EMUL EMULATION_OFILES EMUL_EXTRA_OFILES LIB_PATH EMULATION_LIBPATH TESTBFDLIB datarootdir docdir htmldir LIBOBJS LTLIBOBJS' +ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os target target_cpu target_vendor target_os CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE use_sysroot TARGET_SYSTEM_ROOT TARGET_SYSTEM_ROOT_DEFINE WARN_CFLAGS NO_WERROR CPP EGREP LIBTOOL SED FGREP GREP LD DUMPBIN ac_ct_DUMPBIN NM LN_S OBJDUMP ac_ct_OBJDUMP AR ac_ct_AR RANLIB ac_ct_RANLIB lt_ECHO DSYMUTIL ac_ct_DSYMUTIL NMEDIT ac_ct_NMEDIT LIPO ac_ct_LIPO OTOOL ac_ct_OTOOL OTOOL64 ac_ct_OTOOL64 USE_NLS LIBINTL LIBINTL_DEP INCINTL XGETTEXT GMSGFMT POSUB CATALOGS DATADIRNAME INSTOBJEXT GENCAT CATOBJEXT MKINSTALLDIRS MSGFMT MSGMERGE YACC LEX LEXLIB LEX_OUTPUT_ROOT MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT GENINSRC_NEVER_TRUE GENINSRC_NEVER_FALSE HDEFINES HOSTING_CRT0 HOSTING_LIBS NATIVE_LIB_DIRS STRINGIFY EMUL EMULATION_OFILES EMUL_EXTRA_OFILES LIB_PATH EMULATION_LIBPATH TESTBFDLIB datarootdir docdir htmldir LIBOBJS LTLIBOBJS' ac_subst_files='TDIRS' ac_pwd=`pwd` @@ -1008,6 +1008,7 @@ Optional Features: multigot) --enable-werror treat compile warnings as errors --enable-build-warnings enable build-time compiler warnings + --disable-largefile omit support for large files --enable-shared[=PKGS] build shared libraries [default=yes] --enable-static[=PKGS] @@ -4932,6 +4933,370 @@ _ACEOF _ACEOF +# Check whether --enable-largefile or --disable-largefile was given. +if test "${enable_largefile+set}" = set; then + enableval="$enable_largefile" + +fi; +if test "$enable_largefile" != no; then + + echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5 +echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_largefile_CC+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + ac_cv_sys_largefile_CC=no + if test "$GCC" != yes; then + ac_save_CC=$CC + while :; do + # IRIX 6.2 and later do not support large files by default, + # so use the C compiler's -n32 option if that helps. + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <sys/types.h> + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext + CC="$CC -n32" + rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_largefile_CC=' -n32'; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext + break + done + CC=$ac_save_CC + rm -f conftest.$ac_ext + fi +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5 +echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6 + if test "$ac_cv_sys_largefile_CC" != no; then + CC=$CC$ac_cv_sys_largefile_CC + fi + + echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_file_offset_bits+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + while :; do + ac_cv_sys_file_offset_bits=no + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <sys/types.h> + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#define _FILE_OFFSET_BITS 64 +#include <sys/types.h> + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_file_offset_bits=64; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + break +done +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5 +echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6 +if test "$ac_cv_sys_file_offset_bits" != no; then + +cat >>confdefs.h <<_ACEOF +#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits +_ACEOF + +fi +rm -f conftest* + echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5 +echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6 +if test "${ac_cv_sys_large_files+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + while :; do + ac_cv_sys_large_files=no + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <sys/types.h> + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#define _LARGE_FILES 1 +#include <sys/types.h> + /* Check that off_t can represent 2**63 - 1 correctly. + We can't simply define LARGE_OFF_T to be 9223372036854775807, + since some C++ compilers masquerading as C compilers + incorrectly reject 9223372036854775807. */ +#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) + int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 + && LARGE_OFF_T % 2147483647 == 1) + ? 1 : -1]; +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_sys_large_files=1; break +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext + break +done +fi +echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5 +echo "${ECHO_T}$ac_cv_sys_large_files" >&6 +if test "$ac_cv_sys_large_files" != no; then + +cat >>confdefs.h <<_ACEOF +#define _LARGE_FILES $ac_cv_sys_large_files +_ACEOF + +fi +rm -f conftest* +fi + # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or # incompatible versions: @@ -5024,134 +5389,22 @@ test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' - - -macro_version='2.1a' -macro_revision='1.2435' - - - - - - - - - - - - -ltmain="$ac_aux_dir/ltmain.sh" - -# Set options - -enable_dlopen=no - - -enable_win32_dll=no - - -# Check whether --enable-shared or --disable-shared was given. -if test "${enable_shared+set}" = set; then - enableval="$enable_shared" - p=${PACKAGE-default} - case $enableval in - yes) enable_shared=yes ;; - no) enable_shared=no ;; - *) - enable_shared=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_shared=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_shared=yes -fi; - - - - - - - - -# Check whether --enable-static or --disable-static was given. -if test "${enable_static+set}" = set; then - enableval="$enable_static" - p=${PACKAGE-default} - case $enableval in - yes) enable_static=yes ;; - no) enable_static=no ;; - *) - enable_static=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_static=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_static=yes -fi; - +case `pwd` in + *\ * | *\ *) + { echo "$as_me:$LINENO: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +esac +macro_version='2.2.6' +macro_revision='1.3012' -# Check whether --with-pic or --without-pic was given. -if test "${with_pic+set}" = set; then - withval="$with_pic" - pic_mode="$withval" -else - pic_mode=default -fi; -test -z "$pic_mode" && pic_mode=default - - - - - - - -# Check whether --enable-fast-install or --disable-fast-install was given. -if test "${enable_fast_install+set}" = set; then - enableval="$enable_fast_install" - p=${PACKAGE-default} - case $enableval in - yes) enable_fast_install=yes ;; - no) enable_fast_install=no ;; - *) - enable_fast_install=no - # Look at the argument we got. We use all the common list separators. - lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," - for pkg in $enableval; do - IFS="$lt_save_ifs" - if test "X$pkg" = "X$p"; then - enable_fast_install=yes - fi - done - IFS="$lt_save_ifs" - ;; - esac -else - enable_fast_install=yes -fi; @@ -5159,6 +5412,7 @@ fi; +ltmain="$ac_aux_dir/ltmain.sh" echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5 echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6 @@ -5380,7 +5634,6 @@ with_gnu_ld=$lt_cv_prog_gnu_ld - echo "$as_me:$LINENO: checking for BSD- or MS-compatible name lister (nm)" >&5 echo $ECHO_N "checking for BSD- or MS-compatible name lister (nm)... $ECHO_C" >&6 if test "${lt_cv_path_NM+set}" = set; then @@ -5542,13 +5795,13 @@ if test "${lt_cv_nm_interface+set}" = set; then else lt_cv_nm_interface="BSD nm" echo "int some_variable = 0;" > conftest.$ac_ext - (eval echo "\"\$as_me:5545: $ac_compile\"" >&5) + (eval echo "\"\$as_me:5798: $ac_compile\"" >&5) (eval "$ac_compile" 2>conftest.err) cat conftest.err >&5 - (eval echo "\"\$as_me:5548: $NM \\\"conftest.$ac_objext\\\"\"" >&5) + (eval echo "\"\$as_me:5801: $NM \\\"conftest.$ac_objext\\\"\"" >&5) (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) cat conftest.err >&5 - (eval echo "\"\$as_me:5551: output\"" >&5) + (eval echo "\"\$as_me:5804: output\"" >&5) cat conftest.out >&5 if $GREP 'External.*some_variable' conftest.out > /dev/null; then lt_cv_nm_interface="MS dumpbin" @@ -5594,7 +5847,7 @@ else lt_cv_sys_max_cmd_len=-1; ;; - cygwin* | mingw*) + cygwin* | mingw* | cegcc*) # On Win9x/ME, this test blows up -- it succeeds, but takes # about 5 minutes as the teststring grows exponentially. # Worse, since 9x/ME are not pre-emptively multitasking, @@ -5655,8 +5908,8 @@ else fi ;; *) - lt_cv_sys_max_cmd_len=`getconf ARG_MAX 2> /dev/null` - if test -n $lt_cv_sys_max_cmd_len; then + lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` + if test -n "$lt_cv_sys_max_cmd_len"; then lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` else @@ -5703,7 +5956,6 @@ max_cmd_len=$lt_cv_sys_max_cmd_len - : ${CP="cp -f"} : ${MV="mv -f"} : ${RM="rm -f"} @@ -5714,7 +5966,9 @@ echo $ECHO_N "checking whether the shell understands some XSI constructs... $ECH xsi_shell=no ( _lt_dummy="a/b/c" test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ - = c,a/b,, ) >/dev/null 2>&1 \ + = c,a/b,, \ + && eval 'test $(( 1 + 1 )) -eq 2 \ + && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ && xsi_shell=yes echo "$as_me:$LINENO: result: $xsi_shell" >&5 echo "${ECHO_T}$xsi_shell" >&6 @@ -5794,6 +6048,95 @@ esac +if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +set dummy ${ac_tool_prefix}objdump; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_OBJDUMP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$OBJDUMP"; then + ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +OBJDUMP=$ac_cv_prog_OBJDUMP +if test -n "$OBJDUMP"; then + echo "$as_me:$LINENO: result: $OBJDUMP" >&5 +echo "${ECHO_T}$OBJDUMP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_OBJDUMP"; then + ac_ct_OBJDUMP=$OBJDUMP + # Extract the first word of "objdump", so it can be a program name with args. +set dummy objdump; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_OBJDUMP+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_OBJDUMP"; then + ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OBJDUMP="objdump" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_OBJDUMP" && ac_cv_prog_ac_ct_OBJDUMP="false" +fi +fi +ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +if test -n "$ac_ct_OBJDUMP"; then + echo "$as_me:$LINENO: result: $ac_ct_OBJDUMP" >&5 +echo "${ECHO_T}$ac_ct_OBJDUMP" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + OBJDUMP=$ac_ct_OBJDUMP +else + OBJDUMP="$ac_cv_prog_OBJDUMP" +fi + +test -z "$OBJDUMP" && OBJDUMP=objdump + + + + + + + + echo "$as_me:$LINENO: checking how to recognize dependent libraries" >&5 echo $ECHO_N "checking how to recognize dependent libraries... $ECHO_C" >&6 @@ -5848,6 +6191,12 @@ mingw* | pw32*) fi ;; +cegcc) + # use the weaker test based on 'objdump'. See mingw*. + lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' + lt_cv_file_magic_cmd='$OBJDUMP -f' + ;; + darwin* | rhapsody*) lt_cv_deplibs_check_method=pass_all ;; @@ -6270,7 +6619,7 @@ test -z "$RANLIB" && RANLIB=: # Determine commands to create old-style static archives. -old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs' +old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' old_postinstall_cmds='chmod 644 $oldlib' old_postuninstall_cmds= @@ -6350,7 +6699,7 @@ case $host_os in aix*) symcode='[BCDT]' ;; -cygwin* | mingw* | pw32*) +cygwin* | mingw* | pw32* | cegcc*) symcode='[ABCDGISTW]' ;; hpux*) @@ -6394,6 +6743,7 @@ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' # Transform an extracted symbol line into symbol name and symbol address lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" # Handle CRLF in mingw tool chain opt_cr= @@ -6533,7 +6883,7 @@ _LT_EOF echo "$progname: failed program was:" >&5 cat conftest.$ac_ext >&5 fi - rm -f conftest* conftst* + rm -rf conftest* conftst* # Do not use the global_symbol_pipe unless it works. if test "$pipe_works" = yes; then @@ -6572,6 +6922,11 @@ fi + + + + + # Check whether --enable-libtool-lock or --disable-libtool-lock was given. if test "${enable_libtool_lock+set}" = set; then enableval="$enable_libtool_lock" @@ -6603,7 +6958,7 @@ ia64-*-hpux*) ;; *-*-irix6*) # Find out which ABI we are using. - echo '#line 6606 "configure"' > conftest.$ac_ext + echo '#line 6961 "configure"' > conftest.$ac_ext if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 (eval $ac_compile) 2>&5 ac_status=$? @@ -6778,7 +7133,11 @@ sparc*-*solaris*) *64-bit*) case $lt_cv_prog_gnu_ld in yes*) LD="${LD-ld} -m elf64_sparc" ;; - *) LD="${LD-ld} -64" ;; + *) + if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then + LD="${LD-ld} -64" + fi + ;; esac ;; esac @@ -6790,6 +7149,559 @@ esac need_locks="$enable_libtool_lock" + case $host_os in + rhapsody* | darwin*) + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_DSYMUTIL+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$DSYMUTIL"; then + ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +DSYMUTIL=$ac_cv_prog_DSYMUTIL +if test -n "$DSYMUTIL"; then + echo "$as_me:$LINENO: result: $DSYMUTIL" >&5 +echo "${ECHO_T}$DSYMUTIL" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_DSYMUTIL"; then + ac_ct_DSYMUTIL=$DSYMUTIL + # Extract the first word of "dsymutil", so it can be a program name with args. +set dummy dsymutil; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_DSYMUTIL+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_DSYMUTIL"; then + ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_DSYMUTIL" && ac_cv_prog_ac_ct_DSYMUTIL=":" +fi +fi +ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +if test -n "$ac_ct_DSYMUTIL"; then + echo "$as_me:$LINENO: result: $ac_ct_DSYMUTIL" >&5 +echo "${ECHO_T}$ac_ct_DSYMUTIL" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + DSYMUTIL=$ac_ct_DSYMUTIL +else + DSYMUTIL="$ac_cv_prog_DSYMUTIL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_NMEDIT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$NMEDIT"; then + ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +NMEDIT=$ac_cv_prog_NMEDIT +if test -n "$NMEDIT"; then + echo "$as_me:$LINENO: result: $NMEDIT" >&5 +echo "${ECHO_T}$NMEDIT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_NMEDIT"; then + ac_ct_NMEDIT=$NMEDIT + # Extract the first word of "nmedit", so it can be a program name with args. +set dummy nmedit; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_NMEDIT+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_NMEDIT"; then + ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_NMEDIT="nmedit" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_NMEDIT" && ac_cv_prog_ac_ct_NMEDIT=":" +fi +fi +ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +if test -n "$ac_ct_NMEDIT"; then + echo "$as_me:$LINENO: result: $ac_ct_NMEDIT" >&5 +echo "${ECHO_T}$ac_ct_NMEDIT" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + NMEDIT=$ac_ct_NMEDIT +else + NMEDIT="$ac_cv_prog_NMEDIT" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +set dummy ${ac_tool_prefix}lipo; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_LIPO+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$LIPO"; then + ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_LIPO="${ac_tool_prefix}lipo" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +LIPO=$ac_cv_prog_LIPO +if test -n "$LIPO"; then + echo "$as_me:$LINENO: result: $LIPO" >&5 +echo "${ECHO_T}$LIPO" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_LIPO"; then + ac_ct_LIPO=$LIPO + # Extract the first word of "lipo", so it can be a program name with args. +set dummy lipo; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_LIPO+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_LIPO"; then + ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_LIPO="lipo" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_LIPO" && ac_cv_prog_ac_ct_LIPO=":" +fi +fi +ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +if test -n "$ac_ct_LIPO"; then + echo "$as_me:$LINENO: result: $ac_ct_LIPO" >&5 +echo "${ECHO_T}$ac_ct_LIPO" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + LIPO=$ac_ct_LIPO +else + LIPO="$ac_cv_prog_LIPO" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_OTOOL+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$OTOOL"; then + ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL="${ac_tool_prefix}otool" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +OTOOL=$ac_cv_prog_OTOOL +if test -n "$OTOOL"; then + echo "$as_me:$LINENO: result: $OTOOL" >&5 +echo "${ECHO_T}$OTOOL" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_OTOOL"; then + ac_ct_OTOOL=$OTOOL + # Extract the first word of "otool", so it can be a program name with args. +set dummy otool; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_OTOOL+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_OTOOL"; then + ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL="otool" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_OTOOL" && ac_cv_prog_ac_ct_OTOOL=":" +fi +fi +ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +if test -n "$ac_ct_OTOOL"; then + echo "$as_me:$LINENO: result: $ac_ct_OTOOL" >&5 +echo "${ECHO_T}$ac_ct_OTOOL" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + OTOOL=$ac_ct_OTOOL +else + OTOOL="$ac_cv_prog_OTOOL" +fi + + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +set dummy ${ac_tool_prefix}otool64; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_OTOOL64+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$OTOOL64"; then + ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + +fi +fi +OTOOL64=$ac_cv_prog_OTOOL64 +if test -n "$OTOOL64"; then + echo "$as_me:$LINENO: result: $OTOOL64" >&5 +echo "${ECHO_T}$OTOOL64" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + +fi +if test -z "$ac_cv_prog_OTOOL64"; then + ac_ct_OTOOL64=$OTOOL64 + # Extract the first word of "otool64", so it can be a program name with args. +set dummy otool64; ac_word=$2 +echo "$as_me:$LINENO: checking for $ac_word" >&5 +echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6 +if test "${ac_cv_prog_ac_ct_OTOOL64+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + if test -n "$ac_ct_OTOOL64"; then + ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if $as_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_OTOOL64="otool64" + echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done +done + + test -z "$ac_cv_prog_ac_ct_OTOOL64" && ac_cv_prog_ac_ct_OTOOL64=":" +fi +fi +ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +if test -n "$ac_ct_OTOOL64"; then + echo "$as_me:$LINENO: result: $ac_ct_OTOOL64" >&5 +echo "${ECHO_T}$ac_ct_OTOOL64" >&6 +else + echo "$as_me:$LINENO: result: no" >&5 +echo "${ECHO_T}no" >&6 +fi + + OTOOL64=$ac_ct_OTOOL64 +else + OTOOL64="$ac_cv_prog_OTOOL64" +fi + + + + + + + + + + + + + + + + + + + + + + + + + + + + echo "$as_me:$LINENO: checking for -single_module linker flag" >&5 +echo $ECHO_N "checking for -single_module linker flag... $ECHO_C" >&6 +if test "${lt_cv_apple_cc_single_mod+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_apple_cc_single_mod=no + if test -z "${LT_MULTI_MODULE}"; then + # By default we will add the -single_module flag. You can override + # by either setting the environment variable LT_MULTI_MODULE + # non-empty at configure time, or by adding -multi_module to the + # link flags. + rm -rf libconftest.dylib* + echo "int foo(void){return 1;}" > conftest.c + echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +-dynamiclib -Wl,-single_module conftest.c" >&5 + $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ + -dynamiclib -Wl,-single_module conftest.c 2>conftest.err + _lt_result=$? + if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then + lt_cv_apple_cc_single_mod=yes + else + cat conftest.err >&5 + fi + rm -rf libconftest.dylib* + rm -f conftest.* + fi +fi +echo "$as_me:$LINENO: result: $lt_cv_apple_cc_single_mod" >&5 +echo "${ECHO_T}$lt_cv_apple_cc_single_mod" >&6 + echo "$as_me:$LINENO: checking for -exported_symbols_list linker flag" >&5 +echo $ECHO_N "checking for -exported_symbols_list linker flag... $ECHO_C" >&6 +if test "${lt_cv_ld_exported_symbols_list+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + lt_cv_ld_exported_symbols_list=no + save_LDFLAGS=$LDFLAGS + echo "_main" > conftest.sym + LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext conftest$ac_exeext +if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 + (eval $ac_link) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest$ac_exeext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + lt_cv_ld_exported_symbols_list=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +lt_cv_ld_exported_symbols_list=no +fi +rm -f conftest.err conftest.$ac_objext \ + conftest$ac_exeext conftest.$ac_ext + LDFLAGS="$save_LDFLAGS" + +fi +echo "$as_me:$LINENO: result: $lt_cv_ld_exported_symbols_list" >&5 +echo "${ECHO_T}$lt_cv_ld_exported_symbols_list" >&6 + case $host_os in + rhapsody* | darwin1.[012]) + _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; + darwin1.*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + darwin*) # darwin 5.x on + # if running on 10.5 or later, the deployment target defaults + # to the OS version, if on x86, and 10.4, the deployment + # target defaults to 10.4. Don't you love it? + case ${MACOSX_DEPLOYMENT_TARGET-10.0},$host in + 10.0,*86*-darwin8*|10.0,*-darwin[91]*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + 10.[012]*) + _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; + 10.*) + _lt_dar_allow_undefined='${wl}-undefined ${wl}dynamic_lookup' ;; + esac + ;; + esac + if test "$lt_cv_apple_cc_single_mod" = "yes"; then + _lt_dar_single_mod='$single_module' + fi + if test "$lt_cv_ld_exported_symbols_list" = "yes"; then + _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' + else + _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' + fi + if test "$DSYMUTIL" != ":"; then + _lt_dsymutil='~$DSYMUTIL $lib || :' + else + _lt_dsymutil= + fi + ;; + esac + + for ac_header in dlfcn.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -6852,6 +7764,128 @@ done +# Set options + + + + enable_dlopen=no + + + enable_win32_dll=no + + + # Check whether --enable-shared or --disable-shared was given. +if test "${enable_shared+set}" = set; then + enableval="$enable_shared" + p=${PACKAGE-default} + case $enableval in + yes) enable_shared=yes ;; + no) enable_shared=no ;; + *) + enable_shared=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_shared=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_shared=yes +fi; + + + + + + + + + # Check whether --enable-static or --disable-static was given. +if test "${enable_static+set}" = set; then + enableval="$enable_static" + p=${PACKAGE-default} + case $enableval in + yes) enable_static=yes ;; + no) enable_static=no ;; + *) + enable_static=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_static=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_static=yes +fi; + + + + + + + + + +# Check whether --with-pic or --without-pic was given. +if test "${with_pic+set}" = set; then + withval="$with_pic" + pic_mode="$withval" +else + pic_mode=default +fi; + +test -z "$pic_mode" && pic_mode=default + + + + + + + + # Check whether --enable-fast-install or --disable-fast-install was given. +if test "${enable_fast_install+set}" = set; then + enableval="$enable_fast_install" + p=${PACKAGE-default} + case $enableval in + yes) enable_fast_install=yes ;; + no) enable_fast_install=no ;; + *) + enable_fast_install=no + # Look at the argument we got. We use all the common list separators. + lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," + for pkg in $enableval; do + IFS="$lt_save_ifs" + if test "X$pkg" = "X$p"; then + enable_fast_install=yes + fi + done + IFS="$lt_save_ifs" + ;; + esac +else + enable_fast_install=yes +fi; + + + + + + + + + + # This can be used to rebuild libtool when needed LIBTOOL_DEPS="$ltmain" @@ -7198,7 +8232,7 @@ ac_outfile=conftest.$ac_objext echo "$lt_simple_link_test_code" >conftest.$ac_ext eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err _lt_linker_boilerplate=`cat conftest.err` -$RM conftest* +$RM -r conftest* ## CAVEAT EMPTOR: @@ -7230,11 +8264,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7233: $lt_compile\"" >&5) + (eval echo "\"\$as_me:8267: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:7237: \$? = $ac_status" >&5 + echo "$as_me:8271: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. @@ -7284,19 +8318,25 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; amigaos*) - if test "$host_cpu" = m68k; then - # FIXME: we need at least 68020 code to build shared libraries, but - # adding the `-m68020' flag to GCC prevents building anything better, - # like `-m68040'. - lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' - fi + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + lt_prog_compiler_pic='-fPIC' + ;; + m68k) + # FIXME: we need at least 68020 code to build shared libraries, but + # adding the `-m68020' flag to GCC prevents building anything better, + # like `-m68040'. + lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' + ;; + esac ;; beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) # PIC is the default for these OSes. ;; - mingw* | cygwin* | pw32* | os2*) + mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). # Although the cygwin gcc ignores -fPIC, still need this for old-style @@ -7311,10 +8351,11 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 ;; hpux*) - # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but - # not for PA HP-UX. + # PIC is the default for 64-bit PA HP-UX, but not for 32-bit + # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag + # sets the default TLS model and affects inlining. case $host_cpu in - hppa*64*|ia64*) + hppa*64*) # +Z the default ;; *) @@ -7363,18 +8404,8 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' fi ;; - darwin*) - # PIC is the default on this platform - # Common symbols not allowed in MH_DYLIB files - case $cc_basename in - xlc*) - lt_prog_compiler_pic='-qnocommon' - lt_prog_compiler_wl='-Wl,' - ;; - esac - ;; - mingw* | cygwin* | pw32* | os2*) + mingw* | cygwin* | pw32* | os2* | cegcc*) # This hack is so that the source file can tell whether it is being # built for inclusion in a dll (and should export symbols for example). lt_prog_compiler_pic='-DDLL_EXPORT' @@ -7404,11 +8435,25 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 linux* | k*bsd*-gnu) case $cc_basename in - icc* | ecc*) + # old Intel for x86_64 which still supported -KPIC. + ecc*) lt_prog_compiler_wl='-Wl,' lt_prog_compiler_pic='-KPIC' lt_prog_compiler_static='-static' ;; + # icc used to be incompatible with GCC. + # ICC 10 doesn't accept -KPIC any more. + icc* | ifort*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-fPIC' + lt_prog_compiler_static='-static' + ;; + # Lahey Fortran 8.1. + lf95*) + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='--shared' + lt_prog_compiler_static='--static' + ;; pgcc* | pgf77* | pgf90* | pgf95*) # Portland Group compilers (*not* the Pentium gcc compiler, # which looks to be a dead project) @@ -7421,6 +8466,12 @@ echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6 # All Alpha code is PIC. lt_prog_compiler_static='-non_shared' ;; + xl*) + # IBM XL C 8.0/Fortran 10.1 on PPC + lt_prog_compiler_wl='-Wl,' + lt_prog_compiler_pic='-qpic' + lt_prog_compiler_static='-qstaticlink' + ;; *) case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) @@ -7536,10 +8587,10 @@ echo "${ECHO_T}$lt_prog_compiler_pic" >&6 if test -n "$lt_prog_compiler_pic"; then echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6 -if test "${lt_prog_compiler_pic_works+set}" = set; then +if test "${lt_cv_prog_compiler_pic_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - lt_prog_compiler_pic_works=no + lt_cv_prog_compiler_pic_works=no ac_outfile=conftest.$ac_objext echo "$lt_simple_compile_test_code" > conftest.$ac_ext lt_compiler_flag="$lt_prog_compiler_pic -DPIC" @@ -7552,27 +8603,27 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7555: $lt_compile\"" >&5) + (eval echo "\"\$as_me:8606: $lt_compile\"" >&5) (eval "$lt_compile" 2>conftest.err) ac_status=$? cat conftest.err >&5 - echo "$as_me:7559: \$? = $ac_status" >&5 + echo "$as_me:8610: \$? = $ac_status" >&5 if (exit $ac_status) && test -s "$ac_outfile"; then # The compiler can only warn and ignore the option if not recognized # So say no if there are warnings other than the usual output. $ECHO "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then - lt_prog_compiler_pic_works=yes + lt_cv_prog_compiler_pic_works=yes fi fi $RM conftest* fi -echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5 -echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6 +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_pic_works" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_pic_works" >&6 -if test x"$lt_prog_compiler_pic_works" = xyes; then +if test x"$lt_cv_prog_compiler_pic_works" = xyes; then case $lt_prog_compiler_pic in "" | " "*) ;; *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; @@ -7595,10 +8646,10 @@ fi wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5 echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6 -if test "${lt_prog_compiler_static_works+set}" = set; then +if test "${lt_cv_prog_compiler_static_works+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - lt_prog_compiler_static_works=no + lt_cv_prog_compiler_static_works=no save_LDFLAGS="$LDFLAGS" LDFLAGS="$LDFLAGS $lt_tmp_static_flag" echo "$lt_simple_link_test_code" > conftest.$ac_ext @@ -7611,20 +8662,20 @@ else $ECHO "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 if diff conftest.exp conftest.er2 >/dev/null; then - lt_prog_compiler_static_works=yes + lt_cv_prog_compiler_static_works=yes fi else - lt_prog_compiler_static_works=yes + lt_cv_prog_compiler_static_works=yes fi fi - $RM conftest* + $RM -r conftest* LDFLAGS="$save_LDFLAGS" fi -echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5 -echo "${ECHO_T}$lt_prog_compiler_static_works" >&6 +echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_static_works" >&5 +echo "${ECHO_T}$lt_cv_prog_compiler_static_works" >&6 -if test x"$lt_prog_compiler_static_works" = xyes; then +if test x"$lt_cv_prog_compiler_static_works" = xyes; then : else lt_prog_compiler_static= @@ -7657,11 +8708,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7660: $lt_compile\"" >&5) + (eval echo "\"\$as_me:8711: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:7664: \$? = $ac_status" >&5 + echo "$as_me:8715: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -7712,11 +8763,11 @@ else -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ -e 's:$: $lt_compiler_flag:'` - (eval echo "\"\$as_me:7715: $lt_compile\"" >&5) + (eval echo "\"\$as_me:8766: $lt_compile\"" >&5) (eval "$lt_compile" 2>out/conftest.err) ac_status=$? cat out/conftest.err >&5 - echo "$as_me:7719: \$? = $ac_status" >&5 + echo "$as_me:8770: \$? = $ac_status" >&5 if (exit $ac_status) && test -s out/conftest2.$ac_objext then # The compiler can only warn and ignore the option if not recognized @@ -7806,16 +8857,17 @@ echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared librar # it will be wrapped by ` (' and `)$', so one must not match beginning or # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', # as well as any symbol that contains `d'. - exclude_expsyms="_GLOBAL_OFFSET_TABLE_" + exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out # platforms (ab)use it in PIC code, but their linkers get confused if # the symbol is explicitly referenced. Since portable code cannot # rely on this symbol name, it's probably fine to never include it in # preloaded symbol tables. + # Exclude shared library initialization/finalization symbols. extract_expsyms_cmds= case $host_os in - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) # FIXME: the MSVC++ port hasn't been tested in a loooong time # When not using gcc, we currently assume that we are using # Microsoft Visual C++. @@ -7877,19 +8929,18 @@ _LT_EOF ;; amigaos*) - if test "$host_cpu" = m68k; then - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - fi - - # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports - # that the semantics of dynamic libraries on AmigaOS, at least up - # to version 4, is to share data among multiple programs linked - # with the same dynamic library. Since this doesn't match the - # behavior of shared libraries on other platforms, we can't use - # them. - ld_shlibs=no + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac ;; beos*) @@ -7903,7 +8954,7 @@ _LT_EOF fi ;; - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, # as there is no search path for DLLs. hardcode_libdir_flag_spec='-L$libdir' @@ -7954,6 +9005,7 @@ _LT_EOF && test "$tmp_diet" = no then tmp_addflag= + tmp_sharedflag='-shared' case $cc_basename,$host_cpu in pgcc*) # Portland Group C compiler whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $ECHO \"$new_convenience\"` ${wl}--no-whole-archive' @@ -7968,6 +9020,12 @@ _LT_EOF tmp_addflag=' -i_dynamic -nofor_main' ;; ifc* | ifort*) # Intel Fortran compiler tmp_addflag=' -nofor_main' ;; + lf95*) # Lahey Fortran 8.1 + whole_archive_flag_spec= + tmp_sharedflag='--shared' ;; + xl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) + tmp_sharedflag='-qmkshrobj' + tmp_addflag= ;; esac case `$CC -V 2>&1 | sed 5q` in *Sun\ C*) # Sun C 5.9 @@ -7976,8 +9034,6 @@ _LT_EOF tmp_sharedflag='-G' ;; *Sun\ F*) # Sun Fortran 8.3 tmp_sharedflag='-G' ;; - *) - tmp_sharedflag='-shared' ;; esac archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' @@ -7987,6 +9043,22 @@ _LT_EOF echo "local: *; };" >> $output_objdir/$libname.ver~ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' fi + + case $cc_basename in + xlf*) + # IBM XL Fortran 10.1 on PPC cannot create shared libs itself + whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' + hardcode_libdir_flag_spec= + hardcode_libdir_flag_spec_ld='-rpath $libdir' + archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' + if test "x$supports_anon_versioning" = xyes; then + archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ + cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ + echo "local: *; };" >> $output_objdir/$libname.ver~ + $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' + fi + ;; + esac else ld_shlibs=no fi @@ -8182,6 +9254,7 @@ _LT_EOF fi fi + export_dynamic_flag_spec='${wl}-bexpall' # It seems that -bexpall does not export symbols beginning with # underscore (_), so it is better to generate a list of symbols to export. always_export_symbols=yes @@ -8334,20 +9407,25 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; amigaos*) - if test "$host_cpu" = m68k; then - archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' - hardcode_libdir_flag_spec='-L$libdir' - hardcode_minus_L=yes - fi - # see comment about different semantics on the GNU ld section - ld_shlibs=no + case $host_cpu in + powerpc) + # see comment about AmigaOS4 .so support + archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' + archive_expsym_cmds='' + ;; + m68k) + archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' + hardcode_libdir_flag_spec='-L$libdir' + hardcode_minus_L=yes + ;; + esac ;; bsdi[45]*) export_dynamic_flag_spec=-rdynamic ;; - cygwin* | mingw* | pw32*) + cygwin* | mingw* | pw32* | cegcc*) # When not using gcc, we currently assume that we are using # Microsoft Visual C++. # hardcode_libdir_flag_spec is actually meaningless, as there is @@ -8369,73 +9447,30 @@ if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi ;; darwin* | rhapsody*) - case $host_os in - rhapsody* | darwin1.[012]) - allow_undefined_flag='${wl}-undefined ${wl}suppress' - ;; - *) # Darwin 1.3 on - case ${MACOSX_DEPLOYMENT_TARGET-10.0} in - 10.[012]) - allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' - ;; - 10.*) - allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup' - ;; - esac - ;; - esac - archive_cmds_need_lc=no - hardcode_direct=no - hardcode_automatic=yes - hardcode_shlibpath_var=unsupported - whole_archive_flag_spec='' - link_all_deplibs=yes - if test "$GCC" = yes ; then - if test "${lt_cv_apple_cc_single_mod+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - lt_cv_apple_cc_single_mod=no - if test -z "${LT_MULTI_MODULE}"; then - # By default we will add the -single_module flag. You can override - # by either setting the environment variable LT_MULTI_MODULE - # non-empty at configure time, or by adding -multi-module to the - # link flags. - echo "int foo(void){return 1;}" > conftest.c - $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ - -dynamiclib ${wl}-single_module conftest.c - if test -f libconftest.dylib; then - lt_cv_apple_cc_single_mod=yes - rm libconftest.dylib - fi - rm conftest.$ac_ext - fi -fi - output_verbose_link_cmd=echo - if test "X$lt_cv_apple_cc_single_mod" = Xyes ; then - archive_cmds='$CC -dynamiclib $single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - archive_expsym_cmds='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $single_module -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring' - archive_expsym_cmds='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - fi - module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - module_expsym_cmds='sed -e "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - else - case $cc_basename in - xlc*) - output_verbose_link_cmd=echo - archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`$ECHO $rpath/$soname` $verstring' - module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags' - # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds - archive_expsym_cmds='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - module_expsym_cmds='sed "s,^,_," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}' - ;; - *) - ld_shlibs=no - ;; - esac - fi + + archive_cmds_need_lc=no + hardcode_direct=no + hardcode_automatic=yes + hardcode_shlibpath_var=unsupported + whole_archive_flag_spec='' + link_all_deplibs=yes + allow_undefined_flag="$_lt_dar_allow_undefined" + case $cc_basename in + ifort*) _lt_dar_can_shared=yes ;; + *) _lt_dar_can_shared=$GCC ;; + esac + if test "$_lt_dar_can_shared" = "yes"; then + output_verbose_link_cmd=echo + archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring $_lt_dar_single_mod${_lt_dsymutil}" + module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" + archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name \$rpath/\$soname \$verstring ${_lt_dar_single_mod}${_lt_dar_export_syms}${_lt_dsymutil}" + module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" + + else + ld_shlibs=no + fi + ;; dgux*) @@ -8517,7 +9552,7 @@ fi archive_cmds='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' ;; ia64*) - archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' + archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' ;; *) archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' @@ -8635,25 +9670,29 @@ rm -f conftest.err conftest.$ac_objext \ ;; openbsd*) - hardcode_direct=yes - hardcode_shlibpath_var=no - hardcode_direct_absolute=yes - if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then - archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' - archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' - hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - export_dynamic_flag_spec='${wl}-E' - else - case $host_os in - openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) - archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' - hardcode_libdir_flag_spec='-R$libdir' - ;; - *) + if test -f /usr/libexec/ld.so; then + hardcode_direct=yes + hardcode_shlibpath_var=no + hardcode_direct_absolute=yes + if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' hardcode_libdir_flag_spec='${wl}-rpath,$libdir' - ;; - esac + export_dynamic_flag_spec='${wl}-E' + else + case $host_os in + openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) + archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' + hardcode_libdir_flag_spec='-R$libdir' + ;; + *) + archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' + hardcode_libdir_flag_spec='${wl}-rpath,$libdir' + ;; + esac + fi + else + ld_shlibs=no fi ;; @@ -9092,8 +10131,8 @@ esac echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5 echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6 -withGCC=$GCC -if test "$withGCC" = yes; then + +if test "$GCC" = yes; then case $host_os in darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; *) lt_awk_arg="/^libraries:/" ;; @@ -9219,13 +10258,18 @@ aix[4-9]*) ;; amigaos*) - if test "$host_cpu" = m68k; then + case $host_cpu in + powerpc) + # Since July 2007 AmigaOS4 officially supports .so libraries. + # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + ;; + m68k) library_names_spec='$libname.ixlibrary $libname.a' # Create ${libname}_ixlibrary.a entries in /sys/libs. finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`$ECHO "X$lib" | $Xsed -e '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' - else - dynamic_linker=no - fi + ;; + esac ;; beos*) @@ -9248,14 +10292,14 @@ bsdi[45]*) # libtool to hard-code these into programs ;; -cygwin* | mingw* | pw32*) +cygwin* | mingw* | pw32* | cegcc*) version_type=windows shrext_cmds=".dll" need_version=no need_lib_prefix=no - case $withGCC,$host_os in - yes,cygwin* | yes,mingw* | yes,pw32*) + case $GCC,$host_os in + yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) library_names_spec='$libname.dll.a' # DLL is installed to $(libdir)/../bin by postinstall_cmds postinstall_cmds='base_file=`basename \${file}`~ @@ -9278,7 +10322,7 @@ cygwin* | mingw* | pw32*) soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec="/usr/lib /lib/w32api /lib /usr/local/lib" ;; - mingw*) + mingw* | cegcc*) # MinGW DLLs use traditional 'lib' prefix soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' sys_lib_search_path_spec=`$CC -print-search-dirs | $GREP "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"` @@ -9544,7 +10588,7 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then - if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir"; then + if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then shlibpath_overrides_runpath=yes fi @@ -9565,7 +10609,7 @@ rm -f conftest.err conftest.$ac_objext \ # Append ld.so.conf contents to the search path if test -f /etc/ld.so.conf; then - lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` + lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '` sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" fi @@ -9749,7 +10793,7 @@ tpf*) version_type=linux need_lib_prefix=no need_version=no - library_name_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' + library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' shlibpath_var=LD_LIBRARY_PATH shlibpath_overrides_runpath=no hardcode_into_libs=yes @@ -9775,6 +10819,13 @@ if test "$GCC" = yes; then variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" fi +if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then + sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +fi +if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then + sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +fi + @@ -9919,7 +10970,7 @@ else lt_cv_dlopen_self=yes ;; - mingw* | pw32*) + mingw* | pw32* | cegcc*) lt_cv_dlopen="LoadLibrary" lt_cv_dlopen_libs= ;; @@ -10166,7 +11217,7 @@ fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5 echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6 if test $ac_cv_lib_dld_shl_load = yes; then - lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld" + lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" else echo "$as_me:$LINENO: checking for dlopen" >&5 echo $ECHO_N "checking for dlopen... $ECHO_C" >&6 @@ -10460,7 +11511,7 @@ fi echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5 echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6 if test $ac_cv_lib_dld_dld_link = yes; then - lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld" + lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" fi @@ -10509,7 +11560,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 10512 "configure" +#line 11563 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -10550,10 +11601,6 @@ else # endif #endif -#ifdef __cplusplus -extern "C" void exit (int); -#endif - void fnord() { int i=42;} int main () { @@ -10569,7 +11616,7 @@ int main () else puts (dlerror ()); - exit (status); + return status; } _LT_EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 @@ -10609,7 +11656,7 @@ else lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 lt_status=$lt_dlunknown cat > conftest.$ac_ext <<_LT_EOF -#line 10612 "configure" +#line 11659 "configure" #include "confdefs.h" #if HAVE_DLFCN_H @@ -10650,10 +11697,6 @@ else # endif #endif -#ifdef __cplusplus -extern "C" void exit (int); -#endif - void fnord() { int i=42;} int main () { @@ -10669,7 +11712,7 @@ int main () else puts (dlerror ()); - exit (status); + return status; } _LT_EOF if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 @@ -10841,7 +11884,7 @@ CC="$lt_save_CC" -ALL_LINGUAS="fr sv tr es da vi zh_CN zh_TW ga fi" +ALL_LINGUAS="fr sv tr es da vi zh_CN zh_TW ga fi id" # If we haven't got the data from the intl directory, # assume NLS is disabled. USE_NLS=no @@ -14091,6 +15134,7 @@ lt_SP2NL='`$ECHO "X$lt_SP2NL" | $Xsed -e "$delay_single_quote_subst"`' lt_NL2SP='`$ECHO "X$lt_NL2SP" | $Xsed -e "$delay_single_quote_subst"`' reload_flag='`$ECHO "X$reload_flag" | $Xsed -e "$delay_single_quote_subst"`' reload_cmds='`$ECHO "X$reload_cmds" | $Xsed -e "$delay_single_quote_subst"`' +OBJDUMP='`$ECHO "X$OBJDUMP" | $Xsed -e "$delay_single_quote_subst"`' deplibs_check_method='`$ECHO "X$deplibs_check_method" | $Xsed -e "$delay_single_quote_subst"`' file_magic_cmd='`$ECHO "X$file_magic_cmd" | $Xsed -e "$delay_single_quote_subst"`' AR='`$ECHO "X$AR" | $Xsed -e "$delay_single_quote_subst"`' @@ -14107,6 +15151,7 @@ GCC='`$ECHO "X$GCC" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_pipe='`$ECHO "X$lt_cv_sys_global_symbol_pipe" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_cdecl='`$ECHO "X$lt_cv_sys_global_symbol_to_cdecl" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address" | $Xsed -e "$delay_single_quote_subst"`' +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "X$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $Xsed -e "$delay_single_quote_subst"`' objdir='`$ECHO "X$objdir" | $Xsed -e "$delay_single_quote_subst"`' SHELL='`$ECHO "X$SHELL" | $Xsed -e "$delay_single_quote_subst"`' ECHO='`$ECHO "X$ECHO" | $Xsed -e "$delay_single_quote_subst"`' @@ -14117,6 +15162,11 @@ lt_prog_compiler_pic='`$ECHO "X$lt_prog_compiler_pic" | $Xsed -e "$delay_single_ lt_prog_compiler_static='`$ECHO "X$lt_prog_compiler_static" | $Xsed -e "$delay_single_quote_subst"`' lt_cv_prog_compiler_c_o='`$ECHO "X$lt_cv_prog_compiler_c_o" | $Xsed -e "$delay_single_quote_subst"`' need_locks='`$ECHO "X$need_locks" | $Xsed -e "$delay_single_quote_subst"`' +DSYMUTIL='`$ECHO "X$DSYMUTIL" | $Xsed -e "$delay_single_quote_subst"`' +NMEDIT='`$ECHO "X$NMEDIT" | $Xsed -e "$delay_single_quote_subst"`' +LIPO='`$ECHO "X$LIPO" | $Xsed -e "$delay_single_quote_subst"`' +OTOOL='`$ECHO "X$OTOOL" | $Xsed -e "$delay_single_quote_subst"`' +OTOOL64='`$ECHO "X$OTOOL64" | $Xsed -e "$delay_single_quote_subst"`' libext='`$ECHO "X$libext" | $Xsed -e "$delay_single_quote_subst"`' shrext_cmds='`$ECHO "X$shrext_cmds" | $Xsed -e "$delay_single_quote_subst"`' extract_expsyms_cmds='`$ECHO "X$extract_expsyms_cmds" | $Xsed -e "$delay_single_quote_subst"`' @@ -14190,6 +15240,7 @@ LN_S \ lt_SP2NL \ lt_NL2SP \ reload_flag \ +OBJDUMP \ deplibs_check_method \ file_magic_cmd \ AR \ @@ -14202,6 +15253,7 @@ compiler \ lt_cv_sys_global_symbol_pipe \ lt_cv_sys_global_symbol_to_cdecl \ lt_cv_sys_global_symbol_to_c_name_address \ +lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ SHELL \ ECHO \ lt_prog_compiler_no_builtin_flag \ @@ -14210,6 +15262,11 @@ lt_prog_compiler_pic \ lt_prog_compiler_static \ lt_cv_prog_compiler_c_o \ need_locks \ +DSYMUTIL \ +NMEDIT \ +LIPO \ +OTOOL \ +OTOOL64 \ shrext_cmds \ export_dynamic_flag_spec \ whole_archive_flag_spec \ @@ -14469,11 +15526,23 @@ s,@DUMPBIN@,$DUMPBIN,;t t s,@ac_ct_DUMPBIN@,$ac_ct_DUMPBIN,;t t s,@NM@,$NM,;t t s,@LN_S@,$LN_S,;t t +s,@OBJDUMP@,$OBJDUMP,;t t +s,@ac_ct_OBJDUMP@,$ac_ct_OBJDUMP,;t t s,@AR@,$AR,;t t s,@ac_ct_AR@,$ac_ct_AR,;t t s,@RANLIB@,$RANLIB,;t t s,@ac_ct_RANLIB@,$ac_ct_RANLIB,;t t s,@lt_ECHO@,$lt_ECHO,;t t +s,@DSYMUTIL@,$DSYMUTIL,;t t +s,@ac_ct_DSYMUTIL@,$ac_ct_DSYMUTIL,;t t +s,@NMEDIT@,$NMEDIT,;t t +s,@ac_ct_NMEDIT@,$ac_ct_NMEDIT,;t t +s,@LIPO@,$LIPO,;t t +s,@ac_ct_LIPO@,$ac_ct_LIPO,;t t +s,@OTOOL@,$OTOOL,;t t +s,@ac_ct_OTOOL@,$ac_ct_OTOOL,;t t +s,@OTOOL64@,$OTOOL64,;t t +s,@ac_ct_OTOOL64@,$ac_ct_OTOOL64,;t t s,@USE_NLS@,$USE_NLS,;t t s,@LIBINTL@,$LIBINTL,;t t s,@LIBINTL_DEP@,$LIBINTL_DEP,;t t @@ -15214,36 +16283,36 @@ done #! $SHELL # `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. -# Generated automatically by $as_me (GNU $PACKAGE$TIMESTAMP) $VERSION +# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION # Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: # NOTE: Changes made to this file will be lost: look at ltmain.sh. # -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, -# 2006, 2007 Free Software Foundation, Inc. +# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +# 2006, 2007, 2008 Free Software Foundation, Inc. +# Written by Gordon Matzigkeit, 1996 # -# This file is part of GNU Libtool: -# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996 +# This file is part of GNU Libtool. # -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. +# GNU Libtool is free software; you can redistribute it and/or +# modify it under the terms of the GNU General Public License as +# published by the Free Software Foundation; either version 2 of +# the License, or (at your option) any later version. # -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. +# As a special exception to the GNU General Public License, +# if you distribute this file as part of a program or library that +# is built using GNU Libtool, you may include this file under the +# same distribution terms that you use for the rest of that program. # -# You should have received a copy of the GNU General Public License -# along with this program; if not, a copy can be downloaded from -# http://www.gnu.org/copyleft/gpl.html, or by writing to the Free -# Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, -# MA 02110-1301, USA. +# GNU Libtool is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # -# As a special exception to the GNU General Public License, if you -# distribute this file as part of a program that contains a -# configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. +# You should have received a copy of the GNU General Public License +# along with GNU Libtool; see the file COPYING. If not, a copy +# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +# obtained by writing to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. # The names of the tagged configurations supported by this script. @@ -15320,6 +16389,9 @@ NL2SP=$lt_lt_NL2SP reload_flag=$lt_reload_flag reload_cmds=$lt_reload_cmds +# An object symbol dumper. +OBJDUMP=$lt_OBJDUMP + # Method to check whether dependent libraries are shared objects. deplibs_check_method=$lt_deplibs_check_method @@ -15353,6 +16425,9 @@ global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl # Transform the output of nm in a C name address pair. global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address +# Transform the output of nm in a C name address pair when lib prefix is needed. +global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix + # The name of the directory that contains temporary libtool files. objdir=$objdir @@ -15368,6 +16443,21 @@ MAGIC_CMD=$MAGIC_CMD # Must we lock files when doing compilation? need_locks=$lt_need_locks +# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +DSYMUTIL=$lt_DSYMUTIL + +# Tool to change global to local symbols on Mac OS X. +NMEDIT=$lt_NMEDIT + +# Tool to manipulate fat objects and archives on Mac OS X. +LIPO=$lt_LIPO + +# ldd/readelf like tool for Mach-O binaries on Mac OS X. +OTOOL=$lt_OTOOL + +# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +OTOOL64=$lt_OTOOL64 + # Old archive suffix (normally "a"). libext=$libext @@ -15608,6 +16698,7 @@ ltmain="$ac_aux_dir/ltmain.sh" case $xsi_shell in yes) cat << \_LT_EOF >> "$cfgfile" + # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. @@ -15625,6 +16716,27 @@ func_basename () func_basename_result="${1##*/}" } +# func_dirname_and_basename file append nondir_replacement +# perform func_basename and func_dirname in a single function +# call: +# dirname: Compute the dirname of FILE. If nonempty, +# add APPEND to the result, otherwise set result +# to NONDIR_REPLACEMENT. +# value returned in "$func_dirname_result" +# basename: Compute filename of FILE. +# value retuned in "$func_basename_result" +# Implementation must be kept synchronized with func_dirname +# and func_basename. For efficiency, we do not delegate to +# those functions but instead duplicate the functionality here. +func_dirname_and_basename () +{ + case ${1} in + */*) func_dirname_result="${1%/*}${2}" ;; + * ) func_dirname_result="${3}" ;; + esac + func_basename_result="${1##*/}" +} + # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special @@ -15654,10 +16766,31 @@ func_lo2o () *) func_lo2o_result=${1} ;; esac } + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=${1%.*}.lo +} + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=$(( $* )) +} + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=${#1} +} + _LT_EOF ;; *) # Bourne compatible functions. cat << \_LT_EOF >> "$cfgfile" + # func_dirname file append nondir_replacement # Compute the dirname of FILE. If nonempty, add APPEND to the result, # otherwise set result to NONDIR_REPLACEMENT. @@ -15678,6 +16811,7 @@ func_basename () func_basename_result=`$ECHO "X${1}" | $Xsed -e "$basename"` } + # func_stripname prefix suffix name # strip PREFIX and SUFFIX off of NAME. # PREFIX and SUFFIX must not contain globbing or regex special @@ -15710,6 +16844,26 @@ func_lo2o () { func_lo2o_result=`$ECHO "X${1}" | $Xsed -e "$lo2o"` } + +# func_xform libobj-or-source +func_xform () +{ + func_xform_result=`$ECHO "X${1}" | $Xsed -e 's/\.[^.]*$/.lo/'` +} + +# func_arith arithmetic-term... +func_arith () +{ + func_arith_result=`expr "$@"` +} + +# func_len string +# STRING may not start with a hyphen. +func_len () +{ + func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` +} + _LT_EOF esac @@ -15734,6 +16888,7 @@ func_append () { eval "$1=\$$1\$2" } + _LT_EOF ;; esac diff --git a/ld/configure.in b/ld/configure.in index 8ec534f..d466e3d 100644 --- a/ld/configure.in +++ b/ld/configure.in @@ -109,11 +109,12 @@ fi AC_PROG_CC AC_GNU_SOURCE AC_USE_SYSTEM_EXTENSIONS +AC_SYS_LARGEFILE AC_PROG_INSTALL LT_INIT -ALL_LINGUAS="fr sv tr es da vi zh_CN zh_TW ga fi" +ALL_LINGUAS="fr sv tr es da vi zh_CN zh_TW ga fi id" ZW_GNU_GETTEXT_SISTER_DIR AM_PO_SUBDIRS diff --git a/ld/emulparams/arcelf.sh b/ld/emulparams/arcelf.sh index 31db4a9..cd334d6 100644 --- a/ld/emulparams/arcelf.sh +++ b/ld/emulparams/arcelf.sh @@ -4,6 +4,7 @@ EXTRA_EM_FILE=genelf OUTPUT_FORMAT="elf32-littlearc" LITTLE_OUTPUT_FORMAT="elf32-littlearc" BIG_OUTPUT_FORMAT="elf32-bigarc" +NO_RELA_RELOCS=yes TEXT_START_ADDR=0x0 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" ARCH=arc diff --git a/ld/emulparams/criself.sh b/ld/emulparams/criself.sh index 1d374ae..f709a1b 100644 --- a/ld/emulparams/criself.sh +++ b/ld/emulparams/criself.sh @@ -5,6 +5,7 @@ TEMPLATE_NAME=elf32 # Symbols have underscore prepended. OUTPUT_FORMAT="elf32-us-cris" +NO_REL_RELOCS=yes ARCH=cris MAXPAGESIZE=32 ENTRY=__start diff --git a/ld/emulparams/crislinux.sh b/ld/emulparams/crislinux.sh index e41024c..8a1a5b8 100644 --- a/ld/emulparams/crislinux.sh +++ b/ld/emulparams/crislinux.sh @@ -2,6 +2,7 @@ MACHINE= SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-cris" +NO_REL_RELOCS=yes ARCH=cris TEMPLATE_NAME=elf32 diff --git a/ld/emulparams/elf32_i860.sh b/ld/emulparams/elf32_i860.sh index 589067f..482e3d1 100644 --- a/ld/emulparams/elf32_i860.sh +++ b/ld/emulparams/elf32_i860.sh @@ -5,6 +5,7 @@ EXTRA_EM_FILE=genelf OUTPUT_FORMAT="elf32-i860-little" BIG_OUTPUT_FORMAT="elf32-i860" LITTLE_OUTPUT_FORMAT="elf32-i860-little" +NO_REL_RELOCS=yes TEXT_START_ADDR=0 PAGE_SIZE=0x1000 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" diff --git a/ld/emulparams/elf32_i960.sh b/ld/emulparams/elf32_i960.sh index 1ef7292..dd05a8f 100644 --- a/ld/emulparams/elf32_i960.sh +++ b/ld/emulparams/elf32_i960.sh @@ -1,6 +1,8 @@ SCRIPT_NAME=elf -TEMPLATE_NAME=elf32 +TEMPLATE_NAME=generic +EXTRA_EM_FILE=genelf OUTPUT_FORMAT="elf32-i960" +NO_RELA_RELOCS=yes ARCH=i960 MACHINE= TEXT_START_ADDR=0 diff --git a/ld/emulparams/elf32_sparc.sh b/ld/emulparams/elf32_sparc.sh index 3db6d88..aef813e 100644 --- a/ld/emulparams/elf32_sparc.sh +++ b/ld/emulparams/elf32_sparc.sh @@ -3,6 +3,7 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-sparc" +NO_REL_RELOCS=yes TEXT_START_ADDR=0x10000 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" diff --git a/ld/emulparams/elf32_spu.sh b/ld/emulparams/elf32_spu.sh index 8248d5d..1ed58c3 100644 --- a/ld/emulparams/elf32_spu.sh +++ b/ld/emulparams/elf32_spu.sh @@ -2,6 +2,7 @@ SCRIPT_NAME=elf TEMPLATE_NAME=elf32 EXTRA_EM_FILE=spuelf OUTPUT_FORMAT="elf32-spu" +NO_REL_RELOCS=yes ARCH=spu MACHINE= ALIGNMENT=16 diff --git a/ld/emulparams/elf32am33lin.sh b/ld/emulparams/elf32am33lin.sh index 2f8b962..b34d2b8 100644 --- a/ld/emulparams/elf32am33lin.sh +++ b/ld/emulparams/elf32am33lin.sh @@ -1,5 +1,6 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-am33lin" +NO_REL_RELOCS=yes TEXT_START_ADDR=0x8000000 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" ARCH=mn10300 diff --git a/ld/emulparams/elf32fr30.sh b/ld/emulparams/elf32fr30.sh index d078155..1764a32 100755 --- a/ld/emulparams/elf32fr30.sh +++ b/ld/emulparams/elf32fr30.sh @@ -3,6 +3,7 @@ SCRIPT_NAME=elf TEMPLATE_NAME=generic EXTRA_EM_FILE=genelf OUTPUT_FORMAT="elf32-fr30" +NO_REL_RELOCS=yes TEXT_START_ADDR=0x10000 ARCH=fr30 MAXPAGESIZE=256 diff --git a/ld/emulparams/elf32ip2k.sh b/ld/emulparams/elf32ip2k.sh index 17fb7ab..0db227f 100644 --- a/ld/emulparams/elf32ip2k.sh +++ b/ld/emulparams/elf32ip2k.sh @@ -2,6 +2,7 @@ TEMPLATE_NAME=elf32 MACHINE= SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-ip2k" +NO_REL_RELOCS=yes # See also `include/elf/ip2k.h' DATA_ADDR=0x01000100 TEXT_START_ADDR=0x02010000 diff --git a/ld/emulparams/elf32mcore.sh b/ld/emulparams/elf32mcore.sh index 31d65dc..6047950 100644 --- a/ld/emulparams/elf32mcore.sh +++ b/ld/emulparams/elf32mcore.sh @@ -2,6 +2,7 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-mcore-little" BIG_OUTPUT_FORMAT="elf32-mcore-big" LITTLE_OUTPUT_FORMAT="elf32-mcore-little" +NO_REL_RELOCS=yes PAGE_SIZE=0x1000 TARGET_PAGE_SIZE=0x400 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" diff --git a/ld/emulparams/elf32openrisc.sh b/ld/emulparams/elf32openrisc.sh index 53e88dd..bbe9a3e 100755 --- a/ld/emulparams/elf32openrisc.sh +++ b/ld/emulparams/elf32openrisc.sh @@ -1,6 +1,7 @@ MACHINE= SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-openrisc" +NO_RELA_RELOCS=yes TEXT_START_ADDR=0x10000 ARCH=openrisc MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" diff --git a/ld/emulparams/elf32ppccommon.sh b/ld/emulparams/elf32ppccommon.sh index 1a12890..15cb3b1 100644 --- a/ld/emulparams/elf32ppccommon.sh +++ b/ld/emulparams/elf32ppccommon.sh @@ -5,6 +5,7 @@ GENERATE_SHLIB_SCRIPT=yes GENERATE_PIE_SCRIPT=yes SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-powerpc" +NO_REL_RELOCS=yes TEXT_START_ADDR=0x01800000 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" diff --git a/ld/emulparams/elf32ppcwindiss.sh b/ld/emulparams/elf32ppcwindiss.sh index d217de9..b40d782 100644 --- a/ld/emulparams/elf32ppcwindiss.sh +++ b/ld/emulparams/elf32ppcwindiss.sh @@ -1,6 +1,7 @@ TEMPLATE_NAME=elf32 SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-powerpc" +NO_REL_RELOCS=yes ARCH=powerpc MACHINE= EMBEDDED=yes diff --git a/ld/emulparams/elf32vax.sh b/ld/emulparams/elf32vax.sh index 4c6ef39..9ddc754 100644 --- a/ld/emulparams/elf32vax.sh +++ b/ld/emulparams/elf32vax.sh @@ -1,5 +1,6 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-vax" +NO_REL_RELOCS=yes TEXT_START_ADDR=0x10000 case ${LD_FLAG} in n|N) TEXT_START_ADDR=0x1000 ;; diff --git a/ld/emulparams/elf64_s390.sh b/ld/emulparams/elf64_s390.sh index ede836c..ae8f26e 100644 --- a/ld/emulparams/elf64_s390.sh +++ b/ld/emulparams/elf64_s390.sh @@ -1,6 +1,7 @@ SCRIPT_NAME=elf ELFSIZE=64 OUTPUT_FORMAT="elf64-s390" +NO_REL_RELOCS=yes TEXT_START_ADDR=0x80000000 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" diff --git a/ld/emulparams/elf64_sparc.sh b/ld/emulparams/elf64_sparc.sh index 03cab9e..9397b87 100644 --- a/ld/emulparams/elf64_sparc.sh +++ b/ld/emulparams/elf64_sparc.sh @@ -2,6 +2,7 @@ SCRIPT_NAME=elf ELFSIZE=64 TEMPLATE_NAME=elf32 OUTPUT_FORMAT="elf64-sparc" +NO_REL_RELOCS=yes MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" ARCH="sparc:v9" diff --git a/ld/emulparams/elf64alpha.sh b/ld/emulparams/elf64alpha.sh index a42e75d..82f505d 100644 --- a/ld/emulparams/elf64alpha.sh +++ b/ld/emulparams/elf64alpha.sh @@ -4,6 +4,7 @@ ELFSIZE=64 TEMPLATE_NAME=elf32 EXTRA_EM_FILE=alphaelf OUTPUT_FORMAT="elf64-alpha" +NO_REL_RELOCS=yes TEXT_START_ADDR="0x120000000" MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" diff --git a/ld/emulparams/elf64mmix.sh b/ld/emulparams/elf64mmix.sh index 7f867fb..787b50d 100644 --- a/ld/emulparams/elf64mmix.sh +++ b/ld/emulparams/elf64mmix.sh @@ -3,6 +3,7 @@ GENERATE_SHLIB_SCRIPT=yes ELFSIZE=64 SCRIPT_NAME=elf OUTPUT_FORMAT="elf64-mmix" +NO_REL_RELOCS=yes ENTRY=_start. # Default to 0 as mmixal does. diff --git a/ld/emulparams/elf64ppc.sh b/ld/emulparams/elf64ppc.sh index 2fecba8..b9631b6 100644 --- a/ld/emulparams/elf64ppc.sh +++ b/ld/emulparams/elf64ppc.sh @@ -5,6 +5,7 @@ GENERATE_SHLIB_SCRIPT=yes GENERATE_PIE_SCRIPT=yes SCRIPT_NAME=elf OUTPUT_FORMAT="elf64-powerpc" +NO_REL_RELOCS=yes TEXT_START_ADDR=0x10000000 #SEGMENT_SIZE=0x10000000 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" @@ -28,7 +29,9 @@ else .toc 0 : { *(.toc) }" fi OTHER_GOT_RELOC_SECTIONS=" - .rela.toc ${RELOCATING-0} : { *(.rela.toc) }" + .rela.toc ${RELOCATING-0} : { *(.rela.toc) } + .rela.opd ${RELOCATING-0} : { *(.rela.opd) } + .rela.branch_lt ${RELOCATING-0} : { *(.rela.branch_lt) }" OTHER_READWRITE_SECTIONS=" .toc1 ${RELOCATING-0} :${RELOCATING+ ALIGN(8)} { *(.toc1) } .opd ${RELOCATING-0} :${RELOCATING+ ALIGN(8)} { KEEP (*(.opd)) } diff --git a/ld/emulparams/elf_i386.sh b/ld/emulparams/elf_i386.sh index 908515a..05d31a8 100644 --- a/ld/emulparams/elf_i386.sh +++ b/ld/emulparams/elf_i386.sh @@ -1,5 +1,6 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-i386" +NO_RELA_RELOCS=yes TEXT_START_ADDR=0x08048000 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" diff --git a/ld/emulparams/elf_i386_be.sh b/ld/emulparams/elf_i386_be.sh index b61738c..efe1a86 100644 --- a/ld/emulparams/elf_i386_be.sh +++ b/ld/emulparams/elf_i386_be.sh @@ -1,5 +1,6 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-i386" +NO_RELA_RELOCS=yes TEXT_START_ADDR=0x80000000 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" ARCH=i386 diff --git a/ld/emulparams/elf_i386_ldso.sh b/ld/emulparams/elf_i386_ldso.sh index b4ac960..4b0d3fb 100644 --- a/ld/emulparams/elf_i386_ldso.sh +++ b/ld/emulparams/elf_i386_ldso.sh @@ -1,5 +1,6 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-i386" +NO_RELA_RELOCS=yes TEXT_START_ADDR=0x08048000 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" ARCH=i386 diff --git a/ld/emulparams/elf_i386_vxworks.sh b/ld/emulparams/elf_i386_vxworks.sh index 90a98b3..6933128 100644 --- a/ld/emulparams/elf_i386_vxworks.sh +++ b/ld/emulparams/elf_i386_vxworks.sh @@ -1,5 +1,6 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-i386-vxworks" +NO_RELA_RELOCS=yes TEXT_START_ADDR=0x08048000 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" diff --git a/ld/emulparams/elf_s390.sh b/ld/emulparams/elf_s390.sh index e252e8e..218558b 100644 --- a/ld/emulparams/elf_s390.sh +++ b/ld/emulparams/elf_s390.sh @@ -1,5 +1,6 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-s390" +NO_REL_RELOCS=yes TEXT_START_ADDR=0x00400000 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" diff --git a/ld/emulparams/elf_x86_64.sh b/ld/emulparams/elf_x86_64.sh index cdd4119..4b24710 100644 --- a/ld/emulparams/elf_x86_64.sh +++ b/ld/emulparams/elf_x86_64.sh @@ -1,6 +1,7 @@ SCRIPT_NAME=elf ELFSIZE=64 OUTPUT_FORMAT="elf64-x86-64" +NO_REL_RELOCS=yes TEXT_START_ADDR=0x400000 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" diff --git a/ld/emulparams/h8300elf.sh b/ld/emulparams/h8300elf.sh index fb4db40..38b8a36 100644 --- a/ld/emulparams/h8300elf.sh +++ b/ld/emulparams/h8300elf.sh @@ -3,6 +3,7 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-h8300" +NO_REL_RELOCS=yes TEXT_START_ADDR=0x100 MAXPAGESIZE=2 TARGET_PAGE_SIZE=128 diff --git a/ld/emulparams/hppa64linux.sh b/ld/emulparams/hppa64linux.sh index 1af8e37..92939bf 100644 --- a/ld/emulparams/hppa64linux.sh +++ b/ld/emulparams/hppa64linux.sh @@ -5,6 +5,7 @@ SCRIPT_NAME=elf ELFSIZE=64 # FIXME: this output format is for hpux. OUTPUT_FORMAT="elf64-hppa-linux" +NO_REL_RELOCS=yes TEXT_START_ADDR=0x10000 TARGET_PAGE_SIZE=0x10000 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" diff --git a/ld/emulparams/hppalinux.sh b/ld/emulparams/hppalinux.sh index 4c4f943..9fa4615 100644 --- a/ld/emulparams/hppalinux.sh +++ b/ld/emulparams/hppalinux.sh @@ -4,6 +4,7 @@ SCRIPT_NAME=elf ELFSIZE=32 OUTPUT_FORMAT="elf32-hppa-linux" +NO_REL_RELOCS=yes TEXT_START_ADDR=0x10000 TARGET_PAGE_SIZE=0x10000 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" diff --git a/ld/emulparams/i386lynx.sh b/ld/emulparams/i386lynx.sh index 6d9d9fe..93afb3d 100644 --- a/ld/emulparams/i386lynx.sh +++ b/ld/emulparams/i386lynx.sh @@ -1,5 +1,6 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-i386" +NO_RELA_RELOCS=yes ENTRY=_main TEXT_BASE=0x0 DYN_TEXT_BASE=0x00400000 diff --git a/ld/emulparams/i386moss.sh b/ld/emulparams/i386moss.sh index 81161b7..095d85a 100644 --- a/ld/emulparams/i386moss.sh +++ b/ld/emulparams/i386moss.sh @@ -1,5 +1,6 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-i386" +NO_RELA_RELOCS=yes TEXT_START_ADDR=0x00002000 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" ARCH=i386 diff --git a/ld/emulparams/i386nto.sh b/ld/emulparams/i386nto.sh index 078289c..626f9c1 100644 --- a/ld/emulparams/i386nto.sh +++ b/ld/emulparams/i386nto.sh @@ -1,5 +1,6 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-i386" +NO_RELA_RELOCS=yes TEXT_START_ADDR=0x08048000 TEXT_START_SYMBOLS='_btext = .;' MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" diff --git a/ld/emulparams/m68kelf.sh b/ld/emulparams/m68kelf.sh index f8dab2b..66da648 100644 --- a/ld/emulparams/m68kelf.sh +++ b/ld/emulparams/m68kelf.sh @@ -1,5 +1,6 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-m68k" +NO_REL_RELOCS=yes TEXT_START_ADDR=0x80000000 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" diff --git a/ld/emulparams/mn10200.sh b/ld/emulparams/mn10200.sh index 74f48d0..9cec0b5 100644 --- a/ld/emulparams/mn10200.sh +++ b/ld/emulparams/mn10200.sh @@ -5,6 +5,7 @@ SCRIPT_NAME=elf TEMPLATE_NAME=generic EXTRA_EM_FILE=genelf OUTPUT_FORMAT="elf32-mn10200" +NO_REL_RELOCS=yes TEXT_START_ADDR=0x0 ARCH=mn10200 MACHINE= diff --git a/ld/emulparams/or32elf.sh b/ld/emulparams/or32elf.sh index 5cb3208..5d85b04 100644 --- a/ld/emulparams/or32elf.sh +++ b/ld/emulparams/or32elf.sh @@ -2,6 +2,7 @@ SCRIPT_NAME=elf TEMPLATE_NAME=generic EXTRA_EM_FILE=genelf OUTPUT_FORMAT="elf32-or32" +NO_RELA_RELOCS=yes TEXT_START_ADDR=0x1000000 TARGET_PAGE_SIZE=0x1000000 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" diff --git a/ld/emulparams/pjelf.sh b/ld/emulparams/pjelf.sh index e4d2fa5..37f0034 100644 --- a/ld/emulparams/pjelf.sh +++ b/ld/emulparams/pjelf.sh @@ -2,6 +2,7 @@ SCRIPT_NAME=elf TEMPLATE_NAME=generic EXTRA_EM_FILE=genelf OUTPUT_FORMAT="elf32-pj" +NO_REL_RELOCS=yes TEXT_START_ADDR=0x1000000 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" ARCH=pj diff --git a/ld/emulparams/ppclynx.sh b/ld/emulparams/ppclynx.sh index 4203908..76aefd6 100644 --- a/ld/emulparams/ppclynx.sh +++ b/ld/emulparams/ppclynx.sh @@ -1,5 +1,6 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-powerpc" +NO_REL_RELOCS=yes TEXT_BASE=0x00002000 DYN_TEXT_BASE=0x00400000 TEXT_START_ADDR="(DEFINED(_DYNAMIC) ? ${DYN_TEXT_BASE} : ${TEXT_BASE})" diff --git a/ld/emulparams/scoreelf.sh b/ld/emulparams/scoreelf.sh index 0ca5e56..dfb5aca 100644 --- a/ld/emulparams/scoreelf.sh +++ b/ld/emulparams/scoreelf.sh @@ -4,6 +4,7 @@ TEMPLATE_NAME=elf32 OUTPUT_FORMAT="elf32-bigscore" BIG_OUTPUT_FORMAT="elf32-bigscore" LITTLE_OUTPUT_FORMAT="elf32-littlescore" +NO_RELA_RELOCS=yes GROUP="-lm -lc -lglsim -lgcc -lstdc++" TEXT_START_ADDR=0x00000000 diff --git a/ld/emulparams/shelf.sh b/ld/emulparams/shelf.sh index 6f66bf5..5757b81 100644 --- a/ld/emulparams/shelf.sh +++ b/ld/emulparams/shelf.sh @@ -3,6 +3,7 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-sh" +NO_REL_RELOCS=yes TEXT_START_ADDR=0x1000 MAXPAGESIZE=128 ARCH=sh diff --git a/ld/emulparams/shelf32.sh b/ld/emulparams/shelf32.sh index c72fadb..966bd30 100644 --- a/ld/emulparams/shelf32.sh +++ b/ld/emulparams/shelf32.sh @@ -2,6 +2,7 @@ # sh[l]elf(32|64).sh parameter scripts. SCRIPT_NAME=elf OUTPUT_FORMAT=${OUTPUT_FORMAT-"elf32-sh64"} +NO_REL_RELOCS=yes TEXT_START_ADDR=0x1000 MAXPAGESIZE=128 ARCH=sh diff --git a/ld/emulparams/shelf_nto.sh b/ld/emulparams/shelf_nto.sh index 70a0610..c4d71aa 100644 --- a/ld/emulparams/shelf_nto.sh +++ b/ld/emulparams/shelf_nto.sh @@ -1,5 +1,6 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-sh" +NO_REL_RELOCS=yes TEXT_START_ADDR=0x08040000 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" ARCH=sh diff --git a/ld/emulparams/shelf_vxworks.sh b/ld/emulparams/shelf_vxworks.sh index a87d529..77619cb 100644 --- a/ld/emulparams/shelf_vxworks.sh +++ b/ld/emulparams/shelf_vxworks.sh @@ -2,6 +2,7 @@ # shlelf_vxworks.sh SCRIPT_NAME=elf +NO_REL_RELOCS=yes BIG_OUTPUT_FORMAT="elf32-sh-vxworks" LITTLE_OUTPUT_FORMAT="elf32-shl-vxworks" OUTPUT_FORMAT="$BIG_OUTPUT_FORMAT" diff --git a/ld/emulparams/shlelf32_linux.sh b/ld/emulparams/shlelf32_linux.sh index ba32e79..81aea39 100644 --- a/ld/emulparams/shlelf32_linux.sh +++ b/ld/emulparams/shlelf32_linux.sh @@ -3,6 +3,7 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-sh64-linux" +NO_REL_RELOCS=yes TEXT_START_ADDR=0x400000 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" diff --git a/ld/emulparams/shlelf_linux.sh b/ld/emulparams/shlelf_linux.sh index f91bb52..95b6acc 100644 --- a/ld/emulparams/shlelf_linux.sh +++ b/ld/emulparams/shlelf_linux.sh @@ -3,6 +3,7 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-sh-linux" +NO_REL_RELOCS=yes TEXT_START_ADDR=0x400000 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" COMMONPAGESIZE="CONSTANT (COMMONPAGESIZE)" diff --git a/ld/emulparams/shlelf_nto.sh b/ld/emulparams/shlelf_nto.sh index c6c04f6..16f6508 100644 --- a/ld/emulparams/shlelf_nto.sh +++ b/ld/emulparams/shlelf_nto.sh @@ -1,5 +1,6 @@ SCRIPT_NAME=elf OUTPUT_FORMAT="elf32-shl" +NO_REL_RELOCS=yes TEXT_START_ADDR=0x08040000 MAXPAGESIZE="CONSTANT (MAXPAGESIZE)" ARCH=sh diff --git a/ld/emultempl/armelf.em b/ld/emultempl/armelf.em index 8d8a8fa..6394105 100644 --- a/ld/emultempl/armelf.em +++ b/ld/emultempl/armelf.em @@ -55,16 +55,6 @@ gld${EMULATION_NAME}_before_parse (void) static void arm_elf_after_open (void) { - if (strstr (bfd_get_target (link_info.output_bfd), "arm") == NULL) - { - /* The arm backend needs special fields in the output hash structure. - These will only be created if the output format is an arm format, - hence we do not support linking and changing output formats at the - same time. Use a link followed by objcopy to change output formats. */ - einfo ("%F%X%P: error: cannot change output format whilst linking ARM binaries\n"); - return; - } - { LANG_FOR_EACH_INPUT_STATEMENT (is) { @@ -439,6 +429,16 @@ gld${EMULATION_NAME}_finish (void) static void arm_elf_create_output_section_statements (void) { + if (strstr (bfd_get_target (link_info.output_bfd), "arm") == NULL) + { + /* The arm backend needs special fields in the output hash structure. + These will only be created if the output format is an arm format, + hence we do not support linking and changing output formats at the + same time. Use a link followed by objcopy to change output formats. */ + einfo ("%F%X%P: error: Cannot change output format whilst linking ARM binaries.\n"); + return; + } + bfd_elf32_arm_set_target_relocs (link_info.output_bfd, &link_info, target1_is_rel, target2_type, fix_v4bx, use_blx, @@ -525,7 +525,7 @@ PARSE_AND_LIST_LONGOPTS=' PARSE_AND_LIST_OPTIONS=' fprintf (file, _(" --thumb-entry=<sym> Set the entry point to be Thumb symbol <sym>\n")); - fprintf (file, _(" --be8 Oputput BE8 format image\n")); + fprintf (file, _(" --be8 Output BE8 format image\n")); fprintf (file, _(" --target1=rel Interpret R_ARM_TARGET1 as R_ARM_REL32\n")); fprintf (file, _(" --target1=abs Interpret R_ARM_TARGET1 as R_ARM_ABS32\n")); fprintf (file, _(" --target2=<type> Specify definition of R_ARM_TARGET2\n")); diff --git a/ld/emultempl/beos.em b/ld/emultempl/beos.em index ac27c5a..e417693 100644 --- a/ld/emultempl/beos.em +++ b/ld/emultempl/beos.em @@ -664,32 +664,31 @@ gld_${EMULATION_NAME}_before_allocation (void) but I'm leaving this here in case we want to enable it for sections which are not mentioned in the linker script. */ -static bfd_boolean -gld${EMULATION_NAME}_place_orphan (asection *s) +static lang_output_section_statement_type * +gld${EMULATION_NAME}_place_orphan (asection *s, + const char *secname, + int constraint) { - const char *secname; char *output_secname, *ps; lang_output_section_statement_type *os; lang_statement_union_type *l; if ((s->flags & SEC_ALLOC) == 0) - return FALSE; + return NULL; /* Don't process grouped sections unless doing a final link. If they're marked as COMDAT sections, we don't want .text\$foo to end up in .text and then have .text disappear because it's marked link-once-discard. */ if (link_info.relocatable) - return FALSE; - - secname = bfd_get_section_name (s->owner, s); + return NULL; /* Everything from the '\$' on gets deleted so don't allow '\$' as the first character. */ if (*secname == '\$') einfo ("%P%F: section %s has '\$' as first character\n", secname); if (strchr (secname + 1, '\$') == NULL) - return FALSE; + return NULL; /* Look up the output section. The Microsoft specs say sections names in image files never contain a '\$'. Fortunately, lang_..._lookup creates @@ -697,7 +696,7 @@ gld${EMULATION_NAME}_place_orphan (asection *s) output_secname = xstrdup (secname); ps = strchr (output_secname + 1, '\$'); *ps = 0; - os = lang_output_section_statement_lookup (output_secname); + os = lang_output_section_statement_lookup (output_secname, constraint, TRUE); /* Find the '\$' wild statement for this section. We currently require the linker script to explicitly mention "*(.foo\$)". @@ -727,7 +726,7 @@ gld${EMULATION_NAME}_place_orphan (asection *s) sort_sections. */ lang_add_section (&l->wild_statement.children, s, os); - return TRUE; + return os; } static char * diff --git a/ld/emultempl/elf32.em b/ld/emultempl/elf32.em index be9d78d..bb299d9 100644 --- a/ld/emultempl/elf32.em +++ b/ld/emultempl/elf32.em @@ -62,7 +62,8 @@ fragment <<EOF static void gld${EMULATION_NAME}_before_parse (void); static void gld${EMULATION_NAME}_after_open (void); static void gld${EMULATION_NAME}_before_allocation (void); -static bfd_boolean gld${EMULATION_NAME}_place_orphan (asection *s); +static lang_output_section_statement_type *gld${EMULATION_NAME}_place_orphan + (asection *, const char *, int); static void gld${EMULATION_NAME}_finish (void); EOF @@ -1634,8 +1635,10 @@ output_rel_find (asection *sec, int isdyn) /* Place an orphan section. We use this to put random SHF_ALLOC sections in the right segment. */ -static bfd_boolean -gld${EMULATION_NAME}_place_orphan (asection *s) +static lang_output_section_statement_type * +gld${EMULATION_NAME}_place_orphan (asection *s, + const char *secname, + int constraint) { static struct orphan_save hold[] = { @@ -1659,7 +1662,10 @@ gld${EMULATION_NAME}_place_orphan (asection *s) 0, 0, 0, 0 }, { ".sdata", SEC_HAS_CONTENTS | SEC_ALLOC | SEC_LOAD | SEC_DATA | SEC_SMALL_DATA, - 0, 0, 0, 0 } + 0, 0, 0, 0 }, + { 0, + SEC_HAS_CONTENTS, + 0, 0, 0, 0 }, }; enum orphan_save_index { @@ -1669,19 +1675,17 @@ gld${EMULATION_NAME}_place_orphan (asection *s) orphan_bss, orphan_rel, orphan_interp, - orphan_sdata + orphan_sdata, + orphan_nonalloc }; static int orphan_init_done = 0; struct orphan_save *place; - const char *secname; lang_output_section_statement_type *after; lang_output_section_statement_type *os; int isdyn = 0; int iself = s->owner->xvec->flavour == bfd_target_elf_flavour; unsigned int sh_type = iself ? elf_section_type (s) : SHT_NULL; - secname = bfd_get_section_name (s->owner, s); - if (! link_info.relocatable && link_info.combreloc && (s->flags & SEC_ALLOC)) @@ -1707,33 +1711,30 @@ gld${EMULATION_NAME}_place_orphan (asection *s) } } - if (isdyn || (!config.unique_orphan_sections && !unique_section_p (s))) + /* Look through the script to see where to place this section. */ + if (constraint == 0 + && (os = lang_output_section_find (secname)) != NULL + && os->bfd_section != NULL + && (os->bfd_section->flags == 0 + || (_bfd_elf_match_sections_by_type (link_info.output_bfd, + os->bfd_section, s->owner, s) + && ((s->flags ^ os->bfd_section->flags) + & (SEC_LOAD | SEC_ALLOC)) == 0))) { - /* Look through the script to see where to place this section. */ - os = lang_output_section_find (secname); - - if (os != NULL - && (os->bfd_section == NULL - || os->bfd_section->flags == 0 - || (_bfd_elf_match_sections_by_type (link_info.output_bfd, - os->bfd_section, - s->owner, s) - && ((s->flags ^ os->bfd_section->flags) - & (SEC_LOAD | SEC_ALLOC)) == 0))) - { - /* We already have an output section statement with this - name, and its bfd section, if any, has compatible flags. - If the section already exists but does not have any flags - set, then it has been created by the linker, probably as a - result of a --section-start command line switch. */ - lang_add_section (&os->children, s, os); - return TRUE; - } + /* We already have an output section statement with this + name, and its bfd section has compatible flags. + If the section already exists but does not have any flags + set, then it has been created by the linker, probably as a + result of a --section-start command line switch. */ + lang_add_section (&os->children, s, os); + return os; } if (!orphan_init_done) { + lang_output_section_statement_type *lookup; struct orphan_save *ho; + for (ho = hold; ho < hold + sizeof (hold) / sizeof (hold[0]); ++ho) if (ho->name != NULL) { @@ -1741,6 +1742,16 @@ gld${EMULATION_NAME}_place_orphan (asection *s) if (ho->os != NULL && ho->os->flags == 0) ho->os->flags = ho->flags; } + lookup = hold[orphan_bss].os; + if (lookup == NULL) + lookup = &lang_output_section_statement.head->output_section_statement; + for (; lookup != NULL; lookup = lookup->next) + if ((lookup->bfd_section != NULL + && (lookup->bfd_section->flags & SEC_DEBUGGING) != 0) + || strcmp (lookup->name, ".comment") == 0) + break; + hold[orphan_nonalloc].os = lookup ? lookup->prev : NULL; + hold[orphan_nonalloc].name = ".comment"; orphan_init_done = 1; } @@ -1748,12 +1759,12 @@ gld${EMULATION_NAME}_place_orphan (asection *s) sections into the .text section to get them out of the way. */ if (link_info.executable && ! link_info.relocatable - && CONST_STRNEQ (secname, ".gnu.warning.") + && CONST_STRNEQ (s->name, ".gnu.warning.") && hold[orphan_text].os != NULL) { - lang_add_section (&hold[orphan_text].os->children, s, - hold[orphan_text].os); - return TRUE; + os = hold[orphan_text].os; + lang_add_section (&os->children, s, os); + return os; } /* Decide which segment the section should go in based on the @@ -1763,7 +1774,9 @@ gld${EMULATION_NAME}_place_orphan (asection *s) in the first page. */ place = NULL; - if ((s->flags & SEC_ALLOC) == 0) + if ((s->flags & (SEC_ALLOC | SEC_DEBUGGING)) == 0) + place = &hold[orphan_nonalloc]; + else if ((s->flags & SEC_ALLOC) == 0) ; else if ((s->flags & SEC_LOAD) != 0 && ((iself && sh_type == SHT_NOTE) @@ -1803,21 +1816,7 @@ gld${EMULATION_NAME}_place_orphan (asection *s) after = &lang_output_section_statement.head->output_section_statement; } - /* Choose a unique name for the section. This will be needed if the - same section name appears in the input file with different - loadable or allocatable characteristics. */ - if (bfd_get_section_by_name (link_info.output_bfd, secname) != NULL) - { - static int count = 1; - secname = bfd_get_unique_section_name (link_info.output_bfd, - secname, &count); - if (secname == NULL) - einfo ("%F%P: place_orphan failed: %E\n"); - } - - lang_insert_orphan (s, secname, after, place, NULL, NULL); - - return TRUE; + return lang_insert_orphan (s, secname, constraint, after, place, NULL, NULL); } EOF fi diff --git a/ld/emultempl/genelf.em b/ld/emultempl/genelf.em index e44bb9b..e6e8841 100644 --- a/ld/emultempl/genelf.em +++ b/ld/emultempl/genelf.em @@ -34,7 +34,27 @@ gld${EMULATION_NAME}_finish (void) gld${EMULATION_NAME}_map_segments (FALSE); finish_default (); } + +static void +gld${EMULATION_NAME}_after_open (void) +{ + bfd *ibfd; + asection *sec; + asymbol **syms; + + if (link_info.relocatable) + for (ibfd = link_info.input_bfds; ibfd != NULL; ibfd = ibfd->link_next) + if ((syms = bfd_get_outsymbols (ibfd)) != NULL + && bfd_get_flavour (ibfd) == bfd_target_elf_flavour) + for (sec = ibfd->sections; sec != NULL; sec = sec->next) + if ((sec->flags & (SEC_GROUP | SEC_LINKER_CREATED)) == SEC_GROUP) + { + struct bfd_elf_section_data *sec_data = elf_section_data (sec); + elf_group_id (sec) = syms[sec_data->this_hdr.sh_info - 1]; + } +} EOF # Put these extra routines in ld_${EMULATION_NAME}_emulation # LDEMUL_FINISH=gld${EMULATION_NAME}_finish +LDEMUL_AFTER_OPEN=gld${EMULATION_NAME}_after_open diff --git a/ld/emultempl/mmo.em b/ld/emultempl/mmo.em index 8b02fd6..f5ba6dd 100644 --- a/ld/emultempl/mmo.em +++ b/ld/emultempl/mmo.em @@ -46,8 +46,10 @@ fragment <<EOF SEC_READONLY sections right after MMO_TEXT_SECTION_NAME. Much borrowed from elf32.em. */ -static bfd_boolean -mmo_place_orphan (asection *s) +static lang_output_section_statement_type * +mmo_place_orphan (asection *s, + const char *secname, + int constraint ATTRIBUTE_UNUSED) { static struct orphan_save hold_text = { @@ -56,17 +58,15 @@ mmo_place_orphan (asection *s) 0, 0, 0, 0 }; struct orphan_save *place; - const char *secname; lang_output_section_statement_type *after; lang_output_section_statement_type *os; /* We have nothing to say for anything other than a final link. */ if (link_info.relocatable || (s->flags & (SEC_EXCLUDE | SEC_LOAD)) != SEC_LOAD) - return FALSE; + return NULL; /* Only care for sections we're going to load. */ - secname = s->name; os = lang_output_section_find (secname); /* We have an output section by this name. Place the section inside it @@ -74,13 +74,13 @@ mmo_place_orphan (asection *s) if (os != NULL) { lang_add_section (&os->children, s, os); - return TRUE; + return os; } /* If this section does not have .text-type section flags or there's no MMO_TEXT_SECTION_NAME, we don't have anything to say. */ if ((s->flags & (SEC_CODE | SEC_READONLY)) == 0) - return FALSE; + return NULL; if (hold_text.os == NULL) hold_text.os = lang_output_section_find (hold_text.name); @@ -93,7 +93,7 @@ mmo_place_orphan (asection *s) /* If there's an output section by this name, we'll use it, regardless of section flags, in contrast to what's done in elf32.em. */ - os = lang_insert_orphan (s, secname, after, place, NULL, NULL); + os = lang_insert_orphan (s, secname, 0, after, place, NULL, NULL); /* We need an output section for .text as a root, so if there was none (might happen with a peculiar linker script such as in "map @@ -102,7 +102,7 @@ mmo_place_orphan (asection *s) if (hold_text.os == NULL) hold_text.os = os; - return TRUE; + return os; } /* Remove the spurious settings of SEC_RELOC that make it to the output at diff --git a/ld/emultempl/pe.em b/ld/emultempl/pe.em index 865cfaa..b963d03 100644 --- a/ld/emultempl/pe.em +++ b/ld/emultempl/pe.em @@ -936,7 +936,7 @@ pe_find_data_imports (void) { warned = TRUE; einfo (_("%P: warning: auto-importing has been activated without --enable-auto-import specified on the command line.\n\ -This should work unless it involves constant data structures referencing symbols from auto-imported DLLs.")); +This should work unless it involves constant data structures referencing symbols from auto-imported DLLs.\n")); } } @@ -1122,7 +1122,7 @@ gld_${EMULATION_NAME}_after_open (void) if (nrelocs < 0) { free (relocs); - einfo ("%X%P: unable to process relocs: %E"); + einfo ("%X%P: unable to process relocs: %E\n"); return; } @@ -1380,7 +1380,7 @@ gld_${EMULATION_NAME}_before_allocation (void) (is->the_bfd, & link_info, support_old_code)) { /* xgettext:c-format */ - einfo (_("Errors encountered processing file %s for interworking"), + einfo (_("Errors encountered processing file %s for interworking\n"), is->filename); } } @@ -1612,41 +1612,38 @@ gld_${EMULATION_NAME}_finish (void) default linker script using wildcards, and are sorted by sort_sections. */ -static bfd_boolean -gld_${EMULATION_NAME}_place_orphan (asection *s) +static lang_output_section_statement_type * +gld_${EMULATION_NAME}_place_orphan (asection *s, + const char *secname, + int constraint) { - const char *secname; - const char *orig_secname; + const char *orig_secname = secname; char *dollar = NULL; lang_output_section_statement_type *os; lang_statement_list_type add_child; - secname = bfd_get_section_name (s->owner, s); - /* Look through the script to see where to place this section. */ - orig_secname = secname; if (!link_info.relocatable && (dollar = strchr (secname, '$')) != NULL) { - size_t len = dollar - orig_secname; + size_t len = dollar - secname; char *newname = xmalloc (len + 1); - memcpy (newname, orig_secname, len); + memcpy (newname, secname, len); newname[len] = '\0'; secname = newname; } - os = lang_output_section_find (secname); - lang_list_init (&add_child); - if (os != NULL - && (os->bfd_section == NULL - || os->bfd_section->flags == 0 + if (constraint == 0 + && (os = lang_output_section_find (secname)) != NULL + && os->bfd_section != NULL + && (os->bfd_section->flags == 0 || ((s->flags ^ os->bfd_section->flags) & (SEC_LOAD | SEC_ALLOC)) == 0)) { /* We already have an output section statement with this - name, and its bfd section, if any, has compatible flags. + name, and its bfd section has compatible flags. If the section already exists but does not have any flags set, then it has been created by the linker, probably as a result of a --section-start command line switch. */ @@ -1723,21 +1720,10 @@ gld_${EMULATION_NAME}_place_orphan (asection *s) ->output_section_statement); } - /* Choose a unique name for the section. This will be needed if the - same section name appears in the input file with different - loadable or allocatable characteristics. */ - if (bfd_get_section_by_name (link_info.output_bfd, secname) != NULL) - { - static int count = 1; - secname = bfd_get_unique_section_name (link_info.output_bfd, - secname, &count); - if (secname == NULL) - einfo ("%F%P: place_orphan failed: %E\n"); - } - /* All sections in an executable must be aligned to a page boundary. */ address = exp_unop (ALIGN_K, exp_nameop (NAME, "__section_alignment__")); - os = lang_insert_orphan (s, secname, after, place, address, &add_child); + os = lang_insert_orphan (s, secname, constraint, after, place, address, + &add_child); } { @@ -1782,7 +1768,7 @@ gld_${EMULATION_NAME}_place_orphan (asection *s) } } - return TRUE; + return os; } static bfd_boolean diff --git a/ld/emultempl/pep.em b/ld/emultempl/pep.em index 21bcf01..d70f635 100644 --- a/ld/emultempl/pep.em +++ b/ld/emultempl/pep.em @@ -895,7 +895,7 @@ pep_find_data_imports (void) { warned = TRUE; einfo (_("%P: warning: auto-importing has been activated without --enable-auto-import specified on the command line.\n\ -This should work unless it involves constant data structures referencing symbols from auto-imported DLLs.")); +This should work unless it involves constant data structures referencing symbols from auto-imported DLLs.\n")); } } @@ -1060,7 +1060,7 @@ gld_${EMULATION_NAME}_after_open (void) if (nrelocs < 0) { free (relocs); - einfo ("%X%P: unable to process relocs: %E"); + einfo ("%X%P: unable to process relocs: %E\n"); return; } @@ -1371,41 +1371,38 @@ gld_${EMULATION_NAME}_finish (void) default linker script using wildcards, and are sorted by sort_sections. */ -static bfd_boolean -gld_${EMULATION_NAME}_place_orphan (asection *s) +static lang_output_section_statement_type * +gld_${EMULATION_NAME}_place_orphan (asection *s, + const char *secname, + int constraint) { - const char *secname; - const char *orig_secname; + const char *orig_secname = secname; char *dollar = NULL; lang_output_section_statement_type *os; lang_statement_list_type add_child; - secname = bfd_get_section_name (s->owner, s); - /* Look through the script to see where to place this section. */ - orig_secname = secname; if (!link_info.relocatable && (dollar = strchr (secname, '$')) != NULL) { - size_t len = dollar - orig_secname; + size_t len = dollar - secname; char *newname = xmalloc (len + 1); - memcpy (newname, orig_secname, len); + memcpy (newname, secname, len); newname[len] = '\0'; secname = newname; } - os = lang_output_section_find (secname); - lang_list_init (&add_child); - if (os != NULL - && (os->bfd_section == NULL - || os->bfd_section->flags == 0 + if (constraint == 0 + && (os = lang_output_section_find (secname)) != NULL + && os->bfd_section != NULL + && (os->bfd_section->flags == 0 || ((s->flags ^ os->bfd_section->flags) & (SEC_LOAD | SEC_ALLOC)) == 0)) { /* We already have an output section statement with this - name, and its bfd section, if any, has compatible flags. + name, and its bfd section has compatible flags. If the section already exists but does not have any flags set, then it has been created by the linker, probably as a result of a --section-start command line switch. */ @@ -1482,21 +1479,10 @@ gld_${EMULATION_NAME}_place_orphan (asection *s) ->output_section_statement); } - /* Choose a unique name for the section. This will be needed if the - same section name appears in the input file with different - loadable or allocatable characteristics. */ - if (bfd_get_section_by_name (link_info.output_bfd, secname) != NULL) - { - static int count = 1; - secname = bfd_get_unique_section_name (link_info.output_bfd, - secname, &count); - if (secname == NULL) - einfo ("%F%P: place_orphan failed: %E\n"); - } - /* All sections in an executable must be aligned to a page boundary. */ address = exp_unop (ALIGN_K, exp_nameop (NAME, "__section_alignment__")); - os = lang_insert_orphan (s, secname, after, place, address, &add_child); + os = lang_insert_orphan (s, secname, constraint, after, place, address, + &add_child); } { @@ -1541,7 +1527,7 @@ gld_${EMULATION_NAME}_place_orphan (asection *s) } } - return TRUE; + return os; } static bfd_boolean diff --git a/ld/emultempl/spuelf.em b/ld/emultempl/spuelf.em index 116a0cc..fe248af 100644 --- a/ld/emultempl/spuelf.em +++ b/ld/emultempl/spuelf.em @@ -114,12 +114,7 @@ spu_place_special_section (asection *s, asection *o, const char *output_name) os = lang_output_section_find (o != NULL ? o->name : output_name); if (os == NULL) - { - const char *save = s->name; - s->name = output_name; - gld${EMULATION_NAME}_place_orphan (s); - s->name = save; - } + gld${EMULATION_NAME}_place_orphan (s, output_name, 0); else if (o != NULL && os->children.head != NULL) { lang_statement_list_type add; diff --git a/ld/emultempl/sunos.em b/ld/emultempl/sunos.em index 6367c3c..bbd6075 100644 --- a/ld/emultempl/sunos.em +++ b/ld/emultempl/sunos.em @@ -698,7 +698,7 @@ gld${EMULATION_NAME}_before_allocation (void) /* Set the .text section to start at 0x20, not 0x2020. FIXME: This is too magical. */ - os = lang_output_section_statement_lookup (".text"); + os = lang_output_section_statement_lookup (".text", 0, TRUE); if (os->addr_tree == NULL) os->addr_tree = exp_intop (0x20); } diff --git a/ld/ldemul.c b/ld/ldemul.c index 6b86ddf..826129d 100644 --- a/ld/ldemul.c +++ b/ld/ldemul.c @@ -119,12 +119,12 @@ ldemul_open_dynamic_archive (const char *arch, search_dirs_type *search, return FALSE; } -bfd_boolean -ldemul_place_orphan (asection *s) +lang_output_section_statement_type * +ldemul_place_orphan (asection *s, const char *name, int constraint) { if (ld_emulation->place_orphan) - return (*ld_emulation->place_orphan) (s); - return FALSE; + return (*ld_emulation->place_orphan) (s, name, constraint); + return NULL; } void diff --git a/ld/ldemul.h b/ld/ldemul.h index cc81728..8c68a88 100644 --- a/ld/ldemul.h +++ b/ld/ldemul.h @@ -58,8 +58,8 @@ extern void ldemul_set_symbols (void); extern void ldemul_create_output_section_statements (void); -extern bfd_boolean ldemul_place_orphan - (asection *); +extern lang_output_section_statement_type *ldemul_place_orphan + (asection *, const char *, int); extern bfd_boolean ldemul_parse_args (int, char **); extern void ldemul_add_options @@ -151,8 +151,8 @@ typedef struct ld_emulation_xfer_struct { /* Place an orphan section. Return TRUE if it was placed, FALSE if the default action should be taken. This field may be NULL, in which case the default action will always be taken. */ - bfd_boolean (*place_orphan) - (asection *); + lang_output_section_statement_type *(*place_orphan) + (asection *, const char *, int); /* Run after assigning parsing with the args, but before reading the script. Used to initialize symbols used in the script. */ @@ -282,6 +282,7 @@ fold_unary (etree_type *tree) static void fold_binary (etree_type *tree) { + etree_value_type lhs; exp_fold_tree_1 (tree->binary.lhs); /* The SEGMENT_START operator is special because its first @@ -304,169 +305,167 @@ fold_binary (etree_type *tree) expld.result.section = expld.section; break; } + return; } - else if (expld.result.valid_p) - { - etree_value_type lhs = expld.result; - exp_fold_tree_1 (tree->binary.rhs); - if (expld.result.valid_p) + lhs = expld.result; + exp_fold_tree_1 (tree->binary.rhs); + expld.result.valid_p &= lhs.valid_p; + + if (expld.result.valid_p) + { + /* If the values are from different sections, or this is an + absolute expression, make both the source arguments + absolute. However, adding or subtracting an absolute + value from a relative value is meaningful, and is an + exception. */ + if (expld.section != bfd_abs_section_ptr + && lhs.section == bfd_abs_section_ptr + && tree->type.node_code == '+') { - /* If the values are from different sections, or this is an - absolute expression, make both the source arguments - absolute. However, adding or subtracting an absolute - value from a relative value is meaningful, and is an - exception. */ - if (expld.section != bfd_abs_section_ptr - && lhs.section == bfd_abs_section_ptr - && tree->type.node_code == '+') - { - /* Keep the section of the rhs term. */ - expld.result.value = lhs.value + expld.result.value; - return; - } - else if (expld.section != bfd_abs_section_ptr - && expld.result.section == bfd_abs_section_ptr - && (tree->type.node_code == '+' - || tree->type.node_code == '-')) - { - /* Keep the section of the lhs term. */ - expld.result.section = lhs.section; - } - else if (expld.result.section != lhs.section - || expld.section == bfd_abs_section_ptr) - { - make_abs (); - lhs.value += lhs.section->vma; - } + /* Keep the section of the rhs term. */ + expld.result.value = lhs.value + expld.result.value; + return; + } + else if (expld.section != bfd_abs_section_ptr + && expld.result.section == bfd_abs_section_ptr + && (tree->type.node_code == '+' + || tree->type.node_code == '-')) + { + /* Keep the section of the lhs term. */ + expld.result.section = lhs.section; + } + else if (expld.result.section != lhs.section + || expld.section == bfd_abs_section_ptr) + { + make_abs (); + lhs.value += lhs.section->vma; + } - switch (tree->type.node_code) - { - case '%': - if (expld.result.value != 0) - expld.result.value = ((bfd_signed_vma) lhs.value - % (bfd_signed_vma) expld.result.value); - else if (expld.phase != lang_mark_phase_enum) - einfo (_("%F%S %% by zero\n")); - break; + switch (tree->type.node_code) + { + case '%': + if (expld.result.value != 0) + expld.result.value = ((bfd_signed_vma) lhs.value + % (bfd_signed_vma) expld.result.value); + else if (expld.phase != lang_mark_phase_enum) + einfo (_("%F%S %% by zero\n")); + break; - case '/': - if (expld.result.value != 0) - expld.result.value = ((bfd_signed_vma) lhs.value - / (bfd_signed_vma) expld.result.value); - else if (expld.phase != lang_mark_phase_enum) - einfo (_("%F%S / by zero\n")); - break; + case '/': + if (expld.result.value != 0) + expld.result.value = ((bfd_signed_vma) lhs.value + / (bfd_signed_vma) expld.result.value); + else if (expld.phase != lang_mark_phase_enum) + einfo (_("%F%S / by zero\n")); + break; #define BOP(x, y) \ case x: \ expld.result.value = lhs.value y expld.result.value; \ break; - BOP ('+', +); - BOP ('*', *); - BOP ('-', -); - BOP (LSHIFT, <<); - BOP (RSHIFT, >>); - BOP (EQ, ==); - BOP (NE, !=); - BOP ('<', <); - BOP ('>', >); - BOP (LE, <=); - BOP (GE, >=); - BOP ('&', &); - BOP ('^', ^); - BOP ('|', |); - BOP (ANDAND, &&); - BOP (OROR, ||); - - case MAX_K: - if (lhs.value > expld.result.value) - expld.result.value = lhs.value; - break; + BOP ('+', +); + BOP ('*', *); + BOP ('-', -); + BOP (LSHIFT, <<); + BOP (RSHIFT, >>); + BOP (EQ, ==); + BOP (NE, !=); + BOP ('<', <); + BOP ('>', >); + BOP (LE, <=); + BOP (GE, >=); + BOP ('&', &); + BOP ('^', ^); + BOP ('|', |); + BOP (ANDAND, &&); + BOP (OROR, ||); + + case MAX_K: + if (lhs.value > expld.result.value) + expld.result.value = lhs.value; + break; - case MIN_K: - if (lhs.value < expld.result.value) - expld.result.value = lhs.value; - break; + case MIN_K: + if (lhs.value < expld.result.value) + expld.result.value = lhs.value; + break; - case ALIGN_K: - expld.result.value = align_n (lhs.value, expld.result.value); - break; + case ALIGN_K: + expld.result.value = align_n (lhs.value, expld.result.value); + break; - case DATA_SEGMENT_ALIGN: - expld.dataseg.relro = exp_dataseg_relro_start; - if (expld.phase != lang_first_phase_enum - && expld.section == bfd_abs_section_ptr - && (expld.dataseg.phase == exp_dataseg_none - || expld.dataseg.phase == exp_dataseg_adjust - || expld.dataseg.phase == exp_dataseg_relro_adjust - || expld.phase == lang_final_phase_enum)) - { - bfd_vma maxpage = lhs.value; - bfd_vma commonpage = expld.result.value; + case DATA_SEGMENT_ALIGN: + expld.dataseg.relro = exp_dataseg_relro_start; + if (expld.phase != lang_first_phase_enum + && expld.section == bfd_abs_section_ptr + && (expld.dataseg.phase == exp_dataseg_none + || expld.dataseg.phase == exp_dataseg_adjust + || expld.dataseg.phase == exp_dataseg_relro_adjust + || expld.phase == lang_final_phase_enum)) + { + bfd_vma maxpage = lhs.value; + bfd_vma commonpage = expld.result.value; - expld.result.value = align_n (expld.dot, maxpage); - if (expld.dataseg.phase == exp_dataseg_relro_adjust) - expld.result.value = expld.dataseg.base; - else if (expld.dataseg.phase != exp_dataseg_adjust) + expld.result.value = align_n (expld.dot, maxpage); + if (expld.dataseg.phase == exp_dataseg_relro_adjust) + expld.result.value = expld.dataseg.base; + else if (expld.dataseg.phase != exp_dataseg_adjust) + { + expld.result.value += expld.dot & (maxpage - 1); + if (expld.phase == lang_allocating_phase_enum) { - expld.result.value += expld.dot & (maxpage - 1); - if (expld.phase == lang_allocating_phase_enum) - { - expld.dataseg.phase = exp_dataseg_align_seen; - expld.dataseg.min_base = expld.dot; - expld.dataseg.base = expld.result.value; - expld.dataseg.pagesize = commonpage; - expld.dataseg.maxpagesize = maxpage; - expld.dataseg.relro_end = 0; - } + expld.dataseg.phase = exp_dataseg_align_seen; + expld.dataseg.min_base = expld.dot; + expld.dataseg.base = expld.result.value; + expld.dataseg.pagesize = commonpage; + expld.dataseg.maxpagesize = maxpage; + expld.dataseg.relro_end = 0; } - else if (commonpage < maxpage) - expld.result.value += ((expld.dot + commonpage - 1) - & (maxpage - commonpage)); } - else - expld.result.valid_p = FALSE; - break; - - case DATA_SEGMENT_RELRO_END: - expld.dataseg.relro = exp_dataseg_relro_end; - if (expld.phase != lang_first_phase_enum - && (expld.dataseg.phase == exp_dataseg_align_seen - || expld.dataseg.phase == exp_dataseg_adjust - || expld.dataseg.phase == exp_dataseg_relro_adjust - || expld.phase == lang_final_phase_enum)) - { - if (expld.dataseg.phase == exp_dataseg_align_seen - || expld.dataseg.phase == exp_dataseg_relro_adjust) - expld.dataseg.relro_end = lhs.value + expld.result.value; + else if (commonpage < maxpage) + expld.result.value += ((expld.dot + commonpage - 1) + & (maxpage - commonpage)); + } + else + expld.result.valid_p = FALSE; + break; - if (expld.dataseg.phase == exp_dataseg_relro_adjust - && (expld.dataseg.relro_end - & (expld.dataseg.pagesize - 1))) - { - expld.dataseg.relro_end += expld.dataseg.pagesize - 1; - expld.dataseg.relro_end &= ~(expld.dataseg.pagesize - 1); - expld.result.value = (expld.dataseg.relro_end - - expld.result.value); - } - else - expld.result.value = lhs.value; + case DATA_SEGMENT_RELRO_END: + expld.dataseg.relro = exp_dataseg_relro_end; + if (expld.phase != lang_first_phase_enum + && (expld.dataseg.phase == exp_dataseg_align_seen + || expld.dataseg.phase == exp_dataseg_adjust + || expld.dataseg.phase == exp_dataseg_relro_adjust + || expld.phase == lang_final_phase_enum)) + { + if (expld.dataseg.phase == exp_dataseg_align_seen + || expld.dataseg.phase == exp_dataseg_relro_adjust) + expld.dataseg.relro_end = lhs.value + expld.result.value; - if (expld.dataseg.phase == exp_dataseg_align_seen) - expld.dataseg.phase = exp_dataseg_relro_seen; + if (expld.dataseg.phase == exp_dataseg_relro_adjust + && (expld.dataseg.relro_end + & (expld.dataseg.pagesize - 1))) + { + expld.dataseg.relro_end += expld.dataseg.pagesize - 1; + expld.dataseg.relro_end &= ~(expld.dataseg.pagesize - 1); + expld.result.value = (expld.dataseg.relro_end + - expld.result.value); } else - expld.result.valid_p = FALSE; - break; + expld.result.value = lhs.value; - default: - FAIL (); + if (expld.dataseg.phase == exp_dataseg_align_seen) + expld.dataseg.phase = exp_dataseg_relro_seen; } + else + expld.result.valid_p = FALSE; + break; + + default: + FAIL (); } - else - expld.result.valid_p = FALSE; } } diff --git a/ld/ldlang.c b/ld/ldlang.c index b1b8806..9fd26a9 100644 --- a/ld/ldlang.c +++ b/ld/ldlang.c @@ -193,7 +193,7 @@ input_statement_is_archive_path (const char *file_spec, char *sep, return match; } -bfd_boolean +static bfd_boolean unique_section_p (const asection *sec) { struct unique_sections *unam; @@ -1278,19 +1278,25 @@ lang_output_section_statement_lookup (const char *const name, struct out_section_hash_entry *last_ent; unsigned long hash = entry->root.hash; - do - { - if (entry->s.output_section_statement.constraint >= 0 - && (constraint == 0 - || (constraint == entry->s.output_section_statement.constraint - && constraint != SPECIAL))) - return &entry->s.output_section_statement; - last_ent = entry; - entry = (struct out_section_hash_entry *) entry->root.next; - } - while (entry != NULL - && entry->root.hash == hash - && strcmp (name, entry->s.output_section_statement.name) == 0); + if (create && constraint == SPECIAL) + /* Not traversing to the end reverses the order of the second + and subsequent SPECIAL sections in the hash table chain, + but that shouldn't matter. */ + last_ent = entry; + else + do + { + if (entry->s.output_section_statement.constraint >= 0 + && (constraint == 0 + || (constraint + == entry->s.output_section_statement.constraint))) + return &entry->s.output_section_statement; + last_ent = entry; + entry = (struct out_section_hash_entry *) entry->root.next; + } + while (entry != NULL + && entry->root.hash == hash + && strcmp (name, entry->s.output_section_statement.name) == 0); if (!create) return NULL; @@ -1357,7 +1363,8 @@ lang_output_section_find_by_flags (const asection *sec, return found; } - if (sec->flags & SEC_CODE) + if ((sec->flags & SEC_CODE) != 0 + && (sec->flags & SEC_ALLOC) != 0) { /* Try for a rw code section. */ for (look = first; look; look = look->next) @@ -1377,7 +1384,8 @@ lang_output_section_find_by_flags (const asection *sec, found = look; } } - else if (sec->flags & (SEC_READONLY | SEC_THREAD_LOCAL)) + else if ((sec->flags & (SEC_READONLY | SEC_THREAD_LOCAL)) != 0 + && (sec->flags & SEC_ALLOC) != 0) { /* .rodata can go after .text, .sdata2 after .rodata. */ for (look = first; look; look = look->next) @@ -1398,7 +1406,8 @@ lang_output_section_find_by_flags (const asection *sec, found = look; } } - else if (sec->flags & SEC_SMALL_DATA) + else if ((sec->flags & SEC_SMALL_DATA) != 0 + && (sec->flags & SEC_ALLOC) != 0) { /* .sdata goes after .data, .sbss after .sdata. */ for (look = first; look; look = look->next) @@ -1420,7 +1429,8 @@ lang_output_section_find_by_flags (const asection *sec, found = look; } } - else if (sec->flags & SEC_HAS_CONTENTS) + else if ((sec->flags & SEC_HAS_CONTENTS) != 0 + && (sec->flags & SEC_ALLOC) != 0) { /* .data goes after .rodata. */ for (look = first; look; look = look->next) @@ -1440,9 +1450,9 @@ lang_output_section_find_by_flags (const asection *sec, found = look; } } - else + else if ((sec->flags & SEC_ALLOC) != 0) { - /* .bss goes last. */ + /* .bss goes after any other alloc section. */ for (look = first; look; look = look->next) { flags = look->flags; @@ -1459,6 +1469,20 @@ lang_output_section_find_by_flags (const asection *sec, found = look; } } + else + { + /* non-alloc go last. */ + for (look = first; look; look = look->next) + { + flags = look->flags; + if (look->bfd_section != NULL) + flags = look->bfd_section->flags; + flags ^= sec->flags; + if (!(flags & SEC_DEBUGGING)) + found = look; + } + return found; + } if (found || !match_type) return found; @@ -1556,6 +1580,7 @@ insert_os_after (lang_output_section_statement_type *after) lang_output_section_statement_type * lang_insert_orphan (asection *s, const char *secname, + int constraint, lang_output_section_statement_type *after, struct orphan_save *place, etree_type *address, @@ -1611,7 +1636,7 @@ lang_insert_orphan (asection *s, os_tail = ((lang_output_section_statement_type **) lang_output_section_statement.tail); os = lang_enter_output_section_statement (secname, address, 0, NULL, NULL, - NULL, 0); + NULL, constraint); if (add_child == NULL) add_child = &os->children; @@ -1914,10 +1939,11 @@ init_os (lang_output_section_statement_type *s, asection *isec, if (strcmp (s->name, DISCARD_SECTION_NAME) == 0) einfo (_("%P%F: Illegal use of `%s' section\n"), DISCARD_SECTION_NAME); - s->bfd_section = bfd_get_section_by_name (link_info.output_bfd, s->name); + if (s->constraint != SPECIAL) + s->bfd_section = bfd_get_section_by_name (link_info.output_bfd, s->name); if (s->bfd_section == NULL) - s->bfd_section = bfd_make_section_with_flags (link_info.output_bfd, - s->name, flags); + s->bfd_section = bfd_make_section_anyway_with_flags (link_info.output_bfd, + s->name, flags); if (s->bfd_section == NULL) { einfo (_("%P%F: output format %s cannot represent section called %s\n"), @@ -4600,7 +4626,12 @@ lang_size_sections_1 os->name, (unsigned long) (newdot - savedot)); } - bfd_set_section_vma (0, os->bfd_section, newdot); + /* PR 6945: Do not update the vma's of output sections + when performing a relocatable link on COFF objects. */ + if (! link_info.relocatable + || (bfd_get_flavour (link_info.output_bfd) + != bfd_target_coff_flavour)) + bfd_set_section_vma (0, os->bfd_section, newdot); os->bfd_section->output_offset = 0; } @@ -5652,14 +5683,22 @@ lang_place_orphans (void) default_common_section); } } - else if (ldemul_place_orphan (s)) - ; else { - lang_output_section_statement_type *os; + const char *name = s->name; + int constraint = 0; + + if (config.unique_orphan_sections || unique_section_p (s)) + constraint = SPECIAL; - os = lang_output_section_statement_lookup (s->name, 0, TRUE); - lang_add_section (&os->children, s, os); + if (!ldemul_place_orphan (s, name, constraint)) + { + lang_output_section_statement_type *os; + os = lang_output_section_statement_lookup (name, + constraint, + TRUE); + lang_add_section (&os->children, s, os); + } } } } diff --git a/ld/ldlang.h b/ld/ldlang.h index 8b652a8..fd0465e 100644 --- a/ld/ldlang.h +++ b/ld/ldlang.h @@ -536,7 +536,7 @@ extern lang_output_section_statement_type *lang_output_section_find_by_flags (const asection *, lang_output_section_statement_type **, lang_match_sec_type_func); extern lang_output_section_statement_type *lang_insert_orphan - (asection *, const char *, lang_output_section_statement_type *, + (asection *, const char *, int, lang_output_section_statement_type *, struct orphan_save *, etree_type *, lang_statement_list_type *); extern lang_input_statement_type *lang_add_input_file (const char *, lang_input_file_enum_type, const char *); @@ -604,8 +604,6 @@ extern void lang_register_vers_node extern void lang_append_dynamic_list (struct bfd_elf_version_expr *); extern void lang_append_dynamic_list_cpp_typeinfo (void); extern void lang_append_dynamic_list_cpp_new (void); -bfd_boolean unique_section_p - (const asection *); extern void lang_add_unique (const char *); extern const char *lang_get_output_target diff --git a/ld/pe-dll.c b/ld/pe-dll.c index ea84999..bf4b509 100644 --- a/ld/pe-dll.c +++ b/ld/pe-dll.c @@ -2242,6 +2242,7 @@ make_import_fixup_entry (const char *name, d2 = xmalloc (20); id2->contents = d2; memset (d2, 0, 20); + d2[0] = d2[16] = PE_IDATA5_SIZE; /* Reloc addend. */ quick_reloc (abfd, 0, BFD_RELOC_RVA, 1); quick_reloc (abfd, 12, BFD_RELOC_RVA, 2); diff --git a/ld/po/id.po b/ld/po/id.po new file mode 100644 index 0000000..01ac958 --- /dev/null +++ b/ld/po/id.po @@ -0,0 +1,2019 @@ +# Pesan Bahasa Indonesia untuk LD +# Copyright (C) 2008 Free Software Foundation, Inc. +# This file is distributed under the same license as the binutils package. +# Arif E. Nugroho <arif_endro@yahoo.com>, 2008. +# +msgid "" +msgstr "" +"Project-Id-Version: ld 2.18.90\n" +"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n" +"POT-Creation-Date: 2008-09-09 15:56+0930\n" +"PO-Revision-Date: 2008-10-08 10:00+0700\n" +"Last-Translator: Arif E. Nugroho <arif_endro@yahoo.com>\n" +"Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=ISO-8859-1\n" +"Content-Transfer-Encoding: 8bit\n" + +#: emultempl/armcoff.em:73 +#, c-format +msgid " --support-old-code Support interworking with old code\n" +msgstr " --support-old-code Dukung antar-kerja dengan kode lama\n" + +#: emultempl/armcoff.em:74 +#, c-format +msgid " --thumb-entry=<sym> Set the entry point to be Thumb symbol <sym>\n" +msgstr " --thumb-entry=<sym> Set titik masukan ke simbol Thumb <sym>\n" + +#: emultempl/armcoff.em:122 +#, c-format +msgid "Errors encountered processing file %s" +msgstr "Error ditemui dalam pemrosesan berkas %s" + +#: emultempl/armcoff.em:190 emultempl/pe.em:1555 +msgid "%P: warning: '--thumb-entry %s' is overriding '-e %s'\n" +msgstr "%P: peringatan: '--thumb-entry %s' memaksa '-e %s'\n" + +#: emultempl/armcoff.em:195 emultempl/pe.em:1560 +msgid "%P: warning: cannot find thumb start symbol %s\n" +msgstr "%P: warning: tidak dapat menemukan thumb awal simbol %s\n" + +#: emultempl/pe.em:316 +#, c-format +msgid " --base_file <basefile> Generate a base file for relocatable DLLs\n" +msgstr " --base_file <basefile> Buat sebuah berkas dasar untuk DLL yang dapat direlokasikan\n" + +#: emultempl/pe.em:317 +#, c-format +msgid " --dll Set image base to the default for DLLs\n" +msgstr " --dll Set dasar image ke default untuk DLLs\n" + +#: emultempl/pe.em:318 +#, c-format +msgid " --file-alignment <size> Set file alignment\n" +msgstr " --file-alignment <besar> Set berkas alignment\n" + +#: emultempl/pe.em:319 +#, c-format +msgid " --heap <size> Set initial size of the heap\n" +msgstr " --heap <besar> Set ukuran inisial dari heap\n" + +#: emultempl/pe.em:320 +#, c-format +msgid " --image-base <address> Set start address of the executable\n" +msgstr " --image-base <alamat> Set alamat awal dari executabel\n" + +#: emultempl/pe.em:321 +#, c-format +msgid " --major-image-version <number> Set version number of the executable\n" +msgstr " --major-image-version <nomor> Set nomor versi dari executabel\n" + +#: emultempl/pe.em:322 +#, c-format +msgid " --major-os-version <number> Set minimum required OS version\n" +msgstr " --major-os-version <nomor> Set versi minimum yang dibutuhkan oleh OS\n" + +#: emultempl/pe.em:323 +#, c-format +msgid " --major-subsystem-version <number> Set minimum required OS subsystem version\n" +msgstr " --major-subsystem-version <nomor> Set minimum versi OS subsistem yang dibutuhkan\n" + +#: emultempl/pe.em:324 +#, c-format +msgid " --minor-image-version <number> Set revision number of the executable\n" +msgstr " --minor-image-version <nomor> Set nomor revisi dari executabel\n" + +#: emultempl/pe.em:325 +#, c-format +msgid " --minor-os-version <number> Set minimum required OS revision\n" +msgstr " --minor-os-version <nomor> Set versi OS minimum yang dibutuhkan\n" + +#: emultempl/pe.em:326 +#, c-format +msgid " --minor-subsystem-version <number> Set minimum required OS subsystem revision\n" +msgstr " --minor-subsystem-version <nomor> Set versi OS subsistem minimum yang dibutuhkan\n" + +#: emultempl/pe.em:327 +#, c-format +msgid " --section-alignment <size> Set section alignment\n" +msgstr " --section-alignment <besar> Set daerah alignment\n" + +#: emultempl/pe.em:328 +#, c-format +msgid " --stack <size> Set size of the initial stack\n" +msgstr " --stack <besar> Set ukuran dari inisial stack\n" + +#: emultempl/pe.em:329 +#, c-format +msgid " --subsystem <name>[:<version>] Set required OS subsystem [& version]\n" +msgstr " --subsistem <nama>[:<versi>] Set OS subsistem yang dibutuhkan [& versi]\n" + +#: emultempl/pe.em:330 +#, c-format +msgid " --support-old-code Support interworking with old code\n" +msgstr " --support-old-code Dukung antar-kerja dengan kode lama\n" + +#: emultempl/pe.em:331 +#, c-format +msgid " --thumb-entry=<symbol> Set the entry point to be Thumb <symbol>\n" +msgstr " --thumb-entry=<simbol> Set titik masukan ke Thumb <simbol>\n" + +#: emultempl/pe.em:333 +#, c-format +msgid " --add-stdcall-alias Export symbols with and without @nn\n" +msgstr " --add-stdcall-alias Expor simbol dengan dan tanpa @nn\n" + +#: emultempl/pe.em:334 +#, c-format +msgid " --disable-stdcall-fixup Don't link _sym to _sym@nn\n" +msgstr " --disable-stdcall-fixup Jangan hubungkan _sym ke _sym@nn\n" + +#: emultempl/pe.em:335 +#, c-format +msgid " --enable-stdcall-fixup Link _sym to _sym@nn without warnings\n" +msgstr " --enable-stdcall-fixup Hubungkan _sym ke _sym@nn tanpa peringatan\n" + +#: emultempl/pe.em:336 +#, c-format +msgid " --exclude-symbols sym,sym,... Exclude symbols from automatic export\n" +msgstr " --exclude-symbols sym,sym,... Exclude simbol dari expor otomatis\n" + +#: emultempl/pe.em:337 +#, c-format +msgid " --exclude-libs lib,lib,... Exclude libraries from automatic export\n" +msgstr " --exclude-libs lib,lib,... Exclude perpustakaan dari otomatis expor\n" + +#: emultempl/pe.em:338 +#, c-format +msgid " --export-all-symbols Automatically export all globals to DLL\n" +msgstr " --export-all-symbols Otomatis expor seluruh global ke DLL\n" + +#: emultempl/pe.em:339 +#, c-format +msgid " --kill-at Remove @nn from exported symbols\n" +msgstr " --kill-at Hapus @nn dari simbol terexpor\n" + +#: emultempl/pe.em:340 +#, c-format +msgid " --out-implib <file> Generate import library\n" +msgstr " --out-implib <berkas> Buat perpustakaan impor\n" + +#: emultempl/pe.em:341 +#, c-format +msgid " --output-def <file> Generate a .DEF file for the built DLL\n" +msgstr " --output-def <berkas> Buat sebuah berkas .DEF untuk membuat DLL\n" + +#: emultempl/pe.em:342 +#, c-format +msgid " --warn-duplicate-exports Warn about duplicate exports.\n" +msgstr " --warn-duplicate-exports Peringatkan tetang duplikasi expor.\n" + +#: emultempl/pe.em:343 +#, c-format +msgid "" +" --compat-implib Create backward compatible import libs;\n" +" create __imp_<SYMBOL> as well.\n" +msgstr "" +" --compat-implib Buat backwar kompatibel impor libs;\n" +" buat __imp_<SIMBOL> juga.\n" + +#: emultempl/pe.em:345 +#, c-format +msgid "" +" --enable-auto-image-base Automatically choose image base for DLLs\n" +" unless user specifies one\n" +msgstr "" +" --enable-auto-image-base Otomatis pilih dasar image untuk DLL\n" +" kecuali pengguna menspesifikasikannya\n" + +#: emultempl/pe.em:347 +#, c-format +msgid " --disable-auto-image-base Do not auto-choose image base. (default)\n" +msgstr " --disable-auto-image-base Jangan auto-choose image base. (default)\n" + +#: emultempl/pe.em:348 +#, c-format +msgid "" +" --dll-search-prefix=<string> When linking dynamically to a dll without\n" +" an importlib, use <string><basename>.dll\n" +" in preference to lib<basename>.dll \n" +msgstr "" +" --dll-search-prefix=<string> Ketika menghubungkan secra dinamis ke sebuah dll tanpa\n" +" sebuah imporlib, gunakan <string><basename>.dll\n" +" dalam kesukaan ke lib<nama dasar>.dll\n" + +#: emultempl/pe.em:351 +#, c-format +msgid "" +" --enable-auto-import Do sophistcated linking of _sym to\n" +" __imp_sym for DATA references\n" +msgstr "" +" --enable-auto-import Lakukan penghubungan istimewa dari _sym ke\n" +" __imp_sym untuk referensi DATA\n" + +#: emultempl/pe.em:353 +#, c-format +msgid " --disable-auto-import Do not auto-import DATA items from DLLs\n" +msgstr " --disable-auto-import Jangan auto-import DATA items dari DLL\n" + +#: emultempl/pe.em:354 +#, c-format +msgid "" +" --enable-runtime-pseudo-reloc Work around auto-import limitations by\n" +" adding pseudo-relocations resolved at\n" +" runtime.\n" +msgstr "" +" --enable-runtime-pseudo-reloc Atasi pembatasan auto-import dengan\n" +" menambahkan pseudo-relocations diselesaikan di\n" +" waktu-jalan.\n" + +#: emultempl/pe.em:357 +#, c-format +msgid "" +" --disable-runtime-pseudo-reloc Do not add runtime pseudo-relocations for\n" +" auto-imported DATA.\n" +msgstr "" +" --disable-runtime-pseudo-reloc Jangan tambahkan runtime pseudo-relocations untuk\n" +" auto-imported DATA.\n" + +#: emultempl/pe.em:359 +#, c-format +msgid "" +" --enable-extra-pe-debug Enable verbose debug output when building\n" +" or linking to DLLs (esp. auto-import)\n" +msgstr "" +" --enable-extra-pe-debug Aktifkan keluaran verbose debug ketika membuat\n" +" atau menghubungkan ke DLL (lebih tepatnya auto-import)\n" + +#: emultempl/pe.em:362 +#, c-format +msgid "" +" --large-address-aware Executable supports virtual addresses\n" +" greater than 2 gigabytes\n" +msgstr "" +" --large-address-aware Executable dukung alamat maya\n" +" lebih besar dari 2 gigabytes\n" + +#: emultempl/pe.em:431 +msgid "%P: warning: bad version number in -subsystem option\n" +msgstr "%P: peringatan: nomor versi buruk dalam opsi -subsistem\n" + +#: emultempl/pe.em:462 +msgid "%P%F: invalid subsystem type %s\n" +msgstr "%P%F: tipe subsistem %s tidak valid\n" + +#: emultempl/pe.em:501 +msgid "%P%F: invalid hex number for PE parameter '%s'\n" +msgstr "%P%F: nomor hex untuk parameter PE '%s' tidak valid\n" + +#: emultempl/pe.em:518 +msgid "%P%F: strange hex info for PE parameter '%s'\n" +msgstr "%P%F: informasi hex untuk paramter PE '%s' aneh\n" + +#: emultempl/pe.em:535 +#, c-format +msgid "%s: Can't open base file %s\n" +msgstr "%s: Tidak dapat membuka berkas dasar %s\n" + +#: emultempl/pe.em:752 +msgid "%P: warning, file alignment > section alignment.\n" +msgstr "%P: peringatan, berkas alignment > daerah alignment.\n" + +#: emultempl/pe.em:839 emultempl/pe.em:866 +#, c-format +msgid "Warning: resolving %s by linking to %s\n" +msgstr "Peringatan: meresolf %s dengan menghubungkan ke %s\n" + +#: emultempl/pe.em:844 emultempl/pe.em:871 +msgid "Use --enable-stdcall-fixup to disable these warnings\n" +msgstr "Gunakan --enable-stdcall-fixup untuk menonaktifkan peringatan ini\n" + +#: emultempl/pe.em:845 emultempl/pe.em:872 +msgid "Use --disable-stdcall-fixup to disable these fixups\n" +msgstr "Gunakan --disable-stdcall-fixup untuk menonaktifkan perbaikan ini\n" + +#: emultempl/pe.em:891 +#, c-format +msgid "%C: Cannot get section contents - auto-import exception\n" +msgstr "%C: Tidak dpaat memperoleh isi daerah - auto-import exception\n" + +#: emultempl/pe.em:931 +#, c-format +msgid "Info: resolving %s by linking to %s (auto-import)\n" +msgstr "Info: meresolf %s dengan menghubungkan ke %s (auto-import)\n" + +#: emultempl/pe.em:938 +msgid "" +"%P: warning: auto-importing has been activated without --enable-auto-import specified on the command line.\n" +"This should work unless it involves constant data structures referencing symbols from auto-imported DLLs." +msgstr "" +"%P: peringatan: auto-importing telah diaktifkan tanpa --enable-auto-import dispesifikasikan di baris perintah.\n" +"Ini seharusnya bekerja kecuali ini melibatkan konstan struktur data mereferensikan simbol dari auto-imported DLL." + +#: emultempl/pe.em:945 emultempl/pe.em:1113 emultempl/pe.em:1319 ldcref.c:488 +#: ldcref.c:586 ldmain.c:1105 ldmisc.c:285 pe-dll.c:622 pe-dll.c:1153 +#: pe-dll.c:1250 +msgid "%B%F: could not read symbols: %E\n" +msgstr "%B%F: tidak dapat membaca simbol: %E\n" + +#: emultempl/pe.em:1018 +msgid "%F%P: cannot perform PE operations on non PE output file '%B'.\n" +msgstr "%F%P: tidak dapat melakukan operasi PE di berkas keluaran bukan PE '%B'.\n" + +#: emultempl/pe.em:1360 +#, c-format +msgid "Errors encountered processing file %s\n" +msgstr "Error ditemui dalam pemrosesan berkas %s\n" + +#: emultempl/pe.em:1383 +#, c-format +msgid "Errors encountered processing file %s for interworking" +msgstr "Error ditemui dalam pemrosesan berkas %s untuk antar-kerja" + +#: emultempl/pe.em:1444 ldexp.c:540 ldlang.c:3131 ldlang.c:6448 ldlang.c:6479 +#: ldmain.c:1050 +msgid "%P%F: bfd_link_hash_lookup failed: %E\n" +msgstr "%P%F: bfd_link_hash_lookup gagal: %E\n" + +#: ldcref.c:168 +msgid "%X%P: bfd_hash_table_init of cref table failed: %E\n" +msgstr "%X%P: bfd_hash_table_init dari cref tabel gagal: %E\n" + +#: ldcref.c:174 +msgid "%X%P: cref_hash_lookup failed: %E\n" +msgstr "%X%P: cref_hash_lookup gagal: %E\n" + +#: ldcref.c:184 +msgid "%X%P: cref alloc failed: %E\n" +msgstr "%X%P: cref alokasi gagal: %E\n" + +#: ldcref.c:364 +#, c-format +msgid "" +"\n" +"Cross Reference Table\n" +"\n" +msgstr "" +"\n" +"Tabel Referensi Silang\n" +"\n" + +#: ldcref.c:365 +msgid "Symbol" +msgstr "Simbol" + +#: ldcref.c:373 +#, c-format +msgid "File\n" +msgstr "Berkas\n" + +#: ldcref.c:377 +#, c-format +msgid "No symbols\n" +msgstr "Tidak ada simbol\n" + +#: ldcref.c:530 +msgid "%P: symbol `%T' missing from main hash table\n" +msgstr "%P: simbol `%T' hilang dari tabel hash utama\n" + +#: ldcref.c:648 ldcref.c:655 ldmain.c:1139 ldmain.c:1146 +msgid "%B%F: could not read relocs: %E\n" +msgstr "%B%F: tidak dapat membaca relokasi: %E\n" + +#. We found a reloc for the symbol. The symbol is defined +#. in OUTSECNAME. This reloc is from a section which is +#. mapped into a section from which references to OUTSECNAME +#. are prohibited. We must report an error. +#: ldcref.c:682 +msgid "%X%C: prohibited cross reference from %s to `%T' in %s\n" +msgstr "%X%C: dilarang menyilang referensi dari %s ke `%T' dalam %s\n" + +#: ldctor.c:84 +msgid "%P%X: Different relocs used in set %s\n" +msgstr "%P%X: Relokasi berbeda digunakan dalam set %s\n" + +#: ldctor.c:102 +msgid "%P%X: Different object file formats composing set %s\n" +msgstr "%P%X: Format berkas objek berbeda menyusun set %s\n" + +#: ldctor.c:281 ldctor.c:295 +msgid "%P%X: %s does not support reloc %s for set %s\n" +msgstr "%P%X: %s tidak melayani relokasi %s untuk set %s\n" + +#: ldctor.c:316 +msgid "%P%X: Unsupported size %d for set %s\n" +msgstr "%P%X: Ukuran %s tidak didukung untuk set %s\n" + +#: ldctor.c:337 +msgid "" +"\n" +"Set Symbol\n" +"\n" +msgstr "" +"\n" +"Set Simbol\n" +"\n" + +#: ldemul.c:235 +#, c-format +msgid "%S SYSLIB ignored\n" +msgstr "%S SYSLIB diabaikan\n" + +#: ldemul.c:241 +#, c-format +msgid "%S HLL ignored\n" +msgstr "%S HLL diabaikan\n" + +#: ldemul.c:261 +msgid "%P: unrecognised emulation mode: %s\n" +msgstr "%P: mode emulasi tidak dikenal: %s\n" + +#: ldemul.c:262 +msgid "Supported emulations: " +msgstr "Emulasi yang didukung: " + +#: ldemul.c:304 +#, c-format +msgid " no emulation specific options.\n" +msgstr " tidak ada opsi spesifik emulasi.\n" + +#: ldexp.c:350 +#, c-format +msgid "%F%S %% by zero\n" +msgstr "%F%S %% dengan nol\n" + +#: ldexp.c:358 +#, c-format +msgid "%F%S / by zero\n" +msgstr "%F%S / dengan nol\n" + +#: ldexp.c:554 +#, c-format +msgid "%X%S: unresolvable symbol `%s' referenced in expression\n" +msgstr "%X%S: simbol tidak ditemukan `%s' direferensikan dalam expresi\n" + +#: ldexp.c:565 +#, c-format +msgid "%F%S: undefined symbol `%s' referenced in expression\n" +msgstr "%F%S: simbol `%s' tidak terdefinisi direferensikan dalam ekspresi\n" + +#: ldexp.c:586 ldexp.c:603 ldexp.c:630 +#, c-format +msgid "%F%S: undefined section `%s' referenced in expression\n" +msgstr "%F%S: daerah `%s' tidak terdefinisi direferensikan dalam ekspresi\n" + +#: ldexp.c:657 ldexp.c:670 +#, c-format +msgid "%F%S: undefined MEMORY region `%s' referenced in expression\n" +msgstr "%F%S: daerah `%s' MEMORY tidak terdefinisi direferensikan dalam ekspresi\n" + +#: ldexp.c:681 +#, c-format +msgid "%F%S: unknown constant `%s' referenced in expression\n" +msgstr "%F%S: konstan `%s' tidak diketahui direferensikan dalam ekspresi\n" + +#: ldexp.c:742 +#, c-format +msgid "%F%S can not PROVIDE assignment to location counter\n" +msgstr "%F%S tidak dapat MENYEDIAKAN assignment ke lokasi counter\n" + +#: ldexp.c:756 +#, c-format +msgid "%F%S invalid assignment to location counter\n" +msgstr "%F%S assignment tidak valid ke lokasi counter\n" + +#: ldexp.c:759 +#, c-format +msgid "%F%S assignment to location counter invalid outside of SECTION\n" +msgstr "%F%S assignment ke lokasi counter tidak valid diluar dari DAERAH\n" + +#: ldexp.c:768 +msgid "%F%S cannot move location counter backwards (from %V to %V)\n" +msgstr "%F%S tidak dapat memindahkan lokasi counter backward (dari %V ke %V)\n" + +#: ldexp.c:807 +msgid "%P%F:%s: hash creation failed\n" +msgstr "%P%F:%s: pembuatan hash gagal\n" + +#: ldexp.c:1066 ldexp.c:1091 ldexp.c:1150 +#, c-format +msgid "%F%S: nonconstant expression for %s\n" +msgstr "%F%S: ekspresi tidak konstan untuk %s\n" + +#: ldfile.c:137 +#, c-format +msgid "attempt to open %s failed\n" +msgstr "mencoba untuk membuka %s gagal\n" + +#: ldfile.c:139 +#, c-format +msgid "attempt to open %s succeeded\n" +msgstr "mencoba untuk membuka %s sukses\n" + +#: ldfile.c:145 +msgid "%F%P: invalid BFD target `%s'\n" +msgstr "%F%P: target BFD `%s' tidak valid\n" + +#: ldfile.c:254 ldfile.c:283 +msgid "%P: skipping incompatible %s when searching for %s\n" +msgstr "%P: melewatkan tidak kompatibel %s ketika mencari untuk %s\n" + +#: ldfile.c:267 +msgid "%F%P: attempted static link of dynamic object `%s'\n" +msgstr "%F%P: mencoba menhubungkan statik dari objek dinamis `%s'\n" + +#: ldfile.c:379 +msgid "%F%P: %s (%s): No such file: %E\n" +msgstr "%F%P: %s (%s): Tidak ada berkas seperti itu: %E\n" + +#: ldfile.c:382 +msgid "%F%P: %s: No such file: %E\n" +msgstr "%F%P: %s: Tidak ada berkas seperti itu: %E\n" + +#: ldfile.c:412 +msgid "%F%P: cannot find %s inside %s\n" +msgstr "%F%P: tidak dapat menemukan %s didalam %s\n" + +#: ldfile.c:415 +msgid "%F%P: cannot find %s\n" +msgstr "%F%P: tidak dapat menemukan %s\n" + +#: ldfile.c:431 ldfile.c:449 +#, c-format +msgid "cannot find script file %s\n" +msgstr "tidak dapat menemukan berkas script %s\n" + +#: ldfile.c:433 ldfile.c:451 +#, c-format +msgid "opened script file %s\n" +msgstr "membukan berkas script %s\n" + +#: ldfile.c:601 +msgid "%P%F: cannot open linker script file %s: %E\n" +msgstr "%P%F: tidak dapat membukan berkas script penghubung %s: %E\n" + +#: ldfile.c:648 +msgid "%P%F: cannot represent machine `%s'\n" +msgstr "%P%F: tidak dapat merepresent mesin `%s'\n" + +#: ldlang.c:1124 ldlang.c:1166 ldlang.c:2880 +msgid "%P%F: can not create hash table: %E\n" +msgstr "%P%F: tidak dapat membuat tabel hash: %E\n" + +#: ldlang.c:1209 +msgid "%P:%S: warning: redeclaration of memory region '%s'\n" +msgstr "%P:%S: peringatan: redeklarasi dari daerah memori '%s'\n" + +#: ldlang.c:1215 +msgid "%P:%S: warning: memory region %s not declared\n" +msgstr "%P:%S: peringatan: daerah memori %s tidak dideklarasikan\n" + +#: ldlang.c:1270 ldlang.c:1305 +msgid "%P%F: failed creating section `%s': %E\n" +msgstr "%P%F: gagal membuat daerah `%s': %E\n" + +#: ldlang.c:1799 +#, c-format +msgid "" +"\n" +"Discarded input sections\n" +"\n" +msgstr "" +"\n" +"Daerah masukan diabaikan\n" +"\n" + +#: ldlang.c:1807 +msgid "" +"\n" +"Memory Configuration\n" +"\n" +msgstr "" +"\n" +"Konfigurasi memori\n" +"\n" + +#: ldlang.c:1809 +msgid "Name" +msgstr "Nama" + +#: ldlang.c:1809 +msgid "Origin" +msgstr "Asal" + +#: ldlang.c:1809 +msgid "Length" +msgstr "Panjang" + +#: ldlang.c:1809 +msgid "Attributes" +msgstr "Atribut" + +#: ldlang.c:1849 +#, c-format +msgid "" +"\n" +"Linker script and memory map\n" +"\n" +msgstr "" +"\n" +"Scrip penghubung dan peta memori\n" +"\n" + +#: ldlang.c:1915 +msgid "%P%F: Illegal use of `%s' section\n" +msgstr "%P%F: Penggunaan ilegal dari daerah `%s'\n" + +#: ldlang.c:1923 +msgid "%P%F: output format %s cannot represent section called %s\n" +msgstr "%P%F: format keluaran %s tidak dapat merepresentasikan daerah disebut %s\n" + +#: ldlang.c:2473 +msgid "%B: file not recognized: %E\n" +msgstr "%B: berkas tidak dikenali: %E\n" + +#: ldlang.c:2474 +msgid "%B: matching formats:" +msgstr "%B: format cocok:" + +#: ldlang.c:2481 +msgid "%F%B: file not recognized: %E\n" +msgstr "%F%B: berkas tidak dikenali: %E\n" + +#: ldlang.c:2551 +msgid "%F%B: member %B in archive is not an object\n" +msgstr "%F%B: anggota %B dalam archive bukan sebuah objek\n" + +#: ldlang.c:2562 ldlang.c:2576 +msgid "%F%B: could not read symbols: %E\n" +msgstr "%F%B: tidak dapat membaca simbol: %E\n" + +#: ldlang.c:2850 +msgid "%P: warning: could not find any targets that match endianness requirement\n" +msgstr "%P: peringatan: tidak dapat menemukan target apapun yan cocok dengan endianness yang dibutuhkan\n" + +#: ldlang.c:2864 +msgid "%P%F: target %s not found\n" +msgstr "%P%F: target %s tidak ditemukan\n" + +#: ldlang.c:2866 +msgid "%P%F: cannot open output file %s: %E\n" +msgstr "%P%F: tidak dapat membuka berkas keluaran %s: %E\n" + +#: ldlang.c:2872 +msgid "%P%F:%s: can not make object file: %E\n" +msgstr "%P%F:%s: tidak dapat membuat berkas objek: %E\n" + +#: ldlang.c:2876 +msgid "%P%F:%s: can not set architecture: %E\n" +msgstr "%P%F:%s: tidak dapat menset arsitektur: %E\n" + +#: ldlang.c:3024 +msgid "%P%F: bfd_hash_lookup failed creating symbol %s\n" +msgstr "%P%F: bfd_hash_lookup gagal membuat simbol %s\n" + +#: ldlang.c:3042 +msgid "%P%F: bfd_hash_allocate failed creating symbol %s\n" +msgstr "%P%F: bfd_hash_allocate gagal membuat simbol %s\n" + +#: ldlang.c:3418 +msgid "%F%P: %s not found for insert\n" +msgstr "%F%P: %s tidak ditemukan untuk insert\n" + +#: ldlang.c:3633 +msgid " load address 0x%V" +msgstr " alamat beban 0x%V" + +#: ldlang.c:3873 +msgid "%W (size before relaxing)\n" +msgstr "%W (ukuran sebelum relaxing)\n" + +#: ldlang.c:3964 +#, c-format +msgid "Address of section %s set to " +msgstr "Alamat dari daerah %s diset ke " + +#: ldlang.c:4117 +#, c-format +msgid "Fail with %d\n" +msgstr "Gagal dengan %d\n" + +#: ldlang.c:4397 +msgid "%X%P: section %s [%V -> %V] overlaps section %s [%V -> %V]\n" +msgstr "%X%P: daerah %s [%V -> %V] daerah overlaps %s [%V -> %V]\n" + +#: ldlang.c:4413 +msgid "%X%P: region %s overflowed by %ld bytes\n" +msgstr "%X%P: daerah %s overflowed dengan %ld bytes\n" + +#: ldlang.c:4436 +msgid "%X%P: address 0x%v of %B section %s is not within region %s\n" +msgstr "%X%P: alamat 0x%v dari %B daerah %s tidak dalam daerah %s\n" + +#: ldlang.c:4447 +msgid "%X%P: %B section %s will not fit in region %s\n" +msgstr "%X%P: %B daerah %s tidak akan memenuhi dalam daerah %s\n" + +#: ldlang.c:4487 +#, c-format +msgid "%F%S: non constant or forward reference address expression for section %s\n" +msgstr "%F%S: bukan constant atau ekspresi alamat referensi kedepan untuk daerah %s\n" + +#: ldlang.c:4512 +msgid "%P%X: Internal error on COFF shared library section %s\n" +msgstr "%P%X: Internal error di COFF daerah library terbagi %s\n" + +#: ldlang.c:4571 +msgid "%P%F: error: no memory region specified for loadable section `%s'\n" +msgstr "%P%F: error: bukan daerah memori dispesifikasikan untuk daerah loadabel `%s'\n" + +#: ldlang.c:4576 +msgid "%P: warning: no memory region specified for loadable section `%s'\n" +msgstr "%P: peringatan: bukan daerah memori dispesifikasikan untuk daerah loadable `%s'\n" + +#: ldlang.c:4598 +msgid "%P: warning: changing start of section %s by %lu bytes\n" +msgstr "%P: peringatan: mengubah awal dari daerah %s dengan %lu bytes\n" + +#: ldlang.c:4675 +msgid "%P: warning: dot moved backwards before `%s'\n" +msgstr "%P: peringatan: dot dipindahkan kebelakang sebelum `%s'\n" + +#: ldlang.c:4848 +msgid "%P%F: can't relax section: %E\n" +msgstr "%P%F: tidak dapat relaks daerah: %E\n" + +#: ldlang.c:5170 +msgid "%F%P: invalid data statement\n" +msgstr "%F%P: statemen data tidak valid\n" + +#: ldlang.c:5203 +msgid "%F%P: invalid reloc statement\n" +msgstr "%F%P: relokasi statement tidak valid\n" + +#: ldlang.c:5322 +msgid "%P%F: gc-sections requires either an entry or an undefined symbol\n" +msgstr "%P%F: gc-section membutuhkan baik sebuah masukan atau sebuah simbol tidak terdefinisi\n" + +#: ldlang.c:5347 +msgid "%P%F:%s: can't set start address\n" +msgstr "%P%F:%s: tidak dapat menset awal alamat\n" + +#: ldlang.c:5360 ldlang.c:5379 +msgid "%P%F: can't set start address\n" +msgstr "%P%F: tidak dapt menset awal alamat\n" + +#: ldlang.c:5372 +msgid "%P: warning: cannot find entry symbol %s; defaulting to %V\n" +msgstr "%P: peringatan: tidak dapat menemukan simbol masukan %s; default ke %V\n" + +#: ldlang.c:5384 +msgid "%P: warning: cannot find entry symbol %s; not setting start address\n" +msgstr "%P: peringatan: tidak dapat menemukan simbol masukan %s; tidak menset awal alamat\n" + +#: ldlang.c:5434 +msgid "%P%F: Relocatable linking with relocations from format %s (%B) to format %s (%B) is not supported\n" +msgstr "%P%F: Relocatable linking dengan relokasi dari format %s (%B) ke format %s (%B) tidak didukung\n" + +#: ldlang.c:5444 +msgid "%P%X: %s architecture of input file `%B' is incompatible with %s output\n" +msgstr "%P%X: %s arsitektur dari berkas masukan `%b' tidak kompatibel dengan keluaran %s\n" + +#: ldlang.c:5466 +msgid "%P%X: failed to merge target specific data of file %B\n" +msgstr "%P%X: gagal menggabungkan target spesifik data dari berkas %B\n" + +#: ldlang.c:5567 +msgid "" +"\n" +"Allocating common symbols\n" +msgstr "" +"\n" +"Mengalokasikan simbol umum\n" + +#: ldlang.c:5568 +msgid "" +"Common symbol size file\n" +"\n" +msgstr "" +"Simbol umum ukuran berkas\n" +"\n" + +#: ldlang.c:5701 +msgid "%P%F: invalid syntax in flags\n" +msgstr "%P%F: sintaks dalam tanda tidak valid\n" + +#: ldlang.c:6069 +msgid "%P%F: Failed to create hash table\n" +msgstr "%P%F: Gagal membuat tabel hash\n" + +#: ldlang.c:6370 +msgid "%P%F: multiple STARTUP files\n" +msgstr "%P%F: multiple berkas STARTUP\n" + +#: ldlang.c:6418 +msgid "%X%P:%S: section has both a load address and a load region\n" +msgstr "%X%P:%S: bagian memiliki baik alamat beban dan daerah beban\n" + +#: ldlang.c:6652 +msgid "%F%P: no sections assigned to phdrs\n" +msgstr "%F%P: tidak ada daerah ditempatkan ke phdrs\n" + +#: ldlang.c:6689 +msgid "%F%P: bfd_record_phdr failed: %E\n" +msgstr "%F%P: bfd_record_phdr gagal: %E\n" + +#: ldlang.c:6709 +msgid "%X%P: section `%s' assigned to non-existent phdr `%s'\n" +msgstr "%X%P: daerah `%s' ditempatkan ke phdr `%s' tidak-ada\n" + +#: ldlang.c:7100 +msgid "%X%P: unknown language `%s' in version information\n" +msgstr "%X%P: bahasa tidak diketahui `%s' dalam informasi versi\n" + +#: ldlang.c:7242 +msgid "%X%P: anonymous version tag cannot be combined with other version tags\n" +msgstr "%X%P: versi anonim tag tidak dapat dikombinasikan dengan versi lainnya\n" + +#: ldlang.c:7251 +msgid "%X%P: duplicate version tag `%s'\n" +msgstr "%X%P: duplikasi versi tag `%s'\n" + +#: ldlang.c:7271 ldlang.c:7280 ldlang.c:7297 ldlang.c:7307 +msgid "%X%P: duplicate expression `%s' in version information\n" +msgstr "%X%P: duplikasi ekspresi `%s' dalam informasi versi\n" + +#: ldlang.c:7347 +msgid "%X%P: unable to find version dependency `%s'\n" +msgstr "%X%P: tidak dapat menemukan dependensi versi `%s'\n" + +#: ldlang.c:7369 +msgid "%X%P: unable to read .exports section contents\n" +msgstr "%X%P: tidak dapat membaca isi daerah .exports\n" + +#: ldmain.c:233 +msgid "%X%P: can't set BFD default target to `%s': %E\n" +msgstr "%X%P: tidak dapat menset BFD default target ke `%s': %E\n" + +#: ldmain.c:296 +msgid "%P%F: --relax and -r may not be used together\n" +msgstr "%P%F: --relax dan -r tidak boleh digunakan bersama\n" + +#: ldmain.c:298 +msgid "%P%F: -r and -shared may not be used together\n" +msgstr "%P%F: -r dan -shared tidak boleh digunakan bersama\n" + +#: ldmain.c:341 +msgid "%P%F: -F may not be used without -shared\n" +msgstr "%P%F: -F tidak boleh digunakan tanpa -shared\n" + +#: ldmain.c:343 +msgid "%P%F: -f may not be used without -shared\n" +msgstr "%P%F: -f tidak boleh digunakan tanpa -shared\n" + +#: ldmain.c:391 +msgid "using external linker script:" +msgstr "menggunakan scrip penghubung eksternal:" + +#: ldmain.c:393 +msgid "using internal linker script:" +msgstr "menggunakan scrip penghubung internal:" + +#: ldmain.c:427 +msgid "%P%F: no input files\n" +msgstr "%P%F: bukan berkas masukan\n" + +#: ldmain.c:431 +msgid "%P: mode %s\n" +msgstr "%P: mode %s\n" + +#: ldmain.c:447 +msgid "%P%F: cannot open map file %s: %E\n" +msgstr "%P%F: tidak dapat membuka berkas map %s: %E\n" + +#: ldmain.c:479 +msgid "%P: link errors found, deleting executable `%s'\n" +msgstr "%P: link error ditemukan, menghapus executabel `%s'\n" + +#: ldmain.c:488 +msgid "%F%B: final close failed: %E\n" +msgstr "%F%B: penutupan akhir gagal: %E\n" + +#: ldmain.c:514 +msgid "%X%P: unable to open for source of copy `%s'\n" +msgstr "%X%P: tidak dapat membuka untuk sumber dari penyalinan `%s'\n" + +#: ldmain.c:517 +msgid "%X%P: unable to open for destination of copy `%s'\n" +msgstr "%X%P: tidak dapat membuka untuk tujuan dari penyalinan `%s'\n" + +#: ldmain.c:524 +msgid "%P: Error writing file `%s'\n" +msgstr "%P: Error menulis berkas `%s'\n" + +#: ldmain.c:529 pe-dll.c:1613 +#, c-format +msgid "%P: Error closing file `%s'\n" +msgstr "%P: Error menutup berkas `%s'\n" + +#: ldmain.c:545 +#, c-format +msgid "%s: total time in link: %ld.%06ld\n" +msgstr "%s: total waktu dalam link: %ld.%06ld\n" + +#: ldmain.c:548 +#, c-format +msgid "%s: data size %ld\n" +msgstr "%s: ukuran data %ld\n" + +#: ldmain.c:631 +msgid "%P%F: missing argument to -m\n" +msgstr "%P%F: hilang argumen ke -m\n" + +#: ldmain.c:678 ldmain.c:697 ldmain.c:728 +msgid "%P%F: bfd_hash_table_init failed: %E\n" +msgstr "%P%F: bfd_hash_table_init gagal: %E\n" + +#: ldmain.c:682 ldmain.c:701 +msgid "%P%F: bfd_hash_lookup failed: %E\n" +msgstr "%P%F: bfd_hash_lookup gagal: %E\n" + +#: ldmain.c:715 +msgid "%X%P: error: duplicate retain-symbols-file\n" +msgstr "%X%P: error: duplikasi retain-symbols-file\n" + +#: ldmain.c:758 +msgid "%P%F: bfd_hash_lookup for insertion failed: %E\n" +msgstr "%P%F: bfd_hash_lookup untuk insertion gagal: %E\n" + +#: ldmain.c:763 +msgid "%P: `-retain-symbols-file' overrides `-s' and `-S'\n" +msgstr "%P: `-retain-symbols-file' memaksa `-s' dana `-S'\n" + +#: ldmain.c:827 +#, c-format +msgid "" +"Archive member included because of file (symbol)\n" +"\n" +msgstr "" +"Anggota archive dimasukan karena berkas (simbol)\n" +"\n" + +#: ldmain.c:897 +msgid "%X%C: multiple definition of `%T'\n" +msgstr "%X%X: multiple definisi dari `%T'\n" + +#: ldmain.c:900 +msgid "%D: first defined here\n" +msgstr "%D: pertama didefinisikan disini\n" + +#: ldmain.c:904 +msgid "%P: Disabling relaxation: it will not work with multiple definitions\n" +msgstr "%P: Menonaktifkan relaksasi: ini tidak akan bekerja dengan multiple definisi\n" + +#: ldmain.c:934 +msgid "%B: warning: definition of `%T' overriding common\n" +msgstr "%B: peringatan: definisi dari `%T' memaksa umum\n" + +#: ldmain.c:937 +msgid "%B: warning: common is here\n" +msgstr "%B: peringatan: umum disini\n" + +#: ldmain.c:944 +msgid "%B: warning: common of `%T' overridden by definition\n" +msgstr "%B: peringatan: umum dari `%T' dipaksa oleh definisi\n" + +#: ldmain.c:947 +msgid "%B: warning: defined here\n" +msgstr "%B: peringatan: terdefinisi disini\n" + +#: ldmain.c:954 +msgid "%B: warning: common of `%T' overridden by larger common\n" +msgstr "%B: peringatan: umum dari `%T' dipaksa oleh umum lebih besar\n" + +#: ldmain.c:957 +msgid "%B: warning: larger common is here\n" +msgstr "%B: peringatan: umum lebih besar disini\n" + +#: ldmain.c:961 +msgid "%B: warning: common of `%T' overriding smaller common\n" +msgstr "%B: peringatan: umum dari `%T' memaksa umum lebih kecil\n" + +#: ldmain.c:964 +msgid "%B: warning: smaller common is here\n" +msgstr "%B: peringatan: umum lebih kecil disini\n" + +#: ldmain.c:968 +msgid "%B: warning: multiple common of `%T'\n" +msgstr "%B: peringatan: multiple umum dari `%T'\n" + +#: ldmain.c:970 +msgid "%B: warning: previous common is here\n" +msgstr "%B: peringatan: umum sebelumnya disini\n" + +#: ldmain.c:990 ldmain.c:1028 +msgid "%P: warning: global constructor %s used\n" +msgstr "%P: peringatan: global konstruktor %s digunakan\n" + +#: ldmain.c:1038 +msgid "%P%F: BFD backend error: BFD_RELOC_CTOR unsupported\n" +msgstr "%P%F: BFD backed error: BFD_RELOC_CTOR tidak didukung\n" + +#. We found a reloc for the symbol we are looking for. +#: ldmain.c:1092 ldmain.c:1094 ldmain.c:1096 ldmain.c:1114 ldmain.c:1159 +msgid "warning: " +msgstr "peringatan: " + +#: ldmain.c:1194 +msgid "%F%P: bfd_hash_table_init failed: %E\n" +msgstr "%F%P: bfd_hash_table_init gagal: %E\n" + +#: ldmain.c:1201 +msgid "%F%P: bfd_hash_lookup failed: %E\n" +msgstr "%F%P: bfd_hash_lookup gagal: %E\n" + +#: ldmain.c:1222 +msgid "%X%C: undefined reference to `%T'\n" +msgstr "%X%C: referensi ke `%T' tidak terdefinisi\n" + +#: ldmain.c:1225 +msgid "%C: warning: undefined reference to `%T'\n" +msgstr "%C: peringatan: referensi ke `%T' tidak terdefinisi\n" + +#: ldmain.c:1231 +msgid "%X%D: more undefined references to `%T' follow\n" +msgstr "%X%D: lebih referensi ke `%T' tidak terdefinisi mengikuti\n" + +#: ldmain.c:1234 +msgid "%D: warning: more undefined references to `%T' follow\n" +msgstr "%D: peringatan: lebih referensi ke `%T' tidak terdefinisi mengikuti\n" + +#: ldmain.c:1245 +msgid "%X%B: undefined reference to `%T'\n" +msgstr "%X%B: referensi ke `%T' tidak terdefinisi\n" + +#: ldmain.c:1248 +msgid "%B: warning: undefined reference to `%T'\n" +msgstr "%B: peringatan: referensi ke `%T' tidak terdefinisi\n" + +#: ldmain.c:1254 +msgid "%X%B: more undefined references to `%T' follow\n" +msgstr "%X%B: lebih referensi ke `%T' tidak terdefinisi mengikuti\n" + +#: ldmain.c:1257 +msgid "%B: warning: more undefined references to `%T' follow\n" +msgstr "%B: peringatan: lebih referensi ke `%T' tidak terdefinisi mengikuti\n" + +#: ldmain.c:1296 +msgid " additional relocation overflows omitted from the output\n" +msgstr " tambahan relokasi overflow diabaikan dari keluaran\n" + +#: ldmain.c:1309 +msgid " relocation truncated to fit: %s against undefined symbol `%T'" +msgstr " relokasi dipotong supaya pas: %s terhadap simbol `%T' tidak terdefinisi" + +#: ldmain.c:1314 +msgid " relocation truncated to fit: %s against symbol `%T' defined in %A section in %B" +msgstr " relokasi dipotong supaya pas: %s terhadap simbol `%T' terdefinisi dalam daerah %A dalam %B" + +#: ldmain.c:1326 +msgid " relocation truncated to fit: %s against `%T'" +msgstr " relokasi dipotong supaya pas: %s terhadap `%T'" + +#: ldmain.c:1343 +#, c-format +msgid "%X%C: dangerous relocation: %s\n" +msgstr "%X%C: relokasi berbahaya: %s\n" + +#: ldmain.c:1358 +msgid "%X%C: reloc refers to symbol `%T' which is not being output\n" +msgstr "%X%C: relokasi mereferensikan ke simbol `%T' dimana tidak dikeluarkan\n" + +#: ldmisc.c:148 +#, c-format +msgid "no symbol" +msgstr "bukan simbol" + +#: ldmisc.c:245 +#, c-format +msgid "built in linker script:%u" +msgstr "scrip penghubung built-in: %u" + +#: ldmisc.c:323 +msgid "%B: In function `%T':\n" +msgstr "%B: Dalam fungsi `%T':\n" + +#: ldmisc.c:445 +msgid "%F%P: internal error %s %d\n" +msgstr "%F%P: internal error %s %d\n" + +#: ldmisc.c:494 +msgid "%P: internal error: aborting at %s line %d in %s\n" +msgstr "%P: internal error: membatalkan di %s baris %d dalam %s\n" + +#: ldmisc.c:497 +msgid "%P: internal error: aborting at %s line %d\n" +msgstr "%P: internal error: membatalkan di %s baris %d\n" + +#: ldmisc.c:499 +msgid "%P%F: please report this bug\n" +msgstr "%P%F: tolong laporkan bug ini\n" + +#. Output for noisy == 2 is intended to follow the GNU standards. +#: ldver.c:38 +#, c-format +msgid "GNU ld %s\n" +msgstr "GNU ld %s\n" + +#: ldver.c:42 +#, c-format +msgid "Copyright 2007 Free Software Foundation, Inc.\n" +msgstr "Hak cipta 2007 Free Software Foundation, Inc.\n" + +#: ldver.c:43 +#, c-format +msgid "" +"This program is free software; you may redistribute it under the terms of\n" +"the GNU General Public License version 3 or (at your option) a later version.\n" +"This program has absolutely no warranty.\n" +msgstr "" +"Aplikasi ini adalah aplikasi bebas; anda boleh mendistribusikannya dibawah ketentuan dari\n" +"Lisensi Umum Publik GNU versi 3 atau (menurut pendapat anda) untuk versi selanjutnya.\n" +"Aplikasi ini tidak memiliki garansi apapun.\n" + +#: ldver.c:53 +#, c-format +msgid " Supported emulations:\n" +msgstr " Emulasi yang didukung:\n" + +#: ldwrite.c:56 ldwrite.c:196 +msgid "%P%F: bfd_new_link_order failed\n" +msgstr "%P%F: bfd_new_link_order gagal\n" + +#: ldwrite.c:354 +msgid "%F%P: cannot create split section name for %s\n" +msgstr "%F%P: tidak dapat membuat nama daerah split untuk %s\n" + +#: ldwrite.c:366 +msgid "%F%P: clone section failed: %E\n" +msgstr "%F%P: penyalinan daerah gagal: %E\n" + +#: ldwrite.c:404 +#, c-format +msgid "%8x something else\n" +msgstr "%8x sesuatu yang lain\n" + +#: ldwrite.c:574 +msgid "%F%P: final link failed: %E\n" +msgstr "%F%P: final link gagal: %E\n" + +#: lexsup.c:206 lexsup.c:344 +msgid "KEYWORD" +msgstr "KATA-KUNCI" + +#: lexsup.c:206 +msgid "Shared library control for HP/UX compatibility" +msgstr "Perpustakaan terbagi kontrol untuk kompatibilitas HP/UX" + +#: lexsup.c:209 +msgid "ARCH" +msgstr "ARS" + +#: lexsup.c:209 +msgid "Set architecture" +msgstr "Set arsitektur" + +#: lexsup.c:211 lexsup.c:454 +msgid "TARGET" +msgstr "TARGET" + +#: lexsup.c:211 +msgid "Specify target for following input files" +msgstr "Spesifikasikan target untuk berkas masukan berikut" + +#: lexsup.c:214 lexsup.c:263 lexsup.c:275 lexsup.c:288 lexsup.c:290 +#: lexsup.c:408 lexsup.c:466 lexsup.c:526 lexsup.c:539 +msgid "FILE" +msgstr "BERKAS" + +#: lexsup.c:214 +msgid "Read MRI format linker script" +msgstr "Baca format MRI scrip penghubung" + +#: lexsup.c:216 +msgid "Force common symbols to be defined" +msgstr "Paksa simbol umum untuk didefinisikan" + +#: lexsup.c:220 lexsup.c:510 lexsup.c:512 lexsup.c:514 +msgid "ADDRESS" +msgstr "ALAMAT" + +#: lexsup.c:220 +msgid "Set start address" +msgstr "Set awal alamat" + +#: lexsup.c:222 +msgid "Export all dynamic symbols" +msgstr "Expor seluruh simbol dinamis" + +#: lexsup.c:224 +msgid "Link big-endian objects" +msgstr "Hubungkan objek big-endian" + +#: lexsup.c:226 +msgid "Link little-endian objects" +msgstr "Hubungkan objek little-endian" + +#: lexsup.c:228 lexsup.c:231 +msgid "SHLIB" +msgstr "SHLIB" + +#: lexsup.c:228 +msgid "Auxiliary filter for shared object symbol table" +msgstr "Tambahan filter untuk simbol tabel objek terbagi" + +#: lexsup.c:231 +msgid "Filter for shared object symbol table" +msgstr "Filter untuk simbol tabel objek terbagi" + +#: lexsup.c:234 +msgid "Ignored" +msgstr "Diabaikan" + +#: lexsup.c:236 +msgid "SIZE" +msgstr "UKURAN" + +#: lexsup.c:236 +msgid "Small data size (if no size, same as --shared)" +msgstr "Ukuran data kecil (jika tidak ada ukuran, sama dengan --shared)" + +#: lexsup.c:239 +msgid "FILENAME" +msgstr "NAMA-BERKAS" + +#: lexsup.c:239 +msgid "Set internal name of shared library" +msgstr "Set nama internal dari perpustakaan terbagi" + +#: lexsup.c:241 +msgid "PROGRAM" +msgstr "APLIKASI" + +#: lexsup.c:241 +msgid "Set PROGRAM as the dynamic linker to use" +msgstr "Set APLIKASI sebagai penghubung dinamis yang akan digunakan" + +#: lexsup.c:244 +msgid "LIBNAME" +msgstr "NAMA-LIB" + +#: lexsup.c:244 +msgid "Search for library LIBNAME" +msgstr "Cari untuk perpustakaan NAMA-LIB" + +#: lexsup.c:246 +msgid "DIRECTORY" +msgstr "DIREKTORI" + +#: lexsup.c:246 +msgid "Add DIRECTORY to library search path" +msgstr "Tambahkan DIREKTORI ke jalur pencarian perpustakaan" + +#: lexsup.c:249 +msgid "Override the default sysroot location" +msgstr "Paksa lokasi default sysroot" + +#: lexsup.c:251 +msgid "EMULATION" +msgstr "EMULASI" + +#: lexsup.c:251 +msgid "Set emulation" +msgstr "Set emulasi" + +#: lexsup.c:253 +msgid "Print map file on standard output" +msgstr "Tampilkan peta berkas di standar keluaran" + +#: lexsup.c:255 +msgid "Do not page align data" +msgstr "Jangan page align data" + +#: lexsup.c:257 +msgid "Do not page align data, do not make text readonly" +msgstr "Jangan page align data, jangan buat text baca-saja" + +#: lexsup.c:260 +msgid "Page align data, make text readonly" +msgstr "Page align data, buat text baca-saja" + +#: lexsup.c:263 +msgid "Set output file name" +msgstr "Set keluaran nama berkas" + +#: lexsup.c:265 +msgid "Optimize output file" +msgstr "Optimisasi berkas keluaran" + +#: lexsup.c:267 +msgid "Ignored for SVR4 compatibility" +msgstr "Abaikan untuk kompabilitas SVR4" + +#: lexsup.c:271 +msgid "Generate relocatable output" +msgstr "Buat keluaran yang dapat direlokasikan" + +#: lexsup.c:275 +msgid "Just link symbols (if directory, same as --rpath)" +msgstr "Hubungkan saja simbol (jika direktori, sama dengan --rpath)" + +#: lexsup.c:278 +msgid "Strip all symbols" +msgstr "Strip seluruh simbol" + +#: lexsup.c:280 +msgid "Strip debugging symbols" +msgstr "Strip debugging simbol" + +#: lexsup.c:282 +msgid "Strip symbols in discarded sections" +msgstr "Strip simbol dalam daerah yang diabaikan" + +#: lexsup.c:284 +msgid "Do not strip symbols in discarded sections" +msgstr "Jangan strip simbol dalam daerah yang diabaikan" + +#: lexsup.c:286 +msgid "Trace file opens" +msgstr "Telusuri berkas terbuka" + +#: lexsup.c:288 +msgid "Read linker script" +msgstr "Baca scrip penghubung" + +#: lexsup.c:290 +msgid "Read default linker script" +msgstr "Baca default scrip penghubung" + +#: lexsup.c:294 lexsup.c:312 lexsup.c:385 lexsup.c:406 lexsup.c:503 +#: lexsup.c:529 lexsup.c:565 +msgid "SYMBOL" +msgstr "SIMBOL" + +#: lexsup.c:294 +msgid "Start with undefined reference to SYMBOL" +msgstr "Awali dengan referensi ke SIMBOL tidak terdefinisi" + +#: lexsup.c:297 +msgid "[=SECTION]" +msgstr "[=DAERAH]" + +#: lexsup.c:298 +msgid "Don't merge input [SECTION | orphan] sections" +msgstr "Jangan gabungkan masukan [DAERAH | orphan] daerah" + +#: lexsup.c:300 +msgid "Build global constructor/destructor tables" +msgstr "Buat tabel global konstruktor/desktruktor" + +#: lexsup.c:302 +msgid "Print version information" +msgstr "Tampilkan informasi versi" + +#: lexsup.c:304 +msgid "Print version and emulation information" +msgstr "Tampilkan versi dan informasi emulasi" + +#: lexsup.c:306 +msgid "Discard all local symbols" +msgstr "Abaikan seluruh simbol lokal" + +#: lexsup.c:308 +msgid "Discard temporary local symbols (default)" +msgstr "Abaikan simbol lokal sementara (baku)" + +#: lexsup.c:310 +msgid "Don't discard any local symbols" +msgstr "Jangan abaikan simbol lokal apapun" + +#: lexsup.c:312 +msgid "Trace mentions of SYMBOL" +msgstr "Telusuri SIMBOL yang disebutkan" + +#: lexsup.c:314 lexsup.c:468 lexsup.c:470 +msgid "PATH" +msgstr "JALUR" + +#: lexsup.c:314 +msgid "Default search path for Solaris compatibility" +msgstr "Jalur pencarian baku untuk kompabilitas Solaris" + +#: lexsup.c:317 +msgid "Start a group" +msgstr "Awal dari grup" + +#: lexsup.c:319 +msgid "End a group" +msgstr "Akhir dari grup" + +#: lexsup.c:323 +msgid "Accept input files whose architecture cannot be determined" +msgstr "Terima berkas masukan dimana arsitektur tidak dapat ditentukan" + +#: lexsup.c:327 +msgid "Reject input files whose architecture is unknown" +msgstr "Tolak berkas masukan dimana arsitektur tidak dikenal" + +#: lexsup.c:330 +msgid "" +"Set DT_NEEDED tags for DT_NEEDED entries in\n" +" following dynamic libs" +msgstr "" +"Set DT_NEEDED tags untuk DT_NEEDED masukan dalam\n" +" mengikuti libs dinamis berikut" + +#: lexsup.c:334 +msgid "" +"Do not set DT_NEEDED tags for DT_NEEDED entries\n" +" in following dynamic libs" +msgstr "" +"Jangan menset DT_NEEDED tags untuk masukan DT_NEEDED\n" +" dalam libs dinamis berikut" + +#: lexsup.c:338 +msgid "Only set DT_NEEDED for following dynamic libs if used" +msgstr "Hanya set DT_NEEDED untuk dinamis libs berikut jika digunakan" + +#: lexsup.c:341 +msgid "Always set DT_NEEDED for following dynamic libs" +msgstr "Selalu menset DT_NEEDED untuk dinamis libs berikut" + +#: lexsup.c:344 +msgid "Ignored for SunOS compatibility" +msgstr "Abaikan untuk kompabilitas SunOS" + +#: lexsup.c:346 +msgid "Link against shared libraries" +msgstr "Hubungkan terhadap library terbagi" + +#: lexsup.c:352 +msgid "Do not link against shared libraries" +msgstr "Jangan hubungkan terhadap perpustakaan terbagi" + +#: lexsup.c:360 +msgid "Bind global references locally" +msgstr "Ikat referensi global secara lokal" + +#: lexsup.c:362 +msgid "Bind global function references locally" +msgstr "Ikat referensi fungsi global secara lokal" + +#: lexsup.c:364 +msgid "Check section addresses for overlaps (default)" +msgstr "Periksa daerah alamat untuk tumpang-tindih (baku)" + +#: lexsup.c:367 +msgid "Do not check section addresses for overlaps" +msgstr "Jangan periksa daerah alamat untuk tumpang-tindih" + +#: lexsup.c:370 +msgid "Output cross reference table" +msgstr "Keluarkan tabel referensi silang" + +#: lexsup.c:372 +msgid "SYMBOL=EXPRESSION" +msgstr "SIMBOL=EKSPRESI" + +#: lexsup.c:372 +msgid "Define a symbol" +msgstr "Definisikan sebuah simbol" + +#: lexsup.c:374 +msgid "[=STYLE]" +msgstr "[=GAYA]" + +#: lexsup.c:374 +msgid "Demangle symbol names [using STYLE]" +msgstr "Demangle nama simbol [gunakan GAYA]" + +#: lexsup.c:377 +msgid "Generate embedded relocs" +msgstr "Buat embedded relokasi" + +#: lexsup.c:379 +msgid "Treat warnings as errors" +msgstr "Perlakukan peringatan sebagai error" + +#: lexsup.c:382 +msgid "Do not treat warnings as errors (default)" +msgstr "Jangan perlakukan peringatan sebagai error (baku)" + +#: lexsup.c:385 +msgid "Call SYMBOL at unload-time" +msgstr "Panggil SIMBOL di unload-time" + +#: lexsup.c:387 +msgid "Force generation of file with .exe suffix" +msgstr "Paksa pembuatan dari berkas dengan akhiran .exe" + +#: lexsup.c:389 +msgid "Remove unused sections (on some targets)" +msgstr "Hapus daerah yang tidak digunakan (di beberapa target)" + +#: lexsup.c:392 +msgid "Don't remove unused sections (default)" +msgstr "Jangan hapus daerah yang tidak digunakan (baku)" + +#: lexsup.c:395 +msgid "List removed unused sections on stderr" +msgstr "Tampilkan daerah tidak digunakan yang dihapus di stderr" + +#: lexsup.c:398 +msgid "Do not list removed unused sections" +msgstr "Jangan tampilkan daerah tidak digunakan yang dihapus" + +#: lexsup.c:401 +msgid "Set default hash table size close to <NUMBER>" +msgstr "Set ukuran default tabel hash mendekati ke <NOMOR>" + +#: lexsup.c:404 +msgid "Print option help" +msgstr "Tampilkan opsi bantuan" + +#: lexsup.c:406 +msgid "Call SYMBOL at load-time" +msgstr "Panggil SIMBOL di load-time" + +#: lexsup.c:408 +msgid "Write a map file" +msgstr "Tulis sebuah berkas peta" + +#: lexsup.c:410 +msgid "Do not define Common storage" +msgstr "Jangan definisikan penyimpanan umum" + +#: lexsup.c:412 +msgid "Do not demangle symbol names" +msgstr "Jangan demangle nama simbol" + +#: lexsup.c:414 +msgid "Use less memory and more disk I/O" +msgstr "Gunakan sedikit memori dan lebih disk I/O" + +#: lexsup.c:416 +msgid "Do not allow unresolved references in object files" +msgstr "Jangan perbolehkan referensi tidak terselesaikan dalam berkas objek" + +#: lexsup.c:419 +msgid "Allow unresolved references in shared libaries" +msgstr "Ijinkan referensi tidak terselesaikan dalam perpustakaan terbagi" + +#: lexsup.c:423 +msgid "Do not allow unresolved references in shared libs" +msgstr "Jangan ijinkan referensi tidak terselesaikan dalam perpustakaan terbagi" + +#: lexsup.c:427 +msgid "Allow multiple definitions" +msgstr "Ijinkan multiple definisi" + +#: lexsup.c:429 +msgid "Disallow undefined version" +msgstr "Larang versi tidak terdefinisi" + +#: lexsup.c:431 +msgid "Create default symbol version" +msgstr "Buat default versi simbol" + +#: lexsup.c:434 +msgid "Create default symbol version for imported symbols" +msgstr "Buat default versi simbol untuk simbol yang diimpor" + +#: lexsup.c:437 +msgid "Don't warn about mismatched input files" +msgstr "Jangan peringatkan mengenai ketidakcocokan dalam berkas masukan" + +#: lexsup.c:440 +msgid "Don't warn on finding an incompatible library" +msgstr "Jangan peringatkan dalam pencarian perpustakaan tidak kompatibel" + +#: lexsup.c:443 +msgid "Turn off --whole-archive" +msgstr "Tidak aktifkan --whole-archive" + +#: lexsup.c:445 +msgid "Create an output file even if errors occur" +msgstr "Buat sebuah berkas keluaran walaupun error terjadi" + +#: lexsup.c:450 +msgid "" +"Only use library directories specified on\n" +" the command line" +msgstr "" +"Hanya gunakan direktori perpustakaan yang dispesifikasikan dalam\n" +" baris perintah" + +#: lexsup.c:454 +msgid "Specify target of output file" +msgstr "Spesifikasikan target dari berkas keluaran" + +#: lexsup.c:457 +msgid "Ignored for Linux compatibility" +msgstr "Abaikan untuk kompabilitas Linux" + +#: lexsup.c:460 +msgid "Reduce memory overheads, possibly taking much longer" +msgstr "Kurangi memori overheads, mungkin membutuhkan waktu lebih lama" + +#: lexsup.c:463 +msgid "Relax branches on certain targets" +msgstr "Relax cabang di beberapa targets" + +#: lexsup.c:466 +msgid "Keep only symbols listed in FILE" +msgstr "Jaga hanya simbol terdaftar dalam BERKAS" + +#: lexsup.c:468 +msgid "Set runtime shared library search path" +msgstr "Set waktu-jalan perpustakaan terbagi jalur pencarian" + +#: lexsup.c:470 +msgid "Set link time shared library search path" +msgstr "Set waktu hubung perpustakaan terbagi jalur pencarian" + +#: lexsup.c:473 +msgid "Create a shared library" +msgstr "Buat sebuah perpustakaan terbagi" + +#: lexsup.c:477 +msgid "Create a position independent executable" +msgstr "Buat sebuat executable bebas posisi" + +#: lexsup.c:481 +msgid "[=ascending|descending]" +msgstr "[=ascending|descending]" + +#: lexsup.c:482 +msgid "Sort common symbols by alignment [in specified order]" +msgstr "Urutkan simbol umum dengan alignmen [dalam urutan yang dispesifikasikan]" + +#: lexsup.c:487 +msgid "name|alignment" +msgstr "nama|alignment" + +#: lexsup.c:488 +msgid "Sort sections by name or maximum alignment" +msgstr "Urutkan daerah dengan nama atau maksimal alignment" + +#: lexsup.c:490 +msgid "COUNT" +msgstr "JUMLAH" + +#: lexsup.c:490 +msgid "How many tags to reserve in .dynamic section" +msgstr "Berapa banyak tags untuk menyimpan dalam daerah .dynamic" + +#: lexsup.c:493 +msgid "[=SIZE]" +msgstr "[=UKURAN]" + +#: lexsup.c:493 +msgid "Split output sections every SIZE octets" +msgstr "Bagi daerah keluaran distiap UKURAN oktet" + +#: lexsup.c:496 +msgid "[=COUNT]" +msgstr "[=JUMLAH]" + +#: lexsup.c:496 +msgid "Split output sections every COUNT relocs" +msgstr "Bagi daerah keluaran disetiap JUMLAH relokasi" + +#: lexsup.c:499 +msgid "Print memory usage statistics" +msgstr "Tampilkan statistik penggunaan memori" + +#: lexsup.c:501 +msgid "Display target specific options" +msgstr "Tampilkan opsi target spesifik" + +#: lexsup.c:503 +msgid "Do task level linking" +msgstr "Lakukan tingkat kerja penghubung" + +#: lexsup.c:505 +msgid "Use same format as native linker" +msgstr "Gunakan format sama seperti penghubung asal" + +#: lexsup.c:507 +msgid "SECTION=ADDRESS" +msgstr "DAERAH=ALAMAT" + +#: lexsup.c:507 +msgid "Set address of named section" +msgstr "Set alamat dari nama daerah" + +#: lexsup.c:510 +msgid "Set address of .bss section" +msgstr "Set alamat dari daerah .bss" + +#: lexsup.c:512 +msgid "Set address of .data section" +msgstr "Set alamat dari daerah .data" + +#: lexsup.c:514 +msgid "Set address of .text section" +msgstr "Set alamat daeri daerah .text" + +#: lexsup.c:517 +msgid "" +"How to handle unresolved symbols. <method> is:\n" +" ignore-all, report-all, ignore-in-object-files,\n" +" ignore-in-shared-libs" +msgstr "" +"Bagaimana menangani simbol tidak terselesaikan. <metode> adalah:\n" +" ignore-all, report-all, ignore-in-object-files,\n" +" ignore-in-shared-libs" + +#: lexsup.c:522 +msgid "Output lots of information during link" +msgstr "Keluarkan banyak informasi selama menghubungkan" + +#: lexsup.c:526 +msgid "Read version information script" +msgstr "Baca informasi versi dari scrip" + +#: lexsup.c:529 +msgid "" +"Take export symbols list from .exports, using\n" +" SYMBOL as the version." +msgstr "" +"Ambil daftar simbol expor dari .expor, menggunakan\n" +" SIMBOL sebagai versi." + +#: lexsup.c:533 +msgid "Add data symbols to dynamic list" +msgstr "Tambahkan data simbol ke daftar dinamis" + +#: lexsup.c:535 +msgid "Use C++ operator new/delete dynamic list" +msgstr "Gunakan C++ operator new/delete daftar dinamis" + +#: lexsup.c:537 +msgid "Use C++ typeinfo dynamic list" +msgstr "Gunakan C++ typeinfo daftar dinamic" + +#: lexsup.c:539 +msgid "Read dynamic list" +msgstr "Baca daftar dinamis" + +#: lexsup.c:541 +msgid "Warn about duplicate common symbols" +msgstr "Peringatkan mengenai duplikasi simbol umum" + +#: lexsup.c:543 +msgid "Warn if global constructors/destructors are seen" +msgstr "Peringatkan jika global konstruktor/destruktor terlihat" + +#: lexsup.c:546 +msgid "Warn if the multiple GP values are used" +msgstr "Peringatkan jika nilai multiple GP digunakan" + +#: lexsup.c:548 +msgid "Warn only once per undefined symbol" +msgstr "Peringatkan hanya sekali setiap simbol tidak terdefinisi" + +#: lexsup.c:550 +msgid "Warn if start of section changes due to alignment" +msgstr "Peringatkan jika awal dari daerah berubah karena alignment" + +#: lexsup.c:553 +msgid "Warn if shared object has DT_TEXTREL" +msgstr "Peringatkan jika objek terbagi memiliki DT_TEXTREL" + +#: lexsup.c:557 +msgid "Report unresolved symbols as warnings" +msgstr "Laporkan simbol tidak terselesaikan sebagai peringatan" + +#: lexsup.c:560 +msgid "Report unresolved symbols as errors" +msgstr "Laporkan simbol tidak terselesaikan sebagai error" + +#: lexsup.c:562 +msgid "Include all objects from following archives" +msgstr "Masukan seluruh objek dari archive berikut" + +#: lexsup.c:565 +msgid "Use wrapper functions for SYMBOL" +msgstr "Gunakan fungsi wrapper untuk SIMBOL" + +#: lexsup.c:712 +msgid "%P: unrecognized option '%s'\n" +msgstr "%P: opsi tidak dikenal '%s'\n" + +#: lexsup.c:716 +msgid "%P%F: use the --help option for usage information\n" +msgstr "%P%F: gunakan opsi --help untuk informasi penggunaan\n" + +#: lexsup.c:734 +msgid "%P%F: unrecognized -a option `%s'\n" +msgstr "%P%F: opsi -a tidak dikenal `%s'\n" + +#: lexsup.c:747 +msgid "%P%F: unrecognized -assert option `%s'\n" +msgstr "%P%F: opsi -assert tidak dikenal `%s'\n" + +#: lexsup.c:790 +msgid "%F%P: unknown demangling style `%s'" +msgstr "%F%P: gaya demangling tidak dikenal `%s'" + +#: lexsup.c:852 +msgid "%P%F: invalid number `%s'\n" +msgstr "%P%F: nomor tidak valid `%s'\n" + +#: lexsup.c:950 +msgid "%P%F: bad --unresolved-symbols option: %s\n" +msgstr "%P%F: buruk opsi --unresolved-symbols: %s\n" + +#. This can happen if the user put "-rpath,a" on the command +#. line. (Or something similar. The comma is important). +#. Getopt becomes confused and thinks that this is a -r option +#. but it cannot parse the text after the -r so it refuses to +#. increment the optind counter. Detect this case and issue +#. an error message here. We cannot just make this a warning, +#. increment optind, and continue because getopt is too confused +#. and will seg-fault the next time around. +#: lexsup.c:1024 +msgid "%P%F: bad -rpath option\n" +msgstr "%P%F: opsi -rpath buruk\n" + +#: lexsup.c:1135 +msgid "%P%F: -shared not supported\n" +msgstr "%P%F: -shared tidak didukung\n" + +#: lexsup.c:1144 +msgid "%P%F: -pie not supported\n" +msgstr "%P%F: -pie tidak didukung\n" + +#: lexsup.c:1152 +msgid "descending" +msgstr "menurun" + +#: lexsup.c:1154 +msgid "ascending" +msgstr "meningkat" + +#: lexsup.c:1157 +msgid "%P%F: invalid common section sorting option: %s\n" +msgstr "%P%F: opsi pengurutan daerah umum tidak valid: %s\n" + +#: lexsup.c:1161 +msgid "name" +msgstr "nama" + +#: lexsup.c:1163 +msgid "alignment" +msgstr "alignment" + +#: lexsup.c:1166 +msgid "%P%F: invalid section sorting option: %s\n" +msgstr "%P%F: opsi pengurutan daerah tidak valid: %s\n" + +#: lexsup.c:1200 +msgid "%P%F: invalid argument to option \"--section-start\"\n" +msgstr "%P%F: argumen ke opsi \"--section-start\" tidak valid\n" + +#: lexsup.c:1207 +msgid "%P%F: missing argument(s) to option \"--section-start\"\n" +msgstr "%P%F: hilang argumen ke opsi \"--section-start\"\n" + +#: lexsup.c:1421 +msgid "%P%F: may not nest groups (--help for usage)\n" +msgstr "%P%F: mungkin bukan nest grup (--help untuk penggunaan)\n" + +#: lexsup.c:1428 +msgid "%P%F: group ended before it began (--help for usage)\n" +msgstr "%P%F: grup berakhir sebelum init mulai (--help untuk penggunaan)\n" + +#: lexsup.c:1456 +msgid "%P%X: --hash-size needs a numeric argument\n" +msgstr "%P%X: --hash-size membutuhkan sebuah argumen numerik\n" + +#: lexsup.c:1507 lexsup.c:1520 +msgid "%P%F: invalid hex number `%s'\n" +msgstr "%P%F: nomor hex tidak valid `%s'\n" + +#: lexsup.c:1556 +#, c-format +msgid "Usage: %s [options] file...\n" +msgstr "Penggunaan: %s [opsi] berkas...\n" + +#: lexsup.c:1558 +#, c-format +msgid "Options:\n" +msgstr "Opsi:\n" + +#: lexsup.c:1636 +#, c-format +msgid " @FILE" +msgstr " @BERKAS" + +#: lexsup.c:1639 +#, c-format +msgid "Read options from FILE\n" +msgstr "Baca opsi dari BERKAS\n" + +#. Note: Various tools (such as libtool) depend upon the +#. format of the listings below - do not change them. +#: lexsup.c:1644 +#, c-format +msgid "%s: supported targets:" +msgstr "%s: target yang didukung:" + +#: lexsup.c:1652 +#, c-format +msgid "%s: supported emulations: " +msgstr "%s: emulasi yang didukung: " + +#: lexsup.c:1657 +#, c-format +msgid "%s: emulation specific options:\n" +msgstr "%s: opsi spesifik emulasi:\n" + +#: lexsup.c:1662 +#, c-format +msgid "Report bugs to %s\n" +msgstr "Laporkan bugs ke %s\n" + +#: mri.c:291 +msgid "%P%F: unknown format type %s\n" +msgstr "%P%F: tipe format %s tidak dikenal\n" + +#: pe-dll.c:381 +#, c-format +msgid "%XUnsupported PEI architecture: %s\n" +msgstr "%X Arsitektur PEI tidak didukung: %s\n" + +#: pe-dll.c:692 +#, c-format +msgid "%XCannot export %s: invalid export name\n" +msgstr "%X Tidak dapat expor %s: nama expor tidak valid\n" + +#: pe-dll.c:748 +#, c-format +msgid "%XError, duplicate EXPORT with ordinals: %s (%d vs %d)\n" +msgstr "%XError, duplikasi EKSPOR dengan ordinals: %s (%d vs %d)\n" + +#: pe-dll.c:755 +#, c-format +msgid "Warning, duplicate EXPORT: %s\n" +msgstr "Peringatan, duplikasi EKSPOR: %s\n" + +#: pe-dll.c:842 +#, c-format +msgid "%XCannot export %s: symbol not defined\n" +msgstr "%XTidak dapat ekspor %s: simbol tidak terdefinisi\n" + +#: pe-dll.c:848 +#, c-format +msgid "%XCannot export %s: symbol wrong type (%d vs %d)\n" +msgstr "%XTidak dapat ekspor %s: tipe simbol salah (%d vs %d)\n" + +#: pe-dll.c:855 +#, c-format +msgid "%XCannot export %s: symbol not found\n" +msgstr "%XTidak dapat ekspor %s: simbol tidak ditemukan\n" + +#: pe-dll.c:969 +#, c-format +msgid "%XError, ordinal used twice: %d (%s vs %s)\n" +msgstr "%XError, ordinal digunakan dua kali: %d (%s vs %s)\n" + +#: pe-dll.c:1336 +#, c-format +msgid "%XError: %d-bit reloc in dll\n" +msgstr "%XError: %d-bit relokasi dalam dll\n" + +#: pe-dll.c:1464 +#, c-format +msgid "%s: Can't open output def file %s\n" +msgstr "%s: Tidak dapat membuka berkas keluaran default %s\n" + +#: pe-dll.c:1609 +#, c-format +msgid "; no contents available\n" +msgstr "; tidak ada kontent yang tersedia\n" + +#: pe-dll.c:2407 +msgid "%C: variable '%T' can't be auto-imported. Please read the documentation for ld's --enable-auto-import for details.\n" +msgstr "%C: variabel '%T' tidak dapat auto-imported. Tolong baca dokumentasi untuk ld --enable-auto-import untuk lebih lengkapnya.\n" + +#: pe-dll.c:2437 +#, c-format +msgid "%XCan't open .lib file: %s\n" +msgstr "%XTidak dapat membuka berkas .lib: %s\n" + +#: pe-dll.c:2442 +#, c-format +msgid "Creating library file: %s\n" +msgstr "Membuat berkas library: %s\n" diff --git a/ld/po/vi.po b/ld/po/vi.po index 65b2214..30a676d 100644 --- a/ld/po/vi.po +++ b/ld/po/vi.po @@ -1,227 +1,224 @@ # Vietnamese translation for LD. -# Copyright © 2007 Free Software Foundation, Inc. -# Clytie Siddall <clytie@riverland.net.au>, 2005-2007. -# +# Copyright © 2008 Free Software Foundation, Inc. +# This file is distributed under the same license as the binutils package. +# Clytie Siddall <clytie@riverland.net.au>, 2005-2008. +# msgid "" msgstr "" -"Project-Id-Version: ld-2.17.90\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2007-06-27 16:44+0930\n" -"PO-Revision-Date: 2007-08-07 21:19+0930\n" +"Project-Id-Version: ld-2.18.90\n" +"Report-Msgid-Bugs-To: bug-binutils@gnu.org\n" +"POT-Creation-Date: 2008-09-09 15:56+0930\n" +"PO-Revision-Date: 2008-09-23 22:24+0930\n" "Last-Translator: Clytie Siddall <clytie@riverland.net.au>\n" "Language-Team: Vietnamese <vi-VN@googlegroups.com>\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=1; plural=0;\n" -"X-Generator: LocFactoryEditor 1.7b1\n" +"X-Generator: LocFactoryEditor 1.7b3\n" -#: emultempl/armcoff.em:72 +#: emultempl/armcoff.em:73 #, c-format -msgid " --support-old-code Support interworking with old code\n" -msgstr "" -" --support-old-code Hỗ trợ kết hợp với mã cũ\n" -"\t\t(_hỗ trợ mã cũ_)\n" +msgid " --support-old-code Support interworking with old code\n" +msgstr " --support-old-code \tHỗ trợ kết hợp với mã cũ\n" -#: emultempl/armcoff.em:73 +#: emultempl/armcoff.em:74 #, c-format -msgid " --thumb-entry=<sym> Set the entry point to be Thumb symbol <sym>\n" -msgstr "" -" --thumb-entry=<ký_hiệu> Đặt điểm vào thành ký hiệu Thumb này\n" -"\t\t(_mục nhập thumb_)\n" +msgid " --thumb-entry=<sym> Set the entry point to be Thumb symbol <sym>\n" +msgstr " --thumb-entry=<ký_hiệu> Đặt điểm vào thành ký hiệu Thumb này\n" -#: emultempl/armcoff.em:121 +#: emultempl/armcoff.em:122 #, c-format msgid "Errors encountered processing file %s" msgstr "Gặp lỗi khi xử lý tập tin %s" -#: emultempl/armcoff.em:189 emultempl/pe.em:1528 +#: emultempl/armcoff.em:190 emultempl/pe.em:1555 msgid "%P: warning: '--thumb-entry %s' is overriding '-e %s'\n" msgstr "%P: cảnh báo : « --thumb-entry %s » đang lấy quyền cao hơn « -e %s »\n" -#: emultempl/armcoff.em:194 emultempl/pe.em:1533 -msgid "%P: warning: connot find thumb start symbol %s\n" +#: emultempl/armcoff.em:195 emultempl/pe.em:1560 +msgid "%P: warning: cannot find thumb start symbol %s\n" msgstr "%P: cảnh báo : không tìm thấy ký hiệu bắt đầu thumb %s\n" -#: emultempl/pe.em:311 +#: emultempl/pe.em:316 #, c-format msgid " --base_file <basefile> Generate a base file for relocatable DLLs\n" msgstr "" " --base_file <tập_tin>\t\tTạo ra một tập tin cơ bản\n" "\tcho các DLL có khả năng định vị lại (_tập tin cơ bản_)\n" -#: emultempl/pe.em:312 +#: emultempl/pe.em:317 #, c-format msgid " --dll Set image base to the default for DLLs\n" msgstr " --dll Đặt cơ bản ảnh thành giá trị mặc định cho các DLL\n" -#: emultempl/pe.em:313 +#: emultempl/pe.em:318 #, c-format msgid " --file-alignment <size> Set file alignment\n" msgstr "" " --file-alignment <kích_cỡ> Đặt sự chỉnh canh tập tin\n" "\t\t(_sự chỉnh canh tập tin_)\n" -#: emultempl/pe.em:314 +#: emultempl/pe.em:319 #, c-format msgid " --heap <size> Set initial size of the heap\n" msgstr "" " --heap <kích_cỡ> Đặt kích cỡ đầu tiên của miền nhớ\n" "\t\t(_miền nhớ_)\n" -#: emultempl/pe.em:315 +#: emultempl/pe.em:320 #, c-format msgid " --image-base <address> Set start address of the executable\n" msgstr "" " --image-base <địa_chỉ>\n" "\tĐặt địa chỉ bắt đầu của tập tin có khả năng thực hiện (_cơ bản ảnh_)\n" -#: emultempl/pe.em:316 +#: emultempl/pe.em:321 #, c-format msgid " --major-image-version <number> Set version number of the executable\n" msgstr "" " --major-image-version <số>\t\tĐặt số thứ tự phiên bản của tập tin\n" "\tcó khả năng thực hiện (_phiên bản ảnh lớn_)\n" -#: emultempl/pe.em:317 +#: emultempl/pe.em:322 #, c-format msgid " --major-os-version <number> Set minimum required OS version\n" msgstr "" " --major-os-version <số>\t\tĐặt phiên bản HĐH tối thiểu cần thiết\n" "\t\t(_phiên bản HĐH lớn_)\n" -#: emultempl/pe.em:318 +#: emultempl/pe.em:323 #, c-format msgid " --major-subsystem-version <number> Set minimum required OS subsystem version\n" msgstr "" " --major-subsystem-version <số>\tĐặt phiên bản hệ thống con HĐH\n" "\ttối thiểu cần thiết (_phiên bản hệ thống con lớn_)\n" -#: emultempl/pe.em:319 +#: emultempl/pe.em:324 #, c-format msgid " --minor-image-version <number> Set revision number of the executable\n" msgstr "" " --minor-image-version <số>\t\tĐặt số thứ tự bản sửa đổi của tập tin\n" "\tcó khả năng thực hiện (_phiên bản ảnh nhỏ_)\n" -#: emultempl/pe.em:320 +#: emultempl/pe.em:325 #, c-format msgid " --minor-os-version <number> Set minimum required OS revision\n" msgstr "" " --minor-os-version <số>\t\tĐặt bản sửa đổi HĐH tối thiểu cần thiết\n" "\t\t(_phiên bản HĐH nhỏ_)\n" -#: emultempl/pe.em:321 +#: emultempl/pe.em:326 #, c-format msgid " --minor-subsystem-version <number> Set minimum required OS subsystem revision\n" msgstr "" " --minor-subsystem-version <số>\tĐặt bản sửa đổi hệ thống con HĐH\n" "\ttối thiểu cần thiết (_phiên bản hệ thống con nhỏ_)\n" -#: emultempl/pe.em:322 +#: emultempl/pe.em:327 #, c-format msgid " --section-alignment <size> Set section alignment\n" msgstr "" " --section-alignment <kích_cỡ> Đặt sự chỉnh canh phần\n" "\t\t(_sự chỉnh canh phần_)\n" -#: emultempl/pe.em:323 +#: emultempl/pe.em:328 #, c-format msgid " --stack <size> Set size of the initial stack\n" msgstr " --stack <kích_cỡ> Đặt kích cỡ của đống đầu tiên (_đống_)\n" -#: emultempl/pe.em:324 +#: emultempl/pe.em:329 #, c-format msgid " --subsystem <name>[:<version>] Set required OS subsystem [& version]\n" msgstr "" " --subsystem <tên>[:<phiên_bản>]\n" "\tĐặt hệ thống con HĐH [và phiên bản] cần thiết (_hệ thống con_)\n" -#: emultempl/pe.em:325 +#: emultempl/pe.em:330 #, c-format msgid " --support-old-code Support interworking with old code\n" msgstr "" " --support-old-code \tHỗ trợ kết hợp với mã cũ\n" "\t\t(_hỗ trợ mã cũ_)\n" -#: emultempl/pe.em:326 +#: emultempl/pe.em:331 #, c-format msgid " --thumb-entry=<symbol> Set the entry point to be Thumb <symbol>\n" msgstr "" " --thumb-entry=<ký_hiệu> Đặt điểm vào thành ký hiệu Thumb này\n" "\t\t(_mục nhập thumb_)\n" -#: emultempl/pe.em:328 +#: emultempl/pe.em:333 #, c-format msgid " --add-stdcall-alias Export symbols with and without @nn\n" msgstr "" " --add-stdcall-alias Xuất ký hiệu có và không có « @nn »\n" "\t\t(_thêm bí danh stdcall_)\n" -#: emultempl/pe.em:329 +#: emultempl/pe.em:334 #, c-format msgid " --disable-stdcall-fixup Don't link _sym to _sym@nn\n" msgstr "" " --disable-stdcall-fixup Đừng liên kết « _sym » đến « _sym@nn »\n" "\t\t(_tắt sửa chữa stdcall_)\n" -#: emultempl/pe.em:330 +#: emultempl/pe.em:335 #, c-format msgid " --enable-stdcall-fixup Link _sym to _sym@nn without warnings\n" msgstr "" " --enable-stdcall-fixup Liên kết « _sym » đến « _sym@nn »,\n" "\tkhông có cảnh báo (_bật sửa chữa stdcall_)\n" -#: emultempl/pe.em:331 +#: emultempl/pe.em:336 #, c-format msgid " --exclude-symbols sym,sym,... Exclude symbols from automatic export\n" msgstr "" " --exclude-symbols ký_hiệu1,ký_hiệu2,...\n" "\tLoại trừ những ký hiệu này khỏi việc tự động xuất khẩu (_loại trừ các ký hiệu_)\n" -#: emultempl/pe.em:332 +#: emultempl/pe.em:337 #, c-format msgid " --exclude-libs lib,lib,... Exclude libraries from automatic export\n" msgstr "" " --exclude-libs thư_viện1,thư_viện2,...\n" "\tLoại trừ những thư viện này khỏi việc tự động xuất khẩu (_loại trừ các thư viện_)\n" -#: emultempl/pe.em:333 +#: emultempl/pe.em:338 #, c-format msgid " --export-all-symbols Automatically export all globals to DLL\n" msgstr "" " --export-all-symbols Tự động xuất khẩu mọi điều toàn cục ra DLL\n" "\t\t(_xuất khẩu mọi ký hiệu_)\n" -#: emultempl/pe.em:334 +#: emultempl/pe.em:339 #, c-format msgid " --kill-at Remove @nn from exported symbols\n" msgstr "" " --kill-at Gỡ bỏ « @nn » ra những ký hiệu đã xuất khẩu\n" "\t(_giết tại_)\n" -#: emultempl/pe.em:335 +#: emultempl/pe.em:340 #, c-format msgid " --out-implib <file> Generate import library\n" msgstr "" " --out-implib <tập_tin> Tạo ra thư viện nhập khẩu\n" "\t\t(_ra nhập khẩu thư viện [viết tắt]_)\n" -#: emultempl/pe.em:336 +#: emultempl/pe.em:341 #, c-format msgid " --output-def <file> Generate a .DEF file for the built DLL\n" msgstr "" " --output-def <tập_tin>\tTạo ra một tập tin .DEF cho DLL đã xây dựng\n" "\t\t(_xuất ra DEF_)\n" -#: emultempl/pe.em:337 +#: emultempl/pe.em:342 #, c-format msgid " --warn-duplicate-exports Warn about duplicate exports.\n" msgstr "" " --warn-duplicate-exports Cảnh báo về sự xuất khẩu trùng.\n" "\t\t(_cảnh báo sự xuất khẩu trùng_)\n" -#: emultempl/pe.em:338 +#: emultempl/pe.em:343 #, c-format msgid "" " --compat-implib Create backward compatible import libs;\n" @@ -230,7 +227,7 @@ msgstr "" " --compat-implib\t\tTạo các thư viện nhập khẩu tương thích ngược;\n" "\tcũng tạo « __imp_<ký_hiệu> » (_thư viện nhập khẩu tương thích [viết tắt]_)\n" -#: emultempl/pe.em:340 +#: emultempl/pe.em:345 #, c-format msgid "" " --enable-auto-image-base Automatically choose image base for DLLs\n" @@ -239,14 +236,14 @@ msgstr "" " --enable-auto-image-base Tự động chọn cơ bản ảnh cho mọi DLL\n" "\tnếu người dùng không ghi rõ (_bật cơ bản ảnh tự động_)\n" -#: emultempl/pe.em:342 +#: emultempl/pe.em:347 #, c-format msgid " --disable-auto-image-base Do not auto-choose image base. (default)\n" msgstr "" " --disable-auto-image-base Đừng tự động chọn cơ bản ảnh (mặc định)\n" "\t\t(_tắt cơ bản ảnh tự động_)\n" -#: emultempl/pe.em:343 +#: emultempl/pe.em:348 #, c-format msgid "" " --dll-search-prefix=<string> When linking dynamically to a dll without\n" @@ -258,7 +255,7 @@ msgstr "" "\tdùng « <chuỗi><tên_cơ_bản>.dll » thay cho « lib<tên_cơ_bản>.dll »\n" "\t\t(_tiền tố tìm kiếm DLL_)\n" -#: emultempl/pe.em:346 +#: emultempl/pe.em:351 #, c-format msgid "" " --enable-auto-import Do sophistcated linking of _sym to\n" @@ -267,14 +264,14 @@ msgstr "" " --enable-auto-import\t\tLiên kết tinh tế « _sym » đến « __imp_sym »\n" "\tcho các tham chiếu DATA (dữ liệu) (_bật tự động nhập khẩu_)\n" -#: emultempl/pe.em:348 +#: emultempl/pe.em:353 #, c-format msgid " --disable-auto-import Do not auto-import DATA items from DLLs\n" msgstr "" " --disable-auto-import Đừng tự động nhập mục DATA từ DLL\n" "\t\t(_tắt tự động nhập khẩu_)\n" -#: emultempl/pe.em:349 +#: emultempl/pe.em:354 #, c-format msgid "" " --enable-runtime-pseudo-reloc Work around auto-import limitations by\n" @@ -286,7 +283,7 @@ msgstr "" "\tcác sự định vị lại giả được quyết định vào lúc chạy.\n" "\t\t(_bật định vị lại giả lúc chạy [viết tắt]_)\n" -#: emultempl/pe.em:352 +#: emultempl/pe.em:357 #, c-format msgid "" " --disable-runtime-pseudo-reloc Do not add runtime pseudo-relocations for\n" @@ -297,7 +294,7 @@ msgstr "" "\tđược nhập khẩu tự động.\n" "\t\t(_tắt định vị lại giả lúc chạy [viết tắt]_)\n" -#: emultempl/pe.em:354 +#: emultempl/pe.em:359 #, c-format msgid "" " --enable-extra-pe-debug Enable verbose debug output when building\n" @@ -307,7 +304,7 @@ msgstr "" "\tBật kết xuất gỡ lỗi chi tiết khi xây dựng hay liên kết đến DLL\n" "\t(đặc biệt khi nhập khẩu tự động). (_bật gỡ lỗi PE thêm_)\n" -#: emultempl/pe.em:357 +#: emultempl/pe.em:362 #, c-format msgid "" " --large-address-aware Executable supports virtual addresses\n" @@ -317,86 +314,100 @@ msgstr "" "\tTập tin có khả năng thực hiện cũng hỗ trợ các địa chỉ ảo lớn hơn 2 GB.\n" "\t\t(_kiến thức địa chỉ lớn_)\n" -#: emultempl/pe.em:424 +#: emultempl/pe.em:431 msgid "%P: warning: bad version number in -subsystem option\n" msgstr "%P: cảnh báo: gặp số thứ tự phiên bản sai trong tùy chọn « -subsystem » (hệ thống con)\n" -#: emultempl/pe.em:455 +#: emultempl/pe.em:462 msgid "%P%F: invalid subsystem type %s\n" msgstr "%P%F: kiểu hệ thống con không hợp lệ %s\n" -#: emultempl/pe.em:494 +#: emultempl/pe.em:501 msgid "%P%F: invalid hex number for PE parameter '%s'\n" msgstr "%P%F: số thập lục không hợp lệ cho tham số PE « %s »\n" -#: emultempl/pe.em:511 +#: emultempl/pe.em:518 msgid "%P%F: strange hex info for PE parameter '%s'\n" msgstr "%P%F: thông tin thập lục lạ cho tham số PE « %s »\n" -#: emultempl/pe.em:528 +#: emultempl/pe.em:535 #, c-format msgid "%s: Can't open base file %s\n" msgstr "%s: Không thể mở tập tin cơ bản %s\n" -#: emultempl/pe.em:744 +#: emultempl/pe.em:752 msgid "%P: warning, file alignment > section alignment.\n" msgstr "%P: cảnh báo, sự chỉnh canh tập tin > sự chỉnh canh phần.\n" -#: emultempl/pe.em:831 emultempl/pe.em:858 +#: emultempl/pe.em:839 emultempl/pe.em:866 #, c-format msgid "Warning: resolving %s by linking to %s\n" msgstr "Cảnh báo : đang tháo gỡ %s bằng cách liên kết đến %s\n" -#: emultempl/pe.em:836 emultempl/pe.em:863 +#: emultempl/pe.em:844 emultempl/pe.em:871 msgid "Use --enable-stdcall-fixup to disable these warnings\n" msgstr "Dùng « --enable-stdcall-fixup » để tắt các cảnh báo này\n" -#: emultempl/pe.em:837 emultempl/pe.em:864 +#: emultempl/pe.em:845 emultempl/pe.em:872 msgid "Use --disable-stdcall-fixup to disable these fixups\n" msgstr "Dùng « --disable-stdcall-fixup » để tắt các sự sửa chữa này\n" -#: emultempl/pe.em:883 +#: emultempl/pe.em:891 #, c-format msgid "%C: Cannot get section contents - auto-import exception\n" msgstr "%C: Không thể lấy nội dung của phần: gặp ngoại lệ nhập khẩu tự động\n" -#: emultempl/pe.em:920 +#: emultempl/pe.em:931 #, c-format msgid "Info: resolving %s by linking to %s (auto-import)\n" msgstr "Thông tin: đang tháo gỡ %s bằng cách liên kết đến %s (tự động nhập khẩu)\n" -#: emultempl/pe.em:992 +#: emultempl/pe.em:938 +msgid "" +"%P: warning: auto-importing has been activated without --enable-auto-import specified on the command line.\n" +"This should work unless it involves constant data structures referencing symbols from auto-imported DLLs." +msgstr "" +"%P: cảnh báo : chức năng tự động nhập vào đã được kích hoạt mà không đưa ra tùy chọn « --enable-auto-import » trên dòng lệnh.\n" +"Trường hợp này vẫn còn nên chạy được nếu không có cấu trúc dữ liệu không đổi mà tham chiếu đến ký hiệu từ DLL được tự động nhập vào." + +#: emultempl/pe.em:945 emultempl/pe.em:1113 emultempl/pe.em:1319 ldcref.c:488 +#: ldcref.c:586 ldmain.c:1105 ldmisc.c:285 pe-dll.c:622 pe-dll.c:1153 +#: pe-dll.c:1250 +msgid "%B%F: could not read symbols: %E\n" +msgstr "%B%F: không thể đọc các ký hiệu : %E\n" + +#: emultempl/pe.em:1018 msgid "%F%P: cannot perform PE operations on non PE output file '%B'.\n" msgstr "%F%P: không thể thực hiện thao tác PE với tập tin xuất khác PE « %B ».\n" -#: emultempl/pe.em:1334 +#: emultempl/pe.em:1360 #, c-format msgid "Errors encountered processing file %s\n" msgstr "Gặp lỗi trong khi xử lý tập tin %s\n" -#: emultempl/pe.em:1357 +#: emultempl/pe.em:1383 #, c-format msgid "Errors encountered processing file %s for interworking" msgstr "Gặp lỗi trong khi xử lý tập tin %s để thao tác với nhau" -#: emultempl/pe.em:1418 ldexp.c:530 ldlang.c:3082 ldlang.c:6087 ldlang.c:6118 -#: ldmain.c:1167 +#: emultempl/pe.em:1444 ldexp.c:540 ldlang.c:3131 ldlang.c:6448 ldlang.c:6479 +#: ldmain.c:1050 msgid "%P%F: bfd_link_hash_lookup failed: %E\n" msgstr "%P%F: « bfd_link_hash_lookup » bị lỗi: %E\n" -#: ldcref.c:166 +#: ldcref.c:168 msgid "%X%P: bfd_hash_table_init of cref table failed: %E\n" msgstr "%X%P: « bfd_hash_table_init » với bảng cref bị lỗi: %E\n" -#: ldcref.c:172 +#: ldcref.c:174 msgid "%X%P: cref_hash_lookup failed: %E\n" msgstr "%X%P: « cref_hash_lookup » bị lỗi: %E\n" -#: ldcref.c:182 +#: ldcref.c:184 msgid "%X%P: cref alloc failed: %E\n" msgstr "%X%P: cref alloc bị lỗi: %E\n" -#: ldcref.c:362 +#: ldcref.c:364 #, c-format msgid "" "\n" @@ -407,33 +418,25 @@ msgstr "" "Bảng Tham Chiếu Chéo\n" "\n" -#: ldcref.c:363 +#: ldcref.c:365 msgid "Symbol" msgstr "Ký hiệu" -#: ldcref.c:371 +#: ldcref.c:373 #, c-format msgid "File\n" msgstr "Tập tin\n" -#: ldcref.c:375 +#: ldcref.c:377 #, c-format msgid "No symbols\n" msgstr "Không có ký hiệu\n" -#: ldcref.c:496 ldcref.c:618 -msgid "%B%F: could not read symbols; %E\n" -msgstr "%B%F: không thể đọc các ký hiệu ; %E\n" - -#: ldcref.c:500 ldcref.c:622 ldmain.c:1232 ldmain.c:1236 -msgid "%B%F: could not read symbols: %E\n" -msgstr "%B%F: không thể đọc các ký hiệu : %E\n" - -#: ldcref.c:551 +#: ldcref.c:530 msgid "%P: symbol `%T' missing from main hash table\n" msgstr "%P: ký hiệu « %T » còn thiếu trong bảng băm chính\n" -#: ldcref.c:693 ldcref.c:700 ldmain.c:1279 ldmain.c:1286 +#: ldcref.c:648 ldcref.c:655 ldmain.c:1139 ldmain.c:1146 msgid "%B%F: could not read relocs: %E\n" msgstr "%B%F: không thể đọc các sự định vị lại : %E\n" @@ -441,7 +444,7 @@ msgstr "%B%F: không thể đọc các sự định vị lại : %E\n" #. in OUTSECNAME. This reloc is from a section which is #. mapped into a section from which references to OUTSECNAME #. are prohibited. We must report an error. -#: ldcref.c:727 +#: ldcref.c:682 msgid "%X%C: prohibited cross reference from %s to `%T' in %s\n" msgstr "%X%C: không cho phép tham chiếu chéo từ %s đến « %T » trong %s\n" @@ -494,147 +497,142 @@ msgstr "Mô phỏng đã hỗ trợ : " msgid " no emulation specific options.\n" msgstr " không có tùy chọn đặc trưng cho mô phỏng.\n" -#: ldexp.c:344 +#: ldexp.c:350 #, c-format msgid "%F%S %% by zero\n" msgstr "%F%S %% cho số không\n" -#: ldexp.c:352 +#: ldexp.c:358 #, c-format msgid "%F%S / by zero\n" msgstr "%F%S / cho số không\n" -#: ldexp.c:544 +#: ldexp.c:554 #, c-format msgid "%X%S: unresolvable symbol `%s' referenced in expression\n" msgstr "%X%S: ký hiệu không tháo gỡ được « %s » được tham chiếu trong biểu thức\n" -#: ldexp.c:555 +#: ldexp.c:565 #, c-format msgid "%F%S: undefined symbol `%s' referenced in expression\n" msgstr "%F%S: ký hiệu chưa xác định « %s » được tham chiếu trong biểu thức\n" -#: ldexp.c:576 ldexp.c:593 ldexp.c:619 +#: ldexp.c:586 ldexp.c:603 ldexp.c:630 #, c-format msgid "%F%S: undefined section `%s' referenced in expression\n" msgstr "%F%S: phần chưa xác định « %s » được tham chiếu trong biểu thức\n" -#: ldexp.c:645 ldexp.c:658 +#: ldexp.c:657 ldexp.c:670 #, c-format msgid "%F%S: undefined MEMORY region `%s' referenced in expression\n" msgstr "%F%S: miền MEMORY (bộ nhớ) chưa xác định « %s » được tham chiếu trong biểu thức\n" -#: ldexp.c:669 +#: ldexp.c:681 #, c-format msgid "%F%S: unknown constant `%s' referenced in expression\n" msgstr "%F%S: hằng không rõ « %s » được tham chiếu trong biểu thức\n" -#: ldexp.c:730 +#: ldexp.c:742 #, c-format msgid "%F%S can not PROVIDE assignment to location counter\n" msgstr "%F%S không thể PROVIDE (cung cấp) sự gán cho bộ đếm địa điểm\n" -#: ldexp.c:744 +#: ldexp.c:756 #, c-format msgid "%F%S invalid assignment to location counter\n" msgstr "%F%S sự gán không hợp lệ cho bộ đếm địa điểm\n" -#: ldexp.c:747 +#: ldexp.c:759 #, c-format msgid "%F%S assignment to location counter invalid outside of SECTION\n" msgstr "%F%S sự gán cho bộ đếm địa điểm không phải hợp lệ bên ngoài SECTION (phần)\n" -#: ldexp.c:756 +#: ldexp.c:768 msgid "%F%S cannot move location counter backwards (from %V to %V)\n" msgstr "%F%S không thể chạy ngược bộ đếm địa điểm (từ %V về %V)\n" -#: ldexp.c:795 +#: ldexp.c:807 msgid "%P%F:%s: hash creation failed\n" msgstr "%P%F:%s: lỗi tạo băm\n" -#: ldexp.c:1054 ldexp.c:1079 -#, c-format -msgid "%F%S nonconstant expression for %s\n" -msgstr "%F%S biểu thức khác hằng cho %s\n" - -#: ldexp.c:1138 +#: ldexp.c:1066 ldexp.c:1091 ldexp.c:1150 #, c-format msgid "%F%S: nonconstant expression for %s\n" msgstr "%F%S biểu thức khác hằng cho %s\n" -#: ldfile.c:139 +#: ldfile.c:137 #, c-format msgid "attempt to open %s failed\n" msgstr "lỗi thử mở %s\n" -#: ldfile.c:141 +#: ldfile.c:139 #, c-format msgid "attempt to open %s succeeded\n" msgstr "mở thành công %s\n" -#: ldfile.c:147 +#: ldfile.c:145 msgid "%F%P: invalid BFD target `%s'\n" msgstr "%F%P: đích BFD không hợp lệ « %s »\n" -#: ldfile.c:256 ldfile.c:285 +#: ldfile.c:254 ldfile.c:283 msgid "%P: skipping incompatible %s when searching for %s\n" msgstr "%P: đang bỏ qua %s không tương thích khi tìm kiếm %s\n" -#: ldfile.c:269 +#: ldfile.c:267 msgid "%F%P: attempted static link of dynamic object `%s'\n" msgstr "%F%P: đã thử liên kết tĩnh đối tượng động « %s »\n" -#: ldfile.c:388 +#: ldfile.c:379 msgid "%F%P: %s (%s): No such file: %E\n" msgstr "%F%P: %s (%s): Không có tập tin như vậy: %E\n" -#: ldfile.c:391 +#: ldfile.c:382 msgid "%F%P: %s: No such file: %E\n" msgstr "%F%P: %s: Không có tập tin như vậy: %E\n" -#: ldfile.c:421 +#: ldfile.c:412 msgid "%F%P: cannot find %s inside %s\n" msgstr "%F%P: không tìm thấy %s bên trong %s\n" -#: ldfile.c:424 +#: ldfile.c:415 msgid "%F%P: cannot find %s\n" msgstr "%F%P: không tìm thấy được %s\n" -#: ldfile.c:441 ldfile.c:457 +#: ldfile.c:431 ldfile.c:449 #, c-format msgid "cannot find script file %s\n" msgstr "không tìm thấy tập tin văn lệnh %s\n" -#: ldfile.c:443 ldfile.c:459 +#: ldfile.c:433 ldfile.c:451 #, c-format msgid "opened script file %s\n" msgstr "đã mở tập tin văn lệnh %s\n" -#: ldfile.c:503 +#: ldfile.c:601 msgid "%P%F: cannot open linker script file %s: %E\n" msgstr "%P%F: không thể mở tập tin văn lệnh liên kết %s: %E\n" -#: ldfile.c:550 +#: ldfile.c:648 msgid "%P%F: cannot represent machine `%s'\n" msgstr "%P%F: không thể đại diện máy « %s »\n" -#: ldlang.c:1069 ldlang.c:1111 ldlang.c:2831 +#: ldlang.c:1124 ldlang.c:1166 ldlang.c:2880 msgid "%P%F: can not create hash table: %E\n" msgstr "%P%F: không thể tạo bảng băm: %E\n" -#: ldlang.c:1154 +#: ldlang.c:1209 msgid "%P:%S: warning: redeclaration of memory region '%s'\n" msgstr "%P:%S: cảnh báo : khai báo lại miền nhớ « %s »\n" -#: ldlang.c:1160 +#: ldlang.c:1215 msgid "%P:%S: warning: memory region %s not declared\n" msgstr "%P:%S: cảnh báo : chưa khai báo miền bộ nhớ %s\n" -#: ldlang.c:1240 ldlang.c:1270 +#: ldlang.c:1270 ldlang.c:1305 msgid "%P%F: failed creating section `%s': %E\n" msgstr "%P%F: lỗi tạo phần « %s »: %E\n" -#: ldlang.c:1754 +#: ldlang.c:1799 #, c-format msgid "" "\n" @@ -645,7 +643,7 @@ msgstr "" "Các phần nhập bị hủy\n" "\n" -#: ldlang.c:1762 +#: ldlang.c:1807 msgid "" "\n" "Memory Configuration\n" @@ -655,23 +653,23 @@ msgstr "" "Cấu hình bộ nhớ\n" "\n" -#: ldlang.c:1764 +#: ldlang.c:1809 msgid "Name" msgstr "Tên" -#: ldlang.c:1764 +#: ldlang.c:1809 msgid "Origin" msgstr "Gốc" -#: ldlang.c:1764 +#: ldlang.c:1809 msgid "Length" msgstr "Độ dài" -#: ldlang.c:1764 +#: ldlang.c:1809 msgid "Attributes" msgstr "Thuộc tính" -#: ldlang.c:1804 +#: ldlang.c:1849 #, c-format msgid "" "\n" @@ -682,158 +680,170 @@ msgstr "" "Văn lệnh liên kết và sơ đồ bộ nhớ\n" "\n" -#: ldlang.c:1871 +#: ldlang.c:1915 msgid "%P%F: Illegal use of `%s' section\n" msgstr "%P%F: không cho phép cách sử dụng phần « %s »\n" -#: ldlang.c:1879 +#: ldlang.c:1923 msgid "%P%F: output format %s cannot represent section called %s\n" msgstr "%P%F: định dạng xuất %s không thể đại diện phần tên %s\n" -#: ldlang.c:2429 +#: ldlang.c:2473 msgid "%B: file not recognized: %E\n" msgstr "%B: không nhận ra tập tin: %E\n" -#: ldlang.c:2430 +#: ldlang.c:2474 msgid "%B: matching formats:" msgstr "%B: các định dạng khớp:" -#: ldlang.c:2437 +#: ldlang.c:2481 msgid "%F%B: file not recognized: %E\n" msgstr "%F%B: không nhận ra tập tin: %E\n" -#: ldlang.c:2507 +#: ldlang.c:2551 msgid "%F%B: member %B in archive is not an object\n" msgstr "%F%B: bộ phạn %B trong khi không phải là đối tượng\n" -#: ldlang.c:2518 ldlang.c:2532 +#: ldlang.c:2562 ldlang.c:2576 msgid "%F%B: could not read symbols: %E\n" msgstr "%F%B: không thể đọc các ký hiệu : %E\n" -#: ldlang.c:2801 +#: ldlang.c:2850 msgid "%P: warning: could not find any targets that match endianness requirement\n" msgstr "%P: cảnh báo : không tìm thấy đích khớp với tình trạng cuối cần thiết\n" -#: ldlang.c:2815 +#: ldlang.c:2864 msgid "%P%F: target %s not found\n" msgstr "%P%F: không tìm thấy đích %s\n" -#: ldlang.c:2817 +#: ldlang.c:2866 msgid "%P%F: cannot open output file %s: %E\n" msgstr "%P%F: không thể mở tập tin xuất %s: %E\n" -#: ldlang.c:2823 +#: ldlang.c:2872 msgid "%P%F:%s: can not make object file: %E\n" msgstr "%P%F:%s: không thể tạo tập tin đối tượng: %E\n" -#: ldlang.c:2827 +#: ldlang.c:2876 msgid "%P%F:%s: can not set architecture: %E\n" msgstr "%P%F:%s: không thể đặt kiến trúc: %E\n" -#: ldlang.c:2975 +#: ldlang.c:3024 msgid "%P%F: bfd_hash_lookup failed creating symbol %s\n" msgstr "%P%F: lỗi « bfd_hash_lookup » khi tạo ký hiệu %s\n" -#: ldlang.c:2993 +#: ldlang.c:3042 msgid "%P%F: bfd_hash_allocate failed creating symbol %s\n" msgstr "%P%F: lỗi « bfd_hash_lookup » khi tạo ký hiệu %s\n" -#: ldlang.c:3426 +#: ldlang.c:3418 +msgid "%F%P: %s not found for insert\n" +msgstr "%F%P: không tìm thấy %s để chèn vào\n" + +#: ldlang.c:3633 msgid " load address 0x%V" msgstr " nạp địa chỉ 0x%V" -#: ldlang.c:3661 +#: ldlang.c:3873 msgid "%W (size before relaxing)\n" msgstr "%W (kích cỡ trước khi lơi ra)\n" -#: ldlang.c:3747 +#: ldlang.c:3964 #, c-format msgid "Address of section %s set to " msgstr "Địa chỉ của phần %s được đặt thành " -#: ldlang.c:3900 +#: ldlang.c:4117 #, c-format msgid "Fail with %d\n" msgstr "Thất bại với %d\n" -#: ldlang.c:4172 +#: ldlang.c:4397 msgid "%X%P: section %s [%V -> %V] overlaps section %s [%V -> %V]\n" msgstr "%X%P: phần %s [%V -> %V] chồng chéo lên phần %s [%V -> %V]\n" -#: ldlang.c:4197 +#: ldlang.c:4413 +msgid "%X%P: region %s overflowed by %ld bytes\n" +msgstr "%X%P: vùng %s bị %ld byte tràn\n" + +#: ldlang.c:4436 msgid "%X%P: address 0x%v of %B section %s is not within region %s\n" msgstr "%X%P: địa chỉ 0x%v cửa %B phần %s không nằm trong miền %s\n" -#: ldlang.c:4206 -msgid "%X%P: region %s is full (%B section %s)\n" -msgstr "%X%P: miền %s đã đầy (%B phần %s)\n" +#: ldlang.c:4447 +msgid "%X%P: %B section %s will not fit in region %s\n" +msgstr "%X%P: phần %B %s quá lớn so với vùng %s\n" -#: ldlang.c:4247 +#: ldlang.c:4487 #, c-format msgid "%F%S: non constant or forward reference address expression for section %s\n" msgstr "%F%S: biểu thức địa chỉ tham chiếu khác hằng hay tiếp lên cho phần %s\n" -#: ldlang.c:4272 +#: ldlang.c:4512 msgid "%P%X: Internal error on COFF shared library section %s\n" msgstr "%P%X: lỗi nội bộ với phần thư viện dùng chung COFF %s\n" -#: ldlang.c:4331 +#: ldlang.c:4571 msgid "%P%F: error: no memory region specified for loadable section `%s'\n" msgstr "%P%F: lỗi: chưa ghi rõ vùng bộ nhớ cho phần có khả năng nạp « %s »\n" -#: ldlang.c:4336 +#: ldlang.c:4576 msgid "%P: warning: no memory region specified for loadable section `%s'\n" msgstr "%P: lỗi: chưa ghi rõ vùng bộ nhớ cho phần có khả năng nạp « %s »\n" -#: ldlang.c:4358 +#: ldlang.c:4598 msgid "%P: warning: changing start of section %s by %lu bytes\n" msgstr "%P: cảnh báo : đang thay đổi đầu của phần %s theo %lu byte\n" -#: ldlang.c:4437 +#: ldlang.c:4675 msgid "%P: warning: dot moved backwards before `%s'\n" msgstr "%P: cảnh báo : dấu chấm được di chuyển về ngược trước « %s »\n" -#: ldlang.c:4609 +#: ldlang.c:4848 msgid "%P%F: can't relax section: %E\n" msgstr "%P%F: không thể lơi ra phần: %E\n" -#: ldlang.c:4898 +#: ldlang.c:5170 msgid "%F%P: invalid data statement\n" msgstr "%F%P: câu dữ liệu không hợp lệ\n" -#: ldlang.c:4931 +#: ldlang.c:5203 msgid "%F%P: invalid reloc statement\n" msgstr "%F%P: câu định vị lại không hợp lệ\n" -#: ldlang.c:5063 +#: ldlang.c:5322 +msgid "%P%F: gc-sections requires either an entry or an undefined symbol\n" +msgstr "%P%F: gc-sections yêu cầu hoặc một mục nhập hoặc một ký hiệu chưa xác định\n" + +#: ldlang.c:5347 msgid "%P%F:%s: can't set start address\n" msgstr "%P%F:%s: không thể đặt địa chỉ bắt đầu\n" -#: ldlang.c:5076 ldlang.c:5095 +#: ldlang.c:5360 ldlang.c:5379 msgid "%P%F: can't set start address\n" msgstr "%P%F: không thể đặt địa chỉ bắt đầu\n" -#: ldlang.c:5088 +#: ldlang.c:5372 msgid "%P: warning: cannot find entry symbol %s; defaulting to %V\n" msgstr "%P: cảnh báo : không tìm thấy ký hiệu vào %s; nên dùng giá trị mặc định %V\n" -#: ldlang.c:5100 +#: ldlang.c:5384 msgid "%P: warning: cannot find entry symbol %s; not setting start address\n" msgstr "%P: cảnh báo : không tìm thấy ký hiệu vào %s; nên không đặt địa chỉ bắt đầu\n" -#: ldlang.c:5149 +#: ldlang.c:5434 msgid "%P%F: Relocatable linking with relocations from format %s (%B) to format %s (%B) is not supported\n" msgstr "%P%F: không hỗ trợ khả năng liên kết có khả năng định vị lại với sự định vị lại từ định dạng %s (%B) sang định dạng %s (%B).\n" -#: ldlang.c:5159 +#: ldlang.c:5444 msgid "%P%X: %s architecture of input file `%B' is incompatible with %s output\n" msgstr "%P%X: kiến trúc %s của tập tin nhập « %B » không tương thích với kết xuất %s\n" -#: ldlang.c:5181 +#: ldlang.c:5466 msgid "%P%X: failed to merge target specific data of file %B\n" msgstr "%P%X: lỗi hợp nhất dữ liệu đặc trưng cho đích của tập tin %B\n" -#: ldlang.c:5265 +#: ldlang.c:5567 msgid "" "\n" "Allocating common symbols\n" @@ -841,7 +851,7 @@ msgstr "" "\n" "Đang cấp phát các ký hiệu dùng chung\n" -#: ldlang.c:5266 +#: ldlang.c:5568 msgid "" "Common symbol size file\n" "\n" @@ -849,156 +859,160 @@ msgstr "" "Ký hiệu chung kích cỡ tập tin\n" "\n" -#: ldlang.c:5401 +#: ldlang.c:5701 msgid "%P%F: invalid syntax in flags\n" msgstr "%P%F: cú pháp không hợp lệ trong các cờ\n" # Type: error # Description -#: ldlang.c:5714 +#: ldlang.c:6069 msgid "%P%F: Failed to create hash table\n" msgstr "%P%F: lỗi tạo bảng băm\n" -#: ldlang.c:6009 +#: ldlang.c:6370 msgid "%P%F: multiple STARTUP files\n" msgstr "%P%F: có nhiều tập tin STARTUP (khởi chạy)\n" -#: ldlang.c:6057 +#: ldlang.c:6418 msgid "%X%P:%S: section has both a load address and a load region\n" msgstr "%X%P:%S: phần có cả hai địa chỉ nạp và vùng nạp\n" -#: ldlang.c:6314 +#: ldlang.c:6652 +msgid "%F%P: no sections assigned to phdrs\n" +msgstr "%F%P: chưa gán phần cho phdirs\n" + +#: ldlang.c:6689 msgid "%F%P: bfd_record_phdr failed: %E\n" msgstr "%F%P: « bfd_record_phdr » bị lỗi: %E\n" -#: ldlang.c:6334 +#: ldlang.c:6709 msgid "%X%P: section `%s' assigned to non-existent phdr `%s'\n" msgstr "%X%P: phần « %s » được gán cho phdr không tồn tại « %s »\n" -#: ldlang.c:6725 +#: ldlang.c:7100 msgid "%X%P: unknown language `%s' in version information\n" msgstr "%X%P: gặp ngôn ngữ lạ « %s » trong thông tin phiên bản\n" -#: ldlang.c:6867 +#: ldlang.c:7242 msgid "%X%P: anonymous version tag cannot be combined with other version tags\n" msgstr "%X%P: thẻ phiên bản vô danh không kết hợp được với thẻ phiên bản khác\n" -#: ldlang.c:6876 +#: ldlang.c:7251 msgid "%X%P: duplicate version tag `%s'\n" msgstr "%X%P: thẻ phiên bản trùng « %s »\n" -#: ldlang.c:6896 ldlang.c:6905 ldlang.c:6922 ldlang.c:6932 +#: ldlang.c:7271 ldlang.c:7280 ldlang.c:7297 ldlang.c:7307 msgid "%X%P: duplicate expression `%s' in version information\n" msgstr "%X%P: biểu thức trùng « %s » trong thông tin phiên bản\n" -#: ldlang.c:6972 +#: ldlang.c:7347 msgid "%X%P: unable to find version dependency `%s'\n" msgstr "%X%P: không tìm thấy quan hệ phụ thuộc của phiên bản « %s »\n" -#: ldlang.c:6994 +#: ldlang.c:7369 msgid "%X%P: unable to read .exports section contents\n" msgstr "%X%P: không thể đọc nội dung của phần « .exports » (xuất khẩu)\n" -#: ldmain.c:234 +#: ldmain.c:233 msgid "%X%P: can't set BFD default target to `%s': %E\n" msgstr "%X%P: không thể đặt đích mặc định BFD thành « %s »: %E\n" -#: ldmain.c:298 +#: ldmain.c:296 msgid "%P%F: --relax and -r may not be used together\n" msgstr "%P%F: không cho phép sử dụng đồng thời hai tùy chọn « --relax » (lơi ra) và « -r »\n" -#: ldmain.c:300 +#: ldmain.c:298 msgid "%P%F: -r and -shared may not be used together\n" msgstr "%P%F: không thể sử dụng đồng thời hai tùy chọn « -r » và « -shared » (dùng chung)\n" -#: ldmain.c:343 +#: ldmain.c:341 msgid "%P%F: -F may not be used without -shared\n" msgstr "%P%F: không thể sử dụng tùy chọn « -F » khi không cũng có tùy chọn « -shared » (dùng chung)\n" -#: ldmain.c:345 +#: ldmain.c:343 msgid "%P%F: -f may not be used without -shared\n" msgstr "%P%F: không thể sử dụng tùy chọn « -f » khi không có tùy chọn « -shared » (dùng chung)\n" -#: ldmain.c:397 +#: ldmain.c:391 msgid "using external linker script:" msgstr "đang dùng văn lệnh liên kết bên ngoài:" -#: ldmain.c:399 +#: ldmain.c:393 msgid "using internal linker script:" msgstr "đang dùng văn lệnh liên kết bên trong:" -#: ldmain.c:433 +#: ldmain.c:427 msgid "%P%F: no input files\n" msgstr "%P%F: không có tập tin nhập vào\n" -#: ldmain.c:437 +#: ldmain.c:431 msgid "%P: mode %s\n" msgstr "%P: chế độ %s\n" -#: ldmain.c:453 +#: ldmain.c:447 msgid "%P%F: cannot open map file %s: %E\n" msgstr "%P%F: không thể mở tập tin sơ đồ %s: %E\n" -#: ldmain.c:485 +#: ldmain.c:479 msgid "%P: link errors found, deleting executable `%s'\n" msgstr "%P: gặp lỗi liên kết nên xoá tập tin có khả năng thực hiện « %s »\n" -#: ldmain.c:494 +#: ldmain.c:488 msgid "%F%B: final close failed: %E\n" msgstr "%F%B: lỗi đóng cuối cùng: %E\n" -#: ldmain.c:520 +#: ldmain.c:514 msgid "%X%P: unable to open for source of copy `%s'\n" msgstr "%X%P: không thể mở cho nguồn của bản sao « %s »\n" -#: ldmain.c:523 +#: ldmain.c:517 msgid "%X%P: unable to open for destination of copy `%s'\n" msgstr "%X%P: không thể mở cho đích của bản sao « %s »\n" -#: ldmain.c:530 +#: ldmain.c:524 msgid "%P: Error writing file `%s'\n" msgstr "%P: gặp lỗi khi ghi tập tin « %s »\n" -#: ldmain.c:535 pe-dll.c:1572 +#: ldmain.c:529 pe-dll.c:1613 #, c-format msgid "%P: Error closing file `%s'\n" msgstr "%P: gặp lỗi khi đóng tập tin « %s »\n" -#: ldmain.c:551 +#: ldmain.c:545 #, c-format msgid "%s: total time in link: %ld.%06ld\n" msgstr "%s: tổng thời gian trong liên kết: %ld.%06ld\n" -#: ldmain.c:554 +#: ldmain.c:548 #, c-format msgid "%s: data size %ld\n" msgstr "%s: kích cỡ dữ liệu %ld\n" -#: ldmain.c:637 +#: ldmain.c:631 msgid "%P%F: missing argument to -m\n" msgstr "%P%F: thiếu đối số tới « -m »\n" -#: ldmain.c:784 ldmain.c:803 ldmain.c:834 +#: ldmain.c:678 ldmain.c:697 ldmain.c:728 msgid "%P%F: bfd_hash_table_init failed: %E\n" msgstr "%P%F: « bfd_hash_table_init » bị lỗi: %E\n" -#: ldmain.c:788 ldmain.c:807 +#: ldmain.c:682 ldmain.c:701 msgid "%P%F: bfd_hash_lookup failed: %E\n" msgstr "%P%F: « bfd_hash_lookup » bị lỗi: %E\n" -#: ldmain.c:821 +#: ldmain.c:715 msgid "%X%P: error: duplicate retain-symbols-file\n" msgstr "%X%P: lỗi: « retain-symbols-file » (giữ lại tập tin ký hiệu) trùng\n" -#: ldmain.c:864 +#: ldmain.c:758 msgid "%P%F: bfd_hash_lookup for insertion failed: %E\n" msgstr "%P%F: lỗi « bfd_hash_lookup » để chèn: %E\n" -#: ldmain.c:869 +#: ldmain.c:763 msgid "%P: `-retain-symbols-file' overrides `-s' and `-S'\n" msgstr "%P: tùy chọn « -retain-symbols-file » (giữ lại tập tin ký hiệu) có quyền cao hơn « -s » và « -S »\n" -#: ldmain.c:944 +#: ldmain.c:827 #, c-format msgid "" "Archive member included because of file (symbol)\n" @@ -1007,133 +1021,133 @@ msgstr "" "Gồm bộ phạn kho do tập tin (ký hiệu)\n" "\n" -#: ldmain.c:1014 +#: ldmain.c:897 msgid "%X%C: multiple definition of `%T'\n" msgstr "%X%C: xác định nhiều lần « %T »\n" -#: ldmain.c:1017 +#: ldmain.c:900 msgid "%D: first defined here\n" msgstr "%D: xác định lần đầu ở đây\n" -#: ldmain.c:1021 +#: ldmain.c:904 msgid "%P: Disabling relaxation: it will not work with multiple definitions\n" msgstr "%P: đang tắt khả năng lơi ra: nó sẽ không hoạt động với nhiều lời xác định\n" -#: ldmain.c:1051 +#: ldmain.c:934 msgid "%B: warning: definition of `%T' overriding common\n" msgstr "%B: cảnh báo : lời xác định « %T » đè lên sự dùng chung\n" -#: ldmain.c:1054 +#: ldmain.c:937 msgid "%B: warning: common is here\n" msgstr "%B: cảnh báo : sự dùng chung ở đây\n" -#: ldmain.c:1061 +#: ldmain.c:944 msgid "%B: warning: common of `%T' overridden by definition\n" msgstr "%B: cảnh báo : sự dùng chung của « %T » bị đè bởi lởi xác định\n" -#: ldmain.c:1064 +#: ldmain.c:947 msgid "%B: warning: defined here\n" msgstr "%B: cảnh báo : đã xác định ở đây\n" -#: ldmain.c:1071 +#: ldmain.c:954 msgid "%B: warning: common of `%T' overridden by larger common\n" msgstr "%B: cảnh báo : sự dùng chung của « %T » bị đè bởi sự dùng chung lớn hơn\n" -#: ldmain.c:1074 +#: ldmain.c:957 msgid "%B: warning: larger common is here\n" msgstr "%B: cảnh báo : sự dùng chung lớn hơn ở đây\n" -#: ldmain.c:1078 +#: ldmain.c:961 msgid "%B: warning: common of `%T' overriding smaller common\n" msgstr "%B: cảnh báo : sự dùng chung của « %T » đè sự dùng chung nhỏ hơn\n" -#: ldmain.c:1081 +#: ldmain.c:964 msgid "%B: warning: smaller common is here\n" msgstr "%B: cảnh báo : sự dùng chung nhỏ hơn ở đây\n" -#: ldmain.c:1085 +#: ldmain.c:968 msgid "%B: warning: multiple common of `%T'\n" msgstr "%B: cảnh báo : có nhiều sự dùng chung của « %T »\n" -#: ldmain.c:1087 +#: ldmain.c:970 msgid "%B: warning: previous common is here\n" msgstr "%B: cảnh báo : sự dùng chung trước ở đây\n" -#: ldmain.c:1107 ldmain.c:1145 +#: ldmain.c:990 ldmain.c:1028 msgid "%P: warning: global constructor %s used\n" msgstr "%P: cảnh báo : dùng bộ cấu trúc toàn cục %s\n" -#: ldmain.c:1155 +#: ldmain.c:1038 msgid "%P%F: BFD backend error: BFD_RELOC_CTOR unsupported\n" msgstr "%P%F: lỗi hậu phương BFD: « BFD_RELOC_CTOR » không được hỗ trợ\n" #. We found a reloc for the symbol we are looking for. -#: ldmain.c:1209 ldmain.c:1211 ldmain.c:1213 ldmain.c:1251 ldmain.c:1299 +#: ldmain.c:1092 ldmain.c:1094 ldmain.c:1096 ldmain.c:1114 ldmain.c:1159 msgid "warning: " msgstr "cảnh báo : " -#: ldmain.c:1334 +#: ldmain.c:1194 msgid "%F%P: bfd_hash_table_init failed: %E\n" msgstr "%F%P: « bfd_hash_table_init » bị lỗi: %E\n" -#: ldmain.c:1341 +#: ldmain.c:1201 msgid "%F%P: bfd_hash_lookup failed: %E\n" msgstr "%F%P: « bfd_hash_lookup » bị lỗi: %E\n" -#: ldmain.c:1362 +#: ldmain.c:1222 msgid "%X%C: undefined reference to `%T'\n" msgstr "%X%C: tham chiếu đến « %T » chưa xác định\n" -#: ldmain.c:1365 +#: ldmain.c:1225 msgid "%C: warning: undefined reference to `%T'\n" msgstr "%C: cảnh báo : tham chiếu đến « %T » chưa xác định\n" -#: ldmain.c:1371 +#: ldmain.c:1231 msgid "%X%D: more undefined references to `%T' follow\n" msgstr "%X%D: theo đây có các tham chiếu đến « %T » chưa xác định thêm nữa\n" -#: ldmain.c:1374 +#: ldmain.c:1234 msgid "%D: warning: more undefined references to `%T' follow\n" msgstr "%D: cảnh báo : theo đây có các tham chiếu đến « %T » chưa xác định thêm nữa\n" -#: ldmain.c:1385 +#: ldmain.c:1245 msgid "%X%B: undefined reference to `%T'\n" msgstr "%X%B: tham chiếu đến « %T » chưa xác định\n" -#: ldmain.c:1388 +#: ldmain.c:1248 msgid "%B: warning: undefined reference to `%T'\n" msgstr "%B: cảnh báo : tham chiếu đến « %T » chưa xác định\n" -#: ldmain.c:1394 +#: ldmain.c:1254 msgid "%X%B: more undefined references to `%T' follow\n" msgstr "%X%B: theo đây có các tham chiếu đến « %T » chưa xác định thêm nữa\n" -#: ldmain.c:1397 +#: ldmain.c:1257 msgid "%B: warning: more undefined references to `%T' follow\n" msgstr "%B: cảnh báo : theo đây có các tham chiếu đến « %T » chưa xác định thêm nữa\n" -#: ldmain.c:1436 +#: ldmain.c:1296 msgid " additional relocation overflows omitted from the output\n" msgstr "các sự tràn định vị lại thêm nữa bị bỏ đi khỏi kết xuất\n" -#: ldmain.c:1449 +#: ldmain.c:1309 msgid " relocation truncated to fit: %s against undefined symbol `%T'" msgstr " sự định vị lại bị cắt ngắn để vừa: %s so với ký hiệu chưa xác định « %T »" -#: ldmain.c:1454 +#: ldmain.c:1314 msgid " relocation truncated to fit: %s against symbol `%T' defined in %A section in %B" msgstr " sự định vị lại bị cắt ngắn để vừa: %s so với ký hiệu « %T » đã xác định trong phần %A trong %B" -#: ldmain.c:1466 +#: ldmain.c:1326 msgid " relocation truncated to fit: %s against `%T'" msgstr " sự định vị lại bị cắt ngắn để vừa: %s so với « %T »" -#: ldmain.c:1483 +#: ldmain.c:1343 #, c-format msgid "%X%C: dangerous relocation: %s\n" msgstr "%X%C: sự định vị lại nguy hiểm: %s\n" -#: ldmain.c:1498 +#: ldmain.c:1358 msgid "%X%C: reloc refers to symbol `%T' which is not being output\n" msgstr "%X%C: sự định vị lại tham chiếu đến ký hiệu « %T » mà không đang được xuất ra\n" @@ -1147,743 +1161,749 @@ msgstr "không có ký hiệu" msgid "built in linker script:%u" msgstr "văn lệnh liên kết có sẵn: %u" -#: ldmisc.c:301 ldmisc.c:305 -msgid "%B%F: could not read symbols\n" -msgstr "%B%F: không thể đọc các ký hiệu\n" - -#: ldmisc.c:347 +#: ldmisc.c:323 msgid "%B: In function `%T':\n" msgstr "%B: trong hàm « %T »:\n" -#: ldmisc.c:472 +#: ldmisc.c:445 msgid "%F%P: internal error %s %d\n" msgstr "%F%P: lỗi nội bộ %s %d\n" -#: ldmisc.c:521 +#: ldmisc.c:494 msgid "%P: internal error: aborting at %s line %d in %s\n" msgstr "%P: lỗi nội bộ : nên hủy bỏ tại %s dòng %d trong %s\n" -#: ldmisc.c:524 +#: ldmisc.c:497 msgid "%P: internal error: aborting at %s line %d\n" msgstr "%P: lỗi nội bộ : nên hủy bỏ tại %s dòng %d\n" -#: ldmisc.c:526 +#: ldmisc.c:499 msgid "%P%F: please report this bug\n" msgstr "%P%F: hãy thông báo lỗi này\n" #. Output for noisy == 2 is intended to follow the GNU standards. -#: ldver.c:37 +#: ldver.c:38 #, c-format msgid "GNU ld %s\n" msgstr "GNU ld %s\n" -#: ldver.c:41 +#: ldver.c:42 #, c-format msgid "Copyright 2007 Free Software Foundation, Inc.\n" msgstr "Tác quyền © năm 2007 của Tổ chức Phần mềm Tự do.\n" -#: ldver.c:42 +#: ldver.c:43 #, c-format msgid "" "This program is free software; you may redistribute it under the terms of\n" -"the GNU General Public License. This program has absolutely no warranty.\n" +"the GNU General Public License version 3 or (at your option) a later version.\n" +"This program has absolutely no warranty.\n" msgstr "" "Chương trình này là phần mềm tự do; bạn có thể phát hành lại nó\n" -"với điều kiện của Giấy Phép Công Cộng GNU.\n" +"với điều kiện của Giấy Phép Công Cộng GNU, hoặc phiên bản 3\n" +"của Giấy Phép này, hoặc (tùy chọn) bất kỳ phiên bản sau nào.\n" "Chương trình này không bảo hành gì cả.\n" -#: ldver.c:51 +#: ldver.c:53 #, c-format msgid " Supported emulations:\n" msgstr " Mô phỏng đã hỗ trợ :\n" -#: ldwrite.c:55 ldwrite.c:191 +#: ldwrite.c:56 ldwrite.c:196 msgid "%P%F: bfd_new_link_order failed\n" msgstr "%P%F: « bfd_new_link_order » bị lỗi\n" -#: ldwrite.c:344 +#: ldwrite.c:354 msgid "%F%P: cannot create split section name for %s\n" msgstr "%F%P: không thể tạo tên phần đã xẻ cho %s\n" -#: ldwrite.c:356 +#: ldwrite.c:366 msgid "%F%P: clone section failed: %E\n" msgstr "%F%P: lỗi bắt chước phần: %E\n" -#: ldwrite.c:394 +#: ldwrite.c:404 #, c-format msgid "%8x something else\n" msgstr "%8x cái gì khác\n" -#: ldwrite.c:564 +#: ldwrite.c:574 msgid "%F%P: final link failed: %E\n" msgstr "%F%P: liên kết cuối cùng bị lỗi: %E\n" -#: lexsup.c:205 lexsup.c:341 +#: lexsup.c:206 lexsup.c:344 msgid "KEYWORD" msgstr "TỪ_KHOÁ" -#: lexsup.c:205 +#: lexsup.c:206 msgid "Shared library control for HP/UX compatibility" msgstr "Điều khiển thư viện dùng chung để tương thích với HP/UX" -#: lexsup.c:208 +#: lexsup.c:209 msgid "ARCH" msgstr "ARCH" -#: lexsup.c:208 +#: lexsup.c:209 msgid "Set architecture" msgstr "Đặt kiến trúc" -#: lexsup.c:210 lexsup.c:447 +#: lexsup.c:211 lexsup.c:454 msgid "TARGET" msgstr "ĐÍCH" -#: lexsup.c:210 +#: lexsup.c:211 msgid "Specify target for following input files" msgstr "Ghi rõ đích cho những tập tin nhập theo đây" -#: lexsup.c:213 lexsup.c:262 lexsup.c:274 lexsup.c:287 lexsup.c:289 -#: lexsup.c:402 lexsup.c:459 lexsup.c:516 lexsup.c:528 +#: lexsup.c:214 lexsup.c:263 lexsup.c:275 lexsup.c:288 lexsup.c:290 +#: lexsup.c:408 lexsup.c:466 lexsup.c:526 lexsup.c:539 msgid "FILE" msgstr "TẬP TIN" -#: lexsup.c:213 +#: lexsup.c:214 msgid "Read MRI format linker script" msgstr "Đọc văn lệnh liên kết định dạng MRI" -#: lexsup.c:215 +#: lexsup.c:216 msgid "Force common symbols to be defined" msgstr "Ép buộc xác định các ký hiệu dùng chung" -#: lexsup.c:219 lexsup.c:501 lexsup.c:503 lexsup.c:505 +#: lexsup.c:220 lexsup.c:510 lexsup.c:512 lexsup.c:514 msgid "ADDRESS" msgstr "ĐỊA CHỈ" -#: lexsup.c:219 +#: lexsup.c:220 msgid "Set start address" msgstr "Đặt địa chỉ bắt đầu" -#: lexsup.c:221 +#: lexsup.c:222 msgid "Export all dynamic symbols" msgstr "Xuất mọi ký hiệu động" -#: lexsup.c:223 +#: lexsup.c:224 msgid "Link big-endian objects" msgstr "Liên kết các đối tượng về cuối lớn" -#: lexsup.c:225 +#: lexsup.c:226 msgid "Link little-endian objects" msgstr "Liên kết các đối tượng về cuối nhỏ" -#: lexsup.c:227 lexsup.c:230 +#: lexsup.c:228 lexsup.c:231 msgid "SHLIB" msgstr "SHLIB" -#: lexsup.c:227 +#: lexsup.c:228 msgid "Auxiliary filter for shared object symbol table" msgstr "Bộ lọc bổ sung cho bảng ký hiệu đối tượng dùng chung" -#: lexsup.c:230 +#: lexsup.c:231 msgid "Filter for shared object symbol table" msgstr "Bộ lọc cho bảng ký hiệu đối tượng dùng chung" -#: lexsup.c:233 +#: lexsup.c:234 msgid "Ignored" msgstr "Bị bỏ qua" -#: lexsup.c:235 +#: lexsup.c:236 msgid "SIZE" msgstr "CỠ" -#: lexsup.c:235 +#: lexsup.c:236 msgid "Small data size (if no size, same as --shared)" msgstr "Kích cỡ dữ liệu nhỏ (không có kích cỡ thì bằng tùy chọn « --shared »)" -#: lexsup.c:238 +#: lexsup.c:239 msgid "FILENAME" msgstr "TÊN TẬP TIN" -#: lexsup.c:238 +#: lexsup.c:239 msgid "Set internal name of shared library" msgstr "Đặt tên nội bộ của thư viện dùng chung" -#: lexsup.c:240 +#: lexsup.c:241 msgid "PROGRAM" msgstr "CHƯƠNG TRÌNH" -#: lexsup.c:240 +#: lexsup.c:241 msgid "Set PROGRAM as the dynamic linker to use" msgstr "Đặt CHƯƠNG TRÌNH là bộ liên kết động cần dùng" -#: lexsup.c:243 +#: lexsup.c:244 msgid "LIBNAME" msgstr "TÊN THƯ VIỆN" -#: lexsup.c:243 +#: lexsup.c:244 msgid "Search for library LIBNAME" msgstr "Tìm kiếm thư viện TÊN THƯ VIỆN" -#: lexsup.c:245 +#: lexsup.c:246 msgid "DIRECTORY" msgstr "THƯ MỤC" -#: lexsup.c:245 +#: lexsup.c:246 msgid "Add DIRECTORY to library search path" msgstr "Thêm THƯ MỤC vào đường dẫn tìm kiếm thư viện" -#: lexsup.c:248 +#: lexsup.c:249 msgid "Override the default sysroot location" msgstr "Đè lên địa điểm sysroot (gốc hệ thống) mặc định" -#: lexsup.c:250 +#: lexsup.c:251 msgid "EMULATION" msgstr "MÔ PHỎNG" -#: lexsup.c:250 +#: lexsup.c:251 msgid "Set emulation" msgstr "Đặt sự mô phỏng" -#: lexsup.c:252 +#: lexsup.c:253 msgid "Print map file on standard output" msgstr "In tập tin sơ đồ ra thiết bị xuất chuẩn" -#: lexsup.c:254 +#: lexsup.c:255 msgid "Do not page align data" msgstr "Đừng chỉnh canh dữ liệu theo trang" -#: lexsup.c:256 +#: lexsup.c:257 msgid "Do not page align data, do not make text readonly" msgstr "Đừng chỉnh canh dữ liệu theo trang, đừng đặt văn bản là chỉ-đọc" -#: lexsup.c:259 +#: lexsup.c:260 msgid "Page align data, make text readonly" msgstr "Chỉnh canh dữ liệu theo trang, đặt văn bản là chỉ-đọc" -#: lexsup.c:262 +#: lexsup.c:263 msgid "Set output file name" msgstr "Đặt tên tập tin xuất" -#: lexsup.c:264 +#: lexsup.c:265 msgid "Optimize output file" msgstr "Tối ưu hoá tập tin xuất" -#: lexsup.c:266 +#: lexsup.c:267 msgid "Ignored for SVR4 compatibility" msgstr "Bị bỏ qua để tương thích với SVR4" -#: lexsup.c:270 +#: lexsup.c:271 msgid "Generate relocatable output" msgstr "Tạo ra kết xuất có thể định vị lại" -#: lexsup.c:274 +#: lexsup.c:275 msgid "Just link symbols (if directory, same as --rpath)" msgstr "Chỉ liên kết các ký hiệu (thư mục thì bằng tùy chọn « --rpath »)" -#: lexsup.c:277 +#: lexsup.c:278 msgid "Strip all symbols" msgstr "Tước mọi ký hiệu" -#: lexsup.c:279 +#: lexsup.c:280 msgid "Strip debugging symbols" msgstr "Tước các ký hiệu gỡ lối" -#: lexsup.c:281 +#: lexsup.c:282 msgid "Strip symbols in discarded sections" msgstr "Tước các ký hiệu trong phần bị hủy" -#: lexsup.c:283 +#: lexsup.c:284 msgid "Do not strip symbols in discarded sections" msgstr "Đừng tước ký hiệu trong phần bị hủy" -#: lexsup.c:285 +#: lexsup.c:286 msgid "Trace file opens" msgstr "Tập tin vết có mở" -#: lexsup.c:287 +#: lexsup.c:288 msgid "Read linker script" msgstr "Đọc văn lệnh liên kết" -#: lexsup.c:289 +#: lexsup.c:290 msgid "Read default linker script" msgstr "Đọc văn lệnh liên kết mặc định" -#: lexsup.c:293 lexsup.c:311 lexsup.c:379 lexsup.c:400 lexsup.c:494 -#: lexsup.c:519 lexsup.c:554 +#: lexsup.c:294 lexsup.c:312 lexsup.c:385 lexsup.c:406 lexsup.c:503 +#: lexsup.c:529 lexsup.c:565 msgid "SYMBOL" msgstr "KÝ HIỆU" -#: lexsup.c:293 +#: lexsup.c:294 msgid "Start with undefined reference to SYMBOL" msgstr "Bắt đầu với tham chiệu chưa xác định đến KÝ HIỆU" -#: lexsup.c:296 +#: lexsup.c:297 msgid "[=SECTION]" msgstr "[=PHẦN]" -#: lexsup.c:297 +#: lexsup.c:298 msgid "Don't merge input [SECTION | orphan] sections" msgstr "Đừng trộn phần nhập [PHẦN | thừa]" -#: lexsup.c:299 +#: lexsup.c:300 msgid "Build global constructor/destructor tables" msgstr "Xây dựng các bảng cấu tạo/phá toàn cục" -#: lexsup.c:301 +#: lexsup.c:302 msgid "Print version information" msgstr "In ra thông tin phiên bản" -#: lexsup.c:303 +#: lexsup.c:304 msgid "Print version and emulation information" msgstr "In ra thông tin phiên bản và mô phỏng" -#: lexsup.c:305 +#: lexsup.c:306 msgid "Discard all local symbols" msgstr "Hủy mọi ký hiệu cục bộ" -#: lexsup.c:307 +#: lexsup.c:308 msgid "Discard temporary local symbols (default)" msgstr "Hủy các ký hiệu cục bộ tạm thời (mặc định)" -#: lexsup.c:309 +#: lexsup.c:310 msgid "Don't discard any local symbols" msgstr "Đừng hủy ký hiệu cục bộ" -#: lexsup.c:311 +#: lexsup.c:312 msgid "Trace mentions of SYMBOL" msgstr "Vết lần gặp KÝ HIỆU" -#: lexsup.c:313 lexsup.c:461 lexsup.c:463 +#: lexsup.c:314 lexsup.c:468 lexsup.c:470 msgid "PATH" msgstr "ĐƯỜNG DẪN" -#: lexsup.c:313 +#: lexsup.c:314 msgid "Default search path for Solaris compatibility" msgstr "Đường dẫn tìm kiếm mặc định để tương thích với Solaris" -#: lexsup.c:316 +#: lexsup.c:317 msgid "Start a group" msgstr "Bắt đầu nhóm" -#: lexsup.c:318 +#: lexsup.c:319 msgid "End a group" msgstr "Kết thúc nhóm" -#: lexsup.c:322 +#: lexsup.c:323 msgid "Accept input files whose architecture cannot be determined" msgstr "Chấp nhận tập tin nhập có kiến trúc không rõ" -#: lexsup.c:326 +#: lexsup.c:327 msgid "Reject input files whose architecture is unknown" msgstr "Từ chối tập tin nhập có kiến trúc không rõ" -#: lexsup.c:329 +#: lexsup.c:330 msgid "" "Set DT_NEEDED tags for DT_NEEDED entries in\n" -"\t\t\t\tfollowing dynamic libs" +" following dynamic libs" msgstr "" -"Lập thẻ « DT_NEEDED » (cần thiết DT)\n" +"Đặt thẻ « DT_NEEDED » (DT yêu cầu)\n" "\tcho mục nhập « DT_NEEDED »\n" "\ttrong những thư viện động theo đây" -#: lexsup.c:332 +#: lexsup.c:334 msgid "" "Do not set DT_NEEDED tags for DT_NEEDED entries\n" -"\t\t\t\tin following dynamic libs" +" in following dynamic libs" msgstr "" -"Đừng lập thẻ « DT_NEEDED » (cần thiết DT)\n" -"\tcho mục nhập « DT_NEEDED »\n" -"\ttrong những thư viện động theo đây" +"Không đặt thẻ « DT_NEEDED »\n" +"cho mục nhập « DT_NEEDED »\n" +"trong những thư viện theo đây" -#: lexsup.c:335 +#: lexsup.c:338 msgid "Only set DT_NEEDED for following dynamic libs if used" msgstr "" "Chỉ lập thẻ « DT_NEEDED » (cần thiết DT)\n" "\tcho những thư viện động theo đây nếu được dùng" -#: lexsup.c:338 +#: lexsup.c:341 msgid "Always set DT_NEEDED for following dynamic libs" msgstr "" "Luôn luôn lập thẻ « DT_NEEDED » (cần thiết DT)\n" "\tcho những thư viện động theo đây" -#: lexsup.c:341 +#: lexsup.c:344 msgid "Ignored for SunOS compatibility" msgstr "Bị bỏ qua để tương thích với SunOS" -#: lexsup.c:343 +#: lexsup.c:346 msgid "Link against shared libraries" msgstr "Liên kết so với thư viện dùng chung" -#: lexsup.c:349 +#: lexsup.c:352 msgid "Do not link against shared libraries" msgstr "Đừng liên kết so với thư viện dùng chung" -#: lexsup.c:357 +#: lexsup.c:360 msgid "Bind global references locally" msgstr "Đóng kết cục bộ tham chiếu toàn cục" -#: lexsup.c:359 +#: lexsup.c:362 msgid "Bind global function references locally" msgstr "Đóng kết cục bộ tham chiếu hàm toàn cục" -#: lexsup.c:361 +#: lexsup.c:364 msgid "Check section addresses for overlaps (default)" msgstr "Kiểm tra địa chỉ phần có chồng chéo (mặc định)" -#: lexsup.c:364 +#: lexsup.c:367 msgid "Do not check section addresses for overlaps" msgstr "Đừng kiểm tra địa chỉ phần có chồng chéo" -#: lexsup.c:367 +#: lexsup.c:370 msgid "Output cross reference table" msgstr "Xuất bảng tham chiếu chéo" -#: lexsup.c:369 +#: lexsup.c:372 msgid "SYMBOL=EXPRESSION" msgstr "KÝ HIỆU=BIỂU THỨC" -#: lexsup.c:369 +#: lexsup.c:372 msgid "Define a symbol" msgstr "Xác định một ký hiệu" -#: lexsup.c:371 +#: lexsup.c:374 msgid "[=STYLE]" msgstr "[=KIỂU DÁNG]" -#: lexsup.c:371 +#: lexsup.c:374 msgid "Demangle symbol names [using STYLE]" msgstr "Tháo gỡ tên ký hiệu [dùng KIỂU DÁNG]" -#: lexsup.c:374 +#: lexsup.c:377 msgid "Generate embedded relocs" msgstr "Tạo ra sự định vị lại nhúng" -#: lexsup.c:376 +#: lexsup.c:379 msgid "Treat warnings as errors" msgstr "Xử lý cảnh báo là lỗi" -#: lexsup.c:379 +#: lexsup.c:382 +msgid "Do not treat warnings as errors (default)" +msgstr "Không xử lý cảnh báo là lỗi (mặc định)" + +#: lexsup.c:385 msgid "Call SYMBOL at unload-time" msgstr "Gọi KÝ HIỆU vào lúc bỏ nạp" -#: lexsup.c:381 +#: lexsup.c:387 msgid "Force generation of file with .exe suffix" msgstr "Ép buộc tạo ra tập tin có hậu tố « .exe »" -#: lexsup.c:383 +#: lexsup.c:389 msgid "Remove unused sections (on some targets)" msgstr "Gỡ bỏ các phần không dùng (trên một số đích)" -#: lexsup.c:386 +#: lexsup.c:392 msgid "Don't remove unused sections (default)" msgstr "Đừng gỡ bỏ các phần không dùng (mặc định)" -#: lexsup.c:389 +#: lexsup.c:395 msgid "List removed unused sections on stderr" msgstr "Liệt kê trên stderr các phần không dùng bị gỡ bỏ" -#: lexsup.c:392 +#: lexsup.c:398 msgid "Do not list removed unused sections" msgstr "Đừng liệt kê các phần không dùng bị gỡ bỏ" -#: lexsup.c:395 +#: lexsup.c:401 msgid "Set default hash table size close to <NUMBER>" msgstr "Đặt kích cỡ bảng băm mặc định thành gần <SỐ>" -#: lexsup.c:398 +#: lexsup.c:404 msgid "Print option help" msgstr "In ra trợ giúp về tùy chọn" -#: lexsup.c:400 +#: lexsup.c:406 msgid "Call SYMBOL at load-time" msgstr "Gọi KÝ HIỆU vào lúc nạp" -#: lexsup.c:402 +#: lexsup.c:408 msgid "Write a map file" msgstr "Ghi tập tin sơ đồ" -#: lexsup.c:404 +#: lexsup.c:410 msgid "Do not define Common storage" msgstr "Đừng xác định sức chứa dùng chung" -#: lexsup.c:406 +#: lexsup.c:412 msgid "Do not demangle symbol names" msgstr "Đừng tháo gỡ tên ký hiệu" -#: lexsup.c:408 +#: lexsup.c:414 msgid "Use less memory and more disk I/O" msgstr "Chiếm ít bộ nhớ hơn, còn V/R đĩa nhiều hơn" -#: lexsup.c:410 +#: lexsup.c:416 msgid "Do not allow unresolved references in object files" msgstr "Đừng cho phép tham chiệu chưa tháo gỡ trong tập tin đối tượng" -#: lexsup.c:413 +#: lexsup.c:419 msgid "Allow unresolved references in shared libaries" msgstr "Cho phép tham chiệu chưa tháo gỡ trong thư viện dùng chung" -#: lexsup.c:417 +#: lexsup.c:423 msgid "Do not allow unresolved references in shared libs" msgstr "Đừng cho phép tham chiệu chưa tháo gỡ trong thư viện dùng chung" -#: lexsup.c:421 +#: lexsup.c:427 msgid "Allow multiple definitions" msgstr "Cho phép nhiều lời xác định" -#: lexsup.c:423 +#: lexsup.c:429 msgid "Disallow undefined version" msgstr "Không cho phép phiên bản chưa xác định" -#: lexsup.c:425 +#: lexsup.c:431 msgid "Create default symbol version" msgstr "Tạo phiên bản ký hiệu mặc định" -#: lexsup.c:428 +#: lexsup.c:434 msgid "Create default symbol version for imported symbols" msgstr "Tạo phiên bản ký hiệu mặc định cho các ký hiệu đã nhập khẩu" -#: lexsup.c:431 +#: lexsup.c:437 msgid "Don't warn about mismatched input files" msgstr "Đừng cảnh báo về tập tin nhập sai khớp" -#: lexsup.c:434 +#: lexsup.c:440 msgid "Don't warn on finding an incompatible library" msgstr "Đừng cảnh báo khi tìm thư viện không tương thích" -#: lexsup.c:437 +#: lexsup.c:443 msgid "Turn off --whole-archive" msgstr "Tắt tùy chọn « --whole-archive » (toàn kho)" -#: lexsup.c:439 +#: lexsup.c:445 msgid "Create an output file even if errors occur" msgstr "Tạo tập tin xuất thậm chí nếu gặp lỗi" -#: lexsup.c:444 +#: lexsup.c:450 msgid "" "Only use library directories specified on\n" -"\t\t\t\tthe command line" +" the command line" msgstr "" -"Chỉ dùng các thư mục thư viện\n" -"\tđược ghi rõ trên dòng lệnh" +"Chỉ sử dụng những thư mục thư viện\n" +"được ghi rõ trên dòng lệnh" -#: lexsup.c:447 +#: lexsup.c:454 msgid "Specify target of output file" msgstr "Ghi rõ đích của tập tin xuất" -#: lexsup.c:450 +#: lexsup.c:457 msgid "Ignored for Linux compatibility" msgstr "Bị bỏ qua để tương thích với Linux" -#: lexsup.c:453 +#: lexsup.c:460 msgid "Reduce memory overheads, possibly taking much longer" msgstr "Giảm bộ nhớ duy tu, có thể chạy rất chậm hơn" -#: lexsup.c:456 +#: lexsup.c:463 msgid "Relax branches on certain targets" msgstr "Lơi ra nhánh trên một số đích nào đó" -#: lexsup.c:459 +#: lexsup.c:466 msgid "Keep only symbols listed in FILE" msgstr "Giữ chỉ những ký hiệu được liệt kê trong TẬP TIN" -#: lexsup.c:461 +#: lexsup.c:468 msgid "Set runtime shared library search path" msgstr "Đặt đường dẫn tìm kiếm thư viện dùng chung vào lúc chạy" -#: lexsup.c:463 +#: lexsup.c:470 msgid "Set link time shared library search path" msgstr "Đặt đường dẫn tìm kiếm thư viện dùng chung vào lúc liên kết" -#: lexsup.c:466 +#: lexsup.c:473 msgid "Create a shared library" msgstr "Tạo thư viện dùng chung" -#: lexsup.c:470 +#: lexsup.c:477 msgid "Create a position independent executable" msgstr "Tạo tập tin có khả năng thực hiện không phụ thuộc vào vị trí" -#: lexsup.c:474 -msgid "Sort common symbols by size" -msgstr "Sắp xếp các ký hiệu dùng chung theo kích cỡ" +#: lexsup.c:481 +msgid "[=ascending|descending]" +msgstr "[=tăng|giảm]" + +#: lexsup.c:482 +msgid "Sort common symbols by alignment [in specified order]" +msgstr "Sắp xếp các ký hiệu dùng chung theo thứ tự đã ghi rõ" -#: lexsup.c:478 +#: lexsup.c:487 msgid "name|alignment" msgstr "tên|chỉnh_canh" -#: lexsup.c:479 +#: lexsup.c:488 msgid "Sort sections by name or maximum alignment" msgstr "Sắp xếp các phần theo tên hay sự chỉnh canh tối đa" -#: lexsup.c:481 +#: lexsup.c:490 msgid "COUNT" msgstr "SỐ_ĐẾM" -#: lexsup.c:481 +#: lexsup.c:490 msgid "How many tags to reserve in .dynamic section" msgstr "Số thẻ cần giữ lại trong phần « .dynamic » (động)" -#: lexsup.c:484 +#: lexsup.c:493 msgid "[=SIZE]" msgstr "[=CỠ]" -#: lexsup.c:484 +#: lexsup.c:493 msgid "Split output sections every SIZE octets" msgstr "Xẻ phần xuất sau mỗi CỠ bộ tám" -#: lexsup.c:487 +#: lexsup.c:496 msgid "[=COUNT]" msgstr "[=SỐ_ĐẾM]" -#: lexsup.c:487 +#: lexsup.c:496 msgid "Split output sections every COUNT relocs" msgstr "Xẻ phần xuất sau mỗi SỐ_ĐẾM sự định vị lại" -#: lexsup.c:490 +#: lexsup.c:499 msgid "Print memory usage statistics" msgstr "In ra thống kê cách sử dụng bộ nhớ" -#: lexsup.c:492 +#: lexsup.c:501 msgid "Display target specific options" msgstr "Hiển thị các tùy chọn đặc trưng cho đích" -#: lexsup.c:494 +#: lexsup.c:503 msgid "Do task level linking" msgstr "Liên kết trên cấp tác vụ" -#: lexsup.c:496 +#: lexsup.c:505 msgid "Use same format as native linker" msgstr "Dùng cùng định dạng với bộ liên kết sở hữu" -#: lexsup.c:498 +#: lexsup.c:507 msgid "SECTION=ADDRESS" msgstr "PHẦN=ĐỊA_CHỈ" -#: lexsup.c:498 +#: lexsup.c:507 msgid "Set address of named section" msgstr "Đặt địa chỉ của phần có tên" -#: lexsup.c:501 +#: lexsup.c:510 msgid "Set address of .bss section" msgstr "Đặt địa chỉ của phần « .bss »" -#: lexsup.c:503 +#: lexsup.c:512 msgid "Set address of .data section" msgstr "Đặt địa chỉ của phần « .data » (dữ liệu)" -#: lexsup.c:505 +#: lexsup.c:514 msgid "Set address of .text section" msgstr "Đặt địa chỉ của phần « .text » (văn bản)" -#: lexsup.c:508 +#: lexsup.c:517 msgid "" "How to handle unresolved symbols. <method> is:\n" -"\t\t\t\tignore-all, report-all, ignore-in-object-files,\n" -"\t\t\t\tignore-in-shared-libs" +" ignore-all, report-all, ignore-in-object-files,\n" +" ignore-in-shared-libs" msgstr "" -"Cách quản lý ký hiệu chưa tháo gỡ.\n" +"Quản lý ký hiệu chưa tháo gỡ như thế nào.\n" " \t<phương_pháp> là:\n" " • ignore-all\t\t\t\tbỏ qua tất cả\n" " • report-all\t\t\t\tthông báo tất cả\n" " • ignore-in-object-files\tbỏ qua trong tập tin đối tượng\n" " • ignore-in-shared-libs\tbỏ qua trong thư viện dùng chung" -#: lexsup.c:512 +#: lexsup.c:522 msgid "Output lots of information during link" msgstr "Xuất rất nhiều thông tin trong khi liên kết" -#: lexsup.c:516 +#: lexsup.c:526 msgid "Read version information script" msgstr "Đọc văn lệnh thông tin phiên bản" -#: lexsup.c:519 +#: lexsup.c:529 msgid "" "Take export symbols list from .exports, using\n" -"\t\t\t\tSYMBOL as the version." +" SYMBOL as the version." msgstr "" "Lấy danh sách các ký hiệu xuất từ « .exports »,\n" -"\t\tdùng KÝ HIỆU làm phiên bản." +"\t\tdùng KÝ HIỆU là phiên bản." -#: lexsup.c:522 +#: lexsup.c:533 msgid "Add data symbols to dynamic list" msgstr "Thêm các ký hiệu dữ liệu vào danh sách động" -#: lexsup.c:524 +#: lexsup.c:535 msgid "Use C++ operator new/delete dynamic list" msgstr "Dùng danh sách động mới/xoá toán tử C++" -#: lexsup.c:526 +#: lexsup.c:537 msgid "Use C++ typeinfo dynamic list" msgstr "Dùng danh sách động kiểu/thông tin C++" -#: lexsup.c:528 +#: lexsup.c:539 msgid "Read dynamic list" msgstr "Đọc danh sách động" -#: lexsup.c:530 +#: lexsup.c:541 msgid "Warn about duplicate common symbols" msgstr "Cảnh báo về ký hiệu dùng chung trùng" -#: lexsup.c:532 +#: lexsup.c:543 msgid "Warn if global constructors/destructors are seen" msgstr "Cảnh báo nếu gặp bộ cấu tạo/phá toàn cục" -#: lexsup.c:535 +#: lexsup.c:546 msgid "Warn if the multiple GP values are used" msgstr "Cảnh báo nếu nhiều giá trị GP được dùng" -#: lexsup.c:537 +#: lexsup.c:548 msgid "Warn only once per undefined symbol" msgstr "Cảnh báo chỉ một lần về mỗi ký hiệu chưa xác định" -#: lexsup.c:539 +#: lexsup.c:550 msgid "Warn if start of section changes due to alignment" msgstr "Cảnh báo nếu đầu của phần thay đổi do sự chỉnh canh" -#: lexsup.c:542 +#: lexsup.c:553 msgid "Warn if shared object has DT_TEXTREL" msgstr "Cảnh báo nếu đối tượng dùng chung có « DT_TEXTREL »" -#: lexsup.c:546 +#: lexsup.c:557 msgid "Report unresolved symbols as warnings" msgstr "Thông báo ký hiệu chưa tháo gỡ dạng cảnh báo" -#: lexsup.c:549 +#: lexsup.c:560 msgid "Report unresolved symbols as errors" msgstr "Thông báo ký hiệu chưa tháo gỡ dạng lỗi" -#: lexsup.c:551 +#: lexsup.c:562 msgid "Include all objects from following archives" msgstr "Gồm có mọi đối tượng từ những kho theo đây" -#: lexsup.c:554 +#: lexsup.c:565 msgid "Use wrapper functions for SYMBOL" msgstr "Sử dụng các hàm bao bọc cho KÝ HIỆU" -#: lexsup.c:701 +#: lexsup.c:712 msgid "%P: unrecognized option '%s'\n" msgstr "%P: không nhận ra tùy chọn « %s »\n" -#: lexsup.c:705 +#: lexsup.c:716 msgid "%P%F: use the --help option for usage information\n" msgstr "%P%F: hãy sử dụng tùy chọn trợ giúp « --help » để xem thông tin về cách sử dụng\n" -#: lexsup.c:723 +#: lexsup.c:734 msgid "%P%F: unrecognized -a option `%s'\n" msgstr "%P%F: không nhận ra tùy chọn kiểu « -a » « %s »\n" -#: lexsup.c:736 +#: lexsup.c:747 msgid "%P%F: unrecognized -assert option `%s'\n" msgstr "%P%F: không nhận ra tùy chọn kiểu « -assert » « %s »\n" -#: lexsup.c:779 +#: lexsup.c:790 msgid "%F%P: unknown demangling style `%s'" msgstr "%F%Ps: không rõ kiểu dáng tháo gõ « %s »" -#: lexsup.c:841 +#: lexsup.c:852 msgid "%P%F: invalid number `%s'\n" msgstr "%P%F: con số không hợp lệ « %s »\n" -#: lexsup.c:939 +#: lexsup.c:950 msgid "%P%F: bad --unresolved-symbols option: %s\n" msgstr "%P%F: tùy chọn « --unresolved-symbols » sai: %s\n" @@ -1895,92 +1915,104 @@ msgstr "%P%F: tùy chọn « --unresolved-symbols » sai: %s\n" #. an error message here. We cannot just make this a warning, #. increment optind, and continue because getopt is too confused #. and will seg-fault the next time around. -#: lexsup.c:1013 +#: lexsup.c:1024 msgid "%P%F: bad -rpath option\n" msgstr "%P%F: tùy chọn « -rpath » sai\n" -#: lexsup.c:1124 +#: lexsup.c:1135 msgid "%P%F: -shared not supported\n" msgstr "%P%F: không hỗ trợ tùy chọn « -shared »\n" -#: lexsup.c:1133 +#: lexsup.c:1144 msgid "%P%F: -pie not supported\n" msgstr "%P%F: không hỗ trợ tùy chọn « -pie »\n" -#: lexsup.c:1143 +#: lexsup.c:1152 +msgid "descending" +msgstr "giảm" + +#: lexsup.c:1154 +msgid "ascending" +msgstr "tăng" + +#: lexsup.c:1157 +msgid "%P%F: invalid common section sorting option: %s\n" +msgstr "%P%F: sai đặt tùy chọn sắp xếp phần dùng chung: %s\n" + +#: lexsup.c:1161 msgid "name" msgstr "tên" -#: lexsup.c:1145 +#: lexsup.c:1163 msgid "alignment" msgstr "chỉnh canh" -#: lexsup.c:1148 +#: lexsup.c:1166 msgid "%P%F: invalid section sorting option: %s\n" msgstr "%P%F: tùy chọn sắp xếp phần không hợp lệ: %s\n" -#: lexsup.c:1180 +#: lexsup.c:1200 msgid "%P%F: invalid argument to option \"--section-start\"\n" msgstr "%P%F: đối số không hợp lệ đối với tùy chọn « --section-start »\n" -#: lexsup.c:1187 +#: lexsup.c:1207 msgid "%P%F: missing argument(s) to option \"--section-start\"\n" msgstr "%P%F: thiếu đối số đối với tùy chọn « --section-start »\n" -#: lexsup.c:1398 +#: lexsup.c:1421 msgid "%P%F: may not nest groups (--help for usage)\n" msgstr "%P%F: không cho phép lồng các nhóm với nhau (« --help » để xem cách sử dụng)\n" -#: lexsup.c:1405 +#: lexsup.c:1428 msgid "%P%F: group ended before it began (--help for usage)\n" msgstr "%P%F: nhóm kết thúc trước khi bắt đầu (« --help » để xem cách sử dụng)\n" -#: lexsup.c:1433 +#: lexsup.c:1456 msgid "%P%X: --hash-size needs a numeric argument\n" msgstr "%P%X: tùy chọn « --hash-size » cần thiết đối số thuộc số\n" -#: lexsup.c:1484 lexsup.c:1497 +#: lexsup.c:1507 lexsup.c:1520 msgid "%P%F: invalid hex number `%s'\n" msgstr "%P%F: số thập lục không hợp lệ « %s »\n" -#: lexsup.c:1533 +#: lexsup.c:1556 #, c-format msgid "Usage: %s [options] file...\n" msgstr "Cách sử dụng: %s <tùy_chọn> tập_tin...\n" -#: lexsup.c:1535 +#: lexsup.c:1558 #, c-format msgid "Options:\n" msgstr "Tùy chọn:\n" -#: lexsup.c:1613 +#: lexsup.c:1636 #, c-format msgid " @FILE" msgstr " @TẬP_TIN" -#: lexsup.c:1616 +#: lexsup.c:1639 #, c-format msgid "Read options from FILE\n" msgstr "Đọc các tùy chọn từ TẬP_TIN\n" #. Note: Various tools (such as libtool) depend upon the #. format of the listings below - do not change them. -#: lexsup.c:1621 +#: lexsup.c:1644 #, c-format msgid "%s: supported targets:" msgstr "%s: đích hỗ trợ :" -#: lexsup.c:1629 +#: lexsup.c:1652 #, c-format msgid "%s: supported emulations: " msgstr "%s: mô phỏng hỗ trợ : " -#: lexsup.c:1634 +#: lexsup.c:1657 #, c-format msgid "%s: emulation specific options:\n" msgstr "%s: tùy chọn đặc trưng cho mô phỏng:\n" -#: lexsup.c:1639 +#: lexsup.c:1662 #, c-format msgid "Report bugs to %s\n" msgstr "Hãy thông báo lỗi cho %s\n" @@ -1989,83 +2021,71 @@ msgstr "Hãy thông báo lỗi cho %s\n" msgid "%P%F: unknown format type %s\n" msgstr "%P%F: không rõ kiểu định dạng %s\n" -#: pe-dll.c:367 +#: pe-dll.c:381 #, c-format msgid "%XUnsupported PEI architecture: %s\n" msgstr "%XKhông hỗ trợ kiến trúc PEI: %s\n" -#: pe-dll.c:673 +#: pe-dll.c:692 #, c-format msgid "%XCannot export %s: invalid export name\n" msgstr "%XKhông thể xuất khẩu %s: tên xuất khẩu không hợp lệ\n" -#: pe-dll.c:729 +#: pe-dll.c:748 #, c-format msgid "%XError, duplicate EXPORT with ordinals: %s (%d vs %d)\n" msgstr "%XLỗi: EXPORT trùng với các điều thứ tự : %s (%d so với %d)\n" -#: pe-dll.c:736 +#: pe-dll.c:755 #, c-format msgid "Warning, duplicate EXPORT: %s\n" msgstr "Cảnh báo, EXPORT trùng: %s\n" -#: pe-dll.c:823 +#: pe-dll.c:842 #, c-format msgid "%XCannot export %s: symbol not defined\n" msgstr "%XKhông thể xuất khẩu %s: chưa xác định ký hiệu\n" -#: pe-dll.c:829 +#: pe-dll.c:848 #, c-format msgid "%XCannot export %s: symbol wrong type (%d vs %d)\n" msgstr "%XKhông thể xuất khẩu %s: ký hiệu sai kiểu (%d so với %d)\n" -#: pe-dll.c:836 +#: pe-dll.c:855 #, c-format msgid "%XCannot export %s: symbol not found\n" msgstr "%XKhông thể xuất khẩu %s: không tìm thấy ký hiệu\n" -#: pe-dll.c:949 +#: pe-dll.c:969 #, c-format msgid "%XError, ordinal used twice: %d (%s vs %s)\n" msgstr "%XLỗi, điều thứ tự được dùng hai lần: %d (%s so với %s)\n" -#: pe-dll.c:1297 +#: pe-dll.c:1336 #, c-format msgid "%XError: %d-bit reloc in dll\n" msgstr "%XLỗi: sự định vị lại %d-bit trong dll\n" -#: pe-dll.c:1425 +#: pe-dll.c:1464 #, c-format msgid "%s: Can't open output def file %s\n" msgstr "%s: Không thể mở tập tin def xuất %s\n" -#: pe-dll.c:1568 +#: pe-dll.c:1609 #, c-format msgid "; no contents available\n" msgstr "; không có nội dung sẵn sàng\n" -#: pe-dll.c:2364 +#: pe-dll.c:2407 msgid "%C: variable '%T' can't be auto-imported. Please read the documentation for ld's --enable-auto-import for details.\n" msgstr "%C: không thể tự động nhập khẩu biến « %T ». Hãy đọc tài liệu hướng dẫn về tùy chọn « --enable-auto-import » (bật nhập tự động) của phần mềm ld, để xem chi tiết.\n" -#: pe-dll.c:2394 +#: pe-dll.c:2437 #, c-format msgid "%XCan't open .lib file: %s\n" msgstr "%XKhông thể mở tập tin « .lib » (thư viện): %s\n" -#: pe-dll.c:2399 +#: pe-dll.c:2442 #, c-format msgid "Creating library file: %s\n" msgstr "Đang tạo tập tin thư viện: %s\n" - -#~ msgid "%F%S non constant expression for %s\n" -#~ msgstr "%F%S biểu thức thay đổi cho %s\n" - -#~ msgid "%P%F: out of memory during initialization" -#~ msgstr "%P%F: hết bộ nhớ trong khi cài đặt" - -#~ msgid "%P%F: -static and -shared may not be used together\n" -#~ msgstr "%P%F: không thể sử dụng cả « -static » (tĩnh) lẫn « -shared » (dùng chung) đều\n" - -#~ msgid "%P%X: generated" -#~ msgstr "%P%X: đã tạo ra" diff --git a/ld/scripttempl/avr.sc b/ld/scripttempl/avr.sc index 7368caf..23b3046 100644 --- a/ld/scripttempl/avr.sc +++ b/ld/scripttempl/avr.sc @@ -72,7 +72,7 @@ SECTIONS .rela.plt ${RELOCATING-0} : { *(.rela.plt) } /* Internal text space or external memory. */ - .text : + .text ${RELOCATING-0} : { *(.vectors) KEEP(*(.vectors)) @@ -168,7 +168,7 @@ SECTIONS ${RELOCATING+ PROVIDE (__data_end = .) ; } } ${RELOCATING+ > data} - .bss ${RELOCATING+ SIZEOF(.data) + ADDR(.data)} : + .bss ${RELOCATING-0} :${RELOCATING+ AT (ADDR (.bss))} { ${RELOCATING+ PROVIDE (__bss_start = .) ; } *(.bss) @@ -181,7 +181,7 @@ SECTIONS ${RELOCATING+ __data_load_end = __data_load_start + SIZEOF(.data); } /* Global data not cleared after reset. */ - .noinit ${RELOCATING+ SIZEOF(.bss) + ADDR(.bss)} : + .noinit ${RELOCATING-0}: { ${RELOCATING+ PROVIDE (__noinit_start = .) ; } *(.noinit*) diff --git a/ld/scripttempl/elf.sc b/ld/scripttempl/elf.sc index 5c35e4f..120db06 100644 --- a/ld/scripttempl/elf.sc +++ b/ld/scripttempl/elf.sc @@ -36,6 +36,9 @@ # DATA_PLT - .plt should be in data segment, not text segment. # PLT_BEFORE_GOT - .plt just before .got when .plt is in data segement. # BSS_PLT - .plt should be in bss segment +# NO_REL_RELOCS - Don't include .rel.* sections in script +# NO_RELA_RELOCS - Don't include .rela.* sections in script +# NON_ALLOC_DYN - Place dynamic sections after data segment. # TEXT_DYNAMIC - .dynamic in text segment, not data segment. # EMBEDDED - whether this is for an embedded system. # SHLIB_TEXT_START_ADDR - if set, add to SIZEOF_HEADERS to set @@ -268,6 +271,11 @@ SECTIONS ${CREATE_PIE+${RELOCATING+. = ${SHLIB_TEXT_START_ADDR:-0} + SIZEOF_HEADERS;}} ${INITIAL_READONLY_SECTIONS} .note.gnu.build-id : { *(.note.gnu.build-id) } +EOF + +test -n "${RELOCATING+0}" || unset NON_ALLOC_DYN +test -z "${NON_ALLOC_DYN}" || TEXT_DYNAMIC= +cat > ldscripts/dyntmp.$$ <<EOF ${TEXT_DYNAMIC+${DYNAMIC}} .hash ${RELOCATING-0} : { *(.hash) } .gnu.hash ${RELOCATING-0} : { *(.gnu.hash) } @@ -276,10 +284,10 @@ SECTIONS .gnu.version ${RELOCATING-0} : { *(.gnu.version) } .gnu.version_d ${RELOCATING-0}: { *(.gnu.version_d) } .gnu.version_r ${RELOCATING-0}: { *(.gnu.version_r) } - EOF + if [ "x$COMBRELOC" = x ]; then - COMBRELOCCAT=cat + COMBRELOCCAT="cat >> ldscripts/dyntmp.$$" else COMBRELOCCAT="cat > $COMBRELOC" fi @@ -316,27 +324,45 @@ eval $COMBRELOCCAT <<EOF .rela.bss ${RELOCATING-0} : { *(.rela.bss${RELOCATING+ .rela.bss.* .rela.gnu.linkonce.b.*}) } ${REL_LARGE} EOF + if [ -n "$COMBRELOC" ]; then -cat <<EOF +cat >> ldscripts/dyntmp.$$ <<EOF .rel.dyn ${RELOCATING-0} : { EOF -sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC -cat <<EOF +sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rela\./d;s/^.*: { *\(.*\)}$/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$ +cat >> ldscripts/dyntmp.$$ <<EOF } .rela.dyn ${RELOCATING-0} : { EOF -sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC -cat <<EOF +sed -e '/^[ ]*[{}][ ]*$/d;/:[ ]*$/d;/\.rel\./d;s/^.*: { *\(.*\)}/ \1/' $COMBRELOC >> ldscripts/dyntmp.$$ +cat >> ldscripts/dyntmp.$$ <<EOF } EOF fi -cat <<EOF + +cat >> ldscripts/dyntmp.$$ <<EOF .rel.plt ${RELOCATING-0} : { *(.rel.plt) } .rela.plt ${RELOCATING-0} : { *(.rela.plt) } ${OTHER_PLT_RELOC_SECTIONS} +EOF +if test -z "${NON_ALLOC_DYN}"; then + if test -z "${NO_REL_RELOCS}${NO_RELA_RELOCS}"; then + cat ldscripts/dyntmp.$$ + else + if test -z "${NO_REL_RELOCS}"; then + sed -e '/^[ ]*\.rela\.[^}]*$/,/}/d' -e '/^[ ]*\.rela\./d' ldscripts/dyntmp.$$ + fi + if test -z "${NO_RELA_RELOCS}"; then + sed -e '/^[ ]*\.rel\.[^}]*$/,/}/d' -e '/^[ ]*\.rel\./d' ldscripts/dyntmp.$$ + fi + fi + rm -f ldscripts/dyntmp.$$ +fi + +cat <<EOF .init ${RELOCATING-0} : { ${RELOCATING+${INIT_START}} @@ -464,7 +490,23 @@ cat <<EOF ${RELOCATING+${OTHER_END_SYMBOLS}} ${RELOCATING+${END_SYMBOLS-${USER_LABEL_PREFIX}_end = .; PROVIDE (${USER_LABEL_PREFIX}end = .);}} ${RELOCATING+${DATA_SEGMENT_END}} +EOF +if test -n "${NON_ALLOC_DYN}"; then + if test -z "${NO_REL_RELOCS}${NO_RELA_RELOCS}"; then + cat ldscripts/dyntmp.$$ + else + if test -z "${NO_REL_RELOCS}"; then + sed -e '/^[ ]*\.rela\.[^}]*$/,/}/d' -e '/^[ ]*\.rela\./d' ldscripts/dyntmp.$$ + fi + if test -z "${NO_RELA_RELOCS}"; then + sed -e '/^[ ]*\.rel\.[^}]*$/,/}/d' -e '/^[ ]*\.rel\./d' ldscripts/dyntmp.$$ + fi + fi + rm -f ldscripts/dyntmp.$$ +fi + +cat <<EOF /* Stabs debugging sections. */ .stab 0 : { *(.stab) } .stabstr 0 : { *(.stabstr) } diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index a2c3050..8c94dc8 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,103 @@ +2008-10-29 Nick Clifton <nickc@redhat.com> + + * ld-gc/gc.c (dummy_func): New function - present so that + underscore prefixed aliases can be created of the used_func and + main functions. + +2008-10-10 Nathan Froyd <froydnj@codesourcery.com> + + * ld-powerpc/gnu-attr-12-1.s: New file. + * ld-powerpc/gnu-attr-12-2.s: New file. + * ld-powerpc/gnu-attr-12-11.d: New file. + * ld-powerpc/gnu-attr-12-21.d: New file. + * ld-powerpc/powerpc.exp: Run new dump tests. + +2008-10-07 Nick Clifton <nickc@redhat.com> + + * ld-ia64/tlsbin.rd: Update expected output now that --wide does + not truncate section names. + * ld-ia64/tlspic.rd: Likewise. + +2008-10-06 Tom Tromey <tromey@redhat.com> + + * ld-elf/eh1.d, ld-elf/eh2.d, ld-elf/eh3.d, ld-elf/eh4.d, + ld-elf/eh5.d, ld-elf/eh6.d, ld-mips-elf/eh-frame1-n32.d, + ld-mips-elf/eh-frame1-n64.d, ld-mips-elf/eh-frame2-n32.d, + ld-mips-elf/eh-frame2-n64.d, ld-mips-elf/eh-frame3.d, + ld-mips-elf/eh-frame4.d: Update for readelf change. + +2008-10-04 H.J. Lu <hongjiu.lu@intel.com> + + PR ld/6931 + * ld-elf/group7.d: New. + +2008-10-03 H.J. Lu <hongjiu.lu@intel.com> + + * ld-elf/group5.d: Updated. + * ld-elf/group6.d: Likewise. + +2008-10-03 Tristan Gingold <gingold@adacore.com> + + * ld-elf/stab.d: Don't run on alpha (to avoid relocation + overflow on 64 bits targets whose stab values is 32 bits). + +2008-10-03 H.J. Lu <hongjiu.lu@intel.com> + + PR ld/6931 + * ld-elf/group4.d: New. + * ld-elf/group5.d: Likewise. + * ld-elf/group6.d: Likewise. + +2008-10-03 Alan Modra <amodra@bigpond.net.au> + + * ld-powerpc/vxworks1-lib.rd: Update. + +2008-09-29 Alan Modra <amodra@bigpond.net.au> + + * ld-elf/extract-symbol-1sec.d: Correct section lma. + +2008-09-25 Alan Modra <amodra@bigpond.net.au> + + * ld-elf/eh-group.exp: Only run on ELF targets. + * ld-elf/eh5b.s: Export main, start, __start. + +2008-09-20 Richard Sandiford <rdsandiford@googlemail.com> + + * ld-mips-elf/reloc-estimate-1.d: Make endian-neutral. + +2008-09-20 Jan Kratochvil <jan.kratochvil@redhat.com> + + Provide virtual target "cfi" for targets supporting CFI. + * ld-elf/eh-frame-hdr.d: Replace target and xfail statements by single + `target: cfi'. + * ld-elf/eh-group.exp: Call check_as_cfi instead of is_elf_format. + * ld-elf/eh-group1.s, elf/eh-group2.s: Use more compatible section + flags prefix '%'. + * ld-elf/eh5.d: Replace target statement by `target: cfi' with an Alpha + exception. Relax the `Code alignment factor' matching. + * lib/ld-lib.exp: Rename istarget as istarget_ld. + (istarget, check_as_cfi): New procedure. + (run_dump_test): New comment for the virtual target `cfi'. + +2008-09-17 Jan Kratochvil <jan.kratochvil@redhat.com> + + * ld-elf/eh-group.exp, ld-elf/eh-group1.s, ld-elf/eh-group2.s: New test. + +2008-09-17 Jan Kratochvil <jan.kratochvil@redhat.com> + + Fix testcases compilation failures due to unused variables. + * ld-elfcomm/common1b.c (dummy1): Mark the variable for GCC as USED. + * ld-shared/main.c (main): Move the P variable only to the places where + it is used. + +2008-09-16 H.J. Lu <hongjiu.lu@intel.com> + + PR ld/6877 + * ld-elf/comm1.c: New. + * ld-elf/func1.c: Likewise. + + * ld-elf/shared.exp: Add tests for libfunc1.so and comm1. + 2008-08-26 Nick Clifton <nickc@redhat.com> * ld-arm/arm-elf.exp: Add farcall-thumb-arm-short test. diff --git a/ld/testsuite/ld-elf/comm1.c b/ld/testsuite/ld-elf/comm1.c new file mode 100644 index 0000000..c553d86 --- /dev/null +++ b/ld/testsuite/ld-elf/comm1.c @@ -0,0 +1,17 @@ +#include <stdio.h> +#include <stdlib.h> + +int foo; +void bar (void); + +int +main () +{ + if (foo != 0) + abort (); + foo = 200; + bar (); + if (foo == 200) + printf ("PASS\n"); + return 0; +} diff --git a/ld/testsuite/ld-elf/eh-frame-hdr.d b/ld/testsuite/ld-elf/eh-frame-hdr.d index b465e5d..af8ae04 100644 --- a/ld/testsuite/ld-elf/eh-frame-hdr.d +++ b/ld/testsuite/ld-elf/eh-frame-hdr.d @@ -1,17 +1,7 @@ #source: eh-frame-hdr.s #ld: -e _start --eh-frame-hdr #objdump: -hw -#target: alpha*-*-* -#target: arm*-*-* -#target: i?86-*-* -#target: m68k-*-* -#target: mips*-*-* -#target: powerpc*-*-* -#target: s390*-*-* -#target: sh*-*-* -#xfail: sh*l*-*-* -#target: sparc*-*-* -#target: x86_64-*-* +#target: cfi #... [0-9] .eh_frame_hdr 0*[12][048c] .* #pass diff --git a/ld/testsuite/ld-elf/eh-group.exp b/ld/testsuite/ld-elf/eh-group.exp new file mode 100644 index 0000000..6072355 --- /dev/null +++ b/ld/testsuite/ld-elf/eh-group.exp @@ -0,0 +1,56 @@ +# Expect script for .eh_frame entries to a removed section. +# Copyright 2008 Free Software Foundation, Inc. +# +# This file is part of the GNU Binutils. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, +# MA 02110-1301, USA. +# + +# +# Written by Jan Kratochvil (jan.kratochvil@redhat.com) +# +# .eh_frame with relocations to a removed (group) section did result to: +# error in tmpdir/eh-group.o(.eh_frame); no .eh_frame_hdr table will be created. +# The purpose of this test is to merge two .o files with -r and then link this +# merged file (containing a discarded R_X86_64_NONE relocation) to the final +# executable trying to create .eh_frame_hdr. It needs a separate .exp file due +# to the requirement of two `ld' runs. + +# Exclude non-CFI (such as ia64) targets. + +if {![check_as_cfi]} { + return +} + +# The test uses ELF .section directive +if ![is_elf_format] { + return +} + +set build_tests_ld { + {"Build eh-group1.o" + "-r" "" + {eh-group1.s eh-group2.s} {} "eh-group.o"} +} + +run_ld_link_tests $build_tests_ld + +set testname "Link eh-group.o to eh-group" +if [ld_simple_link $ld "tmpdir/eh-group" "-e _start tmpdir/eh-group.o"] { + pass $testname +} else { + fail $testname +} diff --git a/ld/testsuite/ld-elf/eh-group1.s b/ld/testsuite/ld-elf/eh-group1.s new file mode 100644 index 0000000..d6fdb88 --- /dev/null +++ b/ld/testsuite/ld-elf/eh-group1.s @@ -0,0 +1,6 @@ + .section sect, "axG", %progbits, sectgroup, comdat + .global _start +_start: + .cfi_startproc + .skip 16 + .cfi_endproc diff --git a/ld/testsuite/ld-elf/eh-group2.s b/ld/testsuite/ld-elf/eh-group2.s new file mode 100644 index 0000000..2ec8919 --- /dev/null +++ b/ld/testsuite/ld-elf/eh-group2.s @@ -0,0 +1,4 @@ + .section sect, "axG", %progbits, sectgroup, comdat + .cfi_startproc + .skip 16 + .cfi_endproc diff --git a/ld/testsuite/ld-elf/eh1.d b/ld/testsuite/ld-elf/eh1.d index a672f5b..f0874f7 100644 --- a/ld/testsuite/ld-elf/eh1.d +++ b/ld/testsuite/ld-elf/eh1.d @@ -4,7 +4,7 @@ #readelf: -wf #target: x86_64-*-* -The section .eh_frame contains: +Contents of the .eh_frame section: 00000000 00000014 00000000 CIE Version: 1 diff --git a/ld/testsuite/ld-elf/eh2.d b/ld/testsuite/ld-elf/eh2.d index 788d23d..1a05d7f 100644 --- a/ld/testsuite/ld-elf/eh2.d +++ b/ld/testsuite/ld-elf/eh2.d @@ -4,7 +4,7 @@ #readelf: -wf #target: x86_64-*-* -The section .eh_frame contains: +Contents of the .eh_frame section: 00000000 00000014 00000000 CIE Version: 1 diff --git a/ld/testsuite/ld-elf/eh3.d b/ld/testsuite/ld-elf/eh3.d index 6816313..1f76b8c 100644 --- a/ld/testsuite/ld-elf/eh3.d +++ b/ld/testsuite/ld-elf/eh3.d @@ -4,7 +4,7 @@ #readelf: -wf #target: x86_64-*-* -The section .eh_frame contains: +Contents of the .eh_frame section: 00000000 00000014 00000000 CIE Version: 1 diff --git a/ld/testsuite/ld-elf/eh4.d b/ld/testsuite/ld-elf/eh4.d index 5efecab..b8f9865 100644 --- a/ld/testsuite/ld-elf/eh4.d +++ b/ld/testsuite/ld-elf/eh4.d @@ -4,7 +4,7 @@ #readelf: -wf #target: x86_64-*-* -The section .eh_frame contains: +Contents of the .eh_frame section: 00000000 00000014 00000000 CIE Version: 1 diff --git a/ld/testsuite/ld-elf/eh5.d b/ld/testsuite/ld-elf/eh5.d index 13bff08..48ab7d7 100644 --- a/ld/testsuite/ld-elf/eh5.d +++ b/ld/testsuite/ld-elf/eh5.d @@ -3,14 +3,15 @@ #source: eh5b.s #ld: #readelf: -wf -#target: x86_64-*-* i?86-*-* +#target: cfi +#notarget: alpha* -The section .eh_frame contains: +Contents of the .eh_frame section: 00000000 0000001[04] 00000000 CIE Version: 1 Augmentation: "zR" - Code alignment factor: 1 + Code alignment factor: .* Data alignment factor: .* Return address column: .* Augmentation data: 1b @@ -29,7 +30,7 @@ The section .eh_frame contains: 000000(2c|30) 00000014 00000000 CIE Version: 1 Augmentation: "zPR" - Code alignment factor: 1 + Code alignment factor: .* Data alignment factor: .* Return address column: .* Augmentation data: 03 .. .. .. .. 1b @@ -53,7 +54,7 @@ The section .eh_frame contains: 0000007[48] 0000001[8c] 00000000 CIE Version: 1 Augmentation: "zPLR" - Code alignment factor: 1 + Code alignment factor: .* Data alignment factor: .* Return address column: .* Augmentation data: 03 .. .. .. .. 0c 1b @@ -74,7 +75,7 @@ The section .eh_frame contains: 000000b[08] 0000001[04] 00000000 CIE Version: 1 Augmentation: "zR" - Code alignment factor: 1 + Code alignment factor: .* Data alignment factor: .* Return address column: .* Augmentation data: 1b @@ -89,7 +90,7 @@ The section .eh_frame contains: 000000[de]8 00000014 00000000 CIE Version: 1 Augmentation: "zPR" - Code alignment factor: 1 + Code alignment factor: .* Data alignment factor: .* Return address column: .* Augmentation data: 03 .. .. .. .. 1b @@ -111,7 +112,7 @@ The section .eh_frame contains: 000001(1c|30) 0000001[8c] 00000000 CIE Version: 1 Augmentation: "zPLR" - Code alignment factor: 1 + Code alignment factor: .* Data alignment factor: .* Return address column: .* Augmentation data: 03 .. .. .. .. 0c 1b diff --git a/ld/testsuite/ld-elf/eh5b.s b/ld/testsuite/ld-elf/eh5b.s index 3e5e010..fa27edd 100644 --- a/ld/testsuite/ld-elf/eh5b.s +++ b/ld/testsuite/ld-elf/eh5b.s @@ -24,6 +24,12 @@ .cfi_def_cfa 0, 16 .cfi_endproc + .globl main + .globl start .globl _start + .globl __start +main: +start: _start: +__start: .long 0 diff --git a/ld/testsuite/ld-elf/eh6.d b/ld/testsuite/ld-elf/eh6.d index 7f4e47a..67c6a06 100644 --- a/ld/testsuite/ld-elf/eh6.d +++ b/ld/testsuite/ld-elf/eh6.d @@ -3,7 +3,7 @@ #readelf: -wf #target: x86_64-*-linux-gnu i?86-*-linux-gnu -The section .eh_frame contains: +Contents of the .eh_frame section: 00000000 0000001[4c] 00000000 CIE Version: 1 diff --git a/ld/testsuite/ld-elf/extract-symbol-1sec.d b/ld/testsuite/ld-elf/extract-symbol-1sec.d index 87d42af..cbe0144 100644 --- a/ld/testsuite/ld-elf/extract-symbol-1sec.d +++ b/ld/testsuite/ld-elf/extract-symbol-1sec.d @@ -7,7 +7,7 @@ #... Sections: *Idx +Name +Size +VMA +LMA .* - *0 +\.foo +0+ +0+10000 +0+10000 .* + *0 +\.foo +0+ +0+10000 +0+ .* *CONTENTS, ALLOC, LOAD, CODE - *1 +\.bar +0+ +0+20000 +0+20000 .* + *1 +\.bar +0+ +0+20000 +0+10000 .* *ALLOC, READONLY, CODE diff --git a/ld/testsuite/ld-elf/func1.c b/ld/testsuite/ld-elf/func1.c new file mode 100644 index 0000000..99443e4 --- /dev/null +++ b/ld/testsuite/ld-elf/func1.c @@ -0,0 +1,2 @@ +void foo (void) { } +void bar (void) { } diff --git a/ld/testsuite/ld-elf/group4.d b/ld/testsuite/ld-elf/group4.d new file mode 100644 index 0000000..92a54bd --- /dev/null +++ b/ld/testsuite/ld-elf/group4.d @@ -0,0 +1,16 @@ +#source: ../../../binutils/testsuite/binutils-all/group-2.s +#ld: -r +#readelf: -Sg --wide + +#... + \[[ 0-9]+\] .group[ \t]+GROUP[ \t]+.* +#... + \[[ 0-9]+\] \.text.*[ \t]+PROGBITS[ \t0-9a-f]+AXG[ \t]+.* +#... + \[[ 0-9]+\] \.data.*[ \t]+PROGBITS[ \t0-9a-f]+WAG[ \t]+.* +#... +COMDAT group section \[[ 0-9]+\] `.group' \[.text.foo\] contains 2 sections: + \[Index\] Name + \[[ 0-9]+\] .text.* + \[[ 0-9]+\] .data.* +#pass diff --git a/ld/testsuite/ld-elf/group5.d b/ld/testsuite/ld-elf/group5.d new file mode 100644 index 0000000..7d6eff6 --- /dev/null +++ b/ld/testsuite/ld-elf/group5.d @@ -0,0 +1,16 @@ +#source: ../../../binutils/testsuite/binutils-all/group-3.s +#ld: -r +#readelf: -Sg --wide + +#... + \[[ 0-9]+\] .group[ \t]+GROUP[ \t]+.* +#... + \[[ 0-9]+\] \.text.*[ \t]+PROGBITS[ \t0-9a-f]+AXG[ \t]+.* +#... + \[[ 0-9]+\] \.data.*[ \t]+PROGBITS[ \t0-9a-f]+WAG[ \t]+.* +#... +COMDAT group section \[[ 0-9]+\] `.group' \[foo3\] contains 2 sections: + \[Index\] Name + \[[ 0-9]+\] .text.* + \[[ 0-9]+\] .data.* +#pass diff --git a/ld/testsuite/ld-elf/group6.d b/ld/testsuite/ld-elf/group6.d new file mode 100644 index 0000000..b113414 --- /dev/null +++ b/ld/testsuite/ld-elf/group6.d @@ -0,0 +1,16 @@ +#source: ../../../binutils/testsuite/binutils-all/group-4.s +#ld: -r +#readelf: -Sg --wide + +#... + \[[ 0-9]+\] .group[ \t]+GROUP[ \t]+.* +#... + \[[ 0-9]+\] \.text.*[ \t]+PROGBITS[ \t0-9a-f]+AXG[ \t]+.* +#... + \[[ 0-9]+\] \.data.*[ \t]+PROGBITS[ \t0-9a-f]+WAG[ \t]+.* +#... +COMDAT group section \[[ 0-9]+\] `.group' \[foo4\] contains 2 sections: + \[Index\] Name + \[[ 0-9]+\] .text.* + \[[ 0-9]+\] .data.* +#pass diff --git a/ld/testsuite/ld-elf/group7.d b/ld/testsuite/ld-elf/group7.d new file mode 100644 index 0000000..bfd1f3f --- /dev/null +++ b/ld/testsuite/ld-elf/group7.d @@ -0,0 +1,28 @@ +#source: ../../../binutils/testsuite/binutils-all/group.s +#source: ../../../binutils/testsuite/binutils-all/group-2.s +#source: ../../../binutils/testsuite/binutils-all/group-3.s +#source: ../../../binutils/testsuite/binutils-all/group-4.s +#ld: -r +#readelf: -g --wide + +#... +COMDAT group section \[[ 0-9]+\] `foo_group' \[foo_group\] contains 2 sections: + \[Index\] Name + \[[ 0-9]+\] .text.foo + \[[ 0-9]+\] .data.foo +#... +COMDAT group section \[[ 0-9]+\] `.group' \[.text.foo\] contains 2 sections: + \[Index\] Name + \[[ 0-9]+\] .text.foo + \[[ 0-9]+\] .data.bar +#... +COMDAT group section \[[ 0-9]+\] `.group' \[foo3\] contains 2 sections: + \[Index\] Name + \[[ 0-9]+\] .text.foo3 + \[[ 0-9]+\] .data.bar3 +#... +COMDAT group section \[[ 0-9]+\] `.group' \[foo4\] contains 2 sections: + \[Index\] Name + \[[ 0-9]+\] .text.foo4 + \[[ 0-9]+\] .data.foo4 +#pass diff --git a/ld/testsuite/ld-elf/shared.exp b/ld/testsuite/ld-elf/shared.exp index 846027e..f0bc403 100644 --- a/ld/testsuite/ld-elf/shared.exp +++ b/ld/testsuite/ld-elf/shared.exp @@ -123,6 +123,12 @@ set build_tests { {"Build libdata1.so" "-shared" "-fPIC" {data1.c} {} "libdata1.so"} + {"Build libcomm1.o" + "-r -nostdlib" "" + {comm1.c} {} "libcomm1.o"} + {"Build libfunc1.so" + "-shared" "-fPIC" + {func1.c} {} "libfunc1.so"} } set run_tests { @@ -235,6 +241,12 @@ set run_tests { {"Run with libdata1.so" "tmpdir/libdata1.so" "" {dynbss1.c} "dynbss1" "pass.out"} + {"Run with libfunc1.so comm1.o" + "tmpdir/libfunc1.so tmpdir/comm1.o" "" + {dummy.c} "comm1" "pass.out"} + {"Run with comm1.o libfunc1.so" + "tmpdir/comm1.o tmpdir/libfunc1.so" "" + {dummy.c} "comm1" "pass.out"} } run_cc_link_tests $build_tests diff --git a/ld/testsuite/ld-elf/stab.d b/ld/testsuite/ld-elf/stab.d index 6676238..346640d 100644 --- a/ld/testsuite/ld-elf/stab.d +++ b/ld/testsuite/ld-elf/stab.d @@ -2,7 +2,10 @@ #as: -gstabs #readelf: -S --wide #ld: -#notarget: ia64-*-* +#notarget: "ia64-*-*" "alpha*" + +# Disabled on alpha because the entry point may be above 4GB but the stabs +# value on 32 bits. #... \[[0-9 ][0-9]\] \.stab +PROGBITS +0+ [0-9a-f]+ [0-9a-f]+ [0-9a-f]+ +[1-9]+ +0.* diff --git a/ld/testsuite/ld-elfcomm/common1b.c b/ld/testsuite/ld-elfcomm/common1b.c index 4ed9e03..a375c90 100644 --- a/ld/testsuite/ld-elfcomm/common1b.c +++ b/ld/testsuite/ld-elfcomm/common1b.c @@ -1,3 +1,7 @@ -static char dummy1 = 'X'; +static +#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 3) + __attribute__((__used__)) +#endif /* __GNUC__ */ + char dummy1 = 'X'; char foo1 [] = "Aligned at odd byte."; char foo2 [4]; diff --git a/ld/testsuite/ld-gc/gc.c b/ld/testsuite/ld-gc/gc.c index 6b356ad..3b0e655 100644 --- a/ld/testsuite/ld-gc/gc.c +++ b/ld/testsuite/ld-gc/gc.c @@ -19,3 +19,23 @@ main (void) { return used_func (5); } + +void +dummy_func (void) +{ + /* These are here in case the target prepends an underscore to + the start of function names. They are inside a dummy function + so that they will appear at the end of gcc's assembler output, + after the definitions of main() and used_func(), rather than + at the beginning of the file. */ + + __asm__(".ifndef main\n\ +.global main\n\ +.set main, _main\n\ +.endif"); + + __asm__(".ifndef used_func\n\ +.global used_func\n\ +.set used_func, _used_func\n\ +.endif"); +} diff --git a/ld/testsuite/ld-ia64/tlsbin.rd b/ld/testsuite/ld-ia64/tlsbin.rd index 7f130a4..ca0d69e 100644 --- a/ld/testsuite/ld-ia64/tlsbin.rd +++ b/ld/testsuite/ld-ia64/tlsbin.rd @@ -15,10 +15,10 @@ Section Headers: +\[[ 0-9]+\] .dynsym +.* +\[[ 0-9]+\] .dynstr +.* +\[[ 0-9]+\] .rela.dyn +.* - +\[[ 0-9]+\] .rela.IA_64.pltof +.* + +\[[ 0-9]+\] .rela.IA_64.pltoff +.* +\[[ 0-9]+\] .plt +.* +\[[ 0-9]+\] .text +PROGBITS +40+1000 0+1000 0+140 00 +AX +0 +0 4096 - +\[[ 0-9]+\] .IA_64.unwind_inf +.* + +\[[ 0-9]+\] .IA_64.unwind_info +.* +\[[ 0-9]+\] .IA_64.unwind +.* +\[[ 0-9]+\] .tdata +PROGBITS +60+1[0-9a-f]+ 0+1[0-9a-f]+ 0+60 00 WAT +0 +0 +4 +\[[ 0-9]+\] .tbss +NOBITS +60+1[0-9a-f]+ 0+1[0-9a-f]+ 0+40 00 WAT +0 +0 +1 diff --git a/ld/testsuite/ld-ia64/tlspic.rd b/ld/testsuite/ld-ia64/tlspic.rd index 509e598..9bf4387 100644 --- a/ld/testsuite/ld-ia64/tlspic.rd +++ b/ld/testsuite/ld-ia64/tlspic.rd @@ -14,10 +14,10 @@ Section Headers: +\[[ 0-9]+\] .dynsym +.* +\[[ 0-9]+\] .dynstr +.* +\[[ 0-9]+\] .rela.dyn +.* - +\[[ 0-9]+\] .rela.IA_64.pltof +.* + +\[[ 0-9]+\] .rela.IA_64.pltoff +.* +\[[ 0-9]+\] .plt +.* +\[[ 0-9]+\] .text +PROGBITS +0+1000 0+1000 0+110 00 +AX +0 +0 4096 - +\[[ 0-9]+\] .IA_64.unwind_inf +.* + +\[[ 0-9]+\] .IA_64.unwind_info +.* +\[[ 0-9]+\] .IA_64.unwind +.* +\[[ 0-9]+\] .tdata +PROGBITS +0+11[0-9a-f]+ 0+1[0-9a-f]+ 0+60 00 WAT +0 +0 +4 +\[[ 0-9]+\] .tbss +NOBITS +0+11[0-9a-f]+ 0+1[0-9a-f]+ 0+20 00 WAT +0 +0 +1 diff --git a/ld/testsuite/ld-mips-elf/eh-frame1-n32.d b/ld/testsuite/ld-mips-elf/eh-frame1-n32.d index 3924016..6adb355 100644 --- a/ld/testsuite/ld-mips-elf/eh-frame1-n32.d +++ b/ld/testsuite/ld-mips-elf/eh-frame1-n32.d @@ -17,7 +17,7 @@ Relocation section '\.rel\.dyn' .*: 0003008b [0-9a-f]+ R_MIPS_REL32 00000000 foo 000300d0 [0-9a-f]+ R_MIPS_REL32 00000000 foo 0003010e [0-9a-f]+ R_MIPS_REL32 00000000 foo -The section \.eh_frame contains: +Contents of the section \.eh_frame: 00000000 00000010 00000000 CIE Version: 1 diff --git a/ld/testsuite/ld-mips-elf/eh-frame1-n64.d b/ld/testsuite/ld-mips-elf/eh-frame1-n64.d index f0925b9..1512b4a 100644 --- a/ld/testsuite/ld-mips-elf/eh-frame1-n64.d +++ b/ld/testsuite/ld-mips-elf/eh-frame1-n64.d @@ -33,7 +33,7 @@ Relocation section '\.rel\.dyn' .*: 000000030192 [0-9a-f]+ R_MIPS_REL32 0000000000000000 foo *Type2: R_MIPS_64 * *Type3: R_MIPS_NONE * -The section \.eh_frame contains: +Contents of the section \.eh_frame: 00000000 00000014 00000000 CIE Version: 1 diff --git a/ld/testsuite/ld-mips-elf/eh-frame2-n32.d b/ld/testsuite/ld-mips-elf/eh-frame2-n32.d index ce2aa1d..d831d26 100644 --- a/ld/testsuite/ld-mips-elf/eh-frame2-n32.d +++ b/ld/testsuite/ld-mips-elf/eh-frame2-n32.d @@ -17,7 +17,7 @@ Relocation section '\.rel\.dyn' .*: 0003008b [0-9a-f]+ R_MIPS_REL32 00000000 foo 000300cc [0-9a-f]+ R_MIPS_REL32 00000000 foo 0003010a [0-9a-f]+ R_MIPS_REL32 00000000 foo -The section \.eh_frame contains: +Contents of the section \.eh_frame: 00000000 00000010 00000000 CIE Version: 1 diff --git a/ld/testsuite/ld-mips-elf/eh-frame2-n64.d b/ld/testsuite/ld-mips-elf/eh-frame2-n64.d index 50394f5..8e741f3 100644 --- a/ld/testsuite/ld-mips-elf/eh-frame2-n64.d +++ b/ld/testsuite/ld-mips-elf/eh-frame2-n64.d @@ -33,7 +33,7 @@ Relocation section '\.rel\.dyn' .*: 00000003018a [0-9a-f]+ R_MIPS_REL32 0000000000000000 foo *Type2: R_MIPS_64 * *Type3: R_MIPS_NONE * -The section \.eh_frame contains: +Contents of the section \.eh_frame: 00000000 00000014 00000000 CIE Version: 1 diff --git a/ld/testsuite/ld-mips-elf/eh-frame3.d b/ld/testsuite/ld-mips-elf/eh-frame3.d index 4c91d2c..80f13d9 100644 --- a/ld/testsuite/ld-mips-elf/eh-frame3.d +++ b/ld/testsuite/ld-mips-elf/eh-frame3.d @@ -9,7 +9,7 @@ # combination of 32-bit objects and 64-bit FDE addresses. # -The section \.eh_frame contains: +Contents of the section \.eh_frame: 00000000 0000000c 00000000 CIE Version: 1 diff --git a/ld/testsuite/ld-mips-elf/eh-frame4.d b/ld/testsuite/ld-mips-elf/eh-frame4.d index e04d5fc..c4b7e5c 100644 --- a/ld/testsuite/ld-mips-elf/eh-frame4.d +++ b/ld/testsuite/ld-mips-elf/eh-frame4.d @@ -8,7 +8,7 @@ # This test is for the semi-official ILP32 variation of EABI64. # -The section \.eh_frame contains: +Contents of the section \.eh_frame: 00000000 0000000c 00000000 CIE Version: 1 diff --git a/ld/testsuite/ld-mips-elf/reloc-estimate-1.d b/ld/testsuite/ld-mips-elf/reloc-estimate-1.d index 94dde81..0d49b05 100644 --- a/ld/testsuite/ld-mips-elf/reloc-estimate-1.d +++ b/ld/testsuite/ld-mips-elf/reloc-estimate-1.d @@ -15,4 +15,4 @@ OFFSET TYPE VALUE # The address must be 0x810. We should only ever allocate one dynamic # reloc over and above the first R_MIPS_NONE entry. Contents of section \.foo: - 0810 deadbeef .... + 0810 (deadbeef|efbeadde) .... diff --git a/ld/testsuite/ld-powerpc/attr-gnu-12-1.s b/ld/testsuite/ld-powerpc/attr-gnu-12-1.s new file mode 100644 index 0000000..10cbe3b --- /dev/null +++ b/ld/testsuite/ld-powerpc/attr-gnu-12-1.s @@ -0,0 +1 @@ +.gnu_attribute 12,1 diff --git a/ld/testsuite/ld-powerpc/attr-gnu-12-11.d b/ld/testsuite/ld-powerpc/attr-gnu-12-11.d new file mode 100644 index 0000000..e88c4ba --- /dev/null +++ b/ld/testsuite/ld-powerpc/attr-gnu-12-11.d @@ -0,0 +1,10 @@ +#source: attr-gnu-12-1.s +#source: attr-gnu-12-1.s +#as: -a32 +#ld: -r -melf32ppc +#readelf: -A +#target: powerpc*-*-* + +Attribute Section: gnu +File Attributes + Tag_GNU_Power_ABI_Struct_Return: r3/r4 diff --git a/ld/testsuite/ld-powerpc/attr-gnu-12-2.s b/ld/testsuite/ld-powerpc/attr-gnu-12-2.s new file mode 100644 index 0000000..c39de66 --- /dev/null +++ b/ld/testsuite/ld-powerpc/attr-gnu-12-2.s @@ -0,0 +1 @@ +.gnu_attribute 12,2 diff --git a/ld/testsuite/ld-powerpc/attr-gnu-12-21.d b/ld/testsuite/ld-powerpc/attr-gnu-12-21.d new file mode 100644 index 0000000..ef14e35 --- /dev/null +++ b/ld/testsuite/ld-powerpc/attr-gnu-12-21.d @@ -0,0 +1,6 @@ +#source: attr-gnu-12-2.s +#source: attr-gnu-12-1.s +#as: -a32 +#ld: -r -melf32ppc +#warning: Warning: .* uses r3/r4 for small structure returns, .* uses memory +#target: powerpc*-*-* diff --git a/ld/testsuite/ld-powerpc/powerpc.exp b/ld/testsuite/ld-powerpc/powerpc.exp index 4e03cf6..af812a0 100644 --- a/ld/testsuite/ld-powerpc/powerpc.exp +++ b/ld/testsuite/ld-powerpc/powerpc.exp @@ -177,3 +177,6 @@ run_dump_test "attr-gnu-4-41" run_dump_test "attr-gnu-8-11" run_dump_test "attr-gnu-8-23" run_dump_test "attr-gnu-8-31" + +run_dump_test "attr-gnu-12-11" +run_dump_test "attr-gnu-12-21" diff --git a/ld/testsuite/ld-powerpc/vxworks1-lib.rd b/ld/testsuite/ld-powerpc/vxworks1-lib.rd index 40a5d55..113462f 100644 --- a/ld/testsuite/ld-powerpc/vxworks1-lib.rd +++ b/ld/testsuite/ld-powerpc/vxworks1-lib.rd @@ -1,9 +1,4 @@ -Relocation section '\.rela\.plt' at offset .* contains 2 entries: - Offset Info Type Sym\.Value Sym\. Name \+ Addend -0009040c .*15 R_PPC_JMP_SLOT 00000000 sexternal \+ 0 -00090410 .*15 R_PPC_JMP_SLOT 00080c48 sglobal \+ 0 - Relocation section '\.rela\.dyn' at offset .* contains 5 entries: Offset Info Type Sym\.Value Sym\. Name \+ Addend 00090800 00000016 R_PPC_RELATIVE * 00080c44 @@ -11,3 +6,8 @@ Relocation section '\.rela\.dyn' at offset .* contains 5 entries: 00080c12 .*04 R_PPC_ADDR16_LO 00000000 __GOTT_BASE__ \+ 0 00080c16 .*03 R_PPC_ADDR16 00000000 __GOTT_INDEX__ \+ 0 00090414 .*14 R_PPC_GLOB_DAT 00090c00 x \+ 0 + +Relocation section '\.rela\.plt' at offset .* contains 2 entries: + Offset Info Type Sym\.Value Sym\. Name \+ Addend +0009040c .*15 R_PPC_JMP_SLOT 00000000 sexternal \+ 0 +00090410 .*15 R_PPC_JMP_SLOT 00080c48 sglobal \+ 0 diff --git a/ld/testsuite/ld-shared/main.c b/ld/testsuite/ld-shared/main.c index ce06261..0817d27 100644 --- a/ld/testsuite/ld-shared/main.c +++ b/ld/testsuite/ld-shared/main.c @@ -38,8 +38,6 @@ shlib_overriddencall2 () int main () { - int (*p) (); - printf ("mainvar == %d\n", mainvar); printf ("overriddenvar == %d\n", overriddenvar); printf ("shlibvar1 == %d\n", shlibvar1); @@ -62,21 +60,29 @@ main () printf ("shlib_checkfunptr2 (main_called) == %d\n", shlib_checkfunptr2 (main_called)); #endif - p = shlib_getfunptr1 (); - printf ("shlib_getfunptr1 () "); - if (p == shlib_shlibvar1) - printf ("=="); - else - printf ("!="); - printf (" shlib_shlibvar1\n"); + { + int (*p) (); + + p = shlib_getfunptr1 (); + printf ("shlib_getfunptr1 () "); + if (p == shlib_shlibvar1) + printf ("=="); + else + printf ("!="); + printf (" shlib_shlibvar1\n"); + } #ifndef XCOFF_TEST - p = shlib_getfunptr2 (); - printf ("shlib_getfunptr2 () "); - if (p == main_called) - printf ("=="); - else - printf ("!="); - printf (" main_called\n"); + { + int (*p) (); + + p = shlib_getfunptr2 (); + printf ("shlib_getfunptr2 () "); + if (p == main_called) + printf ("=="); + else + printf ("!="); + printf (" main_called\n"); + } #endif #endif printf ("shlib_check () == %d\n", shlib_check ()); diff --git a/ld/testsuite/lib/ld-lib.exp b/ld/testsuite/lib/ld-lib.exp index 1ebb1a2..d4e996e 100644 --- a/ld/testsuite/lib/ld-lib.exp +++ b/ld/testsuite/lib/ld-lib.exp @@ -598,7 +598,8 @@ proc simple_diff { file_1 file_2 } { # # target: TARGET # Only run the test for TARGET. This may occur more than once; the -# target being tested must match at least one. +# target being tested must match at least one. You may provide target +# name "cfi" for any target supporting the CFI statements. # # notarget: TARGET # Do not run the test for TARGET. This may occur more than once; @@ -1569,3 +1570,39 @@ proc check_gc_sections_available { } { } return $gc_sections_available_saved } + +# Check if the assembler supports CFI statements. + +proc check_as_cfi { } { + global check_as_cfi_result + global as + if [info exists check_as_cfi_result] { + return $check_as_cfi_result + } + set as_file "tmpdir/check_as_cfi.s" + set as_fh [open $as_file w 0666] + puts $as_fh "# Generated file. DO NOT EDIT" + puts $as_fh "\t.cfi_startproc" + puts $as_fh "\t.cfi_endproc" + close $as_fh + remote_download host $as_file + verbose -log "Checking CFI support:" + rename "perror" "check_as_cfi_perror" + proc perror { args } { } + set success [ld_assemble $as $as_file "/dev/null"] + rename "perror" "" + rename "check_as_cfi_perror" "perror" + #remote_file host delete $as_file + set check_as_cfi_result $success + return $success +} + +# Provide virtual target "cfi" for targets supporting CFI. + +rename "istarget" "istarget_ld" +proc istarget { target } { + if {$target == "cfi"} { + return [check_as_cfi] + } + return [istarget_ld $target] +} |