From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andreas Jaeger To: drepper@cygnus.com (Ulrich Drepper) Cc: GNU libc hacker Subject: Re: 2.1.2pre1 outlook Date: Wed, 14 Jul 1999 22:58:00 -0000 Message-id: References: X-SW-Source: 1999-07/msg00037.html >>>>> Ulrich Drepper writes: > Hi, > I will be in Montreal next week and would like to use this quiet phase > to have people test 2.1.2. I hope to make 2.1.2pre1 before or on > Sunday. > So, if you kow about any missing patches in the 2.1 branch or any bugs > which have to be fixed please let me know ASAP. Please add the following two patches. That should be all except perhaps some platform specific fixes. Andreas 1999-07-13 Jakub Jelinek * sysdeps/unix/sysv/linux/shmat.c (shmat): Avoid casting a pointer to int. 1999-07-13 Andreas Schwab * elf/dl-runtime.c (fixup, profile_fixup): Call alloca to prevent inlining. Fixes PR libc/1198. --- glibc-2-1-branch/elf/dl-runtime.c Sun Feb 21 07:13:50 1999 +++ libc/elf/dl-runtime.c Thu Jul 15 06:56:22 1999 @@ -57,6 +57,12 @@ void *const rel_addr = (void *)(l->l_addr + reloc->r_offset); ElfW(Addr) value; + /* The use of `alloca' here looks ridiculous but it helps. The goal is + to prevent the function from being inlined and thus optimized out. + There is no official way to do this so we use this trick. gcc never + inlines functions which use `alloca'. */ + alloca (sizeof (int)); + /* Sanity check that we're really looking at a PLT relocation. */ assert (ELFW(R_TYPE)(reloc->r_info) == ELF_MACHINE_JMP_SLOT); @@ -110,6 +116,12 @@ ElfW(Addr) *resultp; ElfW(Addr) value; + /* The use of `alloca' here looks ridiculous but it helps. The goal is + to prevent the function from being inlined, and thus optimized out. + There is no official way to do this so we use this trick. gcc never + inlines functions which use `alloca'. */ + alloca (sizeof (int)); + /* This is the address in the array where we store the result of previous relocations. */ resultp = &l->l_reloc_result[reloc_offset / sizeof (PLTREL)]; --- glibc-2-1-branch/sysdeps/unix/sysv/linux/shmat.c Wed Dec 16 06:57:28 1998 +++ libc/sysdeps/unix/sysv/linux/shmat.c Thu Jul 15 06:56:45 1999 @@ -1,4 +1,4 @@ -/* Copyright (C) 1995, 1997, 1998 Free Software Foundation, Inc. +/* Copyright (C) 1995, 1997, 1998, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , August 1995. @@ -33,11 +33,11 @@ const void *shmaddr; int shmflg; { - int retval; + long int retval; unsigned long raddr; - retval = INLINE_SYSCALL (ipc, 5, IPCOP_shmat, shmid, shmflg, (int) &raddr, - (void *) shmaddr); + retval = INLINE_SYSCALL (ipc, 5, IPCOP_shmat, shmid, shmflg, + (long int) &raddr, (void *) shmaddr); return ((unsigned long int) retval > -(unsigned long int) SHMLBA ? (void *) retval : (void *) raddr); } -- Andreas Jaeger aj@arthur.rhein-neckar.de jaeger@informatik.uni-kl.de for pgp-key finger ajaeger@aixd1.rhrk.uni-kl.de