forked from Imagelibrary/binutils-gdb
.plt stub for lazy linking, --stub-group-size=N ld switch,
import stub fix, extra DIR14F reloc to fix abort in tc_gen_reloc
This commit is contained in:
12
ld/ChangeLog
12
ld/ChangeLog
@@ -1,3 +1,15 @@
|
||||
2000-09-28 Alan Modra <alan@linuxcare.com.au>
|
||||
|
||||
* ld.texinfo (HPPA ELF32): New section.
|
||||
|
||||
* emultempl/hppaelf.em (group_size): New.
|
||||
(hppaelf_finish): Pass group_size to elf32_hppa_size_stubs.
|
||||
(PARSE_AND_LIST_PROLOGUE): Add OPTION_STUBGROUP_SIZE.
|
||||
(PARSE_AND_LIST_LONGOPTS): Add --stub-group-size. Duplicate
|
||||
options to prevent abbreviations matching.
|
||||
(PARSE_AND_LIST_OPTIONS): Describe the above. Reformat.
|
||||
(PARSE_AND_LIST_ARGS_CASES): Handle it.
|
||||
|
||||
2000-09-21 Michael Sokolov <msokolov@ivan.Harhan.ORG>
|
||||
|
||||
* emultempl/m68kelf.em: Conditionalise the embedded relocs feature
|
||||
|
||||
@@ -44,6 +44,10 @@ static lang_input_statement_type *stub_file;
|
||||
stubs. */
|
||||
static int multi_subspace = 0;
|
||||
|
||||
/* Maximum size of a group of input sections that can be handled by
|
||||
one stub section. A value of +/-1 indicates the bfd back-end
|
||||
should use a suitable default size. */
|
||||
static bfd_signed_vma group_size = 1;
|
||||
|
||||
/* This is called before the input files are opened. We create a new
|
||||
fake input file to hold the stub sections. */
|
||||
@@ -292,6 +296,7 @@ hppaelf_finish ()
|
||||
stub_file->the_bfd,
|
||||
&link_info,
|
||||
multi_subspace,
|
||||
group_size,
|
||||
&hppaelf_add_stub_section,
|
||||
&hppaelf_layaout_sections_again))
|
||||
{
|
||||
@@ -349,16 +354,31 @@ EOF
|
||||
#
|
||||
PARSE_AND_LIST_PROLOGUE='
|
||||
#define OPTION_MULTI_SUBSPACE 301
|
||||
#define OPTION_STUBGROUP_SIZE (OPTION_MULTI_SUBSPACE + 1)
|
||||
'
|
||||
|
||||
# The options are repeated below so that no abbreviations are allowed.
|
||||
# Otherwise -s matches stub-group-size
|
||||
PARSE_AND_LIST_LONGOPTS='
|
||||
{ "multi-subspace", no_argument, NULL, OPTION_MULTI_SUBSPACE},
|
||||
{ "multi-subspace", no_argument, NULL, OPTION_MULTI_SUBSPACE },
|
||||
{ "multi-subspace", no_argument, NULL, OPTION_MULTI_SUBSPACE },
|
||||
{ "stub-group-size", required_argument, NULL, OPTION_STUBGROUP_SIZE },
|
||||
{ "stub-group-size", required_argument, NULL, OPTION_STUBGROUP_SIZE },
|
||||
'
|
||||
|
||||
PARSE_AND_LIST_OPTIONS='
|
||||
fprintf (file, _("\
|
||||
--multi-subspace Generate import and export stubs to support\n\
|
||||
multiple sub-space shared libraries\n"
|
||||
--multi-subspace Generate import and export stubs to support\n\
|
||||
multiple sub-space shared libraries\n"
|
||||
));
|
||||
fprintf (file, _("\
|
||||
--stub-group-size=N Maximum size of a group of input sections that can be\n\
|
||||
handled by one stub section. A negative value\n\
|
||||
locates all stubs before their branches (with a\n\
|
||||
group size of -N), while a positive value allows\n\
|
||||
two groups of input sections, one before, and one\n\
|
||||
after each stub section. Values of +/-1 indicate\n\
|
||||
the linker should choose suitable defaults."
|
||||
));
|
||||
'
|
||||
|
||||
@@ -366,6 +386,15 @@ PARSE_AND_LIST_ARGS_CASES='
|
||||
case OPTION_MULTI_SUBSPACE:
|
||||
multi_subspace = 1;
|
||||
break;
|
||||
|
||||
case OPTION_STUBGROUP_SIZE:
|
||||
{
|
||||
const char *end;
|
||||
group_size = bfd_scan_vma (optarg, &end, 0);
|
||||
if (*end)
|
||||
einfo (_("%P%F: invalid number `%s'\''\n"), optarg);
|
||||
}
|
||||
break;
|
||||
'
|
||||
|
||||
# Put these extra hppaelf routines in ld_${EMULATION_NAME}_emulation
|
||||
|
||||
@@ -3904,6 +3904,7 @@ functionality are not listed.
|
||||
* H8/300:: @code{ld} and the H8/300
|
||||
* i960:: @code{ld} and the Intel 960 family
|
||||
* ARM:: @code{ld} and the ARM family
|
||||
* HPPA ELF32:: @code{ld} and HPPA 32-bit ELF
|
||||
@ifset TICOFF
|
||||
* TI COFF:: @code{ld} and TI COFF
|
||||
@end ifset
|
||||
@@ -4047,6 +4048,38 @@ But it also sets the bottom bit of the address, so that it can be
|
||||
branched to using a BX instruction, and the program will start
|
||||
executing in Thumb mode straight away.
|
||||
|
||||
@node HPPA ELF32
|
||||
@section @code{ld} and HPPA 32-bit ELF support
|
||||
@cindex HPPA multiple sub-space stubs
|
||||
@kindex --multi-subspace
|
||||
When generating a shared library, @code{ld} will by default generate
|
||||
import stubs suitable for use with a single sub-space application.
|
||||
The @samp{--multi-subspace} switch causes @code{ld} to generate export
|
||||
stubs, and different (larger) import stubs suitable for use with
|
||||
multiple sub-spaces.
|
||||
|
||||
@cindex HPPA stub grouping
|
||||
@kindex --stub-group-size=@var{N}
|
||||
Long branch stubs and import/export stubs are placed by @code{ld} in
|
||||
stub sections located between groups of input sections.
|
||||
@samp{--stub-group-size} specifies the maximum size of a group of input
|
||||
sections handled by one stub section. Since branch offsets are signed,
|
||||
a stub section may serve two groups of input sections, one group before
|
||||
the stub section, and one group after it. However, when using
|
||||
conditional branches that require stubs, it may be better (for branch
|
||||
prediction) that stub sections only serve one group of input sections.
|
||||
A negative value for @samp{N} chooses this scheme, ensuring that
|
||||
branches to stubs always use a negative offset. Two special values of
|
||||
@samp{N} are recognized, @samp{1} and @samp{-1}. These both instruct
|
||||
@code{ld} to automatically size input section groups for the branch types
|
||||
detected, with the same behaviour regarding stub placement as other
|
||||
positive or negative values of @samp{N} respectively.
|
||||
|
||||
Note that @samp{--stub-group-size} does not split input sections. A
|
||||
single input section larger than the group size specified will of course
|
||||
create a larger group (of one section). If input sections are too
|
||||
large, it may not be possible for a branch to reach its stub.
|
||||
|
||||
@ifset TICOFF
|
||||
@node TI COFF
|
||||
@section @code{ld}'s support for various TI COFF versions
|
||||
|
||||
Reference in New Issue
Block a user