Skip to content

Commit

Permalink
Fix use of va_list on Android.
Browse files Browse the repository at this point in the history
  • Loading branch information
rmacnak committed May 18, 2024
1 parent aa47c50 commit b91078b
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 9 deletions.
11 changes: 11 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,17 @@ jobs:
sudo apt-get install g++-multilib scons
- name: Build
run: ./build ndk=$ANDROID_NDK
- name: Enable KVM
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: Test
uses: reactivecircus/android-emulator-runner@v2
with:
arch: x86_64
api-level: 28
script: ./.github/workflows/test-android-x64
web:
runs-on: ubuntu-latest
steps:
Expand Down
13 changes: 13 additions & 0 deletions .github/workflows/test-android-x64
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
#!/bin/bash -ex
adb push out/snapshots/HelloApp.vfuel /data/local/tmp
adb push out/snapshots/TestRunner.vfuel /data/local/tmp
adb push out/snapshots/BenchmarkRunner.vfuel /data/local/tmp

adb push out/DebugAndroidX64/primordialsoup /data/local/tmp
adb shell /data/local/tmp/primordialsoup /data/local/tmp/HelloApp.vfuel
adb shell /data/local/tmp/primordialsoup /data/local/tmp/TestRunner.vfuel

adb push out/ReleaseAndroidX64/primordialsoup /data/local/tmp
adb shell /data/local/tmp/primordialsoup /data/local/tmp/HelloApp.vfuel
adb shell /data/local/tmp/primordialsoup /data/local/tmp/TestRunner.vfuel
adb shell /data/local/tmp/primordialsoup /data/local/tmp/BenchmarkRunner.vfuel
21 changes: 12 additions & 9 deletions vm/os_android.cc
Original file line number Diff line number Diff line change
Expand Up @@ -63,25 +63,28 @@ intptr_t OS::NumberOfAvailableProcessors() {
return sysconf(_SC_NPROCESSORS_ONLN);
}

static void VFPrint(FILE* stream, const char* format, va_list args) {
vfprintf(stream, format, args);
fflush(stream);
}

void OS::Print(const char* format, ...) {
va_list args;

va_start(args, format);
vfprintf(stdout, format, args);
fflush(stdout);
va_end(args);

va_start(args, format);
VFPrint(stdout, format, args);
// Forward to the Android log for remote access.
__android_log_vprint(ANDROID_LOG_INFO, "PrimordialSoup", format, args);
va_end(args);
}

void OS::PrintErr(const char* format, ...) {
va_list args;

va_start(args, format);
vfprintf(stderr, format, args);
fflush(stderr);
va_end(args);

va_start(args, format);
VFPrint(stderr, format, args);
// Forward to the Android log for remote access.
__android_log_vprint(ANDROID_LOG_ERROR, "PrimordialSoup", format, args);
va_end(args);
}
Expand Down

0 comments on commit b91078b

Please sign in to comment.