From ea97f90c9a84ce5c8a7c60695f05adfd2b6bb295 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Tue, 20 Jun 2000 04:18:25 +0000 Subject: Update. 2000-06-19 Ulrich Drepper * elf/sprof.c (print_version): Update year. * elf/sprof.c (load_shobj): Don't always add load address to dynamic table entry values. Use D_PTR. * elf/dl-reloc.c (_dl_relocate_object): Don't start profiling weird binaries without PLT. Patches by James Mathiesen . --- elf/dl-reloc.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'elf/dl-reloc.c') diff --git a/elf/dl-reloc.c b/elf/dl-reloc.c index 280623153a..b389c42b1e 100644 --- a/elf/dl-reloc.c +++ b/elf/dl-reloc.c @@ -94,13 +94,21 @@ cannot make segment writable for relocation")); if (__builtin_expect (_dl_profile != NULL, 0)) { /* Allocate the array which will contain the already found - relocations. */ + relocations. If the shared object lacks a PLT (for example + if it inly contains lead function) the l_info[DT_PLTRELSZ] + will be NULL. */ + if (l->l_info[DT_PLTRELSZ] == NULL) + _dl_sysdep_fatal (_dl_argv[0] ?: "", + ": profiler found no PLTREL in object ", + l->l_name, "\n", NULL); + l->l_reloc_result = (ElfW(Addr) *) calloc (sizeof (ElfW(Addr)), l->l_info[DT_PLTRELSZ]->d_un.d_val); if (l->l_reloc_result == NULL) _dl_sysdep_fatal (_dl_argv[0] ?: "", - "cannot allocate memory for profiling", NULL); + ": profiler outof memory shadowing PLTREL of ", + l->l_name, "\n", NULL); } } -- cgit v1.2.3