Commit Graph

244 Commits

Author SHA1 Message Date
Jakub Konka
5c8acc551d test/link/macho: revert testing objc msgsend stubs - no way of enabling in clang 2024-01-24 12:34:40 +01:00
Jakub Konka
000598acc9 test/link/macho: test objc msgsend selector stubs 2024-01-24 12:34:40 +01:00
Jakub Konka
3d835dea2a test/link/macho: use .root_module. instead of wrappers where possible 2024-01-24 12:34:40 +01:00
Jakub Konka
abeb0e3ea4 test/link/macho: test force-loading objects containing ObjC from archives 2024-01-24 12:34:40 +01:00
Jakub Konka
7c65f0be37 test/link/macho: test no exports in a dylib 2024-01-24 12:34:40 +01:00
Jakub Konka
4cf94bb148 test/link/macho: test attribute "used" on vars in presence of dead_strip 2024-01-24 12:34:40 +01:00
Jakub Konka
4dc1907a88 test/link/macho: upgrade strict validation of layout test 2024-01-24 12:34:40 +01:00
Jakub Konka
a25b780aad test/link/macho: upgrade entry and entry in archive tests 2024-01-24 12:34:40 +01:00
Jakub Konka
82a044f4f7 test/link/macho: upgrade empty object test 2024-01-24 12:34:40 +01:00
Jakub Konka
a454ba7908 test/link/macho: upgrade dylib test 2024-01-24 12:34:40 +01:00
Jakub Konka
8105390fff macho: remove all rpath parsing from the linker 2024-01-24 12:34:40 +01:00
Jakub Konka
181e476915 test/link/macho: upgrade dead_strip_dylibs test 2024-01-24 12:34:40 +01:00
Jakub Konka
b038bcb93b test/link/macho: test -r mode 2024-01-24 12:34:40 +01:00
Jakub Konka
fa161c2059 test/link/macho: test tentative definitions 2024-01-24 12:34:40 +01:00
Jakub Konka
49a4b42995 test/link/macho: upgrade tls test 2024-01-24 12:34:40 +01:00
Jakub Konka
9f0e1ab467 test/link/macho: test thunks on arm64 2024-01-24 12:34:40 +01:00
Jakub Konka
5790e89b5a test/link/macho: test twolevel namespacing 2024-01-24 12:34:40 +01:00
Jakub Konka
fa649cad4e test/link/macho: test large .tbss section 2024-01-24 12:34:40 +01:00
Jakub Konka
9fce2e2233 test/link/macho: test -u flag handling (forceUndefinedSymbol) 2024-01-24 12:34:40 +01:00
Jakub Konka
105655857f test/link/macho: upgrade weak framework test 2024-01-24 12:34:40 +01:00
Jakub Konka
e96f8b817a test/link/macho: upgrade weak library test 2024-01-24 12:34:40 +01:00
Jakub Konka
1e0eb3c809 test/link/macho: test weak binding 2024-01-24 12:34:40 +01:00
Jakub Konka
2c0c86944e test/link/macho: upgrade and migrate headerpad test 2024-01-24 12:34:40 +01:00
Jakub Konka
9533628ca0 test/link/macho: test setting correct weak* flags in the header 2024-01-24 12:34:40 +01:00
Jakub Konka
5142d92c51 test/link/macho: test hello world in C 2024-01-24 12:34:39 +01:00
Jakub Konka
0cc4dc615b test/link/macho: test hello world in Zig 2024-01-24 12:34:39 +01:00
Jakub Konka
bf285c7e40 test/link/macho: test for correct handling of large __bss sections 2024-01-24 12:34:39 +01:00
Jakub Konka
faa1849f81 test/link/macho: test for correct handling of __mh_execute_header symbol 2024-01-24 12:34:39 +01:00
Jakub Konka
49c11e0c34 test/link/macho: upgrade and migrate needed_library test 2024-01-24 12:34:39 +01:00
Jakub Konka
d93a0763d4 test/link/link: pass build options to elf and macho tests 2024-01-24 12:34:39 +01:00
Jakub Konka
041f7d69f0 test/link/macho: test segment boundary symbols 2024-01-24 12:34:39 +01:00
Jakub Konka
ffd7f7f642 test/link/macho: fix naming in entry-in-dylib test 2024-01-24 12:34:39 +01:00
Jakub Konka
6cdcf61a5c test/link/macho: upgrade and migrate dead_strip test 2024-01-24 12:34:39 +01:00
Jakub Konka
aa50bca151 test/link/elf: make invalid input file test less janky 2024-01-24 12:34:39 +01:00
Jakub Konka
56303d770e macho: fix invalid generation of FDE records 2024-01-24 12:34:39 +01:00
Jakub Konka
11524e4d0c test/link/macho: migrate entry_in_dylib test to new test format 2024-01-24 12:34:39 +01:00
Jakub Konka
ee68f35bfe macho: fix section boundary symbols test 2024-01-24 12:34:39 +01:00
Jakub Konka
b1ffc2b8b3 test/link/elf: patch up relocatable test 2024-01-15 00:18:50 +01:00
Jakub Konka
d7c2324cdb test/link/elf: trigger build system bug testing relocatable mode 2024-01-14 20:51:03 +01:00
Carl Åstholm
3cd646869b Add tests for --undefined-version 2024-01-09 17:26:10 +01:00
Pat Tullmann
cbaaf6477f test glibc_runtime_check: add strlcpy() check
The strlcpy symbol was added in v2.38, so this is a handy symbol for
creating binaries that won't run on relatively modern systems (e.g., mine,
that has glibc 2.36 installed).
2024-01-04 17:12:07 -07:00
Pat Tullmann
42d7b69d81 test/link/glibc_compat: test various older glibc versions
Compile, link and run a test case against various glibc versions.
Exercise symbols that have been probelmatic in the past.
2024-01-04 17:12:07 -07:00
Andrew Kelley
027e7c1c49 test.link.glibc_compat: fix invalid build system API usage 2024-01-01 19:49:08 -07:00
Andrew Kelley
b92e30ff0b std.Build.ResolvedTarget: rename target field to result
This change is seemingly insignificant but I actually agonized over this
for three days. Some other things I considered:

* (status quo in master branch) make Compile step creation functions
  accept a Target.Query and delete the ResolvedTarget struct.
  - downside: redundantly resolve target queries many times
* same as before but additionally add a hash map to cache target query
  resolutions.
  - downside: now there is a hash map that doesn't actually need to
    exist, just to make the API more ergonomic.
* add is_native_os and is_native_abi fields to std.Target and use it
  directly as the result of resolving a target query.
  - downside: they really don't belong there. They would be available
    as comptime booleans via `@import("builtin")` but they should not
    be exposed that way.

With this change the downsides are:
* the option name of addExecutable and friends is `target` instead of
  `resolved_target` matching the type name.
  - upside: this does not break compatibility with existing build
    scripts
* you likely end up seeing `target.result.cpu.arch` rather than
  `target.cpu.arch`.
  - upside: this is an improvement over `target.target.cpu.arch` which
    it was before this commit.
  - downside: `b.host.target` is now `b.host.result`.
2024-01-01 17:51:18 -07:00
Andrew Kelley
3179f58c41 rename std.zig.CrossTarget to std.Target.Query 2024-01-01 17:51:18 -07:00
Andrew Kelley
04480f72d8 fix linker test regressions
Caused by problems with transitive dependencies
2024-01-01 17:51:18 -07:00
Andrew Kelley
142471fcc4 zig build system: change target, compilation, and module APIs
Introduce the concept of "target query" and "resolved target". A target
query is what the user specifies, with some things left to default. A
resolved target has the default things discovered and populated.
In the future, std.zig.CrossTarget will be rename to std.Target.Query.
Introduces `std.Build.resolveTargetQuery` to get from one to the other.

The concept of `main_mod_path` is gone, no longer supported. You have to
put the root source file at the module root now.

* remove deprecated API
* update build.zig for the breaking API changes in this branch
* move std.Build.Step.Compile.BuildId to std.zig.BuildId
* add more options to std.Build.ExecutableOptions, std.Build.ObjectOptions,
  std.Build.SharedLibraryOptions, std.Build.StaticLibraryOptions, and
  std.Build.TestOptions.
* remove `std.Build.constructCMacro`. There is no use for this API.
* deprecate `std.Build.Step.Compile.defineCMacro`. Instead,
  `std.Build.Module.addCMacro` is provided.
  - remove `std.Build.Step.Compile.defineCMacroRaw`.
* deprecate `std.Build.Step.Compile.linkFrameworkNeeded`
  - use `std.Build.Module.linkFramework`
* deprecate `std.Build.Step.Compile.linkFrameworkWeak`
  - use `std.Build.Module.linkFramework`
* move more logic into `std.Build.Module`
* allow `target` and `optimize` to be `null` when creating a Module.
  Along with other fields, those unspecified options will be inherited
  from parent `Module` when inserted into an import table.
* the `target` field of `addExecutable` is now required. pass `b.host`
  to get the host target.
2024-01-01 17:51:18 -07:00
Jakub Konka
f26459e594 lib/std/Build/CheckObject: update all tests to new API 2023-12-13 12:06:25 +01:00
Jakub Konka
eb70c8801e lib/std/Build/CheckObject: dump Mach-O symbol attributes 2023-12-09 09:38:23 +01:00
Jakub Konka
d05db52616 elf: copy out committed ZigObject to a buffer when creating static lib 2023-12-05 17:29:26 +01:00