Commit Graph

297 Commits

Author SHA1 Message Date
Alex Rønne Petersen 879a39a700 std.Target: Ignore case for all Darwin platforms in isLibCLibName().
Matches isLibCxxLibName() behavior.
2024-10-16 22:24:52 +02:00
Alex Rønne Petersen c76a98f28a std.Target: Rename is_lib{c,cxx}_lib_name() to isLib{C,Cxx}LibName(). 2024-10-16 22:24:46 +02:00
Alex Rønne Petersen 482759079f std.Target: Move the elfiamcu check under the x86 prong in toElfMachine(). 2024-10-16 22:24:38 +02:00
Alex Rønne Petersen bdd3bc056e Merge pull request #21715 from alexrp/loongarch-porting
Some miscellaneous LoongArch port work
2024-10-16 09:13:51 +02:00
Alex Rønne Petersen 1cdb143af2 std.Target: Fix loongarch32 handling in C type alignment calculation. 2024-10-16 01:10:36 +02:00
Alex Rønne Petersen a2c466220c std.Target: Make Cpu.baseline() pick a better CPU for Apple targets. 2024-10-16 00:33:40 +02:00
Alex Rønne Petersen 1bca53cc20 std.Target: Change Cpu.baseline() to also be able to take OS into consideration. 2024-10-16 00:33:10 +02:00
Alex Rønne Petersen 20e03beaef Merge pull request #21611 from alexrp/target-abi-default
`std.Target`: Rewrite `Abi.default()` to have better defaults across the board.
2024-10-07 06:14:10 +02:00
Alex Rønne Petersen aa8f39e271 Merge pull request #21614 from alexrp/target-avr-align
`std.Target`: Fix `cTypePreferredAlignment()` to always return 1 for avr.
2024-10-07 01:56:42 +02:00
Alex Rønne Petersen 221bd829bc std.Target: Rewrite Abi.default() to have better defaults across the board. 2024-10-06 23:28:21 +02:00
Alex Rønne Petersen 770aa54579 std.Target: Fix cTypePreferredAlignment() to always return 1 for avr.
This matches avr-gcc's ABI.
2024-10-06 17:19:07 +02:00
Alex Rønne Petersen ece265b1c2 Merge pull request #21605 from alexrp/ohos-stuff
`std.Target`: Introduce `Abi.ohoseabi` to distinguish the soft float case.
2024-10-06 16:26:24 +02:00
Alex Rønne Petersen 84e192c88b std.Target: Introduce Abi.ohoseabi to distinguish the soft float case.
For the same reason as #21504.
2024-10-05 15:13:37 +02:00
Alex Rønne Petersen 9a5b0a6762 std.Target: Rewrite DynamicLinker.standard() and fill in some missing details. 2024-10-05 13:53:24 +02:00
Andrew Kelley 163d505e27 std.Target: add missing propeller switch prongs
Seems to have been an invisible merge conflict.
2024-10-04 15:03:46 -07:00
Felix Queißner 7c74edec8d Adds new cpu architectures propeller1 and propeller2. (#21563)
* Adds new cpu architectures propeller1 and propeller2.

These cpu architectures allow targeting the Parallax Propeller 1 and Propeller 2, which are both very special microcontrollers with 512 registers and 8 cpu cores.

Resolves #21559

* Adds std.elf.EM.PROPELLER and std.elf.EM.PROPELLER2
* Fixes missing switch prongs in src/codegen/llvm.zig
* Fixes order in std.Target.Arch

---------

Co-authored-by: Felix "xq" Queißner <git@random-projects.net>
2024-10-04 13:53:28 -07:00
Alex Rønne Petersen eb363bf845 Merge pull request #21572 from alexrp/tests-llvm-targets
`test`: Rewrite the target triple list for `llvm_targets`.
2024-10-04 19:37:12 +02:00
Alex Rønne Petersen 9b273f6b9a Merge pull request #21570 from alexrp/windows-itanium
Initial port work for `*-windows-itanium` support.
2024-10-03 21:53:22 +02:00
Alex Rønne Petersen 3f322c49bc std.Target: Remove Os.Tag.shadermodel.
This was a leftover from the Cpu.Arch.dxil removal.
2024-10-03 05:01:24 +02:00
Alex Rønne Petersen c2ba6127c0 std.Target: Fix getVersionRangeTag() for bridgeos.
Until we actually figure out a version range for this, we shouldn't classify
this as using semver. Doing so results in a panic when trying to access the
version range since it's not in fact a semver value.
2024-10-03 05:01:24 +02:00
Alex Rønne Petersen 7d71e794dd std.Target: Fix Cpu.Model.generic() for arc, csky, and xtensa.
Only targets for which we don't source CPU models/features from LLVM should use
the fallback prong in this switch. Also make it exhaustive to catch similar
mistakes in the future.
2024-10-03 05:01:24 +02:00
Alex Rønne Petersen cb1ac0bb2f update_cpu_features: Don't delete the output file if there are no CPU features.
At bare minimum, the compiler expects std.Target.<arch>.cpu.generic to work for
any given architecture when generating the builtin module. So rather than try to
hack that into working when the affected modules are omitted, just actually keep
them.

This affected lanai and xcore.
2024-10-03 05:01:14 +02:00
Alex Rønne Petersen e0ac776749 Merge pull request #21504 from alexrp/android-softfp
`std.Target`: Introduce `Abi.androideabi` to distinguish the soft float case.
2024-10-03 00:15:35 +02:00
Alex Rønne Petersen 537a873b17 Initial port work for *-windows-itanium support.
https://llvm.org/docs/HowToBuildWindowsItaniumPrograms.html

This is a weird middle ground between `*-windows-gnu` and `*-windows-msvc`. It
uses the C++ ABI of the former while using the system libraries of the latter.
2024-09-28 21:43:52 +02:00
Alex Rønne Petersen 59ae51199e std.Target: Return EM_ARC_COMPACT instead of EM_ARC_COMPACT2 for arc.
Also fix an incorrect related comment in start.zig.
2024-09-26 21:45:49 +02:00
Alex Rønne Petersen 2e3599c7d0 std.Target: Handle ve in toElfMachine(). 2024-09-26 21:44:27 +02:00
Alex Rønne Petersen ebbc50d8be std.Target: Introduce Abi.androideabi to distinguish the soft float case.
Abi.android on its own is not enough to know whether soft float or hard float
should be used. In the C world, androideabi is typically used for the soft float
case, so let's go with that.

Note that Android doesn't have a hard float ABI, so no androideabihf.

Closes #21488.
2024-09-24 09:23:24 +02:00
Alex Rønne Petersen d1901c744c std.Target: Remove Cpu.Arch.dxil and ObjectFormat.dxcontainer.
See: https://devblogs.microsoft.com/directx/directx-adopting-spir-v

Since we never hooked up the (experimental) DirectX LLVM backend, we've never
actually supported targeting DXIL in Zig. With Microsoft moving away from DXIL,
that seems very unlikely to change.
2024-09-23 17:17:25 -07:00
Alex Rønne Petersen a4d0a01243 std.Target: Add bridgeos tag to Os. 2024-09-19 18:20:21 -07:00
Alex Rønne Petersen af370a69cd std.Target: Make Abi.floatAbi() more accurate.
Also rename Target.getFloatAbi() to floatAbi().
2024-09-06 20:11:47 +02:00
Alex Rønne Petersen e5ee9c1e43 std.elf: Bring the EM enum up to date.
Based on:

* `include/elf/common.h` in binutils
* `include/uapi/linux/elf-em.h` in Linux
* https://www.sco.com/developers/gabi/latest/ch4.eheader.html

I opted to use the tag naming of binutils because it seems to be by far the most
complete and authoritative source at this point in time.
2024-09-03 17:44:01 -07:00
mlugg 0fe3fd01dd std: update std.builtin.Type fields to follow naming conventions
The compiler actually doesn't need any functional changes for this: Sema
does reification based on the tag indices of `std.builtin.Type` already!
So, no zig1.wasm update is necessary.

This change is necessary to disallow name clashes between fields and
decls on a type, which is a prerequisite of #9938.
2024-08-28 08:39:59 +01:00
Alex Rønne Petersen 6db9ad7798 std.Target: Return the correct value for 32-bit sparc v9 in toElfMachine(). 2024-08-15 10:55:46 +02:00
Alex Rønne Petersen 9b5c992d31 std.Target: Return the correct value for elfiamcu in toElfMachine(). 2024-08-15 10:55:46 +02:00
Alex Rønne Petersen 550438653d std.Target: Pull toCoffMachine()/toElfMachine() up from Arch to Target.
This enables them to give more correct results.

Contributes to #20771.
2024-08-15 10:55:46 +02:00
Alex Rønne Petersen b01c595d4a std.coff: Capitalize MachineType.{Unknown,Thumb} for consistency. 2024-08-15 10:55:46 +02:00
Alex Rønne Petersen 65affb1c22 std.Target: Don't match PowerPC in Arch.toCoffMachine().
It's entirely unclear whether this should map to POWERPC or POWERPCFP, and as I
can find no evidence of people producing PE files for PowerPC since Windows NT,
let's just not make a likely-wrong guess. We can revisit this if the need ever
actually arises.
2024-08-15 10:55:46 +02:00
Alex Rønne Petersen b24fc35eeb std.Target: Don't match big endian architectures in Arch.toCoffMachine().
All of these were mapping to types that are little endian. In fact, I can find
no evidence that either Windows or UEFI have ever been used on big endian
systems.
2024-08-15 10:55:46 +02:00
Alex Rønne Petersen 8516a6ab57 std.Target: Clean up Arch.toCoffMachine(). 2024-08-15 10:55:46 +02:00
Alex Rønne Petersen 490b328127 std.Target: Fix Arch.toElfMachine() for mips.
EM_MIPS_RS3_LE is obsolete; all mips targets just use EM_MIPS.

Also, fun fact: EM_MIPS_RS3_LE is actually big endian!
2024-08-15 10:55:46 +02:00
Alex Rønne Petersen 6c27cab5b3 std.Target: Fix Arch.toElfMachine() for arc.
The arc tag means ARCv2.
2024-08-15 10:55:46 +02:00
Alex Rønne Petersen 9246c88031 std.Target: Clean up Arch.toElfMachine(). 2024-08-15 10:55:46 +02:00
Alex Rønne Petersen 1e67221f07 std.Target: Change requiresLibC() to return true for aix.
AIX does not have a stable syscall interface; libc is required.
2024-08-15 10:55:46 +02:00
Alex Rønne Petersen fc93ab7182 std.Target: Fix isGnuLibC() to handle hurd too. 2024-08-15 10:55:45 +02:00
Alex Rønne Petersen 0def4e0db0 std.Target: Make some functions handle driverkit alongside other Apple OSs.
Reference for versions: https://developer.apple.com/support/xcode
2024-08-15 10:55:45 +02:00
Andrew Kelley 78fb9c0a17 Merge pull request #21031 from linusg/std-target-naming
std.Target: Function naming cleanup
2024-08-14 10:36:24 -07:00
Alex Rønne Petersen d6f9972594 all: Handle spirv in addition to spirv(32,64) where applicable.
Some of this is arbitrary since spirv (as opposed to spirv32/spirv64) refers to
the version with logical memory layout, i.e. no 'real' pointers. This change at
least matches what clang does.
2024-08-12 16:08:28 -07:00
Alex Rønne Petersen 8af4d65108 std.Target: Remove liteos OS tag.
It has not seen development in 4 years.

https://github.com/LiteOS/LiteOS/commits/master
2024-08-12 08:59:49 +02:00
Alex Rønne Petersen e211dce6fc std.Target: Remove minix OS tag.
It has not seen development in 6 years. RIP.

* https://github.com/Stichting-MINIX-Research-Foundation/minix/commits/master
* https://groups.google.com/g/minix3/c/nUG1NwxXXkg
2024-08-12 08:59:49 +02:00
Alex Rønne Petersen 4d4a023042 std.Target: Remove no longer relevant TODO about SPIR-V ABIs. 2024-08-12 08:59:49 +02:00