X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=ld%2FREADME;h=d28d2a00bc960a355e6973d1c0d9674ea32b0e57;hb=d0801dd8f22a3e739c6a7d126d45829df981794d;hp=f6da8285b1f5c06d8616e944a136870adb490bf5;hpb=c1eeb9af4ab9c19672530881b23575ee63f47f38;p=deliverable%2Fbinutils-gdb.git diff --git a/ld/README b/ld/README index f6da8285b1..d28d2a00bc 100644 --- a/ld/README +++ b/ld/README @@ -1,51 +1,73 @@ -This is a BETA release of a completely rewritten GNU linker. -It is distributed with other "binary utilities" which should -be in ../binutils. See ../binutils/README for more general notes, -including where to send bug reports. + README for LD -There are many new features of the linker: +This is the GNU linker. It is distributed with other "binary +utilities" which should be in ../binutils. See ../binutils/README for +more general notes, including where to send bug reports. + +There are many features of the linker: * The linker uses a Binary File Descriptor library (../bfd) -that it uses to read and write object files. This helps -insulate the linker itself from the format of object files. + that it uses to read and write object files. This helps + insulate the linker itself from the format of object files. -* The linker support a number of different object file -formats. It can even handle multiple formats at once: -Read two input formats and write a third. +* The linker supports a number of different object file + formats. It can even handle multiple formats at once: + Read two input formats and write a third. * The linker can be configured for cross-linking. -* The linker contains a control language. +* The linker supports a control language. -* There is a manual. +* There is a user manual (ld.texi), as well as the + beginnings of an internals manual (ldint.texi). Installation ============ See ../binutils/README. + If you want to make a cross-linker, you may want to specify a different search path of -lfoo libraries than the default. -You can do this by setting the LIB_PATH variable in ./Makefile. +You can do this by setting the LIB_PATH variable in ./Makefile +or using the --with-lib-path configure switch. + +To build just the linker, make the target all-ld from the top level +directory (one directory above this one). Porting to a new target ======================= -A new target configuration may need a new linker script (.sc file) -to specify linker actions (such as the layout of the output). -See if one of the existing ones are suitable. -Note that the Makefile generates variants of the standard script -that are used when ld is passed -r -Ur -N or -n options. -These variant default scripts are generated from the "master" -script using sed scripts that may not work in all cases. -Look at the rules and comments in ld/Makefile.in to make sure -you stay with the rules. - -Otherwise, you may need to add a new "emulation" (a sample of a -recently added target and emulation is for the SOny 68k News -family - look for files named *news*). - -Also see the notes in ../binutils/README. +See the ldint.texi manual. Reporting bugs etc =========================== + See ../binutils/README. + +Known problems +============== + +The Solaris linker normally exports all dynamic symbols from an +executable. The GNU linker does not do this by default. This is +because the GNU linker tries to present the same interface for all +similar targets (in this case, all native ELF targets). This does not +matter for normal programs, but it can make a difference for programs +which try to dlopen an executable, such as PERL or Tcl. You can make +the GNU linker export all dynamic symbols with the -E or +--export-dynamic command line option. + +HP/UX 9.01 has a shell bug that causes the linker scripts to be +generated incorrectly. The symptom of this appears to be "fatal error +- scanner input buffer overflow" error messages. There are various +workarounds to this: + * Build and install bash, and build with "make SHELL=bash". + * Update to a version of HP/UX with a working shell (e.g., 9.05). + * Replace "(. ${srcdir}/scripttempl/${SCRIPT_NAME}.sc)" in + genscripts.sh with "sh ${srcdir}..." (no parens) and make sure the + emulparams script used exports any shell variables it sets. + +Copyright (C) 2012-2019 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved.