OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [tags/] [start/] [gdb-5.0/] [bfd/] [doc/] [section.texi] - Blame information for rev 1765

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 104 markom
@section Sections
2
The raw data contained within a BFD is maintained through the
3
section abstraction.  A single BFD may have any number of
4
sections.  It keeps hold of them by pointing to the first;
5
each one points to the next in the list.
6
 
7
Sections are supported in BFD in @code{section.c}.
8
 
9
@menu
10
* Section Input::
11
* Section Output::
12
* typedef asection::
13
* section prototypes::
14
@end menu
15
 
16
@node Section Input, Section Output, Sections, Sections
17
@subsection Section input
18
When a BFD is opened for reading, the section structures are
19
created and attached to the BFD.
20
 
21
Each section has a name which describes the section in the
22
outside world---for example, @code{a.out} would contain at least
23
three sections, called @code{.text}, @code{.data} and @code{.bss}.
24
 
25
Names need not be unique; for example a COFF file may have several
26
sections named @code{.data}.
27
 
28
Sometimes a BFD will contain more than the ``natural'' number of
29
sections. A back end may attach other sections containing
30
constructor data, or an application may add a section (using
31
@code{bfd_make_section}) to the sections attached to an already open
32
BFD. For example, the linker creates an extra section
33
@code{COMMON} for each input file's BFD to hold information about
34
common storage.
35
 
36
The raw data is not necessarily read in when
37
the section descriptor is created. Some targets may leave the
38
data in place until a @code{bfd_get_section_contents} call is
39
made. Other back ends may read in all the data at once.  For
40
example, an S-record file has to be read once to determine the
41
size of the data. An IEEE-695 file doesn't contain raw data in
42
sections, but data and relocation expressions intermixed, so
43
the data area has to be parsed to get out the data and
44
relocations.
45
 
46
@node Section Output, typedef asection, Section Input, Sections
47
@subsection Section output
48
To write a new object style BFD, the various sections to be
49
written have to be created. They are attached to the BFD in
50
the same way as input sections; data is written to the
51
sections using @code{bfd_set_section_contents}.
52
 
53
Any program that creates or combines sections (e.g., the assembler
54
and linker) must use the @code{asection} fields @code{output_section} and
55
@code{output_offset} to indicate the file sections to which each
56
section must be written.  (If the section is being created from
57
scratch, @code{output_section} should probably point to the section
58
itself and @code{output_offset} should probably be zero.)
59
 
60
The data to be written comes from input sections attached
61
(via @code{output_section} pointers) to
62
the output sections.  The output section structure can be
63
considered a filter for the input section: the output section
64
determines the vma of the output data and the name, but the
65
input section determines the offset into the output section of
66
the data to be written.
67
 
68
E.g., to create a section "O", starting at 0x100, 0x123 long,
69
containing two subsections, "A" at offset 0x0 (i.e., at vma
70
0x100) and "B" at offset 0x20 (i.e., at vma 0x120) the @code{asection}
71
structures would look like:
72
 
73
@example
74
   section name          "A"
75
     output_offset   0x00
76
     size            0x20
77
     output_section ----------->  section name    "O"
78
                             |    vma             0x100
79
   section name          "B" |    size            0x123
80
     output_offset   0x20    |
81
     size            0x103   |
82
     output_section  --------|
83
@end example
84
 
85
@subsection Link orders
86
The data within a section is stored in a @dfn{link_order}.
87
These are much like the fixups in @code{gas}.  The link_order
88
abstraction allows a section to grow and shrink within itself.
89
 
90
A link_order knows how big it is, and which is the next
91
link_order and where the raw data for it is; it also points to
92
a list of relocations which apply to it.
93
 
94
The link_order is used by the linker to perform relaxing on
95
final code.  The compiler creates code which is as big as
96
necessary to make it work without relaxing, and the user can
97
select whether to relax.  Sometimes relaxing takes a lot of
98
time.  The linker runs around the relocations to see if any
99
are attached to data which can be shrunk, if so it does it on
100
a link_order by link_order basis.
101
 
102
 
103
@node typedef asection, section prototypes, Section Output, Sections
104
@subsection typedef asection
105
Here is the section structure:
106
 
107
 
108
@example
109
 
110
 /* This structure is used for a comdat section, as in PE.  A comdat
111
    section is associated with a particular symbol.  When the linker
112
    sees a comdat section, it keeps only one of the sections with a
113
    given name and associated with a given symbol. */
114
 
115
struct bfd_comdat_info
116
@{
117
  /* The name of the symbol associated with a comdat section.  */
118
  const char *name;
119
 
120
  /* The local symbol table index of the symbol associated with a
121
     comdat section.  This is only meaningful to the object file format
122
     specific code; it is not an index into the list returned by
123
     bfd_canonicalize_symtab.  */
124
  long symbol;
125
 
126
  /* If this section is being discarded, the linker uses this field
127
     to point to the input section which is being kept.  */
128
  struct sec *sec;
129
@};
130
 
131
typedef struct sec
132
@{
133
        /* The name of the section; the name isn't a copy, the pointer is
134
        the same as that passed to bfd_make_section. */
135
 
136
    CONST char *name;
137
 
138
        /* Which section is it; 0..nth.      */
139
 
140
   int index;
141
 
142
        /* The next section in the list belonging to the BFD, or NULL. */
143
 
144
    struct sec *next;
145
 
146
        /* The field flags contains attributes of the section. Some
147
           flags are read in from the object file, and some are
148
           synthesized from other information.  */
149
 
150
    flagword flags;
151
 
152
#define SEC_NO_FLAGS   0x000
153
 
154
        /* Tells the OS to allocate space for this section when loading.
155
           This is clear for a section containing debug information
156
           only. */
157
#define SEC_ALLOC      0x001
158
 
159
        /* Tells the OS to load the section from the file when loading.
160
           This is clear for a .bss section. */
161
#define SEC_LOAD       0x002
162
 
163
        /* The section contains data still to be relocated, so there is
164
           some relocation information too. */
165
#define SEC_RELOC      0x004
166
 
167
#if 0   /* Obsolete ? */
168
#define SEC_BALIGN     0x008
169
#endif
170
 
171
        /* A signal to the OS that the section contains read only
172
          data. */
173
#define SEC_READONLY   0x010
174
 
175
        /* The section contains code only. */
176
#define SEC_CODE       0x020
177
 
178
        /* The section contains data only. */
179
#define SEC_DATA       0x040
180
 
181
        /* The section will reside in ROM. */
182
#define SEC_ROM        0x080
183
 
184
        /* The section contains constructor information. This section
185
           type is used by the linker to create lists of constructors and
186
           destructors used by @code{g++}. When a back end sees a symbol
187
           which should be used in a constructor list, it creates a new
188
           section for the type of name (e.g., @code{__CTOR_LIST__}), attaches
189
           the symbol to it, and builds a relocation. To build the lists
190
           of constructors, all the linker has to do is catenate all the
191
           sections called @code{__CTOR_LIST__} and relocate the data
192
           contained within - exactly the operations it would peform on
193
           standard data. */
194
#define SEC_CONSTRUCTOR 0x100
195
 
196
        /* The section is a constructor, and should be placed at the
197
          end of the text, data, or bss section(?). */
198
#define SEC_CONSTRUCTOR_TEXT 0x1100
199
#define SEC_CONSTRUCTOR_DATA 0x2100
200
#define SEC_CONSTRUCTOR_BSS  0x3100
201
 
202
        /* The section has contents - a data section could be
203
           @code{SEC_ALLOC} | @code{SEC_HAS_CONTENTS}; a debug section could be
204
           @code{SEC_HAS_CONTENTS} */
205
#define SEC_HAS_CONTENTS 0x200
206
 
207
        /* An instruction to the linker to not output the section
208
           even if it has information which would normally be written. */
209
#define SEC_NEVER_LOAD 0x400
210
 
211
        /* The section is a COFF shared library section.  This flag is
212
           only for the linker.  If this type of section appears in
213
           the input file, the linker must copy it to the output file
214
           without changing the vma or size.  FIXME: Although this
215
           was originally intended to be general, it really is COFF
216
           specific (and the flag was renamed to indicate this).  It
217
           might be cleaner to have some more general mechanism to
218
           allow the back end to control what the linker does with
219
           sections. */
220
#define SEC_COFF_SHARED_LIBRARY 0x800
221
 
222
        /* The section contains common symbols (symbols may be defined
223
           multiple times, the value of a symbol is the amount of
224
           space it requires, and the largest symbol value is the one
225
           used).  Most targets have exactly one of these (which we
226
           translate to bfd_com_section_ptr), but ECOFF has two. */
227
#define SEC_IS_COMMON 0x8000
228
 
229
        /* The section contains only debugging information.  For
230
           example, this is set for ELF .debug and .stab sections.
231
           strip tests this flag to see if a section can be
232
           discarded. */
233
#define SEC_DEBUGGING 0x10000
234
 
235
        /* The contents of this section are held in memory pointed to
236
           by the contents field.  This is checked by
237
           bfd_get_section_contents, and the data is retrieved from
238
           memory if appropriate.  */
239
#define SEC_IN_MEMORY 0x20000
240
 
241
        /* The contents of this section are to be excluded by the
242
           linker for executable and shared objects unless those
243
           objects are to be further relocated.  */
244
#define SEC_EXCLUDE 0x40000
245
 
246
       /* The contents of this section are to be sorted by the
247
          based on the address specified in the associated symbol
248
          table.  */
249
#define SEC_SORT_ENTRIES 0x80000
250
 
251
       /* When linking, duplicate sections of the same name should be
252
          discarded, rather than being combined into a single section as
253
          is usually done.  This is similar to how common symbols are
254
          handled.  See SEC_LINK_DUPLICATES below.  */
255
#define SEC_LINK_ONCE 0x100000
256
 
257
       /* If SEC_LINK_ONCE is set, this bitfield describes how the linker
258
          should handle duplicate sections.  */
259
#define SEC_LINK_DUPLICATES 0x600000
260
 
261
       /* This value for SEC_LINK_DUPLICATES means that duplicate
262
          sections with the same name should simply be discarded. */
263
#define SEC_LINK_DUPLICATES_DISCARD 0x0
264
 
265
       /* This value for SEC_LINK_DUPLICATES means that the linker
266
          should warn if there are any duplicate sections, although
267
          it should still only link one copy.  */
268
#define SEC_LINK_DUPLICATES_ONE_ONLY 0x200000
269
 
270
       /* This value for SEC_LINK_DUPLICATES means that the linker
271
          should warn if any duplicate sections are a different size.  */
272
#define SEC_LINK_DUPLICATES_SAME_SIZE 0x400000
273
 
274
       /* This value for SEC_LINK_DUPLICATES means that the linker
275
          should warn if any duplicate sections contain different
276
          contents.  */
277
#define SEC_LINK_DUPLICATES_SAME_CONTENTS 0x600000
278
 
279
       /* This section was created by the linker as part of dynamic
280
          relocation or other arcane processing.  It is skipped when
281
          going through the first-pass output, trusting that someone
282
          else up the line will take care of it later.  */
283
#define SEC_LINKER_CREATED 0x800000
284
 
285
       /* This section should not be subject to garbage collection.  */
286
#define SEC_KEEP 0x1000000
287
 
288
       /* This section contains "short" data, and should be placed
289
          "near" the GP.  */
290
#define SEC_SMALL_DATA 0x2000000
291
 
292
       /* This section contains data which may be shared with other
293
          executables or shared objects.  */
294
#define SEC_SHARED 0x4000000
295
 
296
       /* When a section with this flag is being linked, then if the size of
297
          the input section is less than a page, it should not cross a page
298
          boundary.  If the size of the input section is one page or more, it
299
          should be aligned on a page boundary.  */
300
#define SEC_BLOCK 0x8000000
301
 
302
       /* Conditionally link this section; do not link if there are no
303
          references found to any symbol in the section.  */
304
#define SEC_CLINK 0x10000000
305
 
306
       /*  End of section flags.  */
307
 
308
       /* Some internal packed boolean fields.  */
309
 
310
       /* See the vma field.  */
311
       unsigned int user_set_vma : 1;
312
 
313
       /* Whether relocations have been processed.  */
314
       unsigned int reloc_done : 1;
315
 
316
       /* A mark flag used by some of the linker backends.  */
317
       unsigned int linker_mark : 1;
318
 
319
       /* A mark flag used by some linker backends for garbage collection.  */
320
       unsigned int gc_mark : 1;
321
 
322
       /* End of internal packed boolean fields.  */
323
 
324
       /*  The virtual memory address of the section - where it will be
325
           at run time.  The symbols are relocated against this.  The
326
           user_set_vma flag is maintained by bfd; if it's not set, the
327
           backend can assign addresses (for example, in @code{a.out}, where
328
           the default address for @code{.data} is dependent on the specific
329
           target and various flags).  */
330
 
331
   bfd_vma vma;
332
 
333
       /*  The load address of the section - where it would be in a
334
           rom image; really only used for writing section header
335
           information. */
336
 
337
   bfd_vma lma;
338
 
339
        /* The size of the section in octets, as it will be output.
340
           Contains a value even if the section has no contents (e.g., the
341
           size of @code{.bss}).  This will be filled in after relocation.  */
342
 
343
   bfd_size_type _cooked_size;
344
 
345
        /* The original size on disk of the section, in octets.  Normally this
346
           value is the same as the size, but if some relaxing has
347
           been done, then this value will be bigger.  */
348
 
349
   bfd_size_type _raw_size;
350
 
351
        /* If this section is going to be output, then this value is the
352
           offset in *bytes* into the output section of the first byte in the
353
           input section (byte ==> smallest addressable unit on the
354
           target).  In most cases, if this was going to start at the
355
           100th octet (8-bit quantity) in the output section, this value
356
           would be 100.  However, if the target byte size is 16 bits
357
           (bfd_octets_per_byte is "2"), this value would be 50. */
358
 
359
   bfd_vma output_offset;
360
 
361
        /* The output section through which to map on output. */
362
 
363
   struct sec *output_section;
364
 
365
        /* The alignment requirement of the section, as an exponent of 2 -
366
           e.g., 3 aligns to 2^3 (or 8). */
367
 
368
   unsigned int alignment_power;
369
 
370
        /* If an input section, a pointer to a vector of relocation
371
           records for the data in this section. */
372
 
373
   struct reloc_cache_entry *relocation;
374
 
375
        /* If an output section, a pointer to a vector of pointers to
376
           relocation records for the data in this section. */
377
 
378
   struct reloc_cache_entry **orelocation;
379
 
380
        /* The number of relocation records in one of the above  */
381
 
382
   unsigned reloc_count;
383
 
384
        /* Information below is back end specific - and not always used
385
           or updated.  */
386
 
387
        /* File position of section data    */
388
 
389
   file_ptr filepos;
390
 
391
        /* File position of relocation info */
392
 
393
   file_ptr rel_filepos;
394
 
395
        /* File position of line data       */
396
 
397
   file_ptr line_filepos;
398
 
399
        /* Pointer to data for applications */
400
 
401
   PTR userdata;
402
 
403
        /* If the SEC_IN_MEMORY flag is set, this points to the actual
404
           contents.  */
405
   unsigned char *contents;
406
 
407
        /* Attached line number information */
408
 
409
   alent *lineno;
410
 
411
        /* Number of line number records   */
412
 
413
   unsigned int lineno_count;
414
 
415
        /* Optional information about a COMDAT entry; NULL if not COMDAT */
416
 
417
   struct bfd_comdat_info *comdat;
418
 
419
        /* When a section is being output, this value changes as more
420
           linenumbers are written out */
421
 
422
   file_ptr moving_line_filepos;
423
 
424
        /* What the section number is in the target world  */
425
 
426
   int target_index;
427
 
428
   PTR used_by_bfd;
429
 
430
        /* If this is a constructor section then here is a list of the
431
           relocations created to relocate items within it. */
432
 
433
   struct relent_chain *constructor_chain;
434
 
435
        /* The BFD which owns the section. */
436
 
437
   bfd *owner;
438
 
439
        /* A symbol which points at this section only */
440
   struct symbol_cache_entry *symbol;
441
   struct symbol_cache_entry **symbol_ptr_ptr;
442
 
443
   struct bfd_link_order *link_order_head;
444
   struct bfd_link_order *link_order_tail;
445
@} asection ;
446
 
447
    /* These sections are global, and are managed by BFD.  The application
448
       and target back end are not permitted to change the values in
449
       these sections.  New code should use the section_ptr macros rather
450
       than referring directly to the const sections.  The const sections
451
       may eventually vanish.  */
452
#define BFD_ABS_SECTION_NAME "*ABS*"
453
#define BFD_UND_SECTION_NAME "*UND*"
454
#define BFD_COM_SECTION_NAME "*COM*"
455
#define BFD_IND_SECTION_NAME "*IND*"
456
 
457
    /* the absolute section */
458
extern const asection bfd_abs_section;
459
#define bfd_abs_section_ptr ((asection *) &bfd_abs_section)
460
#define bfd_is_abs_section(sec) ((sec) == bfd_abs_section_ptr)
461
    /* Pointer to the undefined section */
462
extern const asection bfd_und_section;
463
#define bfd_und_section_ptr ((asection *) &bfd_und_section)
464
#define bfd_is_und_section(sec) ((sec) == bfd_und_section_ptr)
465
    /* Pointer to the common section */
466
extern const asection bfd_com_section;
467
#define bfd_com_section_ptr ((asection *) &bfd_com_section)
468
    /* Pointer to the indirect section */
469
extern const asection bfd_ind_section;
470
#define bfd_ind_section_ptr ((asection *) &bfd_ind_section)
471
#define bfd_is_ind_section(sec) ((sec) == bfd_ind_section_ptr)
472
 
473
extern const struct symbol_cache_entry * const bfd_abs_symbol;
474
extern const struct symbol_cache_entry * const bfd_com_symbol;
475
extern const struct symbol_cache_entry * const bfd_und_symbol;
476
extern const struct symbol_cache_entry * const bfd_ind_symbol;
477
#define bfd_get_section_size_before_reloc(section) \
478
     ((section)->reloc_done ? (abort (), (bfd_size_type) 1) \
479
                            : (section)->_raw_size)
480
#define bfd_get_section_size_after_reloc(section) \
481
     ((section)->reloc_done ? (section)->_cooked_size \
482
                            : (abort (), (bfd_size_type) 1))
483
@end example
484
 
485
@node section prototypes,  , typedef asection, Sections
486
@subsection Section prototypes
487
These are the functions exported by the section handling part of BFD.
488
 
489
@findex bfd_get_section_by_name
490
@subsubsection @code{bfd_get_section_by_name}
491
@strong{Synopsis}
492
@example
493
asection *bfd_get_section_by_name(bfd *abfd, CONST char *name);
494
@end example
495
@strong{Description}@*
496
Run through @var{abfd} and return the one of the
497
@code{asection}s whose name matches @var{name}, otherwise @code{NULL}.
498
@xref{Sections}, for more information.
499
 
500
This should only be used in special cases; the normal way to process
501
all sections of a given name is to use @code{bfd_map_over_sections} and
502
@code{strcmp} on the name (or better yet, base it on the section flags
503
or something else) for each section.
504
 
505
@findex bfd_make_section_old_way
506
@subsubsection @code{bfd_make_section_old_way}
507
@strong{Synopsis}
508
@example
509
asection *bfd_make_section_old_way(bfd *abfd, CONST char *name);
510
@end example
511
@strong{Description}@*
512
Create a new empty section called @var{name}
513
and attach it to the end of the chain of sections for the
514
BFD @var{abfd}. An attempt to create a section with a name which
515
is already in use returns its pointer without changing the
516
section chain.
517
 
518
It has the funny name since this is the way it used to be
519
before it was rewritten....
520
 
521
Possible errors are:
522
@itemize @bullet
523
 
524
@item
525
@code{bfd_error_invalid_operation} -
526
If output has already started for this BFD.
527
@item
528
@code{bfd_error_no_memory} -
529
If memory allocation fails.
530
@end itemize
531
 
532
@findex bfd_make_section_anyway
533
@subsubsection @code{bfd_make_section_anyway}
534
@strong{Synopsis}
535
@example
536
asection *bfd_make_section_anyway(bfd *abfd, CONST char *name);
537
@end example
538
@strong{Description}@*
539
Create a new empty section called @var{name} and attach it to the end of
540
the chain of sections for @var{abfd}.  Create a new section even if there
541
is already a section with that name.
542
 
543
Return @code{NULL} and set @code{bfd_error} on error; possible errors are:
544
@itemize @bullet
545
 
546
@item
547
@code{bfd_error_invalid_operation} - If output has already started for @var{abfd}.
548
@item
549
@code{bfd_error_no_memory} - If memory allocation fails.
550
@end itemize
551
 
552
@findex bfd_make_section
553
@subsubsection @code{bfd_make_section}
554
@strong{Synopsis}
555
@example
556
asection *bfd_make_section(bfd *, CONST char *name);
557
@end example
558
@strong{Description}@*
559
Like @code{bfd_make_section_anyway}, but return @code{NULL} (without calling
560
bfd_set_error ()) without changing the section chain if there is already a
561
section named @var{name}.  If there is an error, return @code{NULL} and set
562
@code{bfd_error}.
563
 
564
@findex bfd_set_section_flags
565
@subsubsection @code{bfd_set_section_flags}
566
@strong{Synopsis}
567
@example
568
boolean bfd_set_section_flags(bfd *abfd, asection *sec, flagword flags);
569
@end example
570
@strong{Description}@*
571
Set the attributes of the section @var{sec} in the BFD
572
@var{abfd} to the value @var{flags}. Return @code{true} on success,
573
@code{false} on error. Possible error returns are:
574
 
575
@itemize @bullet
576
 
577
@item
578
@code{bfd_error_invalid_operation} -
579
The section cannot have one or more of the attributes
580
requested. For example, a .bss section in @code{a.out} may not
581
have the @code{SEC_HAS_CONTENTS} field set.
582
@end itemize
583
 
584
@findex bfd_map_over_sections
585
@subsubsection @code{bfd_map_over_sections}
586
@strong{Synopsis}
587
@example
588
void bfd_map_over_sections(bfd *abfd,
589
    void (*func)(bfd *abfd,
590
    asection *sect,
591
    PTR obj),
592
    PTR obj);
593
@end example
594
@strong{Description}@*
595
Call the provided function @var{func} for each section
596
attached to the BFD @var{abfd}, passing @var{obj} as an
597
argument. The function will be called as if by
598
 
599
@example
600
       func(abfd, the_section, obj);
601
@end example
602
 
603
This is the prefered method for iterating over sections; an
604
alternative would be to use a loop:
605
 
606
@example
607
          section *p;
608
          for (p = abfd->sections; p != NULL; p = p->next)
609
             func(abfd, p, ...)
610
@end example
611
 
612
@findex bfd_set_section_size
613
@subsubsection @code{bfd_set_section_size}
614
@strong{Synopsis}
615
@example
616
boolean bfd_set_section_size(bfd *abfd, asection *sec, bfd_size_type val);
617
@end example
618
@strong{Description}@*
619
Set @var{sec} to the size @var{val}. If the operation is
620
ok, then @code{true} is returned, else @code{false}.
621
 
622
Possible error returns:
623
@itemize @bullet
624
 
625
@item
626
@code{bfd_error_invalid_operation} -
627
Writing has started to the BFD, so setting the size is invalid.
628
@end itemize
629
 
630
@findex bfd_set_section_contents
631
@subsubsection @code{bfd_set_section_contents}
632
@strong{Synopsis}
633
@example
634
boolean bfd_set_section_contents
635
   (bfd *abfd,
636
    asection *section,
637
    PTR data,
638
    file_ptr offset,
639
    bfd_size_type count);
640
@end example
641
@strong{Description}@*
642
Sets the contents of the section @var{section} in BFD
643
@var{abfd} to the data starting in memory at @var{data}. The
644
data is written to the output section starting at offset
645
@var{offset} for @var{count} octets.
646
 
647
Normally @code{true} is returned, else @code{false}. Possible error
648
returns are:
649
@itemize @bullet
650
 
651
@item
652
@code{bfd_error_no_contents} -
653
The output section does not have the @code{SEC_HAS_CONTENTS}
654
attribute, so nothing can be written to it.
655
@item
656
and some more too
657
@end itemize
658
This routine is front end to the back end function
659
@code{_bfd_set_section_contents}.
660
 
661
@findex bfd_get_section_contents
662
@subsubsection @code{bfd_get_section_contents}
663
@strong{Synopsis}
664
@example
665
boolean bfd_get_section_contents
666
   (bfd *abfd, asection *section, PTR location,
667
    file_ptr offset, bfd_size_type count);
668
@end example
669
@strong{Description}@*
670
Read data from @var{section} in BFD @var{abfd}
671
into memory starting at @var{location}. The data is read at an
672
offset of @var{offset} from the start of the input section,
673
and is read for @var{count} bytes.
674
 
675
If the contents of a constructor with the @code{SEC_CONSTRUCTOR}
676
flag set are requested or if the section does not have the
677
@code{SEC_HAS_CONTENTS} flag set, then the @var{location} is filled
678
with zeroes. If no errors occur, @code{true} is returned, else
679
@code{false}.
680
 
681
@findex bfd_copy_private_section_data
682
@subsubsection @code{bfd_copy_private_section_data}
683
@strong{Synopsis}
684
@example
685
boolean bfd_copy_private_section_data(bfd *ibfd, asection *isec, bfd *obfd, asection *osec);
686
@end example
687
@strong{Description}@*
688
Copy private section information from @var{isec} in the BFD
689
@var{ibfd} to the section @var{osec} in the BFD @var{obfd}.
690
Return @code{true} on success, @code{false} on error.  Possible error
691
returns are:
692
 
693
@itemize @bullet
694
 
695
@item
696
@code{bfd_error_no_memory} -
697
Not enough memory exists to create private data for @var{osec}.
698
@end itemize
699
@example
700
#define bfd_copy_private_section_data(ibfd, isection, obfd, osection) \
701
     BFD_SEND (obfd, _bfd_copy_private_section_data, \
702
               (ibfd, isection, obfd, osection))
703
@end example
704
 
705
@findex _bfd_strip_section_from_output
706
@subsubsection @code{_bfd_strip_section_from_output}
707
@strong{Synopsis}
708
@example
709
void _bfd_strip_section_from_output
710
   (struct bfd_link_info *info, asection *section);
711
@end example
712
@strong{Description}@*
713
Remove @var{section} from the output.  If the output section
714
becomes empty, remove it from the output bfd.  @var{info} may
715
be NULL; if it is not, it is used to decide whether the output
716
section is empty.
717
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.