Agree, I've missed the usage of the function "__register_frame_info_bases" (frame_dummy assembly had only indirect call when I miss "-pie" in compilation). There is no reference on glibc that way. Sorry for the confusion. So that is potentially buggy right now.
On Mon, Jan 12, 2015 at 1:50 PM, Jakub Jelinek <ja...@redhat.com> wrote: > On Mon, Jan 12, 2015 at 01:36:05PM +0300, Evgeny Stupachenko wrote: >> "frame_dummy" does not use EBX in allocation now as there are enough >> other registers (that we don't need to save/restore). So if we do not >> modify "frame_dummy" EBX should stay unchanged. >> "frame_dummy" does not initialize EBX register at the beginning it >> expects that EBX is pic from glibc >> "frame_dummy" is called from glibc and while we have glibc compiled by >> 4.9 or older compiler EBX should come to "frame_dummy" as pic register > > I also don't understand how is this related to glibc in any way. > From my understanding, the macro relied on %ebx being set to > _GLOBAL_OFFSET_TABLE_ because the frame_dummy function does access > GOT, so before the i?86 PIC reg changes it was computing %ebx. > > Jakub