diff options
author | Jakub Jelinek <jakub@redhat.com> | 2001-03-19 19:07:32 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2001-03-19 19:07:32 +0100 |
commit | 373368fd877c30bdcfe570459be49c4ef4028f2a (patch) | |
tree | d7688eb89b48d390b3fb7030092ec484c08dc441 | |
parent | 7343a5a99b4956acc964f7ef6a2a93d6a0a71dcd (diff) | |
download | gcc-373368fd877c30bdcfe570459be49c4ef4028f2a.zip gcc-373368fd877c30bdcfe570459be49c4ef4028f2a.tar.gz gcc-373368fd877c30bdcfe570459be49c4ef4028f2a.tar.bz2 |
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
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/i386/linux.h | 18 | ||||
-rw-r--r-- | gcc/crtstuff.c | 16 |
3 files changed, 26 insertions, 14 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 9f9f628..b076480 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2001-03-19 Jakub Jelinek <jakub@redhat.com> + + * 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 <jh@suse.cz> * i386.md (absdf2 expander): Fix 64bit case. diff --git a/gcc/config/i386/linux.h b/gcc/config/i386/linux.h index 34e416c..a5c725a 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 c349c71..fc747a9 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 } |