Skip to content

Commit af822ef

Browse files
authored
feat: add arm64 support and improve macOS integration (#124)
See #56 (comment) for details
1 parent af81aad commit af822ef

File tree

132 files changed

+9607
-1723
lines changed

Some content is hidden

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

132 files changed

+9607
-1723
lines changed

.github/flaky-tests.txt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
# seen on macOS 12 and 13
2-
none/tests/allexec32
3-
none/tests/allexec64
42
none/tests/exec-sigmask
53
none/tests/args
4+
# seen on all versions
5+
none/tests/allexec32
6+
none/tests/allexec64
67
memcheck/tests/sem
78
# seen on macOS 13
89
none/tests/sem
10+
# seen on macOS 14
11+
memcheck/tests/leak-cases-summary

.github/macos-13-expected.txt

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,11 @@ memcheck/tests/accounting (stderr)
22
memcheck/tests/addressable (stderr)
33
memcheck/tests/amd64/bug492210_1 (stderr)
44
memcheck/tests/amd64/bug492210_2 (stderr)
5-
memcheck/tests/amd64/fxsave-amd64 (stderr)
65
memcheck/tests/amd64/pcmpgt (stderr)
76
memcheck/tests/amd64/sh-mem-vec128-plo-no (stderr)
87
memcheck/tests/amd64/sh-mem-vec128-plo-yes (stderr)
98
memcheck/tests/amd64/sh-mem-vec256-plo-no (stderr)
109
memcheck/tests/amd64/sh-mem-vec256-plo-yes (stderr)
11-
memcheck/tests/amd64/sse_memory (stderr)
12-
memcheck/tests/amd64/xsave-avx (stderr)
1310
memcheck/tests/atomic_incs (stderr)
1411
memcheck/tests/badfree-2trace (stderr)
1512
memcheck/tests/big_blocks_freed_list (stderr)
@@ -75,8 +72,6 @@ memcheck/tests/origin5-bz2 (stderr)
7572
memcheck/tests/origin6-fp (stderr)
7673
memcheck/tests/overlap (stderr)
7774
memcheck/tests/pointer-trace (stderr)
78-
memcheck/tests/posix_memalign (stderr)
79-
memcheck/tests/posix_memalign_supp (stderr)
8075
memcheck/tests/posix_memalign_xml (stderr)
8176
memcheck/tests/post-syscall (stderr)
8277
memcheck/tests/realloc_size_zero_again_no (stderr)
@@ -91,7 +86,6 @@ memcheck/tests/stpncpy (stderr)
9186
memcheck/tests/strchr (stderr)
9287
memcheck/tests/supponlyobj (stderr)
9388
memcheck/tests/test-plo-no (stderr)
94-
memcheck/tests/test-plo-yes (stderr)
9589
memcheck/tests/thread_alloca (stderr)
9690
memcheck/tests/threadname (stderr)
9791
memcheck/tests/threadname_xml (stderr)
@@ -103,7 +97,6 @@ memcheck/tests/varinfo3 (stderr)
10397
memcheck/tests/varinfo4 (stderr)
10498
memcheck/tests/varinfo5 (stderr)
10599
memcheck/tests/varinfo6 (stderr)
106-
memcheck/tests/vbit-test/vbit-test (stderr)
107100
memcheck/tests/wcpncpy (stderr)
108101
memcheck/tests/wrap5 (stdout)
109102
memcheck/tests/wrap6 (stdout)
@@ -334,7 +327,6 @@ none/tests/bigcode (stdout)
334327
none/tests/bigcode (stderr)
335328
none/tests/bug234814 (stdout)
336329
none/tests/bug234814 (stderr)
337-
none/tests/cmd-with-special (stderr)
338330
none/tests/coolo_sigaction (stdout)
339331
none/tests/darwin/apple-main-arg (stderr)
340332
none/tests/darwin/rlimit (stderr)

.github/macos-14-expected.txt

Lines changed: 410 additions & 0 deletions
Large diffs are not rendered by default.

.github/macos-15-expected.txt

Lines changed: 401 additions & 0 deletions
Large diffs are not rendered by default.

.github/workflows/build.yml

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,30 @@ on:
77

88
env:
99
TEST_FOLDER: .github/test
10+
I_ACKNOWLEDGE_THIS_MIGHT_CRASH_OR_DAMAGE_MY_COMPUTER: yes
1011

1112
jobs:
1213
build_various_platforms:
1314
strategy:
1415
fail-fast: false
1516
matrix:
16-
os: [ubuntu-24.04, macos-13]
17+
os:
18+
- ubuntu-24.04
19+
# x86_64
20+
- macos-13
21+
# arm64
22+
- macos-14
23+
- macos-15
1724

1825
runs-on: ${{ matrix.os }}
1926

2027
name: Build and Test on ${{matrix.os}}
2128

2229
steps:
30+
- name: display environment (macOS)
31+
run: |
32+
sysctl -a
33+
if: ${{ matrix.os != 'ubuntu-24.04' }}
2334
- name: install dependencies (macOS)
2435
run: |
2536
brew update && brew install automake
@@ -44,7 +55,7 @@ jobs:
4455
- name: build
4556
run: make
4657
- name: try ls -l
47-
run: ./vg-in-place --gen-suppressions=all ls -l || ./vg-in-place -v -v -v -v -d -d -d -d ls -l
58+
run: ./vg-in-place --gen-suppressions=all ls -l || ./vg-in-place -v -v -v -v -d -d -d -d -d ls -l
4859
- name: build regression tests
4960
run: XMLLINT=does_not_exist make check
5061
- name: create artifacts folder

.gitignore

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
*.o
2+
.DS_Store
3+
configure~
24

35
# /
46
/.in_place
@@ -44,10 +46,9 @@
4446

4547
# /auxprogs/
4648
/auxprogs/.deps
47-
/auxprogs/getoff-amd64-darwin
49+
/auxprogs/getoff-*-darwin
4850
/auxprogs/getoff-arm-linux
4951
/auxprogs/getoff-arm64-linux
50-
/auxprogs/getoff-x86-darwin
5152
/auxprogs/getoff-amd64-linux
5253
/auxprogs/getoff-x86-linux
5354
/auxprogs/getoff-s390x-linux
@@ -1821,6 +1822,7 @@
18211822
/none/tests/arm/vfpv4_fma
18221823

18231824
# /none/tests/arm64/
1825+
/none/tests/arm64/*.dSYM
18241826
/none/tests/arm64/*.stderr.diff*
18251827
/none/tests/arm64/*.stderr.out
18261828
/none/tests/arm64/*.stdout.diff*
@@ -2503,3 +2505,5 @@ none/tests/freebsd/bug499212
25032505
*.vgtest*.log
25042506
/test-suite-overall.log
25052507
test-suite.log
2508+
2509+
.zed

Makefile.all.am

Lines changed: 25 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ endif
142142

143143
# These flags are used for building the preload shared objects (PSOs).
144144
# The aim is to give reasonable performance but also to have good
145-
# stack traces, since users often see stack traces extending
145+
# stack traces, since users often see stack traces extending
146146
# into (and through) the preloads. Also, we must use any
147147
# -mpreferred-stack-boundary flag to build the preload shared
148148
# objects, since that risks misaligning the client's stack and
@@ -256,21 +256,31 @@ AM_CFLAGS_PSO_ARM64_FREEBSD= @FLAG_M64@ $(AM_CFLAGS_BASE) $(AM_CFLAGS_PSO_BASE)
256256
AM_CCASFLAGS_ARM64_FREEBSD = @FLAG_M64@ -g
257257

258258
AM_FLAG_M3264_X86_DARWIN = -arch i386
259-
AM_CFLAGS_X86_DARWIN = $(WERROR) -arch i386 $(AM_CFLAGS_BASE) \
260-
-I@XCODE_INC_DIR@ \
261-
-mmacosx-version-min=@DARWIN_MIN_SDK@ \
259+
AM_CFLAGS_X86_DARWIN = $(WERROR) $(AM_FLAG_M3264_X86_DARWIN) $(AM_CFLAGS_BASE) \
260+
-I@SDK_INC_DIR@ \
261+
@CLANG_OS_MIN_VERS_ARG@ \
262262
-fno-pic -fno-PIC
263-
264263
AM_CFLAGS_PSO_X86_DARWIN = $(AM_CFLAGS_X86_DARWIN) $(AM_CFLAGS_PSO_BASE)
265-
AM_CCASFLAGS_X86_DARWIN = -arch i386 -g
264+
AM_CCASFLAGS_X86_DARWIN = $(AM_FLAG_M3264_X86_DARWIN) -g
266265

267266
AM_FLAG_M3264_AMD64_DARWIN = -arch x86_64
268-
AM_CFLAGS_AMD64_DARWIN = $(WERROR) -arch x86_64 $(AM_CFLAGS_BASE) \
269-
-I@XCODE_INC_DIR@ \
270-
-mmacosx-version-min=@DARWIN_MIN_SDK@
267+
AM_CFLAGS_AMD64_DARWIN = $(WERROR) $(AM_FLAG_M3264_AMD64_DARWIN) $(AM_CFLAGS_BASE) \
268+
-I@SDK_INC_DIR@ \
269+
@CLANG_OS_MIN_VERS_ARG@
271270
AM_CFLAGS_PSO_AMD64_DARWIN = $(AM_CFLAGS_AMD64_DARWIN) $(AM_CFLAGS_PSO_BASE)
272-
AM_CCASFLAGS_AMD64_DARWIN = -arch x86_64 -g \
273-
-mmacosx-version-min=@DARWIN_MIN_SDK@
271+
AM_CCASFLAGS_AMD64_DARWIN = $(AM_FLAG_M3264_AMD64_DARWIN) -g \
272+
@CLANG_OS_MIN_VERS_ARG@
273+
274+
AM_FLAG_M3264_ARM64_DARWIN = -arch arm64
275+
AM_CFLAGS_ARM64_DARWIN = $(WERROR) $(AM_FLAG_M3264_ARM64_DARWIN) $(AM_CFLAGS_BASE) \
276+
-I@SDK_INC_DIR@ @CLANG_OS_MIN_VERS_ARG@
277+
# Repeated instead of using $(AM_CFLAGS_ARM64_DARWIN) because we need to use
278+
# a different arch for preloads (arm64e)
279+
AM_CFLAGS_PSO_ARM64_DARWIN = $(WERROR) $(AM_FLAG_M3264_ARM64_DARWIN)e $(AM_CFLAGS_BASE) \
280+
-I@SDK_INC_DIR@ @CLANG_OS_MIN_VERS_ARG@ \
281+
$(AM_CFLAGS_PSO_BASE)
282+
AM_CCASFLAGS_ARM64_DARWIN = $(AM_FLAG_M3264_ARM64_DARWIN) -g \
283+
@CLANG_OS_MIN_VERS_ARG@
274284

275285
AM_FLAG_M3264_S390X_LINUX = @FLAG_M64@
276286
AM_CFLAGS_S390X_LINUX = @FLAG_M64@ $(AM_CFLAGS_BASE) -fomit-frame-pointer
@@ -324,7 +334,7 @@ AM_CCASFLAGS_PRI = $(AM_CCASFLAGS_@VGCONF_PLATFORM_PRI_CAPS@)
324334
if VGCONF_HAVE_PLATFORM_SEC
325335
AM_FLAG_M3264_SEC = $(AM_FLAG_M3264_@VGCONF_PLATFORM_SEC_CAPS@)
326336
else
327-
AM_FLAG_M3264_SEC =
337+
AM_FLAG_M3264_SEC =
328338
endif
329339

330340

@@ -355,8 +365,9 @@ PRELOAD_LDFLAGS_ARM64_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
355365
PRELOAD_LDFLAGS_X86_FREEBSD = $(PRELOAD_LDFLAGS_COMMON_FREEBSD) @FLAG_M32@
356366
PRELOAD_LDFLAGS_AMD64_FREEBSD = $(PRELOAD_LDFLAGS_COMMON_FREEBSD) @FLAG_M64@
357367
PRELOAD_LDFLAGS_ARM64_FREEBSD = $(PRELOAD_LDFLAGS_COMMON_FREEBSD) @FLAG_M64@
358-
PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch i386
359-
PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) -arch x86_64
368+
PRELOAD_LDFLAGS_X86_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) $(AM_FLAG_M3264_X86_DARWIN)
369+
PRELOAD_LDFLAGS_AMD64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN) $(AM_FLAG_M3264_AMD64_DARWIN)
370+
PRELOAD_LDFLAGS_ARM64_DARWIN = $(PRELOAD_LDFLAGS_COMMON_DARWIN)
360371
PRELOAD_LDFLAGS_S390X_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M64@
361372
PRELOAD_LDFLAGS_MIPS32_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@
362373
PRELOAD_LDFLAGS_NANOMIPS_LINUX = $(PRELOAD_LDFLAGS_COMMON_LINUX) @FLAG_M32@

Makefile.am

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -51,8 +51,9 @@ SUPP_FILES = \
5151
freebsd.supp freebsd-helgrind.supp freebsd-drd.supp \
5252
darwin10.supp darwin10-drd.supp \
5353
darwin11.supp darwin12.supp darwin13.supp darwin14.supp darwin15.supp \
54-
darwin16.supp darwin17.supp darwin18.supp darwin19.supp darwin20.supp \
55-
darwin21.supp darwin22.supp \
54+
darwin16.supp darwin17.supp darwin18.supp darwin19.supp \
55+
darwin21-amd64.supp darwin22-amd64.supp darwin23-amd64.supp \
56+
darwin23-arm64.supp darwin24-amd64.supp darwin24-arm64.supp \
5657
bionic.supp \
5758
solaris11.supp solaris12.supp \
5859
musl.supp

Makefile.tool.am

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,9 @@ TOOL_LDFLAGS_X86_DARWIN = \
9797
TOOL_LDFLAGS_AMD64_DARWIN = \
9898
$(TOOL_LDFLAGS_COMMON_DARWIN) -arch x86_64
9999

100+
TOOL_LDFLAGS_ARM64_DARWIN = \
101+
$(TOOL_LDFLAGS_COMMON_DARWIN) -arch arm64
102+
100103
# MIPS Linux default start symbol is __start, not _start like on x86 or amd
101104
TOOL_LDFLAGS_MIPS32_LINUX = \
102105
-static -nodefaultlibs -nostartfiles -u __start @FLAG_NO_BUILD_ID@ \
@@ -175,6 +178,9 @@ LIBREPLACEMALLOC_X86_DARWIN = \
175178
LIBREPLACEMALLOC_AMD64_DARWIN = \
176179
$(top_builddir)/coregrind/libreplacemalloc_toolpreload-amd64-darwin.a
177180

181+
LIBREPLACEMALLOC_ARM64_DARWIN = \
182+
$(top_builddir)/coregrind/libreplacemalloc_toolpreload-arm64-darwin.a
183+
178184
LIBREPLACEMALLOC_S390X_LINUX = \
179185
$(top_builddir)/coregrind/libreplacemalloc_toolpreload-s390x-linux.a
180186

@@ -249,6 +255,9 @@ LIBREPLACEMALLOC_LDFLAGS_X86_DARWIN = \
249255
LIBREPLACEMALLOC_LDFLAGS_AMD64_DARWIN = \
250256
$(LIBREPLACEMALLOC_AMD64_DARWIN)
251257

258+
LIBREPLACEMALLOC_LDFLAGS_ARM64_DARWIN = \
259+
$(LIBREPLACEMALLOC_ARM64_DARWIN)
260+
252261
LIBREPLACEMALLOC_LDFLAGS_S390X_LINUX = \
253262
-Wl,--whole-archive \
254263
$(LIBREPLACEMALLOC_S390X_LINUX) \
@@ -290,4 +299,3 @@ clean-local: clean-noinst_DSYMS
290299
install-exec-local: install-noinst_PROGRAMS install-noinst_DSYMS
291300

292301
uninstall-local: uninstall-noinst_PROGRAMS uninstall-noinst_DSYMS
293-

0 commit comments

Comments
 (0)