Integrated: 8308031: Linkers should reject unpromoted variadic parameters
Jorn Vernee
jvernee at openjdk.org
Wed Jun 7 12:18:04 UTC 2023
On Tue, 30 May 2023 17:25:35 GMT, Jorn Vernee <jvernee at openjdk.org> wrote:
> In C, arguments smaller than `int` are promoted to (`unsigned`) `int`, and `float` is promoted to `double`, when being passed as variadic argument (see e.g. https://en.cppreference.com/w/c/language/conversion#Default_argument_promotions). This patch adds the automatic argument promotion for variadic arguments, to align the implementation with the C specification.
>
> The fallback linker is also updated to use to correct function to link variadic calls (not doing this turned out not to be a problem so far, but it is problematic for instance on Mac/AArch64 when using the fallback linker). Adding the restriction on layouts for all linkers is also partly motivated by the fallback linker rejecting such unsupported variadic layouts already.
>
> I've added a small paragraph to the Linker javadoc as well that explains this.
>
> TestVarArgs needed to be updated in order to account for the difference in the promoted `float` values.
>
> Testing:
> - local testing on Windows/x64
> - local testing on Linux/x64 using the fallback linker
> - tier1-3 + jdk-tier5
> - manual test run on mac/aarch64 with the fallback linker to verify the correctness of the fallback linker changes.
This pull request has now been integrated.
Changeset: fa791119
Author: Jorn Vernee <jvernee at openjdk.org>
URL: https://git.openjdk.org/jdk/commit/fa791119f0b73cd1e110d6a62d3bed58fee5740a
Stats: 144 lines in 11 files changed: 120 ins; 6 del; 18 mod
8308031: Linkers should reject unpromoted variadic parameters
Reviewed-by: mcimadamore
-------------
PR: https://git.openjdk.org/jdk/pull/14225
More information about the core-libs-dev
mailing list