Skip to content

Mac support (PRs welcome!)#1815

Draft
gilescope wants to merge 12 commits intowild-linker:mainfrom
gilescope:giles-mac
Draft

Mac support (PRs welcome!)#1815
gilescope wants to merge 12 commits intowild-linker:mainfrom
gilescope:giles-mac

Conversation

@gilescope
Copy link
Copy Markdown

Trying to see how much work is required to get basic mac support going.
Currently c and rust hello worlds work. Obviously we'll need to improve the code and make it fit more with existing wild better, but to start with just trying to get bigger rust programs to compile and run without segfaults. So far only tested on mac m3 max.

If anyone wants to join in, PRs welcome from you or your AI friend.

Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
@davidlattimore
Copy link
Copy Markdown
Member

Hey! I've only had a very high-level look, since there's quite a lot here. If you'd like to help out with porting to Mac, I'd suggest discussing on the Wild zulip. There's an existing thread "Mach-o support". Martin is leading the porting effort for Mac. I think it might be getting to the point where there might be scope for multiple people to work concurrently, but definitely check with him first to avoid duplicated efforts and / or hard-to-resolve merge conflicts.

I'm not sure what Martin's thoughts are on integration tests, but that's definitely something we'll need soon and is perhaps more likely to parallelise with other mac work. I see you did some work in this area, which is great. It looks like you opted for a completely separate integration test runner. I think we'd want to actually extend our existing integration test runner to support running mac tests.

Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
Signed-off-by: Giles Cope <gilescope@gmail.com>
…ns, partial linking

Enable remaining Mach-O integration tests (41/41 pass, 0 ignored):

- Emit __stubs and __got section headers; fix PLT/GOT resolution for
  undefined symbols from dylibs
- Populate LC_SYMTAB for executables (backtraces, absolute symbols)
- Set weak_import bit in chained fixups for N_WEAK_REF symbols
- Parse .tbd files via text-stub-library to detect truly undefined
  symbols vs dylib imports
- Emit __gcc_except_tab section header; scan __compact_unwind for
  personality GOT entries; add LSDA descriptors to __unwind_info
- Implement partial linking (-r) producing MH_OBJECT output with
  merged sections, remapped relocations and symbol tables
- Remove unused eh_frame generic parsing abstraction

Signed-off-by: Giles Cope <gilescope@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants