* ld.h (DISCARD_SECTION_NAME): Define to "/DISCARD/".
* ldlang.c (init_os): Fail on an attempt to initialize any section named DISCARD_SECTION_NAME. (wild_doit): Discard input sections assigned to an output section named DISCARD_SECTION_NAME. * ld.texinfo: Document use of /DISCARD/.
This commit is contained in:
parent
64664e69cb
commit
cf2e4f5fde
|
@ -1,5 +1,12 @@
|
||||||
Wed Mar 27 12:33:24 1996 Ian Lance Taylor <ian@cygnus.com>
|
Wed Mar 27 12:33:24 1996 Ian Lance Taylor <ian@cygnus.com>
|
||||||
|
|
||||||
|
* ld.h (DISCARD_SECTION_NAME): Define to "/DISCARD/".
|
||||||
|
* ldlang.c (init_os): Fail on an attempt to initialize any section
|
||||||
|
named DISCARD_SECTION_NAME.
|
||||||
|
(wild_doit): Discard input sections assigned to an output section
|
||||||
|
named DISCARD_SECTION_NAME.
|
||||||
|
* ld.texinfo: Document use of /DISCARD/.
|
||||||
|
|
||||||
* ldlang.c: Fix some indentation and comments.
|
* ldlang.c: Fix some indentation and comments.
|
||||||
|
|
||||||
Tue Mar 26 18:14:49 1996 Ian Lance Taylor <ian@cygnus.com>
|
Tue Mar 26 18:14:49 1996 Ian Lance Taylor <ian@cygnus.com>
|
||||||
|
|
|
@ -781,7 +781,6 @@ exist, @code{ld} looks for it in the directories specified by any
|
||||||
preceding @samp{-L} options. Multiple @samp{-T} options accumulate.
|
preceding @samp{-L} options. Multiple @samp{-T} options accumulate.
|
||||||
|
|
||||||
@kindex -t
|
@kindex -t
|
||||||
@cindex verbose
|
|
||||||
@cindex input files, displaying
|
@cindex input files, displaying
|
||||||
@item -t
|
@item -t
|
||||||
Print the names of the input files as @code{ld} processes them.
|
Print the names of the input files as @code{ld} processes them.
|
||||||
|
@ -824,10 +823,11 @@ be added to. Use @samp{-Ur} only for the last partial link, and
|
||||||
@samp{-r} for the others.
|
@samp{-r} for the others.
|
||||||
|
|
||||||
@kindex --verbose
|
@kindex --verbose
|
||||||
@cindex version
|
@cindex verbose
|
||||||
@item --verbose
|
@item --verbose
|
||||||
Display the version number for @code{ld} and list the linker emulations
|
Display the version number for @code{ld} and list the linker emulations
|
||||||
supported. Display which input files can and cannot be opened.
|
supported. Display which input files can and cannot be opened. Display
|
||||||
|
the linker script if using a default builtin script.
|
||||||
|
|
||||||
@kindex -v
|
@kindex -v
|
||||||
@kindex -V
|
@kindex -V
|
||||||
|
@ -1759,6 +1759,10 @@ sequence of characters, but any name which does not conform to the standard
|
||||||
@code{ld} symbol name syntax must be quoted.
|
@code{ld} symbol name syntax must be quoted.
|
||||||
@xref{Symbols, , Symbol Names}.
|
@xref{Symbols, , Symbol Names}.
|
||||||
|
|
||||||
|
The special @var{secname} @samp{/DISCARD/} may be used to discard input
|
||||||
|
sections. Any sections which are assigned to an output section named
|
||||||
|
@samp{/DISCARD/} are not included in the final link output.
|
||||||
|
|
||||||
The linker will not create output sections which do not have any
|
The linker will not create output sections which do not have any
|
||||||
contents. This is for convenience when referring to input sections that
|
contents. This is for convenience when referring to input sections that
|
||||||
may or may not exist. For example,
|
may or may not exist. For example,
|
||||||
|
|
26
ld/ldlang.c
26
ld/ldlang.c
|
@ -603,10 +603,13 @@ static void
|
||||||
init_os (s)
|
init_os (s)
|
||||||
lang_output_section_statement_type * s;
|
lang_output_section_statement_type * s;
|
||||||
{
|
{
|
||||||
/* asection *section = bfd_get_section_by_name(output_bfd, s->name);*/
|
section_userdata_type *new;
|
||||||
section_userdata_type *new =
|
|
||||||
(section_userdata_type *)
|
if (strcmp (s->name, DISCARD_SECTION_NAME) == 0)
|
||||||
stat_alloc (sizeof (section_userdata_type));
|
einfo ("%P%F: Illegal use of `%s' section", DISCARD_SECTION_NAME);
|
||||||
|
|
||||||
|
new = ((section_userdata_type *)
|
||||||
|
stat_alloc (sizeof (section_userdata_type)));
|
||||||
|
|
||||||
s->bfd_section = bfd_get_section_by_name (output_bfd, s->name);
|
s->bfd_section = bfd_get_section_by_name (output_bfd, s->name);
|
||||||
if (s->bfd_section == (asection *) NULL)
|
if (s->bfd_section == (asection *) NULL)
|
||||||
|
@ -622,7 +625,6 @@ init_os (s)
|
||||||
/* vma to allow us to output a section through itself */
|
/* vma to allow us to output a section through itself */
|
||||||
s->bfd_section->output_offset = 0;
|
s->bfd_section->output_offset = 0;
|
||||||
get_userdata (s->bfd_section) = (PTR) new;
|
get_userdata (s->bfd_section) = (PTR) new;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The wild routines.
|
/* The wild routines.
|
||||||
|
@ -642,6 +644,18 @@ wild_doit (ptr, section, output, file)
|
||||||
lang_output_section_statement_type *output;
|
lang_output_section_statement_type *output;
|
||||||
lang_input_statement_type *file;
|
lang_input_statement_type *file;
|
||||||
{
|
{
|
||||||
|
/* Input sections which are assigned to a section named
|
||||||
|
DISCARD_SECTION_NAME are discarded. */
|
||||||
|
if (strcmp (output->name, DISCARD_SECTION_NAME) == 0)
|
||||||
|
{
|
||||||
|
if (section != NULL && section->output_section == NULL)
|
||||||
|
{
|
||||||
|
/* This prevents future calls from assigning this section. */
|
||||||
|
section->output_section = bfd_abs_section_ptr;
|
||||||
|
}
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (output->bfd_section == NULL)
|
if (output->bfd_section == NULL)
|
||||||
init_os (output);
|
init_os (output);
|
||||||
|
|
||||||
|
@ -673,7 +687,7 @@ wild_doit (ptr, section, output, file)
|
||||||
if (section->alignment_power > output->bfd_section->alignment_power)
|
if (section->alignment_power > output->bfd_section->alignment_power)
|
||||||
output->bfd_section->alignment_power = section->alignment_power;
|
output->bfd_section->alignment_power = section->alignment_power;
|
||||||
|
|
||||||
/* If supplied an aligment, then force it */
|
/* If supplied an aligment, then force it. */
|
||||||
if (output->section_alignment != -1)
|
if (output->section_alignment != -1)
|
||||||
output->bfd_section->alignment_power = output->section_alignment;
|
output->bfd_section->alignment_power = output->section_alignment;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue