LLVMLinux: Embracing the Dragon

Save this PDF as:
 WORD  PNG  TXT  JPG

Size: px
Start display at page:

Download "LLVMLinux: Embracing the Dragon"

Transcription

1 LLVMLinux: Embracing the Dragon Presented by: Behan Webster ( lead) Presentation Date:

2 Clang/LLVM LLVM is a Toolchain Toolkit (libraries from which compilers and related technologies can be built) Clang is a C/C++ toolchain

3 New Clang Benchmarks (compilation) Timed ImageMagick Compilation v Time To Compile Seconds, Less Is Better OpenBenchmarking.org GCC SE +/ GCC RC SE +/ LLVM Clang SE +/ Powered By Phoronix Test Suite

4 New Clang Benchmarks (execution) ebizzy v0.3 Records/s Seconds, More Is Better OpenBenchmarking.org GCC SE +/ GCC RC SE +/ LLVM Clang SE +/ Powered By Phoronix Test Suite (CC) gcc options: -pthread -lpthread -O3 -march=native

5 Other Interesting LLVM Related Projects Clang Static Analyzer Energy consumption analysis of programs using LLVM CUDA llvmpipe (Galium3D) OpenCL (most implementations are based on LLVM) Clang is one of the Android NDK compilers Renderscript in Android is based on LLVM Code transformation tools

6 The LLVMLinux Project Goals Fully build the Linux kernel for multiple architectures, using the Clang/LLVM toolchain Discover LLVM/Kernel issues early and find fixes quickly across both communities Upstream patches to the Linux Kernel and LLVM projects Bring together like-minded developers Enable the kernel community to do more in depth analysis of the kernel code

7 LLVMLinux Build/Test System Fetches, patches, builds, tests: clang, kernel, qemu, etc git clone cd llvmlinux/target/vexpress (or x86_64) make

8 Patched Mainline Kernel Tree A mainline kernel tree with all LLVMLinux patches applied on top is now available: git://git.linuxfoundation.org/llvmlinux/kernel.git Dated llvmlinux branches remotes/origin/llvmlinux The master branch is rebased regularly

9 Supported Architectures X86 (i586 and x86_64) ARM AARCH64 And now MIPS (Work in progress)

10 Linux-Next now has a branch which is pulled into Linux-Next git://git.linuxfoundation.org/llvmlinux/kernel.git remotes/origin/for-next Broader testing of our patches by more people Last step before being submitted to mainline

11 Improved Buildbot Farm New better buildbot master 4 slave build servers (2 more on the way) More CI builds for targets are in the works Configs for known good compiler versions and kernels

12 Other Avenues of Interest Clang Static Analysis of the Linux kernel Kernel specific Checkers (GSoC) Compiling the Android kernel and AOSP with clang Supporting Linaro LLVM team Adding clang support to yocto Building better tools based on LLVM for the kernel community

13 LLVMLinux Project Status LLVM/clang: All LLVMLinux patches for LLVM are Upstream Newer LLVM patches to support the Linux kernel are mostly being added by upstream maintainers Linux Kernel: Roughly 47 kernel patches for various arches LLVMLinux branch in linux-next

14 Kernel Patches Patches still working their way upstream Architecture all arm aarch64 x86_64 TOTALS Number of patches Submitted

15 Kbuild Basic Kbuild support for clang and x86 has been upstreamed Specific support for ARM and aarch64 ready to be upstreamed

16 Integrated Assembly Status David Woodhouse added.code16 support for X86 ASM Renato Golin, Vicinius Tinti, Saleem Abdulrasool and Stepan Dyatkovskiy are working on fixing IA issues in clang to support the Linux ARM kernel code (and ultimately AARCH64) For now we disable the IA and use GNU as instead

17 Different option passing gcc passes -march to GNU as clang doesn't... (Bug submitted PR) -CFLAGS_aes-ce-cipher.o += -march=armv8-a+crypto +CFLAGS_aes-ce-cipher.o += -march=armv8-a+crypto -Wa,-march=armv8-a+crypto

18 extern inline: Different for gnu89 and gnu99 GNU89/GNU90 (used by gcc) Function will be inlined where it is used No function definition is emitted A non-inlined function may also be provided GNU99/C99 (used by clang) Function will be inlined where it is used An external function is emitted No other function of the same name may be provided. Solution? Use static inline instead. Only still an issue for ARM support for ftrace (submitted)

19 Attribute Order gcc is less picky about placement of attribute (()) clang requires it at the end of the type or variable -struct read_mostly va_alignment va_align = { +struct va_alignment read_mostly va_align = {

20 Named Registers Named registers for X86 kernel have been fixed in mainline kernel by Andi Kleen clang now supports using a globally named register for the stack pointer For ARM/AARCH64 move to using a global in asm/thread_info.h register unsigned long current_stack_pointer asm ("sp");

21 ARM percpu patch One of the uses of Named Registers in the ARM code is due to a deficiency in gcc. The new code which works with gcc fails in clang. Solution, provide routines for both, and choose at compile time Gcc: asm("mrc p15, 0, %0, c13, c0, 4" : "=r" (off) : "Q" (*sp)); Clang: asm("mrc p15, 0, %0, c13, c0, 4" : "=r" (off) : : "memory");

22 Section Mismatch Issues (MergedGlobals) By default clang merges globals with internal linkage into one: MergedGlobals Allows globals to be addressed using offsets from a base pointer Can reduce the number of registers used Modpost uses symbol names to look for section mismatches MergedGlobals breaks modpost (false positive section mismatches) Current solution: use -mno-global-merge to stop global merging Updates to modpost may allow this optimization to be enabled again

23 Deprecated clang options clang options have been deprecated -KBUILD_CFLAGS += $(call cc-option, -fcatch-undefined-behavior) +KBUILD_CFLAGS += $(call cc-option, -fsanitize=undefined-trap) +KBUILD_CFLAGS += $(call cc-option, -fsanitize-undefined-trap-on-error)

24 ARM eabi support Clang emits code which uses the aeabi ARM calls which are implemented in compiler-rt (equivalient to libgcc) Compiler-rt doesn't easily cross compile yet... void aeabi_memcpy(void *dest, const void *src, size_t n) void aeabi_memmove(void *dest, const void *src, size_t n) void aeabi_memset(void *s, size_t n, int c)

25 Variable Length Arrays In Structs VLAIS isn't supported by Clang (undocumented gcc extension) char vla[n]; /* Supported, C99/C11 */ struct { char flexible_member[]; /* Supported, C99/C11 */ } struct_with_flexible_member; struct { char vlais[n]; /* Explicitly not allowed by C99/C11 */ } variable_length_array_in_struct; VLAIS is used in the Linux kernel in a number of places, spreading mostly through reusing patterns from data structures found in crypto

26 VLAIS Removal Example - struct { - struct shash_desc shash; - char ctx[crypto_shash_descsize(hash)]; - } desc; + char desc[sizeof(struct shash_desc) + + crypto_shash_descsize(hash)] CRYPTO_MINALIGN_ATTR; + struct shash_desc *shash = (struct shash_desc *)desc; unsigned int i; - desc.shash.tfm = hash; + shash->tfm = hash; (from crypto/hmac.c)

27 VLAIS Removal Example (cont.) (the missing pieces) #define ARCH_KMALLOC_MINALIGN alignof (unsigned long long) #define CRYPTO_MINALIGN ARCH_KMALLOC_MINALIGN #define CRYPTO_MINALIGN_ATTR attribute (( aligned (CRYPTO_MINALIGN))) struct shash_desc { struct crypto_shash *tfm; u32 flags; void * ctx[] CRYPTO_MINALIGN_ATTR; };

28 Status of VLAIS in the Linux Kernel USB Gadget patch is in mainline Mac80211 patch is in mainline Netfilter patch is in mainline Only the VLAIS patches for crypto are left: (apparmor, btrfs, dm-crypt, hmac, libcrc32c, testmgr)

29 How Can You Help? Make it known you want to be able to use Clang to compile the kernel Test LLVMLinux patches Report bugs to the mailing list Help get LLVMLinux patches upstream Work on unsupported features and Bugs Submit new targets and arch support Patches welcome

30 Embrace the Dragon. He's cuddly. Thank you

31 Contribute to the LLVMLinux Project Project wiki page Project Mailing List IRC Channel #llvmlinux on OFTC LLVMLinux Community on Google Plus

Applying Clang Static Analyzer to Linux Kernel

Applying Clang Static Analyzer to Linux Kernel Applying Clang Static Analyzer to Linux Kernel 2012/6/7 FUJITSU COMPUTER TECHNOLOGIES LIMITED Hiroo MATSUMOTO 管 理 番 号 1154ka1 Copyright 2012 FUJITSU COMPUTER TECHNOLOGIES LIMITED Abstract Now there are

More information

RISC-V Software Ecosystem. Andrew Waterman UC Berkeley waterman@eecs.berkeley.edu!

RISC-V Software Ecosystem. Andrew Waterman UC Berkeley waterman@eecs.berkeley.edu! RISC-V Software Ecosystem Andrew Waterman UC Berkeley waterman@eecs.berkeley.edu! 2 Tethered vs. Standalone Systems Tethered systems are those that cannot stand alone - They depend on a host system to

More information

C Programming Review & Productivity Tools

C Programming Review & Productivity Tools Review & Productivity Tools Giovanni Agosta Piattaforme Software per la Rete Modulo 2 Outline Preliminaries 1 Preliminaries 2 Function Pointers Variadic Functions 3 Build Automation Code Versioning 4 Preliminaries

More information

Valgrind BoF Ideas, new features and directions

Valgrind BoF Ideas, new features and directions Valgrind BoF Ideas, new features and directions Everybody! Valgrind developers and users are encouraged to participate by joining the discussion. And of course by kindly (or bitterly:) complain about bugs

More information

RED HAT DEVELOPER TOOLSET Build, Run, & Analyze Applications On Multiple Versions of Red Hat Enterprise Linux

RED HAT DEVELOPER TOOLSET Build, Run, & Analyze Applications On Multiple Versions of Red Hat Enterprise Linux RED HAT DEVELOPER TOOLSET Build, Run, & Analyze Applications On Multiple Versions of Red Hat Enterprise Linux Dr. Matt Newsome Senior Engineering Manager, Tools RED HAT ENTERPRISE LINUX RED HAT DEVELOPER

More information

Developing Embedded Linux Devices Using the Yocto Project

Developing Embedded Linux Devices Using the Yocto Project It s not an embedded Linux distribu2on It creates a custom one for you. Developing Embedded Linux Devices Using the Yocto Project Mark Hatle mark.hatle@windriver.com Wind River Systems September, 2012

More information

Continuous Integration/Testing and why you should assume every change breaks your code

Continuous Integration/Testing and why you should assume every change breaks your code MÜNSTER Continuous Integration/Testing and why you should assume every change breaks your code René Milk 4th November 2015 MÜNSTER Continuous Integration/Testing 2 /16 Not talking about C functions Continuous

More information

LLVM on IBM POWER processors A progress report

LLVM on IBM POWER processors A progress report LLVM on IBM POWER processors A progress report Dr. Ulrich Weigand Senior Technical Staff Member GNU/Linux Compilers & Toolchain Date: Apr 29, 2013 2013 IBM Corporation and System z LLVM on IBM POWER processors

More information

Status and Direction of Kernel Development

Status and Direction of Kernel Development Status and Direction of Kernel Development Andrew Morton Linux Foundation Japan Linux Symposium 2008 July 2008 Page 1 of 18 Overview Process The linux-next

More information

IOTIVITY AND EMBEDDED LINUX SUPPORT. Kishen Maloor Intel Open Source Technology Center

IOTIVITY AND EMBEDDED LINUX SUPPORT. Kishen Maloor Intel Open Source Technology Center IOTIVITY AND EMBEDDED LINUX SUPPORT Kishen Maloor Intel Open Source Technology Center Outline Brief introduction to IoTivity Software development challenges in embedded Yocto Project and how it addresses

More information

Android OS for Servers?

Android OS for Servers? Android OS for Servers? John Stultz April 13 th 2011 http:/www.linaro.org 2 Android OS for what? Android XOS for what? 3 What is the Android OS? Linux kernel Android patches Bionic libc Other libraries

More information

Developing Embedded Linux Devices Using the Yocto Project

Developing Embedded Linux Devices Using the Yocto Project It s not an embedded Linux distribution It creates a custom one for you. Developing Embedded Linux Devices Using the Yocto Project David Stewart Intel Corporation October, 2011 Agenda What is the Yocto

More information

Software configuration management

Software configuration management Software Engineering Theory Software configuration management Lena Buffoni/ Kristian Sandahl Department of Computer and Information Science 2015-09-30 2 Maintenance Requirements System Design (Architecture,

More information

Binary compatibility for library developers. Thiago Macieira, Qt Core Maintainer LinuxCon North America, New Orleans, Sept. 2013

Binary compatibility for library developers. Thiago Macieira, Qt Core Maintainer LinuxCon North America, New Orleans, Sept. 2013 Binary compatibility for library developers Thiago Macieira, Qt Core Maintainer LinuxCon North America, New Orleans, Sept. 2013 Who am I? Open Source developer for 15 years C++ developer for 13 years Software

More information

umps software development

umps software development Laboratorio di Sistemi Operativi Anno Accademico 2006-2007 Software Development with umps Part 2 Mauro Morsiani Software development with umps architecture: Assembly language development is cumbersome:

More information

Laboratorio di Sistemi Operativi Anno Accademico 2009-2010

Laboratorio di Sistemi Operativi Anno Accademico 2009-2010 Laboratorio di Sistemi Operativi Anno Accademico 2009-2010 Software Development with umps Part 2 Mauro Morsiani Copyright Permission is granted to copy, distribute and/or modify this document under the

More information

ARM Update. David Brash Linaro Connect, Hong Kong

ARM Update. David Brash Linaro Connect, Hong Kong ARM Update David Brash Linaro Connect, Hong Kong 1 ARM s market presence 30 billion+ ARM processors shipped 8 billion ARM-based chips in 2011, 30% CAGR over last 5 years Mobile devices still the largest

More information

Version Control using Git and Github. Joseph Rivera

Version Control using Git and Github. Joseph Rivera Version Control using Git and Github Joseph Rivera 1 What is Version Control? Powerful development tool! Management of additions, deletions, and modifications to software/source code or more generally

More information

WIND RIVER DIAB COMPILER

WIND RIVER DIAB COMPILER AN INTEL COMPANY WIND RIVER DIAB COMPILER Boost application performance, reduce memory footprint, and produce high-quality, standards-compliant object code for embedded systems with Wind River Diab Compiler.

More information

gcc link time optimization and the Linux kernel Andi Kleen Intel OTC Apr 2013 andi@firstfloor.org

gcc link time optimization and the Linux kernel Andi Kleen Intel OTC Apr 2013 andi@firstfloor.org gcc link time optimization and the Linux kernel Andi Kleen Intel OTC Apr 2013 andi@firstfloor.org Acknowledgments Lots of people helped/contributed Ralf Baechle, Richard Biener, Tim Bird, Honza Hubicka,

More information

Understanding Valgrind memory leak reports

Understanding Valgrind memory leak reports Understanding Valgrind memory leak reports Aleksander Morgado aleksander@es.gnu.org Thanks to the development team of Azetti Networks not only for supplying so many example memory leaks, but also for their

More information

Fully Automated Static Analysis of Fedora Packages

Fully Automated Static Analysis of Fedora Packages Fully Automated Static Analysis of Fedora Packages Red Hat Kamil Dudka August 9th, 2014 Abstract There are static analysis tools (such as Clang or Cppcheck) that are able to find bugs in Fedora packages

More information

Five standard procedures for building the android system. Figure1. Procedures for building android embedded systems

Five standard procedures for building the android system. Figure1. Procedures for building android embedded systems Standard Operating Procedures for Android Embedded Systems Anupama M. Kulkarni, Shang-Yang Chang, Ying-Dar Lin National Chiao Tung University, Hsinchu, Taiwan November 2012 Android is considered to be

More information

Common Errors in C/C++ Code and Static Analysis

Common Errors in C/C++ Code and Static Analysis Common Errors in C/C++ Code and Static Analysis Red Hat Ondřej Vašík and Kamil Dudka 2011-02-17 Abstract Overview of common programming mistakes in the C/C++ code, and comparison of a few available static

More information

The care of open source creatures. Vincent Sanders

The care of open source creatures. Vincent Sanders The care of open source creatures Vincent Sanders What am I on about? An examination of: What a services a project ought to have What options exist to fulfil those requirements A practical look at some

More information

Frysk The Systems Monitoring and Debugging Tool. Andrew Cagney

Frysk The Systems Monitoring and Debugging Tool. Andrew Cagney Frysk The Systems Monitoring and Debugging Tool Andrew Cagney Agenda Two Use Cases Motivation Comparison with Existing Free Technologies The Frysk Architecture and GUI Command Line Utilities Current Status

More information

Stacey D. Son Consultant/SRI International. BSDCan Developer s Summit 15-May-2013

Stacey D. Son Consultant/SRI International. BSDCan Developer s Summit 15-May-2013 CTSR Trustworthy Systems Research and CTSRDCRASH-worthy Development Cross Building Packages Stacey D. Son Consultant/SRI International BSDCan Developer s Summit 15-May-2013 Approved for public release.

More information

Version Control with Svn, Git and git-svn. Kate Hedstrom ARSC, UAF

Version Control with Svn, Git and git-svn. Kate Hedstrom ARSC, UAF 1 Version Control with Svn, Git and git-svn Kate Hedstrom ARSC, UAF 2 Version Control Software System for managing source files For groups of people working on the same code When you need to get back last

More information

Týr: a dependent type system for spatial memory safety in LLVM

Týr: a dependent type system for spatial memory safety in LLVM Týr: a dependent type system for spatial memory safety in LLVM Vítor De Araújo Álvaro Moreira (orientador) Rodrigo Machado (co-orientador) August 13, 2015 Vítor De Araújo Álvaro Moreira (orientador) Týr:

More information

QEMU, a Fast and Portable Dynamic Translator

QEMU, a Fast and Portable Dynamic Translator QEMU, a Fast and Portable Dynamic Translator Fabrice Bellard Abstract We present the internals of QEMU, a fast machine emulator using an original portable dynamic translator. It emulates several CPUs (x86,

More information

Android Development: a System Perspective. Javier Orensanz

Android Development: a System Perspective. Javier Orensanz Android Development: a System Perspective Javier Orensanz 1 ARM - Linux and Communities Linux kernel GNU Tools 2 Linaro Partner Initiative Mission: Make open source development easier by delivering a common

More information

Going Linux on Massive Multicore

Going Linux on Massive Multicore Embedded Linux Conference Europe 2013 Going Linux on Massive Multicore Marta Rybczyńska 24th October, 2013 Agenda Architecture Linux Port Core Peripherals Debugging Summary and Future Plans 2 Agenda Architecture

More information

MOOSE-Based Application Development on GitLab

MOOSE-Based Application Development on GitLab MOOSE-Based Application Development on GitLab MOOSE Team Idaho National Laboratory September 9, 2014 Introduction The intended audience for this talk is developers of INL-hosted, MOOSE-based applications.

More information

Release Notes for Open Grid Scheduler/Grid Engine. Version: Grid Engine 2011.11

Release Notes for Open Grid Scheduler/Grid Engine. Version: Grid Engine 2011.11 Release Notes for Open Grid Scheduler/Grid Engine Version: Grid Engine 2011.11 New Features Berkeley DB Spooling Directory Can Be Located on NFS The Berkeley DB spooling framework has been enhanced such

More information

Android Renderscript. Stephen Hines, Shih-wei Liao, Jason Sams, Alex Sakhartchouk srhines@google.com November 18, 2011

Android Renderscript. Stephen Hines, Shih-wei Liao, Jason Sams, Alex Sakhartchouk srhines@google.com November 18, 2011 Android Renderscript Stephen Hines, Shih-wei Liao, Jason Sams, Alex Sakhartchouk srhines@google.com November 18, 2011 Outline Goals/Design of Renderscript Components Offline Compiler Online JIT Compiler

More information

Distributed Version Control

Distributed Version Control Distributed Version Control Faisal Tameesh April 3 rd, 2015 Executive Summary Version control is a cornerstone of modern software development. As opposed to the centralized, client-server architecture

More information

Compilers and Tools for Software Stack Optimisation

Compilers and Tools for Software Stack Optimisation Compilers and Tools for Software Stack Optimisation EJCP 2014 2014/06/20 christophe.guillon@st.com Outline Compilers for a Set-Top-Box Compilers Potential Auto Tuning Tools Dynamic Program instrumentation

More information

Version Control with Git. Kate Hedstrom ARSC, UAF

Version Control with Git. Kate Hedstrom ARSC, UAF 1 Version Control with Git Kate Hedstrom ARSC, UAF Linus Torvalds 3 Version Control Software System for managing source files For groups of people working on the same code When you need to get back last

More information

CSC230 Getting Starting in C. Tyler Bletsch

CSC230 Getting Starting in C. Tyler Bletsch CSC230 Getting Starting in C Tyler Bletsch What is C? The language of UNIX Procedural language (no classes) Low-level access to memory Easy to map to machine language Not much run-time stuff needed Surprisingly

More information

C Syntax and the GCC Compiler

C Syntax and the GCC Compiler C Syntax and the GCC Compiler (what does mean: void (*(*f[])())()?) Emmanuel Fleury LaBRI, Université de Bordeaux, France September 7, 2015 Emmanuel Fleury (LaBRI, France) C

More information

Common clock framework: how to use it

Common clock framework: how to use it Embedded Linux Conference 2013 Common clock framework: how to use it Gregory CLEMENT Free Electrons gregory.clement@free-electrons.com Free Electrons. Kernel, drivers and embedded Linux development, consulting,

More information

Using Code Coverage Tools in the Linux Kernel

Using Code Coverage Tools in the Linux Kernel Using Code Coverage Tools in the Linux Kernel Nigel Hinds Paul Larson Hubertus Franke Marty Ridgeway { nhinds, plars, frankeh, mridge } @ us.ibm.com Defining software reliability is hard enough, let alone

More information

Living Downstream Without Drowning. LLVM Dev Meeting 2015 Paul Robinson & Mike Edwards Sony Computer Entertainment

Living Downstream Without Drowning. LLVM Dev Meeting 2015 Paul Robinson & Mike Edwards Sony Computer Entertainment Living Downstream Without Drowning LLVM Dev Meeting 2015 Paul Robinson & Mike Edwards Sony Computer Entertainment TERMINOLOGY Upstream = llvm.org project Downstream = project with your changes Local change

More information

Security types to the rescue

Security types to the rescue Security types to the rescue p. 1 Security types to the rescue David Wagner and Rob Johnson {daw,rtjohnso}@cs.berkeley.edu University of California, Berkeley Security types to the rescue p. 2 Problem statement

More information

Virtual Servers. Virtual machines. Virtualization. Design of IBM s VM. Virtual machine systems can give everyone the OS (and hardware) that they want.

Virtual Servers. Virtual machines. Virtualization. Design of IBM s VM. Virtual machine systems can give everyone the OS (and hardware) that they want. Virtual machines Virtual machine systems can give everyone the OS (and hardware) that they want. IBM s VM provided an exact copy of the hardware to the user. Virtual Servers Virtual machines are very widespread.

More information

CS 377: Operating Systems. Outline. A review of what you ve learned, and how it applies to a real operating system. Lecture 25 - Linux Case Study

CS 377: Operating Systems. Outline. A review of what you ve learned, and how it applies to a real operating system. Lecture 25 - Linux Case Study CS 377: Operating Systems Lecture 25 - Linux Case Study Guest Lecturer: Tim Wood Outline Linux History Design Principles System Overview Process Scheduling Memory Management File Systems A review of what

More information

kgraft Live patching of the Linux kernel

kgraft Live patching of the Linux kernel kgraft Live patching of the Linux kernel Vojtěch Pavlík Director SUSE Labs vojtech@suse.com Why live patching? Common tiers of change management: 1. Incident response (we're down, actively exploited )

More information

MatrixSSL Porting Guide

MatrixSSL Porting Guide MatrixSSL Porting Guide Electronic versions are uncontrolled unless directly accessed from the QA Document Control system. Printed version are uncontrolled except when stamped with VALID COPY in red. External

More information

Reverse Engineering Objective-C. Jeff Hui

Reverse Engineering Objective-C. Jeff Hui Reverse Engineering Objective-C Jeff Hui The process of understanding a system through analysis of its structure, function, and operation Wikipedia It s not Debugging It s Reverse Engineering! The process

More information

Bringing Clang and LLVM to Visual C++ users. Reid Kleckner Google

Bringing Clang and LLVM to Visual C++ users. Reid Kleckner Google Bringing Clang and LLVM to Visual C++ users Reid Kleckner Google C++ devs demand a good toolchain Fast build times Powerful optimizations: LTO, etc Helpful diagnostics Static analyzers Dynamic instrumentation

More information

EMSCRIPTEN - COMPILING LLVM BITCODE TO JAVASCRIPT (?!)

EMSCRIPTEN - COMPILING LLVM BITCODE TO JAVASCRIPT (?!) EMSCRIPTEN - COMPILING LLVM BITCODE TO JAVASCRIPT (?!) ALON ZAKAI (MOZILLA) @kripken JavaScript..? At the LLVM developer's conference..? Everything compiles into LLVM bitcode The web is everywhere, and

More information

Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C

Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C Embedded Programming in C/C++: Lesson-1: Programming Elements and Programming in C 1 An essential part of any embedded system design Programming 2 Programming in Assembly or HLL Processor and memory-sensitive

More information

Lecture 7: Machine-Level Programming I: Basics Mohamed Zahran (aka Z) mzahran@cs.nyu.edu http://www.mzahran.com

Lecture 7: Machine-Level Programming I: Basics Mohamed Zahran (aka Z) mzahran@cs.nyu.edu http://www.mzahran.com CSCI-UA.0201-003 Computer Systems Organization Lecture 7: Machine-Level Programming I: Basics Mohamed Zahran (aka Z) mzahran@cs.nyu.edu http://www.mzahran.com Some slides adapted (and slightly modified)

More information

Introduction to Version Control

Introduction to Version Control Research Institute for Symbolic Computation Johannes Kepler University Linz, Austria Winter semester 2014 Outline General Remarks about Version Control 1 General Remarks about Version Control 2 Outline

More information

Principles of Software Construction: Objects, Design, and Concurrency

Principles of Software Construction: Objects, Design, and Concurrency Principles of Software Construction: Objects, Design, and Concurrency Version Control Jonathan Aldrich Charlie Garrod School of Computer Science Based on slides by Christian Kästner 1 Administrivia Extra

More information

I Control Your Code Attack Vectors Through the Eyes of Software-based Fault Isolation. Mathias Payer, ETH Zurich

I Control Your Code Attack Vectors Through the Eyes of Software-based Fault Isolation. Mathias Payer, ETH Zurich I Control Your Code Attack Vectors Through the Eyes of Software-based Fault Isolation Mathias Payer, ETH Zurich Motivation Applications often vulnerable to security exploits Solution: restrict application

More information

Lab 2 : Distributed Version Control Systems CMSC 340 Due: Oct. 1 st by 23:59:59pm

Lab 2 : Distributed Version Control Systems CMSC 340 Due: Oct. 1 st by 23:59:59pm Lab 2 : Distributed Version Control Systems CMSC 340 Due: Oct. 1 st by 23:59:59pm One of the ways programmers collaborate is by sharing code. While it's not too difficult to share code with one or two

More information

C A short introduction

C A short introduction About these lectures C A short introduction Stefan Johansson Department of Computing Science Umeå University Objectives Give a short introduction to C and the C programming environment in Linux/Unix Go

More information

Android Sensors 101. 2014 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License. CC-BY Google

Android Sensors 101. 2014 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License. CC-BY Google Android Sensors 101 Atilla Filiz atilla@mind.be 2014 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 Unported License CC-BY Google These slides are made available to you under

More information

MatrixSSL Developer s Guide

MatrixSSL Developer s Guide MatrixSSL Developer s Guide This document discusses developing with MatrixSSL. It includes instructions on integrating MatrixSSL into an application and a description of the configurable options for modifying

More information

Data Types in the Kernel

Data Types in the Kernel ,ch11.3440 Page 288 Thursday, January 20, 2005 9:25 AM CHAPTER 11 Data Types in the Kernel Chapter 11 Before we go on to more advanced topics, we need to stop for a quick note on portability issues. Modern

More information

Computer Forensics. Torbjörn Pettersson 2007 2007-04-19. Torbjörn Pettersson. Archive, CCC. Title Cryptographic key recovery from Linux memory dumps

Computer Forensics. Torbjörn Pettersson 2007 2007-04-19. Torbjörn Pettersson. Archive, CCC. Title Cryptographic key recovery from Linux memory dumps Computer Forensics Title Cryptographic key recovery from Linux memory dumps Torbjörn Pettersson 2007 Doc. ID Author Distribution Torbjörn Pettersson Archive, CCC Version Saved A 2007-04-19 Preface Contents

More information

Obfuscatorreloaded. Pascal Junod HEIG-VD Julien Rinaldini HEIG-VD Marc Romanens- EIA-FR Jean-Roland Schuler EIA-FR

Obfuscatorreloaded. Pascal Junod HEIG-VD Julien Rinaldini HEIG-VD Marc Romanens- EIA-FR Jean-Roland Schuler EIA-FR Obfuscatorreloaded Pascal Junod HEIG-VD Julien Rinaldini HEIG-VD Marc Romanens- EIA-FR Jean-Roland Schuler EIA-FR Application Security Forum - 2012 Western Switzerland 7-8 novembre 2012 - Y-Parc / Yverdon-les-Bains

More information

SQLITE C/C++ TUTORIAL

SQLITE C/C++ TUTORIAL http://www.tutorialspoint.com/sqlite/sqlite_c_cpp.htm SQLITE C/C++ TUTORIAL Copyright tutorialspoint.com Installation Before we start using SQLite in our C/C++ programs, we need to make sure that we have

More information

Reminders. Lab opens from today. Many students want to use the extra I/O pins on

Reminders. Lab opens from today. Many students want to use the extra I/O pins on Reminders Lab opens from today Wednesday 4:00-5:30pm, Friday 1:00-2:30pm Location: MK228 Each student checks out one sensor mote for your Lab 1 The TA will be there to help your lab work Many students

More information

NEON. Support in Compilation Tools. Development Article. Copyright 2009 ARM Limited. All rights reserved. DHT 0004A (ID081609)

NEON. Support in Compilation Tools. Development Article. Copyright 2009 ARM Limited. All rights reserved. DHT 0004A (ID081609) NEON Support in Compilation Tools Development Article Copyright 2009 ARM Limited. All rights reserved. DHT 0004A () NEON Support in Compilation Tools Development Article Copyright 2009 ARM Limited. All

More information

Android Programming and Security

Android Programming and Security Android Programming and Security Dependable and Secure Systems Andrea Saracino andrea.saracino@iet.unipi.it Outlook (1) The Android Open Source Project Philosophy Players Outlook (2) Part I: Android System

More information

Integer Set Library: Manual

Integer Set Library: Manual Integer Set Library: Manual Version: isl-0.15 Sven Verdoolaege June 11, 2015 Contents 1 User Manual 3 1.1 Introduction............................... 3 1.1.1 Backward Incompatible Changes...............

More information

Channel Access Client Programming. Andrew Johnson Computer Scientist, AES-SSG

Channel Access Client Programming. Andrew Johnson Computer Scientist, AES-SSG Channel Access Client Programming Andrew Johnson Computer Scientist, AES-SSG Channel Access The main programming interface for writing Channel Access clients is the library that comes with EPICS base Written

More information

Pattern Insight Clone Detection

Pattern Insight Clone Detection Pattern Insight Clone Detection TM The fastest, most effective way to discover all similar code segments What is Clone Detection? Pattern Insight Clone Detection is a powerful pattern discovery technology

More information

Yocto Project ADT, Eclipse plug-in and Developer Tools

Yocto Project ADT, Eclipse plug-in and Developer Tools Yocto Project ADT, Eclipse plug-in and Developer Tools Jessica Zhang LinuxCon - Japan Tokyo 2013 Agenda The Application Development Toolkit Usage Flow And Roles Yocto Project Eclipse Plug-in Interacts

More information

SYSTEMS PROGRAMMING C++ INTRODUCTION

SYSTEMS PROGRAMMING C++ INTRODUCTION Faculty of Computer Science / Institute of Systems Architecture / Operating Systems SYSTEMS PROGRAMMING C++ INTRODUCTION Alexander Warg WHY C++? C++ is the language that allows to express ideas from the

More information

Research and Design of Universal and Open Software Development Platform for Digital Home

Research and Design of Universal and Open Software Development Platform for Digital Home Research and Design of Universal and Open Software Development Platform for Digital Home CaiFeng Cao School of Computer Wuyi University, Jiangmen 529020, China cfcao@126.com Abstract. With the development

More information

Embedded Linux Platform Developer

Embedded Linux Platform Developer Embedded Linux Platform Developer Course description Advanced training program on Embedded Linux platform development with comprehensive coverage on target board bring up, Embedded Linux porting, Linux

More information

The Kernel Report. Vision 2007 edition. Jonathan Corbet LWN.net corbet@lwn.net

The Kernel Report. Vision 2007 edition. Jonathan Corbet LWN.net corbet@lwn.net The Kernel Report Vision 2007 edition Jonathan Corbet LWN.net corbet@lwn.net The Plan 1) A very brief history overview 2) The development process 3) Guesses about the future History 1 An extremely rushed

More information

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer GIT

About the Tutorial. Audience. Prerequisites. Copyright & Disclaimer GIT i About the Tutorial Git is a distributed revision control and source code management system with an emphasis on speed. Git was initially designed and developed by Linus Torvalds for Linux kernel development.

More information

C++ Introduction to class and data abstraction

C++ Introduction to class and data abstraction C++ Introduction to class and data abstraction 1 Data abstraction A data abstraction is a simplified view of an object by specifying what can be done with the object while hiding unnecessary details In

More information

Version Control Your Jenkins Jobs with Jenkins Job Builder

Version Control Your Jenkins Jobs with Jenkins Job Builder Version Control Your Jenkins Jobs with Jenkins Job Builder Abstract Wayne Warren wayne@puppetlabs.com Puppet Labs uses Jenkins to automate building and testing software. While we do derive benefit from

More information

The Insieme Compiler Frontend: A Clang-based C/C++ Frontend. Bernhard Höckner

The Insieme Compiler Frontend: A Clang-based C/C++ Frontend. Bernhard Höckner The Insieme Compiler Frontend: A Clang-based C/C++ Frontend Master Thesis in Computer Science by Bernhard Höckner submitted to the Faculty of Mathematics, Computer Science and Physics of the University

More information

Exam in EDAA25 C Programming

Exam in EDAA25 C Programming Exam in EDAA25 C Programming October 30, 2014, 14-19 Inga hjälpmedel! Examinator: Jonas Skeppstedt Grading instructions In general: assess if a function or program works as intended while ignoring syntax

More information

Developing tests for the KVM autotest framework

Developing tests for the KVM autotest framework Lucas Meneghel Rodrigues lmr@redhat.com KVM Forum 2010 August 9, 2010 1 Automated testing Autotest The wonders of virtualization testing 2 How KVM autotest solves the original problem? Features Test structure

More information

Project Discussion Multi-Core Architectures and Programming

Project Discussion Multi-Core Architectures and Programming Project Discussion Multi-Core Architectures and Programming Oliver Reiche, Christian Schmitt, Frank Hannig Hardware/Software Co-Design, University of Erlangen-Nürnberg May 15, 2014 Administrative Trivia

More information

NVIDIA CUDA GETTING STARTED GUIDE FOR MAC OS X

NVIDIA CUDA GETTING STARTED GUIDE FOR MAC OS X NVIDIA CUDA GETTING STARTED GUIDE FOR MAC OS X DU-05348-001_v6.5 August 2014 Installation and Verification on Mac OS X TABLE OF CONTENTS Chapter 1. Introduction...1 1.1. System Requirements... 1 1.2. About

More information

Development With ARM DS-5. Mervyn Liu FAE Aug. 2015

Development With ARM DS-5. Mervyn Liu FAE Aug. 2015 Development With ARM DS-5 Mervyn Liu FAE Aug. 2015 1 Support for all Stages of Product Development Single IDE, compiler, debug, trace and performance analysis for all stages in the product development

More information

Automated Performance-Tracking of LLVMGenerated Code. Kristof Beyls LLVMdev meeting October 2015

Automated Performance-Tracking of LLVMGenerated Code. Kristof Beyls LLVMdev meeting October 2015 Automated Performance-Tracking of LLVMGenerated Code Kristof Beyls LLVMdev meeting October 2015 1 Why bother? Most of us care about Top-Of-Trunk always being in a releasable state. For all/majority of

More information

CPSC 491. Today: Source code control. Source Code (Version) Control. Exercise: g., no git, subversion, cvs, etc.)

CPSC 491. Today: Source code control. Source Code (Version) Control. Exercise: g., no git, subversion, cvs, etc.) Today: Source code control CPSC 491 Source Code (Version) Control Exercise: 1. Pretend like you don t have a version control system (e. g., no git, subversion, cvs, etc.) 2. How would you manage your source

More information

sys socketcall: Network systems calls on Linux

sys socketcall: Network systems calls on Linux sys socketcall: Network systems calls on Linux Daniel Noé April 9, 2008 The method used by Linux for system calls is explored in detail in Understanding the Linux Kernel. However, the book does not adequately

More information

Introduction to the Intel Numeric String Conversion Library

Introduction to the Intel Numeric String Conversion Library Introduction to the Intel Numeric String Conversion Library Intel Numeric String Conversion Library (libistrconv) is a new component introduced in Intel C++ compiler version 14.0 Update 1. This library

More information

For a 64-bit system. I - Presentation Of The Shellcode

For a 64-bit system. I - Presentation Of The Shellcode #How To Create Your Own Shellcode On Arch Linux? #Author : N3td3v!l #Contact-mail : 4nonymouse@usa.com #Website : Nopotm.ir #Spcial tnx to : C0nn3ct0r And All Honest Hackerz and Security Managers I - Presentation

More information

Cloud Computing Performance Benchmarking Report. Comparing ProfitBricks and Amazon EC2 using standard open source tools UnixBench, DBENCH and Iperf

Cloud Computing Performance Benchmarking Report. Comparing ProfitBricks and Amazon EC2 using standard open source tools UnixBench, DBENCH and Iperf Cloud Computing Performance Benchmarking Report Comparing and Amazon EC2 using standard open source tools UnixBench, DBENCH and Iperf October 2014 TABLE OF CONTENTS The Cloud Computing Performance Benchmark

More information

Version control with GIT

Version control with GIT AGV, IIT Kharagpur September 13, 2012 Outline 1 Version control system What is version control Why version control 2 Introducing GIT What is GIT? 3 Using GIT Using GIT for AGV at IIT KGP Help and Tips

More information

RTI Monitoring Library Getting Started Guide

RTI Monitoring Library Getting Started Guide RTI Monitoring Library Getting Started Guide Version 5.1.0 2011-2013 Real-Time Innovations, Inc. All rights reserved. Printed in U.S.A. First printing. December 2013. Trademarks Real-Time Innovations,

More information

Git Basics. Christian Hanser. Institute for Applied Information Processing and Communications Graz University of Technology. 6.

Git Basics. Christian Hanser. Institute for Applied Information Processing and Communications Graz University of Technology. 6. Git Basics Christian Hanser Institute for Applied Information Processing and Communications Graz University of Technology 6. March 2013 Christian Hanser 6. March 2013 Seite 1/39 Outline Learning Targets

More information

Yocto Project Experience: Continuous Integration

Yocto Project Experience: Continuous Integration Yocto Project Experience: Continuous Integration Mark Hatle Senior Member of Technical Staff Wind River Edinburgh, Scotland 23 Oct 2013 Agenda Our experiences as an OSV, productizing the Yocto Project

More information

Linux Foundation Automotive Summit - Yokohama, Japan

Linux Foundation Automotive Summit - Yokohama, Japan It s not an embedded Linux distribution It creates a custom one for you. The Yocto Project Linux Foundation Automotive Summit - Yokohama, Japan Tracey M. Erway The Yocto Project Advocacy and Communications

More information

MPATE-GE 2618: C Programming for Music Technology. Unit 1.1

MPATE-GE 2618: C Programming for Music Technology. Unit 1.1 MPATE-GE 2618: C Programming for Music Technology Unit 1.1 What is an algorithm? An algorithm is a precise, unambiguous procedure for producing certain results (outputs) from given data (inputs). It is

More information

Writing Portable Programs COS 217

Writing Portable Programs COS 217 Writing Portable Programs COS 217 1 Goals of Today s Class Writing portable programs in C Sources of heterogeneity Data types, evaluation order, byte order, char set, Reading period and final exam Important

More information

Using Git for Project Management with µvision

Using Git for Project Management with µvision MDK Version 5 Tutorial AN279, Spring 2015, V 1.0 Abstract Teamwork is the basis of many modern microcontroller development projects. Often teams are distributed all over the world and over various time

More information

Visualizing Information Flow through C Programs

Visualizing Information Flow through C Programs Visualizing Information Flow through C Programs Joe Hurd, Aaron Tomb and David Burke Galois, Inc. {joe,atomb,davidb}@galois.com Systems Software Verification Workshop 7 October 2010 Joe Hurd, Aaron Tomb

More information