https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115737

Andrew Pinski <pinskia at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2024-07-01
     Ever confirmed|0                           |1

--- Comment #1 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
The list is definitely limited:
```
static function_set
get_async_signal_unsafe_fns ()
{
  // TODO: populate this list more fully
  static const char * const async_signal_unsafe_fns[] = {
    /* This array must be kept sorted.  */
    "exit",
    "fprintf",
    "free",
    "malloc",
    "printf",
    "snprintf",
    "sprintf",
    "vfprintf",
    "vprintf",
    "vsnprintf",
    "vsprintf"
  };
  const size_t count = ARRAY_SIZE (async_signal_unsafe_fns);
  function_set fs (async_signal_unsafe_fns, count);
  return fs;
}
```


Oh it is not using ASM name either but rather identifier name:
```
static bool
signal_unsafe_p (tree fndecl)
{
  function_set fs = get_async_signal_unsafe_fns ();
  if (fs.contains_decl_p (fndecl))
    return true;
  if (is_std_function_p (fndecl)
      && fs.contains_name_p (IDENTIFIER_POINTER (DECL_NAME (fndecl))))
    return true;

  return false;
}

```
Maybe it should check both.

Confirmed.

Reply via email to