|
25 | 25 | package com.oracle.svm.core.posix;
|
26 | 26 |
|
27 | 27 | import java.io.FileDescriptor;
|
| 28 | +import java.util.EnumSet; |
28 | 29 |
|
| 30 | +import com.oracle.svm.core.imagelayer.ImageLayerBuildingSupport; |
29 | 31 | import org.graalvm.nativeimage.LogHandler;
|
30 | 32 | import org.graalvm.nativeimage.c.type.CCharPointer;
|
31 | 33 | import org.graalvm.word.UnsignedWord;
|
32 | 34 |
|
33 | 35 | import com.oracle.svm.core.SubstrateDiagnostics;
|
| 36 | +import com.oracle.svm.core.feature.AutomaticallyRegisteredFeature; |
34 | 37 | import com.oracle.svm.core.feature.InternalFeature;
|
35 | 38 | import com.oracle.svm.core.headers.LibC;
|
| 39 | +import com.oracle.svm.core.layeredimagesingleton.InitialLayerOnlyImageSingleton; |
| 40 | +import com.oracle.svm.core.layeredimagesingleton.LayeredImageSingletonBuilderFlags; |
36 | 41 | import com.oracle.svm.core.log.Log;
|
37 | 42 | import com.oracle.svm.core.thread.VMThreads;
|
38 |
| -import com.oracle.svm.core.feature.AutomaticallyRegisteredFeature; |
39 | 43 |
|
40 | 44 | @AutomaticallyRegisteredFeature
|
41 | 45 | class PosixLogHandlerFeature implements InternalFeature {
|
42 | 46 | @Override
|
43 | 47 | public void beforeAnalysis(BeforeAnalysisAccess access) {
|
44 |
| - Log.finalizeDefaultLogHandler(new PosixLogHandler()); |
| 48 | + if (ImageLayerBuildingSupport.firstImageBuild()) { |
| 49 | + Log.finalizeDefaultLogHandler(new PosixLogHandler()); |
| 50 | + } |
45 | 51 | }
|
46 | 52 | }
|
47 | 53 |
|
48 |
| -public class PosixLogHandler implements LogHandler { |
| 54 | +public class PosixLogHandler implements LogHandler, InitialLayerOnlyImageSingleton { |
49 | 55 |
|
50 | 56 | @Override
|
51 | 57 | public void log(CCharPointer bytes, UnsignedWord length) {
|
@@ -88,4 +94,14 @@ public void fatalError() {
|
88 | 94 | private static FileDescriptor getOutputFile() {
|
89 | 95 | return FileDescriptor.err;
|
90 | 96 | }
|
| 97 | + |
| 98 | + @Override |
| 99 | + public EnumSet<LayeredImageSingletonBuilderFlags> getImageBuilderFlags() { |
| 100 | + return LayeredImageSingletonBuilderFlags.RUNTIME_ACCESS_ONLY; |
| 101 | + } |
| 102 | + |
| 103 | + @Override |
| 104 | + public boolean accessibleInFutureLayers() { |
| 105 | + return true; |
| 106 | + } |
91 | 107 | }
|
0 commit comments