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
SMART_READER_LITE
LIVE PREVIEW

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


slide-1
SLIDE 1
slide-2
SLIDE 2

App

slide-3
SLIDE 3

App App App App App App

slide-4
SLIDE 4

App App App App App App

slide-5
SLIDE 5

App App App App App App App App App App App App

slide-6
SLIDE 6

App App App App App App App App App App App App

slide-7
SLIDE 7

Making Data-Driven Porting Decisions with Tuscan

Kareem Khazem Earl T. Barr Petr Hosek

slide-8
SLIDE 8

App

Compiler Standard Library Linker Archi- tecture

gcc glibc ld.bfd x86_64

0010

slide-9
SLIDE 9

App

Compiler Standard Library Linker Archi- tecture

gcc glibc ld.bfd x86_64

0010

slide-10
SLIDE 10

App

Compiler Standard Library Linker Archi- tecture

gcc glibc ld.bfd x86_64

0010

slide-11
SLIDE 11

App

Compiler Standard Library Linker Archi- tecture

gcc glibc ld.bfd x86_64

0010

slide-12
SLIDE 12

App

Compiler Standard Library Linker Archi- tecture

gcc glibc ld.bfd x86_64

0010

slide-13
SLIDE 13

App

Compiler Standard Library Linker Archi- tecture

???

0010

slide-14
SLIDE 14

FreeBSD

Compiler Standard Library Linker Archi- tecture

clang glibc LLD x86_64

0010

slide-15
SLIDE 15

Fuchsia

Compiler Standard Library Linker Archi- tecture

clang musl LLD arm64

0010

slide-16
SLIDE 16

WebAssembly

Compiler Standard Library Linker Archi- tecture

[static] wasm

[embedded]

0010

slide-17
SLIDE 17

App App App App App App

0020

slide-18
SLIDE 18

App App App App App App

0020

slide-19
SLIDE 19

App App App App App App App App App App App App App App App App App App

0020

slide-20
SLIDE 20

App App App App App App App App App App App App App App App App App App

0020

slide-21
SLIDE 21

App App App App App App App App App App App App

... Reproducible 0030

slide-22
SLIDE 22

1.0

Repeatable

2.0

0040

slide-23
SLIDE 23

1.0

Repeatable

2.0

0040

slide-24
SLIDE 24

Scalable 0050

slide-25
SLIDE 25

Scalable 0050

slide-26
SLIDE 26

0060

slide-27
SLIDE 27

0060

slide-28
SLIDE 28

Depends

  • n

0070

slide-29
SLIDE 29

Depends

  • n

0070

slide-30
SLIDE 30

Depends

  • n

0070

slide-31
SLIDE 31

Depends

  • n

0070

slide-32
SLIDE 32

Depends

  • n

0070

slide-33
SLIDE 33

0080

slide-34
SLIDE 34

0080

slide-35
SLIDE 35

0080

slide-36
SLIDE 36

0080

slide-37
SLIDE 37

0080

slide-38
SLIDE 38

0080

slide-39
SLIDE 39

0080

slide-40
SLIDE 40

0080

slide-41
SLIDE 41

0080

slide-42
SLIDE 42

0080

slide-43
SLIDE 43

0080

slide-44
SLIDE 44

0090

slide-45
SLIDE 45

.c .c

0950 0950

slide-46
SLIDE 46

.c .c

0950

??? ???

0950

slide-47
SLIDE 47

foo

.c .c

0950

??? ???

0950

slide-48
SLIDE 48

foo

foo .exe

.c .c

0950

??? ???

0950

slide-49
SLIDE 49

foo

foo .exe

.c .c

0950

??? ???

0950 /usr/bin

slide-50
SLIDE 50

foo

foo .exe

lib foo

.c .c

0950

??? ???

0950 /usr/bin

slide-51
SLIDE 51

foo

foo .exe

lib foo

.c .c

0950

??? ???

0950 /usr/bin /usr/lib

slide-52
SLIDE 52

foo .exe

lib foo

.c .c

0950

??? ???

0950 /usr/bin /usr/lib

slide-53
SLIDE 53

foo .exe

lib foo

.c .c

0950

??? ???

0950 /usr/bin /usr/lib

slide-54
SLIDE 54

foo .exe

lib foo

.c .c

0950

??? ???

0950 /usr/bin /usr/lib

slide-55
SLIDE 55

foo .exe

lib foo

.c .c

0950

??? ???

0950 /usr/bin /usr/lib

slide-56
SLIDE 56

foo .exe

lib foo

.c .c

0950

??? ???

0950 /usr/bin /usr/lib

slide-57
SLIDE 57

foo .exe

lib foo

.c .c

0950

??? ???

0950

lib foo

/usr/bin /usr/lib

slide-58
SLIDE 58

foo .exe

lib foo

.c .c

0950

??? ???

0950

lib foo

/usr/bin /usr/lib

slide-59
SLIDE 59

foo .exe

lib foo

.c .c

0950

??? ???

0950

lib foo

/usr/bin /usr/lib

slide-60
SLIDE 60

Hybrid Packages

0100

slide-61
SLIDE 61

.c

0110

slide-62
SLIDE 62

.c

0110

slide-63
SLIDE 63

.c

0110

slide-64
SLIDE 64

.c

0110

slide-65
SLIDE 65

.c

.c

0110

slide-66
SLIDE 66

.c

.c

0110

slide-67
SLIDE 67

.c

.c

0110

slide-68
SLIDE 68

.c

.c

0110

slide-69
SLIDE 69

0120

Tuscan

slide-70
SLIDE 70

0120

Tuscan

slide-71
SLIDE 71

0120

Tuscan

slide-72
SLIDE 72

0120

Tuscan

App App App App App App

slide-73
SLIDE 73

Catalogue

0130

slide-74
SLIDE 74

.c

0130

slide-75
SLIDE 75

.c

0130

slide-76
SLIDE 76

.c

0130

slide-77
SLIDE 77

.c

0130

slide-78
SLIDE 78

.c

/native /target

0130

slide-79
SLIDE 79

.c

/native /target

Makefile # $CC foo.c gcc foo.c 0130

slide-80
SLIDE 80

.c

/native /target

Makefile # $CC foo.c gcc foo.c CC=clang 0130

slide-81
SLIDE 81

.c

/native /target

Makefile # $CC foo.c gcc foo.c gcc CC=clang 0130

slide-82
SLIDE 82

.c

/native /target

Makefile PATH= /usr/bin ... $CC foo.c

CC=android-gcc

0130

slide-83
SLIDE 83

.c

/native /target

Makefile PATH= /usr/bin ... $CC foo.c ???

CC=android-gcc

0130

slide-84
SLIDE 84

.c

/native /target

foo.c #include <gnu/ stubs-32.h > 0130

slide-85
SLIDE 85

.c

/native /target

foo.c #include <gnu/ stubs-32.h > #include 0130

slide-86
SLIDE 86

.c

0150

slide-87
SLIDE 87

.c

log

0150

slide-88
SLIDE 88

.c

log

0150

slide-89
SLIDE 89

Makefile

0170

slide-90
SLIDE 90

Makefile

posix_spawn( gcc ) 0170

slide-91
SLIDE 91

Makefile

posix_spawn( gcc ) execve(android-gcc, PATH) 0170

slide-92
SLIDE 92

Makefile

RED

0175

slide-93
SLIDE 93

Makefile

RED

0175

slide-94
SLIDE 94

Makefile

posix_spawn( gcc )

RED

0175

slide-95
SLIDE 95

Makefile

posix_spawn( gcc ) clang

RED

0175

slide-96
SLIDE 96

Makefile

posix_spawn( gcc ) execve(android-gcc, PATH) clang

RED

0175

slide-97
SLIDE 97

Makefile

posix_spawn( gcc ) execve(android-gcc, PATH) clang PATH

RED

0175

slide-98
SLIDE 98

x86_64 glibc gcc

0180

slide-99
SLIDE 99

x86_64 glibc gcc x86_64 glibc clang

0180

slide-100
SLIDE 100

x86_64 glibc gcc x86_64 glibc clang x86_64 musl clang

0180

slide-101
SLIDE 101

x86_64 glibc gcc x86_64 glibc clang x86_64 musl clang arm-32 bionic

android-gcc

0180

slide-102
SLIDE 102

x86_64 glibc gcc x86_64 glibc clang x86_64 musl clang arm-32 bionic

android-gcc

Successful builds

0180

slide-103
SLIDE 103

Making Data-Driven Porting Decisions with Tuscan

Kareem Khazem Earl T. Barr Petr Hosek