This is the mail archive of the glibc-bugs@sourceware.org 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]

[Bug libc/15407] Partial frame info in sysdeps/x86_64/start.S


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.


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