Linux Standard Base (LSB)

Noyau de base normalisé Linux (LSB)

General Information

Status
Published
Current Stage
Ref Project

RELATIONS

Buy Standard

Draft
ISO/IEC PRF 23360-2-2 - Linux Standard Base (LSB)
English language
231 pages
sale 15% off
Preview
sale 15% off
Preview

Standards Content (sample)

INTERNATIONAL ISO/IEC
STANDARD 23360-2-2
First edition
2021-08
Linux Standard Base (LSB) —
Part 2-2:
Core specification for X86-32
architecture
Reference number
ISO/IEC 23360-2-2:2021(E)
ISO/IEC 2021
---------------------- Page: 1 ----------------------
ISO/IEC 23360-2-2:2021(E)
COPYRIGHT PROTECTED DOCUMENT
© ISO/IEC 2021

All rights reserved. Unless otherwise specified, or required in the context of its implementation, no part of this publication may

be reproduced or utilized otherwise in any form or by any means, electronic or mechanical, including photocopying, or posting

on the internet or an intranet, without prior written permission. Permission can be requested from either ISO at the address

below or ISO’s member body in the country of the requester.
ISO copyright office
CP 401 • Ch. de Blandonnet 8
CH-1214 Vernier, Geneva
Phone: +41 22 749 01 11
Email: copyright@iso.org
Website: www.iso.org
Published in Switzerland
ii © ISO/IEC 2021 – All rights reserved
---------------------- Page: 2 ----------------------
ISO/IEC 23360-2-2:2021(E)
Foreword

ISO (the International Organization for Standardization) and IEC (the International Electrotechnical

Commission) form the specialized system for worldwide standardization. National bodies that are

members of ISO or IEC participate in the development of International Standards through technical

committees established by the respective organization to deal with particular fields of technical activity.

ISO and IEC technical committees collaborate in fields of mutual interest. Other international

organizations, governmental and non-governmental, in liaison with ISO and IEC, also take part in the

work.

The procedures used to develop this document and those intended for its further maintenance are

described in the ISO/IEC Directives, Part 1. In particular, the different approval criteria needed for the

different types of document should be noted (see www.iso.org/directives or
www.iec.ch/members_experts/refdocs).

Attention is drawn to the possibility that some of the elements of this document may be the subject of

patent rights. ISO and IEC shall not be held responsible for identifying any or all such patent rights. Details

of any patent rights identified during the development of the document will be in the Introduction and/or

on the ISO list of patent declarations received (see www.iso.org/patents) or the IEC list of patent

declarations received (see patents.iec.ch).

Any trade name used in this document is information given for the convenience of users and does not

constitute an endorsement.

For an explanation of the voluntary nature of standards, the meaning of ISO specific terms and

expressions related to conformity assessment, as well as information about ISO's adherence to the World

Trade Organization (WTO) principles in the Technical Barriers to Trade (TBT),

see www.iso.org/iso/foreword.html. In the IEC, see www.iec.ch/understanding-standards.

This document was prepared by the Linux Foundation [as Linux Standard Base (LSB): Core specification

for X86-32 architecture] and drafted in accordance with its editorial rules. It was assigned to Joint

Technical Committee ISO/IEC JTC 1, Information technology, Subcommittee SC 22, Programming

languages, their environments and system software interfaces, and adopted by National Bodies.

This first edition of ISO/IEC 23360-2-2 cancels and replaces ISO/IEC 23360-2:2006, which has been

technically revised.

A list of all parts in the ISO/IEC 23660 series can be found on the ISO and IEC websites.

Any feedback or questions on this document should be directed to the user’s national standards body. A

complete listing of these bodies can be found at www.iso.org/members.html and www.iec.ch/national-

committees.
© ISO/IEC 2021 – All rights reserved iii
---------------------- Page: 3 ----------------------
ISO/IEC 23360-2-2:2021(E)
Contents

Foreword ...................................................................................................................................................... iii

Introduction ................................................................................................................................................ vi

I Introductory Elements ............................................................................................................................. 1

1 Scope........................................................................................................................................................................ 2

2 References ............................................................................................................................................................. 3

2.1 Normative References ........................................................................................................................ 3

2.2 Informative References/Bibliography......................................................................................... 5

3 Requirements ...................................................................................................................................................... 8

3.1 Relevant Libraries ................................................................................................................................ 8

3.2 LSB Implementation Conformance............................................................................................... 8

3.3 LSB Application Conformance ........................................................................................................ 9

4 Terms and Definitions .................................................................................................................................... 11

5 Documentation Conventions ...................................................................................................................... 13

II Executable and Linking Format (ELF) ............................................................................................ 14

6 Introduction ....................................................................................................................................................... 15

7 Low Level System Information .................................................................................................................. 16

7.1 Machine Interface ............................................................................................................................... 16

7.2 Function Calling Sequence ............................................................................................................. 17

7.3 Operating System Interface ............................................................................................................ 18

7.4 Process Initialization ........................................................................................................................ 19

7.5 Coding Examples................................................................................................................................. 20

7.6 C Stack Frame ....................................................................................................................................... 21

7.7 Debug Information ............................................................................................................................. 21

8 Object Format .................................................................................................................................................... 22

8.1 Introduction .......................................................................................................................................... 22

8.2 ELF Header ............................................................................................................................................ 22

8.3 Special Sections ................................................................................................................................... 22

8.4 Symbol Table ........................................................................................................................................ 23

8.5 Relocation .............................................................................................................................................. 23

9 Program Loading and Dynamic Linking ................................................................................................ 24

9.1 Introduction .......................................................................................................................................... 24

9.2 Program Header .................................................................................................................................. 24

9.3 Program Loading ................................................................................................................................ 24

9.4 Dynamic Linking ................................................................................................................................. 24

III Base Libraries ........................................................................................................................................ 26

10 Libraries ............................................................................................................................................................ 27

10.1 Program Interpreter/Dynamic Linker ................................................................................... 27

10.2 Interfaces for libc ............................................................................................................................. 27

10.3 Data Definitions for libc ................................................................................................................ 47

10.4 Interface Definitions for libc ....................................................................................................... 66

10.5 Interfaces for libm ........................................................................................................................... 68

10.6 Data Definitions for libm .............................................................................................................. 73

10.7 Interface Definitions for libm ..................................................................................................... 74

10.8 Interfaces for libpthread ............................................................................................................... 75

10.9 Data Definitions for libpthread .................................................................................................. 80

10.10 Interfaces for libgcc_s .................................................................................................................. 82

10.11 Data Definitions for libgcc_s ..................................................................................................... 82

10.12 Interface Definitions for libgcc_s ............................................................................................ 83

10.13 Interfaces for libdl ........................................................................................................................ 84

10.14 Data Definitions for libdl............................................................................................................ 84

10.15 Interfaces for libcrypt ................................................................................................................. 85

10.16 Data Definitions for libcrypt..................................................................................................... 85

IV Utility Libraries ..................................................................................................................................... 87

11 Libraries ............................................................................................................................................................ 88

iv © 2021 ISO/IEC – All rights reserved
---------------------- Page: 4 ----------------------
ISO/IEC 23360-2-2:2021(E)

11.1 Interfaces for libz ............................................................................................................................. 88

11.2 Data Definitions for libz ................................................................................................................ 88

11.3 Interfaces for libncurses ............................................................................................................... 89

11.4 Data Definitions for libncurses .................................................................................................. 89

11.5 Interfaces for libncursesw ........................................................................................................... 89

11.6 Data Definitions for libncursesw .............................................................................................. 90

11.7 Interfaces for libutil ........................................................................................................................ 90

V Base Libraries .......................................................................................................................................... 92

12 Libraries ............................................................................................................................................................ 93

12.1 Interfaces for libstdcxx .................................................................................................................. 93

12.2 Interface Definitions for libstdcxx ......................................................................................... 203

VI Package Format and Installation ................................................................................................. 204

13 Software Installation................................................................................................................................. 205

13.1 Package Dependencies ............................................................................................................... 205

13.2 Package Architecture Considerations .................................................................................. 205

Annex A Alphabetical Listing of Interfaces by Library .............................................................. 206

A.1 libc ......................................................................................................................................................... 206

A.2 libcrypt ................................................................................................................................................. 221

A.3 libdl ........................................................................................................................................................ 221

A.4 libgcc_s ................................................................................................................................................. 222

A.5 libm ........................................................................................................................................................ 222

A.6 libpthread ........................................................................................................................................... 227

A.7 librt ........................................................................................................................................................ 230

A.8 libutil ..................................................................................................................................................... 231

© 2021 ISO/IEC – All rights reserved v
---------------------- Page: 5 ----------------------
ISO/IEC 23360-2-2:2021(E)
Introduction
The LSB defines a binary interface for application programs that are compiled
and packaged for LSB-conforming implementations on many different hardware
architectures. A binary specification must include information specific to the

computer processor architecture for which it is intended. To avoid the complexity

of conditional descriptions, the specification has instead been divided into
generic parts which are augmented by one of several architecture-specific parts,
depending on the target processor architecture; the generic part will indicate
when reference must be made to the architecture part, and vice versa.
This document should be used in conjunction with the documents it references.
This document enumerates the system components it includes, but descriptions
of those components may be included entirely or partly in this document, partly
in other documents, or entirely in other reference documents. For example, the
section that describes system service routines includes a list of the system
routines supported in this interface, formal declarations of the data structures
they use that are visible to applications, and a pointer to the underlying
referenced specification for information about the syntax and semantics of each

call. Only those routines not described in standards referenced by this document,

or extensions to those standards, are described in the detail. Information
referenced in this way is as much a part of this document as is the information
explicitly included here.
The specification carries a version number of either the form x.y or x.y.z. This
version number carries the following meaning:
1. The first number (x) is the major version number. Versions sharing the same
major version number shall be compatible in a backwards direction; that is,
a newer version shall be compatible with an older version. Any deletion of
a library results in a new major version number. Interfaces marked as
deprecated may be removed from the specification at a major version
change.
2. The second number (y) is the minor version number. Libraries and
individual interfaces may be added, but not removed. Interfaces may be
marked as deprecated at a minor version change. Other minor changes may
be permitted at the discretion of the LSB workgroup.

3. The third number (z), if present, is the editorial level. Only editorial changes

should be included in such versions.

Since this specification is a descriptive Application Binary Interface, and not a

source level API specification, it is not possible to make a guarantee of 100%
backward compatibility between major releases. However, it is the intent that

those parts of the binary interface that are visible in the source level API will

remain backward compatible from version to version, except where a feature
marked as "Deprecated" in one release may be removed from a future release.
Implementors are strongly encouraged to make use of symbol versioning to
permit simultaneous support of applications conforming to different releases of
this specification.
LSB is a trademark of the Linux Foundation. Developers of applications or
implementations interested in using the trademark should see the Linux
Foundation Certification Policy for details.
vi © 2021 ISO/IEC – All rights reserved
---------------------- Page: 6 ----------------------
ISO/IEC 23360-2-2:2021(E)
I Introductory Elements
© 2021 ISO/IEC – All rights reserved 1
---------------------- Page: 7 ----------------------
ISO/IEC 23360-2-2:2021(E)
1 Scope
Standard Base (LSB) defines a system interface for compiled applications and a

minimal environment for support of installation scripts. Its purpose is to enable

a uniform industry standard environment for high-volume applications
conforming to the LSB.
These specifications are composed of two basic parts: a common part describing

those parts of the interface that remain constant across all implementations of the

LSB, and an architecture-specific part describing the parts of the interface that

vary by processor architecture. Together, the common part and the relevant
architecture-specific part for a single hardware architecture provide a complete
interface specification for compiled application programs on systems that share
a common hardware architecture.
The LSB contains both a set of Application Program Interfaces (APIs) and
Application Binary Interfaces (ABIs). APIs may appear in the source code of
portable applications, while the compiled binary of that application may use the
larger set of ABIs. A conforming implementation provides all of the ABIs listed
here. The compilation system may replace (e.g. by macro definition) certain APIs

with calls to one or more of the underlying binary interfaces, and may insert calls

to binary interfaces as needed.

The LSB is primarily a binary interface definition. Not all of the source level APIs

available to applications may be contained in this specification.

This is the X86 architecture specific part of the Core module of the Linux Standard

Base (LSB). This part supplements the common part of the LSB Core module with
those interfaces that differ between architectures.
This part should be used in conjunction with LSB Core - Generic, the common
part. Whenever a section of the common part is supplemented by architecture-
specific information, the common part includes a reference to the architecture-
specific part. This part may also contain additional information that is not
referenced in the common part.
Interfaces described in this part of the LSB Core Specification are mandatory
except where explicitly listed otherwise. Interfaces described in the LSB Core
module are supplemented by other LSB modules. All other modules depend on
the presence of LSB Core.
2 © 2021 ISO/IEC – All rights reserved
---------------------- Page: 8 ----------------------
ISO/IEC 23360-2-2:2021(E)
2 References
2.1 Normative References

The following specifications are incorporated by reference into this specification.

For dated references, only the edition cited applies. For undated references, the

latest edition of the referenced specification (including any amendments) applies.

Note: Where copies of a referenced specification are available on the World Wide
Web, a Uniform Resource Locator (URL) is given, for informative purposes only.

Such URL might at any given time resolve to a more recent copy of the specification,

or be out of date (not resolve). Reference copies of specifications at the revision level

indicated may be found at the Linux Foundation's Reference Specifications
(http://refspecs.linuxbase.org) site.
Table 2-1 Normative References
Name Title URL
LSB Core - Generic Linux Standard Base - http://www.linuxbase.
Core Specification - org/spec/
Generic
Filesystem Hierarchy Filesystem Hierarchy http://refspecs.linuxba
Standard Standard (FHS) 3.0 se.org/fhs
Intel® Architecture The IA-32 Intel® http://developer.intel.c
Software Developer's Architecture Software om/design/pentium4/
Manual Volume 1 Developer's Manual manuals/245470.htm
Volume 1: Basic
Architecture
Intel® Architecture The IA-32 Intel® http://developer.intel.c
Software Developer's Architecture Software om/design/pentium4/
Manual Volume 2 Developer's Manual manuals/245471.htm
Volume 2: Instruction
Set Reference
Intel® Architecture The IA-32 Intel® http://developer.intel.c
Software Developer's Architecture Software om/design/pentium4/
Manual Volume 3 Developer's Manual manuals/245472.htm
Volume 3: System
Programming Guide
ISO C (1999) ISO/IEC 9899:1999 -
Programming
Languages -- C
ISO/IEC 14882: 2003 ISO/IEC 14882: 2003
C++ Language Programming
languages --C++
Itanium™ C++ ABI Itanium™ C++ ABI http://refspecs.linuxfo
(Revision 1.86) undation.org/cxxabi-
1.86.html
Large File Support Large File Support http://www.UNIX-
systems.org/version2/
© 2021 ISO/IEC – All rights reserved 3
---------------------- Page: 9 ----------------------
ISO/IEC 23360-2-2:2021(E)
Name Title URL
whatsnew/lfs20mar.ht
Libncursesw API Libncursesw API http://invisible-
island.net/ncurses/ma
n/ncurses.3x.html
Libncursesw Libncursesw http://refspecs.linux-
Placeholder Specification foundation.org/libncur
Placeholder sesw/libncurses.html
POSIX 1003.1-2001 http://www.unix.org/
ISO/IEC 9945-1:2003
(ISO/IEC 9945-2003) version3/
Information technology
-- Portable Operating
System Interface
(POSIX) -- Part 1: Base
Definitions
ISO/IEC 9945-2:2003
Information technology
-- Portable Operating
System Interface
(POSIX) -- Part 2:
System Interfaces
ISO/IEC 9945-3:2003
Information technology
-- Portable Operating
System Interface
(POSIX) -- Part 3: Shell
and Utilities
ISO/IEC 9945-4:2003
Information technology
-- Portable Operating
System Interface
(POSIX) -- Part 4:
Rationale
Including Technical
Cor. 1: 2004
POSIX 1003.1-2008 Portable Operating http://www.unix.org/
(ISO/IEC 9945-2009) System Interface version4/
(POSIX®) 2008 Edition
/ The Open Group
Technical Standard
Base Specifications,
Issue 7
SUSv2 CAE Specification, http://www.opengrou
January 1997, System p.org/publications/cat
Interfaces and Headers alog/un.htm
(XSH),Issue 5 (ISBN: 1-
85912-181-0, C606)
4 © 2021 ISO/IEC – All rights reserved
---------------------- Page: 10 ----------------------
ISO/IEC 23360-2-2:2021(E)
Name Title URL
SVID Issue 3 American Telephone
and Telegraph
Company, System V
Interface Definition,
Issue 3; Morristown, NJ,
UNIX Press, 1989.
(ISBN 0201566524)
SVID Issue 4 System V Interface http://refspecs.linuxfo
Definition, Fourth undation.org/svid4/
Edition
System V ABI System V Application http://www.sco.com/
Binary Interface, developers/devspecs/g
Edition 4.1 abi41.pdf
System V ABI Update System V Application http://www.sco.com/
Binary Interface - developers/gabi/2003-
DRAFT - 17 December 12-17/contents.html
2003
System V ABI, IA32 System V Application http://www.sco.com/
Supplement Binary Interface - developers/devspecs/a
Intel386 Architecture bi386-4.pdf
Processor Supplement,
Fourth Edition
X/Open Curses, Issue 7 X/Open Curses, Issue 7 https://www2.opengro
(ISBN: 1-931624-83-6, up.org/ogsys/catalog/
The Open Group, C094
November 2009)
2.2 Informative References/Bibliography
The documents listed below provide essential background information to

implementors of this specification. These references are included for information

only, and do not represent normative parts of this specification.
Table 2-2 Other References
Name Title URL
DWARF Debugging DWARF Debugging http://www.dwarfstd.
Information Format, Information Format, org/doc/DWARF4.pdf
Version 4 Version 4 (June 10,
2010)
IEC 60559/IEEE 754 IEC 60559:1989 Binary http://www.ieee.org/
Floating Point floating-point
arithmetic for
microprocessor systems
ISO/IEC TR14652 ISO/IEC Technical
Report 14652:2002
Specification method
for cultural conventions
© 2021 ISO/IEC – All rights reserved 5
---------------------- Page: 11 ----------------------
ISO/IEC 23360-2-2:2021(E)
Name Title URL
ITU-T V.42 International http://www.itu.int/rec
Telecommunication /recommendation.asp?t
Union ype=folders&lang=e&p
Recommendation V.42 arent=T-REC-V.42
(2002): Error-correcting
procedures for DCEs
using asynchronous-to-
synchronous
conversionITUV
Li18nux Globalization LI18NUX 2000 http://www.openi18n.
Specification Globalization org/docs/html/LI18N
Specification, Version UX-2000-amd4.htm
1.0 with Amendment 4
Linux Allocated Device LINUX ALLOCATED http://www.lanana.or
Registry DEVICES g/docs/device-
list/devices-2.6+.txt
Linux Assigned Names Linux Assigned Names http://www.lanana.or
And Numbers And Numbers g/
Authority Authority
Mozilla's NSS SSL Mozilla's NSS SSL http://www.mozilla.or
Reference Reference g/projects/security/pk
i/nss/ref/ssl/
NSPR Reference Mozilla's NSPR http://refspecs.linuxfo
Reference undation.org/NSPR_A
PI_Reference/NSPR_A
PI.html
PAM Open Software http://www.opengrou
Foundation, Request p.org/tech/rfc/mirror-
For Comments: 86.0 , rfc/rfc86.0.txt
October 1995, V. Samar
& R.Schemers (SunSoft)
RFC 1321: The MD5 IETF RFC 1321: The http://www.ietf.org/rf
Message-Digest MD5 Message-Digest c/rfc1321.txt
Algorithm Algorithm
RFC 1833: Binding IETF RFC 1833: Binding http://www.ietf.org/rf
Protocols for ONC RPC Protocols for ONC RPC c/rfc1833.txt
Version 2 Version 2
RFC 1950: ZLIB IETF RFC 1950: ZLIB http://www.ietf.org/rf
Compressed Data Compressed Data c/rfc1950.txt
Format Specication Format Specification
RFC 1951: DEFLATE IETF RFC 1951: http://www.ietf.org/rf
Compressed Data DEFLATE Compressed c/rfc1951.txt
Format Specification Data Format
Specification version 1.3
6 © 2021 ISO/IEC – All rights reserved
---------------------- Page: 12 ----------------------
ISO/IEC 23360-2-2:2021(E)
Name Title URL
RFC 1952: GZIP File IETF RFC 1952: GZIP http://www.ietf.org/rf
Format Specification file format specification c/rfc1952.txt
version 4.3
RFC 2440: OpenPGP IETF RFC 2440: http://www.ietf.org/rf
Message Format OpenPGP Message c/rfc2440.txt
Format
RFC 2821:Simple Mail IETF RFC 2821: Simple http://www.ietf.org/rf
Transfer Protocol Mail Transfer Protocol c/rfc2821.txt
RFC 2822:Internet IETF RFC 2822: Internet http://www.ietf.org/rf
Message Format Message Format c/rfc2822.txt
RFC 5531/4506 RPC & IETF RFC 5531 & 4506 http://www.ietf.org/
XDR
RFC 791:Internet IETF RFC 791: Internet http://www.ietf.org/rf
Protocol Protocol Specification c/rfc791.txt
RPM Package Format RPM Package Format http://www.rpm.org/
V3.0 max-rpm/s1-rpm-file-
format-rpm-file-
format.html
zlib Manual zlib 1.2 Manual http://www.gzip.org/
zlib/
© 2021 ISO/IEC – All rights reserved 7
---------------------- Page: 13 ----------------------
ISO/IEC 23360-2-2:2021(E)
3 Requirements
3.1 Relevant Libraries
...

Questions, Comments and Discussion

Ask us and Technical Secretary will try to provide an answer. You can facilitate discussion about the standard in here.