Commit Graph

1243 Commits

Author SHA1 Message Date
Daniel Rodríguez Troitiño
5280cea889 [Macros] In-process plugin server library tied to compiler host, not target (#74785)
PR #73725 introduced the in-process plugin server library, but the
selection of the library depends on the selected toolchain, which
depends on the compiler target, not the host. When cross-compiling (for
example from macOS to a embedded Unix target), the compiler will
incorrectly chose the `.so` file, not find it, and fail to compile
things like the `@debugDescription` macro.

Move the in-process plugin server library code from the platform
toolchains into the parent type, and code it so it uses the right name
depending on the compiler host at compilation time. This discards the
target and only relies on the compiler host for selecting the right
library.
2024-07-01 08:50:54 -07:00
Adrian Prantl
1a06ddc3ba Bump the DWARF version number to 5 on Darwin.
The default debug info format for newer versions of Darwin is DWARF 5.

https://developer.apple.com/documentation/xcode-release-notes/xcode-16-release-notes

rdar://110925733
2024-06-11 14:44:58 -07:00
thetruestblue
3789b318a4 Update sanitize_coverage.swift 2024-05-13 09:52:41 -07:00
Blue Gaston
68923d4035 Adds valid arguments to -sanitize-coverage: pc-table and inline-8bit-counter.
As is, you cannot set all default fuzzer options directly using -sanitize-coverage. Because of this you can use default fuzzer sanitize-coverage args, or a limited number coverage options.

This PR adds pc-table and inline-8bit-counter as valid args to be parsed for sanitize-coverage flag. These are default fuzzer options -- and will allow customizing sanitizer-coverage in variations of fuzzer defaults. (i.e. w/o pc-table enabled).

In upstream clang the option -fno-sanitize-coverage exists to disable various coverage options. Swift currently does not have a convention of using excluding args for sanitizer flags. This aims to limit the need for a new flag by inclusively setting desired coverage up to current fuzzer defaults.

rdar://127881891
2024-05-13 07:51:25 -07:00
Alastair Houghton
f9ec4793e9 [Test] Add linker_overridden feature.
When testing different linkers, it's sometimes useful to run the tests
with `SWIFT_DRIVER_TEST_OPTIONS=" -use-ld=<linker>"`.  If we do this,
it will break a handful of tests because they expect the compiler driver
to choose an appropriate linker automatically.

To avoid having these fail, detect when someone has done this, and
set a new feature, `linker_overridden`, then mark the tests in question
with `UNSUPPORTED: linker_overridden`.

rdar://123504095
2024-04-29 10:48:22 +01:00
Alastair Houghton
3c029ebd3f [IRGen] Use llvm.used on ELF instead of llvm.compiler.used.
We changed to `llvm.compiler.used` because of the behaviour of `gold`,
which refuses to coalesce sections that have different `SHF_GNU_RETAIN`
flags, which causes problems with metadata.

Originally I thought we were going to have to generate two sections
with distinct names and have the runtime look for both of them, but
it turns out that the runtime only wants to see sections that have
`SHF_GNU_RETAIN` in any case.  It's really the reflection code that
is interested in being able to see non-retained sections.  The upshot
is that we don't need to use `llvm.compiler.used`; it's just fine if
we have duplicate sections, as long as the reflection code looks for
them when it's inspecting an ELF image.

This also means we no longer need to pass `-z nostart-stop-gc` to the
linker if we're using `lld`.

rdar://123504095
2024-04-29 10:48:22 +01:00
Doug Gregor
0c9c734f7e Merge pull request #71722 from DougGregor/diagnostic-style-swift-default 2024-02-24 14:42:38 -10:00
Alex Hoppen
a49994d72f [Driver] Don’t crash if the output file map is incomplete
When using VS Code, it semi-frequently happens that sourcekitd is reading the output file map and the memory buffer containing the memory buffer containing the output file map is not complete and terminates at distinct powers of 2. I managed to attach a debugger once and the memory buffer containing the output file had size 0x3000 = 12288 while the actual output file map is 20319 bytes large. One hypothesis for this is that the read of output file map is racing with a write from a SwiftPM build but I haven’t been able to confirm it.

In either case, the result is that the output file map buffer ends with an unterminated string literal, which causes `getKey()` or `getValue()` in the JSON parser to return `nullptr` and then consequently hits an assertion failure in `dyn_cast`. Add a check for nullptr before invoking `dyn_cast` just like we do it in the outer `for` loop.

rdar://122364031
2024-02-21 07:09:23 -08:00
Doug Gregor
27a1baf6f9 Disable new diagnostic formatter for a few tests I missed 2024-02-19 07:43:58 -10:00
Doug Gregor
8cd2f34654 Generalize tests for both diagnostic styles, or force the LLVM style
These tests are using FileCheck to check the result of diagnostic
formatting in ways that don't match the new formatter. Force the old
formatter or, where possible, generalize so that they match both
formatters.
2024-02-19 02:48:37 -10:00
Holly Borla
6a3bacdf45 [Test] Fix expected output in test/Driver/swift-version-6.swift. 2024-02-13 08:32:52 -08:00
Holly Borla
f1cd9cb422 [Test] Remove REQUIRES: asserts from tests that use -swift-version 6. 2024-02-13 07:13:35 -08:00
Holly Borla
ad63302e41 [Concurrency] Make Swift 6 available in noasserts compilers. 2024-02-13 07:05:36 -08:00
Lang Hames
c68e3bfb69 Update Driver/options-interpreter.swift for 8eb9475ed8 2024-01-24 16:58:05 -08:00
Rintaro Ishizaki
a61ed80813 [Macros] Track macro dependency separately in module trace
Macro plugins are not normal Swift modules, track them differently.
Add "swiftmacros" field to the JSON file.

rdar://118013482
2024-01-19 12:56:02 -08:00
Artem Chikin
73b01dccfc Remove incremental builds from the Legacy driver
The C++-based driver is deprecated and this will help reduce the code surface that requires maintenance as the legacy driver is fully sunset.
2024-01-16 16:34:51 -08:00
Artem Chikin
6a181fb04c Add symlinks for the legacy driver invocation (for emergency fallback invoked from 'swift-driver') 2024-01-03 14:12:22 -08:00
usama
3053fe01b5 [Sanitizers] Add new sanitize-stable-abi flag for libsanitizers.
This patch adds a new flag sanitize-stable-abi to support linking
against the Sanitizers stable ABI added recently in compiler-rt. The
patch also passes extra options for the ASan pass when using this flag
to outline instrumentation code and remove version check.

rdar://112915278
2023-12-16 14:13:00 -08:00
Adrian Prantl
fae0618656 Add more dwarf version driver tests 2023-12-13 09:48:46 -08:00
Adrian Prantl
c512f56934 Add more dwarf version driver tests 2023-12-07 15:44:23 -08:00
Angela Laar
3e4b539a42 Disable embed-bitcode-parallel-fine.swift 2023-11-27 15:25:30 -08:00
Richard Wei
51acf75cb5 Fix compiler crash when emitting objc header with C++ interop enabled
This was because `LoweredFunctionSignature::visitParameterList` has a special case for parameters with an empty LLVM representation (e.g. an empty struct) but forgot to increment the counter, which then tripped the assertion.

Resolves #70016.
2023-11-24 02:25:08 -08:00
Finagolfin
a03f6e5b3a [Build] Enable building and CI testing the early Swift Driver on linux with the prebuilt host toolchain 2023-11-08 20:09:59 +05:30
Meghana Gupta
01612aec21 Disable Driver/bad_tmpdir.swift failing in CI 2023-10-27 13:51:03 -07:00
Adrian Prantl
5d978b44ca Revert "Revert "Make the DWARF version emitted by the Swift compiler configurable."" 2023-10-26 12:29:18 -07:00
Adrian Prantl
2a32ca5944 Revert "Make the DWARF version emitted by the Swift compiler configurable." 2023-10-25 13:28:28 -07:00
Adrian Prantl
a26bbb0baf Make the DWARF version emitted by the Swift compiler configurable.
Previously it was hardcoded to version 4 on all platforms.
This patch introduces a driver and frontend option -dwarf-version to configure it if needed.
2023-10-24 12:30:16 -07:00
Evan Wilde
05fb5075ed Revert "test: un-XFAIL on Windows for rebranch"
This reverts commit ed9e4dbc19.

This test has started failing again, as it was before September, so I'm
going to revert the removal of the xfail. It's testing the old driver
anyway, which folks shouldn't be using.
2023-10-07 22:05:56 -07:00
Saleem Abdulrasool
ed9e4dbc19 test: un-XFAIL on Windows for rebranch
This test is now passing on Windows.  Simply remove the XFAIL to match
the current state.
2023-09-15 14:32:27 -07:00
swift-ci
d7622b5963 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-04 18:36:48 -07:00
Saleem Abdulrasool
d4304e7287 Update windows-link-job.swift
Fix an incorrect alteration to the test
2023-09-04 14:52:18 -07:00
swift-ci
d2293917b3 Merge remote-tracking branch 'origin/main' into rebranch 2023-09-04 10:33:15 -07:00
Saleem Abdulrasool
6407c646ab test: mark a job incompatible with Swift parser
Due to the fact that we do not statically link the toolchain, we cannot
currently support this test.  Mark it as unavailable currently with the
early syntax parser enabled.
2023-09-04 08:01:59 -07:00
swift-ci
dbe6df083f Merge remote-tracking branch 'origin/main' into rebranch 2023-09-01 09:13:39 -07:00
Manu
02b5fa2c8e Fix some typos in the codebase 2023-08-31 18:50:10 -03:00
swift-ci
fca0dc0a16 Merge remote-tracking branch 'origin/main' into rebranch 2023-08-29 07:34:13 -07:00
Allan Shortlidge
5186971a02 Frontend: Introduce -experimental-serialize-external-decls-only option.
This option is designed to be used in conjunction with
`-experimental-lazy-typecheck` and `-experimental-skip-all-function-bodies`
when emitting a resilient module. The emitted binary module should contain only
the decls needed by clients and should contain roughly the same contents as it
would if the corresponding swiftinterface were emitted instead and then built.

This functionality is a work in progress. Some parts of the AST may still get
typechecked unnecessarily. Additionally, serialization does not trigger the
appropriate typechecking requests for some ASTs and then fails due to missing
types.

Resolves rdar://114230586
2023-08-28 21:22:20 -07:00
Cory Benfield
955927eceb Update scudo runtime library name
The scudo runtime was renamed to indicate that it now must run
standalone from other sanitizers. This patch updates the driver to
search for the appropriate filename.

LLVM rename: https://reviews.llvm.org/D138157
2023-08-23 15:36:24 -07:00
Allan Shortlidge
c05b3e4d66 Tests: Adopt -experimental-lazy-typecheck in tests.
Also, restructure the `CHECK:` lines for the `-emit-tbd` test. The number of
columns in the `.tbd` file appears to be variable, so we can't assume a layout
for the symbols in the YAML.
2023-08-18 16:29:56 -07:00
Finagolfin
30ba49e7fa [android][test] Fix a handful of tests and disable one CxxToSwiftToCxx bridging test
Also, make the analogous change to apple/swift-driver#1372, which gets the
sanitizer tests working on Android again, and remove the lld_lto feature in the
tests, which is now unused.
2023-08-12 16:36:35 +05:30
Doug Gregor
c2f5a9ad32 [Darwin macro platform paths] Add iOS simulator test 2023-07-20 17:13:25 -07:00
Ben Barham
591737e1c9 [Test] Small test fix
We want to redirect stderr to stdout, not to ^1.
2023-06-28 15:15:27 -07:00
Doug Gregor
1ec900e2a0 [Macros] Add default plugin paths for Darwin SDKs and platforms.
Corresponding to https://github.com/apple/swift-driver/pull/1377, this
adds some default plugin paths for Darwin SDKs and platforms.
Fixes rdar://110819604.
2023-06-16 14:55:20 -07:00
Egor Zhdan
d5c301823c Merge pull request #66546 from finagolfin/runtime
[Driver] Remove unused runtime library path on non-Darwin platforms
2023-06-15 13:03:46 +01:00
Tristan Labelle
11f34b7ec9 Fix linting error 2023-06-13 10:28:42 -04:00
Tristan Labelle
0d5aa7fcbe Fix non-glob paths in touch.py 2023-06-12 14:27:03 -04:00
Tristan Labelle
6308cd0834 Migrate test to touch.py 2023-06-12 14:21:34 -04:00
Finagolfin
8f0c2d3ace [Driver] Remove unused runtime library path on non-Darwin platforms
Translation of apple/swift-driver#1374 to the legacy C++ Driver, with the
addition of a test.
2023-06-12 01:04:19 +05:30
Tristan Labelle
3c51106fad Fix tests on Windows CI with vs2022 2023-06-09 16:41:05 -04:00
Yuta Saito
c994500d82 [Driver] Use WebAssembly toolchain for WASI target
The toolchain was introduced in 710816d3e0
but was not used. Test cases now use fake resource dir to lookup
static-executable-args.lnk file, which is required by the toolchain but
is not present when not building stdlib for WASI.
2023-06-08 11:40:10 +00:00