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"