This is the mail archive of the gcc-help@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: Ongoing Error in make stage2 building gcc-4.7.2


Ian,

	Thanks for your  suggestions about how to continue building.

	There is some good news - and some bad news!  The build has passed
stage 3, but failed later.

	Modified libcpp/config.h to change HAVE_SSE4 to 0.  Reran make.
Failed as before (but without redoing most of stage 1).  Last few lines:
../../src/gcc-4.7.2/libcpp/lex.c:463:Unknown pseudo-op: .balign
etc as before ...

	Modified prev-libcpp/config.h as well - failed with the same last few
lines.

	In relation to Ian's comment
"I  would have expected to see a failure in stage 1 as well."
I noted that the difference in the originals of these files is:
bash>diff ../obj/libcpp/config.orig.h ../obj/prev-libcpp/config.orig.h
16c16
< /* #undef ENABLE_CHECKING */
---
> #define ENABLE_CHECKING 1

	(It is not clear whether this is relevant to stage1, but it prompted
confirming the test at the point of failure.)

	The test in lex.c affecting line 463 is "#ifdef HAVE_SSE4".
Modified libcpp/config.h and prev-libcpp/config.h to change HAVE_SSE4 to
undef.

	With this it completed stage 2, but failed in stage 3 with the same
effect:

../../src/gcc-4.7.2/libcpp/lex.c:463:Unknown pseudo-op: .balign
../../src/gcc-4.7.2/libcpp/lex.c:463:Rest of line ignored. 1st junk character valued 49 (1).
make[3]: *** [lex.o] Error 1
make[2]: *** [all-stage3-libcpp] Error 2
make[1]: *** [stage3-bubble] Error 2
make: *** [all] Error 2

	So it looks like a new config.h needs to be changed!  The libcpp now
matches the prev-libcpp original:
Files libcpp/config.h and prev-libcpp/config.orig.h are identical

	There are also stage1-libcpp, and so on now.

	Applied this change and restarted make.  Completed stage3, got to
"Comparing stages 2 and 3", gave:
Comparing stages 2 and 3
warning: gcc/cc1-checksum.o differs
warning: gcc/cc1plus-checksum.o differs
Comparison successful.

	It continued after this, but gave final error:
ld: warning in ../../../src/gcc-4.7.2/libitm/clearcap.map, file is not of required architecture ld: pointer in read-only segment not allowed in slidable image, used in _del_opvnt from .libs/alloc_cpp.o
collect2: error: ld returned 1 exit status
make[4]: *** [libitm.la] Error 1
make[3]: *** [all-recursive] Error 1
make[2]: *** [all] Error 2
make[1]: *** [all-target-libitm] Error 2
make: *** [all] Error 2


Comments on the above

	I was surprised that it was necessary to make the change again for
stage3 to configuration decisions. Over the years I worked on compiler
development, we never actually performed a stage 3 to confirm the result matched stage2 (either the next compilation used a newer version of the source code, or it was a cross compiler). However, if we had, I would have expected it to be done with exactly the same preconditions to ensure that stages 2 and 3 would
match.

	The current situation seems to be that I have built the entire stage 3,
but that the step "Build runtime libraries using the stage3 compiler from the
previous step." has failed.

	Is there any way to correct this and continue?

	Thanks,
		Ellis

On 9 May 2013, at 19:09, Ian Lance Taylor wrote:

I can't explain the results you showed for the libcpp config.log file,
though.  Based on those I would have expected to see a failure in
stage 1 as well.  Clearly I am missing something.

       Is there any way I can continue the bootstrap (from stage2?),
for example by constraining the behaviour in some way to avoid
this piece of assembly code?

You try editing libcpp/config.h and change HAVE_SSE4 to 0.


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