public inbox for gcc-bugs@sourceware.org
help / color / mirror / Atom feed
* [Bug preprocessor/58370] New: pre compiled headers failure on NetBSD/sparc64
@ 2013-09-09 13:34 martin at netbsd dot org
  2013-09-09 13:54 ` [Bug preprocessor/58370] " martin at netbsd dot org
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: martin at netbsd dot org @ 2013-09-09 13:34 UTC (permalink / raw)
  To: gcc-bugs

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

            Bug ID: 58370
           Summary: pre compiled headers failure on NetBSD/sparc64
           Product: gcc
           Version: 4.8.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: preprocessor
          Assignee: unassigned at gcc dot gnu.org
          Reporter: martin at netbsd dot org

Trying to configure gcc fails with an endless loop in one of the configure
tests of libstc++. There are actually two errors in this:

(1) a fatal error when reading a PCH file "had to relocate PCH"
(2) a SIGSEGV when trying to resolve symbol information for the diagnostic
message, which in turn leads to a SIGSEGV inside the SIGSEGV handler

I don't know if (2) is only fallout from (1). I can provide more debug output
if needed (not sure what part of this is NetBSD specific).

The backtrace is:

#0  0x00000000012fff88 in linemap_location_from_macro_expansion_p (
    set=0x42e70000, location=19) at ../../gcc-4.8.1/libcpp/line-map.c:948
#1  0x00000000012ff31c in linemap_lookup (set=0x42e70000, line=19)
    at ../../gcc-4.8.1/libcpp/line-map.c:642
#2  0x000000000130065c in linemap_macro_loc_to_def_point (set=0x42e70000, 
    location=19, original_map=0xffffffffffffa0c8)
    at ../../gcc-4.8.1/libcpp/line-map.c:1134
#3  0x0000000001300934 in linemap_resolve_location (set=0x42e70000, loc=19, 
    lrk=LRK_MACRO_DEFINITION_LOCATION, map=0xffffffffffffa0c8)
    at ../../gcc-4.8.1/libcpp/line-map.c:1263
#4  0x00000000012d4ab8 in diagnostic_report_current_module (context=0x17b28d0, 
    where=19) at ../../gcc-4.8.1/gcc/diagnostic.c:481
#5  0x00000000003a6368 in cp_diagnostic_starter (context=0x17b28d0, 
    diagnostic=0xffffffffffffa308) at ../../gcc-4.8.1/gcc/cp/error.c:2907
#6  0x00000000012d5e44 in diagnostic_report_diagnostic (context=0x17b28d0, 
    diagnostic=0xffffffffffffa308) at ../../gcc-4.8.1/gcc/diagnostic.c:756
#7  0x00000000012d6b90 in fatal_error (gmsgid=0x13e1230 "had to relocate PCH")
    at ../../gcc-4.8.1/gcc/diagnostic.c:1076
#8  0x00000000008e83dc in gt_pch_restore (f=0x424a0738)
    at ../../gcc-4.8.1/gcc/ggc-common.c:704
#9  0x00000000005c575c in c_common_read_pch (pfile=0x42765800, 
    name=0x4275dbc0 "conftest.h.gch", fd=4, orig_name=0x4275dbb0 "conftest.h")
    at ../../gcc-4.8.1/gcc/c-family/c-pch.c:370
#10 0x00000000012f05f8 in should_stack_file (pfile=0x42765800, 
    file=0x42788130, import=false) at ../../gcc-4.8.1/libcpp/files.c:787
#11 0x00000000012f097c in _cpp_stack_file (pfile=0x42765800, file=0x42788130, 
    import=false) at ../../gcc-4.8.1/libcpp/files.c:872
#12 0x00000000012f0fe4 in _cpp_stack_include (pfile=0x42765800, 
    fname=0x4275db90 "conftest.h", angle_brackets=0, type=IT_INCLUDE)
    at ../../gcc-4.8.1/libcpp/files.c:1008
#13 0x00000000012e1fc4 in do_include_common (pfile=0x42765800, type=IT_INCLUDE)
    at ../../gcc-4.8.1/libcpp/directives.c:793
#14 0x00000000012e2024 in do_include (pfile=0x42765800)
    at ../../gcc-4.8.1/libcpp/directives.c:804
#15 0x00000000012e13dc in _cpp_handle_directive (pfile=0x42765800, indented=0)
    at ../../gcc-4.8.1/libcpp/directives.c:492
#16 0x00000000012f9dc4 in _cpp_lex_token (pfile=0x42765800)
    at ../../gcc-4.8.1/libcpp/lex.c:1990
#17 0x0000000001306cec in cpp_get_token_1 (pfile=0x42765800, 
    location=0xffffffffffffafd8) at ../../gcc-4.8.1/libcpp/macro.c:2355
#18 0x0000000001307330 in cpp_get_token_with_location (pfile=0x42765800, 
    loc=0xffffffffffffafd8) at ../../gcc-4.8.1/libcpp/macro.c:2537
#19 0x00000000005b9484 in c_lex_with_flags (value=0xffffffffffffafe0, 
    loc=0xffffffffffffafd8, cpp_flags=0xffffffffffffafd2 "", lex_flags=0)
    at ../../gcc-4.8.1/gcc/c-family/c-lex.c:300
#20 0x00000000003b225c in cp_lexer_get_preprocessor_token (lexer=0x0, 
    token=0xffffffffffffafd0) at ../../gcc-4.8.1/gcc/cp/parser.c:715
#21 0x00000000003f64e8 in cp_parser_initial_pragma (
    first_token=0xffffffffffffafd0) at ../../gcc-4.8.1/gcc/cp/parser.c:28139
#22 0x00000000003b1d98 in cp_lexer_new_main ()

This can be reproduced like this:

> cat conftest.h
#include <math.h>
> cat conftest.cc 
#include "conftest.h"
> $BUILDDIR/stage1-gcc/xg++ -B $BUILDDIR/stage1-gcc -Werror -Winvalid-pch -Wno-deprecated -x c++-header conftest.h -o conftest.h.gch
> $BUILDDIR/stage1-gcc/xg++ -B $BUILDDIR/stage1-gcc -Werror -Winvalid-pch -Wno-deprecated -c conftest.cc


A bit of gdb output:

Core was generated by `cc1plus'.
Program terminated with signal 11, Segmentation fault.
#0  0x00000000012fff88 in linemap_location_from_macro_expansion_p (
    set=0x42e70000, location=19) at ../../gcc-4.8.1/libcpp/line-map.c:948
948       linemap_assert (location <= MAX_SOURCE_LOCATION
(gdb) list
943     {
944       if (IS_ADHOC_LOC (location))
945         location = set->location_adhoc_data_map.data[
946             location & MAX_SOURCE_LOCATION].locus;
947     
948       linemap_assert (location <= MAX_SOURCE_LOCATION
949                       && (set->highest_location
950                           < LINEMAPS_MACRO_LOWEST_LOCATION (set)));
951       if (set == NULL)
952         return false;
(gdb) print *set
$1 = {info_ordinary = {maps = 0x114000000, allocated = 1, used = 1115871712, 
    cache = 0}, info_macro = {maps = 0x105000000, allocated = 0, 
    used = 1117049688, cache = 0}, depth = 1, trace_includes = 55, 
  highest_location = 3, highest_line = 1117048808, max_column_hint = 0, 
  reallocator = 0x115000000, round_alloc_size = 0, location_adhoc_data_map = {
    htab = 0x0, curr_loc = 1, allocated = 335544320, data = 0x24282d9e0}}


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

* [Bug preprocessor/58370] pre compiled headers failure on NetBSD/sparc64
  2013-09-09 13:34 [Bug preprocessor/58370] New: pre compiled headers failure on NetBSD/sparc64 martin at netbsd dot org
@ 2013-09-09 13:54 ` martin at netbsd dot org
  2013-09-09 13:59 ` rguenth at gcc dot gnu.org
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: martin at netbsd dot org @ 2013-09-09 13:54 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #1 from Martin Husemann <martin at netbsd dot org> ---
The fatal error seems to happen because NetBSD uses the default HAVE_MMAP_FILE
implementation of gt_pch_get_address and gt_pch_use_address instead of specific
host hooks.

Looking at the existing host hook implementations for those two functions I am
really terrified. Why is relocation not possible?


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

* [Bug preprocessor/58370] pre compiled headers failure on NetBSD/sparc64
  2013-09-09 13:34 [Bug preprocessor/58370] New: pre compiled headers failure on NetBSD/sparc64 martin at netbsd dot org
  2013-09-09 13:54 ` [Bug preprocessor/58370] " martin at netbsd dot org
@ 2013-09-09 13:59 ` rguenth at gcc dot gnu.org
  2013-09-09 14:14 ` martin at netbsd dot org
  2013-09-10 10:08 ` martin at netbsd dot org
  3 siblings, 0 replies; 5+ messages in thread
From: rguenth at gcc dot gnu.org @ 2013-09-09 13:59 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> ---
(In reply to Martin Husemann from comment #1)
> The fatal error seems to happen because NetBSD uses the default
> HAVE_MMAP_FILE implementation of gt_pch_get_address and gt_pch_use_address
> instead of specific host hooks.
> 
> Looking at the existing host hook implementations for those two functions I
> am really terrified. Why is relocation not possible?

Probably because nobody submitted and tested a NetBSD implementation.


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

* [Bug preprocessor/58370] pre compiled headers failure on NetBSD/sparc64
  2013-09-09 13:34 [Bug preprocessor/58370] New: pre compiled headers failure on NetBSD/sparc64 martin at netbsd dot org
  2013-09-09 13:54 ` [Bug preprocessor/58370] " martin at netbsd dot org
  2013-09-09 13:59 ` rguenth at gcc dot gnu.org
@ 2013-09-09 14:14 ` martin at netbsd dot org
  2013-09-10 10:08 ` martin at netbsd dot org
  3 siblings, 0 replies; 5+ messages in thread
From: martin at netbsd dot org @ 2013-09-09 14:14 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #3 from Martin Husemann <martin at netbsd dot org> ---
(In reply to Richard Biener from comment #2)

> Probably because nobody submitted and tested a NetBSD implementation.

You mean an evil hack to try to avoid the relocation (like all existing host
hooks seem to do)?

Relocation of precompiled header information should not be host specific. With
it, any posix mmap (via the default implementation) would do.


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

* [Bug preprocessor/58370] pre compiled headers failure on NetBSD/sparc64
  2013-09-09 13:34 [Bug preprocessor/58370] New: pre compiled headers failure on NetBSD/sparc64 martin at netbsd dot org
                   ` (2 preceding siblings ...)
  2013-09-09 14:14 ` martin at netbsd dot org
@ 2013-09-10 10:08 ` martin at netbsd dot org
  3 siblings, 0 replies; 5+ messages in thread
From: martin at netbsd dot org @ 2013-09-10 10:08 UTC (permalink / raw)
  To: gcc-bugs

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

--- Comment #4 from Martin Husemann <martin at netbsd dot org> ---
To avoid confusion, I'm splitting this into two separate reports - will dig
further into the crash myself, since it is probably not easy to reproduce on
other host platforms.


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

end of thread, other threads:[~2013-09-10 10:08 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-09-09 13:34 [Bug preprocessor/58370] New: pre compiled headers failure on NetBSD/sparc64 martin at netbsd dot org
2013-09-09 13:54 ` [Bug preprocessor/58370] " martin at netbsd dot org
2013-09-09 13:59 ` rguenth at gcc dot gnu.org
2013-09-09 14:14 ` martin at netbsd dot org
2013-09-10 10:08 ` martin at netbsd dot 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).