Re: Fw: [PATCH 1/8] newlib: internalize HAVE_INITFINI_ARRAY

Mike Frysinger <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <YedhAMkqDBgJI/R8@vapier>
On 18 Jan 2022 11:10, C Howland wrote:
> > ------------------------------
> > *From:* Newlib <[email protected]> on
> > behalf of Mike Frysinger <[email protected]>
> > *Sent:* Monday, January 17, 2022 11:47 PM
> > *To:* [email protected] <[email protected]>
> > *Subject:* [PATCH 1/8] newlib: internalize HAVE_INITFINI_ARRAY
> >
> > This define is only used by newlib internally, so stop exporting it
> > as HAVE_INITFINI_ARRAY since this can conflict with defines packages
> > use themselves.
> >
> > We don't really need to add _ to HAVE_INIT_FINI too since it isn't
> > exported in newlib.h, but might as well be consistent here.
>
>      How do you know it is only used by Newlib internally?  Changing this
> is effectively changing the API and is not safe.  (I don't use it, myself,
> but given it's been like this for a long time, there's nothing to say that
> nobody is.)  Unfortunately, it uses a methodology as either being defined
> or not, so someone using the #ifdef method on it would not immediately
> notice the change. (That is, when building with something that looked at
> it, the build itself could not know something had gone wrong.  It would
> require runtime to find out.)
>      This does not necessarily mean that this specific change ought not be
> done, but it does mean that this consideration needs to be weighed before
> an API-breaking change were made.  Offhand I can't think of a good way to
> guard against it, either.  (A tedious way would be to mark it deprecated
> and then remove it in a year or so.)

any project relying on this is broken.  exporting this symbol violates standards
as to the namespace C libraries are allowed to use.  in fact, a cursory search
shows that it is breaking projects because they were using this define, but the
newlib symbol override their configure tests leading to desyncs.

we also don't export HAVE_INIT_FINI, so newlib users aren't able to determine
how newlib is actually going to behave at run time.

there is no way to mark a preprocessor symbol as deprecated such that the
toolchain will warn.  we can put a note in the docs/NEWS, but that requires
people actually read them.  and if they're reading those, then we can just
as easily put mention that the symbol has been removed.

i really don't think this is a big deal.  arguing theory isn't useful here.

if an actual user comes out of the woodworks, we can consider whether it's
worth adding it, and in the right namespace.
-mike
signature.asc (application/pgp-signature, 833 B)
-----BEGIN PGP SIGNATURE-----

iQIzBAABCAAdFiEEuQK1JxMl+JKsJRrUQWM7n+g39YEFAmHnYP8ACgkQQWM7n+g3
9YFj2hAA2JJ46RVxTVPi1S+v1lhDzdSh+3Ivvn/jkJSdAOcgo6tG2fl3B+iy7PTy
iH8Q/ASvA5CjgLA1eGbEOxenAca1e8D5qwXXtEjw7c5Rz+ADWglxcXnKQPG4kgGP
3YpICB5ou3vEm/Z6qXiUEhx9lL6x+HwRumbYW12yL5QGZ2WNMZ0FE9HwqJq4XxqJ
mhHx8igd1mrk95AvDSyhFGwTknjTZx4+fQ36vS4BmXsESCEzWUg3CdhMqzOlh/WK
HP9DAY+H7BKEpGlBrmQ8Lk1qM75yMIXual+ugBmUlCf5uSKnUc6rb4K8JVIftGf8
BGAbtWwPRL/xuCUfm4y5mbCMfWa9D8mMA2sEjZHP6i1xvl4m8KlZx204WptvruBk
iCyNMmT6NiyWrLN5/kID2X4iDLi0b8k1Sorl3RYudSnRk72Zapj+jYej2iWx85dW
/+SEDTf9SK8pJYdxO5650xNPuUWbil/ev5zMYUzt5yXUOpZFH+JGt7thFPuMC1gf
AJksFlHuis26X32HgBLBYeUKrVBf9hIloerJC4oBtijdRys5E77rw+OVrUa3q7+i
mCOIJFrShIJAHaCV2fB3g4sDy8/u4pQ0xTNzXrzhMGRqYfxtD4zNXBHg+hLt4eXT
QrSWV5LpBxO+AvUvVk+K5FTnnwDaDEkHmsUvzmYhwNzeYlA/U0I=
=h3v4
-----END PGP SIGNATURE-----
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.