On Jun 26, 2013, at 23:05, Konstantin Belousov <kostik...@gmail.com> wrote:
> On Wed, Jun 26, 2013 at 10:59:24PM +0200, Dimitry Andric wrote:
>> On Jun 26, 2013, at 22:45, Konstantin Belousov <kostik...@gmail.com> wrote:
>>> On Wed, Jun 26, 2013 at 09:26:09PM +0200, Dimitry Andric wrote:
>>>> This revision is not in 9.1-RELEASE, but it is in 9-STABLE, so the
>>>> problem can also be reproduced there.
>>> ...
>>>> This is roughly gcc 4.3.0 and later.  For example, gcc 4.8 generates:
>>> I just tested the thing with gcc 4.8 on up to date stable/9 and HEAD.
>>> In both cases, major tom did not fail, at least not in the peculiar way.
>>> The gcc-generated code passed the PLT address of the corresponding
>>> destructor.
>> 
>> That is strange, did you compile the main program with -fPIC?  That is
>> the problem case.  If you don't compile the main program with -fPIC, the
>> problem will indeed not occur.
> 
> I just used the Makefile provided by the earlier message, and it contains
> the -fPIC flag (which is strange thing to do on its own, binaries should
> use -fPIE).
> 
> This is how the registration for the outer dtr looks for me, gcc 4.8.1/i386:
> 
>   0x08048763 <+42>:    call   0x8048520 <_ZN5OuterC1Ev@plt>
>   0x08048768 <+47>:    lea    0x28(%ebx),%eax
>   0x0804876e <+53>:    mov    %eax,0x8(%esp)
>   0x08048772 <+57>:    lea    0x34(%ebx),%eax
>   0x08048778 <+63>:    mov    %eax,0x4(%esp)
>   0x0804877c <+67>:    mov    -0x4(%ebx),%eax
>   0x08048782 <+73>:    mov    %eax,(%esp)
>   0x08048785 <+76>:    call   0x8048500 <__cxa_atexit@plt>
> 
> ebx was set up earlier as the GOT pointer.

Strange, you must have a different gcc 4.8 than me, in my case it always uses 
GOT:

        call    _ZN5OuterC1Ev@PLT
        leal    __dso_handle@GOTOFF(%ebx), %esi
        addl    $12, %esp
        pushl   %esi
        pushl   %edi
        pushl   _ZN5OuterD1Ev@GOT(%ebx)
        call    __cxa_atexit@PLT

This is the lang/gcc48 port, btw.

-Dimitry

_______________________________________________
freebsd-ports@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-ports
To unsubscribe, send any mail to "freebsd-ports-unsubscr...@freebsd.org"

Reply via email to