Commit Graph

327 Commits

Author SHA1 Message Date
mrg
bf2dc96f03 merge GCC 5.4.0. (needs mknative, may not build yet.) 2016-06-07 06:14:16 +00:00
mrg
f30ff5883e import GCC 5.4.0 release. there's not a lot of new info though at
least these 135 (!) GCC PRs have been fixed by the update:

68730 69714 67550 70209 71254 70839 69737 70067 67355 67172 69239
65779 69546 70272 70421 65985 67339 67411 68309 68585 68679 68890
68949 69009 70139 70494 68162 69135 70306 68965 70297 70635 66786
69098 70347 69719 70526 70941 69400 69577 69447 65689 65886 65932
66655 68269 68789 69614 69648 69666 69764 69794 70044 70052 65726
68910 64289 68671 68835 69669 70329 71204 69355 67364 68049 68998
69323 69743 69995 69146 68651 67755 67484 68790 68907 69099 69496
69509 69516 70393 69222 69703 69939 70609 71004 71005 71036 71037
71038 68636 69013 69606 70115 70333 70430 60290 70356 69305 70024
67781 69414 69140 70510 60164 66635 67896 68106 68298 68449 68779
68921 68986 69037 69147 69194 69366 69399 69705 69917 69969 70613
71317 69268 70269 69032 65702 69219 69484 65996 66680 68283 69603
70350 67451 61397
2016-06-07 05:57:41 +00:00
martin
5de48bab33 Build fix for big endian arm, from Rin Okuyama.
Still not working, but other details still under discussion.
2016-06-06 21:06:33 +00:00
christos
5cbcac72ef Don't re-define standard types! 2016-06-05 20:09:00 +00:00
christos
e6053aea0a comment out the ones we don't have 2016-06-05 19:17:23 +00:00
christos
543c8f279f Don't play type games with size_t for NetBSD. It is either 32 bits for ILP32
or 64 bits for LP64.
2016-06-05 16:43:10 +00:00
christos
08cb3c9559 Fix compilation on non-x86 2016-06-03 15:53:18 +00:00
christos
bd2adf4ebf Fix ILP32 build. 2016-06-02 19:54:38 +00:00
christos
d94aad05fc Put the sanitizer libraries before everything else, since it needs to be
the first shared object.
2016-06-01 22:27:49 +00:00
christos
860d3f06d6 deal with rename lossage 2016-06-01 17:03:26 +00:00
christos
8c05e0f285 Don't intercept things we don't have. 2016-06-01 17:02:54 +00:00
christos
3711470d09 Handle wrapping the same way as FreeBSD does. 2016-06-01 17:02:19 +00:00
christos
78fc04143a use the default offsets since gcc hardcodes them (TARGET_ASAN_SHADOW_OFFSET ->
ix86_asan_shadow_offset)
2016-06-01 04:07:51 +00:00
christos
997b5166e9 use the correct array size. 2016-06-01 04:06:15 +00:00
christos
c4250a9276 zero pad syscall. 2016-06-01 01:54:06 +00:00
christos
97989743a7 Ignore the first dlpi entry which is ourselves on NetBSD instead of having
a NULL name as on linux.
2016-06-01 00:53:35 +00:00
christos
33b321f304 - hack BlockingMutex
- add NetBSD procmaps
- remove old unused source
2016-05-31 21:35:11 +00:00
christos
0761ebe8d9 First steps to port this to NetBSD (compiles now but missing stuff) 2016-05-31 20:47:25 +00:00
kamil
13f6226486 Fix building GCC-5.3 with GCC-6.1
Cherry-pick upstream patch:

From 1e5f1089dec3af328fd03125d6778f666d0bd4e4 Mon Sep 17 00:00:00 2001
From: edlinger <edlinger@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Thu, 25 Feb 2016 15:33:50 +0000
Subject: [PATCH] 2016-02-25  Bernd Edlinger  <bernd.edlinger@hotmail.de>

        Backported from mainline
        2016-02-19  Jakub Jelinek  <jakub@redhat.com>
                    Bernd Edlinger  <bernd.edlinger@hotmail.de>

        * Make-lang.in: Invoke gperf with -L C++.
        * cfns.gperf: Remove prototypes for hash and libc_name_p
        inlines.
        * cfns.h: Regenerated.
        * except.c (nothrow_libfn_p): Adjust.


git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@233720 138bc75d-0d04-0410-961f-82ee72b054a4


Verified to work with GCC 5.3 and 6.1.
2016-05-25 20:57:34 +00:00
christos
63ea08216d Fix armv3 segv compiling mDNS.c, from:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=62254
    https://gcc.gnu.org/ml/gcc-patches/2016-02/msg01095.html
2016-05-24 15:42:17 +00:00
christos
da360e79eb Fix infinite recursion when building i386 -fPIE in
src/external/mit/xorg/lib/libxcb/xkb.

https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=231599

PR debug/67355
* var-tracking.c (reverse_op): Don't add dummy zero to reverse
  ops that simplify back to the original value.
* alias.c (refs_newer_value_p): Cut off recursion for
  expressions containing the original value.
2016-05-19 20:27:36 +00:00
skrll
11d5fda1b2 Preserve the arm architecture version (if present) 2016-05-12 15:27:54 +00:00
skrll
c384c5b3fa For earm use the compiler to determine sf vs hf 2016-05-12 12:51:53 +00:00
skrll
74f1f7b042 Doh... don't add the ABI to 'os'. Hopefully arm is really fixed now. 2016-05-12 10:55:03 +00:00
skrll
8a8024b50c Sync config.guess with upstream, but maintain earm* stuff.
Fixes tools build on arm platform.
2016-05-12 08:43:49 +00:00
mrg
729e5a7e04 use AC_USE_SYSTEM_EXTENSIONS in libiberty autoconf, which arranges for
_GNU_SOURCE to be defined for systems that need it (like glibc ones.)

be sure to find the right config.h for host programs.

these fixes combined make builds on debian 7 complete for me.
2016-05-04 00:28:23 +00:00
christos
17ab1145c9 Undo previous; wrong tree. 2016-04-22 18:05:13 +00:00
christos
6d71bd475a Propagate PLT fix from our gcc-5.3 tree:
Some functions like __udivsi3 are used in other assembly files like __umodsi3.
Use PLT linkage to avoid text relocations.

XXX: pullup-7
2016-04-22 18:03:54 +00:00
christos
97bb42372a Some functions like __udivsi3 are used in other assembly files like __umodsi3.
Use PLT linkage to avoid text relocations.
2016-04-22 17:39:38 +00:00
skrll
6e4fa334ab Re-order includes so that ARM_TARGET2_DWARF_FORMAT takes effect
Fixes PR/51066: C++ text relocations
2016-04-21 16:09:16 +00:00
christos
dc12ea256d The gcc diagnostic formats handle %m 2016-04-19 21:11:44 +00:00
mrg
0bcf063564 revert most of the previous and re-do it to be valid, re-fixing i386 psABI
support with -m32.
2016-03-27 17:17:59 +00:00
mrg
d993c21bf1 don't set PREFERRED_STACK_BOUNDARY_DEFAULT, in particular, don't set it
to 64 (8 bytes) for 64-bit targets, where 16 byte alignment is required.
this fixes GCC 5 and ssh on modern intel cpus, and perhaps more.
2016-03-27 04:18:09 +00:00
christos
dd00c10363 new binutils bitch about writable eh_frame relocations; tell it we have
new style ones.
2016-03-24 04:27:29 +00:00
christos
d418ed3dfa Drop PSW annotation for now; it is not a real register and we need special
rtl for it (causes an assertion failure)
2016-03-23 21:21:36 +00:00
christos
3404205800 need stdbool.h 2016-03-23 21:09:04 +00:00
christos
214b89d952 Revert previous changes until we can test them better. 2016-03-23 15:51:36 +00:00
christos
0db9e20bfb From Jake Hamby
For several years I've been eager to find the time to fix the bugs
in C++ exceptions on VAX to get them working on NetBSD, because
theyâve been broken for many years and it looked like only a few
changes were needed to get them working. Without C++ exceptions,
the NetBSD test suite canât be run. The good news is that I was
able to fix all the bugs in the VAX machine description to make
C++ exceptions work in GCC 4.8.5 (version unimportant). I wrote a
blog post explaining the bugs, with patches:


Here's a short summary, with the diffs in text form at the end of this email.

1) Replace #define FRAME_POINTER_CFA_OFFSET(FNDECL) 0 with #define
ARG_POINTER_CFA_OFFSET(FNDECL) 0 in gcc/config/vax/elf.h and
gcc/config/vax/vax.h. This changes the definition of __builtin_dwarf_cfa()
to return %ap instead of %fp, which correctly points to CFA.
Previously, the stack unwinder was crashing in _Unwind_RaiseException()
trying to follow bad pointers from the initial CFA.

2) Define EH_RETURN_DATA_REGNO(N) to include only R2 and R3 (instead
of R2-R5) and add code to vax_expand_prologue() in gcc/config/vax/vax.c
to add R2-R3 to the procedure entry mask but only if crtl->calls_eh_return
is set. This fixes a crash when the stack unwinder tried to write
values to R2 and R3 in the previous stack frame via
__builtin_eh_return_data_regno (0) and __builtin_eh_return_data_regno (1).

3) Removed definitions of EH_RETURN_STACKADJ_RTX and STARTING_FRAME_OFFSET
from gcc/config/vax/elf.h. It's not necessary to remember the stack
adjustment or to waste four bytes on every stack frame for a value
that's not needed. Also remove the suspicious changes in
gcc/config/vax/vax.md to the definitions of call_pop and call_value
regarding DW_CFA_GNU_args_size and EH unwinding. I reverted to the
previous versions from an older version of GCC, adding a few useful
comments that had been removed.

4) The last bug is the one I understand the least. I'm hoping
someone reading this can implement a correct fix. What I was seeing
after making all the previous changes to fix the other bugs is that
my test program failed to catch any exceptions, but instead returned
normally to the original return path.

Investigation revealed that GCC was correctly generating the
necessary move instruction to copy the second parameter passed to
__builtin_eh_return() into the return address, because
EH_RETURN_HANDLER_RTX had been defined correctly in config/vax/elf.h.
Hereâs what the call looks like in gcc/except.c:

#ifdef EH_RETURN_HANDLER_RTX
      rtx insn = emit_move_insn (EH_RETURN_HANDLER_RTX, crtl->eh.ehr_handler);
#else
      error ("__builtin_eh_return not supported on this target");
#endif

The problem was that the optimizer is deleting the final move
instruction when I compile with -O or higher. The assembly code at
-O0 (no optimization) generated for the __builtin_eh_return() call
at the end of _Unwind_RaiseException() looked like:

	calls $2,_Unwind_DebugHook
	movl -12(%fp),%r1
	movl %r1,16(%fp)
	ret
	.cfi_endproc

But then when I compiled with -O1 or -O2, all I saw was:

	calls $2,_Unwind_DebugHook
	ret
	.cfi_endproc

This was a mystery for me and I donât know enough about how the
final peephole optimizer works to really track down why it thinks
it can remove the move call to store the previous return address.
My workaround was to add a call to RTX_FRAME_RELATED_P (insn) = 1;
after the emit_move_insn() in gcc/except.c, which was used in
vax_expand_prologue() to mark the procedure entry mask.

By making this change, the optimizer no longer removes the call to
write the value to the previous stack pointer, but it adds an extra
line of .cfi exception info, which seems unnecessary since the code
is immediately going to return from the call and any adjustment
made by the DWARF stack unwinder will already have been done. Hereâs
what the optimized code looks like with the patch (%r6 had been
loaded earlier):

	calls $2,_Unwind_DebugHook
	movl %r6,16(%fp)
	.cfi_offset 6, -36
	ret
	.cfi_endproc

With that final change, C++ exception handling now finally works
on NetBSD/vax, and I was able to successfully run the vast majority
of the tests in the ATF testsuite, which had been completely
inaccessible when I started due to both atf-run and atf-report
immediately dumping core due to the bad pointers that I fixed. Now
I have a bunch of new bugs to track down fixes for, but I think
this was the hardest set of problems that needed to be solved to
bring NetBSD on VAX up to the level of the other NetBSD ports.

Here are the diffs I have so far. They should apply to any recent
version of GCC (tested on GCC 4.8.5). With the exception of the
hack to gcc/except.c, the other diffs are ready to submit to NetBSD
as well as to upstream GCC. The fix Iâd like to see for the final
problem I discovered of the emit_move_insn() being deleted by the
optimizer would be another patch to one of the files in the
gcc/config/vax directory to explain to the optimizer that writing
to 16(%fp) is important and not something to be deleted from the
epilogue (perhaps it thinks itâs writing to a local variable in
the frame that's about to be destroyed?).

I didn't see any indication that any other GCC ports required
anything special to tell the optimizer not to delete the move
instruction to EH_RETURN_HANDLER_RTX, so the other suspicion I have
is that there may be a bug specific to VAX's peephole optimizer or
related functions. Any ideas?
2016-03-23 12:52:43 +00:00
christos
5ea3c1df8c Fix vax build, now we fail in:
/usr/src/lib/csu/common/crt0-common.c: In function '___start':
/usr/src/lib/csu/common/crt0-common.c:184:1: internal compiler error: in dwf_regno, at dwarf2cfi.c:988
 }
  ^
2016-03-23 12:45:50 +00:00
mrg
0d31cfc9e9 disable -fdelete-null-pointer-checks by default for now. 2016-03-19 20:54:49 +00:00
mrg
243c03d765 disable our local hack to check alloc alignment on arm, as the define
is no longer compile-time constant and CTASSERT() fails.
2016-03-18 10:07:52 +00:00
mrg
849ca3bc36 disable some asan stuff for now. 2016-03-16 07:17:14 +00:00
mrg
c88c737d14 remove remaining mudflap bits 2016-03-16 05:33:16 +00:00
mrg
30168b1c52 fix a merge botch and properly delete the testsuite 2016-03-15 06:11:27 +00:00
skrll
7152806b73 Remove code for the !TARGET_BIG_SWITCH case 2016-03-14 07:33:27 +00:00
mrg
7b0d213834 remove the ugly #include "../gcc/defaults.h" that (a) breaks the
libcpp build and (b) isn't needed.
2016-03-13 01:40:42 +00:00
mrg
cc476093dc fix a comment. 2016-03-13 01:05:59 +00:00
mrg
3d2fbcae7f add /usr/include/gcc-5 directory to the distribution and adjust the
GCC 5 parts of the build (not yet enabled) to install/look there.
2016-03-12 23:07:05 +00:00
mrg
7b2001e466 fix a minor merge botch. 2016-03-12 21:50:39 +00:00
skrll
751d84791e Remove duplicated lines 2016-02-22 07:57:11 +00:00