[PATCH] check_native: Get rid of alloca
Florian Weimer
fweimer@redhat.com
Thu Jun 1 08:03:53 GMT 2023
* Andreas Schwab:
> On Jun 01 2023, Florian Weimer via Libc-alpha wrote:
>
>> * Adhemerval Zanella Netto via Libc-alpha:
>>
>>> +static void
>>> +iclose (int *fd)
>>> +{
>>> + if (*fd >= 0)
>>> + __close_nocancel_nostatus (*fd);
>>> +}
>>> +
>>> void
>>> __check_native (uint32_t a1_index, int *a1_native,
>>> uint32_t a2_index, int *a2_native)
>>> {
>>> - int fd = __socket (PF_NETLINK, SOCK_RAW | SOCK_CLOEXEC, NETLINK_ROUTE);
>>> + int __attribute__ ((__cleanup__ (iclose))) fd
>>> + = __socket (PF_NETLINK, SOCK_RAW | SOCK_CLOEXEC, NETLINK_ROUTE);
>>> + if (fd < 0)
>>> + return;
>>
>> I think introducing attribute cleanup where equivalent functionality can
>> be implemented otherwise requires a discussion first.
>
> The cleanup attribute requires compiling the function and all callees
> with -fasynchronous-unwind-tables.
I think GCC will still call the destructor on normal scope exit (if no
exception is thrown), even with -fno-exceptions. That should be
sufficient here?
Thanks,
Florian
More information about the Libc-alpha
mailing list