SO... to finally get to the point ;) I guess there are three options:
(1) Declare the treatment of 0xffffffff to be correct but fix the
bignum problems (i.e. apply something like the first patch but
not the second).
(2) Treat values as unsigned if they were written that way (i.e. apply
both patches, or variations of them).
(3) Get rid of sleb128 bignum support altogether. Treat everything
as 32-bit if !BFD64.
(1) seems better than the status quo but the signed/unsigned thing is a
little odd. I'm uneasy about (2) because of the arithmetic problem
described above.
According to the Cygnus repository, the bugs fixed by the first patch
have been around since the code was first added in Aug 1997. That suggests
that bignum .sleb128s have never worked, yet as far as I know, no-one has
ever complained before. Perhaps (3) really is a viable option?