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: output dwarf2 unwind info via asm directives


On Tue, Aug 5, 2008 at 10:45 AM, Richard Henderson <rth@twiddle.net> wrote:
> Having the compiler emit dwarf2 unwind info via assembler directives
> makes it possible to add those same directives to inline assembly,
> and have everything come out correct in the end.
>
> Tested on x86-64.
>
>
> r~
>
>
>
>        * Makefile.in (c-cppbuiltin.o): Depend on debug.h.
>        * c-cppbuiltin.c (c_cpp_builtins): Define __GCC_HAVE_DWARF2_CFI_ASM.
>        * doc/cpp.texi (__GCC_HAVE_DWARF2_CFI_ASM): Document it.
>        * common.opt (fdwarf2-cfi-asm): New.
>        * configure.ac (HAVE_GAS_CFI_DIRECTIVE): New.
>        * config.in, configure: Rebuild.
>        * dwarf2asm.c (dw2_asm_output_data_raw): New.
>        (dw2_asm_output_data_uleb128_raw, dw2_asm_output_data_sleb128_raw): New.
>        (dw2_force_const_mem): Externalize.
>        * dwarf2asm.h: Update.
>        * dwarf2out.c (dwarf2out_cfi_label): If flag_dwarf2_cfi_asm, don't
>        generate a real label.
>        (output_cfi_directive): New.
>        (add_fde_cfi): If flag_dwarf2_cfi_asm, use it.
>        (output_call_frame_info): Do nothing if flag_dwarf2_cfi_asm.
>        (dwarf2out_begin_prologue): Emit .cfi_startproc, .cfi_personality,
>        and .cfi_lsda.
>        (dwarf2out_end_epilogue): Emit .cfi_endproc.
>        (output_loc_operands_raw, output_loc_sequence_raw): New.
>        (output_cfa_loc_raw): New.
>

I think they caused some PCH failures on Linux/ia32:

http://gcc.gnu.org/ml/gcc-testresults/2008-08/msg00520.html

FAIL: gcc.dg/pch/save-temps-1.c -O0 -g -I. (test for excess errors)
FAIL: gcc.dg/pch/save-temps-1.c -O0 -g assembly comparison
FAIL: gcc.dg/pch/save-temps-1.c  -O3 -g  -I. (test for excess errors)
FAIL: gcc.dg/pch/save-temps-1.c  -O3 -g  assembly comparis
FAIL: gcc.dg/pch/valid-1b.c -O0 -g -I. (test for excess errors)
FAIL: gcc.dg/pch/valid-1b.c -O0 -g assembly comparison
FAIL: gcc.dg/pch/valid-1b.c  -O0  -I. (test for excess errors)
FAIL: gcc.dg/pch/valid-1b.c  -O0  assembly comparison
FAIL: gcc.dg/pch/valid-1b.c  -O1  -I. (test for excess errors)
FAIL: gcc.dg/pch/valid-1b.c  -O1  assembly comparison
FAIL: gcc.dg/pch/valid-1b.c  -O2  -I. (test for excess errors)
FAIL: gcc.dg/pch/valid-1b.c  -O2  assembly comparison
FAIL: gcc.dg/pch/valid-1b.c  -O3 -fomit-frame-pointer  -I. (test for
excess errors)
FAIL: gcc.dg/pch/valid-1b.c  -O3 -fomit-frame-pointer  assembly comparison
FAIL: gcc.dg/pch/valid-1b.c  -O3 -g  -I. (test for excess errors)
FAIL: gcc.dg/pch/valid-1b.c  -O3 -g  assembly comparison
FAIL: gcc.dg/pch/valid-1b.c  -Os  -I. (test for excess errors)
FAIL: gcc.dg/pch/valid-1b.c  -Os  assembly comparison

One message I saw is

Executing on host: /export/gnu/import/svn/gcc-test/bld/gcc/xgcc
-B/export/gnu/import/svn/gcc-test/bld/gcc/
/export/gnu/import/svn/gcc-test/src/gcc/testsuite/gcc.dg/pch/valid-1b.c
 -O0 -g -I. -I. -Winvalid-pch -g0 -fno-show-column -S  -m32 -o
valid-1b.s    (timeout = 300)
/export/gnu/import/svn/gcc-test/src/gcc/testsuite/gcc.dg/pch/valid-1b.c:3:
warning: ./valid-1b.h.gch: not used because
`__GCC_HAVE_DWARF2_CFI_ASM' not defined^M
/export/gnu/import/svn/gcc-test/src/gcc/testsuite/gcc.dg/pch/valid-1b.c:3:
error: valid-1b.h: No such file or directory^M
/export/gnu/import/svn/gcc-test/src/gcc/testsuite/gcc.dg/pch/valid-1b.c:3:
error: one or more PCH files were found, but they were invalid^M
compiler exited with status 1


H.J.


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