[PATCH] binutils/nm.c: Skip sbrk() under Darwin when _POSIX_C_SOURCE not defined
Chen Gang
gang.chen.5i5j@gmail.com
Thu Sep 18 14:06:00 GMT 2014
On 09/16/2014 10:00 AM, Chen Gang wrote:
> On 9/15/14 21:54, Tristan Gingold wrote:
>>
>> On 15 Sep 2014, at 15:31, Chen Gang <gang.chen.5i5j@gmail.com> wrote:
>>> On 9/15/14 21:21, Tristan Gingold wrote:
>>>> Hello,
>>>>
>>>> On 15 Sep 2014, at 15:20, Chen Gang <gang.chen.5i5j@gmail.com> wrote:
>>>> [...]
>>>>> --- a/binutils/nm.c
>>>>> +++ b/binutils/nm.c
>>>>> @@ -1698,6 +1698,7 @@ main (int argc, char **argv)
>>>>> END_PROGRESS (program_name);
>>>>>
>>>>> #ifdef HAVE_SBRK
>>>>> +#if !defined (__DARWIN_C_LEVEL) || defined (_POSIX_C_SOURCE)
>>>>> if (show_stats)
>>>>> {
>>>>> char *lim = (char *) sbrk (0);
>>>>> @@ -1705,6 +1706,7 @@ main (int argc, char **argv)
>>>>> non_fatal (_("data size %ld"), (long) (lim - (char *) &environ));
>>>>> }
>>>>> #endif
>>>>> +#endif
>>>>
>>>> Enable code on machine specific macro is not recommended by the GNU standard.
>>>> Also note that sbrk is also used by gas.
>>>>
>>>> Maybe the test of sbrk in configure should be done using warnings flags.
>>>>
>>>> (the work-around is to configure using --disable-werror).
>>>>
>>>
>>> Originally, I really tried to do that, but I found that HAVE_SBRK really
>>> need be true under Darwin, but may report warning.
>>
>> Can you clarify that ? IIRC, the only use of sbrk within binutils is to
>> compute the amount of memory used.
>>
In honest, for me, my own fixing way is really not quite well (although
still acceptable), but I can not find another better ways or it.
So welcome any additional ideas, suggestions or completions for it.
Thanks.
>
> Yeah, in "binutils/binutils", what you said is reasonable to me.
>
> But in "bintuils" (include as, ld, gdb ...), most of sub-systems content
> "HAVE_SBRK", and some of them not enable 'Werror'.
>
> Originally I tried "binutils/binutils" in "binutils/binutils/configure"
> (but not send patch). But after I thought of again, for me:
>
> - 'HAVE_SBRK' express whether have sbrk(), do not care about warnings.
>
> - Multiple sub-systems use 'HAVE_SBRK', some can bare the warnings.
>
> - If the sub-systems can not bare warnings, it needs additional trying
> (e.g binutils/binutils), and still keep the standard checking for
> 'HAVE_SBRK' in related configure.
>
>
> Thanks.
>
--
Chen Gang
Open share and attitude like air water and life which God blessed
More information about the Binutils
mailing list