aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog96
-rwxr-xr-xconfigure6
-rw-r--r--elf/dl-open.c3
-rw-r--r--elf/dl-profile.c6
-rw-r--r--elf/dl-reloc.c7
-rw-r--r--elf/dl-support.c3
-rw-r--r--elf/dynamic-link.h8
-rw-r--r--elf/elf.h6
-rw-r--r--elf/ldsodefs.h6
-rw-r--r--elf/rtld.c15
-rw-r--r--elf/sprof.c220
-rw-r--r--libc.map5
-rw-r--r--libio/fgetc.c5
-rw-r--r--libio/fileops.c3
-rw-r--r--libio/fputc.c5
-rw-r--r--libio/freopen.c3
-rw-r--r--libio/freopen64.c5
-rw-r--r--libio/fseek.c5
-rw-r--r--libio/fseeko.c5
-rw-r--r--libio/fseeko64.c5
-rw-r--r--libio/ftello.c5
-rw-r--r--libio/ftello64.c5
-rw-r--r--libio/getc.c5
-rw-r--r--libio/getchar.c7
-rw-r--r--libio/iofclose.c3
-rw-r--r--libio/iofflush.c5
-rw-r--r--libio/iofgetpos.c5
-rw-r--r--libio/iofgetpos64.c5
-rw-r--r--libio/iofgets.c5
-rw-r--r--libio/iofputs.c5
-rw-r--r--libio/iofread.c5
-rw-r--r--libio/iofsetpos.c5
-rw-r--r--libio/iofsetpos64.c5
-rw-r--r--libio/ioftell.c5
-rw-r--r--libio/iofwrite.c5
-rw-r--r--libio/iogetdelim.c5
-rw-r--r--libio/iogets.c5
-rw-r--r--libio/ioputs.c5
-rw-r--r--libio/ioseekoff.c5
-rw-r--r--libio/ioseekpos.c5
-rw-r--r--libio/iosetbuffer.c5
-rw-r--r--libio/iosetvbuf.c5
-rw-r--r--libio/ioungetc.c5
-rw-r--r--libio/iovsprintf.c5
-rw-r--r--libio/iovsscanf.c3
-rw-r--r--libio/oldfileops.c3
-rw-r--r--libio/oldiofclose.c5
-rw-r--r--libio/peekc.c5
-rw-r--r--libio/putc.c5
-rw-r--r--libio/putchar.c5
-rw-r--r--libio/rewind.c5
-rw-r--r--linuxthreads/ChangeLog4
-rw-r--r--linuxthreads/sysdeps/pthread/bits/libc-lock.h7
-rw-r--r--malloc/mtrace.c9
-rw-r--r--misc/mntent.h10
-rw-r--r--nis/nis_print.c19
-rw-r--r--signal/Makefile2
-rw-r--r--stdio-common/vfprintf.c7
-rw-r--r--stdio-common/vfscanf.c12
-rw-r--r--sysdeps/generic/libc-start.c6
-rw-r--r--sysdeps/generic/sigset-cvt-mask.h24
-rw-r--r--sysdeps/i386/dl-machine.h9
-rw-r--r--sysdeps/i386/elf/start.S5
-rw-r--r--sysdeps/posix/mkstemp.c2
-rw-r--r--sysdeps/posix/sigvec.c164
-rw-r--r--sysdeps/unix/sysv/linux/i386/clone.S6
-rw-r--r--sysdeps/unix/sysv/linux/i386/i686/sysdep.h19
-rw-r--r--sysdeps/unix/sysv/linux/i386/mmap.S2
-rw-r--r--sysdeps/unix/sysv/linux/i386/s_pread64.S8
-rw-r--r--sysdeps/unix/sysv/linux/i386/s_pwrite64.S8
-rw-r--r--sysdeps/unix/sysv/linux/i386/socket.S2
-rw-r--r--sysdeps/unix/sysv/linux/i386/syscall.S2
-rw-r--r--sysdeps/unix/sysv/linux/i386/sysdep.h35
-rw-r--r--sysdeps/unix/sysv/linux/sigset-cvt-mask.h35
-rw-r--r--sysdeps/unix/sysv/sysv4/sigset-cvt-mask.h33
75 files changed, 703 insertions, 295 deletions
diff --git a/ChangeLog b/ChangeLog
index de5eec17d0..cc8ba2f5f8 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,99 @@
+1998-06-07 13:32 Ulrich Drepper <drepper@cygnus.com>
+
+ * libc.map: Add _dl_profile.
+ * elf/dl-reloc.c (_dl_relocate_object): Take extra argument, pass
+ this to ELF_DYNAMIC_RELOCATE.
+ Always allocate array for relocation result if LD_PROFILE is defined.
+ * elf/ldsodefs.h: Adjust prototypes.
+ * elf/dl-open.c (_dl_open): Call relocation function with extra
+ argument.
+ * elf/rtld.c: Likewise.
+ * elf/dl-profile.c (_dl_mcount): Don't mark as internal function.
+ Correct loop condition.
+ * elf/dynamic-link.h: Don't examine _dl_profile variable, pass
+ consider_profile to runtime setup function.
+ * sysdeps/i386/dl-machine.h (elf_machine_runtime_setup): Use
+ _dl_runtime_profile for all shared objects if LD_PROFILE is defined.
+
+ * elf/dl-support.c: Define __libc_stack_end.
+ * elf/rtld.c: Likewise.
+ * sysdeps/generic/libc-start.c: Store last stack address in
+ __libc_stack_end.
+ * sysdeps/i386/dl-machine.h (_dl_start_user): Store stack address.
+ * sysdeps/i386/elf/start.s: Call __libc_start_main with extra argument.
+
+ * elf/elf.h: Include <features.h>, not <sys/cdefs.h>.
+ Include <stdint.h>, not <inttypes.h>.
+
+ * elf/sprof.c: Implement flat profiling.
+
+ * libio/fgetc.c: Call _IO_cleanup_region_end with 0 and call
+ _IO_funlockfile explicitly.
+ * libio/fileops.c: Likewise.
+ * libio/fputc.c: Likewise.
+ * libio/freopen.c: Likewise.
+ * libio/freopen64.c: Likewise.
+ * libio/fseek.c: Likewise.
+ * libio/fseeko.c: Likewise.
+ * libio/fseeko64.c: Likewise.
+ * libio/ftello.c: Likewise.
+ * libio/ftello64.c: Likewise.
+ * libio/getc.c: Likewise.
+ * libio/getchar.c: Likewise.
+ * libio/iofclose.c: Likewise.
+ * libio/iofflush.c: Likewise.
+ * libio/iofgetpos.c: Likewise.
+ * libio/iofgetpos64.c: Likewise.
+ * libio/iofgets.c: Likewise.
+ * libio/iofputs.c: Likewise.
+ * libio/iofread.c: Likewise.
+ * libio/iofsetpos.c: Likewise.
+ * libio/iofsetpos64.c: Likewise.
+ * libio/ioftell.c: Likewise.
+ * libio/iofwrite.c: Likewise.
+ * libio/iogetdelim.c: Likewise.
+ * libio/iogets.c: Likewise.
+ * libio/ioputs.c: Likewise.
+ * libio/ioseekoff.c: Likewise.
+ * libio/ioseekpos.c: Likewise.
+ * libio/iosetbuffer.c: Likewise.
+ * libio/iosetvbuf.c: Likewise.
+ * libio/ioungetc.c: Likewise.
+ * libio/iovsprintf.c: Likewise.
+ * libio/iovsscanf.c: Likewise.
+ * libio/oldfileops.c: Likewise.
+ * libio/oldiofclose.c: Likewise.
+ * libio/peekc.c: Likewise.
+ * libio/putc.c: Likewise.
+ * libio/putchar.c: Likewise.
+ * libio/rewind.c: Likewise.
+
+ * malloc/mtrace.c: Pretty print.
+
+ * misc/mntent.h (struct mentent): Make string elements const char *.
+
+ * nis/nis_printf.c: Optimize I/O a little bit.
+
+ * signal/Makefile (distribute): Add sigset-cvt-mask.h.
+ * sysdeps/generic/sigset-cvt-mask.h: New file.
+ * sysdeps/unix/sysv/linux/sigset-cvt-mask.h: New file.
+ * sysdeps/unix/sysv/sysv4/sigset-cvt-mask.h: New file.
+ * sysdeps/posix/sigvec.c: Rewrite the use definitions from
+ sigset-cvt-mask.h to do the dirty work.
+ Patches by Joe Keane.
+
+ * sysdeps/posix/mkstemp.c: Save one precious byte of rodata.
+
+ * sysdeps/unix/sysv/linux/i386/sysdep.h: Rewrite PSEUDO etc to make
+ syscall_error label in case of PIC anonymous.
+ * sysdeps/unix/sysv/linux/i386/i686/sysdep.h: Likewise.
+ * sysdeps/unix/sysv/linux/i386/clone.S: Adapt for this change.
+ * sysdeps/unix/sysv/linux/i386/mmap.S: Adapt for this change.
+ * sysdeps/unix/sysv/linux/i386/s_pread64.S: Adapt for this change.
+ * sysdeps/unix/sysv/linux/i386/s_pwrite64.S: Adapt for this change.
+ * sysdeps/unix/sysv/linux/i386/socket.S: Adapt for this change.
+ * sysdeps/unix/sysv/linux/i386/syscall.S: Adapt for this change.
+
1998-06-05 Ulrich Drepper <drepper@cygnus.com>
* sunrpc/xdr_rec.c (xdrrec_create): Add cast for *_ops array since
diff --git a/configure b/configure
index cdc0c9d9d3..56540890ee 100755
--- a/configure
+++ b/configure
@@ -3330,10 +3330,14 @@ while test -n "$ac_sources"; do
done
EOF
cat >> $CONFIG_STATUS <<EOF
-echo '$config_vars' >> config.make; test -d bits || mkdir bits
+config_vars='$config_vars'
EOF
cat >> $CONFIG_STATUS <<\EOF
+case $CONFIG_FILES in *config.make*)
+echo "$config_vars" >> config.make;;
+esac
+test -d bits || mkdir bits
exit 0
EOF
chmod +x $CONFIG_STATUS
diff --git a/elf/dl-open.c b/elf/dl-open.c
index 308175a8ae..4c4c8abdc5 100644
--- a/elf/dl-open.c
+++ b/elf/dl-open.c
@@ -102,7 +102,8 @@ _dl_open (const char *file, int mode)
asm ("" : "=r" (reloc) : "0" (reloc));
(*reloc) (l, _dl_object_relocation_scope (l),
- (mode & RTLD_BINDING_MASK) == RTLD_LAZY);
+ ((mode & RTLD_BINDING_MASK) == RTLD_LAZY
+ || _dl_profile != NULL), _dl_profile != NULL);
*_dl_global_scope_end = NULL;
}
diff --git a/elf/dl-profile.c b/elf/dl-profile.c
index c7ac360811..a9f8dd6226 100644
--- a/elf/dl-profile.c
+++ b/elf/dl-profile.c
@@ -436,7 +436,6 @@ _dl_start_profile (struct link_map *map, const char *output_dir)
void
-internal_function
_dl_mcount (ElfW(Addr) frompc, ElfW(Addr) selfpc)
{
uint16_t *topcindex;
@@ -479,7 +478,7 @@ _dl_mcount (ElfW(Addr) frompc, ElfW(Addr) selfpc)
/* We have to look through the chain of arcs whether there is already
an entry for our arc. */
- while (fromp->here->from_pc == frompc)
+ while (fromp->here->from_pc != frompc)
{
if (fromp->link != 0)
do
@@ -523,8 +522,7 @@ _dl_mcount (ElfW(Addr) frompc, ElfW(Addr) selfpc)
data[newarc].self_pc = selfpc;
data[newarc].count = 0;
fromp->link = 0;
-
- narcs++;
+ ++narcs;
break;
}
diff --git a/elf/dl-reloc.c b/elf/dl-reloc.c
index 898fb48e42..e0eae3c2ae 100644
--- a/elf/dl-reloc.c
+++ b/elf/dl-reloc.c
@@ -28,7 +28,8 @@
void
internal_function
-_dl_relocate_object (struct link_map *l, struct link_map *scope[], int lazy)
+_dl_relocate_object (struct link_map *l, struct link_map *scope[], int lazy,
+ int consider_profiling)
{
if (l->l_relocated)
return;
@@ -72,9 +73,9 @@ _dl_relocate_object (struct link_map *l, struct link_map *scope[], int lazy)
l->l_name, (flags)))
#include "dynamic-link.h"
- ELF_DYNAMIC_RELOCATE (l, lazy, 1);
+ ELF_DYNAMIC_RELOCATE (l, lazy, consider_profiling);
- if (_dl_profile_map == l)
+ if (_dl_profile != NULL)
{
/* Allocate th