This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: RFA: reducing size of _atexit structure for _REENT_SMALL


Hi Jeff,


The reason that the implementation is such is because ANSI C90 actually states for atexit(): "The implementation shall support the registration of at least 32 functions". This isn't true if you only support dynamically allocated storage.

Now that said, there is the question of how much a _REENT_SMALL processor wishes to adhere to ANSI C. At the very least, I think this should be governed by YAF (yet another flag). Comments?

You are right, although I was trying to avoid defining yet another flag. I think that in this case ANSI conformance would only be compromised if there was insufficient room to allocate memory for the 32 element function pointer array when the first atexit function called. If this were to happen then the application would have to be operating at the very limits of its available memory, and it could only have gotten to this situation because _REENT_SMALL had reduced the size of the _reent structure sufficiently to allow it to run in the first place. Thus I think that this (theoretical) application could never run in an ANSI conformant way because it just needs too much memory.


I like to keep things simple, so to my mind it is simpler and cleaner to just use the _REENT_SMALL definition to make this change the _reent structure, rather than introducing yet another flag. I realise that it does break strict ANSI conformance, but I think that this is OK. We could include a warning comment in reent.h (or config.h) to let people who define _REENT_SMALL know the risks.

Cheers
  Nick


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]