This is the mail archive of the libc-hacker@sourceware.cygnus.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: 2.1.2pre1 outlook


>>>>> 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  <jj@ultra.linux.cz>

        * sysdeps/unix/sysv/linux/shmat.c (shmat): Avoid casting a pointer
        to int.

1999-07-13  Andreas Schwab  <schwab@suse.de>

        * 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 <drepper@gnu.ai.mit.edu>, 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

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]