Skip to content

Commit c9c54aa

Browse files
committed
Revert "Merge pull request n64decomp#5 from tehzz/darwin-user"
This reverts commit 9adc93c, reversing changes made to f636a03.
1 parent 2a41666 commit c9c54aa

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+23
-41168
lines changed

Makefile.objs

-1
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,6 @@ trace-events-subdirs += target/s390x
245245
trace-events-subdirs += target/ppc
246246
trace-events-subdirs += qom
247247
trace-events-subdirs += linux-user
248-
trace-events-subdirs += darwin-user
249248
trace-events-subdirs += qapi
250249
trace-events-subdirs += accel/tcg
251250
trace-events-subdirs += accel/kvm

Makefile.target

-14
Original file line numberDiff line numberDiff line change
@@ -129,20 +129,6 @@ obj-y += gdbstub.o
129129

130130
endif #CONFIG_BSD_USER
131131

132-
#########################################################
133-
# macOS user emulator target
134-
135-
ifdef CONFIG_DARWIN_USER
136-
137-
QEMU_CFLAGS+=-I$(SRC_PATH)/darwin-user/$(TARGET_ABI_DIR) \
138-
-I$(SRC_PATH)/darwin-user/host/$(ARCH) \
139-
-I$(SRC_PATH)/darwin-user
140-
141-
obj-y += darwin-user/
142-
obj-y += gdbstub.o thunk.o
143-
144-
endif #CONFIG_DARWIN_USER
145-
146132
#########################################################
147133
# System emulator target
148134
ifdef CONFIG_SOFTMMU

README.md

+2-18
Original file line numberDiff line numberDiff line change
@@ -1,32 +1,16 @@
11
This QEMU patch introduces irix/solaris userland emulation. It currently runs
2-
only under linux and macOS (though BSD support would probably be feasable).
2+
only under linux (though BSD support would probably be feasable).
33

44
### compiling
55

6-
Configure QEMU for irix/solaris userland emulation for linux and compile (see the original
6+
Configure QEMU for irix/solaris userland emulation and compile (see the original
77
QEMU README for further instructions):
88

99
```
1010
configure --target-list=irix-linux-user,irixn32-linux-user,irix64-linux-user,solaris-linux-user
1111
make && make install
1212
```
1313

14-
Or, configure QEMU for irix userland emulatin for macOS
15-
16-
```
17-
./configure --target-list=irix-darwin-user \
18-
--disable-vnc \
19-
--disable-sdl \
20-
--disable-gtk \
21-
--disable-cocoa \
22-
--disable-opengl \
23-
--disable-capstone \
24-
--disable-hax \
25-
--disable-hvf \
26-
--disable-tools
27-
make
28-
```
29-
3014
### using
3115

3216
I recommend using binfmt. I have prepared some scripts for this which you can

accel/tcg/translate-all.c

+2-24
Original file line numberDiff line numberDiff line change
@@ -430,8 +430,7 @@ static void page_init(void)
430430
#else
431431
FILE *f;
432432

433-
// depreciated in osx, but value is not used?
434-
//last_brk = (unsigned long)sbrk(0);
433+
last_brk = (unsigned long)sbrk(0);
435434

436435
f = fopen("/compat/linux/proc/self/maps", "r");
437436
if (f) {
@@ -603,27 +602,8 @@ static inline void *split_cross_256mb(void *buf1, size_t size1)
603602
return buf1;
604603
}
605604
#endif
606-
#ifdef USE_STATIC_CODE_GEN_BUFFER
607-
#if defined(CONFIG_DARWIN_USER)
608-
static inline void *alloc_code_gen_buffer(void)
609-
{
610-
int prot = PROT_WRITE | PROT_READ | PROT_EXEC;
611-
int flags = MAP_PRIVATE | MAP_ANON;
612-
/* let a kernel pick an address close to the executable */
613-
uintptr_t start = 0;
614-
/* Honor a command-line option limiting the size of the buffer. */
615-
size_t size = DEFAULT_CODE_GEN_BUFFER_SIZE;
616-
void *buf;
617605

618-
buf = mmap((void *)start, size, prot, flags, -1, 0);
619-
if (buf == MAP_FAILED) {
620-
return NULL;
621-
}
622-
623-
qemu_madvise(buf, size, QEMU_MADV_HUGEPAGE);
624-
return buf;
625-
}
626-
#else /* !CONFIG_DARWIN_USER */
606+
#ifdef USE_STATIC_CODE_GEN_BUFFER
627607
static uint8_t static_code_gen_buffer[DEFAULT_CODE_GEN_BUFFER_SIZE]
628608
__attribute__((aligned(CODE_GEN_ALIGN)));
629609

@@ -660,8 +640,6 @@ static inline void *alloc_code_gen_buffer(void)
660640

661641
return buf;
662642
}
663-
#endif /* CONFIG_DARWIN_USER */
664-
665643
#elif defined(_WIN32)
666644
static inline void *alloc_code_gen_buffer(void)
667645
{

accel/tcg/user-exec.c

-5
Original file line numberDiff line numberDiff line change
@@ -244,11 +244,6 @@ int cpu_signal_handler(int host_signum, void *pinfo,
244244
#define TRAP_sig(context) ((context)->sc_trapno)
245245
#define ERROR_sig(context) ((context)->sc_err)
246246
#define MASK_sig(context) ((context)->sc_mask)
247-
#elif defined(__APPLE__)
248-
#define PC_sig(context) ((context)->uc_mcontext->__ss.__rip)
249-
#define TRAP_sig(context) ((context)->uc_mcontext->__es.__trapno)
250-
#define ERROR_sig(context) ((context)->uc_mcontext->__es.__err)
251-
#define MASK_sig(context) ((context)->uc_sigmask)
252247
#elif defined(__FreeBSD__) || defined(__DragonFly__)
253248
#include <ucontext.h>
254249

configure

+16-65
Original file line numberDiff line numberDiff line change
@@ -249,12 +249,6 @@ supported_target() {
249249
return 1
250250
fi
251251
;;
252-
*-darwin-user)
253-
if test "$darwin" != "yes"; then
254-
print_error "Target '$target' is only available on a Darwin host"
255-
return 1
256-
fi
257-
;;
258252
*)
259253
print_error "Invalid target name '$target'"
260254
return 1
@@ -396,7 +390,6 @@ cocoa="no"
396390
softmmu="yes"
397391
linux_user="no"
398392
bsd_user="no"
399-
darwin_user="no"
400393
blobs="yes"
401394
pkgversion=""
402395
pie=""
@@ -773,7 +766,6 @@ OpenBSD)
773766
Darwin)
774767
bsd="yes"
775768
darwin="yes"
776-
darwin_user="yes"
777769
hax="yes"
778770
hvf="yes"
779771
LDFLAGS_SHARED="-bundle -undefined dynamic_lookup"
@@ -1127,7 +1119,6 @@ for opt do
11271119
--disable-user)
11281120
linux_user="no" ;
11291121
bsd_user="no" ;
1130-
darwin_user="no" ;
11311122
;;
11321123
--enable-user) ;;
11331124
--disable-linux-user) linux_user="no"
@@ -1138,10 +1129,6 @@ for opt do
11381129
;;
11391130
--enable-bsd-user) bsd_user="yes"
11401131
;;
1141-
--disable-darwin-user) darwin_user="no"
1142-
;;
1143-
--enable-darwin-user) darwin_user="yes"
1144-
;;
11451132
--enable-pie) pie="yes"
11461133
;;
11471134
--disable-pie) pie="no"
@@ -1452,7 +1439,6 @@ QEMU_CFLAGS="$CPU_CFLAGS $QEMU_CFLAGS"
14521439
if [ "$ARCH" = "unknown" ]; then
14531440
bsd_user="no"
14541441
linux_user="no"
1455-
darwin_user="no"
14561442
fi
14571443

14581444
default_target_list=""
@@ -1468,10 +1454,6 @@ fi
14681454
if [ "$bsd_user" = "yes" ]; then
14691455
mak_wilds="${mak_wilds} $source_path/default-configs/*-bsd-user.mak"
14701456
fi
1471-
if [ "$darwin_user" = "yes" ]; then
1472-
mak_wilds="${mak_wilds} $source_path/default-configs/*-darwin-user.mak"
1473-
fi
1474-
14751457

14761458
for config in $mak_wilds; do
14771459
default_target_list="${default_target_list} $(basename "$config" .mak)"
@@ -1566,7 +1548,6 @@ disabled with --disable-FEATURE, default is enabled if available:
15661548
user supported user emulation targets
15671549
linux-user all linux usermode emulation targets
15681550
bsd-user all BSD usermode emulation targets
1569-
darwin-user all MacOS usermode emulation targets
15701551
docs build documentation
15711552
guest-agent build the QEMU Guest Agent
15721553
guest-agent-msi build guest agent Windows MSI installation package
@@ -5610,7 +5591,7 @@ if test "$cpu" = "s390x" ; then
56105591
fi
56115592

56125593
# Probe for the need for relocating the user-only binary.
5613-
if ( [ "$linux_user" = yes ] || [ "$bsd_user" = yes ] || [ "$darwin_user" = yes ] ) && [ "$pie" = no ]; then
5594+
if ( [ "$linux_user" = yes ] || [ "$bsd_user" = yes ] ) && [ "$pie" = no ]; then
56145595
textseg_addr=
56155596
case "$cpu" in
56165597
arm | i386 | ppc* | s390* | sparc* | x86_64 | x32)
@@ -5623,53 +5604,31 @@ if ( [ "$linux_user" = yes ] || [ "$bsd_user" = yes ] || [ "$darwin_user" = yes
56235604
textseg_addr=0x60000000
56245605
;;
56255606
esac
5626-
56275607
if [ -n "$textseg_addr" ]; then
56285608
cat > $TMPC <<EOF
56295609
int main(void) { return 0; }
56305610
EOF
5631-
# 64bit macOS reserves 4GB for page zero to catch truncated pointer to int casts.
5632-
# Follow suggested Wine configuration from:
5633-
# https://stackoverflow.com/questions/46916112/osx-ld-why-does-pagezero-size-default-to-4gb-on-64b-osx
5634-
if [ "$darwin_user" = yes ] ; then
5635-
pz_size_flag=",-pagezero_size,0x1000"
5636-
else
5637-
pz_size_flag=""
5638-
fi
5611+
textseg_ldflags="-Wl,-Ttext-segment=$textseg_addr"
5612+
if ! compile_prog "" "$textseg_ldflags"; then
5613+
# In case ld does not support -Ttext-segment, edit the default linker
5614+
# script via sed to set the .text start addr. This is needed on FreeBSD
5615+
# at least.
5616+
if ! $ld --verbose >/dev/null 2>&1; then
5617+
error_exit \
5618+
"We need to link the QEMU user mode binaries at a" \
5619+
"specific text address. Unfortunately your linker" \
5620+
"doesn't support either the -Ttext-segment option or" \
5621+
"printing the default linker script with --verbose." \
5622+
"If you don't want the user mode binaries, pass the" \
5623+
"--disable-user option to configure."
5624+
fi
56395625

5640-
# Check three different sets of ld flags:
5641-
# default_... for standard gnu ld (Linux)
5642-
# clang_... for llvm clang
5643-
# macos_... for macOS built-in ld
5644-
# If none of the above options are supported, edit the default linker
5645-
# script via sed to set the .text start addr. This is needed on FreeBSD
5646-
# at least.
5647-
default_ldflags="-Wl,-Ttext-segment=$textseg_addr"
5648-
clang_ldflags="-Wl,-image-base,${textseg_addr}${pz_size_flag}"
5649-
macos_ldflags="-Wl,-image_base,${textseg_addr}${pz_size_flag}"
5650-
5651-
if compile_prog "" "$default_ldflags"; then
5652-
textseg_ldflags="$default_ldflags"
5653-
elif compile_prog "" "$clang_ldflags"; then
5654-
textseg_ldflags="$clang_ldflags"
5655-
elif compile_prog "" "$macos_ldflags"; then
5656-
textseg_ldflags="$macos_ldflags"
5657-
elif $ld --verbose >/dev/null 2>&1; then
56585626
$ld --verbose | sed \
56595627
-e '1,/==================================================/d' \
56605628
-e '/==================================================/,$d' \
56615629
-e "s/[.] = [0-9a-fx]* [+] SIZEOF_HEADERS/. = $textseg_addr + SIZEOF_HEADERS/" \
56625630
-e "s/__executable_start = [0-9a-fx]*/__executable_start = $textseg_addr/" > config-host.ld
56635631
textseg_ldflags="-Wl,-T../config-host.ld"
5664-
else
5665-
error_exit \
5666-
"We need to link the QEMU user mode binaries at a" \
5667-
"specific text address. Unfortunately your linker" \
5668-
"doesn't support either the -Ttext-segment option," \
5669-
"-image_base, -image-base, or printing the default" \
5670-
"linker script with --verbose." \
5671-
"If you don't want the user mode binaries, pass the" \
5672-
"--disable-user option to configure."
56735632
fi
56745633
fi
56755634
fi
@@ -6736,7 +6695,6 @@ target_softmmu="no"
67366695
target_user_only="no"
67376696
target_linux_user="no"
67386697
target_bsd_user="no"
6739-
target_darwin_user="no"
67406698
case "$target" in
67416699
${target_name}-softmmu)
67426700
target_softmmu="yes"
@@ -6749,10 +6707,6 @@ case "$target" in
67496707
target_user_only="yes"
67506708
target_bsd_user="yes"
67516709
;;
6752-
${target_name}-darwin-user)
6753-
target_user_only="yes"
6754-
target_darwin_user="yes"
6755-
;;
67566710
*)
67576711
error_exit "Target '$target' not recognised"
67586712
exit 1
@@ -7000,9 +6954,6 @@ fi
70006954
if test "$target_linux_user" = "yes" ; then
70016955
echo "CONFIG_LINUX_USER=y" >> $config_target_mak
70026956
fi
7003-
if test "$target_darwin_user" = "yes" ; then
7004-
echo "CONFIG_DARWIN_USER=y" >> $config_target_mak
7005-
fi
70066957
list=""
70076958
if test ! -z "$gdb_xml_files" ; then
70086959
for x in $gdb_xml_files; do
@@ -7117,7 +7068,7 @@ if test "$gprof" = "yes" ; then
71177068
fi
71187069
fi
71197070

7120-
if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" -o "$target_darwin_user" = "yes" ; then
7071+
if test "$target_linux_user" = "yes" -o "$target_bsd_user" = "yes" ; then
71217072
ldflags="$ldflags $textseg_ldflags"
71227073
fi
71237074

darwin-user/Makefile.objs

-8
This file was deleted.

0 commit comments

Comments
 (0)