system v application binary interface - intel® software .4/26/2012  system v application...

Download System V Application Binary Interface - Intel® Software .4/26/2012  System V Application Binary

Post on 19-Jul-2018

216 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • System V Application Binary InterfaceK1OM Architecture Processor Supplement

    Version 1.0

    Edited byH.J. Lu1, Milind Girkar2,

    Michael Matz3, Jan Hubicka4, Andreas Jaeger5, Mark Mitchell6

    April 26, 2012

    1hongjiu.lu@intel.com2milind.girkar@intel.com3matz@suse.de4jh@suse.cz5aj@suse.de6mark@codesourcery.com

    K1OM ABI 1.0 April 26, 2012 11:23

  • Contents

    1 Introduction 9

    2 Software Installation 10

    3 Low Level System Information 113.1 Machine Interface . . . . . . . . . . . . . . . . . . . . . . . . . . 11

    3.1.1 Processor Architecture . . . . . . . . . . . . . . . . . . . 113.1.2 Data Representation . . . . . . . . . . . . . . . . . . . . 11

    3.2 Function Calling Sequence . . . . . . . . . . . . . . . . . . . . . 143.2.1 Registers and the Stack Frame . . . . . . . . . . . . . . . 153.2.2 The Stack Frame . . . . . . . . . . . . . . . . . . . . . . 153.2.3 Parameter Passing . . . . . . . . . . . . . . . . . . . . . 16

    3.3 Operating System Interface . . . . . . . . . . . . . . . . . . . . . 243.3.1 Exception Interface . . . . . . . . . . . . . . . . . . . . . 243.3.2 Virtual Address Space . . . . . . . . . . . . . . . . . . . 243.3.3 Page Size . . . . . . . . . . . . . . . . . . . . . . . . . . 243.3.4 Virtual Address Assignments . . . . . . . . . . . . . . . . 24

    3.4 Process Initialization . . . . . . . . . . . . . . . . . . . . . . . . 273.4.1 Initial Stack and Register State . . . . . . . . . . . . . . . 273.4.2 Thread State . . . . . . . . . . . . . . . . . . . . . . . . 303.4.3 Auxiliary Vector . . . . . . . . . . . . . . . . . . . . . . 30

    3.5 Coding Examples . . . . . . . . . . . . . . . . . . . . . . . . . . 323.5.1 Architectural Constraints . . . . . . . . . . . . . . . . . . 333.5.2 Conventions . . . . . . . . . . . . . . . . . . . . . . . . 353.5.3 Position-Independent Function Prologue . . . . . . . . . . 363.5.4 Data Objects . . . . . . . . . . . . . . . . . . . . . . . . 373.5.5 Function Calls . . . . . . . . . . . . . . . . . . . . . . . 453.5.6 Branching . . . . . . . . . . . . . . . . . . . . . . . . . . 47

    1

    K1OM ABI 1.0 April 26, 2012 11:23

  • 3.5.7 Variable Argument Lists . . . . . . . . . . . . . . . . . . 503.6 DWARF Definition . . . . . . . . . . . . . . . . . . . . . . . . . 55

    3.6.1 DWARF Release Number . . . . . . . . . . . . . . . . . 563.6.2 DWARF Register Number Mapping . . . . . . . . . . . . 56

    3.7 Stack Unwind Algorithm . . . . . . . . . . . . . . . . . . . . . . 56

    4 Object Files 604.1 ELF Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

    4.1.1 Machine Information . . . . . . . . . . . . . . . . . . . . 604.1.2 Number of Program Headers . . . . . . . . . . . . . . . . 60

    4.2 Sections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 614.2.1 Section Flags . . . . . . . . . . . . . . . . . . . . . . . . 614.2.2 Section types . . . . . . . . . . . . . . . . . . . . . . . . 624.2.3 Special Sections . . . . . . . . . . . . . . . . . . . . . . 624.2.4 EH_FRAME sections . . . . . . . . . . . . . . . . . . . 63

    4.3 Symbol Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . 684.4 Relocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

    4.4.1 Relocation Types . . . . . . . . . . . . . . . . . . . . . . 684.4.2 Large Models . . . . . . . . . . . . . . . . . . . . . . . . 74

    5 Program Loading and Dynamic Linking 755.1 Program Loading . . . . . . . . . . . . . . . . . . . . . . . . . . 75

    5.1.1 Program header . . . . . . . . . . . . . . . . . . . . . . . 765.2 Dynamic Linking . . . . . . . . . . . . . . . . . . . . . . . . . . 76

    5.2.1 Program Interpreter . . . . . . . . . . . . . . . . . . . . . 835.2.2 Initialization and Termination Functions . . . . . . . . . . 83

    6 Libraries 846.1 C Library . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

    6.1.1 Global Data Symbols . . . . . . . . . . . . . . . . . . . . 846.1.2 Floating Point Environment Functions . . . . . . . . . . . 84

    6.2 Unwind Library Interface . . . . . . . . . . . . . . . . . . . . . . 856.2.1 Exception Handler Framework . . . . . . . . . . . . . . . 856.2.2 Data Structures . . . . . . . . . . . . . . . . . . . . . . . 886.2.3 Throwing an Exception . . . . . . . . . . . . . . . . . . . 906.2.4 Exception Object Management . . . . . . . . . . . . . . . 936.2.5 Context Management . . . . . . . . . . . . . . . . . . . . 936.2.6 Personality Routine . . . . . . . . . . . . . . . . . . . . . 96

    2

    K1OM ABI 1.0 April 26, 2012 11:23

  • 6.3 Unwinding Through Assembler Code . . . . . . . . . . . . . . . 100

    7 Development Environment 103

    8 Execution Environment 104

    9 Conventions 1059.1 C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1069.2 Fortran . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

    9.2.1 Names . . . . . . . . . . . . . . . . . . . . . . . . . . . 1079.2.2 Representation of Fortran Types . . . . . . . . . . . . . . 1089.2.3 Argument Passing . . . . . . . . . . . . . . . . . . . . . 1099.2.4 Functions . . . . . . . . . . . . . . . . . . . . . . . . . . 1109.2.5 COMMON blocks . . . . . . . . . . . . . . . . . . . . . 1119.2.6 Intrinsics . . . . . . . . . . . . . . . . . . . . . . . . . . 112

    A Linux Conventions 123A.1 Execution of 32-bit Programs . . . . . . . . . . . . . . . . . . . . 123A.2 K1OM Linux Kernel Conventions . . . . . . . . . . . . . . . . . 123

    A.2.1 Calling Conventions . . . . . . . . . . . . . . . . . . . . 123A.2.2 Stack Layout . . . . . . . . . . . . . . . . . . . . . . . . 124A.2.3 Required Processor Features . . . . . . . . . . . . . . . . 124A.2.4 Miscellaneous Remarks . . . . . . . . . . . . . . . . . . 124

    3

    K1OM ABI 1.0 April 26, 2012 11:23

  • List of Tables

    3.1 Hardware Exceptions and Signals . . . . . . . . . . . . . . . . . 253.2 Floating-Point Exceptions . . . . . . . . . . . . . . . . . . . . . 253.3 x87 Floating-Point Control Word . . . . . . . . . . . . . . . . . . 273.4 MXCSR Status Bits . . . . . . . . . . . . . . . . . . . . . . . . . 283.5 rFLAGS Bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

    4.1 K1OM Identification . . . . . . . . . . . . . . . . . . . . . . . . 604.2 K1OM Specific Section Header Flag, sh_flags . . . . . . . . . 614.3 Section Header Types . . . . . . . . . . . . . . . . . . . . . . . . 624.4 Special sections . . . . . . . . . . . . . . . . . . . . . . . . . . . 624.5 Additional Special Sections for the Large Code Model . . . . . . 634.6 Common Information Entry (CIE) . . . . . . . . . . . . . . . . . 654.7 CIE Augmentation Section Content . . . . . . . . . . . . . . . . 664.8 Frame Descriptor Entry (FDE) . . . . . . . . . . . . . . . . . . . 674.9 FDE Augmentation Section Content . . . . . . . . . . . . . . . . 684.10 Relocation Types . . . . . . . . . . . . . . . . . . . . . . . . . . 714.11 Large Model Relocation Types . . . . . . . . . . . . . . . . . . . 74

    5.1 Program Header Types . . . . . . . . . . . . . . . . . . . . . . . 76

    7.1 Predefined Pre-Processor Symbols . . . . . . . . . . . . . . . . . 103

    9.1 Mil intrinsics . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1139.2 F77 intrinsics . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1159.3 F90 intrinsics . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1169.4 Math intrinsics . . . . . . . . . . . . . . . . . . . . . . . . . . . 1169.5 Unix intrinsics . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

    A.1 Required Processor Features . . . . . . . . . . . . . . . . . . . . 125

    4

    K1OM ABI 1.0 April 26, 2012 11:23

  • List of Figures

    3.1 Scalar Types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 123.2 Bit-Field Ranges . . . . . . . . . . . . . . . . . . . . . . . . . . 143.3 Stack Frame with Base Pointer . . . . . . . . . . . . . . . . . . . 163.4 Register Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . 213.5 Parameter Passing Example . . . . . . . . . . . . . . . . . . . . . 233.6 Register Allocation Example . . . . . . . . . . . . . . . . . . . . 233.7 Virtual Address Configuration . . . . . . . . . . . . . . . . . . . 263.8 Conventional Segment Arrangements . . . . . . . . . . . . . . . 273.9 Initial Process Stack . . . . . . . . . . . . . . . . . . . . . . . . . 293.10 auxv_t Type Definition . . . . . . . . . . . . . . . . . . . . . . 303.11 Auxiliary Vector Types . . . . . . . . . . . . . . . . . . . . . . . 313.12 Position-Independent Function Prolog Code . . . . . . . . . . . . 363.13 Absolute Load and Store (Small Model) . . . . . . . . . . . . . . 383.14 Position-Independent Load and Store (Small PIC Model) . . . . . 393.15 Absolute Load and Store (Medium Model) . . . . . . . . . . . . . 403.16 Position-Independent Load and Store (Medium PIC Model) . . . . 413.17 Position-Independent Load and Store (Medium PIC Model), con-

    tinued . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423.18 Absolute Global Data Load and Store . . . . . . . . . . . . . . . 433.19 Faster Absolute Global Data Load and Store . . . . . . . . . . . . 433.20 Position-Independent Global Data Load and Store . . . . . . . . . 443.21 Faster Position-Independent Global Data Load and Store . . . . . 443.22 Position-Independent Direct Function Call (Small and Medium

    Model) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453.23 Position-Independent Indirect Function Call . . . . . . . . . . . . 453.24 Absolute Direct and Indirect Function Call . . . . . . . . . . . . . 463.25 Position-Independent Direct and Indirect Function Call . . . . . . 463.26 Absolute Branching Code . . . . . . . . . . . . . . . . . . . . . . 48

    5

    K1OM ABI 1.0 April 26, 2012 11:23

View more