[PATCH] gcc, cobol: Check for get_current_dir_name [PR119301]
Jose E. Marchesi
jose.marchesi@oracle.com
Tue Mar 18 15:05:35 GMT 2025
>> On 18 Mar 2025, at 12:08, Richard Biener <richard.guenther@gmail.com> wrote:
>>
>> On Tue, Mar 18, 2025 at 1:07 PM Iain Sandoe <iain@sandoe.co.uk> wrote:
>>>
>>>
>>>
>>>> On 18 Mar 2025, at 12:01, Richard Biener <richard.guenther@gmail.com> wrote:
>>>>
>>>> On Tue, Mar 18, 2025 at 12:13 PM Iain Sandoe <iains.gcc@gmail.com> wrote:
>>>>>
>>>>> tested on x86_64/aarch64 Linux and x86_64-darwin, OK for trunk?
>>>>> thanks
>>>>> Iain
>>>>>
>>>>> --- 8< ---
>>>>>
>>>>> This adds a configure check for get_current_dir_name and falls back
>>>>> to getcwd() if it is not available on the host.
>>>>>
>>>>> PR cobol/119301
>>>>>
>>>>> gcc/cobol/ChangeLog:
>>>>>
>>>>> * util.cc: Check for the availability of get_current_dir_name
>>>>> and fall back to getcwd() if it is not present on the host.
>>>>>
>>>>> gcc/ChangeLog:
>>>>>
>>>>> * config.in: Regenerate.
>>>>> * configure: Regenerate.
>>>>> * configure.ac: Add check for get_current_dir_name.
>>>>>
>>>>> Signed-off-by: Iain Sandoe <iain@sandoe.co.uk>
>>>>> ---
>>>>> gcc/cobol/util.cc | 9 +++++++++
>>>>> gcc/config.in | 6 ++++++
>>>>> gcc/configure | 2 +-
>>>>> gcc/configure.ac | 2 +-
>>>>> 4 files changed, 17 insertions(+), 2 deletions(-)
>>>>>
>>>>> diff --git a/gcc/cobol/util.cc b/gcc/cobol/util.cc
>>>>> index 9f746a38808..ecef10190eb 100644
>>>>> --- a/gcc/cobol/util.cc
>>>>> +++ b/gcc/cobol/util.cc
>>>>> @@ -72,6 +72,15 @@ extern int yyparse(void);
>>>>>
>>>>> extern int demonstration_administrator(int N);
>>>>>
>>>>> +#if !defined (HAVE_GET_CURRENT_DIR_NAME)
>>>>> +static inline char *
>>>>> +get_current_dir_name ()
>>>>> +{
>>>>> + /* Fall back to getcwd which is also present in libiberty. */
>>>>> + return getcwd (nullptr, 0);
>>>>
>>>> Isn't that getcwd allocates the storage an extension?
>>>
>>> Hmm.. indeed Posix:
>>>
>>> "The size argument is the size in bytes of the character array
>>> pointed to by the buf argument. If buf is a null pointer, the
>>> behavior of getcwd() is unspecified."
>>>
>>> and Linux and Darwin differ (Darwin does allocate, Linux does not).
>>>
>>>> I see libiberty
>>>> also does this, but IIRC that copy isn't used if the system provides it?
>>>
>>> Maybe we need a libiberty implementation of get_current_dir_name()
>>> which does the same as the Linux one (and actually the same as the
>>> Darwin getcwd).
>>>
>>> Open to suggestions ..
>>
>> char *buf = malloc (PATH_MAX);
>> return getcwd (buf, PATH_MAX);
>>
>> ?
>
> I’m fine with that - providing we have an expectation that PATH_MAX
> will be available (with a suitable header include).
> I’ll do some grepping for existing practice.
Note that PATH_MAX is not defined in GNU/Hurd.
You can do something like:
#if defined(__GNU__)
/* The Hurd doesn't define PATH_MAX. */
# define PATH_MAX 4096
#endif
More information about the Gcc-patches
mailing list