1 2 Linux Standard Base Core Specification for IA64 3.1 3 4 Copyright © 2005 Free Standards Group 5 6 Permission is granted to copy, distribute and/or modify this 7 document under the terms of the GNU Free Documentation 8 License, Version 1.1; with no Invariant Sections, with no 9 Front-Cover Texts, and with no Back-Cover Texts. A copy of the 10 license is included in the section entitled "GNU Free 11 Documentation License". 12 13 Portions of the text are copyrighted by the following parties: 14 15 * The Regents of the University of California 16 * Free Software Foundation 17 * Ian F. Darwin 18 * Paul Vixie 19 * BSDI (now Wind River) 20 * Andrew G Morgan 21 * Jean-loup Gailly and Mark Adler 22 * Massachusetts Institute of Technology 23 24 These excerpts are being used in accordance with their 25 respective licenses. 26 27 Linux is the registered trademark of Linus Torvalds in the 28 U.S. and other countries. 29 30 UNIX is a registered trademark of The Open Group. 31 32 LSB is a trademark of the Free Standards Group in the United 33 States and other countries. 34 35 AMD is a trademark of Advanced Micro Devices, Inc. 36 37 Intel and Itanium are registered trademarks and Intel386 is a 38 trademark of Intel Corporation. 39 40 PowerPC is a registered trademark and PowerPC Architecture is 41 a trademark of the IBM Corporation. 42 43 S/390 is a registered trademark of the IBM Corporation. 44 45 OpenGL is a registered trademark of Silicon Graphics, Inc. 46 _________________________________________________________ 47 48 Table of Contents 49 Foreword 50 Introduction 51 I. Introductory Elements 52 53 1. Scope 54 55 1.1. General 56 1.2. Module Specific Scope 57 58 2. References 59 60 2.1. Normative References 61 2.2. Informative References/Bibliography 62 63 3. Requirements 64 65 3.1. Relevant Libraries 66 3.2. LSB Implementation Conformance 67 3.3. LSB Application Conformance 68 69 4. Definitions 70 5. Terminology 71 6. Documentation Conventions 72 73 II. Executable and Linking Format (ELF) 74 75 7. Introduction 76 8. Low Level System Information 77 78 8.1. Machine Interface 79 8.2. Function Calling Sequence 80 8.3. Operating System Interface 81 8.4. Process Initialization 82 8.5. Coding Examples 83 8.6. C Stack Frame 84 8.7. Debug Information 85 86 9. Object Format 87 88 9.1. Introduction 89 9.2. ELF Header 90 9.3. Sections 91 9.4. Symbol Table 92 9.5. Relocation 93 94 10. Program Loading and Dynamic Linking 95 96 10.1. Introduction 97 10.2. Program Header 98 10.3. Program Loading 99 10.4. Dynamic Linking 100 101 III. Base Libraries 102 103 11. Libraries 104 105 11.1. Program Interpreter/Dynamic Linker 106 11.2. Interfaces for libc 107 11.3. Data Definitions for libc 108 11.4. Interfaces for libm 109 11.5. Data Definitions for libm 110 11.6. Interface Definitions for libm 111 11.7. Interfaces for libpthread 112 11.8. Data Definitions for libpthread 113 11.9. Interfaces for libgcc_s 114 11.10. Data Definitions for libgcc_s 115 11.11. Interface Definitions for libgcc_s 116 11.12. Interfaces for libdl 117 11.13. Data Definitions for libdl 118 11.14. Interfaces for libcrypt 119 120 IV. Utility Libraries 121 122 12. Libraries 123 124 12.1. Interfaces for libz 125 12.2. Data Definitions for libz 126 12.3. Interfaces for libncurses 127 12.4. Data Definitions for libncurses 128 12.5. Interfaces for libutil 129 130 V. Package Format and Installation 131 132 13. Software Installation 133 134 13.1. Package Dependencies 135 13.2. Package Architecture Considerations 136 137 A. Alphabetical Listing of Interfaces 138 139 A.1. libgcc_s 140 A.2. libm 141 142 B. GNU Free Documentation License (Informative) 143 144 B.1. PREAMBLE 145 B.2. APPLICABILITY AND DEFINITIONS 146 B.3. VERBATIM COPYING 147 B.4. COPYING IN QUANTITY 148 B.5. MODIFICATIONS 149 B.6. COMBINING DOCUMENTS 150 B.7. COLLECTIONS OF DOCUMENTS 151 B.8. AGGREGATION WITH INDEPENDENT WORKS 152 B.9. TRANSLATION 153 B.10. TERMINATION 154 B.11. FUTURE REVISIONS OF THIS LICENSE 155 B.12. How to use this License for your documents 156 157 List of Figures 158 8-1. Structure Smaller Than A Word 159 8-2. No Padding 160 8-3. Internal and Tail Padding 161 8-4. Bit-Field Ranges 162 163 List of Tables 164 2-1. Normative References 165 2-2. Other References 166 3-1. Standard Library Names 167 8-1. Scalar Types 168 9-1. Additional Processor-Specific Flags 169 9-2. ELF Special Sections 170 9-3. Additional Special Sections 171 11-1. libc Definition 172 11-2. libc - RPC Function Interfaces 173 11-3. libc - System Calls Function Interfaces 174 11-4. libc - Standard I/O Function Interfaces 175 11-5. libc - Standard I/O Data Interfaces 176 11-6. libc - Signal Handling Function Interfaces 177 11-7. libc - Signal Handling Data Interfaces 178 11-8. libc - Localization Functions Function Interfaces 179 11-9. libc - Localization Functions Data Interfaces 180 11-10. libc - Socket Interface Function Interfaces 181 11-11. libc - Wide Characters Function Interfaces 182 11-12. libc - String Functions Function Interfaces 183 11-13. libc - IPC Functions Function Interfaces 184 11-14. libc - Regular Expressions Function Interfaces 185 11-15. libc - Character Type Functions Function Interfaces 186 11-16. libc - Time Manipulation Function Interfaces 187 11-17. libc - Time Manipulation Data Interfaces 188 11-18. libc - Terminal Interface Functions Function Interfaces 189 11-19. libc - System Database Interface Function Interfaces 190 11-20. libc - Language Support Function Interfaces 191 11-21. libc - Large File Support Function Interfaces 192 11-22. libc - Standard Library Function Interfaces 193 11-23. libc - Standard Library Data Interfaces 194 11-24. libm Definition 195 11-25. libm - Math Function Interfaces 196 11-26. libm - Math Data Interfaces 197 11-27. libpthread Definition 198 11-28. libpthread - Realtime Threads Function Interfaces 199 11-29. libpthread - Posix Threads Function Interfaces 200 11-30. libpthread - Thread aware versions of libc interfaces 201 Function Interfaces 202 203 11-31. libgcc_s Definition 204 11-32. libgcc_s - Unwind Library Function Interfaces 205 11-33. libdl Definition 206 11-34. libdl - Dynamic Loader Function Interfaces 207 11-35. libcrypt Definition 208 11-36. libcrypt - Encryption Function Interfaces 209 12-1. libz Definition 210 12-2. libncurses Definition 211 12-3. libutil Definition 212 12-4. libutil - Utility Functions Function Interfaces 213 A-1. libgcc_s Function Interfaces 214 A-2. libm Function Interfaces 215 _________________________________________________________ 216 217 Foreword 218 219 This is version 3.1 of the Linux Standard Base Core 220 Specification for IA64. This specification is part of a family 221 of specifications under the general title "Linux Standard 222 Base". Developers of applications or implementations 223 interested in using the LSB trademark should see the Free 224 Standards Group Certification Policy for details. 225 _________________________________________________________ 226 227 Introduction 228 229 The LSB defines a binary interface for application programs 230 that are compiled and packaged for LSB-conforming 231 implementations on many different hardware architectures. 232 Since a binary specification shall include information 233 specific to the computer processor architecture for which it 234 is intended, it is not possible for a single document to 235 specify the interface for all possible LSB-conforming 236 implementations. Therefore, the LSB is a family of 237 specifications, rather than a single one. 238 239 This document should be used in conjunction with the documents 240 it references. This document enumerates the system components 241 it includes, but descriptions of those components may be 242 included entirely or partly in this document, partly in other 243 documents, or entirely in other reference documents. For 244 example, the section that describes system service routines 245 includes a list of the system routines supported in this 246 interface, formal declarations of the data structures they use 247 that are visible to applications, and a pointer to the 248 underlying referenced specification for information about the 249 syntax and semantics of each call. Only those routines not 250 described in standards referenced by this document, or 251 extensions to those standards, are described in the detail. 252 Information referenced in this way is as much a part of this 253 document as is the information explicitly included here. 254 255 The specification carries a version number of either the form 256 x.y or x.y.z. This version number carries the following 257 meaning: 258 259 * The first number (x) is the major version number. All 260 versions with the same major version number should share 261 binary compatibility. Any addition or deletion of a new 262 library results in a new version number. Interfaces marked 263 as deprecated may be removed from the specification at a 264 major version change. 265 * The second number (y) is the minor version number. 266 Individual interfaces may be added if all certified 267 implementations already had that (previously undocumented) 268 interface. Interfaces may be marked as deprecated at a 269 minor version change. Other minor changes may be permitted 270 at the discretion of the LSB workgroup. 271 * The third number (z), if present, is the editorial level. 272 Only editorial changes should be included in such 273 versions. 274 275 Since this specification is a descriptive Application Binary 276 Interface, and not a source level API specification, it is not 277 possible to make a guarantee of 100% backward compatibility 278 between major releases. However, it is the intent that those 279 parts of the binary interface that are visible in the source 280 level API will remain backward compatible from version to 281 version, except where a feature marked as "Deprecated" in one 282 release may be removed from a future release. 283 284 Implementors are strongly encouraged to make use of symbol 285 versioning to permit simultaneous support of applications 286 conforming to different releases of this specification. 287 288 I. Introductory Elements 289 290 Table of Contents 291 1. Scope 292 293 1.1. General 294 1.2. Module Specific Scope 295 296 2. References 297 298 2.1. Normative References 299 2.2. Informative References/Bibliography 300 301 3. Requirements 302 303 3.1. Relevant Libraries 304 3.2. LSB Implementation Conformance 305 3.3. LSB Application Conformance 306 307 4. Definitions 308 5. Terminology 309 6. Documentation Conventions 310 _________________________________________________________ 311 312 Chapter 1. Scope 313 314 1.1. General 315 316 The Linux Standard Base (LSB) defines a system interface for 317 compiled applications and a minimal environment for support of 318 installation scripts. Its purpose is to enable a uniform 319 industry standard environment for high-volume applications 320 conforming to the LSB. 321 322 These specifications are composed of two basic parts: A common 323 specification ("LSB-generic" or "generic LSB"), ISO/IEC 23360 324 Part 1, describing those parts of the interface that remain 325 constant across all implementations of the LSB, and an 326 architecture-specific part ("LSB-arch" or "archLSB") 327 describing the parts of the interface that vary by processor 328 architecture. Together, the LSB-generic and the relevant 329 architecture-specific part of ISO/IEC 23360 for a single 330 hardware architecture provide a complete interface 331 specification for compiled application programs on systems 332 that share a common hardware architecture. 333 334 ISO/IEC 23360 Part 1, the LSB-generic document, should be used 335 in conjunction with an architecture-specific part. Whenever a 336 section of the LSB-generic specification is supplemented by 337 architecture-specific information, the LSB-generic document 338 includes a reference to the architecture part. 339 Architecture-specific parts of ISO/IEC 23360 may also contain 340 additional information that is not referenced in the 341 LSB-generic document. 342 343 The LSB contains both a set of Application Program Interfaces 344 (APIs) and Application Binary Interfaces (ABIs). APIs may 345 appear in the source code of portable applications, while the 346 compiled binary of that application may use the larger set of 347 ABIs. A conforming implementation provides all of the ABIs 348 listed here. The compilation system may replace (e.g. by macro 349 definition) certain APIs with calls to one or more of the 350 underlying binary interfaces, and may insert calls to binary 351 interfaces as needed. 352 353 The LSB is primarily a binary interface definition. Not all of 354 the source level APIs available to applications may be 355 contained in this specification. 356 _________________________________________________________ 357 358 1.2. Module Specific Scope 359 360 This is the Itanium(TM) architecture specific Core part of the 361 Linux Standard Base (LSB). This part supplements the generic 362 LSB Core module with those interfaces that differ between 363 architectures. 364 365 Interfaces described in this part of ISO/IEC 23360 are 366 mandatory except where explicitly listed otherwise. Core 367 interfaces may be supplemented by other modules; all modules 368 are built upon the core. 369 _________________________________________________________ 370 371 Chapter 2. References 372 373 2.1. Normative References 374 375 The following referenced documents are indispensable for the 376 application of this document. For dated references, only the 377 edition cited applies. For undated references, the latest 378 edition of the referenced document (including any amendments) 379 applies. 380 381 Note: Where copies of a document are available on the World 382 Wide Web, a Uniform Resource Locator (URL) is given for 383 informative purposes only. This may point to a more recent 384 copy of the referenced specification, or may be out of 385 date. Reference copies of specifications at the revision 386 level indicated may be found at the Free Standards Group's 387 Reference Specifications site. 388 389 Table 2-1. Normative References 390 Name Title URL 391 ISO/IEC 23360 Part 1 ISO/IEC 23360:2005 Linux Standard Base - 392 Part 1 Generic Specification http://www.linuxbase.org/spec/ 393 Filesystem Hierarchy Standard Filesystem Hierarchy Standard 394 (FHS) 2.3 http://www.pathname.com/fhs/ 395 Intel® Itanium(TM) Processor-specific Application Binary 396 Interface Intel® Itanium(TM) Processor-specific Application 397 Binary Interface 398 http://refspecs.freestandards.org/elf/IA64-SysV-psABI.pdf 399 ISO C (1999) ISO/IEC 9899: 1999, Programming Languages --C 400 ISO POSIX (2003) 401 402 ISO/IEC 9945-1:2003 Information technology -- Portable 403 Operating System Interface (POSIX) -- Part 1: Base Definitions 404 405 ISO/IEC 9945-2:2003 Information technology -- Portable 406 Operating System Interface (POSIX) -- Part 2: System 407 Interfaces 408 409 ISO/IEC 9945-3:2003 Information technology -- Portable 410 Operating System Interface (POSIX) -- Part 3: Shell and 411 Utilities 412 413 ISO/IEC 9945-4:2003 Information technology -- Portable 414 Operating System Interface (POSIX) -- Part 4: Rationale 415 416 Including Technical Cor. 1: 2004 417 http://www.unix.org/version3/ 418 Itanium(TM) Architecture Software Developer's Manual Volume 1 419 Itanium(TM) Architecture Software Developer's Manual Volume 1: 420 Application Architecture 421 http://refspecs.freestandards.org/IA64-softdevman-vol1.pdf 422 Itanium(TM) Architecture Software Developer's Manual Volume 2 423 Itanium(TM) Architecture Software Developer's Manual Volume 2: 424 System Architecture 425 http://refspecs.freestandards.org/IA64-softdevman-vol2.pdf 426 Itanium(TM) Architecture Software Developer's Manual Volume 3 427 Itanium(TM) Architecture Software Developer's Manual Volume 3: 428 Instruction Set Reference 429 http://refspecs.freestandards.org/IA64-softdevman-vol3.pdf 430 Itanium(TM) Architecture Software Developer's Manual Volume 4 431 IA-64 Processor Reference: Intel® Itanium(TM) Processor 432 Reference Manual for Software Development 433 http://refspecs.freestandards.org/IA64-softdevman-vol4.pdf 434 Itanium(TM) Software Conventions and Runtime Guide Itanium(TM) 435 Software Conventions & Runtime Architecture Guide, September 436 2000 http://refspecs.freestandards.org/IA64conventions.pdf 437 Large File Support Large File Support 438 http://www.UNIX-systems.org/version2/whatsnew/lfs20mar.html 439 SUSv2 CAE Specification, January 1997, System Interfaces and 440 Headers (XSH),Issue 5 (ISBN: 1-85912-181-0, C606) 441 http://www.opengroup.org/publications/catalog/un.htm 442 SVID Issue 3 American Telephone and Telegraph Company, System 443 V Interface Definition, Issue 3 ; Morristown, NJ, UNIX Press, 444 1989.(ISBN 0201566524) 445 SVID Issue 4 System V Interface Definition,Fourth Edition 446 System V ABI System V Application Binary Interface, Edition 447 4.1 http://www.caldera.com/developers/devspecs/gabi41.pdf 448 System V ABI Update System V Application Binary Interface - 449 DRAFT - 17 December 2003 450 http://www.caldera.com/developers/gabi/2003-12-17/contents.htm 451 l 452 X/Open Curses CAE Specification, May 1996, X/Open Curses, 453 Issue 4, Version 2 (ISBN: 1-85912-171-3, C610), plus 454 Corrigendum U018 455 http://www.opengroup.org/publications/catalog/un.htm 456 _________________________________________________________ 457 458 2.2. Informative References/Bibliography 459 460 In addition, the specifications listed below provide essential 461 background information to implementors of this specification. 462 These references are included for information only. 463 464 Table 2-2. Other References 465 Name Title URL 466 DWARF Debugging Information Format, Revision 2.0.0 DWARF 467 Debugging Information Format, Revision 2.0.0 (July 27, 1993) 468 http://refspecs.freestandards.org/dwarf/dwarf-2.0.0.pdf 469 DWARF Debugging Information Format, Revision 3.0.0 (Draft) 470 DWARF Debugging Information Format, Revision 3.0.0 (Draft) 471 http://refspecs.freestandards.org/dwarf/ 472 IEC 60559/IEEE 754 Floating Point IEC 60559:1989 Binary 473 floating-point arithmetic for microprocessor systems 474 http://www.ieee.org/ 475 ISO/IEC TR14652 ISO/IEC Technical Report 14652:2002 476 Specification method for cultural conventions 477 ITU-T V.42 International Telecommunication Union 478 Recommendation V.42 (2002): Error-correcting procedures for 479 DCEs using asynchronous-to-synchronous conversionITUV 480 http://www.itu.int/rec/recommendation.asp?type=folders&lang=e& 481 parent=T-REC-V.42 482 Li18nux Globalization Specification LI18NUX 2000 Globalization 483 Specification, Version 1.0 with Amendment 4 484 http://www.li18nux.org/docs/html/LI18NUX-2000-amd4.htm 485 Linux Allocated Device Registry LINUX ALLOCATED DEVICES 486 http://www.lanana.org/docs/device-list/devices.txt 487 PAM Open Software Foundation, Request For Comments: 86.0 , 488 October 1995, V. Samar & R.Schemers (SunSoft) 489 http://www.opengroup.org/tech/rfc/mirror-rfc/rfc86.0.txt 490 RFC 1321: The MD5 Message-Digest Algorithm IETF RFC 1321: The 491 MD5 Message-Digest Algorithm 492 http://www.ietf.org/rfc/rfc1321.txt 493 RFC 1831/1832 RPC & XDR IETF RFC 1831 & 1832 494 http://www.ietf.org/ 495 RFC 1833: Binding Protocols for ONC RPC Version 2 IETF RFC 496 1833: Binding Protocols for ONC RPC Version 2 497 http://www.ietf.org/rfc/rfc1833.txt 498 RFC 1950: ZLIB Compressed Data Format Specication IETF RFC 499 1950: ZLIB Compressed Data Format Specification 500 http://www.ietf.org/rfc/rfc1950.txt 501 RFC 1951: DEFLATE Compressed Data Format Specification IETF 502 RFC 1951: DEFLATE Compressed Data Format Specification version 503 1.3 http://www.ietf.org/rfc/rfc1951.txt 504 RFC 1952: GZIP File Format Specification IETF RFC 1952: GZIP 505 file format specification version 4.3 506 http://www.ietf.org/rfc/rfc1952.txt 507 RFC 2440: OpenPGP Message Format IETF RFC 2440: OpenPGP 508 Message Format http://www.ietf.org/rfc/rfc2440.txt 509 RFC 2821:Simple Mail Transfer Protocol IETF RFC 2821: Simple 510 Mail Transfer Protocol http://www.ietf.org/rfc/rfc2821.txt 511 RFC 2822:Internet Message Format IETF RFC 2822: Internet 512 Message Format http://www.ietf.org/rfc/rfc2822.txt 513 RFC 791:Internet Protocol IETF RFC 791: Internet Protocol 514 Specification http://www.ietf.org/rfc/rfc791.txt 515 RPM Package Format RPM Package Format V3.0 516 http://www.rpm.org/max-rpm/s1-rpm-file-format-rpm-file-format. 517 html 518 SUSv2 Commands and Utilities The Single UNIX 519 Specification(SUS) Version 2, Commands and Utilities (XCU), 520 Issue 5 (ISBN: 1-85912-191-8, C604) 521 http://www.opengroup.org/publications/catalog/un.htm 522 zlib Manual zlib 1.2 Manual http://www.gzip.org/zlib/ 523 _________________________________________________________ 524 525 Chapter 3. Requirements 526 527 3.1. Relevant Libraries 528 529 The libraries listed in Table 3-1 shall be available on IA64 530 Linux Standard Base systems, with the specified runtime names. 531 These names override or supplement the names specified in the 532 generic LSB (ISO/IEC 23360 Part 1) specification. The 533 specified program interpreter, referred to as proginterp in 534 this table, shall be used to load the shared libraries 535 specified by DT_NEEDED entries at run time. 536 537 Table 3-1. Standard Library Names 538 Library Runtime Name 539 libm libm.so.6.1 540 libdl libdl.so.2 541 libcrypt libcrypt.so.1 542 libz libz.so.1 543 libncurses libncurses.so.5 544 libutil libutil.so.1 545 libc libc.so.6.1 546 libpthread libpthread.so.0 547 proginterp /lib/ld-lsb-ia64.so.3 548 libgcc_s libgcc_s.so.1 549 550 These libraries will be in an implementation-defined directory 551 which the dynamic linker shall search by default. 552 _________________________________________________________ 553 554 3.2. LSB Implementation Conformance 555 556 A conforming implementation is necessarily architecture 557 specific, and must provide the interfaces specified by both 558 the generic LSB Core specification (ISO/IEC 23360 Part 1) and 559 the relevant architecture specific part of ISO/IEC 23360. 560 561 Rationale: An implementation must provide at least the 562 interfaces specified in these specifications. It may also 563 provide additional interfaces. 564 565 A conforming implementation shall satisfy the following 566 requirements: 567 568 * A processor architecture represents a family of related 569 processors which may not have identical feature sets. The 570 architecture specific parts of ISO/IEC 23360 that 571 supplement this specification for a given target processor 572 architecture describe a minimum acceptable processor. The 573 implementation shall provide all features of this 574 processor, whether in hardware or through emulation 575 transparent to the application. 576 * The implementation shall be capable of executing compiled 577 applications having the format and using the system 578 interfaces described in this document. 579 * The implementation shall provide libraries containing the 580 interfaces specified by this document, and shall provide a 581 dynamic linking mechanism that allows these interfaces to 582 be attached to applications at runtime. All the interfaces 583 shall behave as specified in this document. 584 * The map of virtual memory provided by the implementation 585 shall conform to the requirements of this document. 586 * The implementation's low-level behavior with respect to 587 function call linkage, system traps, signals, and other 588 such activities shall conform to the formats described in 589 this document. 590 * The implementation shall provide all of the mandatory 591 interfaces in their entirety. 592 * The implementation may provide one or more of the optional 593 interfaces. Each optional interface that is provided shall 594 be provided in its entirety. The product documentation 595 shall state which optional interfaces are provided. 596 * The implementation shall provide all files and utilities 597 specified as part of this document in the format defined 598 here and in other referenced documents. All commands and 599 utilities shall behave as required by this document. The 600 implementation shall also provide all mandatory components 601 of an application's runtime environment that are included 602 or referenced in this document. 603 * The implementation, when provided with standard data 604 formats and values at a named interface, shall provide the 605 behavior defined for those values and data formats at that 606 interface. However, a conforming implementation may 607 consist of components which are separately packaged and/or 608 sold. For example, a vendor of a conforming implementation 609 might sell the hardware, operating system, and windowing 610 system as separately packaged items. 611 * The implementation may provide additional interfaces with 612 different names. It may also provide additional behavior 613 corresponding to data values outside the standard ranges, 614 for standard named interfaces. 615 _________________________________________________________ 616 617 3.3. LSB Application Conformance 618 619 A conforming application is necessarily architecture specific, 620 and must conform to both the generic LSB Core specification 621 (ISO/IEC 23360 Part 1)and the relevant architecture specific 622 part of ISO/IEC 23360. 623 624 A conforming application shall satisfy the following 625 requirements: 626 627 * Its executable files shall be either shell scripts or 628 object files in the format defined for the Object File 629 Format system interface. 630 * Its object files shall participate in dynamic linking as 631 defined in the Program Loading and Linking System 632 interface. 633 * It shall employ only the instructions, traps, and other 634 low-level facilities defined in the Low-Level System 635 interface as being for use by applications. 636 * If it requires any optional interface defined in this 637 document in order to be installed or to execute 638 successfully, the requirement for that optional interface 639 shall be stated in the application's documentation. 640 * It shall not use any interface or data format that is not 641 required to be provided by a conforming implementation, 642 unless: 643 + If such an interface or data format is supplied by 644 another application through direct invocation of that 645 application during execution, that application shall 646 be in turn an LSB conforming application. 647 + The use of that interface or data format, as well as 648 its source, shall be identified in the documentation 649 of the application. 650 * It shall not use any values for a named interface that are 651 reserved for vendor extensions. 652 653 A strictly conforming application shall not require or use any 654 interface, facility, or implementation-defined extension that 655 is not defined in this document in order to be installed or to 656 execute successfully. 657 _________________________________________________________ 658 659 Chapter 4. Definitions 660 661 For the purposes of this document, the following definitions, 662 as specified in the ISO/IEC Directives, Part 2, 2001, 4th 663 Edition, apply: 664 665 can 666 667 be able to; there is a possibility of; it is possible to 668 cannot 669 670 be unable to; there is no possibilty of; it is not possible to 671 may 672 673 is permitted; is allowed; is permissible 674 need not 675 676 it is not required that; no...is required 677 shall 678 679 is to; is required to; it is required that; has to; only...is 680 permitted; it is necessary 681 shall not 682 683 is not allowed [permitted] [acceptable] [permissible]; is 684 required to be not; is required that...be not; is not to be 685 should 686 687 it is recommended that; ought to 688 should not 689 690 it is not recommended that; ought not to 691 _________________________________________________________ 692 693 Chapter 5. Terminology 694 695 For the purposes of this document, the following terms apply: 696 697 archLSB 698 The architectural part of the LSB Specification which 699 describes the specific parts of the interface that are 700 platform specific. The archLSB is complementary to the 701 gLSB. 702 703 Binary Standard 704 The total set of interfaces that are available to be 705 used in the compiled binary code of a conforming 706 application. 707 708 gLSB 709 The common part of the LSB Specification that describes 710 those parts of the interface that remain constant 711 across all hardware implementations of the LSB. 712 713 implementation-defined 714 Describes a value or behavior that is not defined by 715 this document but is selected by an implementor. The 716 value or behavior may vary among implementations that 717 conform to this document. An application should not 718 rely on the existence of the value or behavior. An 719 application that relies on such a value or behavior 720 cannot be assured to be portable across conforming 721 implementations. The implementor shall document such a 722 value or behavior so that it can be used correctly by 723 an application. 724 725 Shell Script 726 A file that is read by an interpreter (e.g., awk). The 727 first line of the shell script includes a reference to 728 its interpreter binary. 729 730 Source Standard 731 The set of interfaces that are available to be used in 732 the source code of a conforming application. 733 734 undefined 735 Describes the nature of a value or behavior not defined 736 by this document which results from use of an invalid 737 program construct or invalid data input. The value or 738 behavior may vary among implementations that conform to 739 this document. An application should not rely on the 740 existence or validity of the value or behavior. An 741 application that relies on any particular value or 742 behavior cannot be assured to be portable across 743 conforming implementations. 744 745 unspecified 746 Describes the nature of a value or behavior not 747 specified by this document which results from use of a 748 valid program construct or valid data input. The value 749 or behavior may vary among implementations that conform 750 to this document. An application should not rely on the 751 existence or validity of the value or behavior. An 752 application that relies on any particular value or 753 behavior cannot be assured to be portable across 754 conforming implementations. 755 756 Other terms and definitions used in this document shall have 757 the same meaning as defined in Chapter 3 of the Base 758 Definitions volume of ISO POSIX (2003). 759 _________________________________________________________ 760 761 Chapter 6. Documentation Conventions 762 763 Throughout this document, the following typographic 764 conventions are used: 765 766 function() 767 768 the name of a function 769 command 770 771 the name of a command or utility 772 CONSTANT 773 774 a constant value 775 parameter 776 777 a parameter 778 variable 779 780 a variable 781 782 Throughout this specification, several tables of interfaces 783 are presented. Each entry in these tables has the following 784 format: 785 786 name 787 788 the name of the interface 789 (symver) 790 791 An optional symbol version identifier, if required. 792 [refno] 793 794 A reference number indexing the table of referenced 795 specifications that follows this table. 796 797 For example, 798 799 forkpty(GLIBC_2.0) [SUSv3] 800 801 refers to the interface named forkpty() with symbol version 802 GLIBC_2.0 that is defined in the SUSv3 reference. 803 804 Note: Symbol versions are defined in the architecture 805 specific parts of ISO/IEC 23360 only. 806 807 II. Executable and Linking Format (ELF) 808 809 Table of Contents 810 7. Introduction 811 8. Low Level System Information 812 813 8.1. Machine Interface 814 815 8.1.1. Processor Architecture 816 8.1.2. Data Representation 817 818 8.2. Function Calling Sequence 819 820 8.2.1. Registers 821 8.2.2. Floating Point Registers 822 8.2.3. Stack Frame 823 8.2.4. Arguments 824 8.2.5. Return Values 825 826 8.3. Operating System Interface 827 828 8.3.1. Processor Execution Mode 829 8.3.2. Exception Interface 830 8.3.3. Signal Delivery 831 8.3.4. Debugging Support 832 8.3.5. Process Startup 833 834 8.4. Process Initialization 835 836 8.4.1. Special Registers 837 8.4.2. Process Stack (on entry) 838 8.4.3. Auxiliary Vector 839 8.4.4. Environment 840 841 8.5. Coding Examples 842 843 8.5.1. Introduction 844 8.5.2. Code Model Overview/Architecture Constraints 845 8.5.3. Position-Independent Function Prologue 846 8.5.4. Data Objects 847 8.5.5. Function Calls 848 8.5.6. Branching 849 850 8.6. C Stack Frame 851 852 8.6.1. Variable Argument List 853 8.6.2. Dynamic Allocation of Stack Space 854 855 8.7. Debug Information 856 857 9. Object Format 858 859 9.1. Introduction 860 9.2. ELF Header 861 862 9.2.1. Machine Information 863 864 9.3. Sections 865 866 9.3.1. Special Sections 867 9.3.2. Linux Special Sections 868 9.3.3. Section Types 869 9.3.4. Section Attribute Flags 870 9.3.5. Special Section Types 871 872 9.4. Symbol Table 873 9.5. Relocation 874 875 9.5.1. Relocation Types 876 877 10. Program Loading and Dynamic Linking 878 879 10.1. Introduction 880 10.2. Program Header 881 882 10.2.1. Types 883 10.2.2. Flags 884 885 10.3. Program Loading 886 10.4. Dynamic Linking 887 888 10.4.1. Dynamic Entries 889 10.4.2. Global Offset Table 890 10.4.3. Shared Object Dependencies 891 10.4.4. Function Addresses 892 10.4.5. Procedure Linkage Table 893 10.4.6. Initialization and Termination Functions 894 _________________________________________________________ 895 896 Chapter 7. Introduction 897 898 Executable and Linking Format (ELF) defines the object format 899 for compiled applications. This specification supplements the 900 information found in System V ABI Update and Intel® 901 Itanium(TM) Processor-specific Application Binary Interface, 902 and is intended to document additions made since the 903 publication of that document. 904 _________________________________________________________ 905 906 Chapter 8. Low Level System Information 907 908 8.1. Machine Interface 909 910 8.1.1. Processor Architecture 911 912 The Itanium(TM) Architecture is specified by the following 913 documents 914 915 * Itanium(TM) Architecture Software Developer's Manual 916 Volume 1 917 * Itanium(TM) Architecture Software Developer's Manual 918 Volume 2 919 * Itanium(TM) Architecture Software Developer's Manual 920 Volume 3 921 * Itanium(TM) Architecture Software Developer's Manual 922 Volume 4 923 * Itanium(TM) Software Conventions and Runtime Guide 924 * Intel® Itanium(TM) Processor-specific Application Binary 925 Interface 926 927 Only the features of the Itanium(TM) processor instruction set 928 may be assumed to be present. An application should determine 929 if any additional instruction set features are available 930 before using those additional features. If a feature is not 931 present, then the application may not use it. 932 933 Conforming applications may use only instructions which do not 934 require elevated privileges. 935 936 Conforming applications shall not invoke the implementations 937 underlying system call interface directly. The interfaces in 938 the implementation base libraries shall be used instead. 939 940 Rationale: Implementation-supplied base libraries may use 941 the system call interface but applications must not assume 942 any particular operating system or kernel version is 943 present. 944 945 There are some features of the Itanium(TM) processor 946 architecture that need not be supported by a conforming 947 implementation. These are described in this chapter. A 948 conforming application shall not rely on these features. 949 950 Applications conforming to this specification must provide 951 feedback to the user if a feature that is required for correct 952 execution of the application is not present. Applications 953 conforming to this specification should attempt to execute in 954 a diminished capacity if a required feature is not present. 955 956 This specfication does not provide any performance guarantees 957 of a conforming system. A system conforming to this 958 specification may be implemented in either hardware or 959 software. 960 961 This specification describes only LP64 (i.e. 32-bit integers, 962 64-bit longs and pointers) based implementations. 963 Implementations may also provide ILP32 (32-bit integers, 964 longs, and pointers), but conforming applications shall not 965 rely on support for ILP32. See section 1.2 of the Intel® 966 Itanium(TM) Processor-specific Application Binary Interface 967 for further information. 968 _________________________________________________________ 969 970 8.1.2. Data Representation 971 972 The following sections, in conjunction with section 4 of 973 Itanium(TM) Software Conventions and Runtime Guide, define the 974 size, alignment requirements, and hardware representation of 975 the standard C data types. 976 977 Within this specification, the term byte refers to an 8-bit 978 object, the term halfword refers to a 16-bit object, the term 979 word refers to a 32-bit object, the term doubleword refers to 980 a 64-bit object, and the term quadword refers to a 128-bit 981 object. 982 _________________________________________________________ 983 984 8.1.2.1. Byte Ordering 985 986 LSB-conforming applications shall use little-endian byte 987 ordering. LSB-conforming implementations may support 988 big-endian applications. 989 _________________________________________________________ 990 991 8.1.2.2. Fundamental Types 992 993 Table 8-1 describes how fundemental C language data types 994 shall be represented: 995 996 Table 8-1. Scalar Types 997 Type C sizeof Alignment (bytes) Hardware Representation 998 Integral _Bool 1 1 byte (sign unspecified) 999 char 1 1 signed byte 1000 signed char 1001 unsigned char signed byte 1002 short 2 2 signed halfword 1003 signed short 1004 unsigned short unsigned halfword 1005 int 4 4 signed word 1006 signed int 1007 unsigned int unsigned word 1008 long 8 8 signed doubleword 1009 signed long 1010 unsigned long unsigned doubleword 1011 long long 8 8 signed doubleword 1012 signed long long 1013 unsigned long long unsigned doubleword 1014 Pointer any-type * 8 8 unsigned doubleword 1015 any-type (*)() 1016 Floating-Point float 4 4 IEEE Single-precision 1017 double 8 8 IEEE Double-precision 1018 long double 16 16 IEEE Double-extended 1019 1020 A null pointer (for all types) shall have the value zero. 1021 _________________________________________________________ 1022 1023 8.1.2.3. Aggregates and Unions 1024 1025 Aggregates (structures and arrays) and unions assume the 1026 alignment of their most strictly aligned component. The size 1027 of any object, including aggregates and unions, shall always 1028 be a multiple of the object's alignment. An array uses the 1029 same alignment as its elements. Structure and union objects 1030 may require padding to meet size and element constraints. The 1031 contents of such padding is undefined. 1032 1033 * An entire structure or union object shall be aligned on 1034 the same boundary as its most strictly aligned member. 1035 * Each member shall be assigned to the lowest available 1036 offset with the appropriate alignment. This may require 1037 internal padding, depending on the previous member. 1038 * A structure's size shall be increased, if necessary, to 1039 make it a multiple of the alignment. This may require tail 1040 padding, depending on the last member. 1041 1042 A conforming application shall not read padding. 1043 1044 struct { 1045 char c; 1046 } 1047 1048 Byte aligned, sizeof is 1 1049 Offset Byte 0 1050 0 c^0 1051 1052 Figure 8-1. Structure Smaller Than A Word 1053 1054 struct { 1055 char c; 1056 char d; 1057 short s; 1058 int i; 1059 long l; 1060 } 1061 1062 Doubleword Aligned, sizeof is 16 1063 Offset Byte 3 Byte 2 Byte 1 Byte 0 1064 0 s^2 d^1 c^0 1065 4 i^0 1066 8 l^0 1067 12 1068 1069 Figure 8-2. No Padding 1070 1071 struct { 1072 char c; 1073 long l; 1074 int i; 1075 short s; 1076 } 1077 1078 Doubleword Aligned, sizeof is 24 1079 Offset Byte 3 Byte 2 Byte 1 Byte 0 1080 0 pad^1 c^0 1081 4 pad^1 1082 8 l^0 1083 12 1084 16 i^0 1085 20 pad^2 s^0 1086 1087 Figure 8-3. Internal and Tail Padding 1088 _________________________________________________________ 1089 1090 8.1.2.4. Bit Fields 1091 1092 C struct and union definitions may have bit-fields, which 1093 define integral objects with a specified number of bits. 1094 1095 Bit fields that are declared with neither signed nor unsigned 1096 specifier shall always be treated as unsigned. Bit fields obey 1097 the same size and alignment rules as other structure and union 1098 members, with the following additional properties: 1099 1100 * Bit-fields are allocated from right to left (least to most 1101 significant). 1102 * A bit-field must entirely reside in a storage unit for its 1103 appropriate type. A bit field shall never cross its unit 1104 boundary. 1105 * Bit-fields may share a storage unit with other 1106 struct/union members, including members that are not bit 1107 fields. Such other struct/union members shall occupy 1108 different parts of the storage unit. 1109 * The type of unnamed bit-fields shall not affect the 1110 alignment of a structure or union, although individual 1111 bit-field member offsets shall obey the alignment 1112 constraints. 1113 1114 Bit-field Type Width w Range 1115 signed char 1116 char 1117 unsigned char 1118 1119 1 to 8 1120 -2^w-1 to 2^w-1-1 1121 0 to 2^w-1 1122 0 to 2^w-1 1123 1124 signed short 1125 short 1126 unsigned short 1127 1128 1 to 16 1129 -2^w-1 to 2^w-1-1 1130 0 to 2^w-1 1131 0 to 2^w-1 1132 1133 signed int 1134 int 1135 unsigned int 1136 1137 1 to 32 1138 -2^w-1 to 2^w-1-1 1139 0 to 2^w-1 1140 0 to 2^w-1 1141 1142 signed long 1143 long 1144 unsigned long 1145 1146 1 to 64 1147 -2^w-1 to 2^w-1-1 1148 0 to 2^w-1 1149 0 to 2^w-1 1150 1151 Figure 8-4. Bit-Field Ranges 1152 _________________________________________________________ 1153 1154 8.2. Function Calling Sequence 1155 1156 LSB-conforming applications shall use the procedure linkage 1157 and function calling sequence as defined in Chapter 8.4 of the 1158 Itanium(TM) Software Conventions and Runtime Guide. 1159 _________________________________________________________ 1160 1161 8.2.1. Registers 1162 1163 The CPU general and other registers are as defined in the 1164 Itanium(TM) Architecture Software Developer's Manual Volume 1 1165 Section 3.1. 1166 _________________________________________________________ 1167 1168 8.2.2. Floating Point Registers 1169 1170 The floating point registers are as defined in the Itanium(TM) 1171 Architecture Software Developer's Manual Volume 1 Section 3.1. 1172 _________________________________________________________ 1173 1174 8.2.3. Stack Frame 1175 1176 The stackframe layout is as described in the Itanium(TM) 1177 Software Conventions and Runtime Guide Chapter 8.4. 1178 _________________________________________________________ 1179 1180 8.2.4. Arguments 1181 1182 8.2.4.1. Introduction 1183 1184 The procedure parameter passing mechanism is as described in 1185 the Itanium(TM) Software Conventions and Runtime Guide Chapter 1186 8.5. The following subsections provide additional information. 1187 _________________________________________________________ 1188 1189 8.2.4.2. Integral/Pointer 1190 1191 See Itanium(TM) Software Conventions and Runtime Guide Chapter 1192 8.5. 1193 _________________________________________________________ 1194 1195 8.2.4.3. Floating Point 1196 1197 See Itanium(TM) Software Conventions and Runtime Guide Chapter 1198 8.5. 1199 _________________________________________________________ 1200 1201 8.2.4.4. Struct and Union Point 1202 1203 See Itanium(TM) Software Conventions and Runtime Guide Chapter 1204 8.5. 1205 _________________________________________________________ 1206 1207 8.2.4.5. Variable Arguments 1208 1209 See Itanium(TM) Software Conventions and Runtime Guide Chapter 1210 8.5.4. 1211 _________________________________________________________ 1212 1213 8.2.5. Return Values 1214 1215 8.2.5.1. Introduction 1216 1217 Values are returned from functions as described in Itanium(TM) 1218 Software Conventions and Runtime Guide Chapter 8.6, and as 1219 further described here. 1220 _________________________________________________________ 1221 1222 8.2.5.2. Void 1223 1224 Functions that return no value (void functions) are not 1225 required to put any particular value in any general register. 1226 _________________________________________________________ 1227 1228 8.2.5.3. Integral/Pointer 1229 1230 See Itanium(TM) Software Conventions and Runtime Guide Chapter 1231 8.6. 1232 _________________________________________________________ 1233 1234 8.2.5.4. Floating Point 1235 1236 See Itanium(TM) Software Conventions and Runtime Guide Chapter 1237 8.6. 1238 _________________________________________________________ 1239 1240 8.2.5.5. Struct and Union 1241 1242 See Itanium(TM) Software Conventions and Runtime Guide Chapter 1243 8.6 (aggregate return values). Depending on the size 1244 (including any padding), aggregate data types may be passed in 1245 one or more general registers, or in memory. 1246 _________________________________________________________ 1247 1248 8.3. Operating System Interface 1249 1250 LSB-conforming applications shall use the Operating System 1251 Interfaces as defined in Chapter 3 of the Intel® Itanium(TM) 1252 Processor-specific Application Binary Interface. 1253 _________________________________________________________ 1254 1255 8.3.1. Processor Execution Mode 1256 1257 Applications must assume that they will execute in the least 1258 privileged user mode (i.e. level 3). Other privilege levels 1259 are reserved for the Operating System. 1260 _________________________________________________________ 1261 1262 8.3.2. Exception Interface 1263 1264 8.3.2.1. Introduction 1265 1266 LSB-conforming implementations shall support the exception 1267 interface as specified in Intel® Itanium(TM) 1268 Processor-specific Application Binary Interface, section 1269 3.3.1. 1270 _________________________________________________________ 1271 1272 8.3.2.2. Hardware Exception Types 1273 1274 See Intel® Itanium(TM) Processor-specific Application Binary 1275 Interface, section 3.3.1. 1276 _________________________________________________________ 1277 1278 8.3.2.3. Software Trap Types 1279 1280 See Intel® Itanium(TM) Processor-specific Application Binary 1281 Interface, section 3.3.1. 1282 _________________________________________________________ 1283 1284 8.3.3. Signal Delivery 1285 1286 LSB-conforming systems shall deliver signals as specified in 1287 Intel® Itanium(TM) Processor-specific Application Binary 1288 Interface, section 3.3.2. 1289 _________________________________________________________ 1290 1291 8.3.3.1. Signal Handler Interface 1292 1293 The signal handler interface shall be as specified in Intel® 1294 Itanium(TM) Processor-specific Application Binary Interface, 1295 section 3.3.3. 1296 _________________________________________________________ 1297 1298 8.3.4. Debugging Support 1299 1300 The LSB does not specify debugging information. 1301 _________________________________________________________ 1302 1303 8.3.5. Process Startup 1304 1305 LSB-conforming systems shall initialize processes as specified 1306 in Intel® Itanium(TM) Processor-specific Application Binary 1307 Interface, section 3.3.5. 1308 _________________________________________________________ 1309 1310 8.4. Process Initialization 1311 1312 LSB-conforming applications shall use the Process Startup as 1313 defined in Section 3.3.5 of the Intel® Itanium(TM) 1314 Processor-specific Application Binary Interface. 1315 _________________________________________________________ 1316 1317 8.4.1. Special Registers 1318 1319 Intel® Itanium(TM) Processor-specific Application Binary 1320 Interface, section 3.3.5, defines required register 1321 initializations for process startup. 1322 _________________________________________________________ 1323 1324 8.4.2. Process Stack (on entry) 1325 1326 As defined in Intel® Itanium(TM) Processor-specific 1327 Application Binary Interface, section 3.3.5, the return 1328 pointer register (rp) shall contain a valid return address, 1329 such that if the application program returns from the main 1330 entry routine, the implementation shall cause the application 1331 to exit normally, using the returned value as the exit status. 1332 Further, the unwind information for this "bottom of stack" 1333 routine in the implementation shall provide a mechanism for 1334 recognizing the bottom of the stack during a stack unwind. 1335 _________________________________________________________ 1336 1337 8.4.3. Auxiliary Vector 1338 1339 The auxiliary vector conveys information from the operating 1340 system to the application. Only the terminating null auxiliary 1341 vector entry is required, but if any other entries are 1342 present, they shall be interpreted as follows. This vector is 1343 an array of the following structures. 1344 typedef struct 1345 { 1346 long int a_type; /* Entry type */ 1347 union 1348 { 1349 long int a_val; /* Integer value */ 1350 void *a_ptr; /* Pointer value */ 1351 void (*a_fcn) (void); /* Function pointer value */ 1352 } a_un; 1353 } auxv_t; 1354 1355 The application shall interpret the a_un value according to 1356 the a_type. Other auxiliary vector types are reserved. 1357 1358 The a_type field shall contain one of the following values: 1359 1360 AT_NULL 1361 1362 The last entry in the array has type AT_NULL. The value in 1363 a_un is undefined. 1364 AT_IGNORE 1365 1366 The value in a_un is undefined, and should be ignored. 1367 AT_EXECFD 1368 1369 File descriptor of program 1370 AT_PHDR 1371 1372 Program headers for program 1373 AT_PHENT 1374 1375 Size of program header entry 1376 AT_PHNUM 1377 1378 Number of program headers 1379 AT_PAGESZ 1380 1381 System page size 1382 AT_BASE 1383 1384 Base address of interpreter 1385 AT_FLAGS 1386 1387 Flags 1388 AT_ENTRY 1389 1390 Entry point of program 1391 AT_NOTELF 1392 1393 Program is not ELF 1394 AT_UID 1395 1396 Real uid 1397 AT_EUID 1398 1399 Effective uid 1400 AT_GID 1401 1402 Real gid 1403 AT_EGID 1404 1405 Effective gid 1406 AT_CLKTCK 1407 1408 Frequency of times() 1409 AT_PLATFORM 1410 1411 String identifying platform. 1412 AT_HWCAP 1413 1414 Machine dependent hints about processor capabilities. 1415 AT_FPUCW 1416 1417 Used FPU control word 1418 AT_DCACHEBSIZE 1419 1420 Data cache block size 1421 AT_ICACHEBSIZE 1422 1423 Instruction cache block size 1424 AT_UCACHEBSIZE 1425 1426 Unified cache block size 1427 1428 Note: The auxiliary vector is intended for passing 1429 information from the operating system to the program 1430 interpreter. 1431 _________________________________________________________ 1432 1433 8.4.4. Environment 1434 1435 Although a pointer to the environment vector should be 1436 available as a third argument to the main() entry point, 1437 conforming applications should use getenv() to access the 1438 environment. (See ISO POSIX (2003), Section exec()). 1439 _________________________________________________________ 1440 1441 8.5. Coding Examples 1442 1443 8.5.1. Introduction 1444 1445 LSB-conforming applications may implement fundamental 1446 operations using the Coding Examples as shown below. 1447 1448 Sample code sequences and coding conventions can be found in 1449 Itanium(TM) Software Conventions and Runtime Guide, Chapter 9. 1450 _________________________________________________________ 1451 1452 8.5.2. Code Model Overview/Architecture Constraints 1453 1454 As defined in Intel® Itanium(TM) Processor-specific 1455 Application Binary Interface, relocatable files, executable 1456 files, and shared object files that are supplied as part of an 1457 application shall use Position Independent Code, as described 1458 in Itanium(TM) Software Conventions and Runtime Guide, Chapter 1459 12. 1460 _________________________________________________________ 1461 1462 8.5.3. Position-Independent Function Prologue 1463 1464 See Itanium(TM) Software Conventions and Runtime Guide, 1465 Chapter 8.4. 1466 _________________________________________________________ 1467 1468 8.5.4. Data Objects 1469 1470 See Intel® Itanium(TM) Processor-specific Application Binary 1471 Interface, Chapter 5.3.4, and Itanium(TM) Software Conventions 1472 and Runtime Guide, Chapter 12.3. 1473 _________________________________________________________ 1474 1475 8.5.4.1. Absolute Load & Store 1476 1477 Conforming applications shall not use absolute addressing. 1478 _________________________________________________________ 1479 1480 8.5.4.2. Position Relative Load & Store 1481 1482 See Intel® Itanium(TM) Processor-specific Application Binary 1483 Interface, Chapter 5.3.4. 1484 _________________________________________________________ 1485 1486 8.5.5. Function Calls 1487 1488 See Itanium(TM) Software Conventions and Runtime Guide, 1489 Chapter 8.4. 1490 1491 Four types of procedure call are defined in Itanium(TM) 1492 Software Conventions and Runtime Guide, Chapter 8.3. Although 1493 special calling conventions are permitted, provided that the 1494 compiler and runtime library agree on these conventions, none 1495 are defined for this standard. Consequently, no application 1496 shall depend on a type of procedure call other than Direct 1497 Calls, Direct Dynamically Linked Calls, or Indirect Calls, as 1498 defined in Itanium(TM) Software Conventions and Runtime Guide, 1499 Chapter 8.3. 1500 _________________________________________________________ 1501 1502 8.5.5.1. Absolute Direct Function Call 1503 1504 Conforming applications shall not use absolute addressing. 1505 _________________________________________________________ 1506 1507 8.5.5.2. Absolute Indirect Function Call 1508 1509 Conforming applications shall not use absolute addressing. 1510 _________________________________________________________ 1511 1512 8.5.5.3. Position-Independent Direct Function Call 1513 1514 See Itanium(TM) Software Conventions and Runtime Guide, 1515 Chapter 8.4.1. 1516 _________________________________________________________ 1517 1518 8.5.5.4. Position-Independent Indirect Function Call 1519 1520 See Itanium(TM) Software Conventions and Runtime Guide, 1521 Chapter 8.4.2. 1522 _________________________________________________________ 1523 1524 8.5.6. Branching 1525 1526 Branching is described in Itanium(TM) Architecture Software 1527 Developer's Manual Volume 4, Chapter 4.5. 1528 _________________________________________________________ 1529 1530 8.5.6.1. Branch Instruction 1531 1532 See Itanium(TM) Architecture Software Developer's Manual 1533 Volume 4, Chapter 4.5. 1534 _________________________________________________________ 1535 1536 8.5.6.2. Absolute switch() code 1537 1538 Conforming applications shall not use absolute addressing. 1539 _________________________________________________________ 1540 1541 8.5.6.3. Position-Independent switch() code 1542 1543 Where there are several possible targets for a branch, the 1544 compiler may use a number of different code generation 1545 strategies. See Itanium(TM) Software Conventions and Runtime 1546 Guide, Chapter 9.1.7. 1547 _________________________________________________________ 1548 1549 8.6. C Stack Frame 1550 1551 8.6.1. Variable Argument List 1552 1553 See Itanium(TM) Software Conventions and Runtime Guide, 1554 Chapter 8.5.2, and 8.5.4. 1555 _________________________________________________________ 1556 1557 8.6.2. Dynamic Allocation of Stack Space 1558 1559 The C library alloca() function should be used to dynamically 1560 allocate stack space. 1561 _________________________________________________________ 1562 1563 8.7. Debug Information 1564 1565 The LSB does not currently specify the format of Debug 1566 information. 1567 _________________________________________________________ 1568 1569 Chapter 9. Object Format 1570 1571 9.1. Introduction 1572 1573 LSB-conforming implementations shall support an object file , 1574 called Executable and Linking Format (ELF) as defined by the 1575 System V ABI, Intel® Itanium(TM) Processor-specific 1576 Application Binary Interface and as supplemented by the Linux 1577 Standard Base Specification and this document. 1578 _________________________________________________________ 1579 1580 9.2. ELF Header 1581 1582 9.2.1. Machine Information 1583 1584 LSB-conforming applications shall use the Machine Information 1585 as defined in Intel® Itanium(TM) Processor-specific 1586 Application Binary Interface, Chapter 4. Implementations shall 1587 support the LP64 model. It is unspecified whether or not the 1588 ILP32 model shall also be supported. 1589 _________________________________________________________ 1590 1591 9.2.1.1. File Class 1592 1593 For LP64 relocatable objects, the file class value in 1594 e_ident[EI_CLASS] may be either ELFCLASS32 or ELFCLASS64, and 1595 a conforming linker must be able to process either or both 1596 classes. 1597 _________________________________________________________ 1598 1599 9.2.1.2. Data Encoding 1600 1601 Implementations shall support 2's complement, little endian 1602 data encoding. The data encoding value in e_ident[EI_DATA] 1603 shall contain the value ELFDATA2LSB. 1604 _________________________________________________________ 1605 1606 9.2.1.3. OS Identification 1607 1608 The OS Identification field e_ident[EI_OSABI] shall contain 1609 the value ELFOSABI_NONE. 1610 _________________________________________________________ 1611 1612 9.2.1.4. Processor Identification 1613 1614 The processor identification value held in e_machine shall 1615 contain the value EM_IA_64. 1616 _________________________________________________________ 1617 1618 9.2.1.5. Processor Specific Flags 1619 1620 The flags field e_flags shall be as described in Intel® 1621 Itanium(TM) Processor-specific Application Binary Interface, 1622 Chapter 4.1.1.6. 1623 1624 The following additional processor-specific flags are defined: 1625 1626 Table 9-1. Additional Processor-Specific Flags 1627 Name Value 1628 EF_IA_64_LINUX_EXECUTABLE_STACK 0x00000001 1629 1630 EF_IA_64_LINUX_EXECUTABLE_STACK 1631 The stack and heap sections are executable. If this 1632 flag is not set, code can not be executed from the 1633 stack or heap. 1634 _________________________________________________________ 1635 1636 9.3. Sections 1637 1638 The Itanium(TM) architecture defines two processor-specific 1639 section types, as described in Intel® Itanium(TM) 1640 Processor-specific Application Binary Interface, Chapter 4. 1641 _________________________________________________________ 1642 1643 9.3.1. Special Sections 1644 1645 The following sections are defined in the Intel® Itanium(TM) 1646 Processor-specific Application Binary Interface. 1647 1648 Table 9-2. ELF Special Sections 1649 Name Type Attributes 1650 .got SHT_PROGBITS SHF_ALLOC+SHF_WRITE+SHF_IA_64_SHORT 1651 .IA_64.archext SHT_IA_64_EXT 0 1652 .IA_64.pltoff SHT_PROGBITS SHF_ALLOC+SHF_WRITE+SHF_IA_64_SHORT 1653 .IA_64.unwind SHT_IA_64_UNWIND SHF_ALLOC+SHF_LINK_ORDER 1654 .IA_64.unwind_info SHT_PROGBITS SHF_ALLOC 1655 .plt SHT_PROGBITS SHF_ALLOC+SHF_EXECINSTR 1656 .sbss SHT_NOBITS SHF_ALLOC+SHF_WRITE+SHF_IA_64_SHORT 1657 .sdata SHT_PROGBITS SHF_ALLOC+SHF_WRITE+SHF_IA_64_SHORT 1658 .sdata1 SHT_PROGBITS SHF_ALLOC+SHF_WRITE+SHF_IA_64_SHORT 1659 1660 .got 1661 1662 This section holds the Global Offset Table. See `Coding 1663 Examples' in Chapter 3, `Special Sections' in Chapter 4, and 1664 `Global Offset Table' in Chapter 5 of the processor supplement 1665 for more information. 1666 .IA_64.archext 1667 1668 This section holds product-specific extension bits. The link 1669 editor will perform a logical "or" of the extension bits of 1670 each object when creating an executable so that it creates 1671 only a single .IA_64.archext section in the executable. 1672 .IA_64.pltoff 1673 1674 This section holds local function descriptor entries. 1675 .IA_64.unwind 1676 1677 This section holds the unwind function table. The contents are 1678 described in the Intel (r) Itanium (tm) Processor Specific 1679 ABI. 1680 .IA_64.unwind_info 1681 1682 This section holds stack unwind and and exception handling 1683 information. The exception handling information is programming 1684 language specific, and is unspecified. 1685 .plt 1686 1687 This section holds the Procedure Linkage Table. 1688 .sbss 1689 1690 This section holds uninitialized data that contribute to the 1691 program''s memory image. Data objects contained in this 1692 section are recommended to be eight bytes or less in size. The 1693 system initializes the data with zeroes when the program 1694 begins to run. The section occupies no file space, as 1695 indicated by the section type SHT_NOBITS. The .sbss section is 1696 placed so it may be accessed using short direct addressing (22 1697 bit offset from gp). 1698 .sdata 1699 1700 This section and the .sdata1 section hold initialized data 1701 that contribute to the program''s memory image. Data objects 1702 contained in this section are recommended to be eight bytes or 1703 less in size. The .sdata and .sdata1 sections are placed so 1704 they may be accessed using short direct addressing (22 bit 1705 offset from gp). 1706 .sdata1 1707 1708 See .sdata. 1709 _________________________________________________________ 1710 1711 9.3.2. Linux Special Sections 1712 1713 The following Linux IA-64 specific sections are defined here. 1714 1715 Table 9-3. Additional Special Sections 1716 Name Type Attributes 1717 .opd SHT_PROGBITS SHF_ALLOC 1718 .rela.dyn SHT_RELA SHF_ALLOC 1719 .rela.IA_64.pltoff SHT_RELA SHF_ALLOC 1720 1721 .opd 1722 1723 This section holds function descriptors 1724 .rela.dyn 1725 1726 This section holds relocation information, as described in 1727 `Relocation'. These relocations are applied to the .dyn 1728 section. 1729 .rela.IA_64.pltoff 1730 1731 This section holds relocation information, as described in 1732 `Relocation'. These relocations are applied to the 1733 .IA_64.pltoff section. 1734 _________________________________________________________ 1735 1736 9.3.3. Section Types 1737 1738 Section Types are described in the Intel® Itanium(TM) 1739 Processor-specific Application Binary Interface, Chapter 4.2. 1740 LSB conforming implementations are not required to use any 1741 sections in the range from SHT_IA_64_LOPSREG to 1742 SHT_IA_64_HIPSREG. Additionally, LSB conforming 1743 implementations are not required to support the 1744 SHT_IA_64_PRIORITY_INIT section, beyond the gABI requirements 1745 for the handling of unrecognized section types, linking them 1746 into a contiguous section in the object file created by the 1747 static linker. 1748 _________________________________________________________ 1749 1750 9.3.4. Section Attribute Flags 1751 1752 LSB-conforming implementations shall support the section 1753 attribute flags specified in Intel® Itanium(TM) 1754 Processor-specific Application Binary Interface, Chapter 1755 4.2.2. 1756 _________________________________________________________ 1757 1758 9.3.5. Special Section Types 1759 1760 The special section types SHT_IA64_EXT and SHT_IA64_UNWIND are 1761 defined in Intel® Itanium(TM) Processor-specific Application 1762 Binary Interface, Chapter 4.2.1. 1763 _________________________________________________________ 1764 1765 9.4. Symbol Table 1766 1767 If an executable file contains a reference to a function 1768 defined in one of its associated shared objects, the symbol 1769 table section for that file shall contain an entry for that 1770 symbol. The st_shndx member of that symbol table entry 1771 contains SHN_UNDEF. This signals to the dynamic linker that 1772 the symbol definition for that function is not contained in 1773 the executable file itself. If that symbol has been allocated 1774 a procedure linkage table entry in the executable file, and 1775 the st_value member for that symbol table entry is non-zero, 1776 the value shall contain the virtual address of the first 1777 instruction of that procedure linkage table entry. Otherwise, 1778 the st_value member contains zero. This procedure linkage 1779 table entry address is used by the dynamic linker in resolving 1780 references to the address of the function. 1781 _________________________________________________________ 1782 1783 9.5. Relocation 1784 1785 9.5.1. Relocation Types 1786 1787 LSB-conforming systems shall support the relocation types 1788 described in Intel® Itanium(TM) Processor-specific Application 1789 Binary Interface, Chapter 4.3. 1790 _________________________________________________________ 1791 1792 Chapter 10. Program Loading and Dynamic Linking 1793 1794 10.1. Introduction 1795 1796 LSB-conforming implementations shall support the object file 1797 information and system actions that create running programs as 1798 specified in the System V ABI, Intel® Itanium(TM) 1799 Processor-specific Application Binary Interface and as 1800 supplemented by the Linux Standard Base Specification and this 1801 document. 1802 _________________________________________________________ 1803 1804 10.2. Program Header 1805 1806 The program header shall be as defined in the Intel® 1807 Itanium(TM) Processor-specific Application Binary Interface, 1808 Chapter 5. 1809 _________________________________________________________ 1810 1811 10.2.1. Types 1812 1813 See Intel® Itanium(TM) Processor-specific Application Binary 1814 Interface, Chapter 5.1. 1815 _________________________________________________________ 1816 1817 10.2.2. Flags 1818 1819 See Intel® Itanium(TM) Processor-specific Application Binary 1820 Interface, Chapter 5.1. 1821 _________________________________________________________ 1822 1823 10.3. Program Loading 1824 1825 See Intel® Itanium(TM) Processor-specific Application Binary 1826 Interface, Chapter 5.2. 1827 _________________________________________________________ 1828 1829 10.4. Dynamic Linking 1830 1831 See Intel® Itanium(TM) Processor-specific Application Binary 1832 Interface, Chapter 5.3. 1833 _________________________________________________________ 1834 1835 10.4.1. Dynamic Entries 1836 1837 10.4.1.1. ELF Dynamic Entries 1838 1839 The following dynamic entries are defined in the Intel® 1840 Itanium(TM) Processor-specific Application Binary Interface, 1841 Chapter 5.3.2. 1842 1843 DT_PLTGOT 1844 1845 This entry's d_ptr member gives the address of the first byte 1846 in the procedure linkage table 1847 _________________________________________________________ 1848 1849 10.4.1.2. Additional Dynamic Entries 1850 1851 The following dynamic entries are defined here. 1852 1853 DT_RELACOUNT 1854 1855 The number of relative relocations in .rela.dyn 1856 _________________________________________________________ 1857 1858 10.4.2. Global Offset Table 1859 1860 See Intel® Itanium(TM) Processor-specific Application Binary 1861 Interface, Chapter 5.3.4. 1862 _________________________________________________________ 1863 1864 10.4.3. Shared Object Dependencies 1865 1866 See Intel® Itanium(TM) Processor-specific Application Binary 1867 Interface, Chapter 5.3.3. 1868 _________________________________________________________ 1869 1870 10.4.4. Function Addresses 1871 1872 See Intel® Itanium(TM) Processor-specific Application Binary 1873 Interface, Chapter 5.3.5. 1874 _________________________________________________________ 1875 1876 10.4.5. Procedure Linkage Table 1877 1878 See Intel® Itanium(TM) Processor-specific Application Binary 1879 Interface, Chapter 5.3.6. 1880 _________________________________________________________ 1881 1882 10.4.6. Initialization and Termination Functions 1883 1884 See Intel® Itanium(TM) Processor-specific Application Binary 1885 Interface, Chapter 5.3.7. 1886 1887 III. Base Libraries 1888 1889 Table of Contents 1890 11. Libraries 1891 1892 11.1. Program Interpreter/Dynamic Linker 1893 11.2. Interfaces for libc 1894 1895 11.2.1. RPC 1896 11.2.2. System Calls 1897 11.2.3. Standard I/O 1898 11.2.4. Signal Handling 1899 11.2.5. Localization Functions 1900 11.2.6. Socket Interface 1901 11.2.7. Wide Characters 1902 11.2.8. String Functions 1903 11.2.9. IPC Functions 1904 11.2.10. Regular Expressions 1905 11.2.11. Character Type Functions 1906 11.2.12. Time Manipulation 1907 11.2.13. Terminal Interface Functions 1908 11.2.14. System Database Interface 1909 11.2.15. Language Support 1910 11.2.16. Large File Support 1911 11.2.17. Standard Library 1912 1913 11.3. Data Definitions for libc 1914 1915 11.3.1. ctype.h 1916 11.3.2. dirent.h 1917 11.3.3. errno.h 1918 11.3.4. fcntl.h 1919 11.3.5. fnmatch.h 1920 11.3.6. ftw.h 1921 11.3.7. getopt.h 1922 11.3.8. glob.h 1923 11.3.9. iconv.h 1924 11.3.10. inttypes.h 1925 11.3.11. langinfo.h 1926 11.3.12. limits.h 1927 11.3.13. locale.h 1928 11.3.14. net/if.h 1929 11.3.15. netdb.h 1930 11.3.16. netinet/in.h 1931 11.3.17. netinet/ip.h 1932 11.3.18. netinet/tcp.h 1933 11.3.19. netinet/udp.h 1934 11.3.20. nl_types.h 1935 11.3.21. pwd.h 1936 11.3.22. regex.h 1937 11.3.23. rpc/auth.h 1938 11.3.24. rpc/clnt.h 1939 11.3.25. rpc/rpc_msg.h 1940 11.3.26. rpc/svc.h 1941 11.3.27. rpc/types.h 1942 11.3.28. rpc/xdr.h 1943 11.3.29. sched.h 1944 11.3.30. search.h 1945 11.3.31. setjmp.h 1946 11.3.32. signal.h 1947 11.3.33. stddef.h 1948 11.3.34. stdio.h 1949 11.3.35. stdlib.h 1950 11.3.36. sys/file.h 1951 11.3.37. sys/ioctl.h 1952 11.3.38. sys/ipc.h 1953 11.3.39. sys/mman.h 1954 11.3.40. sys/msg.h 1955 11.3.41. sys/param.h 1956 11.3.42. sys/poll.h 1957 11.3.43. sys/resource.h 1958 11.3.44. sys/sem.h 1959 11.3.45. sys/shm.h 1960 11.3.46. sys/socket.h 1961 11.3.47. sys/stat.h 1962 11.3.48. sys/statfs.h 1963 11.3.49. sys/statvfs.h 1964 11.3.50. sys/time.h 1965 11.3.51. sys/timeb.h 1966 11.3.52. sys/times.h 1967 11.3.53. sys/types.h 1968 11.3.54. sys/un.h 1969 11.3.55. sys/utsname.h 1970 11.3.56. sys/wait.h 1971 11.3.57. syslog.h 1972 11.3.58. termios.h 1973 11.3.59. ucontext.h 1974 11.3.60. ulimit.h 1975 11.3.61. unistd.h 1976 11.3.62. utime.h 1977 11.3.63. utmp.h 1978 11.3.64. utmpx.h 1979 11.3.65. wctype.h 1980 11.3.66. wordexp.h 1981 1982 11.4. Interfaces for libm 1983 1984 11.4.1. Math 1985 1986 11.5. Data Definitions for libm 1987 1988 11.5.1. complex.h 1989 11.5.2. fenv.h 1990 11.5.3. math.h 1991 1992 11.6. Interface Definitions for libm 1993 1994 __fpclassifyl -- Classify real floating type 1995 1996 11.7. Interfaces for libpthread 1997 1998 11.7.1. Realtime Threads 1999 11.7.2. Advanced Realtime Threads 2000 11.7.3. Posix Threads 2001 11.7.4. Thread aware versions of libc interfaces 2002 2003 11.8. Data Definitions for libpthread 2004 2005 11.8.1. pthread.h 2006 11.8.2. semaphore.h 2007 2008 11.9. Interfaces for libgcc_s 2009 2010 11.9.1. Unwind Library 2011 2012 11.10. Data Definitions for libgcc_s 2013 2014 11.10.1. unwind.h 2015 2016 11.11. Interface Definitions for libgcc_s 2017 2018 _Unwind_DeleteException -- private C++ error 2019 handling method 2020 2021 _Unwind_ForcedUnwind -- private C++ error handling 2022 method 2023 2024 _Unwind_GetGR -- private C++ error handling method 2025 _Unwind_GetIP -- private C++ error handling method 2026 _Unwind_GetLanguageSpecificData -- private C++ 2027 error handling method 2028 2029 _Unwind_GetRegionStart -- private C++ error 2030 handling method 2031 2032 _Unwind_RaiseException -- private C++ error 2033 handling method 2034 2035 _Unwind_Resume -- private C++ error handling method 2036 _Unwind_SetGR -- private C++ error handling method 2037 _Unwind_SetIP -- private C++ error handling method 2038 2039 11.12. Interfaces for libdl 2040 2041 11.12.1. Dynamic Loader 2042 2043 11.13. Data Definitions for libdl 2044 2045 11.13.1. dlfcn.h 2046 2047 11.14. Interfaces for libcrypt 2048 2049 11.14.1. Encryption 2050 _________________________________________________________ 2051 2052 Chapter 11. Libraries 2053 2054 An LSB-conforming implementation shall support base libraries 2055 which provide interfaces for accessing the operating system, 2056 processor and other hardware in the system. 2057 2058 Only those interfaces that are unique to the Itanium(TM) 2059 platform are defined here. This section should be used in 2060 conjunction with the corresponding section in the Linux 2061 Standard Base Specification. 2062 _________________________________________________________ 2063 2064 11.1. Program Interpreter/Dynamic Linker 2065 2066 The Program Interpreter shall be /lib/ld-lsb-ia64.so.3. 2067 _________________________________________________________ 2068 2069 11.2. Interfaces for libc 2070 2071 Table 11-1 defines the library name and shared object name for 2072 the libc library 2073 2074 Table 11-1. libc Definition 2075 Library: libc 2076 SONAME: libc.so.6.1 2077 2078 The behavior of the interfaces in this library is specified by 2079 the following specifications: 2080 2081 [LFS] Large File Support 2082 [LSB] ISO/IEC 23360 Part 1 2083 [SUSv2] SUSv2 2084 [SUSv3] ISO POSIX (2003) 2085 [SVID.3] SVID Issue 3 2086 [SVID.4] SVID Issue 4 2087 _________________________________________________________ 2088 2089 11.2.1. RPC 2090 _________________________________________________________ 2091 2092 11.2.1.1. Interfaces for RPC 2093 2094 An LSB conforming implementation shall provide the 2095 architecture specific functions for RPC specified in Table 2096 11-2, with the full mandatory functionality as described in 2097 the referenced underlying specification. 2098 2099 Table 11-2. libc - RPC Function Interfaces 2100 authnone_create(GLIBC_2.2) [SVID.4] clnt_create(GLIBC_2.2) 2101 [SVID.4] clnt_pcreateerror(GLIBC_2.2) [SVID.4] 2102 clnt_perrno(GLIBC_2.2) [SVID.4] 2103 clnt_perror(GLIBC_2.2) [SVID.4] clnt_spcreateerror(GLIBC_2.2) 2104 [SVID.4] clnt_sperrno(GLIBC_2.2) [SVID.4] 2105 clnt_sperror(GLIBC_2.2) [SVID.4] 2106 key_decryptsession(GLIBC_2.2) [SVID.3] pmap_getport(GLIBC_2.2) 2107 [LSB] pmap_set(GLIBC_2.2) [LSB] pmap_unset(GLIBC_2.2) [LSB] 2108 svc_getreqset(GLIBC_2.2) [SVID.3] svc_register(GLIBC_2.2) 2109 [LSB] svc_run(GLIBC_2.2) [LSB] svc_sendreply(GLIBC_2.2) [LSB] 2110 svcerr_auth(GLIBC_2.2) [SVID.3] svcerr_decode(GLIBC_2.2) 2111 [SVID.3] svcerr_noproc(GLIBC_2.2) [SVID.3] 2112 svcerr_noprog(GLIBC_2.2) [SVID.3] 2113 svcerr_progvers(GLIBC_2.2) [SVID.3] 2114 svcerr_systemerr(GLIBC_2.2) [SVID.3] 2115 svcerr_weakauth(GLIBC_2.2) [SVID.3] svctcp_create(GLIBC_2.2) 2116 [LSB] 2117 svcudp_create(GLIBC_2.2) [LSB] xdr_accepted_reply(GLIBC_2.2) 2118 [SVID.3] xdr_array(GLIBC_2.2) [SVID.3] xdr_bool(GLIBC_2.2) 2119 [SVID.3] 2120 xdr_bytes(GLIBC_2.2) [SVID.3] xdr_callhdr(GLIBC_2.2) [SVID.3] 2121 xdr_callmsg(GLIBC_2.2) [SVID.3] xdr_char(GLIBC_2.2) [SVID.3] 2122 xdr_double(GLIBC_2.2) [SVID.3] xdr_enum(GLIBC_2.2) [SVID.3] 2123 xdr_float(GLIBC_2.2) [SVID.3] xdr_free(GLIBC_2.2) [SVID.3] 2124 xdr_int(GLIBC_2.2) [SVID.3] xdr_long(GLIBC_2.2) [SVID.3] 2125 xdr_opaque(GLIBC_2.2) [SVID.3] xdr_opaque_auth(GLIBC_2.2) 2126 [SVID.3] 2127 xdr_pointer(GLIBC_2.2) [SVID.3] xdr_reference(GLIBC_2.2) 2128 [SVID.3] xdr_rejected_reply(GLIBC_2.2) [SVID.3] 2129 xdr_replymsg(GLIBC_2.2) [SVID.3] 2130 xdr_short(GLIBC_2.2) [SVID.3] xdr_string(GLIBC_2.2) [SVID.3] 2131 xdr_u_char(GLIBC_2.2) [SVID.3] xdr_u_int(GLIBC_2.2) [LSB] 2132 xdr_u_long(GLIBC_2.2) [SVID.3] xdr_u_short(GLIBC_2.2) [SVID.3] 2133 xdr_union(GLIBC_2.2) [SVID.3] xdr_vector(GLIBC_2.2) [SVID.3] 2134 xdr_void(GLIBC_2.2) [SVID.3] xdr_wrapstring(GLIBC_2.2) 2135 [SVID.3] xdrmem_create(GLIBC_2.2) [SVID.3] 2136 xdrrec_create(GLIBC_2.2) [SVID.3] 2137 xdrrec_eof(GLIBC_2.2) [SVID.3] 2138 _________________________________________________________ 2139 2140 11.2.2. System Calls 2141 _________________________________________________________ 2142 2143 11.2.2.1. Interfaces for System Calls 2144 2145 An LSB conforming implementation shall provide the 2146 architecture specific functions for System Calls specified in 2147 Table 11-3, with the full mandatory functionality as described 2148 in the referenced underlying specification. 2149 2150 Table 11-3. libc - System Calls Function Interfaces 2151 __fxstat(GLIBC_2.2) [LSB] __getpgid(GLIBC_2.2) [LSB] 2152 __lxstat(GLIBC_2.2) [LSB] __xmknod(GLIBC_2.2) [LSB] 2153 __xstat(GLIBC_2.2) [LSB] access(GLIBC_2.2) [SUSv3] 2154 acct(GLIBC_2.2) [LSB] alarm(GLIBC_2.2) [SUSv3] 2155 brk(GLIBC_2.2) [SUSv2] chdir(GLIBC_2.2) [SUSv3] 2156 chmod(GLIBC_2.2) [SUSv3] chown(GLIBC_2.2) [SUSv3] 2157 chroot(GLIBC_2.2) [SUSv2] clock(GLIBC_2.2) [SUSv3] 2158 close(GLIBC_2.2) [SUSv3] closedir(GLIBC_2.2) [SUSv3] 2159 creat(GLIBC_2.2) [SUSv3] dup(GLIBC_2.2) [SUSv3] 2160 dup2(GLIBC_2.2) [SUSv3] execl(GLIBC_2.2) [SUSv3] 2161 execle(GLIBC_2.2) [SUSv3] execlp(GLIBC_2.2) [SUSv3] 2162 execv(GLIBC_2.2) [SUSv3] execve(GLIBC_2.2) [SUSv3] 2163 execvp(GLIBC_2.2) [SUSv3] exit(GLIBC_2.2) [SUSv3] 2164 fchdir(GLIBC_2.2) [SUSv3] fchmod(GLIBC_2.2) [SUSv3] 2165 fchown(GLIBC_2.2) [SUSv3] fcntl(GLIBC_2.2) [LSB] 2166 fdatasync(GLIBC_2.2) [SUSv3] flock(GLIBC_2.2) [LSB] 2167 fork(GLIBC_2.2) [SUSv3] fstatfs(GLIBC_2.2) [LSB] 2168 fstatvfs(GLIBC_2.2) [SUSv3] fsync(GLIBC_2.2) [SUSv3] 2169 ftime(GLIBC_2.2) [SUSv3] ftruncate(GLIBC_2.2) [SUSv3] 2170 getcontext(GLIBC_2.2) [SUSv3] getegid(GLIBC_2.2) [SUSv3] 2171 geteuid(GLIBC_2.2) [SUSv3] getgid(GLIBC_2.2) [SUSv3] 2172 getgroups(GLIBC_2.2) [SUSv3] getitimer(GLIBC_2.2) [SUSv3] 2173 getloadavg(GLIBC_2.2) [LSB] getpagesize(GLIBC_2.2) [SUSv2] 2174 getpgid(GLIBC_2.2) [SUSv3] getpgrp(GLIBC_2.2) [SUSv3] 2175 getpid(GLIBC_2.2) [SUSv3] getppid(GLIBC_2.2) [SUSv3] 2176 getpriority(GLIBC_2.2) [SUSv3] getrlimit(GLIBC_2.2) [SUSv3] 2177 getrusage(GLIBC_2.2) [SUSv3] getsid(GLIBC_2.2) [SUSv3] 2178 getuid(GLIBC_2.2) [SUSv3] getwd(GLIBC_2.2) [SUSv3] 2179 initgroups(GLIBC_2.2) [LSB] ioctl(GLIBC_2.2) [LSB] 2180 kill(GLIBC_2.2) [LSB] killpg(GLIBC_2.2) [SUSv3] 2181 lchown(GLIBC_2.2) [SUSv3] link(GLIBC_2.2) [LSB] 2182 lockf(GLIBC_2.2) [SUSv3] lseek(GLIBC_2.2) [SUSv3] 2183 mkdir(GLIBC_2.2) [SUSv3] mkfifo(GLIBC_2.2) [SUSv3] 2184 mlock(GLIBC_2.2) [SUSv3] mlockall(GLIBC_2.2) [SUSv3] 2185 mmap(GLIBC_2.2) [SUSv3] mprotect(GLIBC_2.2) [SUSv3] 2186 msync(GLIBC_2.2) [SUSv3] munlock(GLIBC_2.2) [SUSv3] 2187 munlockall(GLIBC_2.2) [SUSv3] munmap(GLIBC_2.2) [SUSv3] 2188 nanosleep(GLIBC_2.2) [SUSv3] nice(GLIBC_2.2) [SUSv3] 2189 open(GLIBC_2.2) [SUSv3] opendir(GLIBC_2.2) [SUSv3] 2190 pathconf(GLIBC_2.2) [SUSv3] pause(GLIBC_2.2) [SUSv3] 2191 pipe(GLIBC_2.2) [SUSv3] poll(GLIBC_2.2) [SUSv3] 2192 read(GLIBC_2.2) [SUSv3] readdir(GLIBC_2.2) [SUSv3] 2193 readdir_r(GLIBC_2.2) [SUSv3] readlink(GLIBC_2.2) [SUSv3] 2194 readv(GLIBC_2.2) [SUSv3] rename(GLIBC_2.2) [SUSv3] 2195 rmdir(GLIBC_2.2) [SUSv3] sbrk(GLIBC_2.2) [SUSv2] 2196 sched_get_priority_max(GLIBC_2.2) [SUSv3] 2197 sched_get_priority_min(GLIBC_2.2) [SUSv3] 2198 sched_getparam(GLIBC_2.2) [SUSv3] 2199 sched_getscheduler(GLIBC_2.2) [SUSv3] 2200 sched_rr_get_interval(GLIBC_2.2) [SUSv3] 2201 sched_setparam(GLIBC_2.2) [SUSv3] 2202 sched_setscheduler(GLIBC_2.2) [SUSv3] sched_yield(GLIBC_2.2) 2203 [SUSv3] select(GLIBC_2.2) [SUSv3] setcontext(GLIBC_2.2) 2204 [SUSv3] 2205 setegid(GLIBC_2.2) [SUSv3] seteuid(GLIBC_2.2) [SUSv3] 2206 setgid(GLIBC_2.2) [SUSv3] setitimer(GLIBC_2.2) [SUSv3] 2207 setpgid(GLIBC_2.2) [SUSv3] setpgrp(GLIBC_2.2) [SUSv3] 2208 setpriority(GLIBC_2.2) [SUSv3] setregid(GLIBC_2.2) [SUSv3] 2209 setreuid(GLIBC_2.2) [SUSv3] setrlimit(GLIBC_2.2) [SUSv3] 2210 setrlimit64(GLIBC_2.2) [LFS] setsid(GLIBC_2.2) [SUSv3] 2211 setuid(GLIBC_2.2) [SUSv3] sleep(GLIBC_2.2) [SUSv3] 2212 statfs(GLIBC_2.2) [LSB] statvfs(GLIBC_2.2) [SUSv3] 2213 stime(GLIBC_2.2) [LSB] symlink(GLIBC_2.2) [SUSv3] 2214 sync(GLIBC_2.2) [SUSv3] sysconf(GLIBC_2.2) [SUSv3] 2215 time(GLIBC_2.2) [SUSv3] times(GLIBC_2.2) [SUSv3] 2216 truncate(GLIBC_2.2) [SUSv3] ulimit(GLIBC_2.2) [SUSv3] 2217 umask(GLIBC_2.2) [SUSv3] uname(GLIBC_2.2) [SUSv3] 2218 unlink(GLIBC_2.2) [LSB] utime(GLIBC_2.2) [SUSv3] 2219 utimes(GLIBC_2.2) [SUSv3] vfork(GLIBC_2.2) [SUSv3] 2220 wait(GLIBC_2.2) [SUSv3] wait4(GLIBC_2.2) [LSB] 2221 waitpid(GLIBC_2.2) [LSB] write(GLIBC_2.2) [SUSv3] 2222 writev(GLIBC_2.2) [SUSv3] 2223 _________________________________________________________ 2224 2225 11.2.3. Standard I/O 2226 _________________________________________________________ 2227 2228 11.2.3.1. Interfaces for Standard I/O 2229 2230 An LSB conforming implementation shall provide the 2231 architecture specific functions for Standard I/O specified in 2232 Table 11-4, with the full mandatory functionality as described 2233 in the referenced underlying specification. 2234 2235 Table 11-4. libc - Standard I/O Function Interfaces 2236 _IO_feof(GLIBC_2.2) [LSB] _IO_getc(GLIBC_2.2) [LSB] 2237 _IO_putc(GLIBC_2.2) [LSB] _IO_puts(GLIBC_2.2) [LSB] 2238 asprintf(GLIBC_2.2) [LSB] clearerr(GLIBC_2.2) [SUSv3] 2239 ctermid(GLIBC_2.2) [SUSv3] fclose(GLIBC_2.2) [SUSv3] 2240 fdopen(GLIBC_2.2) [SUSv3] feof(GLIBC_2.2) [SUSv3] 2241 ferror(GLIBC_2.2) [SUSv3] fflush(GLIBC_2.2) [SUSv3] 2242 fflush_unlocked(GLIBC_2.2) [LSB] fgetc(GLIBC_2.2) [SUSv3] 2243 fgetpos(GLIBC_2.2) [SUSv3] fgets(GLIBC_2.2) [SUSv3] 2244 fgetwc_unlocked(GLIBC_2.2) [LSB] fileno(GLIBC_2.2) [SUSv3] 2245 flockfile(GLIBC_2.2) [SUSv3] fopen(GLIBC_2.2) [SUSv3] 2246 fprintf(GLIBC_2.2) [SUSv3] fputc(GLIBC_2.2) [SUSv3] 2247 fputs(GLIBC_2.2) [SUSv3] fread(GLIBC_2.2) [SUSv3] 2248 freopen(GLIBC_2.2) [SUSv3] fscanf(GLIBC_2.2) [LSB] 2249 fseek(GLIBC_2.2) [SUSv3] fseeko(GLIBC_2.2) [SUSv3] 2250 fsetpos(GLIBC_2.2) [SUSv3] ftell(GLIBC_2.2) [SUSv3] 2251 ftello(GLIBC_2.2) [SUSv3] fwrite(GLIBC_2.2) [SUSv3] 2252 getc(GLIBC_2.2) [SUSv3] getc_unlocked(GLIBC_2.2) [SUSv3] 2253 getchar(GLIBC_2.2) [SUSv3] getchar_unlocked(GLIBC_2.2) [SUSv3] 2254 getw(GLIBC_2.2) [SUSv2] pclose(GLIBC_2.2) [SUSv3] 2255 popen(GLIBC_2.2) [SUSv3] printf(GLIBC_2.2) [SUSv3] 2256 putc(GLIBC_2.2) [SUSv3] putc_unlocked(GLIBC_2.2) [SUSv3] 2257 putchar(GLIBC_2.2) [SUSv3] putchar_unlocked(GLIBC_2.2) [SUSv3] 2258 puts(GLIBC_2.2) [SUSv3] putw(GLIBC_2.2) [SUSv2] 2259 remove(GLIBC_2.2) [SUSv3] rewind(GLIBC_2.2) [SUSv3] 2260 rewinddir(GLIBC_2.2) [SUSv3] scanf(GLIBC_2.2) [LSB] 2261 seekdir(GLIBC_2.2) [SUSv3] setbuf(GLIBC_2.2) [SUSv3] 2262 setbuffer(GLIBC_2.2) [LSB] setvbuf(GLIBC_2.2) [SUSv3] 2263 snprintf(GLIBC_2.2) [SUSv3] sprintf(GLIBC_2.2) [SUSv3] 2264 sscanf(GLIBC_2.2) [LSB] telldir(GLIBC_2.2) [SUSv3] 2265 tempnam(GLIBC_2.2) [SUSv3] ungetc(GLIBC_2.2) [SUSv3] 2266 vasprintf(GLIBC_2.2) [LSB] vdprintf(GLIBC_2.2) [LSB] 2267 vfprintf(GLIBC_2.2) [SUSv3] vprintf(GLIBC_2.2) [SUSv3] 2268 vsnprintf(GLIBC_2.2) [SUSv3] vsprintf(GLIBC_2.2) [SUSv3] 2269 2270 An LSB conforming implementation shall provide the 2271 architecture specific data interfaces for Standard I/O 2272 specified in Table 11-5, with the full mandatory functionality 2273 as described in the referenced underlying specification. 2274 2275 Table 11-5. libc - Standard I/O Data Interfaces 2276 stderr(GLIBC_2.2) [SUSv3] stdin(GLIBC_2.2) [SUSv3] 2277 stdout(GLIBC_2.2) [SUSv3] 2278 _________________________________________________________ 2279 2280 11.2.4. Signal Handling 2281 _________________________________________________________ 2282 2283 11.2.4.1. Interfaces for Signal Handling 2284 2285 An LSB conforming implementation shall provide the 2286 architecture specific functions for Signal Handling specified 2287 in Table 11-6, with the full mandatory functionality as 2288 described in the referenced underlying specification. 2289 2290 Table 11-6. libc - Signal Handling Function Interfaces 2291 __libc_current_sigrtmax(GLIBC_2.2) [LSB] 2292 __libc_current_sigrtmin(GLIBC_2.2) [LSB] 2293 __sigsetjmp(GLIBC_2.2) [LSB] __sysv_signal(GLIBC_2.2) [LSB] 2294 bsd_signal(GLIBC_2.2) [SUSv3] psignal(GLIBC_2.2) [LSB] 2295 raise(GLIBC_2.2) [SUSv3] sigaction(GLIBC_2.2) [SUSv3] 2296 sigaddset(GLIBC_2.2) [SUSv3] sigaltstack(GLIBC_2.2) [SUSv3] 2297 sigandset(GLIBC_2.2) [LSB] sigdelset(GLIBC_2.2) [SUSv3] 2298 sigemptyset(GLIBC_2.2) [SUSv3] sigfillset(GLIBC_2.2) [SUSv3] 2299 sighold(GLIBC_2.2) [SUSv3] sigignore(GLIBC_2.2) [SUSv3] 2300 siginterrupt(GLIBC_2.2) [SUSv3] sigisemptyset(GLIBC_2.2) [LSB] 2301 sigismember(GLIBC_2.2) [SUSv3] siglongjmp(GLIBC_2.2) [SUSv3] 2302 signal(GLIBC_2.2) [SUSv3] sigorset(GLIBC_2.2) [LSB] 2303 sigpause(GLIBC_2.2) [SUSv3] sigpending(GLIBC_2.2) [SUSv3] 2304 sigprocmask(GLIBC_2.2) [SUSv3] sigqueue(GLIBC_2.2) [SUSv3] 2305 sigrelse(GLIBC_2.2) [SUSv3] sigreturn(GLIBC_2.2) [LSB] 2306 sigset(GLIBC_2.2) [SUSv3] sigsuspend(GLIBC_2.2) [SUSv3] 2307 sigtimedwait(GLIBC_2.2) [SUSv3] sigwait(GLIBC_2.2) [SUSv3] 2308 sigwaitinfo(GLIBC_2.2) [SUSv3] 2309 2310 An LSB conforming implementation shall provide the 2311 architecture specific data interfaces for Signal Handling 2312 specified in Table 11-7, with the full mandatory functionality 2313 as described in the referenced underlying specification. 2314 2315 Table 11-7. libc - Signal Handling Data Interfaces 2316 _sys_siglist(GLIBC_2.3.3) [LSB] 2317 _________________________________________________________ 2318 2319 11.2.5. Localization Functions 2320 _________________________________________________________ 2321 2322 11.2.5.1. Interfaces for Localization Functions 2323 2324 An LSB conforming implementation shall provide the 2325 architecture specific functions for Localization Functions 2326 specified in Table 11-8, with the full mandatory functionality 2327 as described in the referenced underlying specification. 2328 2329 Table 11-8. libc - Localization Functions Function Interfaces 2330 bind_textdomain_codeset(GLIBC_2.2) [LSB] 2331 bindtextdomain(GLIBC_2.2) [LSB] catclose(GLIBC_2.2) [SUSv3] 2332 catgets(GLIBC_2.2) [SUSv3] 2333 catopen(GLIBC_2.2) [SUSv3] dcgettext(GLIBC_2.2) [LSB] 2334 dcngettext(GLIBC_2.2) [LSB] dgettext(GLIBC_2.2) [LSB] 2335 dngettext(GLIBC_2.2) [LSB] gettext(GLIBC_2.2) [LSB] 2336 iconv(GLIBC_2.2) [SUSv3] iconv_close(GLIBC_2.2) [SUSv3] 2337 iconv_open(GLIBC_2.2) [SUSv3] localeconv(GLIBC_2.2) [SUSv3] 2338 ngettext(GLIBC_2.2) [LSB] nl_langinfo(GLIBC_2.2) [SUSv3] 2339 setlocale(GLIBC_2.2) [SUSv3] textdomain(GLIBC_2.2) [LSB] 2340 2341 An LSB conforming implementation shall provide the 2342 architecture specific data interfaces for Localization 2343 Functions specified in Table 11-9, with the full mandatory 2344 functionality as described in the referenced underlying 2345 specification. 2346 2347 Table 11-9. libc - Localization Functions Data Interfaces 2348 _nl_msg_cat_cntr(GLIBC_2.2) [LSB] 2349 _________________________________________________________ 2350 2351 11.2.6. Socket Interface 2352 _________________________________________________________ 2353 2354 11.2.6.1. Interfaces for Socket Interface 2355 2356 An LSB conforming implementation shall provide the 2357 architecture specific functions for Socket Interface specified 2358 in Table 11-10, with the full mandatory functionality as 2359 described in the referenced underlying specification. 2360 2361 Table 11-10. libc - Socket Interface Function Interfaces 2362 __h_errno_location(GLIBC_2.2) [LSB] accept(GLIBC_2.2) [SUSv3] 2363 bind(GLIBC_2.2) [SUSv3] bindresvport(GLIBC_2.2) [LSB] 2364 connect(GLIBC_2.2) [SUSv3] gethostid(GLIBC_2.2) [SUSv3] 2365 gethostname(GLIBC_2.2) [SUSv3] getpeername(GLIBC_2.2) [SUSv3] 2366 getsockname(GLIBC_2.2) [SUSv3] getsockopt(GLIBC_2.2) [LSB] 2367 if_freenameindex(GLIBC_2.2) [SUSv3] if_indextoname(GLIBC_2.2) 2368 [SUSv3] 2369 if_nameindex(GLIBC_2.2) [SUSv3] if_nametoindex(GLIBC_2.2) 2370 [SUSv3] listen(GLIBC_2.2) [SUSv3] recv(GLIBC_2.2) [SUSv3] 2371 recvfrom(GLIBC_2.2) [SUSv3] recvmsg(GLIBC_2.2) [SUSv3] 2372 send(GLIBC_2.2) [SUSv3] sendmsg(GLIBC_2.2) [SUSv3] 2373 sendto(GLIBC_2.2) [SUSv3] setsockopt(GLIBC_2.2) [LSB] 2374 shutdown(GLIBC_2.2) [SUSv3] sockatmark(GLIBC_2.2.4) [SUSv3] 2375 socket(GLIBC_2.2) [SUSv3] socketpair(GLIBC_2.2) [SUSv3] 2376 _________________________________________________________ 2377 2378 11.2.7. Wide Characters 2379 _________________________________________________________ 2380 2381 11.2.7.1. Interfaces for Wide Characters 2382 2383 An LSB conforming implementation shall provide the 2384 architecture specific functions for Wide Characters specified 2385 in Table 11-11, with the full mandatory functionality as 2386 described in the referenced underlying specification. 2387 2388 Table 11-11. libc - Wide Characters Function Interfaces 2389 __wcstod_internal(GLIBC_2.2) [LSB] 2390 __wcstof_internal(GLIBC_2.2) [LSB] 2391 __wcstol_internal(GLIBC_2.2) [LSB] 2392 __wcstold_internal(GLIBC_2.2) [LSB] 2393 __wcstoul_internal(GLIBC_2.2) [LSB] btowc(GLIBC_2.2) [SUSv3] 2394 fgetwc(GLIBC_2.2) [SUSv3] fgetws(GLIBC_2.2) [SUSv3] 2395 fputwc(GLIBC_2.2) [SUSv3] fputws(GLIBC_2.2) [SUSv3] 2396 fwide(GLIBC_2.2) [SUSv3] fwprintf(GLIBC_2.2) [SUSv3] 2397 fwscanf(GLIBC_2.2) [LSB] getwc(GLIBC_2.2) [SUSv3] 2398 getwchar(GLIBC_2.2) [SUSv3] mblen(GLIBC_2.2) [SUSv3] 2399 mbrlen(GLIBC_2.2) [SUSv3] mbrtowc(GLIBC_2.2) [SUSv3] 2400 mbsinit(GLIBC_2.2) [SUSv3] mbsnrtowcs(GLIBC_2.2) [LSB] 2401 mbsrtowcs(GLIBC_2.2) [SUSv3] mbstowcs(GLIBC_2.2) [SUSv3] 2402 mbtowc(GLIBC_2.2) [SUSv3] putwc(GLIBC_2.2) [SUSv3] 2403 putwchar(GLIBC_2.2) [SUSv3] swprintf(GLIBC_2.2) [SUSv3] 2404 swscanf(GLIBC_2.2) [LSB] towctrans(GLIBC_2.2) [SUSv3] 2405 towlower(GLIBC_2.2) [SUSv3] towupper(GLIBC_2.2) [SUSv3] 2406 ungetwc(GLIBC_2.2) [SUSv3] vfwprintf(GLIBC_2.2) [SUSv3] 2407 vfwscanf(GLIBC_2.2) [LSB] vswprintf(GLIBC_2.2) [SUSv3] 2408 vswscanf(GLIBC_2.2) [LSB] vwprintf(GLIBC_2.2) [SUSv3] 2409 vwscanf(GLIBC_2.2) [LSB] wcpcpy(GLIBC_2.2) [LSB] 2410 wcpncpy(GLIBC_2.2) [LSB] wcrtomb(GLIBC_2.2) [SUSv3] 2411 wcscasecmp(GLIBC_2.2) [LSB] wcscat(GLIBC_2.2) [SUSv3] 2412 wcschr(GLIBC_2.2) [SUSv3] wcscmp(GLIBC_2.2) [SUSv3] 2413 wcscoll(GLIBC_2.2) [SUSv3] wcscpy(GLIBC_2.2) [SUSv3] 2414 wcscspn(GLIBC_2.2) [SUSv3] wcsdup(GLIBC_2.2) [LSB] 2415 wcsftime(GLIBC_2.2) [SUSv3] wcslen(GLIBC_2.2) [SUSv3] 2416 wcsncasecmp(GLIBC_2.2) [LSB] wcsncat(GLIBC_2.2) [SUSv3] 2417 wcsncmp(GLIBC_2.2) [SUSv3] wcsncpy(GLIBC_2.2) [SUSv3] 2418 wcsnlen(GLIBC_2.2) [LSB] wcsnrtombs(GLIBC_2.2) [LSB] 2419 wcspbrk(GLIBC_2.2) [SUSv3] wcsrchr(GLIBC_2.2) [SUSv3] 2420 wcsrtombs(GLIBC_2.2) [SUSv3] wcsspn(GLIBC_2.2) [SUSv3] 2421 wcsstr(GLIBC_2.2) [SUSv3] wcstod(GLIBC_2.2) [SUSv3] 2422 wcstof(GLIBC_2.2) [SUSv3] wcstoimax(GLIBC_2.2) [SUSv3] 2423 wcstok(GLIBC_2.2) [SUSv3] wcstol(GLIBC_2.2) [SUSv3] 2424 wcstold(GLIBC_2.2) [SUSv3] wcstoll(GLIBC_2.2) [SUSv3] 2425 wcstombs(GLIBC_2.2) [SUSv3] wcstoq(GLIBC_2.2) [LSB] 2426 wcstoul(GLIBC_2.2) [SUSv3] wcstoull(GLIBC_2.2) [SUSv3] 2427 wcstoumax(GLIBC_2.2) [SUSv3] wcstouq(GLIBC_2.2) [LSB] 2428 wcswcs(GLIBC_2.2) [SUSv3] wcswidth(GLIBC_2.2) [SUSv3] 2429 wcsxfrm(GLIBC_2.2) [SUSv3] wctob(GLIBC_2.2) [SUSv3] 2430 wctomb(GLIBC_2.2) [SUSv3] wctrans(GLIBC_2.2) [SUSv3] 2431 wctype(GLIBC_2.2) [SUSv3] wcwidth(GLIBC_2.2) [SUSv3] 2432 wmemchr(GLIBC_2.2) [SUSv3] wmemcmp(GLIBC_2.2) [SUSv3] 2433 wmemcpy(GLIBC_2.2) [SUSv3] wmemmove(GLIBC_2.2) [SUSv3] 2434 wmemset(GLIBC_2.2) [SUSv3] wprintf(GLIBC_2.2) [SUSv3] 2435 wscanf(GLIBC_2.2) [LSB] 2436 _________________________________________________________ 2437 2438 11.2.8. String Functions 2439 _________________________________________________________ 2440 2441 11.2.8.1. Interfaces for String Functions 2442 2443 An LSB conforming implementation shall provide the 2444 architecture specific functions for String Functions specified 2445 in Table 11-12, with the full mandatory functionality as 2446 described in the referenced underlying specification. 2447 2448 Table 11-12. libc - String Functions Function Interfaces 2449 __mempcpy(GLIBC_2.2) [LSB] __rawmemchr(GLIBC_2.2) [LSB] 2450 __stpcpy(GLIBC_2.2) [LSB] __strdup(GLIBC_2.2) [LSB] 2451 __strtod_internal(GLIBC_2.2) [LSB] 2452 __strtof_internal(GLIBC_2.2) [LSB] __strtok_r(GLIBC_2.2) [LSB] 2453 __strtol_internal(GLIBC_2.2) [LSB] 2454 __strtold_internal(GLIBC_2.2) [LSB] 2455 __strtoll_internal(GLIBC_2.2) [LSB] 2456 __strtoul_internal(GLIBC_2.2) [LSB] 2457 __strtoull_internal(GLIBC_2.2) [LSB] 2458 bcmp(GLIBC_2.2) [SUSv3] bcopy(GLIBC_2.2) [SUSv3] 2459 bzero(GLIBC_2.2) [SUSv3] ffs(GLIBC_2.2) [SUSv3] 2460 index(GLIBC_2.2) [SUSv3] memccpy(GLIBC_2.2) [SUSv3] 2461 memchr(GLIBC_2.2) [SUSv3] memcmp(GLIBC_2.2) [SUSv3] 2462 memcpy(GLIBC_2.2) [SUSv3] memmove(GLIBC_2.2) [SUSv3] 2463 memrchr(GLIBC_2.2) [LSB] memset(GLIBC_2.2) [SUSv3] 2464 rindex(GLIBC_2.2) [SUSv3] stpcpy(GLIBC_2.2) [LSB] 2465 stpncpy(GLIBC_2.2) [LSB] strcasecmp(GLIBC_2.2) [SUSv3] 2466 strcasestr(GLIBC_2.2) [LSB] strcat(GLIBC_2.2) [SUSv3] 2467 strchr(GLIBC_2.2) [SUSv3] strcmp(GLIBC_2.2) [SUSv3] 2468 strcoll(GLIBC_2.2) [SUSv3] strcpy(GLIBC_2.2) [SUSv3] 2469 strcspn(GLIBC_2.2) [SUSv3] strdup(GLIBC_2.2) [SUSv3] 2470 strerror(GLIBC_2.2) [SUSv3] strerror_r(GLIBC_2.2) [LSB] 2471 strfmon(GLIBC_2.2) [SUSv3] strftime(GLIBC_2.2) [SUSv3] 2472 strlen(GLIBC_2.2) [SUSv3] strncasecmp(GLIBC_2.2) [SUSv3] 2473 strncat(GLIBC_2.2) [SUSv3] strncmp(GLIBC_2.2) [SUSv3] 2474 strncpy(GLIBC_2.2) [SUSv3] strndup(GLIBC_2.2) [LSB] 2475 strnlen(GLIBC_2.2) [LSB] strpbrk(GLIBC_2.2) [SUSv3] 2476 strptime(GLIBC_2.2) [LSB] strrchr(GLIBC_2.2) [SUSv3] 2477 strsep(GLIBC_2.2) [LSB] strsignal(GLIBC_2.2) [LSB] 2478 strspn(GLIBC_2.2) [SUSv3] strstr(GLIBC_2.2) [SUSv3] 2479 strtof(GLIBC_2.2) [SUSv3] strtoimax(GLIBC_2.2) [SUSv3] 2480 strtok(GLIBC_2.2) [SUSv3] strtok_r(GLIBC_2.2) [SUSv3] 2481 strtold(GLIBC_2.2) [SUSv3] strtoll(GLIBC_2.2) [SUSv3] 2482 strtoq(GLIBC_2.2) [LSB] strtoull(GLIBC_2.2) [SUSv3] 2483 strtoumax(GLIBC_2.2) [SUSv3] strtouq(GLIBC_2.2) [LSB] 2484 strxfrm(GLIBC_2.2) [SUSv3] swab(GLIBC_2.2) [SUSv3] 2485 _________________________________________________________ 2486 2487 11.2.9. IPC Functions 2488 _________________________________________________________ 2489 2490 11.2.9.1. Interfaces for IPC Functions 2491 2492 An LSB conforming implementation shall provide the 2493 architecture specific functions for IPC Functions specified in 2494 Table 11-13, with the full mandatory functionality as 2495 described in the referenced underlying specification. 2496 2497 Table 11-13. libc - IPC Functions Function Interfaces 2498 ftok(GLIBC_2.2) [SUSv3] msgctl(GLIBC_2.2) [SUSv3] 2499 msgget(GLIBC_2.2) [SUSv3] msgrcv(GLIBC_2.2) [SUSv3] 2500 msgsnd(GLIBC_2.2) [SUSv3] semctl(GLIBC_2.2) [SUSv3] 2501 semget(GLIBC_2.2) [SUSv3] semop(GLIBC_2.2) [SUSv3] 2502 shmat(GLIBC_2.2) [SUSv3] shmctl(GLIBC_2.2) [SUSv3] 2503 shmdt(GLIBC_2.2) [SUSv3] shmget(GLIBC_2.2) [SUSv3] 2504 _________________________________________________________ 2505 2506 11.2.10. Regular Expressions 2507 _________________________________________________________ 2508 2509 11.2.10.1. Interfaces for Regular Expressions 2510 2511 An LSB conforming implementation shall provide the 2512 architecture specific functions for Regular Expressions 2513 specified in Table 11-14, with the full mandatory 2514 functionality as described in the referenced underlying 2515 specification. 2516 2517 Table 11-14. libc - Regular Expressions Function Interfaces 2518 regcomp(GLIBC_2.2) [SUSv3] regerror(GLIBC_2.2) [SUSv3] 2519 regexec(GLIBC_2.3.4) [LSB] regfree(GLIBC_2.2) [SUSv3] 2520 _________________________________________________________ 2521 2522 11.2.11. Character Type Functions 2523 _________________________________________________________ 2524 2525 11.2.11.1. Interfaces for Character Type Functions 2526 2527 An LSB conforming implementation shall provide the 2528 architecture specific functions for Character Type Functions 2529 specified in Table 11-15, with the full mandatory 2530 functionality as described in the referenced underlying 2531 specification. 2532 2533 Table 11-15. libc - Character Type Functions Function 2534 Interfaces 2535 __ctype_get_mb_cur_max(GLIBC_2.2) [LSB] _tolower(GLIBC_2.2) 2536 [SUSv3] _toupper(GLIBC_2.2) [SUSv3] isalnum(GLIBC_2.2) [SUSv3] 2537 isalpha(GLIBC_2.2) [SUSv3] isascii(GLIBC_2.2) [SUSv3] 2538 iscntrl(GLIBC_2.2) [SUSv3] isdigit(GLIBC_2.2) [SUSv3] 2539 isgraph(GLIBC_2.2) [SUSv3] islower(GLIBC_2.2) [SUSv3] 2540 isprint(GLIBC_2.2) [SUSv3] ispunct(GLIBC_2.2) [SUSv3] 2541 isspace(GLIBC_2.2) [SUSv3] isupper(GLIBC_2.2) [SUSv3] 2542 iswalnum(GLIBC_2.2) [SUSv3] iswalpha(GLIBC_2.2) [SUSv3] 2543 iswblank(GLIBC_2.2) [SUSv3] iswcntrl(GLIBC_2.2) [SUSv3] 2544 iswctype(GLIBC_2.2) [SUSv3] iswdigit(GLIBC_2.2) [SUSv3] 2545 iswgraph(GLIBC_2.2) [SUSv3] iswlower(GLIBC_2.2) [SUSv3] 2546 iswprint(GLIBC_2.2) [SUSv3] iswpunct(GLIBC_2.2) [SUSv3] 2547 iswspace(GLIBC_2.2) [SUSv3] iswupper(GLIBC_2.2) [SUSv3] 2548 iswxdigit(GLIBC_2.2) [SUSv3] isxdigit(GLIBC_2.2) [SUSv3] 2549 toascii(GLIBC_2.2) [SUSv3] tolower(GLIBC_2.2) [SUSv3] 2550 toupper(GLIBC_2.2) [SUSv3] 2551 _________________________________________________________ 2552 2553 11.2.12. Time Manipulation 2554 _________________________________________________________ 2555 2556 11.2.12.1. Interfaces for Time Manipulation 2557 2558 An LSB conforming implementation shall provide the 2559 architecture specific functions for Time Manipulation 2560 specified in Table 11-16, with the full mandatory 2561 functionality as described in the referenced underlying 2562 specification. 2563 2564 Table 11-16. libc - Time Manipulation Function Interfaces 2565 adjtime(GLIBC_2.2) [LSB] asctime(GLIBC_2.2) [SUSv3] 2566 asctime_r(GLIBC_2.2) [SUSv3] ctime(GLIBC_2.2) [SUSv3] 2567 ctime_r(GLIBC_2.2) [SUSv3] difftime(GLIBC_2.2) [SUSv3] 2568 gmtime(GLIBC_2.2) [SUSv3] gmtime_r(GLIBC_2.2) [SUSv3] 2569 localtime(GLIBC_2.2) [SUSv3] localtime_r(GLIBC_2.2) [SUSv3] 2570 mktime(GLIBC_2.2) [SUSv3] tzset(GLIBC_2.2) [SUSv3] 2571 ualarm(GLIBC_2.2) [SUSv3] 2572 2573 An LSB conforming implementation shall provide the 2574 architecture specific data interfaces for Time Manipulation 2575 specified in Table 11-17, with the full mandatory 2576 functionality as described in the referenced underlying 2577 specification. 2578 2579 Table 11-17. libc - Time Manipulation Data Interfaces 2580 __daylight(GLIBC_2.2) [LSB] __timezone(GLIBC_2.2) [LSB] 2581 __tzname(GLIBC_2.2) [LSB] daylight(GLIBC_2.2) [SUSv3] 2582 timezone(GLIBC_2.2) [SUSv3] tzname(GLIBC_2.2) [SUSv3] 2583 _________________________________________________________ 2584 2585 11.2.13. Terminal Interface Functions 2586 _________________________________________________________ 2587 2588 11.2.13.1. Interfaces for Terminal Interface Functions 2589 2590 An LSB conforming implementation shall provide the 2591 architecture specific functions for Terminal Interface 2592 Functions specified in Table 11-18, with the full mandatory 2593 functionality as described in the referenced underlying 2594 specification. 2595 2596 Table 11-18. libc - Terminal Interface Functions Function 2597 Interfaces 2598 cfgetispeed(GLIBC_2.2) [SUSv3] cfgetospeed(GLIBC_2.2) [SUSv3] 2599 cfmakeraw(GLIBC_2.2) [LSB] cfsetispeed(GLIBC_2.2) [SUSv3] 2600 cfsetospeed(GLIBC_2.2) [SUSv3] cfsetspeed(GLIBC_2.2) [LSB] 2601 tcdrain(GLIBC_2.2) [SUSv3] tcflow(GLIBC_2.2) [SUSv3] 2602 tcflush(GLIBC_2.2) [SUSv3] tcgetattr(GLIBC_2.2) [SUSv3] 2603 tcgetpgrp(GLIBC_2.2) [SUSv3] tcgetsid(GLIBC_2.2) [SUSv3] 2604 tcsendbreak(GLIBC_2.2) [SUSv3] tcsetattr(GLIBC_2.2) [SUSv3] 2605 tcsetpgrp(GLIBC_2.2) [SUSv3] 2606 _________________________________________________________ 2607 2608 11.2.14. System Database Interface 2609 _________________________________________________________ 2610 2611 11.2.14.1. Interfaces for System Database Interface 2612 2613 An LSB conforming implementation shall provide the 2614 architecture specific functions for System Database Interface 2615 specified in Table 11-19, with the full mandatory 2616 functionality as described in the referenced underlying 2617 specification. 2618 2619 Table 11-19. libc - System Database Interface Function 2620 Interfaces 2621 endgrent(GLIBC_2.2) [SUSv3] endprotoent(GLIBC_2.2) [SUSv3] 2622 endpwent(GLIBC_2.2) [SUSv3] endservent(GLIBC_2.2) [SUSv3] 2623 endutent(GLIBC_2.2) [LSB] endutxent(GLIBC_2.2) [SUSv3] 2624 getgrent(GLIBC_2.2) [SUSv3] getgrgid(GLIBC_2.2) [SUSv3] 2625 getgrgid_r(GLIBC_2.2) [SUSv3] getgrnam(GLIBC_2.2) [SUSv3] 2626 getgrnam_r(GLIBC_2.2) [SUSv3] getgrouplist(GLIBC_2.2.4) [LSB] 2627 gethostbyaddr(GLIBC_2.2) [SUSv3] gethostbyname(GLIBC_2.2) 2628 [SUSv3] getprotobyname(GLIBC_2.2) [SUSv3] 2629 getprotobynumber(GLIBC_2.2) [SUSv3] 2630 getprotoent(GLIBC_2.2) [SUSv3] getpwent(GLIBC_2.2) [SUSv3] 2631 getpwnam(GLIBC_2.2) [SUSv3] getpwnam_r(GLIBC_2.2) [SUSv3] 2632 getpwuid(GLIBC_2.2) [SUSv3] getpwuid_r(GLIBC_2.2) [SUSv3] 2633 getservbyname(GLIBC_2.2) [SUSv3] getservbyport(GLIBC_2.2) 2634 [SUSv3] 2635 getservent(GLIBC_2.2) [SUSv3] getutent(GLIBC_2.2) [LSB] 2636 getutent_r(GLIBC_2.2) [LSB] getutxent(GLIBC_2.2) [SUSv3] 2637 getutxid(GLIBC_2.2) [SUSv3] getutxline(GLIBC_2.2) [SUSv3] 2638 pututxline(GLIBC_2.2) [SUSv3] setgrent(GLIBC_2.2) [SUSv3] 2639 setgroups(GLIBC_2.2) [LSB] setprotoent(GLIBC_2.2) [SUSv3] 2640 setpwent(GLIBC_2.2) [SUSv3] setservent(GLIBC_2.2) [SUSv3] 2641 setutent(GLIBC_2.2) [LSB] setutxent(GLIBC_2.2) [SUSv3] 2642 utmpname(GLIBC_2.2) [LSB] 2643 _________________________________________________________ 2644 2645 11.2.15. Language Support 2646 _________________________________________________________ 2647 2648 11.2.15.1. Interfaces for Language Support 2649 2650 An LSB conforming implementation shall provide the 2651 architecture specific functions for Language Support specified 2652 in Table 11-20, with the full mandatory functionality as 2653 described in the referenced underlying specification. 2654 2655 Table 11-20. libc - Language Support Function Interfaces 2656 __libc_start_main(GLIBC_2.2) [LSB] 2657 _________________________________________________________ 2658 2659 11.2.16. Large File Support 2660 _________________________________________________________ 2661 2662 11.2.16.1. Interfaces for Large File Support 2663 2664 An LSB conforming implementation shall provide the 2665 architecture specific functions for Large File Support 2666 specified in Table 11-21, with the full mandatory 2667 functionality as described in the referenced underlying 2668 specification. 2669 2670 Table 11-21. libc - Large File Support Function Interfaces 2671 __fxstat64(GLIBC_2.2) [LSB] __lxstat64(GLIBC_2.2) [LSB] 2672 __xstat64(GLIBC_2.2) [LSB] creat64(GLIBC_2.2) [LFS] 2673 fgetpos64(GLIBC_2.2) [LFS] fopen64(GLIBC_2.2) [LFS] 2674 freopen64(GLIBC_2.2) [LFS] fseeko64(GLIBC_2.2) [LFS] 2675 fsetpos64(GLIBC_2.2) [LFS] fstatfs64(GLIBC_2.2) [LSB] 2676 fstatvfs64(GLIBC_2.2) [LFS] ftello64(GLIBC_2.2) [LFS] 2677 ftruncate64(GLIBC_2.2) [LFS] ftw64(GLIBC_2.2) [LFS] 2678 getrlimit64(GLIBC_2.2) [LFS] lockf64(GLIBC_2.2) [LFS] 2679 mkstemp64(GLIBC_2.2) [LFS] mmap64(GLIBC_2.2) [LFS] 2680 nftw64(GLIBC_2.3.3) [LFS] readdir64(GLIBC_2.2) [LFS] 2681 statfs64(GLIBC_2.2) [LSB] statvfs64(GLIBC_2.2) [LFS] 2682 tmpfile64(GLIBC_2.2) [LFS] truncate64(GLIBC_2.2) [LFS] 2683 _________________________________________________________ 2684 2685 11.2.17. Standard Library 2686 _________________________________________________________ 2687 2688 11.2.17.1. Interfaces for Standard Library 2689 2690 An LSB conforming implementation shall provide the 2691 architecture specific functions for Standard Library specified 2692 in Table 11-22, with the full mandatory functionality as 2693 described in the referenced underlying specification. 2694 2695 Table 11-22. libc - Standard Library Function Interfaces 2696 _Exit(GLIBC_2.2) [SUSv3] __assert_fail(GLIBC_2.2) [LSB] 2697 __cxa_atexit(GLIBC_2.2) [LSB] __errno_location(GLIBC_2.2) 2698 [LSB] 2699 __fpending(GLIBC_2.2) [LSB] __getpagesize(GLIBC_2.2) [LSB] 2700 __isinf(GLIBC_2.2) [LSB] __isinff(GLIBC_2.2) [LSB] 2701 __isinfl(GLIBC_2.2) [LSB] __isnan(GLIBC_2.2) [LSB] 2702 __isnanf(GLIBC_2.2) [LSB] __isnanl(GLIBC_2.2) [LSB] 2703 __sysconf(GLIBC_2.2) [LSB] _exit(GLIBC_2.2) [SUSv3] 2704 _longjmp(GLIBC_2.2) [SUSv3] _setjmp(GLIBC_2.2) [SUSv3] 2705 a64l(GLIBC_2.2) [SUSv3] abort(GLIBC_2.2) [SUSv3] 2706 abs(GLIBC_2.2) [SUSv3] atof(GLIBC_2.2) [SUSv3] 2707 atoi(GLIBC_2.2) [SUSv3] atol(GLIBC_2.2) [SUSv3] 2708 atoll(GLIBC_2.2) [SUSv3] basename(GLIBC_2.2) [SUSv3] 2709 bsearch(GLIBC_2.2) [SUSv3] calloc(GLIBC_2.2) [SUSv3] 2710 closelog(GLIBC_2.2) [SUSv3] confstr(GLIBC_2.2) [SUSv3] 2711 cuserid(GLIBC_2.2) [SUSv2] daemon(GLIBC_2.2) [LSB] 2712 dirname(GLIBC_2.2) [SUSv3] div(GLIBC_2.2) [SUSv3] 2713 drand48(GLIBC_2.2) [SUSv3] ecvt(GLIBC_2.2) [SUSv3] 2714 erand48(GLIBC_2.2) [SUSv3] err(GLIBC_2.2) [LSB] 2715 error(GLIBC_2.2) [LSB] errx(GLIBC_2.2) [LSB] fcvt(GLIBC_2.2) 2716 [SUSv3] fmtmsg(GLIBC_2.2) [SUSv3] 2717 fnmatch(GLIBC_2.2.3) [SUSv3] fpathconf(GLIBC_2.2) [SUSv3] 2718 free(GLIBC_2.2) [SUSv3] freeaddrinfo(GLIBC_2.2) [SUSv3] 2719 ftrylockfile(GLIBC_2.2) [SUSv3] ftw(GLIBC_2.2) [SUSv3] 2720 funlockfile(GLIBC_2.2) [SUSv3] gai_strerror(GLIBC_2.2) [SUSv3] 2721 gcvt(GLIBC_2.2) [SUSv3] getaddrinfo(GLIBC_2.2) [SUSv3] 2722 getcwd(GLIBC_2.2) [SUSv3] getdate(GLIBC_2.2) [SUSv3] 2723 getenv(GLIBC_2.2) [SUSv3] getlogin(GLIBC_2.2) [SUSv3] 2724 getlogin_r(GLIBC_2.2) [SUSv3] getnameinfo(GLIBC_2.2) [SUSv3] 2725 getopt(GLIBC_2.2) [LSB] getopt_long(GLIBC_2.2) [LSB] 2726 getopt_long_only(GLIBC_2.2) [LSB] getsubopt(GLIBC_2.2) [SUSv3] 2727 gettimeofday(GLIBC_2.2) [SUSv3] glob(GLIBC_2.2) [SUSv3] 2728 glob64(GLIBC_2.2) [LSB] globfree(GLIBC_2.2) [SUSv3] 2729 globfree64(GLIBC_2.2) [LSB] grantpt(GLIBC_2.2) [SUSv3] 2730 hcreate(GLIBC_2.2) [SUSv3] hdestroy(GLIBC_2.2) [SUSv3] 2731 hsearch(GLIBC_2.2) [SUSv3] htonl(GLIBC_2.2) [SUSv3] 2732 htons(GLIBC_2.2) [SUSv3] imaxabs(GLIBC_2.2) [SUSv3] 2733 imaxdiv(GLIBC_2.2) [SUSv3] inet_addr(GLIBC_2.2) [SUSv3] 2734 inet_ntoa(GLIBC_2.2) [SUSv3] inet_ntop(GLIBC_2.2) [SUSv3] 2735 inet_pton(GLIBC_2.2) [SUSv3] initstate(GLIBC_2.2) [SUSv3] 2736 insque(GLIBC_2.2) [SUSv3] isatty(GLIBC_2.2) [SUSv3] 2737 isblank(GLIBC_2.2) [SUSv3] jrand48(GLIBC_2.2) [SUSv3] 2738 l64a(GLIBC_2.2) [SUSv3] labs(GLIBC_2.2) [SUSv3] 2739 lcong48(GLIBC_2.2) [SUSv3] ldiv(GLIBC_2.2) [SUSv3] 2740 lfind(GLIBC_2.2) [SUSv3] llabs(GLIBC_2.2) [SUSv3] 2741 lldiv(GLIBC_2.2) [SUSv3] longjmp(GLIBC_2.2) [SUSv3] 2742 lrand48(GLIBC_2.2) [SUSv3] lsearch(GLIBC_2.2) [SUSv3] 2743 makecontext(GLIBC_2.2) [SUSv3] malloc(GLIBC_2.2) [SUSv3] 2744 memmem(GLIBC_2.2) [LSB] mkstemp(GLIBC_2.2) [SUSv3] 2745 mktemp(GLIBC_2.2) [SUSv3] mrand48(GLIBC_2.2) [SUSv3] 2746 nftw(GLIBC_2.3.3) [SUSv3] nrand48(GLIBC_2.2) [SUSv3] 2747 ntohl(GLIBC_2.2) [SUSv3] ntohs(GLIBC_2.2) [SUSv3] 2748 openlog(GLIBC_2.2) [SUSv3] perror(GLIBC_2.2) [SUSv3] 2749 posix_memalign(GLIBC_2.2) [SUSv3] posix_openpt(GLIBC_2.2.1) 2750 [SUSv3] ptsname(GLIBC_2.2) [SUSv3] putenv(GLIBC_2.2) [SUSv3] 2751 qsort(GLIBC_2.2) [SUSv3] rand(GLIBC_2.2) [SUSv3] 2752 rand_r(GLIBC_2.2) [SUSv3] random(GLIBC_2.2) [SUSv3] 2753 realloc(GLIBC_2.2) [SUSv3] realpath(GLIBC_2.3) [SUSv3] 2754 remque(GLIBC_2.2) [SUSv3] seed48(GLIBC_2.2) [SUSv3] 2755 setenv(GLIBC_2.2) [SUSv3] sethostname(GLIBC_2.2) [LSB] 2756 setlogmask(GLIBC_2.2) [SUSv3] setstate(GLIBC_2.2) [SUSv3] 2757 srand(GLIBC_2.2) [SUSv3] srand48(GLIBC_2.2) [SUSv3] 2758 srandom(GLIBC_2.2) [SUSv3] strtod(GLIBC_2.2) [SUSv3] 2759 strtol(GLIBC_2.2) [SUSv3] strtoul(GLIBC_2.2) [SUSv3] 2760 swapcontext(GLIBC_2.2) [SUSv3] syslog(GLIBC_2.2) [SUSv3] 2761 system(GLIBC_2.2) [LSB] tdelete(GLIBC_2.2) [SUSv3] 2762 tfind(GLIBC_2.2) [SUSv3] tmpfile(GLIBC_2.2) [SUSv3] 2763 tmpnam(GLIBC_2.2) [SUSv3] tsearch(GLIBC_2.2) [SUSv3] 2764 ttyname(GLIBC_2.2) [SUSv3] ttyname_r(GLIBC_2.2) [SUSv3] 2765 twalk(GLIBC_2.2) [SUSv3] unlockpt(GLIBC_2.2) [SUSv3] 2766 unsetenv(GLIBC_2.2) [SUSv3] usleep(GLIBC_2.2) [SUSv3] 2767 verrx(GLIBC_2.2) [LSB] vfscanf(GLIBC_2.2) [LSB] 2768 vscanf(GLIBC_2.2) [LSB] vsscanf(GLIBC_2.2) [LSB] 2769 vsyslog(GLIBC_2.2) [LSB] warn(GLIBC_2.2) [LSB] 2770 warnx(GLIBC_2.2) [LSB] wordexp(GLIBC_2.2.2) [SUSv3] 2771 wordfree(GLIBC_2.2) [SUSv3] 2772 2773 An LSB conforming implementation shall provide the 2774 architecture specific data interfaces for Standard Library 2775 specified in Table 11-23, with the full mandatory 2776 functionality as described in the referenced underlying 2777 specification. 2778 2779 Table 11-23. libc - Standard Library Data Interfaces 2780 __environ(GLIBC_2.2) [LSB] _environ(GLIBC_2.2) [LSB] 2781 _sys_errlist(GLIBC_2.3) [LSB] environ(GLIBC_2.2) [SUSv3] 2782 getdate_err(GLIBC_2.2) [SUSv3] optarg(GLIBC_2.2) [SUSv3] 2783 opterr(GLIBC_2.2) [SUSv3] optind(GLIBC_2.2) [SUSv3] 2784 optopt(GLIBC_2.2) [SUSv3] 2785 _________________________________________________________ 2786 2787 11.3. Data Definitions for libc 2788 2789 This section defines global identifiers and their values that 2790 are associated with interfaces contained in libc. These 2791 definitions are organized into groups that correspond to 2792 system headers. This convention is used as a convenience for 2793 the reader, and does not imply the existence of these headers, 2794 or their content. Where an interface is defined as requiring a 2795 particular system header file all of the data definitions for 2796 that system header file presented here shall be in effect. 2797 2798 This section gives data definitions to promote binary 2799 application portability, not to repeat source interface 2800 definitions available elsewhere. System providers and 2801 application developers should use this ABI to supplement - not 2802 to replace - source interface definition specifications. 2803 2804 This specification uses the ISO C (1999) C Language as the 2805 reference programming language, and data definitions are 2806 specified in ISO C format. The C language is used here as a 2807 convenient notation. Using a C language description of these 2808 data objects does not preclude their use by other programming 2809 languages. 2810 _________________________________________________________ 2811 2812 11.3.1. ctype.h 2813 2814 /* 2815 * This header is architecture neutral 2816 * Please refer to the generic specification for details 2817 */ 2818 _________________________________________________________ 2819 2820 11.3.2. dirent.h 2821 2822 /* 2823 * This header is architecture neutral 2824 * Please refer to the generic specification for details 2825 */ 2826 _________________________________________________________ 2827 2828 11.3.3. errno.h 2829 2830 #define EDEADLOCK EDEADLK 2831 _________________________________________________________ 2832 2833 11.3.4. fcntl.h 2834 2835 #define F_GETLK64 5 2836 #define F_SETLK64 6 2837 #define F_SETLKW64 7 2838 _________________________________________________________ 2839 2840 11.3.5. fnmatch.h 2841 2842 /* 2843 * This header is architecture neutral 2844 * Please refer to the generic specification for details 2845 */ 2846 _________________________________________________________ 2847 2848 11.3.6. ftw.h 2849 2850 /* 2851 * This header is architecture neutral 2852 * Please refer to the generic specification for details 2853 */ 2854 _________________________________________________________ 2855 2856 11.3.7. getopt.h 2857 2858 /* 2859 * This header is architecture neutral 2860 * Please refer to the generic specification for details 2861 */ 2862 _________________________________________________________ 2863 2864 11.3.8. glob.h 2865 2866 /* 2867 * This header is architecture neutral 2868 * Please refer to the generic specification for details 2869 */ 2870 _________________________________________________________ 2871 2872 11.3.9. iconv.h 2873 2874 /* 2875 * This header is architecture neutral 2876 * Please refer to the generic specification for details 2877 */ 2878 _________________________________________________________ 2879 2880 11.3.10. inttypes.h 2881 2882 typedef long int intmax_t; 2883 typedef unsigned long int uintmax_t; 2884 typedef unsigned long int uintptr_t; 2885 typedef unsigned long int uint64_t; 2886 _________________________________________________________ 2887 2888 11.3.11. langinfo.h 2889 2890 /* 2891 * This header is architecture neutral 2892 * Please refer to the generic specification for details 2893 */ 2894 _________________________________________________________ 2895 2896 11.3.12. limits.h 2897 2898 #define LONG_MAX 0x7FFFFFFFFFFFFFFFL 2899 #define ULONG_MAX 0xFFFFFFFFFFFFFFFFUL 2900 2901 #define CHAR_MAX SCHAR_MAX 2902 #define CHAR_MIN SCHAR_MIN 2903 2904 #define PTHREAD_STACK_MIN 196608 2905 _________________________________________________________ 2906 2907 11.3.13. locale.h 2908 2909 /* 2910 * This header is architecture neutral 2911 * Please refer to the generic specification for details 2912 */ 2913 _________________________________________________________ 2914 2915 11.3.14. net/if.h 2916 2917 /* 2918 * This header is architecture neutral 2919 * Please refer to the generic specification for details 2920 */ 2921 _________________________________________________________ 2922 2923 11.3.15. netdb.h 2924 2925 /* 2926 * This header is architecture neutral 2927 * Please refer to the generic specification for details 2928 */ 2929 _________________________________________________________ 2930 2931 11.3.16. netinet/in.h 2932 2933 /* 2934 * This header is architecture neutral 2935 * Please refer to the generic specification for details 2936 */ 2937 _________________________________________________________ 2938 2939 11.3.17. netinet/ip.h 2940 2941 /* 2942 * This header is architecture neutral 2943 * Please refer to the generic specification for details 2944 */ 2945 _________________________________________________________ 2946 2947 11.3.18. netinet/tcp.h 2948 2949 /* 2950 * This header is architecture neutral 2951 * Please refer to the generic specification for details 2952 */ 2953 _________________________________________________________ 2954 2955 11.3.19. netinet/udp.h 2956 2957 /* 2958 * This header is architecture neutral 2959 * Please refer to the generic specification for details 2960 */ 2961 _________________________________________________________ 2962 2963 11.3.20. nl_types.h 2964 2965 /* 2966 * This header is architecture neutral 2967 * Please refer to the generic specification for details 2968 */ 2969 _________________________________________________________ 2970 2971 11.3.21. pwd.h 2972 2973 /* 2974 * This header is architecture neutral 2975 * Please refer to the generic specification for details 2976 */ 2977 _________________________________________________________ 2978 2979 11.3.22. regex.h 2980 2981 /* 2982 * This header is architecture neutral 2983 * Please refer to the generic specification for details 2984 */ 2985 _________________________________________________________ 2986 2987 11.3.23. rpc/auth.h 2988 2989 /* 2990 * This header is architecture neutral 2991 * Please refer to the generic specification for details 2992 */ 2993 _________________________________________________________ 2994 2995 11.3.24. rpc/clnt.h 2996 2997 /* 2998 * This header is architecture neutral 2999 * Please refer to the generic specification for details 3000 */ 3001 _________________________________________________________ 3002 3003 11.3.25. rpc/rpc_msg.h 3004 3005 /* 3006 * This header is architecture neutral 3007 * Please refer to the generic specification for details 3008 */ 3009 _________________________________________________________ 3010 3011 11.3.26. rpc/svc.h 3012 3013 /* 3014 * This header is architecture neutral 3015 * Please refer to the generic specification for details 3016 */ 3017 _________________________________________________________ 3018 3019 11.3.27. rpc/types.h 3020 3021 /* 3022 * This header is architecture neutral 3023 * Please refer to the generic specification for details 3024 */ 3025 _________________________________________________________ 3026 3027 11.3.28. rpc/xdr.h 3028 3029 /* 3030 * This header is architecture neutral 3031 * Please refer to the generic specification for details 3032 */ 3033 _________________________________________________________ 3034 3035 11.3.29. sched.h 3036 3037 /* 3038 * This header is architecture neutral 3039 * Please refer to the generic specification for details 3040 */ 3041 _________________________________________________________ 3042 3043 11.3.30. search.h 3044 3045 /* 3046 * This header is architecture neutral 3047 * Please refer to the generic specification for details 3048 */ 3049 _________________________________________________________ 3050 3051 11.3.31. setjmp.h 3052 3053 typedef long int __jmp_buf[70] __attribute__ ((aligned(16))); 3054 _________________________________________________________ 3055 3056 11.3.32. signal.h 3057 3058 #define SIGEV_PAD_SIZE ((SIGEV_MAX_SIZE/sizeof(int))-4) 3059 3060 #define SI_PAD_SIZE ((SI_MAX_SIZE/sizeof(int))-4) 3061 3062 struct sigaction { 3063 union { 3064 sighandler_t _sa_handler; 3065 void (*_sa_sigaction) (int, siginfo_t *, void *); 3066 } __sigaction_handler; 3067 unsigned long int sa_flags; 3068 sigset_t sa_mask; 3069 }; 3070 3071 #define MINSIGSTKSZ 131027 3072 #define SIGSTKSZ 262144 3073 3074 struct ia64_fpreg { 3075 union { 3076 unsigned long int bits[2]; 3077 long double __dummy; 3078 } u; 3079 }; 3080 3081 struct sigcontext { 3082 unsigned long int sc_flags; 3083 unsigned long int sc_nat; 3084 stack_t sc_stack; 3085 unsigned long int sc_ip; 3086 unsigned long int sc_cfm; 3087 unsigned long int sc_um; 3088 unsigned long int sc_ar_rsc; 3089 unsigned long int sc_ar_bsp; 3090 unsigned long int sc_ar_rnat; 3091 unsigned long int sc_ar_ccv; 3092 unsigned long int sc_ar_unat; 3093 unsigned long int sc_ar_fpsr; 3094 unsigned long int sc_ar_pfs; 3095 unsigned long int sc_ar_lc; 3096 unsigned long int sc_pr; 3097 unsigned long int sc_br[8]; 3098 unsigned long int sc_gr[32]; 3099 struct ia64_fpreg sc_fr[128]; 3100 unsigned long int sc_rbs_base; 3101 unsigned long int sc_loadrs; 3102 unsigned long int sc_ar25; 3103 unsigned long int sc_ar26; 3104 unsigned long int sc_rsvd[12]; 3105 unsigned long int sc_mask; 3106 }; 3107 _________________________________________________________ 3108 3109 11.3.33. stddef.h 3110 3111 typedef long int ptrdiff_t; 3112 typedef unsigned long int size_t; 3113 _________________________________________________________ 3114 3115 11.3.34. stdio.h 3116 3117 #define __IO_FILE_SIZE 216 3118 _________________________________________________________ 3119 3120 11.3.35. stdlib.h 3121 3122 /* 3123 * This header is architecture neutral 3124 * Please refer to the generic specification for details 3125 */ 3126 _________________________________________________________ 3127 3128 11.3.36. sys/file.h 3129 3130 /* 3131 * This header is architecture neutral 3132 * Please refer to the generic specification for details 3133 */ 3134 _________________________________________________________ 3135 3136 11.3.37. sys/ioctl.h 3137 3138 #define TIOCGWINSZ 0x5413 3139 #define FIONREAD 0x541B 3140 #define TIOCNOTTY 0x5422 3141 _________________________________________________________ 3142 3143 11.3.38. sys/ipc.h 3144 3145 struct ipc_perm { 3146 key_t __key; 3147 uid_t uid; 3148 gid_t gid; 3149 uid_t cuid; 3150 uid_t cgid; 3151 mode_t mode; 3152 unsigned short __seq; 3153 unsigned short __pad1; 3154 unsigned long int __unused1; 3155 unsigned long int __unused2; 3156 }; 3157 _________________________________________________________ 3158 3159 11.3.39. sys/mman.h 3160 3161 #define MCL_CURRENT 1 3162 #define MCL_FUTURE 2 3163 _________________________________________________________ 3164 3165 11.3.40. sys/msg.h 3166 3167 struct msqid_ds { 3168 struct ipc_perm msg_perm; 3169 time_t msg_stime; 3170 time_t msg_rtime; 3171 time_t msg_ctime; 3172 unsigned long int __msg_cbytes; 3173 unsigned long int msg_qnum; 3174 unsigned long int msg_qbytes; 3175 pid_t msg_lspid; 3176 pid_t msg_lrpid; 3177 unsigned long int __unused1; 3178 unsigned long int __unused2; 3179 }; 3180 _________________________________________________________ 3181 3182 11.3.41. sys/param.h 3183 3184 /* 3185 * This header is architecture neutral 3186 * Please refer to the generic specification for details 3187 */ 3188 _________________________________________________________ 3189 3190 11.3.42. sys/poll.h 3191 3192 /* 3193 * This header is architecture neutral 3194 * Please refer to the generic specification for details 3195 */ 3196 _________________________________________________________ 3197 3198 11.3.43. sys/resource.h 3199 3200 /* 3201 * This header is architecture neutral 3202 * Please refer to the generic specification for details 3203 */ 3204 _________________________________________________________ 3205 3206 11.3.44. sys/sem.h 3207 3208 struct semid_ds { 3209 struct ipc_perm sem_perm; 3210 time_t sem_otime; 3211 time_t sem_ctime; 3212 unsigned long int sem_nsems; 3213 unsigned long int __unused1; 3214 unsigned long int __unused2; 3215 }; 3216 _________________________________________________________ 3217 3218 11.3.45. sys/shm.h 3219 3220 #define SHMLBA (1024*1024) 3221 3222 struct shmid_ds { 3223 struct ipc_perm shm_perm; 3224 size_t shm_segsz; 3225 time_t shm_atime; 3226 time_t shm_dtime; 3227 time_t shm_ctime; 3228 pid_t shm_cpid; 3229 pid_t shm_lpid; 3230 unsigned long int shm_nattch; 3231 unsigned long int __unused1; 3232 unsigned long int __unused2; 3233 }; 3234 _________________________________________________________ 3235 3236 11.3.46. sys/socket.h 3237 3238 typedef uint64_t __ss_aligntype; 3239 3240 #define SO_RCVLOWAT 18 3241 #define SO_SNDLOWAT 19 3242 #define SO_RCVTIMEO 20 3243 #define SO_SNDTIMEO 21 3244 _________________________________________________________ 3245 3246 11.3.47. sys/stat.h 3247 3248 #define _STAT_VER 1 3249 3250 struct stat { 3251 dev_t st_dev; 3252 ino_t st_ino; 3253 nlink_t st_nlink; 3254 mode_t st_mode; 3255 uid_t st_uid; 3256 gid_t st_gid; 3257 unsigned int pad0; 3258 dev_t st_rdev; 3259 off_t st_size; 3260 struct timespec st_atim; 3261 struct timespec st_mtim; 3262 struct timespec st_ctim; 3263 blksize_t st_blksize; 3264 blkcnt_t st_blocks; 3265 unsigned long int __unused[3]; 3266 }; 3267 struct stat64 { 3268 dev_t st_dev; 3269 ino64_t st_ino; 3270 nlink_t st_nlink; 3271 mode_t st_mode; 3272 uid_t st_uid; 3273 gid_t st_gid; 3274 unsigned int pad0; 3275 dev_t st_rdev; 3276 off_t st_size; 3277 struct timespec st_atim; 3278 struct timespec st_mtim; 3279 struct timespec st_ctim; 3280 blksize_t st_blksize; 3281 blkcnt64_t st_blocks; 3282 unsigned long int __unused[3]; 3283 }; 3284 _________________________________________________________ 3285 3286 11.3.48. sys/statfs.h 3287 3288 /* 3289 * This header is architecture neutral 3290 * Please refer to the generic specification for details 3291 */ 3292 _________________________________________________________ 3293 3294 11.3.49. sys/statvfs.h 3295 3296 struct statvfs { 3297 unsigned long int f_bsize; 3298 unsigned long int f_frsize; 3299 fsblkcnt64_t f_blocks; 3300 fsblkcnt64_t f_bfree; 3301 fsblkcnt64_t f_bavail; 3302 fsfilcnt64_t f_files; 3303 fsfilcnt64_t f_ffree; 3304 fsfilcnt64_t f_favail; 3305 unsigned long int f_fsid; 3306 unsigned long int f_flag; 3307 unsigned long int f_namemax; 3308 unsigned int __f_spare[6]; 3309 }; 3310 struct statvfs64 { 3311 unsigned long int f_bsize; 3312 unsigned long int f_frsize; 3313 fsblkcnt64_t f_blocks; 3314 fsblkcnt64_t f_bfree; 3315 fsblkcnt64_t f_bavail; 3316 fsfilcnt64_t f_files; 3317 fsfilcnt64_t f_ffree; 3318 fsfilcnt64_t f_favail; 3319 unsigned long int f_fsid; 3320 unsigned long int f_flag; 3321 unsigned long int f_namemax; 3322 unsigned int __f_spare[6]; 3323 }; 3324 _________________________________________________________ 3325 3326 11.3.50. sys/time.h 3327 3328 /* 3329 * This header is architecture neutral 3330 * Please refer to the generic specification for details 3331 */ 3332 _________________________________________________________ 3333 3334 11.3.51. sys/timeb.h 3335 3336 /* 3337 * This header is architecture neutral 3338 * Please refer to the generic specification for details 3339 */ 3340 _________________________________________________________ 3341 3342 11.3.52. sys/times.h 3343 3344 /* 3345 * This header is architecture neutral 3346 * Please refer to the generic specification for details 3347 */ 3348 _________________________________________________________ 3349 3350 11.3.53. sys/types.h 3351 3352 typedef long int int64_t; 3353 3354 typedef int64_t ssize_t; 3355 3356 #define __FDSET_LONGS 16 3357 _________________________________________________________ 3358 3359 11.3.54. sys/un.h 3360 3361 /* 3362 * This header is architecture neutral 3363 * Please refer to the generic specification for details 3364 */ 3365 _________________________________________________________ 3366 3367 11.3.55. sys/utsname.h 3368 3369 /* 3370 * This header is architecture neutral 3371 * Please refer to the generic specification for details 3372 */ 3373 _________________________________________________________ 3374 3375 11.3.56. sys/wait.h 3376 3377 /* 3378 * This header is architecture neutral 3379 * Please refer to the generic specification for details 3380 */ 3381 _________________________________________________________ 3382 3383 11.3.57. syslog.h 3384 3385 /* 3386 * This header is architecture neutral 3387 * Please refer to the generic specification for details 3388 */ 3389 _________________________________________________________ 3390 3391 11.3.58. termios.h 3392 3393 #define OLCUC 0000002 3394 #define ONLCR 0000004 3395 #define XCASE 0000004 3396 #define NLDLY 0000400 3397 #define CR1 0001000 3398 #define IUCLC 0001000 3399 #define CR2 0002000 3400 #define CR3 0003000 3401 #define CRDLY 0003000 3402 #define TAB1 0004000 3403 #define TAB2 0010000 3404 #define TAB3 0014000 3405 #define TABDLY 0014000 3406 #define BS1 0020000 3407 #define BSDLY 0020000 3408 #define VT1 0040000 3409 #define VTDLY 0040000 3410 #define FF1 0100000 3411 #define FFDLY 0100000 3412 3413 #define VSUSP 10 3414 #define VEOL 11 3415 #define VREPRINT 12 3416 #define VDISCARD 13 3417 #define VWERASE 14 3418 #define VEOL2 16 3419 #define VMIN 6 3420 #define VSWTC 7 3421 #define VSTART 8 3422 #define VSTOP 9 3423 3424 #define IXON 0002000 3425 #define IXOFF 0010000 3426 3427 #define CS6 0000020 3428 #define CS7 0000040 3429 #define CS8 0000060 3430 #define CSIZE 0000060 3431 #define CSTOPB 0000100 3432 #define CREAD 0000200 3433 #define PARENB 0000400 3434 #define PARODD 0001000 3435 #define HUPCL 0002000 3436 #define CLOCAL 0004000 3437 #define VTIME 5 3438 3439 #define ISIG 0000001 3440 #define ICANON 0000002 3441 #define ECHOE 0000020 3442 #define ECHOK 0000040 3443 #define ECHONL 0000100 3444 #define NOFLSH 0000200 3445 #define TOSTOP 0000400 3446 #define ECHOCTL 0001000 3447 #define ECHOPRT 0002000 3448 #define ECHOKE 0004000 3449 #define FLUSHO 0010000 3450 #define PENDIN 0040000 3451 #define IEXTEN 0100000 3452 _________________________________________________________ 3453 3454 11.3.59. ucontext.h 3455 3456 #define _SC_GR0_OFFSET \ 3457 (((char *) &((struct sigcontext *) 0)->sc_gr[0]) - (char *) 0) 3458 3459 typedef struct sigcontext mcontext_t; 3460 3461 typedef struct ucontext { 3462 union { 3463 mcontext_t _mc; 3464 struct { 3465 unsigned long int _pad[_SC_GR0_OFFSET / 8]; 3466 struct ucontext *_link; 3467 } _uc; 3468 } _u; 3469 } ucontext_t; 3470 _________________________________________________________ 3471 3472 11.3.60. ulimit.h 3473 3474 /* 3475 * This header is architecture neutral 3476 * Please refer to the generic specification for details 3477 */ 3478 _________________________________________________________ 3479 3480 11.3.61. unistd.h 3481 3482 typedef long int intptr_t; 3483 _________________________________________________________ 3484 3485 11.3.62. utime.h 3486 3487 /* 3488 * This header is architecture neutral 3489 * Please refer to the generic specification for details 3490 */ 3491 _________________________________________________________ 3492 3493 11.3.63. utmp.h 3494 3495 struct lastlog { 3496 time_t ll_time; 3497 char ll_line[UT_LINESIZE]; 3498 char ll_host[UT_HOSTSIZE]; 3499 }; 3500 3501 struct utmp { 3502 short ut_type; 3503 pid_t ut_pid; 3504 char ut_line[UT_LINESIZE]; 3505 char ut_id[4]; 3506 char ut_user[UT_NAMESIZE]; 3507 char ut_host[UT_HOSTSIZE]; 3508 struct exit_status ut_exit; 3509 long int ut_session; 3510 struct timeval ut_tv; 3511 int32_t ut_addr_v6[4]; 3512 char __unused[20]; 3513 }; 3514 _________________________________________________________ 3515 3516 11.3.64. utmpx.h 3517 3518 struct utmpx { 3519 short ut_type; 3520 pid_t ut_pid; 3521 char ut_line[UT_LINESIZE]; 3522 char ut_id[4]; 3523 char ut_user[UT_NAMESIZE]; 3524 char ut_host[UT_HOSTSIZE]; 3525 struct exit_status ut_exit; 3526 long int ut_session; 3527 struct timeval ut_tv; 3528 int32_t ut_addr_v6[4]; 3529 char __unused[20]; 3530 }; 3531 _________________________________________________________ 3532 3533 11.3.65. wctype.h 3534 3535 /* 3536 * This header is architecture neutral 3537 * Please refer to the generic specification for details 3538 */ 3539 _________________________________________________________ 3540 3541 11.3.66. wordexp.h 3542 3543 /* 3544 * This header is architecture neutral 3545 * Please refer to the generic specification for details 3546 */ 3547 _________________________________________________________ 3548 3549 11.4. Interfaces for libm 3550 3551 Table 11-24 defines the library name and shared object name 3552 for the libm library 3553 3554 Table 11-24. libm Definition 3555 Library: libm 3556 SONAME: libm.so.6.1 3557 3558 The behavior of the interfaces in this library is specified by 3559 the following specifications: 3560 3561 [ISOC99] ISO C (1999) 3562 [LSB] ISO/IEC 23360 Part 1 3563 [SUSv2] SUSv2 3564 [SUSv3] ISO POSIX (2003) 3565 [SVID.3] SVID Issue 3 3566 _________________________________________________________ 3567 3568 11.4.1. Math 3569 _________________________________________________________ 3570 3571 11.4.1.1. Interfaces for Math 3572 3573 An LSB conforming implementation shall provide the 3574 architecture specific functions for Math specified in Table 3575 11-25, with the full mandatory functionality as described in 3576 the referenced underlying specification. 3577 3578 Table 11-25. libm - Math Function Interfaces 3579 __finite(GLIBC_2.2) [ISOC99] __finitef(GLIBC_2.2) [ISOC99] 3580 __finitel(GLIBC_2.2) [ISOC99] __fpclassify(GLIBC_2.2) [LSB] 3581 __fpclassifyf(GLIBC_2.2) [LSB] __fpclassifyl(GLIBC_2.2) [LSB] 3582 __signbit(GLIBC_2.2) [ISOC99] __signbitf(GLIBC_2.2) [ISOC99] 3583 __signbitl(GLIBC_2.2) [ISOC99] acos(GLIBC_2.2) [SUSv3] 3584 acosf(GLIBC_2.2) [SUSv3] acosh(GLIBC_2.2) [SUSv3] 3585 acoshf(GLIBC_2.2) [SUSv3] acoshl(GLIBC_2.2) [SUSv3] 3586 acosl(GLIBC_2.2) [SUSv3] asin(GLIBC_2.2) [SUSv3] 3587 asinf(GLIBC_2.2) [SUSv3] asinh(GLIBC_2.2) [SUSv3] 3588 asinhf(GLIBC_2.2) [SUSv3] asinhl(GLIBC_2.2) [SUSv3] 3589 asinl(GLIBC_2.2) [SUSv3] atan(GLIBC_2.2) [SUSv3] 3590 atan2(GLIBC_2.2) [SUSv3] atan2f(GLIBC_2.2) [SUSv3] 3591 atan2l(GLIBC_2.2) [SUSv3] atanf(GLIBC_2.2) [SUSv3] 3592 atanh(GLIBC_2.2) [SUSv3] atanhf(GLIBC_2.2) [SUSv3] 3593 atanhl(GLIBC_2.2) [SUSv3] atanl(GLIBC_2.2) [SUSv3] 3594 cabs(GLIBC_2.2) [SUSv3] cabsf(GLIBC_2.2) [SUSv3] 3595 cabsl(GLIBC_2.2) [SUSv3] cacos(GLIBC_2.2) [SUSv3] 3596 cacosf(GLIBC_2.2) [SUSv3] cacosh(GLIBC_2.2) [SUSv3] 3597 cacoshf(GLIBC_2.2) [SUSv3] cacoshl(GLIBC_2.2) [SUSv3] 3598 cacosl(GLIBC_2.2) [SUSv3] carg(GLIBC_2.2) [SUSv3] 3599 cargf(GLIBC_2.2) [SUSv3] cargl(GLIBC_2.2) [SUSv3] 3600 casin(GLIBC_2.2) [SUSv3] casinf(GLIBC_2.2) [SUSv3] 3601 casinh(GLIBC_2.2) [SUSv3] casinhf(GLIBC_2.2) [SUSv3] 3602 casinhl(GLIBC_2.2) [SUSv3] casinl(GLIBC_2.2) [SUSv3] 3603 catan(GLIBC_2.2) [SUSv3] catanf(GLIBC_2.2) [SUSv3] 3604 catanh(GLIBC_2.2) [SUSv3] catanhf(GLIBC_2.2) [SUSv3] 3605 catanhl(GLIBC_2.2) [SUSv3] catanl(GLIBC_2.2) [SUSv3] 3606 cbrt(GLIBC_2.2) [SUSv3] cbrtf(GLIBC_2.2) [SUSv3] 3607 cbrtl(GLIBC_2.2) [SUSv3] ccos(GLIBC_2.2) [SUSv3] 3608 ccosf(GLIBC_2.2) [SUSv3] ccosh(GLIBC_2.2) [SUSv3] 3609 ccoshf(GLIBC_2.2) [SUSv3] ccoshl(GLIBC_2.2) [SUSv3] 3610 ccosl(GLIBC_2.2) [SUSv3] ceil(GLIBC_2.2) [SUSv3] 3611 ceilf(GLIBC_2.2) [SUSv3] ceill(GLIBC_2.2) [SUSv3] 3612 cexp(GLIBC_2.2) [SUSv3] cexpf(GLIBC_2.2) [SUSv3] 3613 cexpl(GLIBC_2.2) [SUSv3] cimag(GLIBC_2.2) [SUSv3] 3614 cimagf(GLIBC_2.2) [SUSv3] cimagl(GLIBC_2.2) [SUSv3] 3615 clog(GLIBC_2.2) [SUSv3] clog10(GLIBC_2.2) [ISOC99] 3616 clog10f(GLIBC_2.2) [ISOC99] clog10l(GLIBC_2.2) [ISOC99] 3617 clogf(GLIBC_2.2) [SUSv3] clogl(GLIBC_2.2) [SUSv3] 3618 conj(GLIBC_2.2) [SUSv3] conjf(GLIBC_2.2) [SUSv3] 3619 conjl(GLIBC_2.2) [SUSv3] copysign(GLIBC_2.2) [SUSv3] 3620 copysignf(GLIBC_2.2) [SUSv3] copysignl(GLIBC_2.2) [SUSv3] 3621 cos(GLIBC_2.2) [SUSv3] cosf(GLIBC_2.2) [SUSv3] cosh(GLIBC_2.2) 3622 [SUSv3] coshf(GLIBC_2.2) [SUSv3] 3623 coshl(GLIBC_2.2) [SUSv3] cosl(GLIBC_2.2) [SUSv3] 3624 cpow(GLIBC_2.2) [SUSv3] cpowf(GLIBC_2.2) [SUSv3] 3625 cpowl(GLIBC_2.2) [SUSv3] cproj(GLIBC_2.2) [SUSv3] 3626 cprojf(GLIBC_2.2) [SUSv3] cprojl(GLIBC_2.2) [SUSv3] 3627 creal(GLIBC_2.2) [SUSv3] crealf(GLIBC_2.2) [SUSv3] 3628 creall(GLIBC_2.2) [SUSv3] csin(GLIBC_2.2) [SUSv3] 3629 csinf(GLIBC_2.2) [SUSv3] csinh(GLIBC_2.2) [SUSv3] 3630 csinhf(GLIBC_2.2) [SUSv3] csinhl(GLIBC_2.2) [SUSv3] 3631 csinl(GLIBC_2.2) [SUSv3] csqrt(GLIBC_2.2) [SUSv3] 3632 csqrtf(GLIBC_2.2) [SUSv3] csqrtl(GLIBC_2.2) [SUSv3] 3633 ctan(GLIBC_2.2) [SUSv3] ctanf(GLIBC_2.2) [SUSv3] 3634 ctanh(GLIBC_2.2) [SUSv3] ctanhf(GLIBC_2.2) [SUSv3] 3635 ctanhl(GLIBC_2.2) [SUSv3] ctanl(GLIBC_2.2) [SUSv3] 3636 dremf(GLIBC_2.2) [ISOC99] dreml(GLIBC_2.2) [ISOC99] 3637 erf(GLIBC_2.2) [SUSv3] erfc(GLIBC_2.2) [SUSv3] 3638 erfcf(GLIBC_2.2) [SUSv3] erfcl(GLIBC_2.2) [SUSv3] 3639 erff(GLIBC_2.2) [SUSv3] erfl(GLIBC_2.2) [SUSv3] exp(GLIBC_2.2) 3640 [SUSv3] exp2(GLIBC_2.2) [SUSv3] 3641 exp2f(GLIBC_2.2) [SUSv3] exp2l(GLIBC_2.2) [SUSv3] 3642 expf(GLIBC_2.2) [SUSv3] expl(GLIBC_2.2) [SUSv3] 3643 expm1(GLIBC_2.2) [SUSv3] expm1f(GLIBC_2.2) [SUSv3] 3644 expm1l(GLIBC_2.2) [SUSv3] fabs(GLIBC_2.2) [SUSv3] 3645 fabsf(GLIBC_2.2) [SUSv3] fabsl(GLIBC_2.2) [SUSv3] 3646 fdim(GLIBC_2.2) [SUSv3] fdimf(GLIBC_2.2) [SUSv3] 3647 fdiml(GLIBC_2.2) [SUSv3] feclearexcept(GLIBC_2.2) [SUSv3] 3648 fegetenv(GLIBC_2.2) [SUSv3] fegetexceptflag(GLIBC_2.2) [SUSv3] 3649 fegetround(GLIBC_2.2) [SUSv3] feholdexcept(GLIBC_2.2) [SUSv3] 3650 feraiseexcept(GLIBC_2.2) [SUSv3] fesetenv(GLIBC_2.2) [SUSv3] 3651 fesetexceptflag(GLIBC_2.2) [SUSv3] fesetround(GLIBC_2.2) 3652 [SUSv3] fetestexcept(GLIBC_2.2) [SUSv3] feupdateenv(GLIBC_2.2) 3653 [SUSv3] 3654 finite(GLIBC_2.2) [SUSv2] finitef(GLIBC_2.2) [ISOC99] 3655 finitel(GLIBC_2.2) [ISOC99] floor(GLIBC_2.2) [SUSv3] 3656 floorf(GLIBC_2.2) [SUSv3] floorl(GLIBC_2.2) [SUSv3] 3657 fma(GLIBC_2.2) [SUSv3] fmaf(GLIBC_2.2) [SUSv3] 3658 fmal(GLIBC_2.2) [SUSv3] fmax(GLIBC_2.2) [SUSv3] 3659 fmaxf(GLIBC_2.2) [SUSv3] fmaxl(GLIBC_2.2) [SUSv3] 3660 fmin(GLIBC_2.2) [SUSv3] fminf(GLIBC_2.2) [SUSv3] 3661 fminl(GLIBC_2.2) [SUSv3] fmod(GLIBC_2.2) [SUSv3] 3662 fmodf(GLIBC_2.2) [SUSv3] fmodl(GLIBC_2.2) [SUSv3] 3663 frexp(GLIBC_2.2) [SUSv3] frexpf(GLIBC_2.2) [SUSv3] 3664 frexpl(GLIBC_2.2) [SUSv3] gamma(GLIBC_2.2) [SUSv2] 3665 gammaf(GLIBC_2.2) [ISOC99] gammal(GLIBC_2.2) [ISOC99] 3666 hypot(GLIBC_2.2) [SUSv3] hypotf(GLIBC_2.2) [SUSv3] 3667 hypotl(GLIBC_2.2) [SUSv3] ilogb(GLIBC_2.2) [SUSv3] 3668 ilogbf(GLIBC_2.2) [SUSv3] ilogbl(GLIBC_2.2) [SUSv3] 3669 j0(GLIBC_2.2) [SUSv3] j0f(GLIBC_2.2) [ISOC99] 3670 j0l(GLIBC_2.2) [ISOC99] j1(GLIBC_2.2) [SUSv3] j1f(GLIBC_2.2) 3671 [ISOC99] j1l(GLIBC_2.2) [ISOC99] 3672 jn(GLIBC_2.2) [SUSv3] jnf(GLIBC_2.2) [ISOC99] jnl(GLIBC_2.2) 3673 [ISOC99] ldexp(GLIBC_2.2) [SUSv3] 3674 ldexpf(GLIBC_2.2) [SUSv3] ldexpl(GLIBC_2.2) [SUSv3] 3675 lgamma(GLIBC_2.2) [SUSv3] lgamma_r(GLIBC_2.2) [ISOC99] 3676 lgammaf(GLIBC_2.2) [SUSv3] lgammaf_r(GLIBC_2.2) [ISOC99] 3677 lgammal(GLIBC_2.2) [SUSv3] lgammal_r(GLIBC_2.2) [ISOC99] 3678 llrint(GLIBC_2.2) [SUSv3] llrintf(GLIBC_2.2) [SUSv3] 3679 llrintl(GLIBC_2.2) [SUSv3] llround(GLIBC_2.2) [SUSv3] 3680 llroundf(GLIBC_2.2) [SUSv3] llroundl(GLIBC_2.2) [SUSv3] 3681 log(GLIBC_2.2) [SUSv3] log10(GLIBC_2.2) [SUSv3] 3682 log10f(GLIBC_2.2) [SUSv3] log10l(GLIBC_2.2) [SUSv3] 3683 log1p(GLIBC_2.2) [SUSv3] log1pf(GLIBC_2.2) [SUSv3] 3684 log1pl(GLIBC_2.2) [SUSv3] log2(GLIBC_2.2) [SUSv3] 3685 log2f(GLIBC_2.2) [SUSv3] log2l(GLIBC_2.2) [SUSv3] 3686 logb(GLIBC_2.2) [SUSv3] logbf(GLIBC_2.2) [SUSv3] 3687 logbl(GLIBC_2.2) [SUSv3] logf(GLIBC_2.2) [SUSv3] 3688 logl(GLIBC_2.2) [SUSv3] lrint(GLIBC_2.2) [SUSv3] 3689 lrintf(GLIBC_2.2) [SUSv3] lrintl(GLIBC_2.2) [SUSv3] 3690 lround(GLIBC_2.2) [SUSv3] lroundf(GLIBC_2.2) [SUSv3] 3691 lroundl(GLIBC_2.2) [SUSv3] matherr(GLIBC_2.2) [SVID.3] 3692 modf(GLIBC_2.2) [SUSv3] modff(GLIBC_2.2) [SUSv3] 3693 modfl(GLIBC_2.2) [SUSv3] nan(GLIBC_2.2) [SUSv3] 3694 nanf(GLIBC_2.2) [SUSv3] nanl(GLIBC_2.2) [SUSv3] 3695 nearbyint(GLIBC_2.2) [SUSv3] nearbyintf(GLIBC_2.2) [SUSv3] 3696 nearbyintl(GLIBC_2.2) [SUSv3] nextafter(GLIBC_2.2) [SUSv3] 3697 nextafterf(GLIBC_2.2) [SUSv3] nextafterl(GLIBC_2.2) [SUSv3] 3698 nexttoward(GLIBC_2.2) [SUSv3] nexttowardf(GLIBC_2.2) [SUSv3] 3699 nexttowardl(GLIBC_2.2) [SUSv3] pow(GLIBC_2.2) [SUSv3] 3700 pow10(GLIBC_2.2) [ISOC99] pow10f(GLIBC_2.2) [ISOC99] 3701 pow10l(GLIBC_2.2) [ISOC99] powf(GLIBC_2.2) [SUSv3] 3702 powl(GLIBC_2.2) [SUSv3] remainder(GLIBC_2.2) [SUSv3] 3703 remainderf(GLIBC_2.2) [SUSv3] remainderl(GLIBC_2.2) [SUSv3] 3704 remquo(GLIBC_2.2) [SUSv3] remquof(GLIBC_2.2) [SUSv3] 3705 remquol(GLIBC_2.2) [SUSv3] rint(GLIBC_2.2) [SUSv3] 3706 rintf(GLIBC_2.2) [SUSv3] rintl(GLIBC_2.2) [SUSv3] 3707 round(GLIBC_2.2) [SUSv3] roundf(GLIBC_2.2) [SUSv3] 3708 roundl(GLIBC_2.2) [SUSv3] scalb(GLIBC_2.2) [SUSv3] 3709 scalbf(GLIBC_2.2) [ISOC99] scalbl(GLIBC_2.2) [ISOC99] 3710 scalbln(GLIBC_2.2) [SUSv3] scalblnf(GLIBC_2.2) [SUSv3] 3711 scalblnl(GLIBC_2.2) [SUSv3] scalbn(GLIBC_2.2) [SUSv3] 3712 scalbnf(GLIBC_2.2) [SUSv3] scalbnl(GLIBC_2.2) [SUSv3] 3713 significand(GLIBC_2.2) [ISOC99] significandf(GLIBC_2.2) 3714 [ISOC99] 3715 significandl(GLIBC_2.2) [ISOC99] sin(GLIBC_2.2) [SUSv3] 3716 sincos(GLIBC_2.2) [ISOC99] sincosf(GLIBC_2.2) [ISOC99] 3717 sincosl(GLIBC_2.2) [ISOC99] sinf(GLIBC_2.2) [SUSv3] 3718 sinh(GLIBC_2.2) [SUSv3] sinhf(GLIBC_2.2) [SUSv3] 3719 sinhl(GLIBC_2.2) [SUSv3] sinl(GLIBC_2.2) [SUSv3] 3720 sqrt(GLIBC_2.2) [SUSv3] sqrtf(GLIBC_2.2) [SUSv3] 3721 sqrtl(GLIBC_2.2) [SUSv3] tan(GLIBC_2.2) [SUSv3] 3722 tanf(GLIBC_2.2) [SUSv3] tanh(GLIBC_2.2) [SUSv3] 3723 tanhf(GLIBC_2.2) [SUSv3] tanhl(GLIBC_2.2) [SUSv3] 3724 tanl(GLIBC_2.2) [SUSv3] tgamma(GLIBC_2.2) [SUSv3] 3725 tgammaf(GLIBC_2.2) [SUSv3] tgammal(GLIBC_2.2) [SUSv3] 3726 trunc(GLIBC_2.2) [SUSv3] truncf(GLIBC_2.2) [SUSv3] 3727 truncl(GLIBC_2.2) [SUSv3] y0(GLIBC_2.2) [SUSv3] y0f(GLIBC_2.2) 3728 [ISOC99] y0l(GLIBC_2.2) [ISOC99] 3729 y1(GLIBC_2.2) [SUSv3] y1f(GLIBC_2.2) [ISOC99] y1l(GLIBC_2.2) 3730 [ISOC99] yn(GLIBC_2.2) [SUSv3] 3731 ynf(GLIBC_2.2) [ISOC99] ynl(GLIBC_2.2) [ISOC99] 3732 3733 An LSB conforming implementation shall provide the 3734 architecture specific data interfaces for Math specified in 3735 Table 11-26, with the full mandatory functionality as 3736 described in the referenced underlying specification. 3737 3738 Table 11-26. libm - Math Data Interfaces 3739 signgam(GLIBC_2.2) [SUSv3] 3740 _________________________________________________________ 3741 3742 11.5. Data Definitions for libm 3743 3744 This section defines global identifiers and their values that 3745 are associated with interfaces contained in libm. These 3746 definitions are organized into groups that correspond to 3747 system headers. This convention is used as a convenience for 3748 the reader, and does not imply the existence of these headers, 3749 or their content. Where an interface is defined as requiring a 3750 particular system header file all of the data definitions for 3751 that system header file presented here shall be in effect. 3752 3753 This section gives data definitions to promote binary 3754 application portability, not to repeat source interface 3755 definitions available elsewhere. System providers and 3756 application developers should use this ABI to supplement - not 3757 to replace - source interface definition specifications. 3758 3759 This specification uses the ISO C (1999) C Language as the 3760 reference programming language, and data definitions are 3761 specified in ISO C format. The C language is used here as a 3762 convenient notation. Using a C language description of these 3763 data objects does not preclude their use by other programming 3764 languages. 3765 _________________________________________________________ 3766 3767 11.5.1. complex.h 3768 3769 /* 3770 * This header is architecture neutral 3771 * Please refer to the generic specification for details 3772 */ 3773 _________________________________________________________ 3774 3775 11.5.2. fenv.h 3776 3777 #define FE_INVALID (1UL << 0) 3778 #define FE_DIVBYZERO (1UL << 2) 3779 #define FE_OVERFLOW (1UL << 3) 3780 #define FE_UNDERFLOW (1UL << 4) 3781 #define FE_INEXACT (1UL << 5) 3782 #define FE_UNNORMAL 1UL << 1 3783 3784 #define FE_ALL_EXCEPT \ 3785 (FE_INEXACT | FE_UNDERFLOW | FE_OVERFLOW | FE_DIVBYZERO | FE_UNNORMAL | FE_INVALID) 3786 3787 #define FE_TONEAREST 0 3788 #define FE_DOWNWARD 1 3789 #define FE_UPWARD 2 3790 #define FE_TOWARDZERO 3 3791 3792 typedef unsigned long int fexcept_t; 3793 3794 typedef unsigned long int fenv_t; 3795 3796 #define FE_DFL_ENV ((__const fenv_t *) 0xc009804c0270033fUL) 3797 _________________________________________________________ 3798 3799 11.5.3. math.h 3800 3801 #define fpclassify(x) \ 3802 (sizeof (x) == sizeof (float) ? __fpclassifyf (x) :sizeof (x) == sizeof (double) ? __fpclassify (x) : __fpclassifyl (x)) 3803 #define signbit(x) \ 3804 (sizeof (x) == sizeof (float)? __signbitf (x): sizeof (x) == sizeof (double)? __signbit (x) : __signbitl (x)) 3805 3806 #define FP_ILOGB0 -2147483648 3807 #define FP_ILOGBNAN 2147483647 3808 3809 extern int __fpclassifyl(long double); 3810 extern int __signbitl(long double); 3811 extern long double exp2l(long double); 3812 _________________________________________________________ 3813 3814 11.6. Interface Definitions for libm 3815 3816 Table of Contents 3817 __fpclassifyl -- Classify real floating type 3818 3819 The interfaces defined on the following pages are included in 3820 libm and are defined by this specification. Unless otherwise 3821 noted, these interfaces shall be included in the source 3822 standard. 3823 3824 Other interfaces listed in Section 11.4 shall behave as 3825 described in the referenced base document. 3826 3827 __fpclassifyl 3828 3829 Name 3830 3831 __fpclassifyl -- Classify real floating type 3832 3833 Synopsis 3834 3835 int __fpclassifyl(long double arg); 3836 3837 Description 3838 3839 __fpclassifyl() has the same specification as fpclassify() in 3840 ISO POSIX (2003), except that the argument type for 3841 __fpclassifyl() is known to be long double. 3842 3843 __fpclassifyl() is not in the source standard; it is only in 3844 the binary standard. 3845 _________________________________________________________ 3846 3847 11.7. Interfaces for libpthread 3848 3849 Table 11-27 defines the library name and shared object name 3850 for the libpthread library 3851 3852 Table 11-27. libpthread Definition 3853 Library: libpthread 3854 SONAME: libpthread.so.0 3855 3856 The behavior of the interfaces in this library is specified by 3857 the following specifications: 3858 3859 [LFS] Large File Support 3860 [LSB] ISO/IEC 23360 Part 1 3861 [SUSv3] ISO POSIX (2003) 3862 _________________________________________________________ 3863 3864 11.7.1. Realtime Threads 3865 _________________________________________________________ 3866 3867 11.7.1.1. Interfaces for Realtime Threads 3868 3869 An LSB conforming implementation shall provide the 3870 architecture specific functions for Realtime Threads specified 3871 in Table 11-28, with the full mandatory functionality as 3872 described in the referenced underlying specification. 3873 3874 Table 11-28. libpthread - Realtime Threads Function Interfaces 3875 pthread_attr_getinheritsched(GLIBC_2.2) [SUSv3] 3876 pthread_attr_getschedpolicy(GLIBC_2.2) [SUSv3] 3877 pthread_attr_getscope(GLIBC_2.2) [SUSv3] 3878 pthread_attr_setinheritsched(GLIBC_2.2) [SUSv3] 3879 pthread_attr_setschedpolicy(GLIBC_2.2) [SUSv3] 3880 pthread_attr_setscope(GLIBC_2.2) [SUSv3] 3881 pthread_getschedparam(GLIBC_2.2) [SUSv3] 3882 pthread_setschedparam(GLIBC_2.2) [SUSv3] 3883 _________________________________________________________ 3884 3885 11.7.2. Advanced Realtime Threads 3886 _________________________________________________________ 3887 3888 11.7.2.1. Interfaces for Advanced Realtime Threads 3889 3890 No external functions are defined for libpthread - Advanced 3891 Realtime Threads in this part of the specification. See also 3892 the generic specification, ISO/IEC 23360 Part 1. 3893 _________________________________________________________ 3894 3895 11.7.3. Posix Threads 3896 _________________________________________________________ 3897 3898 11.7.3.1. Interfaces for Posix Threads 3899 3900 An LSB conforming implementation shall provide the 3901 architecture specific functions for Posix Threads specified in 3902 Table 11-29, with the full mandatory functionality as 3903 described in the referenced underlying specification. 3904 3905 Table 11-29. libpthread - Posix Threads Function Interfaces 3906 _pthread_cleanup_pop(GLIBC_2.2) [LSB] 3907 _pthread_cleanup_push(GLIBC_2.2) [LSB] 3908 pthread_attr_destroy(GLIBC_2.2) [SUSv3] 3909 pthread_attr_getdetachstate(GLIBC_2.2) [SUSv3] 3910 pthread_attr_getguardsize(GLIBC_2.2) [SUSv3] 3911 pthread_attr_getschedparam(GLIBC_2.2) [SUSv3] 3912 pthread_attr_getstack(GLIBC_2.2) [SUSv3] 3913 pthread_attr_getstackaddr(GLIBC_2.2) [SUSv3] 3914 pthread_attr_getstacksize(GLIBC_2.2) [SUSv3] 3915 pthread_attr_init(GLIBC_2.2) [SUSv3] 3916 pthread_attr_setdetachstate(GLIBC_2.2) [SUSv3] 3917 pthread_attr_setguardsize(GLIBC_2.2) [SUSv3] 3918 pthread_attr_setschedparam(GLIBC_2.2) [SUSv3] 3919 pthread_attr_setstackaddr(GLIBC_2.2) [SUSv3] 3920 pthread_attr_setstacksize(GLIBC_2.3.3) [SUSv3] 3921 pthread_cancel(GLIBC_2.2) [SUSv3] 3922 pthread_cond_broadcast(GLIBC_2.3.2) [SUSv3] 3923 pthread_cond_destroy(GLIBC_2.3.2) [SUSv3] 3924 pthread_cond_init(GLIBC_2.3.2) [SUSv3] 3925 pthread_cond_signal(GLIBC_2.3.2) [SUSv3] 3926 pthread_cond_timedwait(GLIBC_2.3.2) [SUSv3] 3927 pthread_cond_wait(GLIBC_2.3.2) [SUSv3] 3928 pthread_condattr_destroy(GLIBC_2.2) [SUSv3] 3929 pthread_condattr_getpshared(GLIBC_2.2) [SUSv3] 3930 pthread_condattr_init(GLIBC_2.2) [SUSv3] 3931 pthread_condattr_setpshared(GLIBC_2.2) [SUSv3] 3932 pthread_create(GLIBC_2.2) [SUSv3] pthread_detach(GLIBC_2.2) 3933 [SUSv3] 3934 pthread_equal(GLIBC_2.2) [SUSv3] pthread_exit(GLIBC_2.2) 3935 [SUSv3] pthread_getconcurrency(GLIBC_2.2) [SUSv3] 3936 pthread_getspecific(GLIBC_2.2) [SUSv3] 3937 pthread_join(GLIBC_2.2) [SUSv3] pthread_key_create(GLIBC_2.2) 3938 [SUSv3] pthread_key_delete(GLIBC_2.2) [SUSv3] 3939 pthread_kill(GLIBC_2.2) [SUSv3] 3940 pthread_mutex_destroy(GLIBC_2.2) [SUSv3] 3941 pthread_mutex_init(GLIBC_2.2) [SUSv3] 3942 pthread_mutex_lock(GLIBC_2.2) [SUSv3] 3943 pthread_mutex_trylock(GLIBC_2.2) [SUSv3] 3944 pthread_mutex_unlock(GLIBC_2.2) [SUSv3] 3945 pthread_mutexattr_destroy(GLIBC_2.2) [SUSv3] 3946 pthread_mutexattr_getpshared(GLIBC_2.2) [SUSv3] 3947 pthread_mutexattr_gettype(GLIBC_2.2) [SUSv3] 3948 pthread_mutexattr_init(GLIBC_2.2) [SUSv3] 3949 pthread_mutexattr_setpshared(GLIBC_2.2) [SUSv3] 3950 pthread_mutexattr_settype(GLIBC_2.2) [SUSv3] 3951 pthread_once(GLIBC_2.2) [SUSv3] 3952 pthread_rwlock_destroy(GLIBC_2.2) [SUSv3] 3953 pthread_rwlock_init(GLIBC_2.2) [SUSv3] 3954 pthread_rwlock_rdlock(GLIBC_2.2) [SUSv3] 3955 pthread_rwlock_timedrdlock(GLIBC_2.2) [SUSv3] 3956 pthread_rwlock_timedwrlock(GLIBC_2.2) [SUSv3] 3957 pthread_rwlock_tryrdlock(GLIBC_2.2) [SUSv3] 3958 pthread_rwlock_trywrlock(GLIBC_2.2) [SUSv3] 3959 pthread_rwlock_unlock(GLIBC_2.2) [SUSv3] 3960 pthread_rwlock_wrlock(GLIBC_2.2) [SUSv3] 3961 pthread_rwlockattr_destroy(GLIBC_2.2) [SUSv3] 3962 pthread_rwlockattr_getpshared(GLIBC_2.2) [SUSv3] 3963 pthread_rwlockattr_init(GLIBC_2.2) [SUSv3] 3964 pthread_rwlockattr_setpshared(GLIBC_2.2) [SUSv3] 3965 pthread_self(GLIBC_2.2) [SUSv3] 3966 pthread_setcancelstate(GLIBC_2.2) [SUSv3] 3967 pthread_setcanceltype(GLIBC_2.2) [SUSv3] 3968 pthread_setconcurrency(GLIBC_2.2) [SUSv3] 3969 pthread_setspecific(GLIBC_2.2) [SUSv3] 3970 pthread_sigmask(GLIBC_2.2) [SUSv3] 3971 pthread_testcancel(GLIBC_2.2) [SUSv3] 3972 sem_close(GLIBC_2.2) [SUSv3] sem_destroy(GLIBC_2.2) [SUSv3] 3973 sem_getvalue(GLIBC_2.2) [SUSv3] sem_init(GLIBC_2.2) [SUSv3] 3974 sem_open(GLIBC_2.2) [SUSv3] sem_post(GLIBC_2.2) [SUSv3] 3975 sem_timedwait(GLIBC_2.2) [SUSv3] sem_trywait(GLIBC_2.2) 3976 [SUSv3] 3977 sem_unlink(GLIBC_2.2) [SUSv3] sem_wait(GLIBC_2.2) [SUSv3] 3978 _________________________________________________________ 3979 3980 11.7.4. Thread aware versions of libc interfaces 3981 _________________________________________________________ 3982 3983 11.7.4.1. Interfaces for Thread aware versions of libc interfaces 3984 3985 An LSB conforming implementation shall provide the 3986 architecture specific functions for Thread aware versions of 3987 libc interfaces specified in Table 11-30, with the full 3988 mandatory functionality as described in the referenced 3989 underlying specification. 3990 3991 Table 11-30. libpthread - Thread aware versions of libc 3992 interfaces Function Interfaces 3993 lseek64(GLIBC_2.2) [LFS] open64(GLIBC_2.2) [LFS] 3994 pread(GLIBC_2.2) [SUSv3] pread64(GLIBC_2.2) [LFS] 3995 pwrite(GLIBC_2.2) [SUSv3] pwrite64(GLIBC_2.2) [LFS] 3996 _________________________________________________________ 3997 3998 11.8. Data Definitions for libpthread 3999 4000 This section defines global identifiers and their values that 4001 are associated with interfaces contained in libpthread. These 4002 definitions are organized into groups that correspond to 4003 system headers. This convention is used as a convenience for 4004 the reader, and does not imply the existence of these headers, 4005 or their content. Where an interface is defined as requiring a 4006 particular system header file all of the data definitions for 4007 that system header file presented here shall be in effect. 4008 4009 This section gives data definitions to promote binary 4010 application portability, not to repeat source interface 4011 definitions available elsewhere. System providers and 4012 application developers should use this ABI to supplement - not 4013 to replace - source interface definition specifications. 4014 4015 This specification uses the ISO C (1999) C Language as the 4016 reference programming language, and data definitions are 4017 specified in ISO C format. The C language is used here as a 4018 convenient notation. Using a C language description of these 4019 data objects does not preclude their use by other programming 4020 languages. 4021 _________________________________________________________ 4022 4023 11.8.1. pthread.h 4024 4025 /* 4026 * This header is architecture neutral 4027 * Please refer to the generic specification for details 4028 */ 4029 _________________________________________________________ 4030 4031 11.8.2. semaphore.h 4032 4033 /* 4034 * This header is architecture neutral 4035 * Please refer to the generic specification for details 4036 */ 4037 _________________________________________________________ 4038 4039 11.9. Interfaces for libgcc_s 4040 4041 Table 11-31 defines the library name and shared object name 4042 for the libgcc_s library 4043 4044 Table 11-31. libgcc_s Definition 4045 Library: libgcc_s 4046 SONAME: libgcc_s.so.1 4047 4048 The behavior of the interfaces in this library is specified by 4049 the following specifications: 4050 4051 [LSB] ISO/IEC 23360 Part 1 4052 _________________________________________________________ 4053 4054 11.9.1. Unwind Library 4055 _________________________________________________________ 4056 4057 11.9.1.1. Interfaces for Unwind Library 4058 4059 An LSB conforming implementation shall provide the 4060 architecture specific functions for Unwind Library specified 4061 in Table 11-32, with the full mandatory functionality as 4062 described in the referenced underlying specification. 4063 4064 Table 11-32. libgcc_s - Unwind Library Function Interfaces 4065 _Unwind_Backtrace(GCC_3.3) [LSB] 4066 _Unwind_DeleteException(GCC_3.0) [LSB] 4067 _Unwind_FindEnclosingFunction(GCC_3.3) [LSB] 4068 _Unwind_ForcedUnwind(GCC_3.0) [LSB] 4069 _Unwind_GetBSP(GCC_3.3.2) [LSB] _Unwind_GetCFA(GCC_3.3) [LSB] 4070 _Unwind_GetGR(GCC_3.0) [LSB] _Unwind_GetIP(GCC_3.0) [LSB] 4071 _Unwind_GetLanguageSpecificData(GCC_3.0) [LSB] 4072 _Unwind_GetRegionStart(GCC_3.0) [LSB] 4073 _Unwind_RaiseException(GCC_3.0) [LSB] _Unwind_Resume(GCC_3.0) 4074 [LSB] 4075 _Unwind_Resume_or_Rethrow(GCC_3.3) [LSB] 4076 _Unwind_SetGR(GCC_3.0) [LSB] _Unwind_SetIP(GCC_3.0) [LSB] 4077 _________________________________________________________ 4078 4079 11.10. Data Definitions for libgcc_s 4080 4081 This section defines global identifiers and their values that 4082 are associated with interfaces contained in libgcc_s. These 4083 definitions are organized into groups that correspond to 4084 system headers. This convention is used as a convenience for 4085 the reader, and does not imply the existence of these headers, 4086 or their content. Where an interface is defined as requiring a 4087 particular system header file all of the data definitions for 4088 that system header file presented here shall be in effect. 4089 4090 This section gives data definitions to promote binary 4091 application portability, not to repeat source interface 4092 definitions available elsewhere. System providers and 4093 application developers should use this ABI to supplement - not 4094 to replace - source interface definition specifications. 4095 4096 This specification uses the ISO C (1999) C Language as the 4097 reference programming language, and data definitions are 4098 specified in ISO C format. The C language is used here as a 4099 convenient notation. Using a C language description of these 4100 data objects does not preclude their use by other programming 4101 languages. 4102 _________________________________________________________ 4103 4104 11.10.1. unwind.h 4105 4106 extern void _Unwind_DeleteException(struct _Unwind_Exception *); 4107 extern _Unwind_Ptr _Unwind_ForcedUnwind(struct _Unwind_Exception *, 4108 _Unwind_Stop_Fn, void *); 4109 extern _Unwind_Word _Unwind_GetGR(struct _Unwind_Context *, int); 4110 extern _Unwind_Ptr _Unwind_GetIP(struct _Unwind_Context *); 4111 extern _Unwind_Ptr _Unwind_GetLanguageSpecificData(struct _Unwind_Context 4112 *); 4113 extern _Unwind_Ptr _Unwind_GetRegionStart(struct _Unwind_Context *); 4114 extern _Unwind_Reason_Code _Unwind_RaiseException(struct _Unwind_Exception 4115 *); 4116 extern void _Unwind_Resume(struct _Unwind_Exception *); 4117 extern void _Unwind_SetGR(struct _Unwind_Context *, int, u_int64_t); 4118 extern void _Unwind_SetIP(struct _Unwind_Context *, _Unwind_Ptr); 4119 extern _Unwind_Reason_Code _Unwind_Backtrace(_Unwind_Trace_Fn, void *); 4120 extern _Unwind_Reason_Code _Unwind_GetCFA(struct _Unwind_Context *); 4121 extern _Unwind_Reason_Code _Unwind_Resume_or_Rethrow(struct 4122 _Unwind_Exception*); 4123 extern void *_Unwind_FindEnclosingFunction(void *); 4124 extern _Unwind_Word _Unwind_GetBSP(struct _Unwind_Context *); 4125 _________________________________________________________ 4126 4127 11.11. Interface Definitions for libgcc_s 4128 4129 Table of Contents 4130 _Unwind_DeleteException -- private C++ error handling method 4131 _Unwind_ForcedUnwind -- private C++ error handling method 4132 _Unwind_GetGR -- private C++ error handling method 4133 _Unwind_GetIP -- private C++ error handling method 4134 _Unwind_GetLanguageSpecificData -- private C++ error handling 4135 method 4136 4137 _Unwind_GetRegionStart -- private C++ error handling method 4138 _Unwind_RaiseException -- private C++ error handling method 4139 _Unwind_Resume -- private C++ error handling method 4140 _Unwind_SetGR -- private C++ error handling method 4141 _Unwind_SetIP -- private C++ error handling method 4142 4143 The interfaces defined on the following pages are included in 4144 libgcc_s and are defined by this specification. Unless 4145 otherwise noted, these interfaces shall be included in the 4146 source standard. 4147 4148 Other interfaces listed in Section 11.9 shall behave as 4149 described in the referenced base document. 4150 4151 _Unwind_DeleteException 4152 4153 Name 4154 4155 _Unwind_DeleteException -- private C++ error handling method 4156 4157 Synopsis 4158 4159 void _Unwind_DeleteException(struct _Unwind_Exception * 4160 object); 4161 4162 Description 4163 4164 _Unwind_DeleteException() deletes the given exception object. 4165 If a given runtime resumes normal execution after catching a 4166 foreign exception, it will not know how to delete that 4167 exception. Such an exception shall be deleted by calling 4168 _Unwind_DeleteException(). This is a convenience function that 4169 calls the function pointed to by the exception_cleanup field 4170 of the exception header. 4171 4172 _Unwind_ForcedUnwind 4173 4174 Name 4175 4176 _Unwind_ForcedUnwind -- private C++ error handling method 4177 4178 Synopsis 4179 4180 _Unwind_Reason_Code _Unwind_ForcedUnwind(struct 4181 _Unwind_Exception * object, _Unwind_Stop_Fn stop, void * 4182 stop_parameter); 4183 4184 Description 4185 4186 _Unwind_ForcedUnwind() raises an exception for forced 4187 unwinding, passing along the given exception object, which 4188 should have its exception_class and exception_cleanup fields 4189 set. The exception object has been allocated by the 4190 language-specific runtime, and has a language-specific format, 4191 except that it shall contain an _Unwind_Exception struct. 4192 4193 Forced unwinding is a single-phase process. stop and 4194 stop_parameter control the termination of the unwind process 4195 instead of the usual personality routine query. stop is called 4196 for each unwind frame, with the parameteres described for the 4197 usual personality routine below, plus an additional 4198 stop_parameter. 4199 4200 Return Value 4201 4202 When stop identifies the destination frame, it transfers 4203 control to the user code as appropriate without returning, 4204 normally after calling _Unwind_DeleteException(). If not, then 4205 it should return an _Unwind_Reason_Code value. 4206 4207 If stop returns any reason code other than _URC_NO_REASON, 4208 then the stack state is indeterminate from the point of view 4209 of the caller of _Unwind_ForcedUnwind(). Rather than attempt 4210 to return, therefore, the unwind library should use the 4211 exception_cleanup entry in the exception, and then call 4212 abort(). 4213 4214 _URC_NO_REASON 4215 This is not the destination from. The unwind runtime 4216 will call frame's personality routine with the 4217 _UA_FORCE_UNWIND and _UA_CLEANUP_PHASE flag set in 4218 actions, and then unwind to the next frame and call the 4219 stop() function again. 4220 4221 _URC_END_OF_STACK 4222 In order to allow _Unwind_ForcedUnwind() to perform 4223 special processing when it reaches the end of the 4224 stack, the unwind runtime will call it after the last 4225 frame is rejected, with a NULL stack pointer in the 4226 context, and the stop() function shall catch this 4227 condition. It may return this code if it cannot handle 4228 end-of-stack. 4229 4230 _URC_FATAL_PHASE2_ERROR 4231 The stop() function may return this code for other 4232 fatal conditions like stack corruption. 4233 4234 _Unwind_GetGR 4235 4236 Name 4237 4238 _Unwind_GetGR -- private C++ error handling method 4239 4240 Synopsis 4241 4242 _Unwind_Word _Unwind_GetGR(struct _Unwind_Context * context, 4243 int index); 4244 4245 Description 4246 4247 _Unwind_GetGR() returns data at index found in context. The 4248 register is identified by its index: 0 to 31 are for the fixed 4249 registers, and 32 to 127 are for the stacked registers. 4250 4251 During the two phases of unwinding, only GR1 has a guaranteed 4252 value, which is the global pointer of the frame referenced by 4253 the unwind context. If the register has its NAT bit set, the 4254 behavior is unspecified. 4255 4256 _Unwind_GetIP 4257 4258 Name 4259 4260 _Unwind_GetIP -- private C++ error handling method 4261 4262 Synopsis 4263 4264 _Unwind_Ptr _Unwind_GetIP(struct _Unwind_Context * context); 4265 4266 Description 4267 4268 _Unwind_GetIP() returns the instruction pointer value for the 4269 routine identified by the unwind context. 4270 4271 _Unwind_GetLanguageSpecificData 4272 4273 Name 4274 4275 _Unwind_GetLanguageSpecificData -- private C++ error handling 4276 method 4277 4278 Synopsis 4279 4280 _Unwind_Ptr _Unwind_GetLanguageSpecificData(struct 4281 _Unwind_Context * context, uint value); 4282 4283 Description 4284 4285 _Unwind_GetLanguageSpecificData() returns the address of the 4286 language specific data area for the current stack frame. 4287 4288 _Unwind_GetRegionStart 4289 4290 Name 4291 4292 _Unwind_GetRegionStart -- private C++ error handling method 4293 4294 Synopsis 4295 4296 _Unwind_Ptr _Unwind_GetRegionStart(struct _Unwind_Context * 4297 context); 4298 4299 Description 4300 4301 _Unwind_GetRegionStart() routine returns the address (i.e., 0) 4302 of the beginning of the procedure or code fragment described 4303 by the current unwind descriptor block. 4304 4305 _Unwind_RaiseException 4306 4307 Name 4308 4309 _Unwind_RaiseException -- private C++ error handling method 4310 4311 Synopsis 4312 4313 _Unwind_Reason_Code _Unwind_RaiseException(struct 4314 _Unwind_Exception * object); 4315 4316 Description 4317 4318 _Unwind_RaiseException() raises an exception, passing along 4319 the given exception object, which should have its 4320 exception_class and exception_cleanup fields set. The 4321 exception object has been allocated by the language-specific 4322 runtime, and has a language-specific format, exception that it 4323 shall contain an _Unwind_Exception. 4324 4325 Return Value 4326 4327 _Unwind_RaiseException() does not return unless an error 4328 condition is found. If an error condition occurs, an 4329 _Unwind_Reason_Code is returnd: 4330 4331 _URC_END_OF_STACK 4332 The unwinder encountered the end of the stack during 4333 phase one without finding a handler. The unwind runtime 4334 will not have modified the stack. The C++ runtime will 4335 normally call uncaught_exception() in this case. 4336 4337 _URC_FATAL_PHASE1_ERROR 4338 The unwinder encountered an unexpected error during 4339 phase one, because of something like stack corruption. 4340 The unwind runtime will not have modified the stack. 4341 The C++ runtime will normally call terminate() in this 4342 case. 4343 4344 _URC_FATAL_PHASE2_ERROR 4345 The unwinder encountered an unexpected error during 4346 phase two. This is usually a throw, which will call 4347 terminate(). 4348 4349 _Unwind_Resume 4350 4351 Name 4352 4353 _Unwind_Resume -- private C++ error handling method 4354 4355 Synopsis 4356 4357 void _Unwind_Resume(struct _Unwind_Exception * object); 4358 4359 Description 4360 4361 _Unwind_Resume() resumes propagation of an existing exception 4362 object. A call to this routine is inserted as the end of a 4363 landing pad that performs cleanup, but does not resume normal 4364 execution. It causes unwinding to proceed further. 4365 4366 _Unwind_SetGR 4367 4368 Name 4369 4370 _Unwind_SetGR -- private C++ error handling method 4371 4372 Synopsis 4373 4374 void _Unwind_SetGR(struct _Unwind_Context * context, int 4375 index, uint value); 4376 4377 Description 4378 4379 _Unwind_SetGR() sets the value of the register indexed for the 4380 routine identified by the unwind context. 4381 4382 _Unwind_SetIP 4383 4384 Name 4385 4386 _Unwind_SetIP -- private C++ error handling method 4387 4388 Synopsis 4389 4390 void _Unwind_SetIP(struct _Unwind_Context * context, uint 4391 value); 4392 4393 Description 4394 4395 _Unwind_SetIP() sets the value of the instruction pointer for 4396 the routine identified by the unwind context 4397 _________________________________________________________ 4398 4399 11.12. Interfaces for libdl 4400 4401 Table 11-33 defines the library name and shared object name 4402 for the libdl library 4403 4404 Table 11-33. libdl Definition 4405 Library: libdl 4406 SONAME: libdl.so.2 4407 4408 The behavior of the interfaces in this library is specified by 4409 the following specifications: 4410 4411 [LSB] ISO/IEC 23360 Part 1 4412 [SUSv3] ISO POSIX (2003) 4413 _________________________________________________________ 4414 4415 11.12.1. Dynamic Loader 4416 _________________________________________________________ 4417 4418 11.12.1.1. Interfaces for Dynamic Loader 4419 4420 An LSB conforming implementation shall provide the 4421 architecture specific functions for Dynamic Loader specified 4422 in Table 11-34, with the full mandatory functionality as 4423 described in the referenced underlying specification. 4424 4425 Table 11-34. libdl - Dynamic Loader Function Interfaces 4426 dladdr(GLIBC_2.0) [LSB] dlclose(GLIBC_2.0) [SUSv3] 4427 dlerror(GLIBC_2.0) [SUSv3] dlopen(GLIBC_2.1) [LSB] 4428 dlsym(GLIBC_2.0) [LSB] 4429 _________________________________________________________ 4430 4431 11.13. Data Definitions for libdl 4432 4433 This section defines global identifiers and their values that 4434 are associated with interfaces contained in libdl. These 4435 definitions are organized into groups that correspond to 4436 system headers. This convention is used as a convenience for 4437 the reader, and does not imply the existence of these headers, 4438 or their content. Where an interface is defined as requiring a 4439 particular system header file all of the data definitions for 4440 that system header file presented here shall be in effect. 4441 4442 This section gives data definitions to promote binary 4443 application portability, not to repeat source interface 4444 definitions available elsewhere. System providers and 4445 application developers should use this ABI to supplement - not 4446 to replace - source interface definition specifications. 4447 4448 This specification uses the ISO C (1999) C Language as the 4449 reference programming language, and data definitions are 4450 specified in ISO C format. The C language is used here as a 4451 convenient notation. Using a C language description of these 4452 data objects does not preclude their use by other programming 4453 languages. 4454 _________________________________________________________ 4455 4456 11.13.1. dlfcn.h 4457 4458 /* 4459 * This header is architecture neutral 4460 * Please refer to the generic specification for details 4461 */ 4462 _________________________________________________________ 4463 4464 11.14. Interfaces for libcrypt 4465 4466 Table 11-35 defines the library name and shared object name 4467 for the libcrypt library 4468 4469 Table 11-35. libcrypt Definition 4470 Library: libcrypt 4471 SONAME: libcrypt.so.1 4472 4473 The behavior of the interfaces in this library is specified by 4474 the following specifications: 4475 4476 [SUSv3] ISO POSIX (2003) 4477 _________________________________________________________ 4478 4479 11.14.1. Encryption 4480 _________________________________________________________ 4481 4482 11.14.1.1. Interfaces for Encryption 4483 4484 An LSB conforming implementation shall provide the 4485 architecture specific functions for Encryption specified in 4486 Table 11-36, with the full mandatory functionality as 4487 described in the referenced underlying specification. 4488 4489 Table 11-36. libcrypt - Encryption Function Interfaces 4490 crypt(GLIBC_2.0) [SUSv3] encrypt(GLIBC_2.0) [SUSv3] 4491 setkey(GLIBC_2.0) [SUSv3] 4492 4493 IV. Utility Libraries 4494 4495 Table of Contents 4496 12. Libraries 4497 4498 12.1. Interfaces for libz 4499 4500 12.1.1. Compression Library 4501 4502 12.2. Data Definitions for libz 4503 4504 12.2.1. zlib.h 4505 4506 12.3. Interfaces for libncurses 4507 4508 12.3.1. Curses 4509 4510 12.4. Data Definitions for libncurses 4511 4512 12.4.1. curses.h 4513 4514 12.5. Interfaces for libutil 4515 4516 12.5.1. Utility Functions 4517 _________________________________________________________ 4518 4519 Chapter 12. Libraries 4520 4521 An LSB-conforming implementation shall also support some 4522 utility libraries which are built on top of the interfaces 4523 provided by the base libraries. These libraries implement 4524 common functionality, and hide additional system dependent 4525 information such as file formats and device names. 4526 _________________________________________________________ 4527 4528 12.1. Interfaces for libz 4529 4530 Table 12-1 defines the library name and shared object name for 4531 the libz library 4532 4533 Table 12-1. libz Definition 4534 Library: libz 4535 SONAME: libz.so.1 4536 _________________________________________________________ 4537 4538 12.1.1. Compression Library 4539 _________________________________________________________ 4540 4541 12.1.1.1. Interfaces for Compression Library 4542 4543 No external functions are defined for libz - Compression 4544 Library in this part of the specification. See also the 4545 generic specification, ISO/IEC 23360 Part 1. 4546 _________________________________________________________ 4547 4548 12.2. Data Definitions for libz 4549 4550 This section defines global identifiers and their values that 4551 are associated with interfaces contained in libz. These 4552 definitions are organized into groups that correspond to 4553 system headers. This convention is used as a convenience for 4554 the reader, and does not imply the existence of these headers, 4555 or their content. Where an interface is defined as requiring a 4556 particular system header file all of the data definitions for 4557 that system header file presented here shall be in effect. 4558 4559 This section gives data definitions to promote binary 4560 application portability, not to repeat source interface 4561 definitions available elsewhere. System providers and 4562 application developers should use this ABI to supplement - not 4563 to replace - source interface definition specifications. 4564 4565 This specification uses the ISO C (1999) C Language as the 4566 reference programming language, and data definitions are 4567 specified in ISO C . The C language is used here as a 4568 convenient notation. Using a C language description of these 4569 data objects does not preclude their use by other programming 4570 languages. 4571 _________________________________________________________ 4572 4573 12.2.1. zlib.h 4574 4575 /* 4576 * This header is architecture neutral 4577 * Please refer to the generic specification for details 4578 */ 4579 _________________________________________________________ 4580 4581 12.3. Interfaces for libncurses 4582 4583 Table 12-2 defines the library name and shared object name for 4584 the libncurses library 4585 4586 Table 12-2. libncurses Definition 4587 Library: libncurses 4588 SONAME: libncurses.so.5 4589 _________________________________________________________ 4590 4591 12.3.1. Curses 4592 _________________________________________________________ 4593 4594 12.3.1.1. Interfaces for Curses 4595 4596 No external functions are defined for libncurses - Curses in 4597 this part of the specification. See also the generic 4598 specification, ISO/IEC 23360 Part 1. 4599 _________________________________________________________ 4600 4601 12.4. Data Definitions for libncurses 4602 4603 This section defines global identifiers and their values that 4604 are associated with interfaces contained in libncurses. These 4605 definitions are organized into groups that correspond to 4606 system headers. This convention is used as a convenience for 4607 the reader, and does not imply the existence of these headers, 4608 or their content. Where an interface is defined as requiring a 4609 particular system header file all of the data definitions for 4610 that system header file presented here shall be in effect. 4611 4612 This section gives data definitions to promote binary 4613 application portability, not to repeat source interface 4614 definitions available elsewhere. System providers and 4615 application developers should use this ABI to supplement - not 4616 to replace - source interface definition specifications. 4617 4618 This specification uses the ISO C (1999) C Language as the 4619 reference programming language, and data definitions are 4620 specified in ISO C . The C language is used here as a 4621 convenient notation. Using a C language description of these 4622 data objects does not preclude their use by other programming 4623 languages. 4624 _________________________________________________________ 4625 4626 12.4.1. curses.h 4627 4628 /* 4629 * This header is architecture neutral 4630 * Please refer to the generic specification for details 4631 */ 4632 _________________________________________________________ 4633 4634 12.5. Interfaces for libutil 4635 4636 Table 12-3 defines the library name and shared object name for 4637 the libutil library 4638 4639 Table 12-3. libutil Definition 4640 Library: libutil 4641 SONAME: libutil.so.1 4642 4643 The behavior of the interfaces in this library is specified by 4644 the following specifications: 4645 4646 [LSB] ISO/IEC 23360 Part 1 4647 _________________________________________________________ 4648 4649 12.5.1. Utility Functions 4650 _________________________________________________________ 4651 4652 12.5.1.1. Interfaces for Utility Functions 4653 4654 An LSB conforming implementation shall provide the 4655 architecture specific functions for Utility Functions 4656 specified in Table 12-4, with the full mandatory functionality 4657 as described in the referenced underlying specification. 4658 4659 Table 12-4. libutil - Utility Functions Function Interfaces 4660 forkpty(GLIBC_2.0) [LSB] login(GLIBC_2.0) [LSB] 4661 login_tty(GLIBC_2.0) [LSB] logout(GLIBC_2.0) [LSB] 4662 logwtmp(GLIBC_2.0) [LSB] openpty(GLIBC_2.0) [LSB] 4663 4664 V. Package Format and Installation 4665 4666 Table of Contents 4667 13. Software Installation 4668 4669 13.1. Package Dependencies 4670 13.2. Package Architecture Considerations 4671 _________________________________________________________ 4672 4673 Chapter 13. Software Installation 4674 _________________________________________________________ 4675 4676 13.1. Package Dependencies 4677 4678 The LSB runtime environment shall provde the following 4679 dependencies. 4680 4681 lsb-core-ia64 4682 4683 This dependency is used to indicate that the application is 4684 dependent on features contained in the LSB-Core specification. 4685 4686 This dependency shall have a version of 3.0. 4687 4688 Other LSB modules may add additional dependencies; such 4689 dependencies shall have the format lsb-module-ia64. 4690 _________________________________________________________ 4691 4692 13.2. Package Architecture Considerations 4693 4694 All packages must specify an architecture of IA64. A LSB 4695 runtime environment must accept an architecture of ia64 even 4696 if the native architecture is different. 4697 4698 The archnum value in the Lead Section shall be 0x0009. 4699 _________________________________________________________ 4700 4701 Appendix A. Alphabetical Listing of Interfaces 4702 _________________________________________________________ 4703 4704 A.1. libgcc_s 4705 4706 The behavior of the interfaces in this library is specified by 4707 the following Standards. 4708 4709 ISO/IEC 23360 Part 1 [LSB] 4710 4711 Table A-1. libgcc_s Function Interfaces 4712 _Unwind_Backtrace[LSB] _Unwind_GetCFA[LSB] 4713 _Unwind_RaiseException[LSB] 4714 _Unwind_DeleteException[LSB] _Unwind_GetGR[LSB] 4715 _Unwind_Resume[LSB] 4716 _Unwind_FindEnclosingFunction[LSB] _Unwind_GetIP[LSB] 4717 _Unwind_Resume_or_Rethrow[LSB] 4718 _Unwind_ForcedUnwind[LSB] _Unwind_GetLanguageSpecificData[LSB] 4719 _Unwind_SetGR[LSB] 4720 _Unwind_GetBSP[LSB] _Unwind_GetRegionStart[LSB] 4721 _Unwind_SetIP[LSB] 4722 _________________________________________________________ 4723 4724 A.2. libm 4725 4726 The behavior of the interfaces in this library is specified by 4727 the following Standards. 4728 4729 ISO C (1999) [ISOC99] 4730 ISO/IEC 23360 Part 1 [LSB] 4731 ISO POSIX (2003) [SUSv3] 4732 4733 Table A-2. libm Function Interfaces 4734 __fpclassifyl[LSB] __signbitl[ISOC99] exp2l[SUSv3] 4735 _________________________________________________________ 4736 4737 Appendix B. GNU Free Documentation License (Informative) 4738 4739 This specification is published under the terms of the GNU 4740 Free Documentation License, Version 1.1, March 2000 4741 4742 Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple 4743 Place, Suite 330, Boston, MA 02111-1307 USA Everyone is 4744 permitted to copy and distribute verbatim copies of this 4745 license document, but changing it is not allowed. 4746 _________________________________________________________ 4747 4748 B.1. PREAMBLE 4749 4750 The purpose of this License is to make a manual, textbook, or 4751 other written document "free" in the sense of freedom: to 4752 assure everyone the effective freedom to copy and redistribute 4753 it, with or without modifying it, either commercially or 4754 noncommercially. Secondarily, this License preserves for the 4755 author and publisher a way to get credit for their work, while 4756 not being considered responsible for modifications made by 4757 others. 4758 4759 This License is a kind of "copyleft", which means that 4760 derivative works of the document must themselves be free in 4761 the same sense. It complements the GNU General Public License, 4762 which is a copyleft license designed for free software. 4763 4764 We have designed this License in order to use it for manuals 4765 for free software, because free software needs free 4766 documentation: a free program should come with manuals 4767 providing the same freedoms that the software does. But this 4768 License is not limited to software manuals; it can be used for 4769 any textual work, regardless of subject matter or whether it 4770 is published as a printed book. We recommend this License 4771 principally for works whose purpose is instruction or 4772 reference. 4773 _________________________________________________________ 4774 4775 B.2. APPLICABILITY AND DEFINITIONS 4776 4777 This License applies to any manual or other work that contains 4778 a notice placed by the copyright holder saying it can be 4779 distributed under the terms of this License. The "Document", 4780 below, refers to any such manual or work. Any member of the 4781 public is a licensee, and is addressed as "you". 4782 4783 A "Modified Version" of the Document means any work containing 4784 the Document or a portion of it, either copied verbatim, or 4785 with modifications and/or translated into another language. 4786 4787 A "Secondary Section" is a named appendix or a front-matter 4788 section of the Document that deals exclusively with the 4789 relationship of the publishers or authors of the Document to 4790 the Document's overall subject (or to related matters) and 4791 contains nothing that could fall directly within that overall 4792 subject. (For example, if the Document is in part a textbook 4793 of mathematics, a Secondary Section may not explain any 4794 mathematics.) The relationship could be a matter of historical 4795 connection with the subject or with related matters, or of 4796 legal, commercial, philosophical, ethical or political 4797 position regarding them. 4798 4799 The "Invariant Sections" are certain Secondary Sections whose 4800 titles are designated, as being those of Invariant Sections, 4801 in the notice that says that the Document is released under 4802 this License. 4803 4804 The "Cover Texts" are certain short passages of text that are 4805 listed, as Front-Cover Texts or Back-Cover Texts, in the 4806 notice that says that the Document is released under this 4807 License. 4808 4809 A "Transparent" copy of the Document means a machine-readable 4810 copy, represented in a format whose specification is available 4811 to the general public, whose contents can be viewed and edited 4812 directly and straightforwardly with generic text editors or 4813 (for images composed of pixels) generic paint programs or (for 4814 drawings) some widely available drawing editor, and that is 4815 suitable for input to text formatters or for automatic 4816 translation to a variety of formats suitable for input to text 4817 formatters. A copy made in an otherwise Transparent file 4818 format whose markup has been designed to thwart or discourage 4819 subsequent modification by readers is not Transparent. A copy 4820 that is not "Transparent" is called "Opaque". 4821 4822 Examples of suitable formats for Transparent copies include 4823 plain ASCII without markup, Texinfo input format, LaTeX input 4824 format, SGML or XML using a publicly available DTD, and 4825 standard-conforming simple HTML designed for human 4826 modification. Opaque formats include PostScript, PDF, 4827 proprietary formats that can be read and edited only by 4828 proprietary word processors, SGML or XML for which the DTD 4829 and/or processing tools are not generally available, and the 4830 machine-generated HTML produced by some word processors for 4831 output purposes only. 4832 4833 The "Title Page" means, for a printed book, the title page 4834 itself, plus such following pages as are needed to hold, 4835 legibly, the material this License requires to appear in the 4836 title page. For works in formats which do not have any title 4837 page as such, "Title Page" means the text near the most 4838 prominent appearance of the work's title, preceding the 4839 beginning of the body of the text. 4840 _________________________________________________________ 4841 4842 B.3. VERBATIM COPYING 4843 4844 You may copy and distribute the Document in any medium, either 4845 commercially or noncommercially, provided that this License, 4846 the copyright notices, and the license notice saying this 4847 License applies to the Document are reproduced in all copies, 4848 and that you add no other conditions whatsoever to those of 4849 this License. You may not use technical measures to obstruct 4850 or control the reading or further copying of the copies you 4851 make or distribute. However, you may accept compensation in 4852 exchange for copies. If you distribute a large enough number 4853 of copies you must also follow the conditions in section 3. 4854 4855 You may also lend copies, under the same conditions stated 4856 above, and you may publicly display copies. 4857 _________________________________________________________ 4858 4859 B.4. COPYING IN QUANTITY 4860 4861 If you publish printed copies of the Document numbering more 4862 than 100, and the Document's license notice requires Cover 4863 Texts, you must enclose the copies in covers that carry, 4864 clearly and legibly, all these Cover Texts: Front-Cover Texts 4865 on the front cover, and Back-Cover Texts on the back cover. 4866 Both covers must also clearly and legibly identify you as the 4867 publisher of these copies. The front cover must present the 4868 full title with all words of the title equally prominent and 4869 visible. You may add other material on the covers in addition. 4870 Copying with changes limited to the covers, as long as they 4871 preserve the title of the Document and satisfy these 4872 conditions, can be treated as verbatim copying in other 4873 respects. 4874 4875 If the required texts for either cover are too voluminous to 4876 fit legibly, you should put the first ones listed (as many as 4877 fit reasonably) on the actual cover, and continue the rest 4878 onto adjacent pages. 4879 4880 If you publish or distribute Opaque copies of the Document 4881 numbering more than 100, you must either include a 4882 machine-readable Transparent copy along with each Opaque copy, 4883 or state in or with each Opaque copy a publicly-accessible 4884 computer-network location containing a complete Transparent 4885 copy of the Document, free of added material, which the 4886 general network-using public has access to download 4887 anonymously at no charge using public-standard network 4888 protocols. If you use the latter option, you must take 4889 reasonably prudent steps, when you begin distribution of 4890 Opaque copies in quantity, to ensure that this Transparent 4891 copy will remain thus accessible at the stated location until 4892 at least one year after the last time you distribute an Opaque 4893 copy (directly or through your agents or retailers) of that 4894 edition to the public. 4895 4896 It is requested, but not required, that you contact the 4897 authors of the Document well before redistributing any large 4898 number of copies, to give them a chance to provide you with an 4899 updated version of the Document. 4900 _________________________________________________________ 4901 4902 B.5. MODIFICATIONS 4903 4904 You may copy and distribute a Modified Version of the Document 4905 under the conditions of sections 2 and 3 above, provided that 4906 you release the Modified Version under precisely this License, 4907 with the Modified Version filling the role of the Document, 4908 thus licensing distribution and modification of the Modified 4909 Version to whoever possesses a copy of it. In addition, you 4910 must do these things in the Modified Version: 4911 4912 A. Use in the Title Page (and on the covers, if any) a title 4913 distinct from that of the Document, and from those of 4914 previous versions (which should, if there were any, be 4915 listed in the History section of the Document). You may 4916 use the same title as a previous version if the original 4917 publisher of that version gives permission. 4918 B. List on the Title Page, as authors, one or more persons or 4919 entities responsible for authorship of the modifications 4920 in the Modified Version, together with at least five of 4921 the principal authors of the Document (all of its 4922 principal authors, if it has less than five). 4923 C. State on the Title page the name of the publisher of the 4924 Modified Version, as the publisher. 4925 D. Preserve all the copyright notices of the Document. 4926 E. Add an appropriate copyright notice for your modifications 4927 adjacent to the other copyright notices. 4928 F. Include, immediately after the copyright notices, a 4929 license notice giving the public permission to use the 4930 Modified Version under the terms of this License, in the 4931 form shown in the Addendum below. 4932 G. Preserve in that license notice the full lists of 4933 Invariant Sections and required Cover Texts given in the 4934 Document's license notice. 4935 H. Include an unaltered copy of this License. 4936 I. Preserve the section entitled "History", and its title, 4937 and add to it an item stating at least the title, year, 4938 new authors, and publisher of the Modified Version as 4939 given on the Title Page. If there is no section entitled 4940 "History" in the Document, create one stating the title, 4941 year, authors, and publisher of the Document as given on 4942 its Title Page, then add an item describing the Modified 4943 Version as stated in the previous sentence. 4944 J. Preserve the network location, if any, given in the 4945 Document for public access to a Transparent copy of the 4946 Document, and likewise the network locations given in the 4947 Document for previous versions it was based on. These may 4948 be placed in the "History" section. You may omit a network 4949 location for a work that was published at least four years 4950 before the Document itself, or if the original publisher 4951 of the version it refers to gives permission. 4952 K. In any section entitled "Acknowledgements" or 4953 "Dedications", preserve the section's title, and preserve 4954 in the section all the substance and tone of each of the 4955 contributor acknowledgements and/or dedications given 4956 therein. 4957 L. Preserve all the Invariant Sections of the Document, 4958 unaltered in their text and in their titles. Section 4959 numbers or the equivalent are not considered part of the 4960 section titles. 4961 M. Delete any section entitled "Endorsements". Such a section 4962 may not be included in the Modified Version. 4963 N. Do not retitle any existing section as "Endorsements" or 4964 to conflict in title with any Invariant Section. 4965 4966 If the Modified Version includes new front-matter sections or 4967 appendices that qualify as Secondary Sections and contain no 4968 material copied from the Document, you may at your option 4969 designate some or all of these sections as invariant. To do 4970 this, add their titles to the list of Invariant Sections in 4971 the Modified Version's license notice. These titles must be 4972 distinct from any other section titles. 4973 4974 You may add a section entitled "Endorsements", provided it 4975 contains nothing but endorsements of your Modified Version by 4976 various parties--for example, statements of peer review or 4977 that the text has been approved by an organization as the 4978 authoritative definition of a standard. 4979 4980 You may add a passage of up to five words as a Front-Cover 4981 Text, and a passage of up to 25 words as a Back-Cover Text, to 4982 the end of the list of Cover Texts in the Modified Version. 4983 Only one passage of Front-Cover Text and one of Back-Cover 4984 Text may be added by (or through arrangements made by) any one 4985 entity. If the Document already includes a cover text for the 4986 same cover, previously added by you or by arrangement made by 4987 the same entity you are acting on behalf of, you may not add 4988 another; but you may replace the old one, on explicit 4989 permission from the previous publisher that added the old one. 4990 4991 The author(s) and publisher(s) of the Document do not by this 4992 License give permission to use their names for publicity for 4993 or to assert or imply endorsement of any Modified Version. 4994 _________________________________________________________ 4995 4996 B.6. COMBINING DOCUMENTS 4997 4998 You may combine the Document with other documents released 4999 under this License, under the terms defined in section 4 above 5000 for modified versions, provided that you include in the 5001 combination all of the Invariant Sections of all of the 5002 original documents, unmodified, and list them all as Invariant 5003 Sections of your combined work in its license notice. 5004 5005 The combined work need only contain one copy of this License, 5006 and multiple identical Invariant Sections may be replaced with 5007 a single copy. If there are multiple Invariant Sections with 5008 the same name but different contents, make the title of each 5009 such section unique by adding at the end of it, in 5010 parentheses, the name of the original author or publisher of 5011 that section if known, or else a unique number. Make the same 5012 adjustment to the section titles in the list of Invariant 5013 Sections in the license notice of the combined work. 5014 5015 In the combination, you must combine any sections entitled 5016 "History" in the various original documents, forming one 5017 section entitled "History"; likewise combine any sections 5018 entitled "Acknowledgements", and any sections entitled 5019 "Dedications". You must delete all sections entitled 5020 "Endorsements." 5021 _________________________________________________________ 5022 5023 B.7. COLLECTIONS OF DOCUMENTS 5024 5025 You may make a collection consisting of the Document and other 5026 documents released under this License, and replace the 5027 individual copies of this License in the various documents 5028 with a single copy that is included in the collection, 5029 provided that you follow the rules of this License for 5030 verbatim copying of each of the documents in all other 5031 respects. 5032 5033 You may extract a single document from such a collection, and 5034 distribute it individually under this License, provided you 5035 insert a copy of this License into the extracted document, and 5036 follow this License in all other respects regarding verbatim 5037 copying of that document. 5038 _________________________________________________________ 5039 5040 B.8. AGGREGATION WITH INDEPENDENT WORKS 5041 5042 A compilation of the Document or its derivatives with other 5043 separate and independent documents or works, in or on a volume 5044 of a storage or distribution medium, does not as a whole count 5045 as a Modified Version of the Document, provided no compilation 5046 copyright is claimed for the compilation. Such a compilation 5047 is called an "aggregate", and this License does not apply to 5048 the other self-contained works thus compiled with the 5049 Document, on account of their being thus compiled, if they are 5050 not themselves derivative works of the Document. 5051 5052 If the Cover Text requirement of section 3 is applicable to 5053 these copies of the Document, then if the Document is less 5054 than one quarter of the entire aggregate, the Document's Cover 5055 Texts may be placed on covers that surround only the Document 5056 within the aggregate. Otherwise they must appear on covers 5057 around the whole aggregate. 5058 _________________________________________________________ 5059 5060 B.9. TRANSLATION 5061 5062 Translation is considered a kind of modification, so you may 5063 distribute translations of the Document under the terms of 5064 section 4. Replacing Invariant Sections with translations 5065 requires special permission from their copyright holders, but 5066 you may include translations of some or all Invariant Sections 5067 in addition to the original versions of these Invariant 5068 Sections. You may include a translation of this License 5069 provided that you also include the original English version of 5070 this License. In case of a disagreement between the 5071 translation and the original English version of this License, 5072 the original English version will prevail. 5073 _________________________________________________________ 5074 5075 B.10. TERMINATION 5076 5077 You may not copy, modify, sublicense, or distribute the 5078 Document except as expressly provided for under this License. 5079 Any other attempt to copy, modify, sublicense or distribute 5080 the Document is void, and will automatically terminate your 5081 rights under this License. However, parties who have received 5082 copies, or rights, from you under this License will not have 5083 their licenses terminated so long as such parties remain in 5084 full compliance. 5085 _________________________________________________________ 5086 5087 B.11. FUTURE REVISIONS OF THIS LICENSE 5088 5089 The Free Software Foundation may publish new, revised versions 5090 of the GNU Free Documentation License from time to time. Such 5091 new versions will be similar in spirit to the present version, 5092 but may differ in detail to address new problems or concerns. 5093 See http://www.gnu.org/copyleft/. 5094 5095 Each version of the License is given a distinguishing version 5096 number. If the Document specifies that a particular numbered 5097 version of this License "or any later version" applies to it, 5098 you have the option of following the terms and conditions 5099 either of that specified version or of any later version that 5100 has been published (not as a draft) by the Free Software 5101 Foundation. If the Document does not specify a version number 5102 of this License, you may choose any version ever published 5103 (not as a draft) by the Free Software Foundation. 5104 _________________________________________________________ 5105 5106 B.12. How to use this License for your documents 5107 5108 To use this License in a document you have written, include a 5109 copy of the License in the document and put the following 5110 copyright and license notices just after the title page: 5111 5112 Copyright (c) YEAR YOUR NAME. Permission is granted to 5113 copy, distribute and/or modify this document under the 5114 terms of the GNU Free Documentation License, Version 1.1 or 5115 any later version published by the Free Software 5116 Foundation; with the Invariant Sections being LIST THEIR 5117 TITLES, with the Front-Cover Texts being LIST, and with the 5118 Back-Cover Texts being LIST. A copy of the license is 5119 included in the section entitled "GNU Free Documentation 5120 License". 5121 5122 If you have no Invariant Sections, write "with no Invariant 5123 Sections" instead of saying which ones are invariant. If you 5124 have no Front-Cover Texts, write "no Front-Cover Texts" 5125 instead of "Front-Cover Texts being LIST"; likewise for 5126 Back-Cover Texts. 5127 5128 If your document contains nontrivial examples of program code, 5129 we recommend releasing these examples in parallel under your 5130 choice of free software license, such as the GNU General 5131 Public License, to permit their use in free software.