Move Darwin10 unwinder fix to a crt shim.
gcc/ * config/darwin10.h (LINK_GCC_C_SEQUENCE_SPEC): Adjust to use the Darwin10-specific unwinder-shim. * config/darwin12.h (LINK_GCC_C_SEQUENCE_SPEC): Remove. * config/rs6000/darwin.h (DARWIN_CRT1_SPEC, DARWIN_DYLIB1_SPEC): New to cater for Darwin10 Rosetta. libgcc/ * config/unwind-dw2-fde-darwin.c (_darwin10_Unwind_FindEnclosingFunction): move from here ... * config/darwin10-unwind-find-enc-func.c: … to here. * config/t-darwin: Build Darwin10 unwinder shim crt. * libgcc/config.host: Add the Darwin10 unwinder shim. From-SVN: r263765
This commit is contained in:
parent
36bd86fa51
commit
a49c064e40
@ -1,3 +1,11 @@
|
||||
2018-08-22 Iain Sandoe <iain@sandoe.co.uk>
|
||||
|
||||
* config/darwin10.h (LINK_GCC_C_SEQUENCE_SPEC): Adjust to use the
|
||||
Darwin10-specific unwinder-shim.
|
||||
* config/darwin12.h (LINK_GCC_C_SEQUENCE_SPEC): Remove.
|
||||
* config/rs6000/darwin.h (DARWIN_CRT1_SPEC, DARWIN_DYLIB1_SPEC):
|
||||
New to cater for Darwin10 Rosetta.
|
||||
|
||||
2018-08-22 Iain Sandoe <iain@sandoe.co.uk>
|
||||
|
||||
* config/i386/i386.c (ix86_output_addr_diff_elt): Move the MACH-O
|
||||
@ -9,10 +17,11 @@
|
||||
PR target/81733
|
||||
PR target/52795
|
||||
* gcc/dwarf2out.c (FUNC_SECOND_SECT_LABEL): New.
|
||||
(dwarf2out_switch_text_section): Generate a local label for the second
|
||||
function sub-section and apply it as the second FDE start label.
|
||||
* gcc/final.c (final_scan_insn_1): Emit second FDE label after the second
|
||||
sub-section start.
|
||||
(dwarf2out_switch_text_section): Generate a local label for the
|
||||
second function sub-section and apply it as the second FDE start
|
||||
label.
|
||||
* gcc/final.c (final_scan_insn_1): Emit second FDE label after the
|
||||
second sub-section start.
|
||||
|
||||
2018-08-22 Richard Biener <rguenther@suse.de>
|
||||
|
||||
|
@ -25,10 +25,12 @@ along with GCC; see the file COPYING3. If not see
|
||||
#undef LINK_GCC_C_SEQUENCE_SPEC
|
||||
#define LINK_GCC_C_SEQUENCE_SPEC \
|
||||
"%:version-compare(>= 10.6 mmacosx-version-min= -no_compact_unwind) \
|
||||
%{!static:%{!static-libgcc: \
|
||||
%:version-compare(>= 10.6 mmacosx-version-min= -lSystem) } } \
|
||||
%{fno-pic|fno-PIC|fno-pie|fno-PIE|fapple-kext|mkernel|static|mdynamic-no-pic: \
|
||||
%:version-compare(>= 10.7 mmacosx-version-min= -no_pie) } %G %{!nolibc:%L}"
|
||||
%{!static:%{!static-libgcc: \
|
||||
%:version-compare(>= 10.6 mmacosx-version-min= -lSystem) } } \
|
||||
%{fno-pic|fno-PIC|fno-pie|fno-PIE|fapple-kext|mkernel|static|mdynamic-no-pic: \
|
||||
%:version-compare(>= 10.7 mmacosx-version-min= -no_pie) } \
|
||||
%{!nostdlib:%:version-compare(>< 10.6 10.7 mmacosx-version-min= -ld10-uwfef.o)} \
|
||||
%G %{!nolibc:%L}"
|
||||
|
||||
#undef DEF_MIN_OSX_VERSION
|
||||
#define DEF_MIN_OSX_VERSION "10.6"
|
||||
|
@ -18,14 +18,6 @@ You should have received a copy of the GNU General Public License
|
||||
along with GCC; see the file COPYING3. If not see
|
||||
<http://www.gnu.org/licenses/>. */
|
||||
|
||||
#undef LINK_GCC_C_SEQUENCE_SPEC
|
||||
#define LINK_GCC_C_SEQUENCE_SPEC \
|
||||
"%:version-compare(>= 10.6 mmacosx-version-min= -no_compact_unwind) \
|
||||
%{!static:%{!static-libgcc: \
|
||||
%:version-compare(>= 10.6 mmacosx-version-min= -lSystem) } } \
|
||||
%{fno-pic|fno-PIC|fno-pie|fno-PIE|fapple-kext|mkernel|static|mdynamic-no-pic: \
|
||||
%:version-compare(>= 10.7 mmacosx-version-min= -no_pie) } %G %{!nolibc:%L}"
|
||||
|
||||
#undef DEF_MIN_OSX_VERSION
|
||||
#define DEF_MIN_OSX_VERSION "10.8"
|
||||
|
||||
|
@ -119,6 +119,13 @@ extern int darwin_emit_branch_islands;
|
||||
mcpu=G5:ppc970; \
|
||||
:ppc}}"
|
||||
|
||||
/* We need to jam the crt to 10.5 for 10.6 (Rosetta) use. */
|
||||
#undef DARWIN_CRT1_SPEC
|
||||
#define DARWIN_CRT1_SPEC \
|
||||
"%:version-compare(!> 10.5 mmacosx-version-min= -lcrt1.o) \
|
||||
%:version-compare(>< 10.5 10.7 mmacosx-version-min= -lcrt1.10.5.o) \
|
||||
%{fgnu-tm: -lcrttms.o}"
|
||||
|
||||
/* crt2.o is at least partially required for 10.3.x and earlier. */
|
||||
#define DARWIN_CRT2_SPEC \
|
||||
"%{!m64:%:version-compare(!> 10.4 mmacosx-version-min= crt2.o%s)}"
|
||||
@ -130,6 +137,12 @@ extern int darwin_emit_branch_islands;
|
||||
{ "darwin_crt2", DARWIN_CRT2_SPEC }, \
|
||||
{ "darwin_subarch", DARWIN_SUBARCH_SPEC },
|
||||
|
||||
/* We need to jam the dylib crt to 10.5 for 10.6 (Rosetta) use. */
|
||||
#undef DARWIN_DYLIB1_SPEC
|
||||
#define DARWIN_DYLIB1_SPEC \
|
||||
"%:version-compare(!> 10.5 mmacosx-version-min= -ldylib1.o) \
|
||||
%:version-compare(>< 10.5 10.7 mmacosx-version-min= -ldylib1.10.5.o)"
|
||||
|
||||
/* Output a .machine directive. */
|
||||
#undef TARGET_ASM_FILE_START
|
||||
#define TARGET_ASM_FILE_START rs6000_darwin_file_start
|
||||
|
@ -1,3 +1,11 @@
|
||||
2018-08-22 Iain Sandoe <iain@sandoe.co.uk>
|
||||
|
||||
* config/unwind-dw2-fde-darwin.c
|
||||
(_darwin10_Unwind_FindEnclosingFunction): move from here ...
|
||||
* config/darwin10-unwind-find-enc-func.c: … to here.
|
||||
* config/t-darwin: Build Darwin10 unwinder shim crt.
|
||||
* libgcc/config.host: Add the Darwin10 unwinder shim.
|
||||
|
||||
2018-08-21 Rasmus Villemoes <rv@rasmusvillemoes.dk>
|
||||
|
||||
* config.host: Add crtbegin.o and crtend.o for
|
||||
|
13
libgcc/config/darwin10-unwind-find-enc-func.c
Normal file
13
libgcc/config/darwin10-unwind-find-enc-func.c
Normal file
@ -0,0 +1,13 @@
|
||||
#include "tconfig.h"
|
||||
#include "tsystem.h"
|
||||
#include "unwind-dw2-fde.h"
|
||||
|
||||
void *
|
||||
_darwin10_Unwind_FindEnclosingFunction (void *pc)
|
||||
{
|
||||
struct dwarf_eh_bases bases;
|
||||
const struct dwarf_fde *fde = _Unwind_Find_FDE (pc-1, &bases);
|
||||
if (fde)
|
||||
return bases.func;
|
||||
return NULL;
|
||||
}
|
@ -20,3 +20,7 @@ HOST_LIBGCC2_CFLAGS += -pipe
|
||||
# Use unwind-dw2-fde-darwin
|
||||
LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/config/unwind-dw2-fde-darwin.c \
|
||||
$(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c
|
||||
|
||||
# Patch to __Unwind_Find_Enclosing_Function for Darwin10.
|
||||
d10-uwfef.o: $(srcdir)/config/darwin10-unwind-find-enc-func.c
|
||||
$(crt_compile) $(DARWIN_EXTRA_CRT_BUILD_CFLAGS) -mmacosx-version-min=10.6 -c $<
|
||||
|
@ -273,16 +273,3 @@ _Unwind_Find_FDE (void *pc, struct dwarf_eh_bases *bases)
|
||||
the_obj_info);
|
||||
return ret;
|
||||
}
|
||||
|
||||
void *
|
||||
_darwin10_Unwind_FindEnclosingFunction (void *pc ATTRIBUTE_UNUSED)
|
||||
{
|
||||
#if __MACH__ && (__ENVIRONMENT_MAC_OS_X_VERSION_MIN_REQUIRED__ >= 1060)
|
||||
struct dwarf_eh_bases bases;
|
||||
const struct dwarf_fde *fde = _Unwind_Find_FDE (pc-1, &bases);
|
||||
if (fde)
|
||||
return bases.func;
|
||||
#endif
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user