__readlink_chk: Assume HAVE_INLINED_SYSCALLS
Commit Message
HAVE_INLINED_SYSCALLS is always defined on Linux.
2018-08-20 Florian Weimer <fweimer@redhat.com>
* sysdeps/unix/sysv/linux/generic/readlink_chk.c: Remove
HAVE_INLINED_SYSCALLS conditionals
Comments
On 20/08/2018 11:40, Florian Weimer wrote:
> HAVE_INLINED_SYSCALLS is always defined on Linux.
>
> 2018-08-20 Florian Weimer <fweimer@redhat.com>
>
> * sysdeps/unix/sysv/linux/generic/readlink_chk.c: Remove
> HAVE_INLINED_SYSCALLS conditionals
LGTM.
>
> diff --git a/sysdeps/unix/sysv/linux/generic/readlink_chk.c b/sysdeps/unix/sysv/linux/generic/readlink_chk.c
> index 9240408a6b..5075e06dd1 100644
> --- a/sysdeps/unix/sysv/linux/generic/readlink_chk.c
> +++ b/sysdeps/unix/sysv/linux/generic/readlink_chk.c
> @@ -19,10 +19,8 @@
> #include <unistd.h>
> #include <fcntl.h>
> #include <sys/param.h>
> -#ifdef HAVE_INLINED_SYSCALLS
> # include <errno.h>
> # include <sysdep.h>
> -#endif
>
>
> ssize_t
> @@ -31,9 +29,5 @@ __readlink_chk (const char *path, void *buf, size_t len, size_t buflen)
> if (len > buflen)
> __chk_fail ();
>
> -#ifdef HAVE_INLINED_SYSCALLS
> return INLINE_SYSCALL (readlinkat, 4, AT_FDCWD, path, buf, len);
Maybe use INLINE_SYSCALL_CALL ?
> -#else
> - return __readlink (path, buf, len);
> -#endif
> }
>
On 20/08/2018 13:18, Adhemerval Zanella wrote:
>
>
> On 20/08/2018 11:40, Florian Weimer wrote:
>> HAVE_INLINED_SYSCALLS is always defined on Linux.
>>
>> 2018-08-20 Florian Weimer <fweimer@redhat.com>
>>
>> * sysdeps/unix/sysv/linux/generic/readlink_chk.c: Remove
>> HAVE_INLINED_SYSCALLS conditionals
>
> LGTM.
In fact, do we really need to have a duplicated Linux implementation
for this micro-optimization? Couldn't we just use default debug
one and call '__readlink' instead?
>
>>
>> diff --git a/sysdeps/unix/sysv/linux/generic/readlink_chk.c b/sysdeps/unix/sysv/linux/generic/readlink_chk.c
>> index 9240408a6b..5075e06dd1 100644
>> --- a/sysdeps/unix/sysv/linux/generic/readlink_chk.c
>> +++ b/sysdeps/unix/sysv/linux/generic/readlink_chk.c
>> @@ -19,10 +19,8 @@
>> #include <unistd.h>
>> #include <fcntl.h>
>> #include <sys/param.h>
>> -#ifdef HAVE_INLINED_SYSCALLS
>> # include <errno.h>
>> # include <sysdep.h>
>> -#endif
>>
>>
>> ssize_t
>> @@ -31,9 +29,5 @@ __readlink_chk (const char *path, void *buf, size_t len, size_t buflen)
>> if (len > buflen)
>> __chk_fail ();
>>
>> -#ifdef HAVE_INLINED_SYSCALLS
>> return INLINE_SYSCALL (readlinkat, 4, AT_FDCWD, path, buf, len);
>
> Maybe use INLINE_SYSCALL_CALL ?
>
>> -#else
>> - return __readlink (path, buf, len);
>> -#endif
>> }
>>
On Mon, 20 Aug 2018, Florian Weimer wrote:
> -#ifdef HAVE_INLINED_SYSCALLS
> # include <errno.h>
> # include <sysdep.h>
> -#endif
Need to update the preprocessor indentation here for the removed #ifdef.
On 08/20/2018 09:32 PM, Joseph Myers wrote:
> On Mon, 20 Aug 2018, Florian Weimer wrote:
>
>> -#ifdef HAVE_INLINED_SYSCALLS
>> # include <errno.h>
>> # include <sysdep.h>
>> -#endif
> Need to update the preprocessor indentation here for the removed #ifdef.
Oops, right. The file is gone in the follow-up patch. But I see I
forgot to remove the #includes from debug/readlink_chk.c. I will fix
that too.
Florian
@@ -19,10 +19,8 @@
#include <unistd.h>
#include <fcntl.h>
#include <sys/param.h>
-#ifdef HAVE_INLINED_SYSCALLS
# include <errno.h>
# include <sysdep.h>
-#endif
ssize_t
@@ -31,9 +29,5 @@ __readlink_chk (const char *path, void *buf, size_t len, size_t buflen)
if (len > buflen)
__chk_fail ();
-#ifdef HAVE_INLINED_SYSCALLS
return INLINE_SYSCALL (readlinkat, 4, AT_FDCWD, path, buf, len);
-#else
- return __readlink (path, buf, len);
-#endif
}