This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Add -gstrict-dwarf


On Tue, Sep 22, 2009 at 9:04 AM, Jakub Jelinek <jakub@redhat.com> wrote:
> Hi!
>
> Apparently some parts of Apple toolchain crash when seeing recent DWARF
> opcodes.
> This patch is a workaround for people with buggy closed source tools.
> Generally, GCC has been emitting DWARF3 opcodes etc. with -gdwarf-2
> when it doesn't hurt debugging experience with older debuginfo consumers
> that don't understand the opcodes etc. - say if a variable location or type
> can be only described using DWARF3 opcodes, if older tools don't grok, they
> will just not be able to print that variable, but as we have no other way
> how to express it, it wouldn't be able to print it if we didn't emit DWARF3
> opcodes either. ?Only when we can choose (a good example is e.g.
> DW_OP_call_frame_cfa vs. huge location expression list), we check
> dwarf_version.
> This patch introduces -gstrict-dwarf option which will disable this
> behavior, with -gdwarf-2 -gno-strict-dwarf no DWARF3 nor DWARF4 opcode etc.
> will be used, similarly for -gdwarf-3 -gno-strict-dwarf.
> It is expected that darwin will default to that option.
>
> Bootstrapped/regtested on x86_64-linux and i686-linux, both normally and
> with Init(1) on gno-strict-dwarf. ?In the latter case I've verified neither
> cc1plus nor libgfortan.so.3.0.0 contain any DW_OP_{implicit,stack}_value
> opcodes (nor DWARF3 ones).
>
> The patch doesn't guard uses of DWARF3 DW_CFA_* additions, all other types
> of DWARF3 / DWARF4 additions should be guarded.

Ok if it passes bootstrap and regtest.

Thanks,
Richard.

> 2009-09-22 ?Jakub Jelinek ?<jakub@redhat.com>
>
> ? ? ? ?PR bootstrap/41405
> ? ? ? ?* dwarf2out.c (base_type_die, record_type_tag, gen_subprogram_die,
> ? ? ? ?add_call_src_coords_attributes, add_high_low_attributes,
> ? ? ? ?gen_compile_unit_die, gen_type_die_with_usage force_decl_die,
> ? ? ? ?gen_decl_die, dwarf2out_imported_module_or_decl_1, dwarf2out_finish,
> ? ? ? ?dwarf2out_imported_module_or_decl): Avoid using DWARF3 additions
> ? ? ? ?when -gdwarf-2 -gstrict-dwarf.
> ? ? ? ?(loc_list_from_tree): Likewise. ?Avoid using DWARF4 additions when
> ? ? ? ?-gdwarf-[23] -gstrict-dwarf.
> ? ? ? ?(address_of_int_loc_descriptor, loc_descriptor,
> ? ? ? ?loc_list_for_address_of_addr_expr_of_indirect_ref): Avoid using
> ? ? ? ?DWARF4 additions when -gdwarf-[23] -gstrict-dwarf.
> ? ? ? ?* common.opt (gno-strict-dwarf, gstrict-dwarf): New options.
>
> ? ? ? ?* gfortran.dg/debug/pr37738.f: Add -gno-strict-dwarf to dg-options.
> ? ? ? ?* gfortran.dg/debug/pr35154-dwarf2.f: Likewise.
> ? ? ? ?* g++.dg/debug/dwarf2/explicit-constructor.C: Likewise.
> ? ? ? ?* g++.dg/debug/dwarf2/imported-module-2.C: Likewise.
> ? ? ? ?* g++.dg/debug/dwarf2/imported-module-3.C: Likewise.
> ? ? ? ?* g++.dg/debug/dwarf2/imported-module-4.C: Likewise.
> ? ? ? ?* g++.dg/debug/dwarf2/namespace-1.C: Likewise.
> ? ? ? ?* objc.dg/dwarf-2.m: Likewise.
>
> --- gcc/common.opt.jj ? 2009-09-17 22:28:55.000000000 +0200
> +++ gcc/common.opt ? ? ?2009-09-22 01:02:35.000000000 +0200
> @@ -1472,6 +1472,14 @@ gstabs+
> ?Common JoinedOrMissing Negative(gvms)
> ?Generate debug information in extended STABS format
>
> +gno-strict-dwarf
> +Common RejectNegative Var(dwarf_strict,0)
> +Emit DWARF additions beyond selected version
> +
> +gstrict-dwarf
> +Common Report RejectNegative Var(dwarf_strict,1) VarExists
> +Don't emit DWARF additions beyond selected version
> +
> ?gtoggle
> ?Common Report Var(flag_gtoggle)
> ?Toggle debug information generation
> --- gcc/dwarf2out.c.jj ?2009-09-21 17:50:45.000000000 +0200
> +++ gcc/dwarf2out.c ? ? 2009-09-21 23:46:59.000000000 +0200
> @@ -10232,13 +10232,20 @@ base_type_die (tree type)
>
> ? ? case REAL_TYPE:
> ? ? ? if (DECIMAL_FLOAT_MODE_P (TYPE_MODE (type)))
> - ? ? ? encoding = DW_ATE_decimal_float;
> + ? ? ? {
> + ? ? ? ? if (dwarf_version >= 3 || !dwarf_strict)
> + ? ? ? ? ? encoding = DW_ATE_decimal_float;
> + ? ? ? ? else
> + ? ? ? ? ? encoding = DW_ATE_lo_user;
> + ? ? ? }
> ? ? ? else
> ? ? ? ?encoding = DW_ATE_float;
> ? ? ? break;
>
> ? ? case FIXED_POINT_TYPE:
> - ? ? ?if (TYPE_UNSIGNED (type))
> + ? ? ?if (!(dwarf_version >= 3 || !dwarf_strict))
> + ? ? ? encoding = DW_ATE_lo_user;
> + ? ? ?else if (TYPE_UNSIGNED (type))
> ? ? ? ?encoding = DW_ATE_unsigned_fixed;
> ? ? ? else
> ? ? ? ?encoding = DW_ATE_signed_fixed;
> @@ -10894,6 +10901,9 @@ address_of_int_loc_descriptor (int size,
> ? int litsize;
> ? dw_loc_descr_ref loc_result = NULL;
>
> + ?if (!(dwarf_version >= 4 || !dwarf_strict))
> + ? ?return NULL;
> +
> ? if (i >= 0)
> ? ? {
> ? ? ? if (i <= 31)
> @@ -11843,7 +11853,7 @@ loc_descriptor (rtx rtl, enum machine_mo
> ? ? ? break;
>
> ? ? case CONST_DOUBLE:
> - ? ? ?if (mode != VOIDmode)
> + ? ? ?if (mode != VOIDmode && (dwarf_version >= 4 || !dwarf_strict))
> ? ? ? ?{
> ? ? ? ? ?/* Note that a CONST_DOUBLE rtx could represent either an integer
> ? ? ? ? ? ? or a floating-point constant. ?A CONST_DOUBLE is used whenever
> @@ -11874,7 +11884,7 @@ loc_descriptor (rtx rtl, enum machine_mo
> ? ? ? break;
>
> ? ? case CONST_VECTOR:
> - ? ? ?if (mode != VOIDmode)
> + ? ? ?if (mode != VOIDmode && (dwarf_version >= 4 || !dwarf_strict))
> ? ? ? ?{
> ? ? ? ? ?unsigned int elt_size = GET_MODE_UNIT_SIZE (GET_MODE (rtl));
> ? ? ? ? ?unsigned int length = CONST_VECTOR_NUNITS (rtl);
> @@ -11962,7 +11972,8 @@ loc_descriptor (rtx rtl, enum machine_mo
> ? ? ? ? ?&& SYMBOL_REF_TLS_MODEL (rtl) != TLS_MODEL_NONE)
> ? ? ? ?break;
> ? ? case LABEL_REF:
> - ? ? ?if (mode != VOIDmode && GET_MODE_SIZE (mode) == DWARF2_ADDR_SIZE)
> + ? ? ?if (mode != VOIDmode && GET_MODE_SIZE (mode) == DWARF2_ADDR_SIZE
> + ? ? ? ? && (dwarf_version >= 4 || !dwarf_strict))
> ? ? ? ?{
> ? ? ? ? ?loc_result = new_loc_descr (DW_OP_implicit_value,
> ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?DWARF2_ADDR_SIZE, 0);
> @@ -11974,7 +11985,8 @@ loc_descriptor (rtx rtl, enum machine_mo
>
> ? ? default:
> ? ? ? if (GET_MODE_CLASS (mode) == MODE_INT && GET_MODE (rtl) == mode
> - ? ? ? ? && GET_MODE_SIZE (GET_MODE (rtl)) <= DWARF2_ADDR_SIZE)
> + ? ? ? ? && GET_MODE_SIZE (GET_MODE (rtl)) <= DWARF2_ADDR_SIZE
> + ? ? ? ? && (dwarf_version >= 4 || !dwarf_strict))
> ? ? ? ?{
> ? ? ? ? ?/* Value expression. ?*/
> ? ? ? ? ?loc_result = mem_loc_descriptor (rtl, VOIDmode, initialized);
> @@ -12346,7 +12358,8 @@ loc_list_for_address_of_addr_expr_of_ind
> ? if (!offset && !bitpos)
> ? ? list_ret = loc_list_from_tree (TREE_OPERAND (obj, 0), toplev ? 2 : 1);
> ? else if (toplev
> - ? ? ? ? ?&& int_size_in_bytes (TREE_TYPE (loc)) <= DWARF2_ADDR_SIZE)
> + ? ? ? ? ?&& int_size_in_bytes (TREE_TYPE (loc)) <= DWARF2_ADDR_SIZE
> + ? ? ? ? ?&& (dwarf_version >= 4 || !dwarf_strict))
> ? ? {
> ? ? ? list_ret = loc_list_from_tree (TREE_OPERAND (obj, 0), 0);
> ? ? ? if (!list_ret)
> @@ -12482,7 +12495,8 @@ loc_list_from_tree (tree loc, int want_a
> ? ? ? ? ? ?}
> ? ? ? ? ?else
> ? ? ? ? ? ?{
> - ? ? ? ? ? ? if (!targetm.emutls.debug_form_tls_address)
> + ? ? ? ? ? ? if (!targetm.emutls.debug_form_tls_address
> + ? ? ? ? ? ? ? ? || !(dwarf_version >= 3 || !dwarf_strict))
> ? ? ? ? ? ? ? ?return 0;
> ? ? ? ? ? ? ?loc = emutls_decl (loc);
> ? ? ? ? ? ? ?first_op = DW_OP_addr;
> @@ -12885,7 +12899,8 @@ loc_list_from_tree (tree loc, int want_a
> ? if (!ret && !list_ret)
> ? ? return 0;
>
> - ?if (want_address == 2 && !have_address)
> + ?if (want_address == 2 && !have_address
> + ? ? ?&& (dwarf_version >= 4 || !dwarf_strict))
> ? ? {
> ? ? ? if (int_size_in_bytes (TREE_TYPE (loc)) > DWARF2_ADDR_SIZE)
> ? ? ? ?{
> @@ -15275,7 +15290,9 @@ record_type_tag (tree type)
> ? ? ? return DW_TAG_class_type;
>
> ? ? case RECORD_IS_INTERFACE:
> - ? ? ?return DW_TAG_interface_type;
> + ? ? ?if (dwarf_version >= 3 || !dwarf_strict)
> + ? ? ? return DW_TAG_interface_type;
> + ? ? ?return DW_TAG_structure_type;
>
> ? ? default:
> ? ? ? gcc_unreachable ();
> @@ -15734,7 +15751,8 @@ gen_subprogram_die (tree decl, dw_die_re
>
> ? ? ? ? ?/* If this is an explicit function declaration then generate
> ? ? ? ? ? ? a DW_AT_explicit attribute. ?*/
> - ? ? ? ? ?if (lang_hooks.decls.function_decl_explicit_p (decl))
> + ? ? ? ? if (lang_hooks.decls.function_decl_explicit_p (decl)
> + ? ? ? ? ? ? && (dwarf_version >= 3 || !dwarf_strict))
> ? ? ? ? ? ?add_AT_flag (subr_die, DW_AT_explicit, 1);
>
> ? ? ? ? ?/* The first time we see a member function, it is in the context of
> @@ -16282,8 +16300,11 @@ add_call_src_coords_attributes (tree stm
> ?{
> ? expanded_location s = expand_location (BLOCK_SOURCE_LOCATION (stmt));
>
> - ?add_AT_file (die, DW_AT_call_file, lookup_filename (s.file));
> - ?add_AT_unsigned (die, DW_AT_call_line, s.line);
> + ?if (dwarf_version >= 3 || !dwarf_strict)
> + ? ?{
> + ? ? ?add_AT_file (die, DW_AT_call_file, lookup_filename (s.file));
> + ? ? ?add_AT_unsigned (die, DW_AT_call_line, s.line);
> + ? ?}
> ?}
>
>
> @@ -16295,7 +16316,8 @@ add_high_low_attributes (tree stmt, dw_d
> ?{
> ? char label[MAX_ARTIFICIAL_LABEL_BYTES];
>
> - ?if (BLOCK_FRAGMENT_CHAIN (stmt))
> + ?if (BLOCK_FRAGMENT_CHAIN (stmt)
> + ? ? ?&& (dwarf_version >= 3 || !dwarf_strict))
> ? ? {
> ? ? ? tree chain;
>
> @@ -16497,24 +16519,26 @@ gen_compile_unit_die (const char *filena
>
> ? add_AT_string (die, DW_AT_producer, producer);
>
> + ?language = DW_LANG_C89;
> ? if (strcmp (language_string, "GNU C++") == 0)
> ? ? language = DW_LANG_C_plus_plus;
> - ?else if (strcmp (language_string, "GNU Ada") == 0)
> - ? ?language = DW_LANG_Ada95;
> ? else if (strcmp (language_string, "GNU F77") == 0)
> ? ? language = DW_LANG_Fortran77;
> - ?else if (strcmp (language_string, "GNU Fortran") == 0)
> - ? ?language = DW_LANG_Fortran95;
> ? else if (strcmp (language_string, "GNU Pascal") == 0)
> ? ? language = DW_LANG_Pascal83;
> - ?else if (strcmp (language_string, "GNU Java") == 0)
> - ? ?language = DW_LANG_Java;
> - ?else if (strcmp (language_string, "GNU Objective-C") == 0)
> - ? ?language = DW_LANG_ObjC;
> - ?else if (strcmp (language_string, "GNU Objective-C++") == 0)
> - ? ?language = DW_LANG_ObjC_plus_plus;
> - ?else
> - ? ?language = DW_LANG_C89;
> + ?else if (dwarf_version >= 3 || !dwarf_strict)
> + ? ?{
> + ? ? ?if (strcmp (language_string, "GNU Ada") == 0)
> + ? ? ? language = DW_LANG_Ada95;
> + ? ? ?else if (strcmp (language_string, "GNU Fortran") == 0)
> + ? ? ? language = DW_LANG_Fortran95;
> + ? ? ?else if (strcmp (language_string, "GNU Java") == 0)
> + ? ? ? language = DW_LANG_Java;
> + ? ? ?else if (strcmp (language_string, "GNU Objective-C") == 0)
> + ? ? ? language = DW_LANG_ObjC;
> + ? ? ?else if (strcmp (language_string, "GNU Objective-C++") == 0)
> + ? ? ? language = DW_LANG_ObjC_plus_plus;
> + ? ?}
>
> ? add_AT_unsigned (die, DW_AT_language, language);
> ? return die;
> @@ -16794,7 +16818,8 @@ gen_type_die_with_usage (tree type, dw_d
> ? /* If this is an array type with hidden descriptor, handle it first. ?*/
> ? if (!TREE_ASM_WRITTEN (type)
> ? ? ? && lang_hooks.types.get_array_descr_info
> - ? ? ?&& lang_hooks.types.get_array_descr_info (type, &info))
> + ? ? ?&& lang_hooks.types.get_array_descr_info (type, &info)
> + ? ? ?&& (dwarf_version >= 3 || !dwarf_strict))
> ? ? {
> ? ? ? gen_descr_array_type_die (type, &info, context_die);
> ? ? ? TREE_ASM_WRITTEN (type) = 1;
> @@ -17178,7 +17203,11 @@ force_decl_die (tree decl)
> ? ? ? ? ?break;
>
> ? ? ? ?case NAMESPACE_DECL:
> - ? ? ? ? dwarf2out_decl (decl);
> + ? ? ? ? if (dwarf_version >= 3 || !dwarf_strict)
> + ? ? ? ? ? dwarf2out_decl (decl);
> + ? ? ? ? else
> + ? ? ? ? ? /* DWARF2 has neither DW_TAG_module, nor DW_TAG_namespace. ?*/
> + ? ? ? ? ? decl_die = comp_unit_die;
> ? ? ? ? ?break;
>
> ? ? ? ?default:
> @@ -17488,7 +17517,8 @@ gen_decl_die (tree decl, tree origin, dw
>
> ? ? case NAMESPACE_DECL:
> ? ? case IMPORTED_DECL:
> - ? ? ?gen_namespace_die (decl, context_die);
> + ? ? ?if (dwarf_version >= 3 || !dwarf_strict)
> + ? ? ? gen_namespace_die (decl, context_die);
> ? ? ? break;
>
> ? ? default:
> @@ -17586,9 +17616,14 @@ dwarf2out_imported_module_or_decl_1 (tre
> ? ? }
>
> ? if (TREE_CODE (decl) == NAMESPACE_DECL)
> - ? ?imported_die = new_die (DW_TAG_imported_module,
> - ? ? ? ? ? ? ? ? ? ? ? ? ? lexical_block_die,
> - ? ? ? ? ? ? ? ? ? ? ? ? ? lexical_block);
> + ? ?{
> + ? ? ?if (dwarf_version >= 3 || !dwarf_strict)
> + ? ? ? imported_die = new_die (DW_TAG_imported_module,
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? lexical_block_die,
> + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? lexical_block);
> + ? ? ?else
> + ? ? ? return;
> + ? ?}
> ? else
> ? ? imported_die = new_die (DW_TAG_imported_declaration,
> ? ? ? ? ? ? ? ? ? ? ? ? ? ?lexical_block_die,
> @@ -17629,6 +17664,10 @@ dwarf2out_imported_module_or_decl (tree
> ? ? ? && TYPE_P (context)
> ? ? ? && !should_emit_struct_debug (context, DINFO_USAGE_DIR_USE))
> ? ? return;
> +
> + ?if (!(dwarf_version >= 3 || !dwarf_strict))
> + ? ?return;
> +
> ? scope_die = get_context_die (context);
>
> ? if (child)
> @@ -18857,7 +18896,8 @@ dwarf2out_finish (const char *filename)
>
> ? /* We can only use the low/high_pc attributes if all of the code was
> ? ? ?in .text. ?*/
> - ?if (!have_multiple_function_sections)
> + ?if (!have_multiple_function_sections
> + ? ? ?|| !(dwarf_version >= 3 || !dwarf_strict))
> ? ? {
> ? ? ? add_AT_lbl_id (comp_unit_die, DW_AT_low_pc, text_section_label);
> ? ? ? add_AT_lbl_id (comp_unit_die, DW_AT_high_pc, text_end_label);
> --- gcc/testsuite/gfortran.dg/debug/pr37738.f.jj ? ? ? ?2009-06-15 19:07:36.000000000 +0200
> +++ gcc/testsuite/gfortran.dg/debug/pr37738.f ? 2009-09-21 23:31:34.000000000 +0200
> @@ -2,7 +2,7 @@ C PR debug/37738
> ?C { dg-do compile }
> ?C { dg-skip-if "DWARF-2 only" { "*-*-*" } { "*" } { "-gdwarf-2" } }
> ?C { dg-skip-if "DWARF-2 only" { "*-*-*" } { "-g1" } { "" } }
> -C { dg-options "-dA" }
> +C { dg-options "-dA -gno-strict-dwarf" }
>
> ? ? ? subroutine a
> ? ? ? integer*4 a_i, c_i
> --- gcc/testsuite/gfortran.dg/debug/pr35154-dwarf2.f.jj 2009-06-15 19:07:36.000000000 +0200
> +++ gcc/testsuite/gfortran.dg/debug/pr35154-dwarf2.f ? ?2009-09-21 23:30:56.000000000 +0200
> @@ -2,7 +2,7 @@ C ? ? Test program for common block debu
> ?C { dg-do compile }
> ?C { dg-skip-if "DWARF-2 only" { "*-*-*" } { "*" } { "-gdwarf-2" } }
> ?C { dg-skip-if "DWARF-2 only" { "*-*-*" } { "-g1" } { "" } }
> -C { dg-options "-dA" }
> +C { dg-options "-dA -gno-strict-dwarf" }
> ? ? ? common i,j
> ? ? ? common /label/l,m
> ? ? ? i = 1
> --- gcc/testsuite/g++.dg/debug/dwarf2/explicit-constructor.C.jj 2009-03-27 22:42:40.000000000 +0100
> +++ gcc/testsuite/g++.dg/debug/dwarf2/explicit-constructor.C ? ?2009-09-21 23:33:09.000000000 +0200
> @@ -1,7 +1,7 @@
> ?// Contributed by Dodji Seketeli <dodji@redhat.com>
> ?// Origin: PR c++
> ?// { dg-do compile }
> -// { dg-options "-O -g -dA" }
> +// { dg-options "-O -g -dA -gno-strict-dwarf" }
> ?// { dg-final { scan-assembler-times "DW_AT_explicit" 2 } }
>
> ?struct Foo
> --- gcc/testsuite/g++.dg/debug/dwarf2/namespace-1.C.jj ?2009-09-09 18:09:47.000000000 +0200
> +++ gcc/testsuite/g++.dg/debug/dwarf2/namespace-1.C ? ? 2009-09-21 23:35:33.000000000 +0200
> @@ -1,6 +1,6 @@
> ?// Contributed by Dodji Seketeli <dodji@redhat.com>
> ?// Origin PR debug/41170
> -// { dg-options "-g -dA -fno-merge-debug-strings" }
> +// { dg-options "-g -dA -fno-merge-debug-strings -gno-strict-dwarf" }
> ?//
> ?// We want to test that there is a DW_TAG_namespace DIE DW_AT_name is set
> ?// to "not_emitted". That namespace die has a child DW_TAG_typedef DIE
> --- gcc/testsuite/g++.dg/debug/dwarf2/imported-module-3.C.jj ? ?2009-03-17 18:47:30.000000000 +0100
> +++ gcc/testsuite/g++.dg/debug/dwarf2/imported-module-3.C ? ? ? 2009-09-21 23:35:20.000000000 +0200
> @@ -1,6 +1,6 @@
> ?// PR debug/39379
> ?// { dg-do compile }
> -// { dg-options "-g -dA" }
> +// { dg-options "-g -dA -gno-strict-dwarf" }
> ?// { dg-final { scan-assembler "DW_TAG_imported_module" } ?}
>
> ?namespace A
> --- gcc/testsuite/g++.dg/debug/dwarf2/imported-module-2.C.jj ? ?2009-03-17 18:47:30.000000000 +0100
> +++ gcc/testsuite/g++.dg/debug/dwarf2/imported-module-2.C ? ? ? 2009-09-21 23:35:13.000000000 +0200
> @@ -1,7 +1,7 @@
> ?// Contributed by Dodji Seketeli <dodji@redhat.com>
> ?// Origin: PR debug/38390
> ?// { dg-do compile ?}
> -// { dg-options "-g -dA" }
> +// { dg-options "-g -dA -gno-strict-dwarf" }
> ?// { dg-final { scan-assembler "DW_TAG_imported_module" } ?}
>
> ?namespace A
> --- gcc/testsuite/g++.dg/debug/dwarf2/imported-module-4.C.jj ? ?2009-03-17 18:47:30.000000000 +0100
> +++ gcc/testsuite/g++.dg/debug/dwarf2/imported-module-4.C ? ? ? 2009-09-21 23:35:25.000000000 +0200
> @@ -1,6 +1,6 @@
> ?// PR debug/39379
> ?// { dg-do compile }
> -// { dg-options "-g -dA" }
> +// { dg-options "-g -dA -gno-strict-dwarf" }
> ?// { dg-final { scan-assembler "DW_TAG_imported_module" } ?}
>
> ?namespace A
> --- gcc/testsuite/objc.dg/dwarf-2.m.jj ?2008-09-30 16:55:41.000000000 +0200
> +++ gcc/testsuite/objc.dg/dwarf-2.m ? ? 2009-09-21 23:36:19.000000000 +0200
> @@ -1,4 +1,4 @@
> -/* { dg-options "-gdwarf-2 -dA" } */
> +/* { dg-options "-gdwarf-2 -dA -gno-strict-dwarf" } */
> ?/* { dg-final { scan-assembler "0x10\[^0-9a-f\].*DW_AT_language" } } */
> ?/* { dg-skip-if "No Dwarf" { { *-*-aix* hppa*-*-hpux* } && { ! hppa*64*-*-* } } { "*" } { "" } } */
> ?int x;
>
> ? ? ? ?Jakub
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]