This is the mail archive of the
glibc-bugs@sourceware.org
mailing list for the glibc project.
[Bug libc/15407] Partial frame info in sysdeps/x86_64/start.S
- From: "jan.kratochvil at redhat dot com" <sourceware-bugzilla at sourceware dot org>
- To: glibc-bugs at sourceware dot org
- Date: Fri, 10 May 2013 16:33:43 +0000
- Subject: [Bug libc/15407] Partial frame info in sysdeps/x86_64/start.S
- Auto-submitted: auto-generated
- References: <bug-15407-131 at http dot sourceware dot org/bugzilla/>
http://sourceware.org/bugzilla/show_bug.cgi?id=15407
--- Comment #18 from Jan Kratochvil <jan.kratochvil at redhat dot com> 2013-05-10 16:33:43 UTC ---
Because GDB handles i386 vs. x86_64 non-CFI frame pointer register differently.
Probably because historically i386 used -fno-omit-frame-pointer even for -O
code while x86_64 always used -fomit-frame-pointer for -O code.
i386_frame_cache_1:
get_frame_register (this_frame, I386_EBP_REGNUM, buf);
cache->base = extract_unsigned_integer (buf, 4, byte_order);
amd64_frame_cache_1:
if (cache->frameless_p)
get_frame_register (this_frame, AMD64_RSP_REGNUM, buf);
cache->base = extract_unsigned_integer (buf, 8, byte_order)
else
get_frame_register (this_frame, AMD64_RBP_REGNUM, buf);
cache->base = extract_unsigned_integer (buf, 8, byte_order);
And _start is FRAMELESS_P because one cannot find (for stripped binary) its
function boundaries.
Besides that every instruction should have CFI, otherwise it makes unwinders
more complicated and less reliable. i386 _start should also get CFI.
--
Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.