This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH 4/4] Consolidate Linux truncate implementations
- From: Adhemerval Zanella <adhemerval dot zanella at linaro dot org>
- To: Yury Norov <ynorov at caviumnetworks dot com>
- Cc: libc-alpha at sourceware dot org
- Date: Tue, 25 Oct 2016 15:54:48 -0200
- Subject: Re: [PATCH 4/4] Consolidate Linux truncate implementations
- Authentication-results: sourceware.org; auth=none
- References: <1474383714-15187-1-git-send-email-adhemerval.zanella@linaro.org> <1474383714-15187-5-git-send-email-adhemerval.zanella@linaro.org> <20160922142442.GA5914@yury-N73SV> <330498bd-5430-94eb-f033-73236269be13@linaro.org> <20160922155131.GA20294@yury-N73SV> <6e461b86-63e1-0980-0b26-608cea3575a0@linaro.org>
Ping.
On 22/09/2016 16:04, Adhemerval Zanella wrote:
>
>
> On 22/09/2016 12:51, Yury Norov wrote:
>> On Thu, Sep 22, 2016 at 11:42:11AM -0300, Adhemerval Zanella wrote:
>>>
>>>
>>> On 22/09/2016 11:24, Yury Norov wrote:
>>>>> +/* Truncate PATH to LENGTH bytes. */
>>>>> int
>>>>> -truncate64 (const char *path, off64_t length)
>>>>> +__truncate64 (const char *path, off64_t length)
>>>>> {
>>>>> - unsigned int low = length & 0xffffffff;
>>>>> - unsigned int high = length >> 32;
>>>>> - int result = INLINE_SYSCALL (truncate64, 3, path,
>>>>> - __LONG_LONG_PAIR (high, low));
>>>>> - return result;
>>>>> + return INLINE_SYSCALL_CALL (truncate64, path,
>>>>> + __ALIGNMENT_ARG SYSCALL_LL64 (length));
>>>>> }
>>>>> +weak_alias (__truncate64, truncate64)
>>>>> +
>>>>> +#ifdef __OFF_T_MATCHES_OFF64_T
>>>>> +weak_alias (__truncate64, truncate);
>>>>> +#endif
>>>>
>>>> It seems you forgot weak_alias (__truncate64, __truncate);
>>>>
>>>
>>> I do not think it requires to add __truncate alias since glibc currently
>>> does have internal calls to truncate.
>>
>> Sorry, I was meaning __ftruncate:
>> /home/yury/work/toolchain/build-glibc-aarch64-thunderx-linux-gnu-mabi-ilp32/libc_pic.os:
>> In function `internal_fallocate':
>> /home/yury/work/toolchain/gits/glibc/io/../sysdeps/posix/posix_fallocate.c:64:
>> undefined reference to `__ftruncate'
>>
>> Truncate looks correct.
>> The fix is like this to me:
>>
>> --
>> diff --git a/sysdeps/unix/sysv/linux/ftruncate64.c b/sysdeps/unix/sysv/linux/ftruncate64.c
>> index 914ce67..4a00db5 100644
>> --- a/sysdeps/unix/sysv/linux/ftruncate64.c
>> +++ b/sysdeps/unix/sysv/linux/ftruncate64.c
>> @@ -33,5 +33,6 @@ __ftruncate64 (int fd, off64_t length)
>> weak_alias (__ftruncate64, ftruncate64)
>>
>> #ifdef __OFF_T_MATCHES_OFF64_T
>> +weak_alias (__ftruncate64, __ftruncate)
>> weak_alias (__ftruncate64, ftruncate);
>> #endif
>>
>
> Ah right, the fallback posix_fallocate implementation. I will add this to
> the patch, thanks.
>