This is the mail archive of the libc-alpha@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]

[RFC] Prevent tailcall optimizations of libdl functions


Hi all,

This is a ping on https://sourceware.org/bugzilla/show_bug.cgi?id=21050

Some libdl functions rely on return address to figure out the calling
DSO and then use this information in computation (e.g. output of dlsym
depends on which library called it).

As reported in https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66826 this
may break under tailcall optimization i.e. in cases like

  return dlsym(...);

Rich Felker suggested that adding new GCC attribute is a possible
solution. Another option would be to hack around dlsym to prevent
tailcall from happening e.g.
  #define dlsym(h, name) { volatile void *sym = dlsym(h, name); return
(void *)sym; }

Which solution is more appropriate for Glibc?

-Yury


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