source: trunk/src/binutils/ld/ld.info-3@ 1372

Last change on this file since 1372 was 610, checked in by bird, 22 years ago

This commit was generated by cvs2svn to compensate for changes in r609,
which included commits to RCS files with non-trunk default branches.

  • Property cvs2svn:cvs-rev set to 1.1.1.2
  • Property svn:eol-style set to native
  • Property svn:executable set to *
File size: 48.8 KB
Line 
1This is ld.info, produced by makeinfo version 4.3 from ./ld.texinfo.
2
3START-INFO-DIR-ENTRY
4* Ld: (ld). The GNU linker.
5END-INFO-DIR-ENTRY
6
7 This file documents the GNU linker LD version 2.14.
8
9 Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 2001,
102002, 2003 Free Software Foundation, Inc.
11
12
13File: ld.info, Node: Environment, Prev: Options, Up: Invocation
14
15Environment Variables
16=====================
17
18 You can change the behavior of `ld' with the environment variables
19`GNUTARGET', `LDEMULATION' and `COLLECT_NO_DEMANGLE'.
20
21 `GNUTARGET' determines the input-file object format if you don't use
22`-b' (or its synonym `--format'). Its value should be one of the BFD
23names for an input format (*note BFD::). If there is no `GNUTARGET' in
24the environment, `ld' uses the natural format of the target. If
25`GNUTARGET' is set to `default' then BFD attempts to discover the input
26format by examining binary input files; this method often succeeds, but
27there are potential ambiguities, since there is no method of ensuring
28that the magic number used to specify object-file formats is unique.
29However, the configuration procedure for BFD on each system places the
30conventional format for that system first in the search-list, so
31ambiguities are resolved in favor of convention.
32
33 `LDEMULATION' determines the default emulation if you don't use the
34`-m' option. The emulation can affect various aspects of linker
35behaviour, particularly the default linker script. You can list the
36available emulations with the `--verbose' or `-V' options. If the `-m'
37option is not used, and the `LDEMULATION' environment variable is not
38defined, the default emulation depends upon how the linker was
39configured.
40
41 Normally, the linker will default to demangling symbols. However, if
42`COLLECT_NO_DEMANGLE' is set in the environment, then it will default
43to not demangling symbols. This environment variable is used in a
44similar fashion by the `gcc' linker wrapper program. The default may
45be overridden by the `--demangle' and `--no-demangle' options.
46
47
48File: ld.info, Node: Scripts, Next: Machine Dependent, Prev: Invocation, Up: Top
49
50Linker Scripts
51**************
52
53 Every link is controlled by a "linker script". This script is
54written in the linker command language.
55
56 The main purpose of the linker script is to describe how the
57sections in the input files should be mapped into the output file, and
58to control the memory layout of the output file. Most linker scripts
59do nothing more than this. However, when necessary, the linker script
60can also direct the linker to perform many other operations, using the
61commands described below.
62
63 The linker always uses a linker script. If you do not supply one
64yourself, the linker will use a default script that is compiled into the
65linker executable. You can use the `--verbose' command line option to
66display the default linker script. Certain command line options, such
67as `-r' or `-N', will affect the default linker script.
68
69 You may supply your own linker script by using the `-T' command line
70option. When you do this, your linker script will replace the default
71linker script.
72
73 You may also use linker scripts implicitly by naming them as input
74files to the linker, as though they were files to be linked. *Note
75Implicit Linker Scripts::.
76
77* Menu:
78
79* Basic Script Concepts:: Basic Linker Script Concepts
80* Script Format:: Linker Script Format
81* Simple Example:: Simple Linker Script Example
82* Simple Commands:: Simple Linker Script Commands
83* Assignments:: Assigning Values to Symbols
84* SECTIONS:: SECTIONS Command
85* MEMORY:: MEMORY Command
86* PHDRS:: PHDRS Command
87* VERSION:: VERSION Command
88* Expressions:: Expressions in Linker Scripts
89* Implicit Linker Scripts:: Implicit Linker Scripts
90
91
92File: ld.info, Node: Basic Script Concepts, Next: Script Format, Up: Scripts
93
94Basic Linker Script Concepts
95============================
96
97 We need to define some basic concepts and vocabulary in order to
98describe the linker script language.
99
100 The linker combines input files into a single output file. The
101output file and each input file are in a special data format known as an
102"object file format". Each file is called an "object file". The
103output file is often called an "executable", but for our purposes we
104will also call it an object file. Each object file has, among other
105things, a list of "sections". We sometimes refer to a section in an
106input file as an "input section"; similarly, a section in the output
107file is an "output section".
108
109 Each section in an object file has a name and a size. Most sections
110also have an associated block of data, known as the "section contents".
111A section may be marked as "loadable", which mean that the contents
112should be loaded into memory when the output file is run. A section
113with no contents may be "allocatable", which means that an area in
114memory should be set aside, but nothing in particular should be loaded
115there (in some cases this memory must be zeroed out). A section which
116is neither loadable nor allocatable typically contains some sort of
117debugging information.
118
119 Every loadable or allocatable output section has two addresses. The
120first is the "VMA", or virtual memory address. This is the address the
121section will have when the output file is run. The second is the
122"LMA", or load memory address. This is the address at which the
123section will be loaded. In most cases the two addresses will be the
124same. An example of when they might be different is when a data section
125is loaded into ROM, and then copied into RAM when the program starts up
126(this technique is often used to initialize global variables in a ROM
127based system). In this case the ROM address would be the LMA, and the
128RAM address would be the VMA.
129
130 You can see the sections in an object file by using the `objdump'
131program with the `-h' option.
132
133 Every object file also has a list of "symbols", known as the "symbol
134table". A symbol may be defined or undefined. Each symbol has a name,
135and each defined symbol has an address, among other information. If
136you compile a C or C++ program into an object file, you will get a
137defined symbol for every defined function and global or static
138variable. Every undefined function or global variable which is
139referenced in the input file will become an undefined symbol.
140
141 You can see the symbols in an object file by using the `nm' program,
142or by using the `objdump' program with the `-t' option.
143
144
145File: ld.info, Node: Script Format, Next: Simple Example, Prev: Basic Script Concepts, Up: Scripts
146
147Linker Script Format
148====================
149
150 Linker scripts are text files.
151
152 You write a linker script as a series of commands. Each command is
153either a keyword, possibly followed by arguments, or an assignment to a
154symbol. You may separate commands using semicolons. Whitespace is
155generally ignored.
156
157 Strings such as file or format names can normally be entered
158directly. If the file name contains a character such as a comma which
159would otherwise serve to separate file names, you may put the file name
160in double quotes. There is no way to use a double quote character in a
161file name.
162
163 You may include comments in linker scripts just as in C, delimited by
164`/*' and `*/'. As in C, comments are syntactically equivalent to
165whitespace.
166
167
168File: ld.info, Node: Simple Example, Next: Simple Commands, Prev: Script Format, Up: Scripts
169
170Simple Linker Script Example
171============================
172
173 Many linker scripts are fairly simple.
174
175 The simplest possible linker script has just one command:
176`SECTIONS'. You use the `SECTIONS' command to describe the memory
177layout of the output file.
178
179 The `SECTIONS' command is a powerful command. Here we will describe
180a simple use of it. Let's assume your program consists only of code,
181initialized data, and uninitialized data. These will be in the
182`.text', `.data', and `.bss' sections, respectively. Let's assume
183further that these are the only sections which appear in your input
184files.
185
186 For this example, let's say that the code should be loaded at address
1870x10000, and that the data should start at address 0x8000000. Here is a
188linker script which will do that:
189 SECTIONS
190 {
191 . = 0x10000;
192 .text : { *(.text) }
193 . = 0x8000000;
194 .data : { *(.data) }
195 .bss : { *(.bss) }
196 }
197
198 You write the `SECTIONS' command as the keyword `SECTIONS', followed
199by a series of symbol assignments and output section descriptions
200enclosed in curly braces.
201
202 The first line inside the `SECTIONS' command of the above example
203sets the value of the special symbol `.', which is the location
204counter. If you do not specify the address of an output section in some
205other way (other ways are described later), the address is set from the
206current value of the location counter. The location counter is then
207incremented by the size of the output section. At the start of the
208`SECTIONS' command, the location counter has the value `0'.
209
210 The second line defines an output section, `.text'. The colon is
211required syntax which may be ignored for now. Within the curly braces
212after the output section name, you list the names of the input sections
213which should be placed into this output section. The `*' is a wildcard
214which matches any file name. The expression `*(.text)' means all
215`.text' input sections in all input files.
216
217 Since the location counter is `0x10000' when the output section
218`.text' is defined, the linker will set the address of the `.text'
219section in the output file to be `0x10000'.
220
221 The remaining lines define the `.data' and `.bss' sections in the
222output file. The linker will place the `.data' output section at
223address `0x8000000'. After the linker places the `.data' output
224section, the value of the location counter will be `0x8000000' plus the
225size of the `.data' output section. The effect is that the linker will
226place the `.bss' output section immediately after the `.data' output
227section in memory
228
229 The linker will ensure that each output section has the required
230alignment, by increasing the location counter if necessary. In this
231example, the specified addresses for the `.text' and `.data' sections
232will probably satisfy any alignment constraints, but the linker may
233have to create a small gap between the `.data' and `.bss' sections.
234
235 That's it! That's a simple and complete linker script.
236
237
238File: ld.info, Node: Simple Commands, Next: Assignments, Prev: Simple Example, Up: Scripts
239
240Simple Linker Script Commands
241=============================
242
243 In this section we describe the simple linker script commands.
244
245* Menu:
246
247* Entry Point:: Setting the entry point
248* File Commands:: Commands dealing with files
249
250* Format Commands:: Commands dealing with object file formats
251
252* Miscellaneous Commands:: Other linker script commands
253
254
255File: ld.info, Node: Entry Point, Next: File Commands, Up: Simple Commands
256
257Setting the Entry Point
258-----------------------
259
260 The first instruction to execute in a program is called the "entry
261point". You can use the `ENTRY' linker script command to set the entry
262point. The argument is a symbol name:
263 ENTRY(SYMBOL)
264
265 There are several ways to set the entry point. The linker will set
266the entry point by trying each of the following methods in order, and
267stopping when one of them succeeds:
268 * the `-e' ENTRY command-line option;
269
270 * the `ENTRY(SYMBOL)' command in a linker script;
271
272 * the value of the symbol `start', if defined;
273
274 * the address of the first byte of the `.text' section, if present;
275
276 * The address `0'.
277
278
279File: ld.info, Node: File Commands, Next: Format Commands, Prev: Entry Point, Up: Simple Commands
280
281Commands Dealing with Files
282---------------------------
283
284 Several linker script commands deal with files.
285
286`INCLUDE FILENAME'
287 Include the linker script FILENAME at this point. The file will
288 be searched for in the current directory, and in any directory
289 specified with the `-L' option. You can nest calls to `INCLUDE'
290 up to 10 levels deep.
291
292`INPUT(FILE, FILE, ...)'
293`INPUT(FILE FILE ...)'
294 The `INPUT' command directs the linker to include the named files
295 in the link, as though they were named on the command line.
296
297 For example, if you always want to include `subr.o' any time you do
298 a link, but you can't be bothered to put it on every link command
299 line, then you can put `INPUT (subr.o)' in your linker script.
300
301 In fact, if you like, you can list all of your input files in the
302 linker script, and then invoke the linker with nothing but a `-T'
303 option.
304
305 In case a "sysroot prefix" is configured, and the filename starts
306 with the `/' character, and the script being processed was located
307 inside the "sysroot prefix", the filename will be looked for in
308 the "sysroot prefix". Otherwise, the linker will try to open the
309 file in the current directory. If it is not found, the linker
310 will search through the archive library search path. See the
311 description of `-L' in *Note Command Line Options: Options.
312
313 If you use `INPUT (-lFILE)', `ld' will transform the name to
314 `libFILE.a', as with the command line argument `-l'.
315
316 When you use the `INPUT' command in an implicit linker script, the
317 files will be included in the link at the point at which the linker
318 script file is included. This can affect archive searching.
319
320`GROUP(FILE, FILE, ...)'
321`GROUP(FILE FILE ...)'
322 The `GROUP' command is like `INPUT', except that the named files
323 should all be archives, and they are searched repeatedly until no
324 new undefined references are created. See the description of `-('
325 in *Note Command Line Options: Options.
326
327`OUTPUT(FILENAME)'
328 The `OUTPUT' command names the output file. Using
329 `OUTPUT(FILENAME)' in the linker script is exactly like using `-o
330 FILENAME' on the command line (*note Command Line Options:
331 Options.). If both are used, the command line option takes
332 precedence.
333
334 You can use the `OUTPUT' command to define a default name for the
335 output file other than the usual default of `a.out'.
336
337`SEARCH_DIR(PATH)'
338 The `SEARCH_DIR' command adds PATH to the list of paths where `ld'
339 looks for archive libraries. Using `SEARCH_DIR(PATH)' is exactly
340 like using `-L PATH' on the command line (*note Command Line
341 Options: Options.). If both are used, then the linker will search
342 both paths. Paths specified using the command line option are
343 searched first.
344
345`STARTUP(FILENAME)'
346 The `STARTUP' command is just like the `INPUT' command, except
347 that FILENAME will become the first input file to be linked, as
348 though it were specified first on the command line. This may be
349 useful when using a system in which the entry point is always the
350 start of the first file.
351
352
353File: ld.info, Node: Format Commands, Next: Miscellaneous Commands, Prev: File Commands, Up: Simple Commands
354
355Commands Dealing with Object File Formats
356-----------------------------------------
357
358 A couple of linker script commands deal with object file formats.
359
360`OUTPUT_FORMAT(BFDNAME)'
361`OUTPUT_FORMAT(DEFAULT, BIG, LITTLE)'
362 The `OUTPUT_FORMAT' command names the BFD format to use for the
363 output file (*note BFD::). Using `OUTPUT_FORMAT(BFDNAME)' is
364 exactly like using `--oformat BFDNAME' on the command line (*note
365 Command Line Options: Options.). If both are used, the command
366 line option takes precedence.
367
368 You can use `OUTPUT_FORMAT' with three arguments to use different
369 formats based on the `-EB' and `-EL' command line options. This
370 permits the linker script to set the output format based on the
371 desired endianness.
372
373 If neither `-EB' nor `-EL' are used, then the output format will
374 be the first argument, DEFAULT. If `-EB' is used, the output
375 format will be the second argument, BIG. If `-EL' is used, the
376 output format will be the third argument, LITTLE.
377
378 For example, the default linker script for the MIPS ELF target
379 uses this command:
380 OUTPUT_FORMAT(elf32-bigmips, elf32-bigmips, elf32-littlemips)
381 This says that the default format for the output file is
382 `elf32-bigmips', but if the user uses the `-EL' command line
383 option, the output file will be created in the `elf32-littlemips'
384 format.
385
386`TARGET(BFDNAME)'
387 The `TARGET' command names the BFD format to use when reading input
388 files. It affects subsequent `INPUT' and `GROUP' commands. This
389 command is like using `-b BFDNAME' on the command line (*note
390 Command Line Options: Options.). If the `TARGET' command is used
391 but `OUTPUT_FORMAT' is not, then the last `TARGET' command is also
392 used to set the format for the output file. *Note BFD::.
393
394
395File: ld.info, Node: Miscellaneous Commands, Prev: Format Commands, Up: Simple Commands
396
397Other Linker Script Commands
398----------------------------
399
400 There are a few other linker scripts commands.
401
402`ASSERT(EXP, MESSAGE)'
403 Ensure that EXP is non-zero. If it is zero, then exit the linker
404 with an error code, and print MESSAGE.
405
406`EXTERN(SYMBOL SYMBOL ...)'
407 Force SYMBOL to be entered in the output file as an undefined
408 symbol. Doing this may, for example, trigger linking of additional
409 modules from standard libraries. You may list several SYMBOLs for
410 each `EXTERN', and you may use `EXTERN' multiple times. This
411 command has the same effect as the `-u' command-line option.
412
413`FORCE_COMMON_ALLOCATION'
414 This command has the same effect as the `-d' command-line option:
415 to make `ld' assign space to common symbols even if a relocatable
416 output file is specified (`-r').
417
418`INHIBIT_COMMON_ALLOCATION'
419 This command has the same effect as the `--no-define-common'
420 command-line option: to make `ld' omit the assignment of addresses
421 to common symbols even for a non-relocatable output file.
422
423`NOCROSSREFS(SECTION SECTION ...)'
424 This command may be used to tell `ld' to issue an error about any
425 references among certain output sections.
426
427 In certain types of programs, particularly on embedded systems when
428 using overlays, when one section is loaded into memory, another
429 section will not be. Any direct references between the two
430 sections would be errors. For example, it would be an error if
431 code in one section called a function defined in the other section.
432
433 The `NOCROSSREFS' command takes a list of output section names. If
434 `ld' detects any cross references between the sections, it reports
435 an error and returns a non-zero exit status. Note that the
436 `NOCROSSREFS' command uses output section names, not input section
437 names.
438
439`OUTPUT_ARCH(BFDARCH)'
440 Specify a particular output machine architecture. The argument is
441 one of the names used by the BFD library (*note BFD::). You can
442 see the architecture of an object file by using the `objdump'
443 program with the `-f' option.
444
445
446File: ld.info, Node: Assignments, Next: SECTIONS, Prev: Simple Commands, Up: Scripts
447
448Assigning Values to Symbols
449===========================
450
451 You may assign a value to a symbol in a linker script. This will
452define the symbol as a global symbol.
453
454* Menu:
455
456* Simple Assignments:: Simple Assignments
457* PROVIDE:: PROVIDE
458
459
460File: ld.info, Node: Simple Assignments, Next: PROVIDE, Up: Assignments
461
462Simple Assignments
463------------------
464
465 You may assign to a symbol using any of the C assignment operators:
466
467`SYMBOL = EXPRESSION ;'
468`SYMBOL += EXPRESSION ;'
469`SYMBOL -= EXPRESSION ;'
470`SYMBOL *= EXPRESSION ;'
471`SYMBOL /= EXPRESSION ;'
472`SYMBOL <<= EXPRESSION ;'
473`SYMBOL >>= EXPRESSION ;'
474`SYMBOL &= EXPRESSION ;'
475`SYMBOL |= EXPRESSION ;'
476 The first case will define SYMBOL to the value of EXPRESSION. In
477the other cases, SYMBOL must already be defined, and the value will be
478adjusted accordingly.
479
480 The special symbol name `.' indicates the location counter. You may
481only use this within a `SECTIONS' command.
482
483 The semicolon after EXPRESSION is required.
484
485 Expressions are defined below; see *Note Expressions::.
486
487 You may write symbol assignments as commands in their own right, or
488as statements within a `SECTIONS' command, or as part of an output
489section description in a `SECTIONS' command.
490
491 The section of the symbol will be set from the section of the
492expression; for more information, see *Note Expression Section::.
493
494 Here is an example showing the three different places that symbol
495assignments may be used:
496
497 floating_point = 0;
498 SECTIONS
499 {
500 .text :
501 {
502 *(.text)
503 _etext = .;
504 }
505 _bdata = (. + 3) & ~ 3;
506 .data : { *(.data) }
507 }
508
509In this example, the symbol `floating_point' will be defined as zero.
510The symbol `_etext' will be defined as the address following the last
511`.text' input section. The symbol `_bdata' will be defined as the
512address following the `.text' output section aligned upward to a 4 byte
513boundary.
514
515
516File: ld.info, Node: PROVIDE, Prev: Simple Assignments, Up: Assignments
517
518PROVIDE
519-------
520
521 In some cases, it is desirable for a linker script to define a symbol
522only if it is referenced and is not defined by any object included in
523the link. For example, traditional linkers defined the symbol `etext'.
524However, ANSI C requires that the user be able to use `etext' as a
525function name without encountering an error. The `PROVIDE' keyword may
526be used to define a symbol, such as `etext', only if it is referenced
527but not defined. The syntax is `PROVIDE(SYMBOL = EXPRESSION)'.
528
529 Here is an example of using `PROVIDE' to define `etext':
530 SECTIONS
531 {
532 .text :
533 {
534 *(.text)
535 _etext = .;
536 PROVIDE(etext = .);
537 }
538 }
539
540 In this example, if the program defines `_etext' (with a leading
541underscore), the linker will give a multiple definition error. If, on
542the other hand, the program defines `etext' (with no leading
543underscore), the linker will silently use the definition in the program.
544If the program references `etext' but does not define it, the linker
545will use the definition in the linker script.
546
547
548File: ld.info, Node: SECTIONS, Next: MEMORY, Prev: Assignments, Up: Scripts
549
550SECTIONS Command
551================
552
553 The `SECTIONS' command tells the linker how to map input sections
554into output sections, and how to place the output sections in memory.
555
556 The format of the `SECTIONS' command is:
557 SECTIONS
558 {
559 SECTIONS-COMMAND
560 SECTIONS-COMMAND
561 ...
562 }
563
564 Each SECTIONS-COMMAND may of be one of the following:
565
566 * an `ENTRY' command (*note Entry command: Entry Point.)
567
568 * a symbol assignment (*note Assignments::)
569
570 * an output section description
571
572 * an overlay description
573
574 The `ENTRY' command and symbol assignments are permitted inside the
575`SECTIONS' command for convenience in using the location counter in
576those commands. This can also make the linker script easier to
577understand because you can use those commands at meaningful points in
578the layout of the output file.
579
580 Output section descriptions and overlay descriptions are described
581below.
582
583 If you do not use a `SECTIONS' command in your linker script, the
584linker will place each input section into an identically named output
585section in the order that the sections are first encountered in the
586input files. If all input sections are present in the first file, for
587example, the order of sections in the output file will match the order
588in the first input file. The first section will be at address zero.
589
590* Menu:
591
592* Output Section Description:: Output section description
593* Output Section Name:: Output section name
594* Output Section Address:: Output section address
595* Input Section:: Input section description
596* Output Section Data:: Output section data
597* Output Section Keywords:: Output section keywords
598* Output Section Discarding:: Output section discarding
599* Output Section Attributes:: Output section attributes
600* Overlay Description:: Overlay description
601
602
603File: ld.info, Node: Output Section Description, Next: Output Section Name, Up: SECTIONS
604
605Output Section Description
606--------------------------
607
608 The full description of an output section looks like this:
609 SECTION [ADDRESS] [(TYPE)] : [AT(LMA)]
610 {
611 OUTPUT-SECTION-COMMAND
612 OUTPUT-SECTION-COMMAND
613 ...
614 } [>REGION] [AT>LMA_REGION] [:PHDR :PHDR ...] [=FILLEXP]
615
616 Most output sections do not use most of the optional section
617attributes.
618
619 The whitespace around SECTION is required, so that the section name
620is unambiguous. The colon and the curly braces are also required. The
621line breaks and other white space are optional.
622
623 Each OUTPUT-SECTION-COMMAND may be one of the following:
624
625 * a symbol assignment (*note Assignments::)
626
627 * an input section description (*note Input Section::)
628
629 * data values to include directly (*note Output Section Data::)
630
631 * a special output section keyword (*note Output Section Keywords::)
632
633
634File: ld.info, Node: Output Section Name, Next: Output Section Address, Prev: Output Section Description, Up: SECTIONS
635
636Output Section Name
637-------------------
638
639 The name of the output section is SECTION. SECTION must meet the
640constraints of your output format. In formats which only support a
641limited number of sections, such as `a.out', the name must be one of
642the names supported by the format (`a.out', for example, allows only
643`.text', `.data' or `.bss'). If the output format supports any number
644of sections, but with numbers and not names (as is the case for Oasys),
645the name should be supplied as a quoted numeric string. A section name
646may consist of any sequence of characters, but a name which contains
647any unusual characters such as commas must be quoted.
648
649 The output section name `/DISCARD/' is special; *Note Output Section
650Discarding::.
651
652
653File: ld.info, Node: Output Section Address, Next: Input Section, Prev: Output Section Name, Up: SECTIONS
654
655Output Section Description
656--------------------------
657
658 The ADDRESS is an expression for the VMA (the virtual memory
659address) of the output section. If you do not provide ADDRESS, the
660linker will set it based on REGION if present, or otherwise based on
661the current value of the location counter.
662
663 If you provide ADDRESS, the address of the output section will be
664set to precisely that. If you provide neither ADDRESS nor REGION, then
665the address of the output section will be set to the current value of
666the location counter aligned to the alignment requirements of the
667output section. The alignment requirement of the output section is the
668strictest alignment of any input section contained within the output
669section.
670
671 For example,
672 .text . : { *(.text) }
673
674and
675 .text : { *(.text) }
676
677are subtly different. The first will set the address of the `.text'
678output section to the current value of the location counter. The
679second will set it to the current value of the location counter aligned
680to the strictest alignment of a `.text' input section.
681
682 The ADDRESS may be an arbitrary expression; *Note Expressions::.
683For example, if you want to align the section on a 0x10 byte boundary,
684so that the lowest four bits of the section address are zero, you could
685do something like this:
686 .text ALIGN(0x10) : { *(.text) }
687
688This works because `ALIGN' returns the current location counter aligned
689upward to the specified value.
690
691 Specifying ADDRESS for a section will change the value of the
692location counter.
693
694
695File: ld.info, Node: Input Section, Next: Output Section Data, Prev: Output Section Address, Up: SECTIONS
696
697Input Section Description
698-------------------------
699
700 The most common output section command is an input section
701description.
702
703 The input section description is the most basic linker script
704operation. You use output sections to tell the linker how to lay out
705your program in memory. You use input section descriptions to tell the
706linker how to map the input files into your memory layout.
707
708* Menu:
709
710* Input Section Basics:: Input section basics
711* Input Section Wildcards:: Input section wildcard patterns
712* Input Section Common:: Input section for common symbols
713* Input Section Keep:: Input section and garbage collection
714* Input Section Example:: Input section example
715
716
717File: ld.info, Node: Input Section Basics, Next: Input Section Wildcards, Up: Input Section
718
719Input Section Basics
720....................
721