mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-27 14:54:52 +02:00
8303002: Reject packed structs from linker
8300784: Specify exactly how padding should be presented to the linker 8304803: NPE thrown during downcall classification under Linux/x64 8303524: Check FunctionDescriptor byte order when linking Reviewed-by: mcimadamore
This commit is contained in:
parent
316d303c1d
commit
1de1a38859
11 changed files with 161 additions and 15 deletions
|
@ -34,6 +34,7 @@ import jdk.internal.reflect.CallerSensitive;
|
|||
import jdk.internal.reflect.Reflection;
|
||||
|
||||
import java.lang.invoke.MethodHandle;
|
||||
import java.nio.ByteOrder;
|
||||
import java.util.Objects;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
|
@ -195,6 +196,17 @@ import java.util.stream.Stream;
|
|||
* <td style="text-align:center;">{@link MemorySegment}</td>
|
||||
* </tbody>
|
||||
* </table></blockquote>
|
||||
* <p>
|
||||
* All the native linker implementations limit the function descriptors that they support to those that contain
|
||||
* only so-called <em>canonical</em> layouts. A canonical layout has the following characteristics:
|
||||
* <ol>
|
||||
* <li>Its alignment constraint is set to its <a href="MemoryLayout.html#layout-align">natural alignment</a></li>
|
||||
* <li>If it is a {@linkplain ValueLayout value layout}, its {@linkplain ValueLayout#order() byte order} is
|
||||
* the {@linkplain ByteOrder#nativeOrder() native byte order}.
|
||||
* <li>If it is a {@linkplain GroupLayout group layout}, its size is a multiple of its alignment constraint, and</li>
|
||||
* <li>It does not contain padding other than what is strictly required to align its non-padding layout elements,
|
||||
* or to satisfy constraint 3</li>
|
||||
* </ol>
|
||||
*
|
||||
* <h3 id="function-pointers">Function pointers</h3>
|
||||
*
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue