Skip to content

Commit 3d98206

Browse files
committed
[GR-51959] Load C API when using ctypes.dlopen
PullRequest: graalpython/3360
2 parents 10facc9 + 7e16c90 commit 3d98206

File tree

6 files changed

+13
-7
lines changed

6 files changed

+13
-7
lines changed

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/SignalModuleBuiltins.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -360,7 +360,7 @@ private static Object signal(Node raisingNode, int signum, int id, ModuleData da
360360
}
361361
}
362362

363-
@Builtin(name = "set_wakeup_fd", minNumOfPositionalArgs = 1, parameterNames = {"", "warn_on_full_buffer"})
363+
@Builtin(name = "set_wakeup_fd", minNumOfPositionalArgs = 1, numOfPositionalOnlyArgs = 1, parameterNames = {"fd", "warn_on_full_buffer"})
364364
@GenerateNodeFactory
365365
abstract static class SetWakeupFdNode extends PythonBuiltinNode {
366366
@Specialization

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/bz2/BZ2DecompressorBuiltins.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2020, 2023, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2020, 2024, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* The Universal Permissive License (UPL), Version 1.0
@@ -105,7 +105,7 @@ static PNone init(BZ2Object.BZ2Decompressor self,
105105
}
106106
}
107107

108-
@Builtin(name = "decompress", minNumOfPositionalArgs = 1, parameterNames = {"$self", "", "max_length"})
108+
@Builtin(name = "decompress", minNumOfPositionalArgs = 1, parameterNames = {"$self", "data", "max_length"})
109109
@ArgumentClinic(name = "max_length", conversion = ArgumentClinic.ClinicConversion.Int, defaultValue = "-1", useDefaultForNone = true)
110110
@GenerateNodeFactory
111111
abstract static class DecompressNode extends PythonTernaryClinicBuiltinNode {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/ctypes/CtypesModuleBuiltins.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -630,7 +630,7 @@ static Object buffer_info(Object arg,
630630
}
631631
}
632632

633-
@Builtin(name = "resize", minNumOfPositionalArgs = 2, parameterNames = {"", "size"})
633+
@Builtin(name = "resize", minNumOfPositionalArgs = 2, numOfPositionalOnlyArgs = 2, parameterNames = {"obj", "size"})
634634
@ArgumentClinic(name = "size", conversion = ClinicConversion.Int)
635635
@GenerateNodeFactory
636636
protected abstract static class ResizeNode extends PythonBinaryClinicBuiltinNode {
@@ -746,6 +746,9 @@ static Object py_dl_open(VirtualFrame frame, PythonModule self, TruffleString na
746746
return factory.createNativeVoidPtr(((CtypesModuleBuiltins) self.getBuiltins()).rtldDefault);
747747
}
748748

749+
// The loaded library can link against libpython, so we have to make sure it is loaded
750+
CApiContext.ensureCapiWasLoaded();
751+
749752
int mode = m != Integer.MIN_VALUE ? m : RTLD_LOCAL.getValueIfDefined();
750753
mode |= RTLD_NOW.getValueIfDefined();
751754
PythonContext context = PythonContext.get(inliningTarget);
@@ -986,7 +989,7 @@ static Object doit(Object obj,
986989
}
987990
}
988991

989-
@Builtin(name = "byref", minNumOfPositionalArgs = 1, parameterNames = {"", "offset"})
992+
@Builtin(name = "byref", minNumOfPositionalArgs = 1, numOfPositionalOnlyArgs = 2, parameterNames = {"instance", "offset"})
990993
@ArgumentClinic(name = "offset", conversion = ClinicConversion.Int, defaultValue = "0", useDefaultForNone = true)
991994
@GenerateNodeFactory
992995
protected abstract static class ByRefNode extends PythonBinaryClinicBuiltinNode {

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/io/FileIOBuiltins.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -847,7 +847,7 @@ static void deallocWarn(VirtualFrame frame, PFileIO self,
847847
}
848848
}
849849

850-
@Builtin(name = J_TRUNCATE, minNumOfPositionalArgs = 1, parameterNames = {"$self", ""})
850+
@Builtin(name = J_TRUNCATE, minNumOfPositionalArgs = 1, numOfPositionalOnlyArgs = 2, parameterNames = {"$self", "size"})
851851
@GenerateNodeFactory
852852
abstract static class TruncateNode extends PythonBinaryBuiltinNode {
853853

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/builtins/modules/zlib/ZLibModuleBuiltins.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,7 @@ long nativeCrc32(byte[] bytes, int len, int value,
402402
}
403403

404404
// zlib.adler32(data[, value])
405-
@Builtin(name = "adler32", minNumOfPositionalArgs = 1, parameterNames = {"", "value"})
405+
@Builtin(name = "adler32", minNumOfPositionalArgs = 1, numOfPositionalOnlyArgs = 2, parameterNames = {"data", "value"})
406406
@ArgumentClinic(name = "value", conversionClass = ZLibModuleBuiltins.ExpectIntNode.class, defaultValue = "PNone.NO_VALUE", useDefaultForNone = true)
407407
@TypeSystemReference(PythonArithmeticTypes.class)
408408
@GenerateNodeFactory

graalpython/com.oracle.graal.python/src/com/oracle/graal/python/nodes/function/BuiltinFunctionRootNode.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,9 @@ private static Signature createSignature(NodeFactory<? extends PythonBuiltinBase
217217
PythonUtils.arraycopy(parameterNames, 0, parameterNames, 1, parameterNames.length - 1);
218218
parameterNames[0] = constructsClass ? T_DOLLAR_DECL_TYPE : T_DOLLAR_SELF;
219219
}
220+
for (TruffleString name : parameterNames) {
221+
assert !name.isEmpty() : "empty parameter name not allowed on " + factory;
222+
}
220223
}
221224
}
222225
assert canUseSpecialBuiltinNode(builtin) || !usesSpecialBuiltinNode(factory.getNodeClass()) : factory.getNodeClass().getName() +

0 commit comments

Comments
 (0)