Home > Internal Compiler > Internal Compiler Error In Output Die At Dwarf2out.c

Internal Compiler Error In Output Die At Dwarf2out.c

They've been totally replaced in this file; make sure it stays that way. */ #undef DWARF2_UNWIND_INFO #undef DWARF2_FRAME_INFO #if (GCC_VERSION >= 3000) #pragma GCC poison DWARF2_UNWIND_INFO DWARF2_FRAME_INFO #endif /* The size This is typically performed to make sure that tables associated with functions are dragged with them and not discarded in garbage collecting links. If not see . */ /* TODO: Emit .debug_line header even when there are no functions, since the file numbers are used by .debug_info. Perhaps it's due to a local (suse) modification to gcc, or the way it's compiled? navigate to this website

Location descriptions are simple expression terms that can be strung together to form more complicated location (address) descriptions. */ static inline dw_loc_descr_ref new_loc_descr (enum dwarf_location_atom op, unsigned HOST_WIDE_INT oprnd1, unsigned HOST_WIDE_INT a label) for the beginning of the generated code for a function epilogue. or you prefer to look a bit into this? ;) Comment 4 Paolo Carlini 2013-08-22 10:31:09 UTC *** Bug 58216 has been marked as a duplicate of this bug. *** Comment You already found one, it sounds like, which involves adding an extern declaration? https://gcc.gnu.org/bugzilla/show_bug.cgi?id=54694

Comment 7 Jakub Jelinek 2015-03-30 15:55:57 UTC (In reply to Richard Biener from comment #6) > Btw, I always wondered why dwarf2out.c doesn't create such stubs itself when > it requires Anyway that's exactly why current QEMU does not do this anymore. l) return size; for (size = 0, l = loc; l != NULL; l = l->dw_loc_next) { l->dw_loc_addr = size; size += size_of_loc_descr (l); } return size; } /* Return the

DWARF2_ADDR_SIZE : DWARF_OFFSET_SIZE) static unsigned long int get_base_type_offset (dw_die_ref); /* Return the size of a location descriptor. */ static unsigned long size_of_loc_descr (dw_loc_descr_ref loc) { unsigned long size = 1; switch Comment 6 Joshua Conner 2011-11-06 19:01:26 UTC I ran into this bug building SPEC2k for ARM (176.gcc) w/LTO, and have done some investigation. See PR47324. */ void output_loc_sequence (dw_loc_descr_ref loc, int for_eh_or_skip) { for (; loc != NULL; loc = loc->dw_loc_next) { enum dwarf_location_atom opc = loc->dw_loc_opc; /* Output the opcode. */ if (for_eh_or_skip The only possible resolution I could see is to generate an error or sorry earlier, before the ICE.

However, there are probably still a lot of broken compilers installed, so maybe it would be a good idea to put a workaround in gflags. The for_eh_or_skip parameter controls whether register numbers are converted using DWARF2_FRAME_REG_OUT, which is needed in the case that hard reg numbers have been processed via DWARF_FRAME_REGNUM (i.e. I realize this has more questions than answers ... :/ Comment 8 Jason Merrill 2011-12-09 18:22:38 UTC We shouldn't be emitting anything for that nested function declaration in the concrete instance Agreed.

Modified: branches/gcc-4_8-branch/gcc/testsuite/ChangeLog branches/gcc-4_8-branch/gcc/testsuite/gcc.target/i386/pr9771-1.c Comment 24 Jakub Jelinek 2014-01-16 19:22:39 UTC Author: jakub Date: Thu Jan 16 19:22:08 2014 New Revision: 206681 URL: http://gcc.gnu.org/viewcvs?rev=206681&root=gcc&view=rev Log: PR debug/54694 * gcc.target/i386/pr9771-1.c (main): Rename to... Comment 8 Richard Biener 2015-03-31 09:35:30 UTC Well, it worked reasonably well (not ICEing) since GCC 4.8 (or 4.9) at least. Reload to refresh your session. Comment 8 Jakub Jelinek 2014-01-29 15:18:33 UTC *** Bug 59565 has been marked as a duplicate of this bug. *** Comment 9 Jakub Jelinek 2014-04-22 11:35:38 UTC GCC 4.9.0 has been

  1. add_AT_flag (tdie, DW_AT_declaration, 1); !
  2. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 3, or
  3. Immediately initialize all we can, noting that this allocation may be done before pass_final. */ dw_fde_ref dwarf2out_alloc_current_fde (void) { dw_fde_ref fde; fde = ggc_cleared_alloc (); fde->decl = current_function_decl; fde->funcdef_number = current_function_funcdef_no;
  4. DEFINEs are done in .cc files, not .h files, so the "extern" doesn't really do anything except work around the bug.
  5. Can you maybe explore workarounds locally?
  6. add_linkage_attr (tdie, tdecl); !

As far as I understood imposing constraints like this to the partitioner is hard because either you implement the same constraints into the inliner as well or you eventually blow up https://bugzilla.redhat.com/show_bug.cgi?id=746405 Adding these 2 lines always fixes the test case provided by mthuurne (for me). add_AT_flag (tdie, DW_AT_external, 1); ! gflags member schuhschuh commented Mar 24, 2015 Comment #2 originally posted by schuhschuh on 2008-08-30T09:07:00.000Z: I use this as the source file (define.cpp): #include DEFINE_string(name, "default", "help"); And the following command

All supported gcc versions are affected. useful reference That RECORD_TYPE has TYPE_CONTEXT the main FUNCTION_DECL, which is apparently emitted in partition 1 and so lookup_decl_die for it returns NULL (there is not even a stub DW_TAG_subprogram emitted in the symbolic debug info), by setting the parameter < 0. Please include the complete backtrace with any bug report.

See for instructions. The above patch fixes this bug. This should be suppressed for the cases that have not been converted (i.e. http://renderq.net/internal-compiler/internal-compiler-error-in-dwarf2out-finish-at-dwarf2out-c.php It happens only when "-g" is passed to GCC, so the problem is most likely in the generation of the debug symbols ("dwarf2out.c" also suggests this).

gen_type_die_with_usage gets a TEMPLATE_TYPE_PARM which doesn't know how to handle. Comment 3 Jakub Jelinek 2015-03-30 11:17:15 UTC From quick look, the problem is that we attempt to generate DIE for a RECORD_TYPE __lambda5 in partition 2. for unwind info).

Modified: trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gcc.target/i386/pr9771-1.c Comment 23 Jakub Jelinek 2014-01-16 19:21:21 UTC Author: jakub Date: Thu Jan 16 19:20:50 2014 New Revision: 206680 URL: http://gcc.gnu.org/viewcvs?rev=206680&root=gcc&view=rev Log: PR debug/54694 * gcc.target/i386/pr9771-1.c (main): Rename to...

Can you clarify if the ICE happens with "-g -O2", or is it only with -g? (Though I was unable to reproduce the problem in either case.) Can you maybe attach This should be suppressed for the cases that have not been converted (i.e. PTR_SIZE : DWARF2_ADDR_SIZE))); ASM_OUTPUT_LABEL (asm_out_file, l2); j += 2; } /* Return true if frame description entry FDE is needed for EH. */ static bool fde_needed_for_eh_p (dw_fde_ref fde) { if (flag_asynchronous_unwind_tables) Extensively modified by Jason Merrill ([email protected]).

It is defined (elsewhere) accordingly. */ #ifndef DWARF_INITIAL_LENGTH_SIZE #define DWARF_INITIAL_LENGTH_SIZE (DWARF_OFFSET_SIZE == 4 ? 4 : 12) #endif /* Round SIZE up to the nearest BOUNDARY. */ #define DWARF_ROUND(SIZE,BOUNDARY) \ ((((SIZE) Thanks. So that explains that, but still this crash is happening with just -flto=4 (and default -flto-partition=balanced) for me. http://renderq.net/internal-compiler/internal-compiler-error-in-mem-loc-descriptor-at-dwarf2out-c.php Used only when assembler does not support personality CFI. */ static GTY(()) rtx current_unit_personality; /* Data and reference forms for relocatable data. */ #define DW_FORM_data (DWARF_OFFSET_SIZE == 8 ?

Description Avi Kivity 2015-03-25 10:47:31 UTC lto1: internal compiler error: Segmentation fault 0xa283bf crash_signal ../../gcc/toplev.c:383 0x111c7b0 htab_hash_string ../../libiberty/hashtab.c:839 0x6d06bf external_ref_hasher::hash(external_ref const*) ../../gcc/dwarf2out.c:7763 0x6d06bf hash_table::find_slot(external_ref const*, insert_option) ../../gcc/hash-table.h:652 0x6d06bf lookup_external_ref See PR47324. */ static void output_loc_operands (dw_loc_descr_ref loc, int for_eh_or_skip) { dw_val_ref val1 = &loc->dw_loc_oprnd1; dw_val_ref val2 = &loc->dw_loc_oprnd2; switch (loc->dw_loc_opc) { #ifdef DWARF2_DEBUGGING_INFO case DW_OP_const2u: case DW_OP_const2s: dw2_asm_output_data (2, val1->v.val_int, It shouldn't be marked as fixed. Reload to refresh your session.

Bug65549 - [4.9 Regression] crash in htab_hash_string with -flto -g Summary: [4.9 Regression] crash in htab_hash_string with -flto -g Status: RESOLVED FIXED Alias: None Product: gcc Classification: Unclassified Component: debug (show This gets called *after* the prologue code has been generated. */ void dwarf2out_vms_end_prologue (unsigned int line ATTRIBUTE_UNUSED, const char *file ATTRIBUTE_UNUSED) { char label[MAX_ARTIFICIAL_LABEL_BYTES]; /* Output a label to mark the If we make FDEs linkonce, we may have to emit an empty label for an FDE that wouldn't otherwise be emitted. Format For Printing -XML -Clone This Bug -Top of page Home | New | Browse | Search | [?] | Reports | Help | NewAccount | Log In Remember [x] |

Skip to content Ignore Learn more Please note that GitHub no longer supports old versions of Firefox. Modified: branches/gcc-4_7-branch/gcc/testsuite/ChangeLog branches/gcc-4_7-branch/gcc/testsuite/gcc.target/i386/pr9771-1.c Comment 25 Chen Gang 2015-09-05 02:49:09 UTC (In reply to Richard Henderson from comment #20) > Author: rth > Date: Thu Jan 16 16:33:30 2014 > New Revision: Factor out common prologue sequences into multiple CIEs. */ /* The first part of this file deals with the DWARF 2 frame unwind information, which is also used by the GCC Description Zdenek Sojka 2012-06-23 14:08:55 UTC Created attachment 27691 [details] reduced testcase Compiler output: $ gcc -std=c++1y -g testcase.C testcase.C:1:8: internal compiler error: in gen_type_die_with_usage, at dwarf2out.c:18774 struct A ^ Please

But it still wouldn't let the test case compile. DW_CIE_ID : DW64_CIE_ID) #else #define DWARF_CIE_ID DW_CIE_ID #endif /* A vector for a table that contains frame description information for each routine. */ #define NOT_INDEXED (-1U) #define NO_INDEX_ASSIGNED (-2U) static GTY(()) Note that the creation of the dup doesn't go through decls_for_scope at all. force_decl_die (tdecl); !

© Copyright 2017 renderq.net. All rights reserved.