* po/el.po: New file.

1999-02-07  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* elf/dl-load.c (_dl_map_object_from_fd): Replace magic constant
	when processing DT_SYMBOLIC objects.

1999-02-07  Andreas Schwab  <schwab@issan.cs.uni-dortmund.de>

	* elf/dl-load.c (_dl_map_object_from_fd): When looking for the
	program headers without PT_PHDR only require that they are
	contained within one of the loaded segments.  Don't use assert,
	since that would be a bug in the object, not the dynamic linker.

1999-02-08  Richard Henderson  <rth@cygnus.com>

	* sysdeps/alpha/dl-machine.h (TRAMPOLINE_TEMPLATE): Save and
	restore all call-clobbered fp regs.

1999-02-08  Ulrich Drepper  <drepper@cygnus.com>
This commit is contained in:
Ulrich Drepper 1999-02-08 10:08:45 +00:00
parent c18cec57b9
commit 82d0c09944
4 changed files with 3051 additions and 52 deletions

View File

@ -1,3 +1,24 @@
1999-02-08 Ulrich Drepper <drepper@cygnus.com>
* po/el.po: New file.
1999-02-07 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
* elf/dl-load.c (_dl_map_object_from_fd): Replace magic constant
when processing DT_SYMBOLIC objects.
1999-02-07 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
* elf/dl-load.c (_dl_map_object_from_fd): When looking for the
program headers without PT_PHDR only require that they are
contained within one of the loaded segments. Don't use assert,
since that would be a bug in the object, not the dynamic linker.
1999-02-08 Richard Henderson <rth@cygnus.com>
* sysdeps/alpha/dl-machine.h (TRAMPOLINE_TEMPLATE): Save and
restore all call-clobbered fp regs.
1999-02-08 Ulrich Drepper <drepper@cygnus.com>
* po/cs.po: New file.

View File

@ -864,11 +864,18 @@ _dl_map_object_from_fd (const char *name, int fd, char *realname,
{
/* There was no PT_PHDR specified. We need to find the phdr in the
load image ourselves. We assume it is in fact in the load image
somewhere, and that the first load command starts at the
beginning of the file and thus contains the ELF file header. */
ElfW(Addr) bof = l->l_addr + loadcmds[0].mapstart;
assert (loadcmds[0].mapoff == 0);
l->l_phdr = (void *) (bof + ((const ElfW(Ehdr) *) bof)->e_phoff);
somewhere. */
for (c = loadcmds; c < &loadcmds[nloadcmds]; c++)
if (c->mapoff <= header->e_phoff
&& (c->mapend - c->mapstart + c->mapoff
>= header->e_phoff + header->e_phnum * sizeof (ElfW(Phdr))))
{
ElfW(Addr) bof = l->l_addr + c->mapstart;
l->l_phdr = (void *) (bof + header->e_phoff - c->mapoff);
break;
}
if (l->l_phdr == 0)
LOSE ("program headers not contained in any loaded segment");
}
else
/* Adjust the PT_PHDR value by the runtime load address. */
@ -948,7 +955,7 @@ _dl_map_object_from_fd (const char *name, int fd, char *realname,
/* Now move the existing entries one back. */
memmove (&l->l_scope[1], &l->l_scope[0],
3 * sizeof (struct r_scope_elem *));
sizeof (l->l_scope) - sizeof (l->l_scope[0]));
/* Now add the new entry. */
l->l_scope[0] = &l->l_symbolic_searchlist;

2924
po/el.po Normal file

File diff suppressed because it is too large Load Diff

View File

@ -134,31 +134,55 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
.globl " #tramp_name "
.ent " #tramp_name "
" #tramp_name ":
lda $sp, -168($sp)
.frame $sp, 168, $26
lda $sp, -44*8($sp)
.frame $sp, 44*8, $26
/* Preserve all integer registers that C normally doesn't. */
stq $26, 0($sp)
stq $0, 8($sp)
stq $1, 16($sp)
stq $2, 24($sp)
stq $3, 32($sp)
stq $4, 40($sp)
stq $5, 48($sp)
stq $6, 56($sp)
stq $7, 64($sp)
stq $8, 72($sp)
stq $16, 80($sp)
stq $17, 88($sp)
stq $18, 96($sp)
stq $19, 104($sp)
stq $20, 112($sp)
stq $21, 120($sp)
stq $22, 128($sp)
stq $23, 136($sp)
stq $24, 144($sp)
stq $25, 152($sp)
stq $29, 160($sp)
.mask 0x27ff01ff, -168
stq $26, 0*8($sp)
stq $0, 1*8($sp)
stq $1, 2*8($sp)
stq $2, 3*8($sp)
stq $3, 4*8($sp)
stq $4, 5*8($sp)
stq $5, 6*8($sp)
stq $6, 7*8($sp)
stq $7, 8*8($sp)
stq $8, 9*8($sp)
stq $16, 10*8($sp)
stq $17, 11*8($sp)
stq $18, 12*8($sp)
stq $19, 13*8($sp)
stq $20, 14*8($sp)
stq $21, 15*8($sp)
stq $22, 16*8($sp)
stq $23, 17*8($sp)
stq $24, 18*8($sp)
stq $25, 19*8($sp)
stq $29, 20*8($sp)
stt $f0, 21*8($sp)
stt $f1, 22*8($sp)
stt $f10, 23*8($sp)
stt $f11, 24*8($sp)
stt $f12, 25*8($sp)
stt $f13, 26*8($sp)
stt $f14, 27*8($sp)
stt $f15, 28*8($sp)
stt $f16, 29*8($sp)
stt $f17, 30*8($sp)
stt $f18, 31*8($sp)
stt $f19, 32*8($sp)
stt $f20, 33*8($sp)
stt $f21, 34*8($sp)
stt $f22, 35*8($sp)
stt $f23, 36*8($sp)
stt $f24, 37*8($sp)
stt $f25, 38*8($sp)
stt $f26, 39*8($sp)
stt $f27, 40*8($sp)
stt $f28, 41*8($sp)
stt $f29, 42*8($sp)
stt $f30, 43*8($sp)
.mask 0x27ff01ff, -44*8
.fmask 0xfffffc03, -(44-21)*8
/* Set up our $gp */
br $gp, .+4
ldgp $gp, 0($gp)
@ -177,31 +201,54 @@ elf_machine_runtime_setup (struct link_map *l, int lazy, int profile)
/* Move the destination address into position. */
mov $0, $27
/* Restore program registers. */
ldq $26, 0($sp)
ldq $0, 8($sp)
ldq $1, 16($sp)
ldq $2, 24($sp)
ldq $3, 32($sp)
ldq $4, 40($sp)
ldq $5, 48($sp)
ldq $6, 56($sp)
ldq $7, 64($sp)
ldq $8, 72($sp)
ldq $16, 80($sp)
ldq $17, 88($sp)
ldq $18, 96($sp)
ldq $19, 104($sp)
ldq $20, 112($sp)
ldq $21, 120($sp)
ldq $22, 128($sp)
ldq $23, 136($sp)
ldq $24, 144($sp)
ldq $25, 152($sp)
ldq $29, 160($sp)
ldq $26, 0*8($sp)
ldq $0, 1*8($sp)
ldq $1, 2*8($sp)
ldq $2, 3*8($sp)
ldq $3, 4*8($sp)
ldq $4, 5*8($sp)
ldq $5, 6*8($sp)
ldq $6, 7*8($sp)
ldq $7, 8*8($sp)
ldq $8, 9*8($sp)
ldq $16, 10*8($sp)
ldq $17, 11*8($sp)
ldq $18, 12*8($sp)
ldq $19, 13*8($sp)
ldq $20, 14*8($sp)
ldq $21, 15*8($sp)
ldq $22, 16*8($sp)
ldq $23, 17*8($sp)
ldq $24, 18*8($sp)
ldq $25, 19*8($sp)
ldq $29, 20*8($sp)
ldt $f0, 21*8($sp)
ldt $f1, 22*8($sp)
ldt $f10, 23*8($sp)
ldt $f11, 24*8($sp)
ldt $f12, 25*8($sp)
ldt $f13, 26*8($sp)
ldt $f14, 27*8($sp)
ldt $f15, 28*8($sp)
ldt $f16, 29*8($sp)
ldt $f17, 30*8($sp)
ldt $f18, 31*8($sp)
ldt $f19, 32*8($sp)
ldt $f20, 33*8($sp)
ldt $f21, 34*8($sp)
ldt $f22, 35*8($sp)
ldt $f23, 36*8($sp)
ldt $f24, 37*8($sp)
ldt $f25, 38*8($sp)
ldt $f26, 39*8($sp)
ldt $f27, 40*8($sp)
ldt $f28, 41*8($sp)
ldt $f29, 42*8($sp)
ldt $f30, 43*8($sp)
/* Flush the Icache after having modified the .plt code. */
" #IMB "
/* Clean up and turn control to the destination */
lda $sp, 168($sp)
lda $sp, 44*8($sp)
jmp $31, ($27)
.end " #tramp_name)