This is the mail archive of the libc-hacker@sources.redhat.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] |
Other format: | [Raw text] |
>>>>> On Wed, 10 Dec 2003 15:05:03 -0800, Ulrich Drepper <drepper@redhat.com> said: Ulrich> I've applied this patch now. Yippee! Ulrich> I made some changes, though. Obviously the initfini code. Ulrich> Please look through all three files and send a patch with Ulrich> the remaining changes. Attached is a patch for the (slightly updated) left-overs. Thanks, --david nptl/ChangeLog 2003-12-10 David Mosberger <davidm@hpl.hp.com> * sysdeps/unix/sysv/linux/ia64/pt-initfini.c (_init_EPILOG_BEGINS): Add unwind directives. Drop unused .regstk directive. (_fini_EPILOG_BEGINS): Add unwind directives. linuxthreads/ChangeLog 2003-12-10 David Mosberger <davidm@hpl.hp.com> * sysdeps/unix/sysv/linux/ia64/pt-initfini.c: Update copyright message. Add include of <stddef.h>. (INIT_NEW_WAY): New macro. (INIT_OLD_WAY): Likewise. (_init): Add unwind directives. Invoke __pthread_initialize_minimal() via INIT_NEW_WAY or INIT_OLD_WAY, respectively. (_init_EPILOG_BEGINS): Add unwind-directives. Drop unused .regstk directive. (_fini): Add unwind directives. Drop unnecessary .align 16 directive (bundles are always 16-byte aligned). (_fini_EPILOG_BEGINS): Add unwind-directives. Index: linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-initfini.c --- linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-initfini.c +++ linuxthreads/sysdeps/unix/sysv/linux/ia64/pt-initfini.c @@ -1,5 +1,5 @@ /* Special .init and .fini section support for ia64. LinuxThreads version. - Copyright (C) 2000, 2001, 2002 Free Software Foundation, Inc. + Copyright (C) 2000, 2001, 2002, 2003 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it @@ -36,40 +36,62 @@ * crtn.s puts the corresponding function epilogues in the .init and .fini sections. */ +#include <stddef.h> + +#ifdef HAVE_INITFINI_ARRAY + +# define INIT_NEW_WAY \ + ".xdata8 \".init_array\", @fptr(__pthread_initialize_minimal)\n" +# define INIT_OLD_WAY "" +#else +# define INIT_NEW_WAY "" +# define INIT_OLD_WAY \ + "\n\ + st8 [r12] = gp, -16\n\ + br.call.sptk.many b0 = __pthread_initialize_minimal# ;;\n\ + ;;\n\ + adds r12 = 16, r12\n\ + ;;\n\ + ld8 gp = [r12]\n\ + ;;\n" +#endif + __asm__ ("\n\ \n\ #include \"defs.h\"\n\ \n\ /*@HEADER_ENDS*/\n\ \n\ -/*@_init_PROLOG_BEGINS*/\n\ - .section .init\n\ +/*@_init_PROLOG_BEGINS*/\n" + INIT_NEW_WAY + ".section .init\n\ .align 16\n\ .global _init#\n\ .proc _init#\n\ _init:\n\ + .prologue\n\ + .save ar.pfs, r34\n\ alloc r34 = ar.pfs, 0, 3, 0, 0\n\ + .vframe r32\n\ mov r32 = r12\n\ + .save rp, r33\n\ mov r33 = b0\n\ + .body\n\ adds r12 = -16, r12\n\ - ;;\n\ -/* we could use r35 to save gp, but we use the stack since that's what\n\ - * all the other init routines will do --davidm 00/04/05 */\n\ - st8 [r12] = gp, -16\n\ - br.call.sptk.many b0 = __pthread_initialize_minimal# ;;\n\ - ;;\n\ - adds r12 = 16, r12\n\ - ;;\n\ - ld8 gp = [r12]\n\ - ;;\n\ - .align 16\n\ - .endp _init#\n\ + ;;\n" + INIT_OLD_WAY + ".endp _init#\n\ \n\ /*@_init_PROLOG_ENDS*/\n\ \n\ /*@_init_EPILOG_BEGINS*/\n\ .section .init\n\ - .regstk 0,2,0,0\n\ + .proc _init#\n\ + .prologue\n\ + .save ar.pfs, r34\n\ + .vframe r32\n\ + .save rp, r33\n\ + .body\n\ mov r12 = r32\n\ mov ar.pfs = r34\n\ mov b0 = r33\n\ @@ -83,18 +105,28 @@ .global _fini#\n\ .proc _fini#\n\ _fini:\n\ + .prologue\n\ + .save ar.pfs, r34\n\ alloc r34 = ar.pfs, 0, 3, 0, 0\n\ + .vframe r32\n\ mov r32 = r12\n\ + .save rp, r33\n\ mov r33 = b0\n\ + .body\n\ adds r12 = -16, r12\n\ ;;\n\ - .align 16\n\ .endp _fini#\n\ \n\ /*@_fini_PROLOG_ENDS*/\n\ \n\ /*@_fini_EPILOG_BEGINS*/\n\ .section .fini\n\ + .proc _fini#\n\ + .prologue\n\ + .save ar.pfs, r34\n\ + .vframe r32\n\ + .save rp, r33\n\ + .body\n\ mov r12 = r32\n\ mov ar.pfs = r34\n\ mov b0 = r33\n\ Index: nptl/sysdeps/unix/sysv/linux/ia64/pt-initfini.c --- nptl/sysdeps/unix/sysv/linux/ia64/pt-initfini.c +++ nptl/sysdeps/unix/sysv/linux/ia64/pt-initfini.c @@ -87,7 +87,12 @@ \n\ /*@_init_EPILOG_BEGINS*/\n\ .section .init\n\ - .regstk 0,2,0,0\n\ + .proc _init#\n\ + .prologue\n\ + .save ar.pfs, r34\n\ + .vframe r32\n\ + .save rp, r33\n\ + .body\n\ mov r12 = r32\n\ mov ar.pfs = r34\n\ mov b0 = r33\n\ @@ -117,6 +122,12 @@ \n\ /*@_fini_EPILOG_BEGINS*/\n\ .section .fini\n\ + .proc _fini#\n\ + .prologue\n\ + .save ar.pfs, r34\n\ + .vframe r32\n\ + .save rp, r33\n\ + .body\n\ mov r12 = r32\n\ mov ar.pfs = r34\n\ mov b0 = r33\n\
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |