From 373368fd877c30bdcfe570459be49c4ef4028f2a Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 19 Mar 2001 19:07:32 +0100 Subject: [PATCH] crtstuff.c (init_dummy): Use CRT_END_INIT_DUMMY if defined. * 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. From-SVN: r40627 --- gcc/ChangeLog | 6 ++++++ gcc/config/i386/linux.h | 18 ++++++++++++++++++ gcc/crtstuff.c | 16 ++-------------- 3 files changed, 26 insertions(+), 14 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9f9f6288cac..b076480dc63 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2001-03-19 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. + Mon Mar 19 18:53:54 CET 2001 Jan Hubicka * i386.md (absdf2 expander): Fix 64bit case. diff --git a/gcc/config/i386/linux.h b/gcc/config/i386/linux.h index 34e416cc49b..a5c725a334a 100644 --- a/gcc/config/i386/linux.h +++ b/gcc/config/i386/linux.h @@ -170,3 +170,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 c349c716da0..fc747a90091 100644 --- a/gcc/crtstuff.c +++ b/gcc/crtstuff.c @@ -414,20 +414,8 @@ init_dummy (void) FORCE_INIT_SECTION_ALIGN; #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 (0); - } +#ifdef CRT_END_INIT_DUMMY + CRT_END_INIT_DUMMY; #endif } -- 2.30.2