]> git.sur5r.net Git - cc65/blobdiff - doc/ld65.sgml
Removed the - now unused - empty builtin configuration (was used for the ace
[cc65] / doc / ld65.sgml
index a3b5952706c2ab0dba09f3fce0445dd686995e02..80cfd4421846924bf565627a87cb192da22633cf 100644 (file)
@@ -67,6 +67,7 @@ Short options:
   -m name               Create a map file
   -o name               Name the default output file
   -t sys                Set the target system
+  -u sym                Force an import of symbol `sym'
   -v                    Verbose mode
   -vm                   Verbose map file
 
@@ -77,6 +78,7 @@ Long options:
   --define sym=val      Define a symbol
   --dump-config name    Dump a builtin configuration
   --end-group           End a library group
+  --force-import sym    Force an import of symbol `sym'
   --help                Help (this text)
   --lib file            Link this library
   --lib-path path       Specify a library search path
@@ -153,6 +155,7 @@ Here is a description of all the command line options:
   <itemize>
   <item>none
   <item>apple2
+  <item>apple2enh
   <item>atari
   <item>atmos
   <item>c16 (works also for the c116 with memory up to 32K)
@@ -166,12 +169,29 @@ Here is a description of all the command line options:
   <item>lunix
   <item>atmos
   <item>nes
+  <item>supervision
   </itemize>
 
   There are a few more targets defined but neither of them is actually
   supported.
 
 
+  <tag><tt>-u sym[:addrsize], --force-import sym[:addrsize]</tt></tag>
+
+  Force an import of a symbol. While object files are always linked to the
+  output file, regardless if there are any references, object modules from
+  libraries get only linked in if an import can be satisfied by this module.
+  The <tt/--fore-import/ option may be used to add a reference to a symbol and
+  as a result force linkage of the module that exports the identifier.
+
+  The name of the symbol may optionally be followed by a colon and an address
+  size specifier. If no address size is specified, the default address size
+  for the target machine is used.
+
+  Please note that the symbol name needs to have the internal representation,
+  meaning you have to prepend an underline for C identifiers.
+
+
   <label id="option-v">
   <tag><tt>-v, --verbose</tt></tag>
 
@@ -230,8 +250,8 @@ Here is a description of all the command line options:
 
   Using -S you may define the default starting address. If and how this
   address is used depends on the config file in use. For the builtin
-  configurations, only the "none" system honors an explicit start address,
-  all other builtin config provide their own.
+  configurations, only the "none", "apple2" and "apple2enh" systems honor an
+  explicit start address, all other builtin config provide their own.
 
 
   <tag><tt>-V, --version</tt></tag>
@@ -486,7 +506,7 @@ What we are doing here is telling the linker, that all segments go into the
 the linker will first write the <tt/CODE/ segment, then the <tt/RODATA/
 segment, then the <tt/DATA/ segment - but it will not write the <tt/BSS/
 segment. Why? Enter the segment type: For each segment specified, you may also
-specify a segment attribute. There are five possible segment attributes:
+specify a segment attribute. There are four possible segment attributes:
 
 <tscreen><verb>
        ro      means readonly
@@ -715,14 +735,14 @@ page boundary, use
 </verb></tscreen>
 
 If an alignment is requested, the linker will add enough space to the output
-file, so that the new segment starts at an address that is divideable by the
+file, so that the new segment starts at an address that is dividable by the
 given number without a remainder. All addresses are adjusted accordingly. To
 fill the unused space, bytes of zero are used, or, if the memory area has a
 "<tt/fillval/" attribute, that value. Alignment is always needed, if you have
-the used the <tt/.ALIGN/ command in the assembler. The alignment of a segment
+used the <tt/.ALIGN/ command in the assembler. The alignment of a segment
 must be equal or greater than the alignment used in the <tt/.ALIGN/ command.
 The linker will check that, and issue a warning, if the alignment of a segment
-is lower than the alignment requested in a <tt/.ALIGN/ command of one of the
+is lower than the alignment requested in an <tt/.ALIGN/ command of one of the
 modules making up this segment.
 
 For a given segment you may also specify a fixed offset into a memory area or
@@ -753,7 +773,7 @@ The "<tt/align/", "<tt/start/" and "<tt/offset/" attributes change placement
 of the segment in the run memory area, because this is what is usually
 desired. If load and run memory areas are equal (which is the case if only the
 load memory area has been specified), the attributes will also work. There is
-also a "<tt/align_load/" attribute that may be used to align the start of the
+also an "<tt/align_load/" attribute that may be used to align the start of the
 segment in the load memory area, in case different load and run areas have
 been specified. There are no special attributes to set start or offset for
 just the load memory area.
@@ -781,7 +801,8 @@ look like this:
 </verb></tscreen>
 
 The only other available output format is the o65 format specified by Andre
-Fachat. It is defined like this:
+Fachat (see the <htmlurl url="http://www.6502.org/users/andre/o65/fileformat.html"
+name="6502 binary relocation format specification">). It is defined like this:
 
 <tscreen><verb>
        FILES {
@@ -934,7 +955,7 @@ distributed together with the machine specific binary packages (usually in the
 doc directory) and don't have a special format. So if you need a special
 configuration, it's a good idea to start with the builtin configuration for
 your system. In a first step, just replace <tt/-t target/ by <tt/-C
-configfile/. The go on and modify the config file to suit your needs.
+configfile/. Then go on and modify the config file to suit your needs.