App App App App App App App App App App App App App App App - - PowerPoint PPT Presentation
App App App App App App App App App App App App App App App - - PowerPoint PPT Presentation
App App App App App App App App App App App App App App App App App App App App App App App App App App App App App App App App App App App App App Making Data-Driven Porting Decisions with Tuscan Kareem Khazem Earl T. Barr
App
App App App App App App
App App App App App App
App App App App App App App App App App App App
App App App App App App App App App App App App
Making Data-Driven Porting Decisions with Tuscan
Kareem Khazem Earl T. Barr Petr Hosek
App
Compiler Standard Library Linker Archi- tecture
gcc glibc ld.bfd x86_64
0010
App
Compiler Standard Library Linker Archi- tecture
gcc glibc ld.bfd x86_64
0010
App
Compiler Standard Library Linker Archi- tecture
gcc glibc ld.bfd x86_64
0010
App
Compiler Standard Library Linker Archi- tecture
gcc glibc ld.bfd x86_64
0010
App
Compiler Standard Library Linker Archi- tecture
gcc glibc ld.bfd x86_64
0010
App
Compiler Standard Library Linker Archi- tecture
???
0010
FreeBSD
Compiler Standard Library Linker Archi- tecture
clang glibc LLD x86_64
0010
Fuchsia
Compiler Standard Library Linker Archi- tecture
clang musl LLD arm64
0010
WebAssembly
Compiler Standard Library Linker Archi- tecture
[static] wasm
[embedded]
0010
App App App App App App
0020
App App App App App App
0020
App App App App App App App App App App App App App App App App App App
0020
App App App App App App App App App App App App App App App App App App
0020
App App App App App App App App App App App App
... Reproducible 0030
1.0
Repeatable
2.0
0040
1.0
Repeatable
2.0
0040
Scalable 0050
Scalable 0050
0060
0060
Depends
- n
0070
Depends
- n
0070
Depends
- n
0070
Depends
- n
0070
Depends
- n
0070
0080
0080
0080
0080
0080
0080
0080
0080
0080
0080
0080
0090
.c .c
0950 0950
.c .c
0950
??? ???
0950
foo
.c .c
0950
??? ???
0950
foo
foo .exe
.c .c
0950
??? ???
0950
foo
foo .exe
.c .c
0950
??? ???
0950 /usr/bin
foo
foo .exe
lib foo
.c .c
0950
??? ???
0950 /usr/bin
foo
foo .exe
lib foo
.c .c
0950
??? ???
0950 /usr/bin /usr/lib
foo .exe
lib foo
.c .c
0950
??? ???
0950 /usr/bin /usr/lib
foo .exe
lib foo
.c .c
0950
??? ???
0950 /usr/bin /usr/lib
foo .exe
lib foo
.c .c
0950
??? ???
0950 /usr/bin /usr/lib
foo .exe
lib foo
.c .c
0950
??? ???
0950 /usr/bin /usr/lib
foo .exe
lib foo
.c .c
0950
??? ???
0950 /usr/bin /usr/lib
foo .exe
lib foo
.c .c
0950
??? ???
0950
lib foo
/usr/bin /usr/lib
foo .exe
lib foo
.c .c
0950
??? ???
0950
lib foo
/usr/bin /usr/lib
foo .exe
lib foo
.c .c
0950
??? ???
0950
lib foo
/usr/bin /usr/lib
Hybrid Packages
0100
.c
0110
.c
0110
.c
0110
.c
0110
.c
.c
0110
.c
.c
0110
.c
.c
0110
.c
.c
0110
0120
Tuscan
0120
Tuscan
0120
Tuscan
0120
Tuscan
App App App App App App
Catalogue
0130
.c
0130
.c
0130
.c
0130
.c
0130
.c
/native /target
0130
.c
/native /target
Makefile # $CC foo.c gcc foo.c 0130
.c
/native /target
Makefile # $CC foo.c gcc foo.c CC=clang 0130
.c
/native /target
Makefile # $CC foo.c gcc foo.c gcc CC=clang 0130
.c
/native /target
Makefile PATH= /usr/bin ... $CC foo.c
CC=android-gcc
0130
.c
/native /target
Makefile PATH= /usr/bin ... $CC foo.c ???
CC=android-gcc
0130
.c
/native /target
foo.c #include <gnu/ stubs-32.h > 0130
.c
/native /target
foo.c #include <gnu/ stubs-32.h > #include 0130
.c
0150
.c
log
0150
.c
log
0150
Makefile
0170
Makefile
posix_spawn( gcc ) 0170
Makefile
posix_spawn( gcc ) execve(android-gcc, PATH) 0170
Makefile
RED
0175
Makefile
RED
0175
Makefile
posix_spawn( gcc )
RED
0175
Makefile
posix_spawn( gcc ) clang
RED
0175
Makefile
posix_spawn( gcc ) execve(android-gcc, PATH) clang
RED
0175
Makefile
posix_spawn( gcc ) execve(android-gcc, PATH) clang PATH
RED
0175
x86_64 glibc gcc
0180
x86_64 glibc gcc x86_64 glibc clang
0180
x86_64 glibc gcc x86_64 glibc clang x86_64 musl clang
0180
x86_64 glibc gcc x86_64 glibc clang x86_64 musl clang arm-32 bionic
android-gcc
0180
x86_64 glibc gcc x86_64 glibc clang x86_64 musl clang arm-32 bionic
android-gcc
Successful builds
0180
Making Data-Driven Porting Decisions with Tuscan
Kareem Khazem Earl T. Barr Petr Hosek