diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-03-19 18:07:32 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-03-19 18:07:32 +0000 |
commit | e9bc07ed0fef5704c27301f0d4eac5014e270525 (patch) | |
tree | d7688eb89b48d390b3fb7030092ec484c08dc441 | |
parent | 11230a2efa16922e7dd1f1832119802c245ff4e6 (diff) | |
download | gcc-e9bc07ed0fef5704c27301f0d4eac5014e270525.tar.gz |
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@40627 138bc75d-0d04-0410-961f-82ee72b054a4
-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 9f9f6288cac..b076480dc63 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 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 } |