Matteo Concas created an issue: 
https://gitlab.rtems.org/rtems/rtos/rtems/-/issues/5501



## Summary

`_Processor_mask_Find_last_set()` calls the `flsl()` function. This function is 
declared in `strings.h` but behind a `__BSD_VISIBLE` guard (which is 0 in our 
case). This means it is effectively not declared, this is fine most of the time 
but when using `-std=c11` (or another standard like C99) it will throw an 
"implicit declaration of function 'flsl' [-Wimplicit-function-declaration]" 
error.

## Steps to reproduce

Add "-std=c11" to your flags and compile a binary making use of 
`_Processor_mask_Find_last_set()` will give you this:

```bash
/prefix/bsp/lib/include/rtems/score/processormaskimpl.h: In function 
'_Processor_mask_Find_last_set':
/prefix/bsp/lib/include/rtems/score/processormaskimpl.h:285:21: error: implicit 
declaration of function 'flsl' [-Wimplicit-function-declaration]
  285 |   return (uint32_t) __BIT_FLS( CPU_MAXIMUM_PROCESSORS, a );
      |                     ^~~~~~~~~
```

Using `-std=gnu11` instead will "fix" it but we should probably use something 
else like `__builtin_ctzl()` instead.

<!--Pre-set options
- milestone-->

-- 
View it on GitLab: https://gitlab.rtems.org/rtems/rtos/rtems/-/issues/5501
You're receiving this email because of your account on gitlab.rtems.org.


_______________________________________________
bugs mailing list
[email protected]
http://lists.rtems.org/mailman/listinfo/bugs

Reply via email to