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>
|
2018-08-22 Iain Sandoe <iain@sandoe.co.uk>
|
||||||
|
|
||||||
* config/i386/i386.c (ix86_output_addr_diff_elt): Move the MACH-O
|
* config/i386/i386.c (ix86_output_addr_diff_elt): Move the MACH-O
|
||||||
|
@ -9,10 +17,11 @@
|
||||||
PR target/81733
|
PR target/81733
|
||||||
PR target/52795
|
PR target/52795
|
||||||
* gcc/dwarf2out.c (FUNC_SECOND_SECT_LABEL): New.
|
* gcc/dwarf2out.c (FUNC_SECOND_SECT_LABEL): New.
|
||||||
(dwarf2out_switch_text_section): Generate a local label for the second
|
(dwarf2out_switch_text_section): Generate a local label for the
|
||||||
function sub-section and apply it as the second FDE start label.
|
second function sub-section and apply it as the second FDE start
|
||||||
* gcc/final.c (final_scan_insn_1): Emit second FDE label after the second
|
label.
|
||||||
sub-section start.
|
* 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>
|
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
|
#undef LINK_GCC_C_SEQUENCE_SPEC
|
||||||
#define LINK_GCC_C_SEQUENCE_SPEC \
|
#define LINK_GCC_C_SEQUENCE_SPEC \
|
||||||
"%:version-compare(>= 10.6 mmacosx-version-min= -no_compact_unwind) \
|
"%:version-compare(>= 10.6 mmacosx-version-min= -no_compact_unwind) \
|
||||||
%{!static:%{!static-libgcc: \
|
%{!static:%{!static-libgcc: \
|
||||||
%:version-compare(>= 10.6 mmacosx-version-min= -lSystem) } } \
|
%:version-compare(>= 10.6 mmacosx-version-min= -lSystem) } } \
|
||||||
%{fno-pic|fno-PIC|fno-pie|fno-PIE|fapple-kext|mkernel|static|mdynamic-no-pic: \
|
%{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}"
|
%: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
|
#undef DEF_MIN_OSX_VERSION
|
||||||
#define DEF_MIN_OSX_VERSION "10.6"
|
#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
|
along with GCC; see the file COPYING3. If not see
|
||||||
<http://www.gnu.org/licenses/>. */
|
<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
|
#undef DEF_MIN_OSX_VERSION
|
||||||
#define DEF_MIN_OSX_VERSION "10.8"
|
#define DEF_MIN_OSX_VERSION "10.8"
|
||||||
|
|
||||||
|
|
|
@ -119,6 +119,13 @@ extern int darwin_emit_branch_islands;
|
||||||
mcpu=G5:ppc970; \
|
mcpu=G5:ppc970; \
|
||||||
:ppc}}"
|
: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. */
|
/* crt2.o is at least partially required for 10.3.x and earlier. */
|
||||||
#define DARWIN_CRT2_SPEC \
|
#define DARWIN_CRT2_SPEC \
|
||||||
"%{!m64:%:version-compare(!> 10.4 mmacosx-version-min= crt2.o%s)}"
|
"%{!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_crt2", DARWIN_CRT2_SPEC }, \
|
||||||
{ "darwin_subarch", DARWIN_SUBARCH_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. */
|
/* Output a .machine directive. */
|
||||||
#undef TARGET_ASM_FILE_START
|
#undef TARGET_ASM_FILE_START
|
||||||
#define TARGET_ASM_FILE_START rs6000_darwin_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>
|
2018-08-21 Rasmus Villemoes <rv@rasmusvillemoes.dk>
|
||||||
|
|
||||||
* config.host: Add crtbegin.o and crtend.o for
|
* config.host: Add crtbegin.o and crtend.o for
|
||||||
|
|
|
@ -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
|
# Use unwind-dw2-fde-darwin
|
||||||
LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/config/unwind-dw2-fde-darwin.c \
|
LIB2ADDEH = $(srcdir)/unwind-dw2.c $(srcdir)/config/unwind-dw2-fde-darwin.c \
|
||||||
$(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.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);
|
the_obj_info);
|
||||||
return ret;
|
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