This is the mail archive of the libc-alpha@sources.redhat.com mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

NPTL + static + linux : incorrect __register_frame_info_bases codegeneration


After sucessfully compiling NPTL static posix threads on debian
<http://sources.redhat.com/bugzilla/show_bug.cgi?id=519>

I decided to run the Open Posix test suite. After fixing the
LDFLAGS, -Werror, I managed to compile and run most of them but
some do always do a sigsegv on startup.

I traced it to be __register_frame_info_bases inconditionnaly calling 0X0

Dump of assembler code for function __register_frame_info_bases:
0x0809bbb0 <__register_frame_info_bases+0>: push %ebp
0x0809bbb1 <__register_frame_info_bases+1>: mov %esp,%ebp
0x0809bbb3 <__register_frame_info_bases+3>: push %edi
0x0809bbb4 <__register_frame_info_bases+4>: push %esi
0x0809bbb5 <__register_frame_info_bases+5>: push %ebx
0x0809bbb6 <__register_frame_info_bases+6>: sub $0xc,%esp
0x0809bbb9 <__register_frame_info_bases+9>: mov 0x8(%ebp),%edx
0x0809bbbc <__register_frame_info_bases+12>: call 0x809bbc1 <__register_frame_info_bases+17>
0x0809bbc1 <__register_frame_info_bases+17>: pop %ebx
0x0809bbc2 <__register_frame_info_bases+18>: add $0x1d807,%ebx
0x0809bbc8 <__register_frame_info_bases+24>: test %edx,%edx
0x0809bbca <__register_frame_info_bases+26>: mov 0xc(%ebp),%esi
0x0809bbcd <__register_frame_info_bases+29>: je 0x809bc30 <__register_frame_info_bases+128>
0x0809bbcf <__register_frame_info_bases+31>: mov (%edx),%eax
0x0809bbd1 <__register_frame_info_bases+33>: test %eax,%eax
0x0809bbd3 <__register_frame_info_bases+35>: je 0x809bc30 <__register_frame_info_bases+128>
0x0809bbd5 <__register_frame_info_bases+37>: mov 0x10(%ebp),%eax
0x0809bbd8 <__register_frame_info_bases+40>: mov %eax,0x4(%esi)
0x0809bbdb <__register_frame_info_bases+43>: mov 0x14(%ebp),%eax
0x0809bbde <__register_frame_info_bases+46>: mov %eax,0x8(%esi)
0x0809bbe1 <__register_frame_info_bases+49>: movl $0x0,0x10(%esi)
0x0809bbe8 <__register_frame_info_bases+56>: lea 0x37bc(%ebx),%eax
0x0809bbee <__register_frame_info_bases+62>: orw $0x7f8,0x10(%esi)
0x0809bbf4 <__register_frame_info_bases+68>: mov %edx,0xc(%esi)
0x0809bbf7 <__register_frame_info_bases+71>: mov %eax,0xfffffff0(%ebp)
0x0809bbfa <__register_frame_info_bases+74>: mov 0xc(%ebx),%eax
0x0809bc00 <__register_frame_info_bases+80>: test %eax,%eax
0x0809bc02 <__register_frame_info_bases+82>: setne %al
0x0809bc05 <__register_frame_info_bases+85>: and $0xff,%eax
0x0809bc0a <__register_frame_info_bases+90>: test %eax,%eax
0x0809bc0c <__register_frame_info_bases+92>: movl $0xffffffff,(%esi)
0x0809bc12 <__register_frame_info_bases+98>: mov %eax,%edi
0x0809bc14 <__register_frame_info_bases+100>: jne 0x809bc60 <__register_frame_info_bases+176>
0x0809bc16 <__register_frame_info_bases+102>: mov 0x37d8(%ebx),%eax
0x0809bc1c <__register_frame_info_bases+108>: test %edi,%edi
0x0809bc1e <__register_frame_info_bases+110>: mov %eax,0x14(%esi)
0x0809bc21 <__register_frame_info_bases+113>: mov %esi,0x37d8(%ebx)
0x0809bc27 <__register_frame_info_bases+119>: jne 0x809bc40 <__register_frame_info_bases+144>
0x0809bc29 <__register_frame_info_bases+121>: lea 0x0(%esi),%esi
0x0809bc30 <__register_frame_info_bases+128>: lea 0xfffffff4(%ebp),%esp
0x0809bc33 <__register_frame_info_bases+131>: pop %ebx
0x0809bc34 <__register_frame_info_bases+132>: pop %esi
0x0809bc35 <__register_frame_info_bases+133>: pop %edi
0x0809bc36 <__register_frame_info_bases+134>: pop %ebp
0x0809bc37 <__register_frame_info_bases+135>: ret
0x0809bc38 <__register_frame_info_bases+136>: nop
0x0809bc39 <__register_frame_info_bases+137>: lea 0x0(%esi),%esi
0x0809bc40 <__register_frame_info_bases+144>: mov 0xfffffff0(%ebp),%esi
---Type <return> to continue, or q <return> to quit---
0x0809bc43 <__register_frame_info_bases+147>: sub $0xc,%esp
0x0809bc46 <__register_frame_info_bases+150>: push %esi
0x0809bc47 <__register_frame_info_bases+151>: call 0x0 <===========
0x0809bc4c <__register_frame_info_bases+156>: add $0x10,%esp
0x0809bc4f <__register_frame_info_bases+159>: lea 0xfffffff4(%ebp),%esp
0x0809bc52 <__register_frame_info_bases+162>: pop %ebx
0x0809bc53 <__register_frame_info_bases+163>: pop %esi
0x0809bc54 <__register_frame_info_bases+164>: pop %edi
0x0809bc55 <__register_frame_info_bases+165>: pop %ebp
0x0809bc56 <__register_frame_info_bases+166>: ret
0x0809bc57 <__register_frame_info_bases+167>: mov %esi,%esi
0x0809bc59 <__register_frame_info_bases+169>: lea 0x0(%edi),%edi
0x0809bc60 <__register_frame_info_bases+176>: sub $0xc,%esp
0x0809bc63 <__register_frame_info_bases+179>: mov 0xfffffff0(%ebp),%eax
0x0809bc66 <__register_frame_info_bases+182>: push %eax
0x0809bc67 <__register_frame_info_bases+183>: call 0x0 <===========
0x0809bc6c <__register_frame_info_bases+188>: add $0x10,%esp
0x0809bc6f <__register_frame_info_bases+191>: jmp 0x809bc16 <__register_frame_info_bases+102>
0x0809bc71 <__register_frame_info_bases+193>: jmp 0x809bc80 <__register_frame_info>


--
   __
  /  `                   	Eric Valette
 /--   __  o _.          	6 rue Paul Le Flem
(___, / (_(_(__         	35740 Pace

Tel: +33 (0)2 99 85 26 76	Fax: +33 (0)2 99 85 26 76
E-mail: eric.valette@free.fr




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]