Skip to content

Commit 02c9867

Browse files
add signal handling substitutions
1 parent b470827 commit 02c9867

File tree

1 file changed

+56
-0
lines changed

1 file changed

+56
-0
lines changed

web-image/src/com.oracle.svm.webimage/src/com/oracle/svm/webimage/substitute/system/WebImageSunMiscSubstitutions.java

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import com.oracle.svm.core.annotate.Substitute;
2828
import com.oracle.svm.core.annotate.TargetClass;
2929
import com.oracle.svm.webimage.functionintrinsics.JSFunctionIntrinsics;
30+
import jdk.internal.misc.Signal;
3031

3132
@TargetClass(className = "jdk.internal.misc.VM")
3233
@SuppressWarnings("unused")
@@ -56,6 +57,61 @@ public static long getNanoTimeAdjustment(long offsetInSeconds) {
5657
}
5758
}
5859

60+
@TargetClass(className = "jdk.internal.misc.Signal")
61+
final class Target_jdk_internal_misc_Signal_Web {
62+
63+
/**
64+
* Uses POSIX signal numbers. May be incomplete, extend as necessary.
65+
* <p>
66+
* Signals are not supported in Web Image, but instances of {@code Signal} may still exist, so
67+
* this method must return something.
68+
* <p>
69+
* Signal numbers taken from {@code man 7 signal} for the intel architecture.
70+
*/
71+
@Substitute
72+
private static int findSignal0(String sigName) {
73+
return switch (sigName) {
74+
case "HUP" -> 1;
75+
case "INT" -> 2;
76+
case "QUIT" -> 3;
77+
case "ILL" -> 4;
78+
case "TRAP" -> 5;
79+
case "ABRT" -> 6;
80+
case "BUS" -> 7;
81+
case "FPE" -> 8;
82+
case "KILL" -> 9;
83+
case "USR1" -> 10;
84+
case "SEGV" -> 11;
85+
case "USR2" -> 12;
86+
case "PIPE" -> 13;
87+
case "ALRM" -> 14;
88+
case "TERM" -> 15;
89+
case "STKFLT" -> 16;
90+
case "CHLD" -> 17;
91+
case "CONT" -> 18;
92+
case "STOP" -> 19;
93+
case "TSTP" -> 20;
94+
case "TTIN" -> 21;
95+
case "TTOU" -> 22;
96+
case "URG" -> 23;
97+
case "XCPU" -> 24;
98+
case "XFSZ" -> 25;
99+
case "VTALRM" -> 26;
100+
case "PROF" -> 27;
101+
case "WINCH" -> 28;
102+
case "IO" -> 29;
103+
case "PWR" -> 30;
104+
case "SYS" -> 31;
105+
default -> -1;
106+
};
107+
}
108+
109+
@Substitute
110+
public static synchronized Signal.Handler handle(Signal sig, Signal.Handler handler) throws IllegalArgumentException {
111+
throw new IllegalArgumentException("cannot register signal handles in webimage.");
112+
}
113+
}
114+
59115
/** Dummy class to have a class with the file's name. */
60116
public final class WebImageSunMiscSubstitutions {
61117
}

0 commit comments

Comments
 (0)