Commit dee1497c by Iain Sandoe Committed by Iain Sandoe

[Darwin] Improve Objective-C NeXT ABI version check.

We were missing a check for the case that user's ABI was > 2 and the
codegen was for 64 bit.

gcc/ChangeLog:

2019-10-09  Iain Sandoe  <iain@sandoe.co.uk>

	* config/darwin.c (darwin_override_options): Make the check for
	Objective-C ABI version more specific for 64bit code.

From-SVN: r276768
parent a0e887be
2019-10-09 Iain Sandoe <iain@sandoe.co.uk> 2019-10-09 Iain Sandoe <iain@sandoe.co.uk>
* config/darwin.c (darwin_override_options): Make the check for
Objective-C ABI version more specific for 64bit code.
2019-10-09 Iain Sandoe <iain@sandoe.co.uk>
* config/darwin.c (machopic_indirect_data_reference): Set flag to * config/darwin.c (machopic_indirect_data_reference): Set flag to
indicate that the new symbol is an indirection. indicate that the new symbol is an indirection.
(machopic_indirect_call_target): Likewise. (machopic_indirect_call_target): Likewise.
......
...@@ -3114,18 +3114,19 @@ darwin_override_options (void) ...@@ -3114,18 +3114,19 @@ darwin_override_options (void)
: (generating_for_darwin_version >= 9) ? 1 : (generating_for_darwin_version >= 9) ? 1
: 0); : 0);
/* Objective-C family ABI 2 is only valid for next/m64 at present. */
if (global_options_set.x_flag_objc_abi && flag_next_runtime) if (global_options_set.x_flag_objc_abi && flag_next_runtime)
{ {
if (TARGET_64BIT && global_options.x_flag_objc_abi < 2) if (TARGET_64BIT && global_options.x_flag_objc_abi != 2)
error_at (UNKNOWN_LOCATION, "%<-fobjc-abi-version%> must be greater" /* The Objective-C family ABI 2 is the only valid version NeXT/m64. */
" than or equal to 2 for %<-m64%> targets" error_at (UNKNOWN_LOCATION,
" with %<-fnext-runtime%>"); "%<-fobjc-abi-version%> 2 must be used for 64 bit targets"
if (!TARGET_64BIT && global_options.x_flag_objc_abi >= 2) " with %<-fnext-runtime%>");
error_at (UNKNOWN_LOCATION, "%<-fobjc-abi-version%> %d is not" else if (!TARGET_64BIT && global_options.x_flag_objc_abi >= 2)
" supported on %<-m32%> targets with" /* ABI versions 0 and 1 are the only valid versions NeXT/m32. */
" %<-fnext-runtime%>", error_at (UNKNOWN_LOCATION,
global_options.x_flag_objc_abi); "%<-fobjc-abi-version%> %d is not supported for 32 bit"
" targets with %<-fnext-runtime%>",
global_options.x_flag_objc_abi);
} }
/* Don't emit DWARF3/4 unless specifically selected. This is a /* Don't emit DWARF3/4 unless specifically selected. This is a
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment