If it ever breaks, it's a bug in the Linux kernel.
> It will also break when a user uses the OS configuration to change the behaviour of some OS functionality
Can you give concrete examples of this?
> There is syscall(2) in the libc, if you want to do this.
I know. I've written my own syscall(), as well. The idea is to put it in the compiler as a builtin so there's no need to even write it.
No, your program will still instruct the kernel to do the same. It will just cause conflicts with the other OS internals.
> Can you give concrete examples of this?
Adding another encoding as a gconv module. The DNS issues everyone is talking about.
I don't know what that gets you compared to using syscall(2) and -static. When you want your program to depend on the kernel API instead of the OS API, then you should really link libc statically.
But not with the kernel.
"Other OS internals" are just replaceable components. The idea is to depend on Linux only, not on Linux+glibc.
> Adding another encoding as a gconv module. The DNS issues everyone is talking about.
Those are glibc problems, not Linux problems. Linux does not perform name resolution or character encoding conversion.