Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/lib/csu/i386_elf



On May 17,  9:45am, thorpej%shagadelic.org@localhost (Jason Thorpe) wrote:
-- Subject: Re: CVS commit: src/lib/csu/i386_elf

| On May 17, 2006, at 9:39 AM, Christos Zoulas wrote:
| 
| >
| > Module Name:        src
| > Committed By:       christos
| > Date:               Wed May 17 16:39:25 UTC 2006
| >
| > Modified Files:
| >     src/lib/csu/i386_elf: crt0.c
| >
| > Log Message:
| > Avoid weak symbol related bug with _DYNAMIC not being referenced in  
| > the
| > code at all for gcc-4. Fixes statically linked binaries, but the  
| > fix is
| > bogus.
| 
| Is every platform going to have this problem?

I am looking into it. On i386 gcc-3 produced:


.L20:
        cmpl    $0, 28(%ebp)
        je      .L23
        movl    __ps_strings@GOT(%ebx), %edx
        movl    28(%ebp), %eax
        movl    %eax, (%edx)
.L23:
        movl    _DYNAMIC@GOT(%ebx), %eax
        testl   %eax, %eax
        je      .L24
        subl    $8, %esp
        pushl   24(%ebp)
        pushl   20(%ebp)
        call    _rtld_setup@PLT
        addl    $16, %esp

Gcc 4 produces:

.L2:
        cmpl    $0, 28(%ebp)
        je      .L6
        movl    __ps_strings@GOT(%ebx), %edx
        movl    28(%ebp), %eax
        movl    %eax, (%edx)
.L6:
        subl    $8, %esp
        pushl   24(%ebp)
        pushl   20(%ebp)
        call    _rtld_setup@PLT
        addl    $16, %esp

Matt says that it appears that gcc-4 does not believe that &var can be NULL...

christos



Home | Main Index | Thread Index | Old Index