Commit 338509ae authored by Xavier Leroy's avatar Xavier Leroy Committed by Xavier Leroy
Browse files

Remove support for x86-32 under macOS

32-bit executables cannot be built since XCode 10.0 (sep 2018).
32-bit executables cannot be executed since MacOS 10.15 (oct 2019).
Better remove x86-32 support and fail at configuration time instead of
at the end of the build.
parent 0132b8aa
......@@ -48,7 +48,6 @@ Supported targets:
armeb-hardfloat (ARM, EABI using hardware FP registers, big endian)
x86_32-linux (x86 32 bits, Linux)
x86_32-bsd (x86 32 bits, BSD)
x86_32-macosx (x86 32 bits, MacOS X)
x86_32-cygwin (x86 32 bits, Cygwin environment under Windows)
x86_64-linux (x86 64 bits, Linux)
x86_64-bsd (x86 64 bits, BSD)
......@@ -328,29 +327,6 @@ if test "$arch" = "x86" -a "$bitsize" = "32"; then
libmath="-lm"
system="linux"
;;
macosx)
# kernel major versions count upwards from 4 for OSX 10.0 to 15 for OSX 10.11
kernel_major=`uname -r | cut -d "." -f 1`
abi="macosx"
casm="${toolprefix}gcc"
casm_options="-arch i386 -c"
cc="${toolprefix}gcc -arch i386"
clinker="${toolprefix}gcc"
clinker_needs_no_pie=false
cprepro="${toolprefix}gcc"
cprepro_options="-std=c99 -arch i386 -U__GNUC__ -U__clang__ -U__BLOCKS__ '-D__attribute__(x)=' '-D__asm(x)=' '-D_Nullable=' '-D_Nonnull=' -E"
libmath=""
system="macosx"
if [[ $kernel_major -gt 11 ]]; then
# OSX >= 10.8
clinker_options="-arch i386 -Wl,-no_pie"
else
# OSX <= 10.7
clinker_options="-arch i386"
fi
;;
*)
echo "Error: invalid eabi/system '$target' for architecture IA32/X86_32." 1>&2
echo "$usage" 1>&2
......
......@@ -197,7 +197,7 @@ module MacOS_System : SYSTEM =
if i || (not !Clflags.option_fcommon) then ".const" else "COMM"
| Section_string -> ".const"
| Section_literal -> ".literal8"
| Section_jumptable -> ".text" (* needed in 64 bits, not a problem in 32 bits *)
| Section_jumptable -> ".text"
| Section_user(s, wr, ex) ->
sprintf ".section \"%s\", %s, %s"
(if wr then "__DATA" else "__TEXT") s
......@@ -216,32 +216,14 @@ module MacOS_System : SYSTEM =
let print_align oc n =
fprintf oc " .align %d\n" (log2 n)
let indirect_symbols : StringSet.t ref = ref StringSet.empty
let print_mov_rs oc rd id =
if Archi.ptr64 then begin
fprintf oc " movq %a@GOTPCREL(%%rip), %a\n" symbol id ireg64 rd
end else begin
let id = extern_atom id in
indirect_symbols := StringSet.add id !indirect_symbols;
fprintf oc " movl L%a$non_lazy_ptr, %a\n" raw_symbol id ireg rd
end
fprintf oc " movq %a@GOTPCREL(%%rip), %a\n" symbol id ireg64 rd
let print_fun_info _ _ = ()
let print_var_info _ _ = ()
let print_epilogue oc =
if not Archi.ptr64 then begin
fprintf oc " .section __IMPORT,__pointers,non_lazy_symbol_pointers\n";
StringSet.iter
(fun s ->
fprintf oc "L%a$non_lazy_ptr:\n" raw_symbol s;
fprintf oc " .indirect_symbol %a\n" raw_symbol s;
fprintf oc " .long 0\n")
!indirect_symbols;
indirect_symbols := StringSet.empty
end
let print_epilogue oc = ()
let print_comm_decl oc name sz al =
fprintf oc " .comm %a, %s, %d\n"
......
Supports Markdown
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