[PATCH v3] Fix POSIX compliance: Make blkcnt_t and blksize_t signed on alpha

Adhemerval Zanella Netto adhemerval.zanella@linaro.org
Mon Dec 1 18:41:34 GMT 2025



On 01/12/25 13:25, Yury Khrustalev wrote:
> On Wed, Nov 26, 2025 at 08:30:38AM -0300, Adhemerval Zanella Netto wrote:
>>
>>> ...
>>>
>>> I think it should be 
>>>
>>>   blkcnt64_t:l // long for __S64_TYPE
>>>   blkcnt_t:i   // int for __S32_TYPE
>>>   blksize_t:i  // int for __S32_TYPE
>>>
>>> given the new definitions of these types?
>>>
>>
>> This is essentially an ABI break, albeit I think it should not matter for most
>> usercases.  In theory it might break some usercases where the struct is used in
>> C++ function call (thus changing the mangling name) without a module rebuild.
>>
>> I am not sure how to properly fix it, I don't recall any change where we did
>> this. Usually we add new types, as like the 64-bit time_t stat support, to
>> avoid it.
> 
> Even if it is an ABI break, what choice do we have? I think we shouldn't
> keep using incorrect types.
> 

I am really not sure how to proper fix it without potentially breaking the C++
ABI.  Maybe we can do it and document on the NEWS entry on the
"Deprecated and removed features, and other changes affecting compatibility"
about a potentially ABI break and why have changed on Alpha.


More information about the Libc-alpha mailing list