Skip to content

Commit d89b047

Browse files
authored
Merge pull request llvm#92 from mbrock/nix
Rough sketch of using `--filc-crt-path` and so on as a neo-pizfix paradigm
2 parents 652c3f0 + d1f8362 commit d89b047

File tree

6 files changed

+168
-66
lines changed

6 files changed

+168
-66
lines changed

clang/include/clang/Driver/Driver.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -181,6 +181,7 @@ class Driver {
181181

182182
bool HasPizfix;
183183
bool HasOptfil;
184+
std::string PizfixRoot;
184185

185186
/// The original path to the clang executable.
186187
std::string ClangExecutable;

clang/include/clang/Driver/Options.td

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -834,6 +834,24 @@ def gcc_toolchain : Joined<["--"], "gcc-toolchain=">, Flags<[NoXarchOption]>,
834834
"Flang will use the GCC installation with the largest version">;
835835
def gcc_triple_EQ : Joined<["--"], "gcc-triple=">,
836836
HelpText<"Search for the GCC installation with the specified triple.">;
837+
def filc_resource_dir : Joined<["--"], "filc-resource-dir=">, Flags<[NoXarchOption]>,
838+
Visibility<[ClangOption]>,
839+
HelpText<"Override Fil-C pizfix directory location (default: <binary>/../../../pizfix)">;
840+
def filc_dynamic_linker : Joined<["--"], "filc-dynamic-linker=">, Flags<[NoXarchOption]>,
841+
Visibility<[ClangOption]>,
842+
HelpText<"Override Fil-C dynamic linker path (default: pizfix/lib/ld-yolo-x86_64.so)">;
843+
def filc_crt_path : Joined<["--"], "filc-crt-path=">, Flags<[NoXarchOption]>,
844+
Visibility<[ClangOption]>,
845+
HelpText<"Override Fil-C CRT object files directory (default: pizfix/lib)">;
846+
def filc_stdfil_include : Joined<["--"], "filc-stdfil-include=">, Flags<[NoXarchOption]>,
847+
Visibility<[ClangOption]>,
848+
HelpText<"Override Fil-C stdfil include directory (default: pizfix/stdfil-include)">;
849+
def filc_os_include : Joined<["--"], "filc-os-include=">, Flags<[NoXarchOption]>,
850+
Visibility<[ClangOption]>,
851+
HelpText<"Override Fil-C OS include directory (default: pizfix/os-include)">;
852+
def filc_include : Joined<["--"], "filc-include=">, Flags<[NoXarchOption]>,
853+
Visibility<[ClangOption]>,
854+
HelpText<"Override Fil-C libc include directory (default: pizfix/include)">;
837855
def CC : Flag<["-"], "CC">, Visibility<[ClangOption, CC1Option]>,
838856
Group<Preprocessor_Group>,
839857
HelpText<"Include comments from within macros in preprocessed output">,

clang/lib/Driver/Driver.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,8 @@ Driver::Driver(StringRef ClangExecutable, StringRef TargetTriple,
266266
SmallString<128> P(Dir);
267267
llvm::sys::path::append(P, "..", "..", "pizfix");
268268
HasPizfix = llvm::sys::fs::is_directory(P);
269+
if (HasPizfix)
270+
PizfixRoot = std::string(P);
269271
}
270272
if (!HasPizfix) {
271273
SmallString<128> RealPath;
@@ -1491,6 +1493,17 @@ Compilation *Driver::BuildCompilation(ArrayRef<const char *> ArgList) {
14911493
if (VFS->setCurrentWorkingDirectory(WD->getValue()))
14921494
Diag(diag::err_drv_unable_to_set_working_directory) << WD->getValue();
14931495

1496+
// Check for Fil-C resource directory override
1497+
if (Arg *A = Args.getLastArg(options::OPT_filc_resource_dir)) {
1498+
A->claim();
1499+
PizfixRoot = A->getValue();
1500+
HasPizfix = true; // Trust the user-provided path
1501+
} else if (Arg *A = Args.getLastArg(options::OPT_filc_crt_path)) {
1502+
// If any filc flag is set, we're in filc mode
1503+
A->claim();
1504+
HasPizfix = true;
1505+
}
1506+
14941507
// Check for missing include directories.
14951508
if (!Diags.isIgnored(diag::warn_missing_include_dirs, SourceLocation())) {
14961509
for (auto IncludeDir : Args.getAllArgValues(options::OPT_I_Group)) {

clang/lib/Driver/ToolChains/Gnu.cpp

Lines changed: 34 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -594,10 +594,18 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
594594

595595
auto GetYoloLibPath = [&] (const StringRef str) -> std::string {
596596
if (ToolChain.getDriver().HasPizfix) {
597-
SmallString<128> P(ToolChain.getDriver().Dir);
598-
llvm::sys::path::append(P, "..", "..", "pizfix");
599-
llvm::sys::path::append(P, "lib", str);
600-
return std::string(P);
597+
std::string BasePath;
598+
if (Arg *A = Args.getLastArg(options::OPT_filc_crt_path)) {
599+
A->claim();
600+
BasePath = A->getValue();
601+
} else {
602+
SmallString<128> P(ToolChain.getDriver().PizfixRoot);
603+
llvm::sys::path::append(P, "lib");
604+
BasePath = std::string(P);
605+
}
606+
SmallString<128> FullPath(BasePath);
607+
llvm::sys::path::append(FullPath, str);
608+
return std::string(FullPath);
601609
}
602610
if (ToolChain.getDriver().HasOptfil) {
603611
SmallString<128> P("/opt/fil/lib");
@@ -681,19 +689,30 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
681689
Args.AddAllArgs(CmdArgs, options::OPT_L);
682690

683691
if (ToolChain.getDriver().HasPizfix) {
692+
std::string BasePath;
693+
if (Arg *A = Args.getLastArg(options::OPT_filc_crt_path)) {
694+
A->claim();
695+
BasePath = A->getValue();
696+
} else {
697+
SmallString<128> P(ToolChain.getDriver().PizfixRoot);
698+
llvm::sys::path::append(P, "lib");
699+
BasePath = std::string(P);
700+
}
701+
684702
{
685-
SmallString<128> P(ToolChain.getDriver().Dir);
686-
llvm::sys::path::append(P, "..", "..", "pizfix", "lib64");
687-
CmdArgs.push_back(Args.MakeArgString("-L" + P));
688-
CmdArgs.push_back("-rpath");
689-
CmdArgs.push_back(Args.MakeArgString(P));
703+
SmallString<128> P(BasePath);
704+
llvm::sys::path::remove_filename(P);
705+
llvm::sys::path::append(P, "lib64");
706+
if (llvm::sys::fs::is_directory(P)) {
707+
CmdArgs.push_back(Args.MakeArgString("-L" + P));
708+
CmdArgs.push_back("-rpath");
709+
CmdArgs.push_back(Args.MakeArgString(P));
710+
}
690711
}
691712
{
692-
SmallString<128> P(ToolChain.getDriver().Dir);
693-
llvm::sys::path::append(P, "..", "..", "pizfix", "lib");
694-
CmdArgs.push_back(Args.MakeArgString("-L" + P));
713+
CmdArgs.push_back(Args.MakeArgString("-L" + BasePath));
695714
CmdArgs.push_back("-rpath");
696-
CmdArgs.push_back(Args.MakeArgString(P));
715+
CmdArgs.push_back(Args.MakeArgString(BasePath));
697716
}
698717
} else if (ToolChain.getDriver().HasOptfil) {
699718
CmdArgs.push_back("-L/opt/fil/lib");
@@ -738,20 +757,14 @@ void tools::gnutools::Linker::ConstructJob(Compilation &C, const JobAction &JA,
738757
options::OPT_r) ||
739758
Args.hasArg(options::OPT_normalcrt)) {
740759
if (ToolChain.getDriver().HasPizfix) {
741-
SmallString<128> P(ToolChain.getDriver().Dir);
742-
llvm::sys::path::append(P, "..", "..", "pizfix", "lib");
743-
llvm::sys::path::append(P, "filc_crt.o");
744-
CmdArgs.push_back(Args.MakeArgString(P));
760+
CmdArgs.push_back(Args.MakeArgString(GetYoloLibPath("filc_crt.o")));
745761
} else if (ToolChain.getDriver().HasOptfil)
746762
CmdArgs.push_back("/opt/fil/lib/filc_crt.o");
747763
else
748764
CmdArgs.push_back("/usr/lib/filc_crt.o");
749765
} else {
750766
if (ToolChain.getDriver().HasPizfix) {
751-
SmallString<128> P(ToolChain.getDriver().Dir);
752-
llvm::sys::path::append(P, "..", "..", "pizfix", "lib");
753-
llvm::sys::path::append(P, "filc_mincrt.o");
754-
CmdArgs.push_back(Args.MakeArgString(P));
767+
CmdArgs.push_back(Args.MakeArgString(GetYoloLibPath("filc_mincrt.o")));
755768
} else if (ToolChain.getDriver().HasOptfil)
756769
CmdArgs.push_back("/opt/fil/lib/filc_mincrt.o");
757770
else

clang/lib/Driver/ToolChains/Linux.cpp

Lines changed: 34 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -457,9 +457,14 @@ std::string Linux::getDynamicLinker(const ArgList &Args) const {
457457
const llvm::Triple &Triple = getTriple();
458458

459459
if ((true)) {
460+
// Check for explicit override flag
461+
if (Arg *A = Args.getLastArg(options::OPT_filc_dynamic_linker)) {
462+
A->claim();
463+
return std::string(A->getValue());
464+
}
465+
460466
if (getDriver().HasPizfix) {
461-
SmallString<128> P(getDriver().Dir);
462-
llvm::sys::path::append(P, "..", "..", "pizfix");
467+
SmallString<128> P(getDriver().PizfixRoot);
463468
llvm::sys::path::append(P, "lib", "ld-yolo-x86_64.so");
464469
return std::string(P);
465470
}
@@ -656,21 +661,42 @@ void Linux::AddClangSystemIncludeArgs(const ArgList &DriverArgs,
656661

657662
if (D.HasPizfix) {
658663
{
659-
SmallString<128> P(D.Dir);
660-
llvm::sys::path::append(P, "..", "..", "pizfix", "stdfil-include");
664+
std::string P;
665+
if (Arg *A = DriverArgs.getLastArg(options::OPT_filc_stdfil_include)) {
666+
A->claim();
667+
P = A->getValue();
668+
} else {
669+
SmallString<128> Path(D.PizfixRoot);
670+
llvm::sys::path::append(Path, "stdfil-include");
671+
P = std::string(Path);
672+
}
661673
addSystemInclude(DriverArgs, CC1Args, P);
662674
}
663675

664676
{
665-
SmallString<128> P(D.Dir);
666-
llvm::sys::path::append(P, "..", "..", "pizfix", "os-include");
677+
std::string P;
678+
if (Arg *A = DriverArgs.getLastArg(options::OPT_filc_os_include)) {
679+
A->claim();
680+
P = A->getValue();
681+
} else {
682+
SmallString<128> Path(D.PizfixRoot);
683+
llvm::sys::path::append(Path, "os-include");
684+
P = std::string(Path);
685+
}
667686
addSystemInclude(DriverArgs, CC1Args, P);
668687
}
669688

670689
if (!DriverArgs.hasArg(clang::driver::options::OPT_nostdinc)
671690
&& !DriverArgs.hasArg(options::OPT_nostdlibinc)) {
672-
SmallString<128> P(D.Dir);
673-
llvm::sys::path::append(P, "..", "..", "pizfix", "include");
691+
std::string P;
692+
if (Arg *A = DriverArgs.getLastArg(options::OPT_filc_include)) {
693+
A->claim();
694+
P = A->getValue();
695+
} else {
696+
SmallString<128> Path(D.PizfixRoot);
697+
llvm::sys::path::append(Path, "include");
698+
P = std::string(Path);
699+
}
674700
addSystemInclude(DriverArgs, CC1Args, P);
675701
}
676702
} else if (D.HasOptfil)

libpas/Makefile

Lines changed: 68 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -19,22 +19,55 @@
1919
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
2020
# OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
2121
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
22-
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
22+
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
23+
24+
FILC_OUTPUT_ROOT ?= $(abspath ../pizfix)
25+
26+
FILC_LIB_DIR ?= $(FILC_OUTPUT_ROOT)/lib
27+
FILC_LIB_TEST_DIR ?= $(FILC_OUTPUT_ROOT)/lib_test
28+
FILC_LIB_GCVERIFY_DIR ?= $(FILC_OUTPUT_ROOT)/lib_gcverify
29+
FILC_LIB_TEST_GCVERIFY_DIR ?= $(FILC_OUTPUT_ROOT)/lib_test_gcverify
30+
31+
FILC_YOLO_INCLUDE ?= $(FILC_OUTPUT_ROOT)/yolo-include
32+
FILC_OS_INCLUDE ?= $(FILC_OUTPUT_ROOT)/os-include
33+
FILC_STDFIL_INCLUDE ?= $(FILC_OUTPUT_ROOT)/stdfil-include
34+
FILC_INCLUDE_DIR ?= $(FILC_OUTPUT_ROOT)/include
35+
FILC_YOLO_LIB_DIR ?= $(FILC_LIB_DIR)
36+
FILC_DYNAMIC_LINKER ?= $(FILC_YOLO_LIB_DIR)/ld-yolo-x86_64.so
37+
FILC_RUNTIME_LIBS ?= -lyoloc -lyolom
38+
39+
HOST_CLANG ?= clang
40+
FILC_CLANG ?= ../build/bin/clang
41+
FILC_DRIVER_FLAGS ?=
42+
43+
PASCC = $(HOST_CLANG) -march=x86-64-v2 -fPIC -pthread -nostdinc \
44+
-isystem $(FILC_YOLO_INCLUDE) -isystem $(FILC_OS_INCLUDE) \
45+
-isystem $(FILC_STDFIL_INCLUDE) \
46+
-isystem `./find_clang_include_dir.rb`
47+
PASASM = $(HOST_CLANG) -march=x86-64-v2 -fPIC
48+
FILCC = $(FILC_CLANG) $(FILC_DRIVER_FLAGS)
49+
SHLD = $(HOST_CLANG) -Wl,-dynamic-linker,$(FILC_DYNAMIC_LINKER) \
50+
-nostdlib -shared $(FILC_YOLO_LIB_DIR)/crti.o \
51+
`./find_system_library_file.rb crtbeginS.o` -L$(FILC_YOLO_LIB_DIR)
52+
SHLDPOST = `./find_system_library_file.rb libgcc.a` $(FILC_RUNTIME_LIBS) \
53+
`./find_system_library_file.rb crtendS.o` $(FILC_YOLO_LIB_DIR)/crtn.o
54+
55+
DIRS_TO_CREATE = \
56+
$(FILC_LIB_DIR) \
57+
$(FILC_LIB_TEST_DIR) \
58+
$(FILC_LIB_GCVERIFY_DIR) \
59+
$(FILC_LIB_TEST_GCVERIFY_DIR)
60+
61+
.PHONY: all clean
2362

2463
all: \
25-
../pizfix/lib/libpizlo.so ../pizfix/lib_test/libpizlo.so ../pizfix/lib_gcverify/libpizlo.so \
26-
../pizfix/lib_test_gcverify/libpizlo.so ../pizfix/lib/libpizlo.a \
27-
../pizfix/lib/filc_crt.o ../pizfix/lib/filc_mincrt.o
28-
29-
PASCC = clang -march=x86-64-v2 -fPIC -pthread -nostdinc -isystem ../pizfix/yolo-include \
30-
-isystem ../pizfix/os-include -isystem `./find_clang_include_dir.rb`
31-
PASASM = clang -march=x86-64-v2 -fPIC
32-
FILCC = ../build/bin/clang
33-
SHLD = clang -Wl,-dynamic-linker,$(PWD)/../pizfix/lib/ld-yolo-x86_64.so \
34-
-nostdlib -shared ../pizfix/lib/crti.o \
35-
`./find_system_library_file.rb crtbeginS.o` -L../pizfix/lib
36-
SHLDPOST = `./find_system_library_file.rb libgcc.a` -lyoloc -lyolom \
37-
`./find_system_library_file.rb crtendS.o` ../pizfix/lib/crtn.o
64+
$(FILC_LIB_DIR)/libpizlo.so $(FILC_LIB_TEST_DIR)/libpizlo.so \
65+
$(FILC_LIB_GCVERIFY_DIR)/libpizlo.so $(FILC_LIB_TEST_GCVERIFY_DIR)/libpizlo.so \
66+
$(FILC_LIB_DIR)/libpizlo.a \
67+
$(FILC_LIB_DIR)/filc_crt.o $(FILC_LIB_DIR)/filc_mincrt.o
68+
69+
$(DIRS_TO_CREATE):
70+
mkdir -p $@
3871

3972
include common.mk
4073

@@ -81,11 +114,11 @@ clean:
81114
rm -rf build
82115
rm -f src/libpas/filc_native_forwarders.c
83116
rm -f src/libpas/filc_native.h
84-
rm -f ../pizfix/lib/filc_crt.o
85-
rm -f ../pizfix/lib/filc_mincrt.o
86-
rm -f ../pizfix/lib/libpizlo.so
87-
rm -f ../pizfix/lib_test/libpizlo.so
88-
rm -f ../pizfix/lib/libpizlo.a
117+
rm -f $(FILC_LIB_DIR)/filc_crt.o
118+
rm -f $(FILC_LIB_DIR)/filc_mincrt.o
119+
rm -f $(FILC_LIB_DIR)/libpizlo.so
120+
rm -f $(FILC_LIB_TEST_DIR)/libpizlo.so
121+
rm -f $(FILC_LIB_DIR)/libpizlo.a
89122

90123
.filc-objs: $(FILPIZLOOBJS)
91124
.yoloc-dynamic-objs: $(PASPIZLODYNAMICOBJS)
@@ -94,31 +127,31 @@ clean:
94127
.yoloc-test-gcverify-objs: $(PASPIZLOTESTGCVERIFYOBJS)
95128
.yoloc-static-objs: $(PASPIZLOSTATICOBJS)
96129

97-
../pizfix/lib/libpizlo.so: $(PASPIZLODYNAMICOBJS) $(FILPIZLOOBJS)
98-
$(SHLD) -o ../pizfix/lib/libpizlo.so $(PASPIZLODYNAMICOBJS) $(FILPIZLOOBJS) $(SHLDPOST)
130+
$(FILC_LIB_DIR)/libpizlo.so: $(PASPIZLODYNAMICOBJS) $(FILPIZLOOBJS) | $(FILC_LIB_DIR)
131+
$(SHLD) -o $@ $(PASPIZLODYNAMICOBJS) $(FILPIZLOOBJS) $(SHLDPOST)
99132

100-
../pizfix/lib_gcverify/libpizlo.so: $(PASPIZLODYNAMICGCVERIFYOBJS) $(FILPIZLOOBJS)
101-
$(SHLD) -o ../pizfix/lib_gcverify/libpizlo.so $(PASPIZLODYNAMICGCVERIFYOBJS) $(FILPIZLOOBJS) \
133+
$(FILC_LIB_GCVERIFY_DIR)/libpizlo.so: $(PASPIZLODYNAMICGCVERIFYOBJS) $(FILPIZLOOBJS) | $(FILC_LIB_GCVERIFY_DIR)
134+
$(SHLD) -o $@ $(PASPIZLODYNAMICGCVERIFYOBJS) $(FILPIZLOOBJS) \
102135
$(SHLDPOST)
103136

104-
../pizfix/lib_test/libpizlo.so: $(PASPIZLOTESTOBJS) $(FILPIZLOOBJS)
105-
$(SHLD) -o ../pizfix/lib_test/libpizlo.so $(PASPIZLOTESTOBJS) $(FILPIZLOOBJS) $(SHLDPOST)
137+
$(FILC_LIB_TEST_DIR)/libpizlo.so: $(PASPIZLOTESTOBJS) $(FILPIZLOOBJS) | $(FILC_LIB_TEST_DIR)
138+
$(SHLD) -o $@ $(PASPIZLOTESTOBJS) $(FILPIZLOOBJS) $(SHLDPOST)
106139

107-
../pizfix/lib_test_gcverify/libpizlo.so: $(PASPIZLOTESTGCVERIFYOBJS) $(FILPIZLOOBJS)
108-
$(SHLD) -o ../pizfix/lib_test_gcverify/libpizlo.so $(PASPIZLOTESTGCVERIFYOBJS) \
140+
$(FILC_LIB_TEST_GCVERIFY_DIR)/libpizlo.so: $(PASPIZLOTESTGCVERIFYOBJS) $(FILPIZLOOBJS) | $(FILC_LIB_TEST_GCVERIFY_DIR)
141+
$(SHLD) -o $@ $(PASPIZLOTESTGCVERIFYOBJS) \
109142
$(FILPIZLOOBJS) $(SHLDPOST)
110143

111-
../pizfix/lib/libpizlo.a: $(PASPIZLOSTATICOBJS) $(FILPIZLOOBJS)
112-
rm -f ../pizfix/lib/libpizlo.a
113-
ar cr ../pizfix/lib/libpizlo.a $(PASPIZLOSTATICOBJS) $(FILPIZLOOBJS)
144+
$(FILC_LIB_DIR)/libpizlo.a: $(PASPIZLOSTATICOBJS) $(FILPIZLOOBJS) | $(FILC_LIB_DIR)
145+
rm -f $@
146+
ar cr $@ $(PASPIZLOSTATICOBJS) $(FILPIZLOOBJS)
114147

115148
build/pas-pizlo-release-%.o: src/libpas/%.c
116149
$(PASCC) $(PASCFLAGS) -c -o $@ $< -DPAS_FILC=1
117150

118151
build/pas-pizlo-test-%.o: src/libpas/%.c
119152
$(PASCC) $(PASCFLAGS) -c -o $@ $< -DPAS_FILC=1 -DENABLE_PAS_TESTING=1
120153

121-
build/fil-pizlo-%.o: ../filc/src/%.c ../build/bin/clang
154+
build/fil-pizlo-%.o: ../filc/src/%.c $(FILC_CLANG)
122155
$(FILCC) $(FILCFLAGS) -c -o $@ $<
123156

124157
build/pas-pizlo-release-%.o: src/libpas/%.s
@@ -131,15 +164,13 @@ build/pas-pizlo-release-filc_start_program.o: src/libpas/filc_native.h
131164
build/pas-pizlo-test-filc_start_program.o: src/libpas/filc_native.h
132165
build/pas-test-filc_start_program.o: src/libpas/filc_native.h
133166

134-
../pizfix/lib/filc_crt.o: $(MAINSRC)
135-
$(PASCC) -c -o ../pizfix/lib/filc_crt.o $(MAINSRC) $(MAINCFLAGS) -DUSE_LIBC=1
167+
$(FILC_LIB_DIR)/filc_crt.o: $(MAINSRC) | $(FILC_LIB_DIR)
168+
$(PASCC) -c -o $@ $(MAINSRC) $(MAINCFLAGS) -DUSE_LIBC=1
136169

137-
../pizfix/lib/filc_mincrt.o: $(MAINSRC)
138-
$(PASCC) -c -o ../pizfix/lib/filc_mincrt.o $(MAINSRC) $(MAINCFLAGS) -DUSE_LIBC=0
170+
$(FILC_LIB_DIR)/filc_mincrt.o: $(MAINSRC) | $(FILC_LIB_DIR)
171+
$(PASCC) -c -o $@ $(MAINSRC) $(MAINCFLAGS) -DUSE_LIBC=0
139172

140173
src/libpas/filc_native.h: src/libpas/generate_pizlonated_forwarders.rb
141174
ruby src/libpas/generate_pizlonated_forwarders.rb src/libpas/filc_native.h
142175
src/libpas/filc_native_forwarders.c: src/libpas/generate_pizlonated_forwarders.rb
143176
ruby src/libpas/generate_pizlonated_forwarders.rb src/libpas/filc_native_forwarders.c
144-
145-

0 commit comments

Comments
 (0)