https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65070

--- Comment #2 from Nadav Har'El <nyh at math dot technion.ac.il> ---
Hi,

What was the intention behind this "intentionally"? As I mentioned above, I
believe the tiny performance saving of not calling the syscall() function are
minimal, because if I understand correctly it's only called in rare cases when
there is contention, and when the context-switch overhead would be large
anyway. And even if it's not rare, isn't the syscall overhead significantly
larger than the syscall() function's additional overhead (copying a couple of
registers, etc.)? Just using <sys/syscall.h> and syscall() would have made all
this code simpler, and avoid repeating code already in glibc. Unless I'm
missing something important here...

Regarding OSv (see http://osv.io/), the idea there is that it is able to run
unmodified Linux dynamically-linked binaries. Our C library is different (not
glibc), but other libraries and executables which call libc functions can run
unmodified, and libgomp should not be an exception. The plan is to take an
unmodified libgomp.so from some Linux distribution and just run it, without
recompiling. It's not impossible for us also to support the "syscall"
instruction, but I was just wondering why we want to: libgomp is the first
library we've seen to call the syscall instruction directly instead of just
calling the syscall() libc function, and I was wondering if there is good
justification for that.

Reply via email to