diff mbox series

ubsan: don't mark __ubsan_handle_builtin_unreachable as noreturn

Message ID 20180202154813.1625742-1-arnd@arndb.de
State New
Headers show
Series ubsan: don't mark __ubsan_handle_builtin_unreachable as noreturn | expand

Commit Message

Arnd Bergmann Feb. 2, 2018, 3:47 p.m. UTC
gcc-8 complains about the prototype for this function:

lib/ubsan.c:432:1: error: ignoring attribute 'noreturn' in declaration of a built-in function '__ubsan_handle_builtin_unreachable' because it conflicts with attribute 'const' [-Werror=attributes]

This removes the noreturn attribute.

Signed-off-by: Arnd Bergmann <arnd@arndb.de>

---
 lib/ubsan.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

-- 
2.9.0

Comments

Andrey Ryabinin Feb. 5, 2018, 9:02 a.m. UTC | #1
On 02/02/2018 06:47 PM, Arnd Bergmann wrote:
> gcc-8 complains about the prototype for this function:

> 

> lib/ubsan.c:432:1: error: ignoring attribute 'noreturn' in declaration of a built-in function '__ubsan_handle_builtin_unreachable' because it conflicts with attribute 'const' [-Werror=attributes]

> 


That's actually a bug in GCC. In GCC __ubsan_handle_builtin_unreachable declared
with 'noreturn' and 'const' attributes:

DEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_BUILTIN_UNREACHABLE,                                                                                                                                                    
                      "__ubsan_handle_builtin_unreachable",                                                                                                                                                         
                      BT_FN_VOID_PTR,                                                                                                                                                                               
                      ATTR_COLD_CONST_NORETURN_NOTHROW_LEAF_LIST)


But const attribute doesn't make any sense for function that returns void or doesn't return at all.
Given that gcc-8 has not released yet, it would be better to fix this bug there.
Arnd Bergmann Feb. 5, 2018, 10:15 a.m. UTC | #2
On Mon, Feb 5, 2018 at 10:02 AM, Andrey Ryabinin
<aryabinin@virtuozzo.com> wrote:
>

>

> On 02/02/2018 06:47 PM, Arnd Bergmann wrote:

>> gcc-8 complains about the prototype for this function:

>>

>> lib/ubsan.c:432:1: error: ignoring attribute 'noreturn' in declaration of a built-in function '__ubsan_handle_builtin_unreachable' because it conflicts with attribute 'const' [-Werror=attributes]

>>

>

> That's actually a bug in GCC. In GCC __ubsan_handle_builtin_unreachable declared

> with 'noreturn' and 'const' attributes:

>

> DEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_BUILTIN_UNREACHABLE,

>                       "__ubsan_handle_builtin_unreachable",

>                       BT_FN_VOID_PTR,

>                       ATTR_COLD_CONST_NORETURN_NOTHROW_LEAF_LIST)

>

>

> But const attribute doesn't make any sense for function that returns void or doesn't return at all.

> Given that gcc-8 has not released yet, it would be better to fix this bug there.


Ok. Should I open a gcc bug, or will you take care of it?

       Arnd
Andrey Ryabinin Feb. 5, 2018, 10:31 a.m. UTC | #3
On 02/05/2018 01:15 PM, Arnd Bergmann wrote:
> On Mon, Feb 5, 2018 at 10:02 AM, Andrey Ryabinin

> <aryabinin@virtuozzo.com> wrote:

>>

>>

>> On 02/02/2018 06:47 PM, Arnd Bergmann wrote:

>>> gcc-8 complains about the prototype for this function:

>>>

>>> lib/ubsan.c:432:1: error: ignoring attribute 'noreturn' in declaration of a built-in function '__ubsan_handle_builtin_unreachable' because it conflicts with attribute 'const' [-Werror=attributes]

>>>

>>

>> That's actually a bug in GCC. In GCC __ubsan_handle_builtin_unreachable declared

>> with 'noreturn' and 'const' attributes:

>>

>> DEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_BUILTIN_UNREACHABLE,

>>                       "__ubsan_handle_builtin_unreachable",

>>                       BT_FN_VOID_PTR,

>>                       ATTR_COLD_CONST_NORETURN_NOTHROW_LEAF_LIST)

>>

>>

>> But const attribute doesn't make any sense for function that returns void or doesn't return at all.

>> Given that gcc-8 has not released yet, it would be better to fix this bug there.

> 

> Ok. Should I open a gcc bug, or will you take care of it?

> 


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

>        Arnd

>
Olof Johansson Nov. 2, 2018, 9:27 p.m. UTC | #4
On Mon, Feb 5, 2018 at 2:31 AM Andrey Ryabinin <aryabinin@virtuozzo.com> wrote:
>

> On 02/05/2018 01:15 PM, Arnd Bergmann wrote:

> > On Mon, Feb 5, 2018 at 10:02 AM, Andrey Ryabinin

> > <aryabinin@virtuozzo.com> wrote:

> >>

> >>

> >> On 02/02/2018 06:47 PM, Arnd Bergmann wrote:

> >>> gcc-8 complains about the prototype for this function:

> >>>

> >>> lib/ubsan.c:432:1: error: ignoring attribute 'noreturn' in declaration of a built-in function '__ubsan_handle_builtin_unreachable' because it conflicts with attribute 'const' [-Werror=attributes]

> >>>

> >>

> >> That's actually a bug in GCC. In GCC __ubsan_handle_builtin_unreachable declared

> >> with 'noreturn' and 'const' attributes:

> >>

> >> DEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_BUILTIN_UNREACHABLE,

> >>                       "__ubsan_handle_builtin_unreachable",

> >>                       BT_FN_VOID_PTR,

> >>                       ATTR_COLD_CONST_NORETURN_NOTHROW_LEAF_LIST)

> >>

> >>

> >> But const attribute doesn't make any sense for function that returns void or doesn't return at all.

> >> Given that gcc-8 has not released yet, it would be better to fix this bug there.

> >

> > Ok. Should I open a gcc bug, or will you take care of it?

> >

>

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


8.2.0 still shows this, and there's been no movement on that bug. How
about we pick up this patch until it's been resolved?


-Olof
Andrey Ryabinin Nov. 7, 2018, 2:44 p.m. UTC | #5
On 11/03/2018 12:27 AM, Olof Johansson wrote:
> On Mon, Feb 5, 2018 at 2:31 AM Andrey Ryabinin <aryabinin@virtuozzo.com> wrote:

>>

>> On 02/05/2018 01:15 PM, Arnd Bergmann wrote:

>>> On Mon, Feb 5, 2018 at 10:02 AM, Andrey Ryabinin

>>> <aryabinin@virtuozzo.com> wrote:

>>>>

>>>>

>>>> On 02/02/2018 06:47 PM, Arnd Bergmann wrote:

>>>>> gcc-8 complains about the prototype for this function:

>>>>>

>>>>> lib/ubsan.c:432:1: error: ignoring attribute 'noreturn' in declaration of a built-in function '__ubsan_handle_builtin_unreachable' because it conflicts with attribute 'const' [-Werror=attributes]

>>>>>

>>>>

>>>> That's actually a bug in GCC. In GCC __ubsan_handle_builtin_unreachable declared

>>>> with 'noreturn' and 'const' attributes:

>>>>

>>>> DEF_SANITIZER_BUILTIN(BUILT_IN_UBSAN_HANDLE_BUILTIN_UNREACHABLE,

>>>>                       "__ubsan_handle_builtin_unreachable",

>>>>                       BT_FN_VOID_PTR,

>>>>                       ATTR_COLD_CONST_NORETURN_NOTHROW_LEAF_LIST)

>>>>

>>>>

>>>> But const attribute doesn't make any sense for function that returns void or doesn't return at all.

>>>> Given that gcc-8 has not released yet, it would be better to fix this bug there.

>>>

>>> Ok. Should I open a gcc bug, or will you take care of it?

>>>

>>

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

> 

> 8.2.0 still shows this, and there's been no movement on that bug. How

> about we pick up this patch until it's been resolved?

> 


Sure, I'll add info about GCC bug in changelog and resend the patch.

> 

> -Olof

>
diff mbox series

Patch

diff --git a/lib/ubsan.c b/lib/ubsan.c
index 59fee96c29a0..aa817d79c47c 100644
--- a/lib/ubsan.c
+++ b/lib/ubsan.c
@@ -427,7 +427,7 @@  void __ubsan_handle_shift_out_of_bounds(struct shift_out_of_bounds_data *data,
 EXPORT_SYMBOL(__ubsan_handle_shift_out_of_bounds);
 
 
-void __noreturn
+void
 __ubsan_handle_builtin_unreachable(struct unreachable_data *data)
 {
 	unsigned long flags;