AdaCore C/C++ Offering

Slides:



Advertisements
Similar presentations
.NET Technology. Introduction Overview of.NET What.NET means for Developers, Users and Businesses Two.NET Research Projects:.NET Generics AsmL.
Advertisements

FAA-Qualifiable Ada Subset Compiler V. Santhanam Boeing.
Last update: August 9, 2002 CodeTest Embedded Software Verification Tools By Advanced Microsystems Corporation.
1-1 Embedded Software Development Tools and Processes Hardware & Software Hardware – Host development system Software – Compilers, simulators etc. Target.
Quentin Ochem AdaCore.  Complex software are filled with bugs  OS (windows, linux, macosx…)  Webservers  Office suites  Video games  …  And in.
. Memory Management. Memory Organization u During run time, variables can be stored in one of three “pools”  Stack  Static heap  Dynamic heap.
1 Contents. 2 Run-Time Storage Organization 3 Static Allocation In many early languages, notably assembly and FORTRAN, all storage allocation is static.
Introduction Purpose Objectives Content Learning Time
Improving Program Performance Function Visibility in z/TPF C++ Load Modules October 2, /2/20151American Express Public.
.NET Framework Danish Sami UG Lead.NetFoundry
BLU-ICE and the Distributed Control System Constraints for Software Development Strategies Timothy M. McPhillips Stanford Synchrotron Radiation Laboratory.
Names and Scope. Scope Suppose that a name is used many times for different entities in text of the program, or in the course of execution. When the name.
Vendor Presentation SigAda 2005 George Romanski
Slide: 1 Copyright © 2009 AdaCore GeneAuto for Ada and SPARK A verifying model compiler GeneAuto2 meeting (Toulouse) September 2009 Matteo Bordin
Building More Reliable And Better Performing Web Applications With Visual Studio 2005 Team System Gabriel Marius TLN312 Program Manager Microsoft Corporation.
BridgePoint Integration John Wolfe / Robert Day Accelerated Technology.
Slide Advanced Programming 2004, based on LY Stefanus's slides Native Methods.
 Programming - the process of creating computer programs.
© 2008, Renesas Technology America, Inc., All Rights Reserved 1 Introduction Purpose  This training course explains how to use section setting and memory.
Software Systems Division (TEC-SW) ASSERT process & toolchain Maxime Perrotin, ESA.
© 2008, Renesas Technology America, Inc., All Rights Reserved 1 Introduction Purpose  This training course demonstrates the Project Generator function.
LECTURE 3 Translation. PROCESS MEMORY There are four general areas of memory in a process. The text area contains the instructions for the application.
GPS The GNAT Programming Studio GPS The GNAT Programming Studio Presentation cover page EU Vincent Celier FOSDEM 8-9 February 2009 Senior.
Introduction CMSC 202 Fall Instructors Mr. Ryan Bergeron – Lecture Section 01 Tues/Thu 1:00 – 2:15 am, Sondheim 111 – Lecture Section 04 Tues/Thu.
Code Generation Instruction Selection Higher level instruction -> Low level instruction Register Allocation Which register to assign to hold which items?
Procedures Procedures are very important for writing reusable and maintainable code in assembly and high-level languages. How are they implemented? Application.
Lecture 3 Translation.
Appendix 1 - Packages Jim Fawcett copyright (c)
Software 12/1/2008.
Ch 2. Getting Started with the Kernel
Lecture 1b- Introduction
Using Ada-C/C++ Changer as a Converter Automatically convert to C/C++ to reuse or redeploy your Ada code Eliminate the need for a costly and.
Why study programming languages?
Introduction to programming
CE-105 Spring 2007 Engr. Faisal ur Rehman
runtime verification Brief Overview Grigore Rosu
Using ASIS to Generate C++ Bindings
Using Visual Studio and VS Code for Embedded C/C++ Development
Technology Adoption Services
Human Complexity of Software
Embedded Development Application Note: Endian-Independence
GNAT Pro Update Arnaud Charlet GNAT Pro Update Arnaud Charlet
QGen and TQL-1 Qualification
AdaCore Technologies for Cyber Security
Market perspective - what’s new and where are we heading?
General Programming on Graphical Processing Units
Technology Adoption Services
Yes, we do those languages too.
QGen and TQL Qualification
GNAT Pro Update Arnaud Charlet GNAT Pro Update Arnaud Charlet
Assembly Language for Intel-Based Computers
General Programming on Graphical Processing Units
Exercise 11.1 Write a code fragment that performs the same function as the statement below without using the crash method Toolbox.crash(amount < 0,
Code Architecture View
PZ09A - Activation records
Polymorphism Professor Hugh C. Lauer CS-2303, System Programming Concepts (Slides include materials from The C Programming Language, 2nd edition, by Kernighan.
Activation records Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section
Reverse engineering through full system simulations
강의 내용 및 방법 접근방법 리포트 시험 Lambda Calculus, Proof of Correctness
CodePainter Revolution Trainer Course
System to Software Integrity
Yes, we do those languages too.
Update & Roadmap. Update & Roadmap Established Ada market “Helping to preserve investments done with Ada” “Provide new cost-effective ways to develop.
Future Airborne Capability Environment (FACE™) Support
GNATtest Demo Patrick Rogers 9 May GNATtest Demo Patrick Rogers 9 May 2019.
Rust for Flight Software
Overview of System Development for Windows CE.NET
Dynamic Binary Translators and Instrumenters
Activation records Programming Language Design and Implementation (4th Edition) by T. Pratt and M. Zelkowitz Prentice Hall, 2001 Section
Run-time environments
Presentation transcript:

AdaCore C/C++ Offering Eric Perlade 2018-10-04

Why AdaCore and C/C++? C and Ada coexist in the same market space Most applications today are mixed language application … a consistent environment for all is optimal Teams may want to have consistent providers across applications, no matter what language … so we need also to support pure C/C++ applications We’re using a technology (GCC) fundamentally meant to be multilanguage

Key points of our toolchain GCC-based technology Support a wide range of language versions, including C11 and C++17 Provided with the same level of support (GNAT Tracker) as GNAT Pro Ada Available for mixed language or pure C/C++ development Verification tools available

Embedded (PowerPC, ARM, x86) Platform Support Native (x86) Embedded (PowerPC, ARM, x86) Linux Windows Bare Metal VxWorks 6 VxWorks 7 Lynx178 C C++

GNAT Pro Assurance for C/C++ Enterprise Assurance (on 18) 18.5 18.4 18.3 18.1 18.0 19.0w 2017 2018 2019 18.2 18.0w

GNAT Pro Assurance A solution for long term maintenance Critical Bug Fixes Silent code generation error False negative Issues hindering production of certification evidence Active Known Problem Analysis Analysis of problems identified in other versions Analysis of problems identified in the community Additional categorization and justification material Sustain impact analysis justifications

GNAT Programming Studio Mixed language environment for C, C++ and Ada Smart edition Source code navigation (integration with clang) Integration with build & debug

GNATcoverage Ada & C Support HOST Pure Functional Test Windows, Linux Bare Metal ARM / PowerPC VxWorks 6 PowerPC Source to Object Traceability Study GNATemulator / Valgrind / dynamiRIO Coverage Information Sources Executable Pure Functional Test Coverage Data (no instrumentation) Statement Decision MC/DC Ada 83 / 95 / 05 / 2012 C 99 Lauterbarch / iSystems TARGET

GNATstack Identification of the worst case of stack usage for each entry point Available for Ada (up to Ada 2012) and C Information provided statically Manual information needs to be provided for System calls Recursive calls Dynamic frames DO-178 qualification material is available

Endianness Specification Allows to specify the endianness of a data structure in memory regardless of processor host Endianness is converted back & forth on read and write operations Ideal for porting code from e.g. PowerPC to x86 / ARM when communication layers are endianness-specific struct s { int a, b; } __attribute__((scalar_storage_order("big-endian"))) variable;

Ada/C++ Exception Propagation Calls Calls C++ Ada exception when others => … raise Y; throw X; catch (…) { }

Mixed Language Build GPRbuild can drive mixed language builds as long as the project file is declared as supporting those languages GCC is picked up if available Other compilers can be configured through GPRconfig project Mixed is for Languages use (“Ada”, “C”); end Mixed;

Ada & C bindings Importing C code from Ada Importing Ada code from C procedure C_Proc; pragma Import (C, C_Proc, "c_proc"); void c_proc (void) { // some code } procedure Ada_Proc; pragma Export (C, Ada_Proc, "ada_proc"); procedure Ada_Proc is begin -- some code end Ada_Proc; extern void ada_proc (void);

Some more Ada & C bindings Easy to get wrong… Type R1 is record V : int; end record with Convention => C; procedure F1 (P : R1); pragma Import (C, F1, "f1"); struct R1{ int V; }; void f1 (R1 p); Type R1 is record V : int; end record with Convention => C_Pass_By_Copy; procedure F1 (P : R1); pragma Import (C, F1, "f1"); struct R1{ int V; }; void f1 (R1 p);

Using the Binding Generator From C to Ada From Ada to C gcc –fdump-ada-spec <header files> gcc –gnatceg <specification files>

Ada/C++ Inheritance Method Override Method procedure P (V : T’Class) is begin V.Method; end P; T2 Ada Derived Type Override Method T C++ Base Type Method void P (T & V) { V.Method(); }

Simulink to C Code Generation QGen QGen Code Generation (SPARK Ada or MISRA C) Target Debugger Simulink®, StateFlow® Safe subset of embedded blocks (~120) Portable across versions DO178 credit sought on source level traceability, reviews, tests, coverage (Tables 5, 6, 7)

Ada/SPARK to C Code Generation GNAT Common Code Generator (CCG) Allows to develop formally proven code in SPARK and integrate in a C code generation toolchain C code to be considered as compilation artifacts Similar to assembly or internal compiler trees Not meant to be maintainable Removes constraints on the target architecture supported Support a subset of SPARK / Ada close to bare metal no-runtime profile