From: Bernd Schmidt Date: Tue, 3 Apr 2001 10:34:33 +0000 (+0000) Subject: Avoid unnecessary atexit reference X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2d783a126fa6f3d14b6c7af8aef471ccefbdbba9;p=thirdparty%2Fgcc.git Avoid unnecessary atexit reference From-SVN: r41053 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 95d5f35fb5dd..78a2b8cb5f8c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2001-04-03 Bernd Schmidt + + 2001-03-16 Jakub Jelinek + * crtstuff.c (init_dummy): Use CRT_END_INIT_DUMMY if defined. + Remove ia32 linux PIC kludge and move it... + * config/i386/linux.h (CRT_END_INIT_DUMMY): ...here. + 2001-03-30 Bernd Schmidt * jump.c (delete_barrier_successors): Fix error in last change. diff --git a/gcc/config/i386/linux.h b/gcc/config/i386/linux.h index 7b368f8e5fb8..90b9aa26f0ee 100644 --- a/gcc/config/i386/linux.h +++ b/gcc/config/i386/linux.h @@ -234,3 +234,21 @@ Boston, MA 02111-1307, USA. */ } \ } while (0) #endif + +#if defined(__PIC__) && defined (USE_GNULIBC_1) +/* This is a kludge. The i386 GNU/Linux dynamic linker needs ___brk_addr, + __environ and atexit (). We have to make sure they are in the .dynsym + section. We accomplish it by making a dummy call here. This + code is never reached. */ + +#define CRT_END_INIT_DUMMY \ + do \ + { \ + extern void *___brk_addr; \ + extern char **__environ; \ + \ + ___brk_addr = __environ; \ + atexit (0); \ + } \ + while (0) +#endif diff --git a/gcc/crtstuff.c b/gcc/crtstuff.c index ccebde1d2c98..2d2f360bb756 100644 --- a/gcc/crtstuff.c +++ b/gcc/crtstuff.c @@ -380,19 +380,8 @@ init_dummy (void) #endif asm (TEXT_SECTION_ASM_OP); -/* This is a kludge. The i386 GNU/Linux dynamic linker needs ___brk_addr, - __environ and atexit (). We have to make sure they are in the .dynsym - section. We accomplish it by making a dummy call here. This - code is never reached. */ - -#if defined(__linux__) && defined(__PIC__) && defined(__i386__) - { - extern void *___brk_addr; - extern char **__environ; - - ___brk_addr = __environ; - atexit (); - } +#ifdef CRT_END_INIT_DUMMY + CRT_END_INIT_DUMMY; #endif }