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

Osama Abdelkader osama.abdelkader@gmail.com
Thu Dec 4 19:08:44 GMT 2025


On Mon, Dec 01, 2025 at 03:41:34PM -0300, Adhemerval Zanella Netto wrote:
> 
> 
> 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.

Thanks Yury and Adhemerval for the review, please let me know whether I should send
v4 or wait.

Thanks,
Osama


More information about the Libc-alpha mailing list