public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug other/60535] New: [4.9 Regression] Link failure with -flto and -fsanitize=undefined
@ 2014-03-15  9:22 trippels at gcc dot gnu.org
  2014-03-17  9:46 ` [Bug sanitizer/60535] " rguenth at gcc dot gnu.org
                   ` (8 more replies)
  0 siblings, 9 replies; 10+ messages in thread
From: trippels at gcc dot gnu.org @ 2014-03-15  9:22 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60535

            Bug ID: 60535
           Summary: [4.9 Regression] Link failure with -flto and
                    -fsanitize=undefined
           Product: gcc
           Version: 4.9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: other
          Assignee: unassigned at gcc dot gnu.org
          Reporter: trippels at gcc dot gnu.org

Created attachment 32359
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=32359&action=edit
unreduced testcase

Trying to build Firefox with -flto and -fsanitize=undefined fails:

markus@x4 libopus % g++ -fsanitize=undefined -flto -O2 jskwgen.ii
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
column_comparator(void const*, void const*): error: undefined reference to
'.Lubsan_data0.3163'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
column_comparator(void const*, void const*): error: undefined reference to
'.Lubsan_data3.3217'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
column_comparator(void const*, void const*): error: undefined reference to
'.Lubsan_data2.3199'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
column_comparator(void const*, void const*): error: undefined reference to
'.Lubsan_data1.3181'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
length_comparator(void const*, void const*): error: undefined reference to
'.Lubsan_data6.3285'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
length_comparator(void const*, void const*): error: undefined reference to
'.Lubsan_data5.3266'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
length_comparator(void const*, void const*): error: undefined reference to
'.Lubsan_data4.3248'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function p(gen_opt*, char
const*, ...): error: undefined reference to '.Lubsan_data7.3311'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function indent(gen_opt*):
error: undefined reference to '.Lubsan_data8.3344'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function indent(gen_opt*):
error: undefined reference to '.Lubsan_data9.3362'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function line(gen_opt*, char
const*, ...): error: undefined reference to '.Lubsan_data10.3389'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function line(gen_opt*, char
const*, ...): error: undefined reference to '.Lubsan_data11.3407'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function qchar(char, char*):
error: undefined reference to '.Lubsan_data14.3475'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function qchar(char, char*):
error: undefined reference to '.Lubsan_data12.3439'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function qchar(char, char*):
error: undefined reference to '.Lubsan_data21.3601'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function qchar(char, char*):
error: undefined reference to '.Lubsan_data20.3583'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function qchar(char, char*):
error: undefined reference to '.Lubsan_data19.3565'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function qchar(char, char*):
error: undefined reference to '.Lubsan_data13.3457'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function qchar(char, char*):
error: undefined reference to '.Lubsan_data18.3547'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function qchar(char, char*):
error: undefined reference to '.Lubsan_data17.3529'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function qchar(char, char*):
error: undefined reference to '.Lubsan_data16.3511'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function qchar(char, char*):
error: undefined reference to '.Lubsan_data15.3493'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
generate_letter_switch_r(gen_opt*, unsigned int*, unsigned int, unsigned int*,
unsigned int): error: undefined reference to '.Lubsan_data23.3723'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
generate_letter_switch_r(gen_opt*, unsigned int*, unsigned int, unsigned int*,
unsigned int): error: undefined reference to '.Lubsan_data43.4083'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
generate_letter_switch_r(gen_opt*, unsigned int*, unsigned int, unsigned int*,
unsigned int): error: undefined reference to '.Lubsan_data44.4101'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
generate_letter_switch_r(gen_opt*, unsigned int*, unsigned int, unsigned int*,
unsigned int): error: undefined reference to '.Lubsan_data45.4119'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
generate_letter_switch_r(gen_opt*, unsigned int*, unsigned int, unsigned int*,
unsigned int): error: undefined reference to '.Lubsan_data46.4137'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
generate_letter_switch_r(gen_opt*, unsigned int*, unsigned int, unsigned int*,
unsigned int): error: undefined reference to '.Lubsan_data47.4155'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
generate_letter_switch_r(gen_opt*, unsigned int*, unsigned int, unsigned int*,
unsigned int): error: undefined reference to '.Lubsan_data48.4173'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
generate_letter_switch_r(gen_opt*, unsigned int*, unsigned int, unsigned int*,
unsigned int): error: undefined reference to '.Lubsan_data49.4191'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
generate_letter_switch_r(gen_opt*, unsigned int*, unsigned int, unsigned int*,
unsigned int): error: undefined reference to '.Lubsan_data50.4209'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
generate_letter_switch_r(gen_opt*, unsigned int*, unsigned int, unsigned int*,
unsigned int): error: undefined reference to '.Lubsan_data51.4227'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
generate_letter_switch_r(gen_opt*, unsigned int*, unsigned int, unsigned int*,
unsigned int): error: undefined reference to '.Lubsan_data52.4245'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
generate_letter_switch_r(gen_opt*, unsigned int*, unsigned int, unsigned int*,
unsigned int): error: undefined reference to '.Lubsan_data53.4263'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
generate_letter_switch_r(gen_opt*, unsigned int*, unsigned int, unsigned int*,
unsigned int): error: undefined reference to '.Lubsan_data54.4281'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
generate_letter_switch_r(gen_opt*, unsigned int*, unsigned int, unsigned int*,
unsigned int): error: undefined reference to '.Lubsan_data35.3939'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
generate_letter_switch_r(gen_opt*, unsigned int*, unsigned int, unsigned int*,
unsigned int): error: undefined reference to '.Lubsan_data34.3921'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
generate_letter_switch_r(gen_opt*, unsigned int*, unsigned int, unsigned int*,
unsigned int): error: undefined reference to '.Lubsan_data33.3903'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
generate_letter_switch_r(gen_opt*, unsigned int*, unsigned int, unsigned int*,
unsigned int): error: undefined reference to '.Lubsan_data32.3885'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
generate_letter_switch_r(gen_opt*, unsigned int*, unsigned int, unsigned int*,
unsigned int): error: undefined reference to '.Lubsan_data22.3705'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
generate_letter_switch_r(gen_opt*, unsigned int*, unsigned int, unsigned int*,
unsigned int): error: undefined reference to '.Lubsan_data31.3867'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
generate_letter_switch_r(gen_opt*, unsigned int*, unsigned int, unsigned int*,
unsigned int): error: undefined reference to '.Lubsan_data39.4011'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
generate_letter_switch_r(gen_opt*, unsigned int*, unsigned int, unsigned int*,
unsigned int): error: undefined reference to '.Lubsan_data42.4065'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
generate_letter_switch_r(gen_opt*, unsigned int*, unsigned int, unsigned int*,
unsigned int): error: undefined reference to '.Lubsan_data30.3849'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
generate_letter_switch_r(gen_opt*, unsigned int*, unsigned int, unsigned int*,
unsigned int): error: undefined reference to '.Lubsan_data29.3831'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
generate_letter_switch_r(gen_opt*, unsigned int*, unsigned int, unsigned int*,
unsigned int): error: undefined reference to '.Lubsan_data28.3813'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
generate_letter_switch_r(gen_opt*, unsigned int*, unsigned int, unsigned int*,
unsigned int): error: undefined reference to '.Lubsan_data27.3795'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
generate_letter_switch_r(gen_opt*, unsigned int*, unsigned int, unsigned int*,
unsigned int): error: undefined reference to '.Lubsan_data26.3777'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
generate_letter_switch_r(gen_opt*, unsigned int*, unsigned int, unsigned int*,
unsigned int): error: undefined reference to '.Lubsan_data25.3759'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function
generate_letter_switch_r(gen_opt*, unsigned int*, unsigned int, unsigned int*,
unsigned int): error: undefined reference to '.Lubsan_data24.3741'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function main: error:
undefined reference to '.Lubsan_data59.4465'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function main: error:
undefined reference to '.Lubsan_data65.4573'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function main: error:
undefined reference to '.Lubsan_data60.4483'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function main: error:
undefined reference to '.Lubsan_data57.4429'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function main: error:
undefined reference to '.Lubsan_data56.4411'
/tmp/ccMC55Z1.ltrans0.ltrans.o:ccMC55Z1.ltrans0.o:function main: error:
undefined reference to '.Lubsan_data55.4393'
collect2: error: ld returned 1 exit status


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug sanitizer/60535] [4.9 Regression] Link failure with -flto and -fsanitize=undefined
  2014-03-15  9:22 [Bug other/60535] New: [4.9 Regression] Link failure with -flto and -fsanitize=undefined trippels at gcc dot gnu.org
@ 2014-03-17  9:46 ` rguenth at gcc dot gnu.org
  2014-03-17 10:58 ` jakub at gcc dot gnu.org
                   ` (7 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: rguenth at gcc dot gnu.org @ 2014-03-17  9:46 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60535

Richard Biener <rguenth at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
   Target Milestone|---                         |4.9.0


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug sanitizer/60535] [4.9 Regression] Link failure with -flto and -fsanitize=undefined
  2014-03-15  9:22 [Bug other/60535] New: [4.9 Regression] Link failure with -flto and -fsanitize=undefined trippels at gcc dot gnu.org
  2014-03-17  9:46 ` [Bug sanitizer/60535] " rguenth at gcc dot gnu.org
@ 2014-03-17 10:58 ` jakub at gcc dot gnu.org
  2014-03-17 11:04 ` mpolacek at gcc dot gnu.org
                   ` (6 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-03-17 10:58 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60535

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2014-03-17
     Ever confirmed|0                           |1

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Reduced testcase (-flto -fsanitize=undefined -O2):

struct A { int c; };
A *a;
int b = a->c;

int
main ()
{
}


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug sanitizer/60535] [4.9 Regression] Link failure with -flto and -fsanitize=undefined
  2014-03-15  9:22 [Bug other/60535] New: [4.9 Regression] Link failure with -flto and -fsanitize=undefined trippels at gcc dot gnu.org
  2014-03-17  9:46 ` [Bug sanitizer/60535] " rguenth at gcc dot gnu.org
  2014-03-17 10:58 ` jakub at gcc dot gnu.org
@ 2014-03-17 11:04 ` mpolacek at gcc dot gnu.org
  2014-03-17 13:09 ` [Bug sanitizer/60535] " trippels at gcc dot gnu.org
                   ` (5 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2014-03-17 11:04 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60535

Marek Polacek <mpolacek at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |mpolacek at gcc dot gnu.org

--- Comment #2 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
Yeah, that is the reason why we run ubsan tests with dg-skip-if "" { *-*-* } {
"-flto" } { "" }.  I don't think it's a regression, it never worked.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug sanitizer/60535] Link failure with -flto and -fsanitize=undefined
  2014-03-15  9:22 [Bug other/60535] New: [4.9 Regression] Link failure with -flto and -fsanitize=undefined trippels at gcc dot gnu.org
                   ` (2 preceding siblings ...)
  2014-03-17 11:04 ` mpolacek at gcc dot gnu.org
@ 2014-03-17 13:09 ` trippels at gcc dot gnu.org
  2014-03-17 14:04 ` jakub at gcc dot gnu.org
                   ` (4 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: trippels at gcc dot gnu.org @ 2014-03-17 13:09 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60535

Markus Trippelsdorf <trippels at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|[4.9 Regression] Link       |Link failure with -flto and
                   |failure with -flto and      |-fsanitize=undefined
                   |-fsanitize=undefined        |
           Severity|normal                      |enhancement


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug sanitizer/60535] Link failure with -flto and -fsanitize=undefined
  2014-03-15  9:22 [Bug other/60535] New: [4.9 Regression] Link failure with -flto and -fsanitize=undefined trippels at gcc dot gnu.org
                   ` (3 preceding siblings ...)
  2014-03-17 13:09 ` [Bug sanitizer/60535] " trippels at gcc dot gnu.org
@ 2014-03-17 14:04 ` jakub at gcc dot gnu.org
  2014-03-17 14:14 ` rguenth at gcc dot gnu.org
                   ` (3 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-03-17 14:04 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60535

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
           Assignee|unassigned at gcc dot gnu.org      |jakub at gcc dot gnu.org

--- Comment #3 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Created attachment 32373
  --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=32373&action=edit
gcc49-pr60535.patch

Untested fix.

There are 3 remaining tests I haven't removed the dg-skip-if for yet:
c-c++-common/ubsan/null-4.c
c-c++-common/ubsan/overflow-int128.c

These 2 fail because with -flto we get <unknown> type names instead of say
complex double or int128_t (if I remember it well).  Dunno if there is anything
that can be done about it though.

g++.dg/ubsan/pr59437.C

This one shows a bug either in the -fvtable-* verification stuff, or in cgraph,
but doesn't look related to ubsan:

==27993== Invalid write of size 8
==27993==    at 0x89AEEC: bitmap_initialize_stat(bitmap_head*, bitmap_obstack*)
(bitmap.h:277)
==27993==    by 0x89BA7C: bitmap_obstack_alloc_stat(bitmap_obstack*)
(bitmap.c:376)
==27993==    by 0xDCB7B2:
mark_def_dom_walker::mark_def_dom_walker(cdi_direction) (tree-into-ssa.c:2234)
==27993==    by 0xDCBA80: rewrite_into_ssa() (tree-into-ssa.c:2331)
==27993==    by 0xDCBD70: (anonymous namespace)::pass_build_ssa::execute()
(tree-into-ssa.c:2403)
==27993==    by 0xC56F9D: execute_one_pass(opt_pass*) (passes.c:2229)
==27993==    by 0xC571B6: execute_pass_list(opt_pass*) (passes.c:2282)
==27993==    by 0xC4B58E: gcc::pass_manager::execute_early_local_passes()
(passes.c:135)
==27993==    by 0x92BCA4: cgraph_process_new_functions() (cgraphunit.c:338)
==27993==    by 0x80DDE3: vtv_generate_init_routine()
(vtable-class-hierarchy.c:1191)
==27993==    by 0x6B534E: cp_write_global_declarations() (decl2.c:4619)
==27993==    by 0xD42091: compile_file() (toplev.c:562)
==27993==  Address 0xbc0cdf0 is 96 bytes inside a block of size 4,064 free'd
==27993==    at 0x4A07577: free (in
/usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
==27993==    by 0x3C5FA84857: obstack_free (in /usr/lib64/libc-2.18.so)
==27993==    by 0x89B901: bitmap_obstack_release(bitmap_obstack*)
(bitmap.c:358)
==27993==    by 0x92C95C: analyze_function(cgraph_node*) (cgraphunit.c:665)
==27993==    by 0x92BC0B: cgraph_process_new_functions() (cgraphunit.c:334)
==27993==    by 0x80DDE3: vtv_generate_init_routine()
(vtable-class-hierarchy.c:1191)
==27993==    by 0x6B534E: cp_write_global_declarations() (decl2.c:4619)
==27993==    by 0xD42091: compile_file() (toplev.c:562)
==27993==    by 0xD441E9: do_compile() (toplev.c:1914)
==27993==    by 0xD44354: toplev_main(int, char**) (toplev.c:1990)
==27993==    by 0x14BD71B: main (main.c:36)

Apparently this is related to the default obstack freeing and use after free,
either vtable*.c calls cgraph at a pointer where it is not supposed to (or
needs to conditionalize it on cgraph_state), or cgraph doesn't handle nesting
properly.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug sanitizer/60535] Link failure with -flto and -fsanitize=undefined
  2014-03-15  9:22 [Bug other/60535] New: [4.9 Regression] Link failure with -flto and -fsanitize=undefined trippels at gcc dot gnu.org
                   ` (4 preceding siblings ...)
  2014-03-17 14:04 ` jakub at gcc dot gnu.org
@ 2014-03-17 14:14 ` rguenth at gcc dot gnu.org
  2014-03-17 14:36 ` mpolacek at gcc dot gnu.org
                   ` (2 subsequent siblings)
  8 siblings, 0 replies; 10+ messages in thread
From: rguenth at gcc dot gnu.org @ 2014-03-17 14:14 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60535

--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #3)
> Created attachment 32373 [details]
> gcc49-pr60535.patch
> 
> Untested fix.
> 
> There are 3 remaining tests I haven't removed the dg-skip-if for yet:
> c-c++-common/ubsan/null-4.c
> c-c++-common/ubsan/overflow-int128.c
> 
> These 2 fail because with -flto we get <unknown> type names instead of say
> complex double or int128_t (if I remember it well).  Dunno if there is
> anything that can be done about it though.

You need to amend lto/lto-lang.c:lto_init with more NAME_TYPEs (basically
cover all global trees with a name we'd use for LTO - which would be
matching the C frontend).


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug sanitizer/60535] Link failure with -flto and -fsanitize=undefined
  2014-03-15  9:22 [Bug other/60535] New: [4.9 Regression] Link failure with -flto and -fsanitize=undefined trippels at gcc dot gnu.org
                   ` (5 preceding siblings ...)
  2014-03-17 14:14 ` rguenth at gcc dot gnu.org
@ 2014-03-17 14:36 ` mpolacek at gcc dot gnu.org
  2014-03-18 14:57 ` jakub at gcc dot gnu.org
  2014-03-18 15:03 ` jakub at gcc dot gnu.org
  8 siblings, 0 replies; 10+ messages in thread
From: mpolacek at gcc dot gnu.org @ 2014-03-17 14:36 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60535

--- Comment #5 from Marek Polacek <mpolacek at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #3)

> g++.dg/ubsan/pr59437.C
> 
> This one shows a bug either in the -fvtable-* verification stuff, or in
> cgraph, but doesn't look related to ubsan:
> 
> ==27993== Invalid write of size 8
> ==27993==    at 0x89AEEC: bitmap_initialize_stat(bitmap_head*,
> bitmap_obstack*) (bitmap.h:277)
> ==27993==    by 0x89BA7C: bitmap_obstack_alloc_stat(bitmap_obstack*)
> (bitmap.c:376)
> ==27993==    by 0xDCB7B2:
> mark_def_dom_walker::mark_def_dom_walker(cdi_direction)
> (tree-into-ssa.c:2234)
> ==27993==    by 0xDCBA80: rewrite_into_ssa() (tree-into-ssa.c:2331)
> ==27993==    by 0xDCBD70: (anonymous namespace)::pass_build_ssa::execute()
> (tree-into-ssa.c:2403)
> ==27993==    by 0xC56F9D: execute_one_pass(opt_pass*) (passes.c:2229)
> ==27993==    by 0xC571B6: execute_pass_list(opt_pass*) (passes.c:2282)
> ==27993==    by 0xC4B58E: gcc::pass_manager::execute_early_local_passes()
> (passes.c:135)
> ==27993==    by 0x92BCA4: cgraph_process_new_functions() (cgraphunit.c:338)
> ==27993==    by 0x80DDE3: vtv_generate_init_routine()
> (vtable-class-hierarchy.c:1191)
> ==27993==    by 0x6B534E: cp_write_global_declarations() (decl2.c:4619)
> ==27993==    by 0xD42091: compile_file() (toplev.c:562)
> ==27993==  Address 0xbc0cdf0 is 96 bytes inside a block of size 4,064 free'd
> ==27993==    at 0x4A07577: free (in
> /usr/lib64/valgrind/vgpreload_memcheck-amd64-linux.so)
> ==27993==    by 0x3C5FA84857: obstack_free (in /usr/lib64/libc-2.18.so)
> ==27993==    by 0x89B901: bitmap_obstack_release(bitmap_obstack*)
> (bitmap.c:358)
> ==27993==    by 0x92C95C: analyze_function(cgraph_node*) (cgraphunit.c:665)
> ==27993==    by 0x92BC0B: cgraph_process_new_functions() (cgraphunit.c:334)
> ==27993==    by 0x80DDE3: vtv_generate_init_routine()
> (vtable-class-hierarchy.c:1191)
> ==27993==    by 0x6B534E: cp_write_global_declarations() (decl2.c:4619)
> ==27993==    by 0xD42091: compile_file() (toplev.c:562)
> ==27993==    by 0xD441E9: do_compile() (toplev.c:1914)
> ==27993==    by 0xD44354: toplev_main(int, char**) (toplev.c:1990)
> ==27993==    by 0x14BD71B: main (main.c:36)
> 
> Apparently this is related to the default obstack freeing and use after
> free, either vtable*.c calls cgraph at a pointer where it is not supposed to
> (or needs to conditionalize it on cgraph_state), or cgraph doesn't handle
> nesting properly.

I think this is PR59441.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug sanitizer/60535] Link failure with -flto and -fsanitize=undefined
  2014-03-15  9:22 [Bug other/60535] New: [4.9 Regression] Link failure with -flto and -fsanitize=undefined trippels at gcc dot gnu.org
                   ` (6 preceding siblings ...)
  2014-03-17 14:36 ` mpolacek at gcc dot gnu.org
@ 2014-03-18 14:57 ` jakub at gcc dot gnu.org
  2014-03-18 15:03 ` jakub at gcc dot gnu.org
  8 siblings, 0 replies; 10+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-03-18 14:57 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60535

--- Comment #6 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Author: jakub
Date: Tue Mar 18 14:56:23 2014
New Revision: 208651

URL: http://gcc.gnu.org/viewcvs?rev=208651&root=gcc&view=rev
Log:
    PR sanitizer/60535
    * ubsan.c (ubsan_type_descriptor, ubsan_create_data): Call
    varpool_finalize_decl instead of rest_of_decl_compilation.
lto/
    * lto-lang.c (lto_init): Add NAME_TYPE for int128_integer_type_node
    and complex_{float,{,long_}double}_type_node.
testsuite/
    * c-c++-common/ubsan/null-1.c: Don't skip if -flto.
    * c-c++-common/ubsan/null-2.c: Likewise.
    * c-c++-common/ubsan/null-3.c: Likewise.
    * c-c++-common/ubsan/null-4.c: Likewise.
    * c-c++-common/ubsan/null-5.c: Likewise.
    * c-c++-common/ubsan/null-6.c: Likewise.
    * c-c++-common/ubsan/null-7.c: Likewise.
    * c-c++-common/ubsan/null-8.c: Likewise.
    * c-c++-common/ubsan/null-9.c: Likewise.
    * c-c++-common/ubsan/null-10.c: Likewise.
    * c-c++-common/ubsan/null-11.c: Likewise.
    * c-c++-common/ubsan/overflow-1.c: Likewise.
    * c-c++-common/ubsan/overflow-2.c: Likewise.
    * c-c++-common/ubsan/overflow-add-1.c: Likewise.
    * c-c++-common/ubsan/overflow-add-2.c: Likewise.
    * c-c++-common/ubsan/overflow-int128.c: Likewise.
    * c-c++-common/ubsan/overflow-mul-1.c: Likewise.
    * c-c++-common/ubsan/overflow-mul-2.c: Likewise.
    * c-c++-common/ubsan/overflow-mul-3.c: Likewise.
    * c-c++-common/ubsan/overflow-mul-4.c: Likewise.
    * c-c++-common/ubsan/overflow-negate-1.c: Likewise.
    * c-c++-common/ubsan/overflow-negate-2.c: Likewise.
    * c-c++-common/ubsan/overflow-sub-1.c: Likewise.
    * c-c++-common/ubsan/overflow-sub-2.c: Likewise.
    * c-c++-common/ubsan/pr59333.c: Likewise.
    * c-c++-common/ubsan/pr59503.c: Likewise.
    * c-c++-common/ubsan/pr59667.c: Likewise.
    * c-c++-common/ubsan/undefined-1.c: Likewise.
    * g++.dg/ubsan/pr59250.C: Likewise.
    * g++.dg/ubsan/pr59306.C: Likewise.

Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/lto/ChangeLog
    trunk/gcc/lto/lto-lang.c
    trunk/gcc/testsuite/ChangeLog
    trunk/gcc/testsuite/c-c++-common/ubsan/null-1.c
    trunk/gcc/testsuite/c-c++-common/ubsan/null-10.c
    trunk/gcc/testsuite/c-c++-common/ubsan/null-11.c
    trunk/gcc/testsuite/c-c++-common/ubsan/null-2.c
    trunk/gcc/testsuite/c-c++-common/ubsan/null-3.c
    trunk/gcc/testsuite/c-c++-common/ubsan/null-4.c
    trunk/gcc/testsuite/c-c++-common/ubsan/null-5.c
    trunk/gcc/testsuite/c-c++-common/ubsan/null-6.c
    trunk/gcc/testsuite/c-c++-common/ubsan/null-7.c
    trunk/gcc/testsuite/c-c++-common/ubsan/null-8.c
    trunk/gcc/testsuite/c-c++-common/ubsan/null-9.c
    trunk/gcc/testsuite/c-c++-common/ubsan/overflow-1.c
    trunk/gcc/testsuite/c-c++-common/ubsan/overflow-2.c
    trunk/gcc/testsuite/c-c++-common/ubsan/overflow-add-1.c
    trunk/gcc/testsuite/c-c++-common/ubsan/overflow-add-2.c
    trunk/gcc/testsuite/c-c++-common/ubsan/overflow-int128.c
    trunk/gcc/testsuite/c-c++-common/ubsan/overflow-mul-1.c
    trunk/gcc/testsuite/c-c++-common/ubsan/overflow-mul-2.c
    trunk/gcc/testsuite/c-c++-common/ubsan/overflow-mul-3.c
    trunk/gcc/testsuite/c-c++-common/ubsan/overflow-mul-4.c
    trunk/gcc/testsuite/c-c++-common/ubsan/overflow-negate-1.c
    trunk/gcc/testsuite/c-c++-common/ubsan/overflow-negate-2.c
    trunk/gcc/testsuite/c-c++-common/ubsan/overflow-sub-1.c
    trunk/gcc/testsuite/c-c++-common/ubsan/overflow-sub-2.c
    trunk/gcc/testsuite/c-c++-common/ubsan/pr59333.c
    trunk/gcc/testsuite/c-c++-common/ubsan/pr59503.c
    trunk/gcc/testsuite/c-c++-common/ubsan/pr59667.c
    trunk/gcc/testsuite/c-c++-common/ubsan/undefined-1.c
    trunk/gcc/testsuite/g++.dg/ubsan/pr59250.C
    trunk/gcc/testsuite/g++.dg/ubsan/pr59306.C
    trunk/gcc/ubsan.c


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [Bug sanitizer/60535] Link failure with -flto and -fsanitize=undefined
  2014-03-15  9:22 [Bug other/60535] New: [4.9 Regression] Link failure with -flto and -fsanitize=undefined trippels at gcc dot gnu.org
                   ` (7 preceding siblings ...)
  2014-03-18 14:57 ` jakub at gcc dot gnu.org
@ 2014-03-18 15:03 ` jakub at gcc dot gnu.org
  8 siblings, 0 replies; 10+ messages in thread
From: jakub at gcc dot gnu.org @ 2014-03-18 15:03 UTC (permalink / raw)
  To: gcc-bugs

http://gcc.gnu.org/bugzilla/show_bug.cgi?id=60535

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|ASSIGNED                    |RESOLVED
         Resolution|---                         |FIXED

--- Comment #7 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Should be fixed now.


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2014-03-18 15:03 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-03-15  9:22 [Bug other/60535] New: [4.9 Regression] Link failure with -flto and -fsanitize=undefined trippels at gcc dot gnu.org
2014-03-17  9:46 ` [Bug sanitizer/60535] " rguenth at gcc dot gnu.org
2014-03-17 10:58 ` jakub at gcc dot gnu.org
2014-03-17 11:04 ` mpolacek at gcc dot gnu.org
2014-03-17 13:09 ` [Bug sanitizer/60535] " trippels at gcc dot gnu.org
2014-03-17 14:04 ` jakub at gcc dot gnu.org
2014-03-17 14:14 ` rguenth at gcc dot gnu.org
2014-03-17 14:36 ` mpolacek at gcc dot gnu.org
2014-03-18 14:57 ` jakub at gcc dot gnu.org
2014-03-18 15:03 ` jakub at gcc dot gnu.org

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).