1 2 Linux Standard Base Core Specification for IA64 3.1 3 4 Copyright © 2004, 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 a trademark of Linus Torvalds. 28 29 UNIX a registered trademark of the Open Group in the United 30 States and other countries. 31 32 LSB is a trademark of the Free Standards Group in the USA and 33 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 trademarks of Intel Corporation. 39 40 PowerPC and PowerPC Architecture are trademarks of the IBM 41 Corporation. 42 43 OpenGL is a registered trademark of Silicon Graphics, Inc. 44 _________________________________________________________ 45 46 Table of Contents 47 Foreword 48 Introduction 49 I. Introductory Elements 50 51 1. Scope 52 53 1.1. General 54 1.2. Module Specific Scope 55 56 2. References 57 58 2.1. Normative References 59 2.2. Informative References/Bibliography 60 61 3. Requirements 62 63 3.1. Relevant Libraries 64 3.2. LSB Implementation Conformance 65 3.3. LSB Application Conformance 66 67 4. Definitions 68 5. Terminology 69 6. Documentation Conventions 70 71 II. Executable and Linking Format (ELF) 72 73 7. Introduction 74 8. Low Level System Information 75 76 8.1. Machine Interface 77 8.2. Function Calling Sequence 78 8.3. Operating System Interface 79 8.4. Process Initialization 80 8.5. Coding Examples 81 8.6. C Stack Frame 82 8.7. Debug Information 83 84 9. Object Format 85 86 9.1. Introduction 87 9.2. ELF Header 88 9.3. Sections 89 9.4. Symbol Table 90 9.5. Relocation 91 92 10. Program Loading and Dynamic Linking 93 94 10.1. Introduction 95 10.2. Program Header 96 10.3. Program Loading 97 10.4. Dynamic Linking 98 99 III. Base Libraries 100 101 11. Libraries 102 103 11.1. Program Interpreter/Dynamic Linker 104 11.2. Interfaces for libc 105 11.3. Data Definitions for libc 106 11.4. Interfaces for libm 107 11.5. Data Definitions for libm 108 11.6. Interfaces for libpthread 109 11.7. Data Definitions for libpthread 110 11.8. Interfaces for libgcc_s 111 11.9. Data Definitions for libgcc_s 112 11.10. Interface Definitions for libgcc_s 113 11.11. Interfaces for libdl 114 11.12. Data Definitions for libdl 115 11.13. Interfaces for libcrypt 116 117 IV. Utility Libraries 118 119 12. Libraries 120 121 12.1. Interfaces for libz 122 12.2. Data Definitions for libz 123 12.3. Interfaces for libncurses 124 12.4. Data Definitions for libncurses 125 12.5. Interfaces for libutil 126 127 V. Package Format and Installation 128 129 13. Software Installation 130 131 13.1. Package Dependencies 132 13.2. Package Architecture Considerations 133 134 A. Alphabetical Listing of Interfaces 135 136 A.1. libgcc_s 137 A.2. libm 138 139 B. GNU Free Documentation License (Informative) 140 141 B.1. PREAMBLE 142 B.2. APPLICABILITY AND DEFINITIONS 143 B.3. VERBATIM COPYING 144 B.4. COPYING IN QUANTITY 145 B.5. MODIFICATIONS 146 B.6. COMBINING DOCUMENTS 147 B.7. COLLECTIONS OF DOCUMENTS 148 B.8. AGGREGATION WITH INDEPENDENT WORKS 149 B.9. TRANSLATION 150 B.10. TERMINATION 151 B.11. FUTURE REVISIONS OF THIS LICENSE 152 B.12. How to use this License for your documents 153 154 List of Figures 155 8-1. Structure Smaller Than A Word 156 8-2. No Padding 157 8-3. Internal and Tail Padding 158 8-4. Bit-Field Ranges 159 160 List of Tables 161 2-1. Normative References 162 2-2. Other References 163 3-1. Standard Library Names 164 8-1. Scalar Types 165 9-1. Additional Processor-Specific Flags 166 9-2. ELF Special Sections 167 9-3. Additional Special Sections 168 11-1. libc Definition 169 11-2. libc - RPC Function Interfaces 170 11-3. libc - System Calls Function Interfaces 171 11-4. libc - Standard I/O Function Interfaces 172 11-5. libc - Standard I/O Data Interfaces 173 11-6. libc - Signal Handling Function Interfaces 174 11-7. libc - Signal Handling Data Interfaces 175 11-8. libc - Localization Functions Function Interfaces 176 11-9. libc - Localization Functions Data Interfaces 177 11-10. libc - Socket Interface Function Interfaces 178 11-11. libc - Wide Characters Function Interfaces 179 11-12. libc - String Functions Function Interfaces 180 11-13. libc - IPC Functions Function Interfaces 181 11-14. libc - Regular Expressions Function Interfaces 182 11-15. libc - Character Type Functions Function Interfaces 183 11-16. libc - Time Manipulation Function Interfaces 184 11-17. libc - Time Manipulation Data Interfaces 185 11-18. libc - Terminal Interface Functions Function Interfaces 186 11-19. libc - System Database Interface Function Interfaces 187 11-20. libc - Language Support Function Interfaces 188 11-21. libc - Large File Support Function Interfaces 189 11-22. libc - Standard Library Function Interfaces 190 11-23. libc - Standard Library Data Interfaces 191 11-24. libm Definition 192 11-25. libm - Math Function Interfaces 193 11-26. libm - Math Data Interfaces 194 11-27. libpthread Definition 195 11-28. libpthread - Realtime Threads Function Interfaces 196 11-29. libpthread - Posix Threads Function Interfaces 197 11-30. libpthread - Thread aware versions of libc interfaces 198 Function Interfaces 199 200 11-31. libgcc_s Definition 201 11-32. libgcc_s - Unwind Library Function Interfaces 202 11-33. libdl Definition 203 11-34. libdl - Dynamic Loader Function Interfaces 204 11-35. libcrypt Definition 205 11-36. libcrypt - Encryption Function Interfaces 206 12-1. libz Definition 207 12-2. libncurses Definition 208 12-3. libutil Definition 209 12-4. libutil - Utility Functions Function Interfaces 210 A-1. libgcc_s Function Interfaces 211 A-2. libm Function Interfaces 212 _________________________________________________________ 213 214 Foreword 215 216 This is version 3.1 of the Linux Standard Base Core 217 Specification for IA64. This specification is part of a family 218 of specifications under the general title "Linux Standard 219 Base". Developers of applications or implementations 220 interested in using the LSB trademark should see the Free 221 Standards Group Certification Policy for details. 222 _________________________________________________________ 223 224 Introduction 225 226 The LSB defines a binary interface for application programs 227 that are compiled and packaged for LSB-conforming 228 implementations on many different hardware architectures. 229 Since a binary specification shall include information 230 specific to the computer processor architecture for which it 231 is intended, it is not possible for a single document to 232 specify the interface for all possible LSB-conforming 233 implementations. Therefore, the LSB is a family of 234 specifications, rather than a single one. 235 236 This document should be used in conjunction with the documents 237 it references. This document enumerates the system components 238 it includes, but descriptions of those components may be 239 included entirely or partly in this document, partly in other 240 documents, or entirely in other reference documents. For 241 example, the section that describes system service routines 242 includes a list of the system routines supported in this 243 interface, formal declarations of the data structures they use 244 that are visible to applications, and a pointer to the 245 underlying referenced specification for information about the 246 syntax and semantics of each call. Only those routines not 247 described in standards referenced by this document, or 248 extensions to those standards, are described in the detail. 249 Information referenced in this way is as much a part of this 250 document as is the information explicitly included here. 251 252 The specification carries a version number of either the form 253 x.y or x.y.z. This version number carries the following 254 meaning: 255 256 * The first number (x) is the major version number. All 257 versions with the same major version number should share 258 binary compatibility. Any addition or deletion of a new 259 library results in a new version number. Interfaces marked 260 as deprecated may be removed from the specification at a 261 major version change. 262 * The second number (y) is the minor version number. 263 Individual interfaces may be added if all certified 264 implementations already had that (previously undocumented) 265 interface. Interfaces may be marked as deprecated at a 266 minor version change. Other minor changes may be permitted 267 at the discretion of the LSB workgroup. 268 * The third number (z), if present, is the editorial level. 269 Only editorial changes should be included in such 270 versions. 271 272 Since this specification is a descriptive Application Binary 273 Interface, and not a source level API specification, it is not 274 possible to make a guarantee of 100% backward compatibility 275 between major releases. However, it is the intent that those 276 parts of the binary interface that are visible in the source 277 level API will remain backward compatible from version to 278 version, except where a feature marked as "Deprecated" in one 279 release may be removed from a future release. 280 281 Implementors are strongly encouraged to make use of symbol 282 versioning to permit simultaneous support of applications 283 conforming to different releases of this specification. 284 285 I. Introductory Elements 286 287 Table of Contents 288 1. Scope 289 290 1.1. General 291 1.2. Module Specific Scope 292 293 2. References 294 295 2.1. Normative References 296 2.2. Informative References/Bibliography 297 298 3. Requirements 299 300 3.1. Relevant Libraries 301 3.2. LSB Implementation Conformance 302 3.3. LSB Application Conformance 303 304 4. Definitions 305 5. Terminology 306 6. Documentation Conventions 307 _________________________________________________________ 308 309 Chapter 1. Scope 310 311 1.1. General 312 313 The Linux Standard Base (LSB) defines a system interface for 314 compiled applications and a minimal environment for support of 315 installation scripts. Its purpose is to enable a uniform 316 industry standard environment for high-volume applications 317 conforming to the LSB. 318 319 These specifications are composed of two basic parts: A common 320 specification ("LSB-generic" or "generic LSB") describing 321 those parts of the interface that remain constant across all 322 implementations of the LSB, and an architecture-specific 323 supplement ("LSB-arch" or "archLSB") describing the parts of 324 the interface that vary by processor architecture. Together, 325 the LSB-generic and the architecture-specific supplement for a 326 single hardware architecture provide a complete interface 327 specification for compiled application programs on systems 328 that share a common hardware architecture. 329 330 The LSB-generic document shall be used in conjunction with an 331 architecture-specific supplement. Whenever a section of the 332 LSB-generic specification shall be supplemented by 333 architecture-specific information, the LSB-generic document 334 includes a reference to the architecture supplement. 335 Architecture supplements may also contain additional 336 information that is not referenced in the LSB-generic 337 document. 338 339 The LSB contains both a set of Application Program Interfaces 340 (APIs) and Application Binary Interfaces (ABIs). APIs may 341 appear in the source code of portable applications, while the 342 compiled binary of that application may use the larger set of 343 ABIs. A conforming implementation shall provide all of the 344 ABIs listed here. The compilation system may replace (e.g. by 345 macro definition) certain APIs with calls to one or more of 346 the underlying binary interfaces, and may insert calls to 347 binary interfaces as needed. 348 349 The LSB is primarily a binary interface definition. Not all of 350 the source level APIs available to applications may be 351 contained in this specification. 352 _________________________________________________________ 353 354 1.2. Module Specific Scope 355 356 This is the Itanium architecture specific Core module of the 357 Linux Standards Base (LSB). This module supplements the 358 generic LSB Core module with those interfaces that differ 359 between architectures. 360 361 Interfaces described in this module are mandatory except where 362 explicitly listed otherwise. Core interfaces may be 363 supplemented by other modules; all modules are built upon the 364 core. 365 _________________________________________________________ 366 367 Chapter 2. References 368 369 2.1. Normative References 370 371 The following referenced documents are indispensable for the 372 application of this document. For dated references, only the 373 edition cited applies. For undated references, the latest 374 edition of the referenced document (including any amendments) 375 applies. 376 377 Note: Where copies of a document are available on the World 378 Wide Web, a Uniform Resource Locator (URL) is given for 379 informative purposes only. This may point to a more recent 380 copy of the referenced specification, or may be out of 381 date. Reference copies of specifications at the revision 382 level indicated may be found at the Free Standards Group's 383 Reference Specifications site. 384 385 Table 2-1. Normative References 386 Name Title URL 387 Filesystem Hierarchy Standard Filesystem Hierarchy Standard 388 (FHS) 2.3 http://www.pathname.com/fhs/ 389 IEC 60559/IEEE 754 Floating Point IEC 60559:1989 Binary 390 floating-point arithmetic for microprocessor systems 391 http://www.ieee.org/ 392 Intel® Itanium (TM) Processor-specific Application Binary 393 Interface Intel® Itanium (TM) Processor-specific Application 394 Binary Interface 395 http://refspecs.freestandards.org/elf/IA64-SysV-psABI.pdf 396 ISO C (1999) ISO/IEC 9899: 1999, Programming Languages --C 397 ISO POSIX (2003) 398 399 ISO/IEC 9945-1:2003 Information technology -- Portable 400 Operating System Interface (POSIX) -- Part 1: Base Definitions 401 402 ISO/IEC 9945-2:2003 Information technology -- Portable 403 Operating System Interface (POSIX) -- Part 2: System 404 Interfaces 405 406 ISO/IEC 9945-3:2003 Information technology -- Portable 407 Operating System Interface (POSIX) -- Part 3: Shell and 408 Utilities 409 410 ISO/IEC 9945-4:2003 Information technology -- Portable 411 Operating System Interface (POSIX) -- Part 4: Rationale 412 413 Including Technical Cor. 1: 2004 414 http://www.unix.org/version3/ 415 Itanium (TM) Architecture Software Developer's Manual Volume 1 416 Itanium (TM) Architecture Software Developer's Manual Volume 417 1: Application Architecture 418 http://refspecs.freestandards.org/IA64-softdevman-vol1.pdf 419 Itanium (TM) Architecture Software Developer's Manual Volume 2 420 Itanium (TM) Architecture Software Developer's Manual Volume 421 2: System Architecture 422 http://refspecs.freestandards.org/IA64-softdevman-vol2.pdf 423 Itanium (TM) Architecture Software Developer's Manual Volume 3 424 Itanium (TM) Architecture Software Developer's Manual Volume 425 3: Instruction Set Reference 426 http://refspecs.freestandards.org/IA64-softdevman-vol3.pdf 427 Itanium (TM) Architecture Software Developer's Manual Volume 4 428 IA-64 Processor Reference: Intel® Itanium (TM) Processor 429 Reference Manual for Software Development 430 http://refspecs.freestandards.org/IA64-softdevman-vol4.pdf 431 Itanium (TM) Software Conventions and Runtime Guide Itanium 432 (TM) Software Conventions & Runtime Architecture Guide, 433 September 2000 434 http://refspecs.freestandards.org/IA64conventions.pdf 435 Large File Support Large File Support 436 http://www.UNIX-systems.org/version2/whatsnew/lfs20mar.html 437 SUSv2 CAE Specification, January 1997, System Interfaces and 438 Headers (XSH),Issue 5 (ISBN: 1-85912-181-0, C606) 439 http://www.opengroup.org/publications/catalog/un.htm 440 SUSv2 Commands and Utilities The Single UNIX® 441 Specification(SUS) Version 2, Commands and Utilities (XCU), 442 Issue 5 (ISBN: 1-85912-191-8, C604) 443 http://www.opengroup.org/publications/catalog/un.htm 444 SVID Issue 3 American Telephone and Telegraph Company, System 445 V Interface Definition, Issue 3 ; Morristown, NJ, UNIX Press, 446 1989.(ISBN 0201566524) 447 SVID Issue 4 System V Interface Definition,Fourth Edition 448 System V ABI System V Application Binary Interface, Edition 449 4.1 http://www.caldera.com/developers/devspecs/gabi41.pdf 450 System V ABI Update System V Application Binary Interface - 451 DRAFT - 17 December 2003 452 http://www.caldera.com/developers/gabi/2003-12-17/contents.htm 453 l 454 X/Open Curses CAE Specification, May 1996, X/Open Curses, 455 Issue 4, Version 2 (ISBN: 1-85912-171-3, C610), plus 456 Corrigendum U018 457 http://www.opengroup.org/publications/catalog/un.htm 458 _________________________________________________________ 459 460 2.2. Informative References/Bibliography 461 462 In addition, the specifications listed below provide essential 463 background information to implementors of this specification. 464 These references are included for information only. 465 466 Table 2-2. Other References 467 Name Title URL 468 DWARF Debugging Information Format, Revision 2.0.0 DWARF 469 Debugging Information Format, Revision 2.0.0 (July 27, 1993) 470 http://refspecs.freestandards.org/dwarf/dwarf-2.0.0.pdf 471 DWARF Debugging Information Format, Revision 3.0.0 (Draft) 472 DWARF Debugging Information Format, Revision 3.0.0 (Draft) 473 http://refspecs.freestandards.org/dwarf/ 474 ISO/IEC TR14652 ISO/IEC Technical Report 14652:2002 475 Specification method for cultural conventions 476 ITU-T V.42 International Telecommunication Union 477 Recommendation V.42 (2002): Error-correcting procedures for 478 DCEs using asynchronous-to-synchronous conversionITUV 479 http://www.itu.int/rec/recommendation.asp?type=folders&lang=e& 480 parent=T-REC-V.42 481 Li18nux Globalization Specification LI18NUX 2000 Globalization 482 Specification, Version 1.0 with Amendment 4 483 http://www.li18nux.org/docs/html/LI18NUX-2000-amd4.htm 484 Linux Allocated Device Registry LINUX ALLOCATED DEVICES 485 http://www.lanana.org/docs/device-list/devices.txt 486 PAM Open Software Foundation, Request For Comments: 86.0 , 487 October 1995, V. Samar & R.Schemers (SunSoft) 488 http://www.opengroup.org/tech/rfc/mirror-rfc/rfc86.0.txt 489 RFC 1321: The MD5 Message-Digest Algorithm IETF RFC 1321: The 490 MD5 Message-Digest Algorithm 491 http://www.ietf.org/rfc/rfc1321.txt 492 RFC 1831/1832 RPC & XDR IETF RFC 1831 & 1832 493 http://www.ietf.org/ 494 RFC 1833: Binding Protocols for ONC RPC Version 2 IETF RFC 495 1833: Binding Protocols for ONC RPC Version 2 496 http://www.ietf.org/rfc/rfc1833.txt 497 RFC 1950: ZLIB Compressed Data Format Specication IETF RFC 498 1950: ZLIB Compressed Data Format Specification 499 http://www.ietf.org/rfc/rfc1950.txt 500 RFC 1951: DEFLATE Compressed Data Format Specification IETF 501 RFC 1951: DEFLATE Compressed Data Format Specification version 502 1.3 http://www.ietf.org/rfc/rfc1951.txt 503 RFC 1952: GZIP File Format Specification IETF RFC 1952: GZIP 504 file format specification version 4.3 505 http://www.ietf.org/rfc/rfc1952.txt 506 RFC 2440: OpenPGP Message Format IETF RFC 2440: OpenPGP 507 Message Format http://www.ietf.org/rfc/rfc2440.txt 508 RFC 2821:Simple Mail Transfer Protocol IETF RFC 2821: Simple 509 Mail Transfer Protocol http://www.ietf.org/rfc/rfc2821.txt 510 RFC 2822:Internet Message Format IETF RFC 2822: Internet 511 Message Format http://www.ietf.org/rfc/rfc2822.txt 512 RFC 791:Internet Protocol IETF RFC 791: Internet Protocol 513 Specification http://www.ietf.org/rfc/rfc791.txt 514 RPM Package Format RPM Package Format V3.0 515 http://www.rpm.org/max-rpm/s1-rpm-file-format-rpm-file-format. 516 html 517 zlib Manual zlib 1.2 Manual http://www.gzip.org/zlib/ 518 _________________________________________________________ 519 520 Chapter 3. Requirements 521 522 3.1. Relevant Libraries 523 524 The libraries listed in Table 3-1 shall be available on IA64 525 Linux Standard Base systems, with the specified runtime names. 526 These names override or supplement the names specified in the 527 generic LSB specification. The specified program interpreter, 528 referred to as proginterp in this table, shall be used to load 529 the shared libraries specified by DT_NEEDED entries at run 530 time. 531 532 Table 3-1. Standard Library Names 533 Library Runtime Name 534 libm libm.so.6.1 535 libdl libdl.so.2 536 libcrypt libcrypt.so.1 537 libz libz.so.1 538 libncurses libncurses.so.5 539 libutil libutil.so.1 540 libc libc.so.6.1 541 libpthread libpthread.so.0 542 proginterp /lib/ld-lsb-ia64.so.3 543 libgcc_s libgcc_s.so.1 544 545 These libraries will be in an implementation-defined directory 546 which the dynamic linker shall search by default. 547 _________________________________________________________ 548 549 3.2. LSB Implementation Conformance 550 551 A conforming implementation is necessarily architecture 552 specific, and must provide the interfaces specified by both 553 the generic LSB Core specification and its relevant 554 architecture specific supplement. 555 556 Rationale: An implementation must provide at least the 557 interfaces specified in these specifications. It may also 558 provide additional interfaces. 559 560 A conforming implementation shall satisfy the following 561 requirements: 562 563 * A processor architecture represents a family of related 564 processors which may not have identical feature sets. The 565 architecture specific supplement to this specification for 566 a given target processor architecture describes a minimum 567 acceptable processor. The implementation shall provide all 568 features of this processor, whether in hardware or through 569 emulation transparent to the application. 570 * The implementation shall be capable of executing compiled 571 applications having the format and using the system 572 interfaces described in this document. 573 * The implementation shall provide libraries containing the 574 interfaces specified by this document, and shall provide a 575 dynamic linking mechanism that allows these interfaces to 576 be attached to applications at runtime. All the interfaces 577 shall behave as specified in this document. 578 * The map of virtual memory provided by the implementation 579 shall conform to the requirements of this document. 580 * The implementation's low-level behavior with respect to 581 function call linkage, system traps, signals, and other 582 such activities shall conform to the formats described in 583 this document. 584 * The implementation shall provide all of the mandatory 585 interfaces in their entirety. 586 * The implementation may provide one or more of the optional 587 interfaces. Each optional interface that is provided shall 588 be provided in its entirety. The product documentation 589 shall state which optional interfaces are provided. 590 * The implementation shall provide all files and utilities 591 specified as part of this document in the format defined 592 here and in other referenced documents. All commands and 593 utilities shall behave as required by this document. The 594 implementation shall also provide all mandatory components 595 of an application's runtime environment that are included 596 or referenced in this document. 597 * The implementation, when provided with standard data 598 formats and values at a named interface, shall provide the 599 behavior defined for those values and data formats at that 600 interface. However, a conforming implementation may 601 consist of components which are separately packaged and/or 602 sold. For example, a vendor of a conforming implementation 603 might sell the hardware, operating system, and windowing 604 system as separately packaged items. 605 * The implementation may provide additional interfaces with 606 different names. It may also provide additional behavior 607 corresponding to data values outside the standard ranges, 608 for standard named interfaces. 609 _________________________________________________________ 610 611 3.3. LSB Application Conformance 612 613 A conforming application is necessarily architecture specific, 614 and must conform to both the generic LSB Core specification 615 and its relevant architecture specific supplement. 616 617 A conforming application shall satisfy the following 618 requirements: 619 620 * Its executable files shall be either shell scripts or 621 object files in the format defined for the Object File 622 Format system interface. 623 * Its object files shall participate in dynamic linking as 624 defined in the Program Loading and Linking System 625 interface. 626 * It shall employ only the instructions, traps, and other 627 low-level facilities defined in the Low-Level System 628 interface as being for use by applications. 629 * If it requires any optional interface defined in this 630 document in order to be installed or to execute 631 successfully, the requirement for that optional interface 632 shall be stated in the application's documentation. 633 * It shall not use any interface or data format that is not 634 required to be provided by a conforming implementation, 635 unless: 636 + If such an interface or data format is supplied by 637 another application through direct invocation of that 638 application during execution, that application shall 639 be in turn an LSB conforming application. 640 + The use of that interface or data format, as well as 641 its source, shall be identified in the documentation 642 of the application. 643 * It shall not use any values for a named interface that are 644 reserved for vendor extensions. 645 646 A strictly conforming application shall not require or use any 647 interface, facility, or implementation-defined extension that 648 is not defined in this document in order to be installed or to 649 execute successfully. 650 _________________________________________________________ 651 652 Chapter 4. Definitions 653 654 For the purposes of this document, the following definitions, 655 as specified in the ISO/IEC Directives, Part 2, 2001, 4th 656 Edition, apply: 657 658 can 659 660 be able to; there is a possibility of; it is possible to 661 cannot 662 663 be unable to; there is no possibilty of; it is not possible to 664 may 665 666 is permitted; is allowed; is permissible 667 need not 668 669 it is not required that; no...is required 670 shall 671 672 is to; is required to; it is required that; has to; only...is 673 permitted; it is necessary 674 shall not 675 676 is not allowed [permitted] [acceptable] [permissible]; is 677 required to be not; is required that...be not; is not to be 678 should 679 680 it is recommended that; ought to 681 should not 682 683 it is not recommended that; ought not to 684 _________________________________________________________ 685 686 Chapter 5. Terminology 687 688 For the purposes of this document, the following terms apply: 689 690 archLSB 691 The architectural part of the LSB Specification which 692 describes the specific parts of the interface that are 693 platform specific. The archLSB is complementary to the 694 gLSB. 695 696 Binary Standard 697 The total set of interfaces that are available to be 698 used in the compiled binary code of a conforming 699 application. 700 701 gLSB 702 The common part of the LSB Specification that describes 703 those parts of the interface that remain constant 704 across all hardware implementations of the LSB. 705 706 implementation-defined 707 Describes a value or behavior that is not defined by 708 this document but is selected by an implementor. The 709 value or behavior may vary among implementations that 710 conform to this document. An application should not 711 rely on the existence of the value or behavior. An 712 application that relies on such a value or behavior 713 cannot be assured to be portable across conforming 714 implementations. The implementor shall document such a 715 value or behavior so that it can be used correctly by 716 an application. 717 718 Shell Script 719 A file that is read by an interpreter (e.g., awk). The 720 first line of the shell script includes a reference to 721 its interpreter binary. 722 723 Source Standard 724 The set of interfaces that are available to be used in 725 the source code of a conforming application. 726 727 undefined 728 Describes the nature of a value or behavior not defined 729 by this document which results from use of an invalid 730 program construct or invalid data input. The value or 731 behavior may vary among implementations that conform to 732 this document. An application should not rely on the 733 existence or validity of the value or behavior. An 734 application that relies on any particular value or 735 behavior cannot be assured to be portable across 736 conforming implementations. 737 738 unspecified 739 Describes the nature of a value or behavior not 740 specified by this document which results from use of a 741 valid program construct or valid data input. The value 742 or behavior may vary among implementations that conform 743 to this document. An application should not rely on the 744 existence or validity of the value or behavior. An 745 application that relies on any particular value or 746 behavior cannot be assured to be portable across 747 conforming implementations. 748 749 Other terms and definitions used in this document shall have 750 the same meaning as defined in Chapter 3 of the Base 751 Definitions volume of ISO POSIX (2003). 752 _________________________________________________________ 753 754 Chapter 6. Documentation Conventions 755 756 Throughout this document, the following typographic 757 conventions are used: 758 759 function() 760 761 the name of a function 762 command 763 764 the name of a command or utility 765 CONSTANT 766 767 a constant value 768 parameter 769 770 a parameter 771 variable 772 773 a variable 774 775 Throughout this specification, several tables of interfaces 776 are presented. Each entry in these tables has the following 777 format: 778 779 name 780 781 the name of the interface 782 (symver) 783 784 An optional symbol version identifier, if required. 785 [refno] 786 787 A reference number indexing the table of referenced 788 specifications that follows this table. 789 790 For example, 791 792 forkpty(GLIBC_2.0) [SUSv3] 793 794 refers to the interface named forkpty() with symbol version 795 GLIBC_2.0 that is defined in the SUSv3 reference. 796 797 Note: Symbol versions are defined in the architecture 798 specific supplements only. 799 800 II. Executable and Linking Format (ELF) 801 802 Table of Contents 803 7. Introduction 804 8. Low Level System Information 805 806 8.1. Machine Interface 807 808 8.1.1. Processor Architecture 809 8.1.2. Data Representation 810 811 8.2. Function Calling Sequence 812 813 8.2.1. Registers 814 8.2.2. Floating Point Registers 815 8.2.3. Stack Frame 816 8.2.4. Arguments 817 8.2.5. Return Values 818 819 8.3. Operating System Interface 820 821 8.3.1. Processor Execution Mode 822 8.3.2. Exception Interface 823 8.3.3. Signal Delivery 824 8.3.4. Debugging Support 825 8.3.5. Process Startup 826 827 8.4. Process Initialization 828 829 8.4.1. Special Registers 830 8.4.2. Process Stack (on entry) 831 8.4.3. Auxiliary Vector 832 8.4.4. Environment 833 834 8.5. Coding Examples 835 836 8.5.1. Introduction 837 8.5.2. Code Model Overview/Architecture Constraints 838 8.5.3. Position-Independent Function Prologue 839 8.5.4. Data Objects 840 8.5.5. Function Calls 841 8.5.6. Branching 842 843 8.6. C Stack Frame 844 845 8.6.1. Variable Argument List 846 8.6.2. Dynamic Allocation of Stack Space 847 848 8.7. Debug Information 849 850 9. Object Format 851 852 9.1. Introduction 853 9.2. ELF Header 854 855 9.2.1. Machine Information 856 857 9.3. Sections 858 859 9.3.1. Special Sections 860 9.3.2. Linux Special Sections 861 9.3.3. Section Types 862 9.3.4. Section Attribute Flags 863 9.3.5. Special Section Types 864 865 9.4. Symbol Table 866 9.5. Relocation 867 868 9.5.1. Relocation Types 869 870 10. Program Loading and Dynamic Linking 871 872 10.1. Introduction 873 10.2. Program Header 874 875 10.2.1. Types 876 10.2.2. Flags 877 878 10.3. Program Loading 879 10.4. Dynamic Linking 880 881 10.4.1. Dynamic Entries 882 10.4.2. Global Offset Table 883 10.4.3. Shared Object Dependencies 884 10.4.4. Function Addresses 885 10.4.5. Procedure Linkage Table 886 10.4.6. Initialization and Termination Functions 887 _________________________________________________________ 888 889 Chapter 7. Introduction 890 891 Executable and Linking Format (ELF) defines the object format 892 for compiled applications. This specification supplements the 893 information found in System V ABI Update and Intel® Itanium 894 (TM) Processor-specific Application Binary Interface, and is 895 intended to document additions made since the publication of 896 that document. 897 _________________________________________________________ 898 899 Chapter 8. Low Level System Information 900 901 8.1. Machine Interface 902 903 8.1.1. Processor Architecture 904 905 The Itanium(TM) Architecture is specified by the following 906 documents 907 908 * Itanium (TM) Architecture Software Developer's Manual 909 Volume 1 910 * Itanium (TM) Architecture Software Developer's Manual 911 Volume 2 912 * Itanium (TM) Architecture Software Developer's Manual 913 Volume 3 914 * Itanium (TM) Architecture Software Developer's Manual 915 Volume 4 916 * Itanium (TM) Software Conventions and Runtime Guide 917 * Intel® Itanium (TM) Processor-specific Application Binary 918 Interface 919 920 Only the features of the Itanium(TM) processor instruction set 921 may be assumed to be present. An application should determine 922 if any additional instruction set features are available 923 before using those additional features. If a feature is not 924 present, then the application may not use it. 925 926 Conforming applications may use only instructions which do not 927 require elevated privileges. 928 929 Conforming applications shall not invoke the implementations 930 underlying system call interface directly. The interfaces in 931 the implementation base libraries shall be used instead. 932 933 Rationale: Implementation-supplied base libraries may use 934 the system call interface but applications must not assume 935 any particular operating system or kernel version is 936 present. 937 938 There are some features of the Itanium(TM) processor 939 architecture that need not be supported by a conforming 940 implementation. These are described in this chapter. A 941 conforming application shall not rely on these features. 942 943 Applications conforming to this specification must provide 944 feedback to the user if a feature that is required for correct 945 execution of the application is not present. Applications 946 conforming to this specification should attempt to execute in 947 a diminished capacity if a required feature is not present. 948 949 This specfication does not provide any performance guarantees 950 of a conforming system. A system conforming to this 951 specification may be implemented in either hardware or 952 software. 953 954 This specification describes only LP64 (i.e. 32-bit integers, 955 64-bit longs and pointers) based implementations. 956 Implementations may also provide ILP32 (32-bit integers, 957 longs, and pointers), but conforming applications shall not 958 rely on support for ILP32. See section 1.2 of the Intel® 959 Itanium (TM) Processor-specific Application Binary Interface 960 for further information. 961 _________________________________________________________ 962 963 8.1.2. Data Representation 964 965 The following sections, in conjunction with section 4 of 966 Itanium (TM) Software Conventions and Runtime Guide, define 967 the size, alignment requirements, and hardware representation 968 of the standard C data types. 969 970 Within this specification, the term byte refers to an 8-bit 971 object, the term halfword refers to a 16-bit object, the term 972 word refers to a 32-bit object, the term doubleword refers to 973 a 64-bit object, and the term quadword refers to a 128-bit 974 object. 975 _________________________________________________________ 976 977 8.1.2.1. Byte Ordering 978 979 LSB-conforming applications shall use little-endian byte 980 ordering. LSB-conforming implementations may support 981 big-endian applications. 982 _________________________________________________________ 983 984 8.1.2.2. Fundamental Types 985 986 Table 8-1 describes how fundemental C language data types 987 shall be represented: 988 989 Table 8-1. Scalar Types 990 Type C sizeof Alignment (bytes) Hardware Representation 991 Integral _Bool 1 1 byte (sign unspecified) 992 char 1 1 signed byte 993 signed char 994 unsigned char signed byte 995 short 2 2 signed halfword 996 signed short 997 unsigned short unsigned halfword 998 int 4 4 signed word 999 signed int 1000 unsigned int unsigned word 1001 long 8 8 signed doubleword 1002 signed long 1003 unsigned long unsigned doubleword 1004 long long 8 8 signed doubleword 1005 signed long long 1006 unsigned long long unsigned doubleword 1007 Pointer any-type * 8 8 unsigned doubleword 1008 any-type (*)() 1009 Floating-Point float 4 4 IEEE Single-precision 1010 double 8 8 IEEE Double-precision 1011 long double 16 16 IEEE Double-extended 1012 1013 A null pointer (for all types) shall have the value zero. 1014 _________________________________________________________ 1015 1016 8.1.2.3. Aggregates and Unions 1017 1018 Aggregates (structures and arrays) and unions assume the 1019 alignment of their most strictly aligned component. The size 1020 of any object, including aggregates and unions, shall always 1021 be a multiple of the object's alignment. An array uses the 1022 same alignment as its elements. Structure and union objects 1023 may require padding to meet size and element constraints. The 1024 contents of such padding is undefined. 1025 1026 * An entire structure or union object shall be aligned on 1027 the same boundary as its most strictly aligned member. 1028 * Each member shall be assigned to the lowest available 1029 offset with the appropriate alignment. This may require 1030 internal padding, depending on the previous member. 1031 * A structure's size shall be increased, if necessary, to 1032 make it a multiple of the alignment. This may require tail 1033 padding, depending on the last member. 1034 1035 A conforming application shall not read padding. 1036 1037 struct { 1038 char c; 1039 } 1040 1041 Byte aligned, sizeof is 1 1042 Offset Byte 0 1043 0 c^0 1044 1045 Figure 8-1. Structure Smaller Than A Word 1046 1047 struct { 1048 char c; 1049 char d; 1050 short s; 1051 int i; 1052 long l; 1053 } 1054 1055 Doubleword Aligned, sizeof is 16 1056 Offset Byte 3 Byte 2 Byte 1 Byte 0 1057 0 s^2 d^1 c^0 1058 4 i^0 1059 8 l^0 1060 12 1061 1062 Figure 8-2. No Padding 1063 1064 struct { 1065 char c; 1066 long l; 1067 int i; 1068 short s; 1069 } 1070 1071 Doubleword Aligned, sizeof is 24 1072 Offset Byte 3 Byte 2 Byte 1 Byte 0 1073 0 pad^1 c^0 1074 4 pad^1 1075 8 l^0 1076 12 1077 16 i^0 1078 20 pad^2 s^0 1079 1080 Figure 8-3. Internal and Tail Padding 1081 _________________________________________________________ 1082 1083 8.1.2.4. Bit Fields 1084 1085 C struct and union definitions may have bit-fields, which 1086 define integral objects with a specified number of bits. 1087 1088 Bit fields that are declared with neither signed nor unsigned 1089 specifier shall always be treated as unsigned. Bit fields obey 1090 the same size and alignment rules as other structure and union 1091 members, with the following additional properties: 1092 1093 * Bit-fields are allocated from right to left (least to most 1094 significant). 1095 * A bit-field must entirely reside in a storage unit for its 1096 appropriate type. A bit field shall never cross its unit 1097 boundary. 1098 * Bit-fields may share a storage unit with other 1099 struct/union members, including members that are not bit 1100 fields. Such other struct/union members shall occupy 1101 different parts of the storage unit. 1102 * The type of unnamed bit-fields shall not affect the 1103 alignment of a structure or union, although individual 1104 bit-field member offsets shall obey the alignment 1105 constraints. 1106 1107 Bit-field Type Width w Range 1108 signed char 1109 char 1110 unsigned char 1111 1112 1 to 8 1113 -2^w-1 to 2^w-1-1 1114 0 to 2^w-1 1115 0 to 2^w-1 1116 1117 signed short 1118 short 1119 unsigned short 1120 1121 1 to 16 1122 -2^w-1 to 2^w-1-1 1123 0 to 2^w-1 1124 0 to 2^w-1 1125 1126 signed int 1127 int 1128 unsigned int 1129 1130 1 to 32 1131 -2^w-1 to 2^w-1-1 1132 0 to 2^w-1 1133 0 to 2^w-1 1134 1135 signed long 1136 long 1137 unsigned long 1138 1139 1 to 64 1140 -2^w-1 to 2^w-1-1 1141 0 to 2^w-1 1142 0 to 2^w-1 1143 1144 Figure 8-4. Bit-Field Ranges 1145 _________________________________________________________ 1146 1147 8.2. Function Calling Sequence 1148 1149 LSB-conforming applications shall use the procedure linkage 1150 and function calling sequence as defined in Chapter 8.4 of the 1151 Itanium (TM) Software Conventions and Runtime Guide. 1152 _________________________________________________________ 1153 1154 8.2.1. Registers 1155 1156 The CPU general and other registers are as defined in the 1157 Itanium (TM) Architecture Software Developer's Manual Volume 1 1158 Section 3.1. 1159 _________________________________________________________ 1160 1161 8.2.2. Floating Point Registers 1162 1163 The floating point registers are as defined in the Itanium 1164 (TM) Architecture Software Developer's Manual Volume 1 Section 1165 3.1. 1166 _________________________________________________________ 1167 1168 8.2.3. Stack Frame 1169 1170 The stackframe layout is as described in the Itanium (TM) 1171 Software Conventions and Runtime Guide Chapter 8.4. 1172 _________________________________________________________ 1173 1174 8.2.4. Arguments 1175 1176 8.2.4.1. Introduction 1177 1178 The procedure parameter passing mechanism is as described in 1179 the Itanium (TM) Software Conventions and Runtime Guide 1180 Chapter 8.5. The following subsections provide additional 1181 information. 1182 _________________________________________________________ 1183 1184 8.2.4.2. Integral/Pointer 1185 1186 See Itanium (TM) Software Conventions and Runtime Guide 1187 Chapter 8.5. 1188 _________________________________________________________ 1189 1190 8.2.4.3. Floating Point 1191 1192 See Itanium (TM) Software Conventions and Runtime Guide 1193 Chapter 8.5. 1194 _________________________________________________________ 1195 1196 8.2.4.4. Struct and Union Point 1197 1198 See Itanium (TM) Software Conventions and Runtime Guide 1199 Chapter 8.5. 1200 _________________________________________________________ 1201 1202 8.2.4.5. Variable Arguments 1203 1204 See Itanium (TM) Software Conventions and Runtime Guide 1205 Chapter 8.5.4. 1206 _________________________________________________________ 1207 1208 8.2.5. Return Values 1209 1210 8.2.5.1. Introduction 1211 1212 Values are returned from functions as described in Itanium 1213 (TM) Software Conventions and Runtime Guide Chapter 8.6, and 1214 as further described here. 1215 _________________________________________________________ 1216 1217 8.2.5.2. Void 1218 1219 Functions that return no value (void functions) are not 1220 required to put any particular value in any general register. 1221 _________________________________________________________ 1222 1223 8.2.5.3. Integral/Pointer 1224 1225 See Itanium (TM) Software Conventions and Runtime Guide 1226 Chapter 8.6. 1227 _________________________________________________________ 1228 1229 8.2.5.4. Floating Point 1230 1231 See Itanium (TM) Software Conventions and Runtime Guide 1232 Chapter 8.6. 1233 _________________________________________________________ 1234 1235 8.2.5.5. Struct and Union 1236 1237 See Itanium (TM) Software Conventions and Runtime Guide 1238 Chapter 8.6 (aggregate return values). Depending on the size 1239 (including any padding), aggregate data types may be passed in 1240 one or more general registers, or in memory. 1241 _________________________________________________________ 1242 1243 8.3. Operating System Interface 1244 1245 LSB-conforming applications shall use the Operating System 1246 Interfaces as defined in Chapter 3 of the Intel® Itanium (TM) 1247 Processor-specific Application Binary Interface. 1248 _________________________________________________________ 1249 1250 8.3.1. Processor Execution Mode 1251 1252 Applications must assume that they will execute in the least 1253 privileged user mode (i.e. level 3). Other privilege levels 1254 are reserved for the Operating System. 1255 _________________________________________________________ 1256 1257 8.3.2. Exception Interface 1258 1259 8.3.2.1. Introduction 1260 1261 LSB-conforming implementations shall support the exception 1262 interface as specified in Intel® Itanium (TM) 1263 Processor-specific Application Binary Interface, section 1264 3.3.1. 1265 _________________________________________________________ 1266 1267 8.3.2.2. Hardware Exception Types 1268 1269 See Intel® Itanium (TM) Processor-specific Application Binary 1270 Interface, section 3.3.1. 1271 _________________________________________________________ 1272 1273 8.3.2.3. Software Trap Types 1274 1275 See Intel® Itanium (TM) Processor-specific Application Binary 1276 Interface, section 3.3.1. 1277 _________________________________________________________ 1278 1279 8.3.3. Signal Delivery 1280 1281 LSB-conforming systems shall deliver signals as specified in 1282 Intel® Itanium (TM) Processor-specific Application Binary 1283 Interface, section 3.3.2. 1284 _________________________________________________________ 1285 1286 8.3.3.1. Signal Handler Interface 1287 1288 The signal handler interface shall be as specified in Intel® 1289 Itanium (TM) Processor-specific Application Binary Interface, 1290 section 3.3.3. 1291 _________________________________________________________ 1292 1293 8.3.4. Debugging Support 1294 1295 The LSB does not specify debugging information. 1296 _________________________________________________________ 1297 1298 8.3.5. Process Startup 1299 1300 LSB-conforming systems shall initialize processes as specified 1301 in Intel® Itanium (TM) Processor-specific Application Binary 1302 Interface, section 3.3.5. 1303 _________________________________________________________ 1304 1305 8.4. Process Initialization 1306 1307 LSB-conforming applications shall use the Process Startup as 1308 defined in Section 3.3.5 of the Intel® Itanium (TM) 1309 Processor-specific Application Binary Interface. 1310 _________________________________________________________ 1311 1312 8.4.1. Special Registers 1313 1314 Intel® Itanium (TM) Processor-specific Application Binary 1315 Interface, section 3.3.5, defines required register 1316 initializations for process startup. 1317 _________________________________________________________ 1318 1319 8.4.2. Process Stack (on entry) 1320 1321 As defined in Intel® Itanium (TM) Processor-specific 1322 Application Binary Interface, section 3.3.5, the return 1323 pointer register (rp) shall contain a valid return address, 1324 such that if the application program returns from the main 1325 entry routine, the implementation shall cause the application 1326 to exit normally, using the returned value as the exit status. 1327 Further, the unwind information for this "bottom of stack" 1328 routine in the implementation shall provide a mechanism for 1329 recognizing the bottom of the stack during a stack unwind. 1330 _________________________________________________________ 1331 1332 8.4.3. Auxiliary Vector 1333 1334 The auxiliary vector conveys information from the operating 1335 system to the application. Only the terminating null auxiliary 1336 vector entry is required, but if any other entries are 1337 present, they shall be interpreted as follows. This vector is 1338 an array of the following structures. 1339 typedef struct 1340 { 1341 long int a_type; /* Entry type */ 1342 union 1343 { 1344 long int a_val; /* Integer value */ 1345 void *a_ptr; /* Pointer value */ 1346 void (*a_fcn) (void); /* Function pointer value */ 1347 } a_un; 1348 } auxv_t; 1349 1350 The application shall interpret the a_un value according to 1351 the a_type. Other auxiliary vector types are reserved. 1352 1353 The a_type field shall contain one of the following values: 1354 1355 AT_NULL 1356 1357 The last entry in the array has type AT_NULL. The value in 1358 a_un is undefined. 1359 AT_IGNORE 1360 1361 The value in a_un is undefined, and should be ignored. 1362 AT_EXECFD 1363 1364 File descriptor of program 1365 AT_PHDR 1366 1367 Program headers for program 1368 AT_PHENT 1369 1370 Size of program header entry 1371 AT_PHNUM 1372 1373 Number of program headers 1374 AT_PAGESZ 1375 1376 System page size 1377 AT_BASE 1378 1379 Base address of interpreter 1380 AT_FLAGS 1381 1382 Flags 1383 AT_ENTRY 1384 1385 Entry point of program 1386 AT_NOTELF 1387 1388 Program is not ELF 1389 AT_UID 1390 1391 Real uid 1392 AT_EUID 1393 1394 Effective uid 1395 AT_GID 1396 1397 Real gid 1398 AT_EGID 1399 1400 Effective gid 1401 AT_CLKTCK 1402 1403 Frequency of times() 1404 AT_PLATFORM 1405 1406 String identifying platform. 1407 AT_HWCAP 1408 1409 Machine dependent hints about processor capabilities. 1410 AT_FPUCW 1411 1412 Used FPU control word 1413 AT_DCACHEBSIZE 1414 1415 Data cache block size 1416 AT_ICACHEBSIZE 1417 1418 Instruction cache block size 1419 AT_UCACHEBSIZE 1420 1421 Unified cache block size 1422 1423 Note: The auxiliary vector is intended for passing 1424 information from the operating system to the program 1425 interpreter. 1426 _________________________________________________________ 1427 1428 8.4.4. Environment 1429 1430 Although a pointer to the environment vector should be 1431 available as a third argument to the main() entry point, 1432 conforming applications should use getenv() to access the 1433 environment. (See ISO POSIX (2003), Section exec()). 1434 _________________________________________________________ 1435 1436 8.5. Coding Examples 1437 1438 8.5.1. Introduction 1439 1440 LSB-conforming applications may implement fundamental 1441 operations using the Coding Examples as shown below. 1442 1443 Sample code sequences and coding conventions can be found in 1444 Itanium (TM) Software Conventions and Runtime Guide, Chapter 1445 9. 1446 _________________________________________________________ 1447 1448 8.5.2. Code Model Overview/Architecture Constraints 1449 1450 As defined in Intel® Itanium (TM) Processor-specific 1451 Application Binary Interface, relocatable files, executable 1452 files, and shared object files that are supplied as part of an 1453 application shall use Position Independent Code, as described 1454 in Itanium (TM) Software Conventions and Runtime Guide, 1455 Chapter 12. 1456 _________________________________________________________ 1457 1458 8.5.3. Position-Independent Function Prologue 1459 1460 See Itanium (TM) Software Conventions and Runtime Guide, 1461 Chapter 8.4. 1462 _________________________________________________________ 1463 1464 8.5.4. Data Objects 1465 1466 See Intel® Itanium (TM) Processor-specific Application Binary 1467 Interface, Chapter 5.3.4, and Itanium (TM) Software 1468 Conventions and Runtime Guide, Chapter 12.3. 1469 _________________________________________________________ 1470 1471 8.5.4.1. Absolute Load & Store 1472 1473 Conforming applications shall not use absolute addressing. 1474 _________________________________________________________ 1475 1476 8.5.4.2. Position Relative Load & Store 1477 1478 See Intel® Itanium (TM) Processor-specific Application Binary 1479 Interface, Chapter 5.3.4. 1480 _________________________________________________________ 1481 1482 8.5.5. Function Calls 1483 1484 See Itanium (TM) Software Conventions and Runtime Guide, 1485 Chapter 8.4. 1486 1487 Four types of procedure call are defined in Itanium (TM) 1488 Software Conventions and Runtime Guide, Chapter 8.3. Although 1489 special calling conventions are permitted, provided that the 1490 compiler and runtime library agree on these conventions, none 1491 are defined for this standard. Consequently, no application 1492 shall depend on a type of procedure call other than Direct 1493 Calls, Direct Dynamically Linked Calls, or Indirect Calls, as 1494 defined in Itanium (TM) Software Conventions and Runtime 1495 Guide, Chapter 8.3. 1496 _________________________________________________________ 1497 1498 8.5.5.1. Absolute Direct Function Call 1499 1500 Conforming applications shall not use absolute addressing. 1501 _________________________________________________________ 1502 1503 8.5.5.2. Absolute Indirect Function Call 1504 1505 Conforming applications shall not use absolute addressing. 1506 _________________________________________________________ 1507 1508 8.5.5.3. Position-Independent Direct Function Call 1509 1510 See Itanium (TM) Software Conventions and Runtime Guide, 1511 Chapter 8.4.1. 1512 _________________________________________________________ 1513 1514 8.5.5.4. Position-Independent Indirect Function Call 1515 1516 See Itanium (TM) Software Conventions and Runtime Guide, 1517 Chapter 8.4.2. 1518 _________________________________________________________ 1519 1520 8.5.6. Branching 1521 1522 Branching is described in Itanium (TM) Architecture Software 1523 Developer's Manual Volume 4, Chapter 4.5. 1524 _________________________________________________________ 1525 1526 8.5.6.1. Branch Instruction 1527 1528 See Itanium (TM) Architecture Software Developer's Manual 1529 Volume 4, Chapter 4.5. 1530 _________________________________________________________ 1531 1532 8.5.6.2. Absolute switch() code 1533 1534 Conforming applications shall not use absolute addressing. 1535 _________________________________________________________ 1536 1537 8.5.6.3. Position-Independent switch() code 1538 1539 Where there are several possible targets for a branch, the 1540 compiler may use a number of different code generation 1541 strategies. See Itanium (TM) Software Conventions and Runtime 1542 Guide, Chapter 9.1.7. 1543 _________________________________________________________ 1544 1545 8.6. C Stack Frame 1546 1547 8.6.1. Variable Argument List 1548 1549 See Itanium (TM) Software Conventions and Runtime Guide, 1550 Chapter 8.5.2, and 8.5.4. 1551 _________________________________________________________ 1552 1553 8.6.2. Dynamic Allocation of Stack Space 1554 1555 The C library alloca() function should be used to dynamically 1556 allocate stack space. 1557 _________________________________________________________ 1558 1559 8.7. Debug Information 1560 1561 The LSB does not currently specify the format of Debug 1562 information. 1563 _________________________________________________________ 1564 1565 Chapter 9. Object Format 1566 1567 9.1. Introduction 1568 1569 LSB-conforming implementations shall support an object file , 1570 called Executable and Linking Format (ELF) as defined by the 1571 System V ABI, Intel® Itanium (TM) Processor-specific 1572 Application Binary Interface and as supplemented by the Linux 1573 Standard Base Specification and this document. 1574 _________________________________________________________ 1575 1576 9.2. ELF Header 1577 1578 9.2.1. Machine Information 1579 1580 LSB-conforming applications shall use the Machine Information 1581 as defined in Intel® Itanium (TM) Processor-specific 1582 Application Binary Interface, Chapter 4. Implementations shall 1583 support the LP64 model. It is unspecified whether or not the 1584 ILP32 model shall also be supported. 1585 _________________________________________________________ 1586 1587 9.2.1.1. File Class 1588 1589 For LP64 relocatable objects, the file class value in 1590 e_ident[EI_CLASS] may be either ELFCLASS32 or ELFCLASS64, and 1591 a conforming linker must be able to process either or both 1592 classes. 1593 _________________________________________________________ 1594 1595 9.2.1.2. Data Encoding 1596 1597 Implementations shall support 2's complement, little endian 1598 data encoding. The data encoding value in e_ident[EI_DATA] 1599 shall contain the value ELFDATA2LSB. 1600 _________________________________________________________ 1601 1602 9.2.1.3. OS Identification 1603 1604 The OS Identification field e_ident[EI_OSABI] shall contain 1605 the value ELFOSABI_NONE. 1606 _________________________________________________________ 1607 1608 9.2.1.4. Processor Identification 1609 1610 The processor identification value held in e_machine shall 1611 contain the value EM_IA_64. 1612 _________________________________________________________ 1613 1614 9.2.1.5. Processor Specific Flags 1615 1616 The flags field e_flags shall be as described in Intel® 1617 Itanium (TM) Processor-specific Application Binary Interface, 1618 Chapter 4.1.1.6. 1619 1620 The following additional processor-specific flags are defined: 1621 1622 Table 9-1. Additional Processor-Specific Flags 1623 Name Value 1624 EF_IA_64_LINUX_EXECUTABLE_STACK 0x00000001 1625 1626 EF_IA_64_LINUX_EXECUTABLE_STACK 1627 The stack and heap sections are executable. If this 1628 flag is not set, code can not be executed from the 1629 stack or heap. 1630 _________________________________________________________ 1631 1632 9.3. Sections 1633 1634 The Itanium(TM) architecture defines two processor-specific 1635 section types, as described in Intel® Itanium (TM) 1636 Processor-specific Application Binary Interface, Chapter 4. 1637 _________________________________________________________ 1638 1639 9.3.1. Special Sections 1640 1641 The following sections are defined in the Intel® Itanium (TM) 1642 Processor-specific Application Binary Interface. 1643 1644 Table 9-2. ELF Special Sections 1645 Name Type Attributes 1646 .got SHT_PROGBITS SHF_ALLOC+SHF_WRITE+SHF_IA_64_SHORT 1647 .IA_64.archext SHT_IA_64_EXT 0 1648 .IA_64.pltoff SHT_PROGBITS SHF_ALLOC+SHF_WRITE+SHF_IA_64_SHORT 1649 .IA_64.unwind SHT_IA_64_UNWIND SHF_ALLOC+SHF_LINK_ORDER 1650 .IA_64.unwind_info SHT_PROGBITS SHF_ALLOC 1651 .plt SHT_PROGBITS SHF_ALLOC+SHF_EXECINSTR 1652 .sbss SHT_NOBITS SHF_ALLOC+SHF_WRITE+SHF_IA_64_SHORT 1653 .sdata SHT_PROGBITS SHF_ALLOC+SHF_WRITE+SHF_IA_64_SHORT 1654 .sdata1 SHT_PROGBITS SHF_ALLOC+SHF_WRITE+SHF_IA_64_SHORT 1655 1656 .got 1657 1658 This section holds the Global Offset Table. See `Coding 1659 Examples' in Chapter 3, `Special Sections' in Chapter 4, and 1660 `Global Offset Table' in Chapter 5 of the processor supplement 1661 for more information. 1662 .IA_64.archext 1663 1664 This section holds product-specific extension bits. The link 1665 editor will perform a logical "or" of the extension bits of 1666 each object when creating an executable so that it creates 1667 only a single .IA_64.archext section in the executable. 1668 .IA_64.pltoff 1669 1670 This section holds local function descriptor entries. 1671 .IA_64.unwind 1672 1673 This section holds the unwind function table. The contents are 1674 described in the Intel (r) Itanium (tm) Processor Specific 1675 ABI. 1676 .IA_64.unwind_info 1677 1678 This section holds stack unwind and and exception handling 1679 information. The exception handling information is programming 1680 language specific, and is unspecified. 1681 .plt 1682 1683 This section holds the Procedure Linkage Table. 1684 .sbss 1685 1686 This section holds uninitialized data that contribute to the 1687 program''s memory image. Data objects contained in this 1688 section are recommended to be eight bytes or less in size. The 1689 system initializes the data with zeroes when the program 1690 begins to run. The section occupies no file space, as 1691 indicated by the section type SHT_NOBITS. The .sbss section is 1692 placed so it may be accessed using short direct addressing (22 1693 bit offset from gp). 1694 .sdata 1695 1696 This section and the .sdata1 section hold initialized data 1697 that contribute to the program''s memory image. Data objects 1698 contained in this section are recommended to be eight bytes or 1699 less in size. The .sdata and .sdata1 sections are placed so 1700 they may be accessed using short direct addressing (22 bit 1701 offset from gp). 1702 .sdata1 1703 1704 See .sdata. 1705 _________________________________________________________ 1706 1707 9.3.2. Linux Special Sections 1708 1709 The following Linux IA-64 specific sections are defined here. 1710 1711 Table 9-3. Additional Special Sections 1712 Name Type Attributes 1713 .opd SHT_PROGBITS SHF_ALLOC 1714 .rela.dyn SHT_RELA SHF_ALLOC 1715 .rela.IA_64.pltoff SHT_RELA SHF_ALLOC 1716 1717 .opd 1718 1719 This section holds function descriptors 1720 .rela.dyn 1721 1722 This section holds relocation information, as described in 1723 `Relocation'. These relocations are applied to the .dyn 1724 section. 1725 .rela.IA_64.pltoff 1726 1727 This section holds relocation information, as described in 1728 `Relocation'. These relocations are applied to the 1729 .IA_64.pltoff section. 1730 _________________________________________________________ 1731 1732 9.3.3. Section Types 1733 1734 Section Types are described in the Intel® Itanium (TM) 1735 Processor-specific Application Binary Interface, Chapter 4.2. 1736 LSB conforming implementations are not required to use any 1737 sections in the range from SHT_IA_64_LOPSREG to 1738 SHT_IA_64_HIPSREG. Additionally, LSB conforming 1739 implementations are not required to support the 1740 SHT_IA_64_PRIORITY_INIT section, beyond the gABI requirements 1741 for the handling of unrecognized section types, linking them 1742 into a contiguous section in the object file created by the 1743 static linker. 1744 _________________________________________________________ 1745 1746 9.3.4. Section Attribute Flags 1747 1748 LSB-conforming implementations shall support the section 1749 attribute flags specified in Intel® Itanium (TM) 1750 Processor-specific Application Binary Interface, Chapter 1751 4.2.2. 1752 _________________________________________________________ 1753 1754 9.3.5. Special Section Types 1755 1756 The special section types SHT_IA64_EXT and SHT_IA64_UNWIND are 1757 defined in Intel® Itanium (TM) Processor-specific Application 1758 Binary Interface, Chapter 4.2.1. 1759 _________________________________________________________ 1760 1761 9.4. Symbol Table 1762 1763 If an executable file contains a reference to a function 1764 defined in one of its associated shared objects, the symbol 1765 table section for that file shall contain an entry for that 1766 symbol. The st_shndx member of that symbol table entry 1767 contains SHN_UNDEF. This signals to the dynamic linker that 1768 the symbol definition for that function is not contained in 1769 the executable file itself. If that symbol has been allocated 1770 a procedure linkage table entry in the executable file, and 1771 the st_value member for that symbol table entry is non-zero, 1772 the value shall contain the virtual address of the first 1773 instruction of that procedure linkage table entry. Otherwise, 1774 the st_value member contains zero. This procedure linkage 1775 table entry address is used by the dynamic linker in resolving 1776 references to the address of the function. 1777 _________________________________________________________ 1778 1779 9.5. Relocation 1780 1781 9.5.1. Relocation Types 1782 1783 LSB-conforming systems shall support the relocation types 1784 described in Intel® Itanium (TM) Processor-specific 1785 Application Binary Interface, Chapter 4.3. 1786 _________________________________________________________ 1787 1788 Chapter 10. Program Loading and Dynamic Linking 1789 1790 10.1. Introduction 1791 1792 LSB-conforming implementations shall support the object file 1793 information and system actions that create running programs as 1794 specified in the System V ABI, Intel® Itanium (TM) 1795 Processor-specific Application Binary Interface and as 1796 supplemented by the Linux Standard Base Specification and this 1797 document. 1798 _________________________________________________________ 1799 1800 10.2. Program Header 1801 1802 The program header shall be as defined in the Intel® Itanium 1803 (TM) Processor-specific Application Binary Interface, Chapter 1804 5. 1805 _________________________________________________________ 1806 1807 10.2.1. Types 1808 1809 See Intel® Itanium (TM) Processor-specific Application Binary 1810 Interface, Chapter 5.1. 1811 _________________________________________________________ 1812 1813 10.2.2. Flags 1814 1815 See Intel® Itanium (TM) Processor-specific Application Binary 1816 Interface, Chapter 5.1. 1817 _________________________________________________________ 1818 1819 10.3. Program Loading 1820 1821 See Intel® Itanium (TM) Processor-specific Application Binary 1822 Interface, Chapter 5.2. 1823 _________________________________________________________ 1824 1825 10.4. Dynamic Linking 1826 1827 See Intel® Itanium (TM) Processor-specific Application Binary 1828 Interface, Chapter 5.3. 1829 _________________________________________________________ 1830 1831 10.4.1. Dynamic Entries 1832 1833 10.4.1.1. ELF Dynamic Entries 1834 1835 The following dynamic entries are defined in the Intel® 1836 Itanium (TM) Processor-specific Application Binary Interface, 1837 Chapter 5.3.2. 1838 1839 DT_PLTGOT 1840 1841 This entry's d_ptr member gives the address of the first byte 1842 in the procedure linkage table 1843 _________________________________________________________ 1844 1845 10.4.1.2. Additional Dynamic Entries 1846 1847 The following dynamic entries are defined here. 1848 1849 DT_RELACOUNT 1850 1851 The number of relative relocations in .rela.dyn 1852 _________________________________________________________ 1853 1854 10.4.2. Global Offset Table 1855 1856 See Intel® Itanium (TM) Processor-specific Application Binary 1857 Interface, Chapter 5.3.4. 1858 _________________________________________________________ 1859 1860 10.4.3. Shared Object Dependencies 1861 1862 See Intel® Itanium (TM) Processor-specific Application Binary 1863 Interface, Chapter 5.3.3. 1864 _________________________________________________________ 1865 1866 10.4.4. Function Addresses 1867 1868 See Intel® Itanium (TM) Processor-specific Application Binary 1869 Interface, Chapter 5.3.5. 1870 _________________________________________________________ 1871 1872 10.4.5. Procedure Linkage Table 1873 1874 See Intel® Itanium (TM) Processor-specific Application Binary 1875 Interface, Chapter 5.3.6. 1876 _________________________________________________________ 1877 1878 10.4.6. Initialization and Termination Functions 1879 1880 See Intel® Itanium (TM) Processor-specific Application Binary 1881 Interface, Chapter 5.3.7. 1882 1883 III. Base Libraries 1884 1885 Table of Contents 1886 11. Libraries 1887 1888 11.1. Program Interpreter/Dynamic Linker 1889 11.2. Interfaces for libc 1890 1891 11.2.1. RPC 1892 11.2.2. System Calls 1893 11.2.3. Standard I/O 1894 11.2.4. Signal Handling 1895 11.2.5. Localization Functions 1896 11.2.6. Socket Interface 1897 11.2.7. Wide Characters 1898 11.2.8. String Functions 1899 11.2.9. IPC Functions 1900 11.2.10. Regular Expressions 1901 11.2.11. Character Type Functions 1902 11.2.12. Time Manipulation 1903 11.2.13. Terminal Interface Functions 1904 11.2.14. System Database Interface 1905 11.2.15. Language Support 1906 11.2.16. Large File Support 1907 11.2.17. Standard Library 1908 1909 11.3. Data Definitions for libc 1910 1911 11.3.1. arpa/inet.h 1912 11.3.2. assert.h 1913 11.3.3. ctype.h 1914 11.3.4. dirent.h 1915 11.3.5. err.h 1916 11.3.6. errno.h 1917 11.3.7. fcntl.h 1918 11.3.8. fmtmsg.h 1919 11.3.9. fnmatch.h 1920 11.3.10. ftw.h 1921 11.3.11. getopt.h 1922 11.3.12. glob.h 1923 11.3.13. grp.h 1924 11.3.14. iconv.h 1925 11.3.15. inttypes.h 1926 11.3.16. langinfo.h 1927 11.3.17. libgen.h 1928 11.3.18. libintl.h 1929 11.3.19. limits.h 1930 11.3.20. locale.h 1931 11.3.21. monetary.h 1932 11.3.22. net/if.h 1933 11.3.23. netdb.h 1934 11.3.24. netinet/in.h 1935 11.3.25. netinet/ip.h 1936 11.3.26. netinet/tcp.h 1937 11.3.27. netinet/udp.h 1938 11.3.28. nl_types.h 1939 11.3.29. poll.h 1940 11.3.30. pty.h 1941 11.3.31. pwd.h 1942 11.3.32. regex.h 1943 11.3.33. rpc/auth.h 1944 11.3.34. rpc/clnt.h 1945 11.3.35. rpc/pmap_clnt.h 1946 11.3.36. rpc/rpc_msg.h 1947 11.3.37. rpc/svc.h 1948 11.3.38. rpc/types.h 1949 11.3.39. rpc/xdr.h 1950 11.3.40. sched.h 1951 11.3.41. search.h 1952 11.3.42. setjmp.h 1953 11.3.43. signal.h 1954 11.3.44. stddef.h 1955 11.3.45. stdio.h 1956 11.3.46. stdlib.h 1957 11.3.47. string.h 1958 11.3.48. sys/file.h 1959 11.3.49. sys/ioctl.h 1960 11.3.50. sys/ipc.h 1961 11.3.51. sys/mman.h 1962 11.3.52. sys/msg.h 1963 11.3.53. sys/param.h 1964 11.3.54. sys/poll.h 1965 11.3.55. sys/resource.h 1966 11.3.56. sys/sem.h 1967 11.3.57. sys/shm.h 1968 11.3.58. sys/socket.h 1969 11.3.59. sys/stat.h 1970 11.3.60. sys/statvfs.h 1971 11.3.61. sys/time.h 1972 11.3.62. sys/timeb.h 1973 11.3.63. sys/times.h 1974 11.3.64. sys/types.h 1975 11.3.65. sys/uio.h 1976 11.3.66. sys/un.h 1977 11.3.67. sys/utsname.h 1978 11.3.68. sys/wait.h 1979 11.3.69. syslog.h 1980 11.3.70. termios.h 1981 11.3.71. time.h 1982 11.3.72. ucontext.h 1983 11.3.73. ulimit.h 1984 11.3.74. unistd.h 1985 11.3.75. utime.h 1986 11.3.76. utmp.h 1987 11.3.77. utmpx.h 1988 11.3.78. wchar.h 1989 11.3.79. wctype.h 1990 11.3.80. wordexp.h 1991 1992 11.4. Interfaces for libm 1993 1994 11.4.1. Math 1995 1996 11.5. Data Definitions for libm 1997 1998 11.5.1. complex.h 1999 11.5.2. fenv.h 2000 11.5.3. math.h 2001 2002 11.6. Interfaces for libpthread 2003 2004 11.6.1. Realtime Threads 2005 11.6.2. Advanced Realtime Threads 2006 11.6.3. Posix Threads 2007 11.6.4. Thread aware versions of libc interfaces 2008 2009 11.7. Data Definitions for libpthread 2010 2011 11.7.1. pthread.h 2012 11.7.2. semaphore.h 2013 2014 11.8. Interfaces for libgcc_s 2015 2016 11.8.1. Unwind Library 2017 2018 11.9. Data Definitions for libgcc_s 2019 2020 11.9.1. unwind.h 2021 2022 11.10. Interface Definitions for libgcc_s 2023 2024 _Unwind_DeleteException -- private C++ error 2025 handling method 2026 2027 _Unwind_ForcedUnwind -- private C++ error handling 2028 method 2029 2030 _Unwind_GetGR -- private C++ error handling method 2031 _Unwind_GetIP -- private C++ error handling method 2032 _Unwind_GetLanguageSpecificData -- private C++ 2033 error handling method 2034 2035 _Unwind_GetRegionStart -- private C++ error 2036 handling method 2037 2038 _Unwind_RaiseException -- private C++ error 2039 handling method 2040 2041 _Unwind_Resume -- private C++ error handling method 2042 _Unwind_SetGR -- private C++ error handling method 2043 _Unwind_SetIP -- private C++ error handling method 2044 2045 11.11. Interfaces for libdl 2046 2047 11.11.1. Dynamic Loader 2048 2049 11.12. Data Definitions for libdl 2050 2051 11.12.1. dlfcn.h 2052 2053 11.13. Interfaces for libcrypt 2054 2055 11.13.1. Encryption 2056 _________________________________________________________ 2057 2058 Chapter 11. Libraries 2059 2060 An LSB-conforming implementation shall support base libraries 2061 which provide interfaces for accessing the operating system, 2062 processor and other hardware in the system. 2063 2064 Only those interfaces that are unique to the Itanium(TM) 2065 platform are defined here. This section should be used in 2066 conjunction with the corresponding section in the Linux 2067 Standard Base Specification. 2068 _________________________________________________________ 2069 2070 11.1. Program Interpreter/Dynamic Linker 2071 2072 The Program Interpreter shall be /lib/ld-lsb-ia64.so.3. 2073 _________________________________________________________ 2074 2075 11.2. Interfaces for libc 2076 2077 Table 11-1 defines the library name and shared object name for 2078 the libc library 2079 2080 Table 11-1. libc Definition 2081 Library: libc 2082 SONAME: libc.so.6.1 2083 2084 The behavior of the interfaces in this library is specified by 2085 the following specifications: 2086 2087 [LFS] Large File Support 2088 [LSB] This Specification 2089 [SUSv2] SUSv2 2090 [SUSv3] ISO POSIX (2003) 2091 [SVID.3] SVID Issue 3 2092 [SVID.4] SVID Issue 4 2093 _________________________________________________________ 2094 2095 11.2.1. RPC 2096 _________________________________________________________ 2097 2098 11.2.1.1. Interfaces for RPC 2099 2100 An LSB conforming implementation shall provide the 2101 architecture specific functions for RPC specified in Table 2102 11-2, with the full mandatory functionality as described in 2103 the referenced underlying specification. 2104 2105 Table 11-2. libc - RPC Function Interfaces 2106 authnone_create(GLIBC_2.2) [SVID.4] clnt_create(GLIBC_2.2) 2107 [SVID.4] clnt_pcreateerror(GLIBC_2.2) [SVID.4] 2108 clnt_perrno(GLIBC_2.2) [SVID.4] 2109 clnt_perror(GLIBC_2.2) [SVID.4] clnt_spcreateerror(GLIBC_2.2) 2110 [SVID.4] clnt_sperrno(GLIBC_2.2) [SVID.4] 2111 clnt_sperror(GLIBC_2.2) [SVID.4] 2112 key_decryptsession(GLIBC_2.2) [SVID.3] pmap_getport(GLIBC_2.2) 2113 [LSB] pmap_set(GLIBC_2.2) [LSB] pmap_unset(GLIBC_2.2) [LSB] 2114 svc_getreqset(GLIBC_2.2) [SVID.3] svc_register(GLIBC_2.2) 2115 [LSB] svc_run(GLIBC_2.2) [LSB] svc_sendreply(GLIBC_2.2) [LSB] 2116 svcerr_auth(GLIBC_2.2) [SVID.3] svcerr_decode(GLIBC_2.2) 2117 [SVID.3] svcerr_noproc(GLIBC_2.2) [SVID.3] 2118 svcerr_noprog(GLIBC_2.2) [SVID.3] 2119 svcerr_progvers(GLIBC_2.2) [SVID.3] 2120 svcerr_systemerr(GLIBC_2.2) [SVID.3] 2121 svcerr_weakauth(GLIBC_2.2) [SVID.3] svctcp_create(GLIBC_2.2) 2122 [LSB] 2123 svcudp_create(GLIBC_2.2) [LSB] xdr_accepted_reply(GLIBC_2.2) 2124 [SVID.3] xdr_array(GLIBC_2.2) [SVID.3] xdr_bool(GLIBC_2.2) 2125 [SVID.3] 2126 xdr_bytes(GLIBC_2.2) [SVID.3] xdr_callhdr(GLIBC_2.2) [SVID.3] 2127 xdr_callmsg(GLIBC_2.2) [SVID.3] xdr_char(GLIBC_2.2) [SVID.3] 2128 xdr_double(GLIBC_2.2) [SVID.3] xdr_enum(GLIBC_2.2) [SVID.3] 2129 xdr_float(GLIBC_2.2) [SVID.3] xdr_free(GLIBC_2.2) [SVID.3] 2130 xdr_int(GLIBC_2.2) [SVID.3] xdr_long(GLIBC_2.2) [SVID.3] 2131 xdr_opaque(GLIBC_2.2) [SVID.3] xdr_opaque_auth(GLIBC_2.2) 2132 [SVID.3] 2133 xdr_pointer(GLIBC_2.2) [SVID.3] xdr_reference(GLIBC_2.2) 2134 [SVID.3] xdr_rejected_reply(GLIBC_2.2) [SVID.3] 2135 xdr_replymsg(GLIBC_2.2) [SVID.3] 2136 xdr_short(GLIBC_2.2) [SVID.3] xdr_string(GLIBC_2.2) [SVID.3] 2137 xdr_u_char(GLIBC_2.2) [SVID.3] xdr_u_int(GLIBC_2.2) [LSB] 2138 xdr_u_long(GLIBC_2.2) [SVID.3] xdr_u_short(GLIBC_2.2) [SVID.3] 2139 xdr_union(GLIBC_2.2) [SVID.3] xdr_vector(GLIBC_2.2) [SVID.3] 2140 xdr_void(GLIBC_2.2) [SVID.3] xdr_wrapstring(GLIBC_2.2) 2141 [SVID.3] xdrmem_create(GLIBC_2.2) [SVID.3] 2142 xdrrec_create(GLIBC_2.2) [SVID.3] 2143 xdrrec_eof(GLIBC_2.2) [SVID.3] 2144 _________________________________________________________ 2145 2146 11.2.2. System Calls 2147 _________________________________________________________ 2148 2149 11.2.2.1. Interfaces for System Calls 2150 2151 An LSB conforming implementation shall provide the 2152 architecture specific functions for System Calls specified in 2153 Table 11-3, with the full mandatory functionality as described 2154 in the referenced underlying specification. 2155 2156 Table 11-3. libc - System Calls Function Interfaces 2157 __fxstat(GLIBC_2.2) [LSB] __getpgid(GLIBC_2.2) [LSB] 2158 __lxstat(GLIBC_2.2) [LSB] __xmknod(GLIBC_2.2) [LSB] 2159 __xstat(GLIBC_2.2) [LSB] access(GLIBC_2.2) [SUSv3] 2160 acct(GLIBC_2.2) [LSB] alarm(GLIBC_2.2) [SUSv3] 2161 brk(GLIBC_2.2) [SUSv2] chdir(GLIBC_2.2) [SUSv3] 2162 chmod(GLIBC_2.2) [SUSv3] chown(GLIBC_2.2) [SUSv3] 2163 chroot(GLIBC_2.2) [SUSv2] clock(GLIBC_2.2) [SUSv3] 2164 close(GLIBC_2.2) [SUSv3] closedir(GLIBC_2.2) [SUSv3] 2165 creat(GLIBC_2.2) [SUSv3] dup(GLIBC_2.2) [SUSv3] 2166 dup2(GLIBC_2.2) [SUSv3] execl(GLIBC_2.2) [SUSv3] 2167 execle(GLIBC_2.2) [SUSv3] execlp(GLIBC_2.2) [SUSv3] 2168 execv(GLIBC_2.2) [SUSv3] execve(GLIBC_2.2) [SUSv3] 2169 execvp(GLIBC_2.2) [SUSv3] exit(GLIBC_2.2) [SUSv3] 2170 fchdir(GLIBC_2.2) [SUSv3] fchmod(GLIBC_2.2) [SUSv3] 2171 fchown(GLIBC_2.2) [SUSv3] fcntl(GLIBC_2.2) [LSB] 2172 fdatasync(GLIBC_2.2) [SUSv3] flock(GLIBC_2.2) [LSB] 2173 fork(GLIBC_2.2) [SUSv3] fstatvfs(GLIBC_2.2) [SUSv3] 2174 fsync(GLIBC_2.2) [SUSv3] ftime(GLIBC_2.2) [SUSv3] 2175 ftruncate(GLIBC_2.2) [SUSv3] getcontext(GLIBC_2.2) [SUSv3] 2176 getegid(GLIBC_2.2) [SUSv3] geteuid(GLIBC_2.2) [SUSv3] 2177 getgid(GLIBC_2.2) [SUSv3] getgroups(GLIBC_2.2) [SUSv3] 2178 getitimer(GLIBC_2.2) [SUSv3] getloadavg(GLIBC_2.2) [LSB] 2179 getpagesize(GLIBC_2.2) [SUSv2] getpgid(GLIBC_2.2) [SUSv3] 2180 getpgrp(GLIBC_2.2) [SUSv3] getpid(GLIBC_2.2) [SUSv3] 2181 getppid(GLIBC_2.2) [SUSv3] getpriority(GLIBC_2.2) [SUSv3] 2182 getrlimit(GLIBC_2.2) [SUSv3] getrusage(GLIBC_2.2) [SUSv3] 2183 getsid(GLIBC_2.2) [SUSv3] getuid(GLIBC_2.2) [SUSv3] 2184 getwd(GLIBC_2.2) [SUSv3] initgroups(GLIBC_2.2) [LSB] 2185 ioctl(GLIBC_2.2) [LSB] kill(GLIBC_2.2) [LSB] killpg(GLIBC_2.2) 2186 [SUSv3] lchown(GLIBC_2.2) [SUSv3] 2187 link(GLIBC_2.2) [LSB] lockf(GLIBC_2.2) [SUSv3] 2188 lseek(GLIBC_2.2) [SUSv3] mkdir(GLIBC_2.2) [SUSv3] 2189 mkfifo(GLIBC_2.2) [SUSv3] mlock(GLIBC_2.2) [SUSv3] 2190 mlockall(GLIBC_2.2) [SUSv3] mmap(GLIBC_2.2) [SUSv3] 2191 mprotect(GLIBC_2.2) [SUSv3] msync(GLIBC_2.2) [SUSv3] 2192 munlock(GLIBC_2.2) [SUSv3] munlockall(GLIBC_2.2) [SUSv3] 2193 munmap(GLIBC_2.2) [SUSv3] nanosleep(GLIBC_2.2) [SUSv3] 2194 nice(GLIBC_2.2) [SUSv3] open(GLIBC_2.2) [SUSv3] 2195 opendir(GLIBC_2.2) [SUSv3] pathconf(GLIBC_2.2) [SUSv3] 2196 pause(GLIBC_2.2) [SUSv3] pipe(GLIBC_2.2) [SUSv3] 2197 poll(GLIBC_2.2) [SUSv3] read(GLIBC_2.2) [SUSv3] 2198 readdir(GLIBC_2.2) [SUSv3] readdir_r(GLIBC_2.2) [SUSv3] 2199 readlink(GLIBC_2.2) [SUSv3] readv(GLIBC_2.2) [SUSv3] 2200 rename(GLIBC_2.2) [SUSv3] rmdir(GLIBC_2.2) [SUSv3] 2201 sbrk(GLIBC_2.2) [SUSv2] sched_get_priority_max(GLIBC_2.2) 2202 [SUSv3] sched_get_priority_min(GLIBC_2.2) [SUSv3] 2203 sched_getparam(GLIBC_2.2) [SUSv3] 2204 sched_getscheduler(GLIBC_2.2) [SUSv3] 2205 sched_rr_get_interval(GLIBC_2.2) [SUSv3] 2206 sched_setparam(GLIBC_2.2) [SUSv3] 2207 sched_setscheduler(GLIBC_2.2) [SUSv3] 2208 sched_yield(GLIBC_2.2) [SUSv3] select(GLIBC_2.2) [SUSv3] 2209 setcontext(GLIBC_2.2) [SUSv3] setegid(GLIBC_2.2) [SUSv3] 2210 seteuid(GLIBC_2.2) [SUSv3] setgid(GLIBC_2.2) [SUSv3] 2211 setitimer(GLIBC_2.2) [SUSv3] setpgid(GLIBC_2.2) [SUSv3] 2212 setpgrp(GLIBC_2.2) [SUSv3] setpriority(GLIBC_2.2) [SUSv3] 2213 setregid(GLIBC_2.2) [SUSv3] setreuid(GLIBC_2.2) [SUSv3] 2214 setrlimit(GLIBC_2.2) [SUSv3] setrlimit64(GLIBC_2.2) [LFS] 2215 setsid(GLIBC_2.2) [SUSv3] setuid(GLIBC_2.2) [SUSv3] 2216 sleep(GLIBC_2.2) [SUSv3] statvfs(GLIBC_2.2) [SUSv3] 2217 stime(GLIBC_2.2) [LSB] symlink(GLIBC_2.2) [SUSv3] 2218 sync(GLIBC_2.2) [SUSv3] sysconf(GLIBC_2.2) [SUSv3] 2219 time(GLIBC_2.2) [SUSv3] times(GLIBC_2.2) [SUSv3] 2220 truncate(GLIBC_2.2) [SUSv3] ulimit(GLIBC_2.2) [SUSv3] 2221 umask(GLIBC_2.2) [SUSv3] uname(GLIBC_2.2) [SUSv3] 2222 unlink(GLIBC_2.2) [LSB] utime(GLIBC_2.2) [SUSv3] 2223 utimes(GLIBC_2.2) [SUSv3] vfork(GLIBC_2.2) [SUSv3] 2224 wait(GLIBC_2.2) [SUSv3] wait4(GLIBC_2.2) [LSB] 2225 waitpid(GLIBC_2.2) [LSB] write(GLIBC_2.2) [SUSv3] 2226 writev(GLIBC_2.2) [SUSv3] 2227 _________________________________________________________ 2228 2229 11.2.3. Standard I/O 2230 _________________________________________________________ 2231 2232 11.2.3.1. Interfaces for Standard I/O 2233 2234 An LSB conforming implementation shall provide the 2235 architecture specific functions for Standard I/O specified in 2236 Table 11-4, with the full mandatory functionality as described 2237 in the referenced underlying specification. 2238 2239 Table 11-4. libc - Standard I/O Function Interfaces 2240 _IO_feof(GLIBC_2.2) [LSB] _IO_getc(GLIBC_2.2) [LSB] 2241 _IO_putc(GLIBC_2.2) [LSB] _IO_puts(GLIBC_2.2) [LSB] 2242 asprintf(GLIBC_2.2) [LSB] clearerr(GLIBC_2.2) [SUSv3] 2243 ctermid(GLIBC_2.2) [SUSv3] fclose(GLIBC_2.2) [SUSv3] 2244 fdopen(GLIBC_2.2) [SUSv3] feof(GLIBC_2.2) [SUSv3] 2245 ferror(GLIBC_2.2) [SUSv3] fflush(GLIBC_2.2) [SUSv3] 2246 fflush_unlocked(GLIBC_2.2) [LSB] fgetc(GLIBC_2.2) [SUSv3] 2247 fgetpos(GLIBC_2.2) [SUSv3] fgets(GLIBC_2.2) [SUSv3] 2248 fgetwc_unlocked(GLIBC_2.2) [LSB] fileno(GLIBC_2.2) [SUSv3] 2249 flockfile(GLIBC_2.2) [SUSv3] fopen(GLIBC_2.2) [SUSv3] 2250 fprintf(GLIBC_2.2) [SUSv3] fputc(GLIBC_2.2) [SUSv3] 2251 fputs(GLIBC_2.2) [SUSv3] fread(GLIBC_2.2) [SUSv3] 2252 freopen(GLIBC_2.2) [SUSv3] fscanf(GLIBC_2.2) [LSB] 2253 fseek(GLIBC_2.2) [SUSv3] fseeko(GLIBC_2.2) [SUSv3] 2254 fsetpos(GLIBC_2.2) [SUSv3] ftell(GLIBC_2.2) [SUSv3] 2255 ftello(GLIBC_2.2) [SUSv3] fwrite(GLIBC_2.2) [SUSv3] 2256 getc(GLIBC_2.2) [SUSv3] getc_unlocked(GLIBC_2.2) [SUSv3] 2257 getchar(GLIBC_2.2) [SUSv3] getchar_unlocked(GLIBC_2.2) [SUSv3] 2258 getw(GLIBC_2.2) [SUSv2] pclose(GLIBC_2.2) [SUSv3] 2259 popen(GLIBC_2.2) [SUSv3] printf(GLIBC_2.2) [SUSv3] 2260 putc(GLIBC_2.2) [SUSv3] putc_unlocked(GLIBC_2.2) [SUSv3] 2261 putchar(GLIBC_2.2) [SUSv3] putchar_unlocked(GLIBC_2.2) [SUSv3] 2262 puts(GLIBC_2.2) [SUSv3] putw(GLIBC_2.2) [SUSv2] 2263 remove(GLIBC_2.2) [SUSv3] rewind(GLIBC_2.2) [SUSv3] 2264 rewinddir(GLIBC_2.2) [SUSv3] scanf(GLIBC_2.2) [LSB] 2265 seekdir(GLIBC_2.2) [SUSv3] setbuf(GLIBC_2.2) [SUSv3] 2266 setbuffer(GLIBC_2.2) [LSB] setvbuf(GLIBC_2.2) [SUSv3] 2267 snprintf(GLIBC_2.2) [SUSv3] sprintf(GLIBC_2.2) [SUSv3] 2268 sscanf(GLIBC_2.2) [LSB] telldir(GLIBC_2.2) [SUSv3] 2269 tempnam(GLIBC_2.2) [SUSv3] ungetc(GLIBC_2.2) [SUSv3] 2270 vasprintf(GLIBC_2.2) [LSB] vdprintf(GLIBC_2.2) [LSB] 2271 vfprintf(GLIBC_2.2) [SUSv3] vprintf(GLIBC_2.2) [SUSv3] 2272 vsnprintf(GLIBC_2.2) [SUSv3] vsprintf(GLIBC_2.2) [SUSv3] 2273 2274 An LSB conforming implementation shall provide the 2275 architecture specific data interfaces for Standard I/O 2276 specified in Table 11-5, with the full mandatory functionality 2277 as described in the referenced underlying specification. 2278 2279 Table 11-5. libc - Standard I/O Data Interfaces 2280 stderr(GLIBC_2.2) [SUSv3] stdin(GLIBC_2.2) [SUSv3] 2281 stdout(GLIBC_2.2) [SUSv3] 2282 _________________________________________________________ 2283 2284 11.2.4. Signal Handling 2285 _________________________________________________________ 2286 2287 11.2.4.1. Interfaces for Signal Handling 2288 2289 An LSB conforming implementation shall provide the 2290 architecture specific functions for Signal Handling specified 2291 in Table 11-6, with the full mandatory functionality as 2292 described in the referenced underlying specification. 2293 2294 Table 11-6. libc - Signal Handling Function Interfaces 2295 __libc_current_sigrtmax(GLIBC_2.2) [LSB] 2296 __libc_current_sigrtmin(GLIBC_2.2) [LSB] 2297 __sigsetjmp(GLIBC_2.2) [LSB] __sysv_signal(GLIBC_2.2) [LSB] 2298 bsd_signal(GLIBC_2.2) [SUSv3] psignal(GLIBC_2.2) [LSB] 2299 raise(GLIBC_2.2) [SUSv3] sigaction(GLIBC_2.2) [SUSv3] 2300 sigaddset(GLIBC_2.2) [SUSv3] sigaltstack(GLIBC_2.2) [SUSv3] 2301 sigandset(GLIBC_2.2) [LSB] sigdelset(GLIBC_2.2) [SUSv3] 2302 sigemptyset(GLIBC_2.2) [SUSv3] sigfillset(GLIBC_2.2) [SUSv3] 2303 sighold(GLIBC_2.2) [SUSv3] sigignore(GLIBC_2.2) [SUSv3] 2304 siginterrupt(GLIBC_2.2) [SUSv3] sigisemptyset(GLIBC_2.2) [LSB] 2305 sigismember(GLIBC_2.2) [SUSv3] siglongjmp(GLIBC_2.2) [SUSv3] 2306 signal(GLIBC_2.2) [SUSv3] sigorset(GLIBC_2.2) [LSB] 2307 sigpause(GLIBC_2.2) [SUSv3] sigpending(GLIBC_2.2) [SUSv3] 2308 sigprocmask(GLIBC_2.2) [SUSv3] sigqueue(GLIBC_2.2) [SUSv3] 2309 sigrelse(GLIBC_2.2) [SUSv3] sigreturn(GLIBC_2.2) [LSB] 2310 sigset(GLIBC_2.2) [SUSv3] sigsuspend(GLIBC_2.2) [SUSv3] 2311 sigtimedwait(GLIBC_2.2) [SUSv3] sigwait(GLIBC_2.2) [SUSv3] 2312 sigwaitinfo(GLIBC_2.2) [SUSv3] 2313 2314 An LSB conforming implementation shall provide the 2315 architecture specific data interfaces for Signal Handling 2316 specified in Table 11-7, with the full mandatory functionality 2317 as described in the referenced underlying specification. 2318 2319 Table 11-7. libc - Signal Handling Data Interfaces 2320 _sys_siglist(GLIBC_2.3.3) [LSB] 2321 _________________________________________________________ 2322 2323 11.2.5. Localization Functions 2324 _________________________________________________________ 2325 2326 11.2.5.1. Interfaces for Localization Functions 2327 2328 An LSB conforming implementation shall provide the 2329 architecture specific functions for Localization Functions 2330 specified in Table 11-8, with the full mandatory functionality 2331 as described in the referenced underlying specification. 2332 2333 Table 11-8. libc - Localization Functions Function Interfaces 2334 bind_textdomain_codeset(GLIBC_2.2) [LSB] 2335 bindtextdomain(GLIBC_2.2) [LSB] catclose(GLIBC_2.2) [SUSv3] 2336 catgets(GLIBC_2.2) [SUSv3] 2337 catopen(GLIBC_2.2) [SUSv3] dcgettext(GLIBC_2.2) [LSB] 2338 dcngettext(GLIBC_2.2) [LSB] dgettext(GLIBC_2.2) [LSB] 2339 dngettext(GLIBC_2.2) [LSB] gettext(GLIBC_2.2) [LSB] 2340 iconv(GLIBC_2.2) [SUSv3] iconv_close(GLIBC_2.2) [SUSv3] 2341 iconv_open(GLIBC_2.2) [SUSv3] localeconv(GLIBC_2.2) [SUSv3] 2342 ngettext(GLIBC_2.2) [LSB] nl_langinfo(GLIBC_2.2) [SUSv3] 2343 setlocale(GLIBC_2.2) [SUSv3] textdomain(GLIBC_2.2) [LSB] 2344 2345 An LSB conforming implementation shall provide the 2346 architecture specific data interfaces for Localization 2347 Functions specified in Table 11-9, with the full mandatory 2348 functionality as described in the referenced underlying 2349 specification. 2350 2351 Table 11-9. libc - Localization Functions Data Interfaces 2352 _nl_msg_cat_cntr(GLIBC_2.2) [LSB] 2353 _________________________________________________________ 2354 2355 11.2.6. Socket Interface 2356 _________________________________________________________ 2357 2358 11.2.6.1. Interfaces for Socket Interface 2359 2360 An LSB conforming implementation shall provide the 2361 architecture specific functions for Socket Interface specified 2362 in Table 11-10, with the full mandatory functionality as 2363 described in the referenced underlying specification. 2364 2365 Table 11-10. libc - Socket Interface Function Interfaces 2366 __h_errno_location(GLIBC_2.2) [LSB] accept(GLIBC_2.2) [SUSv3] 2367 bind(GLIBC_2.2) [SUSv3] bindresvport(GLIBC_2.2) [LSB] 2368 connect(GLIBC_2.2) [SUSv3] gethostid(GLIBC_2.2) [SUSv3] 2369 gethostname(GLIBC_2.2) [SUSv3] getpeername(GLIBC_2.2) [SUSv3] 2370 getsockname(GLIBC_2.2) [SUSv3] getsockopt(GLIBC_2.2) [LSB] 2371 if_freenameindex(GLIBC_2.2) [SUSv3] if_indextoname(GLIBC_2.2) 2372 [SUSv3] 2373 if_nameindex(GLIBC_2.2) [SUSv3] if_nametoindex(GLIBC_2.2) 2374 [SUSv3] listen(GLIBC_2.2) [SUSv3] recv(GLIBC_2.2) [SUSv3] 2375 recvfrom(GLIBC_2.2) [SUSv3] recvmsg(GLIBC_2.2) [SUSv3] 2376 send(GLIBC_2.2) [SUSv3] sendmsg(GLIBC_2.2) [SUSv3] 2377 sendto(GLIBC_2.2) [SUSv3] setsockopt(GLIBC_2.2) [LSB] 2378 shutdown(GLIBC_2.2) [SUSv3] sockatmark(GLIBC_2.2.4) [SUSv3] 2379 socket(GLIBC_2.2) [SUSv3] socketpair(GLIBC_2.2) [SUSv3] 2380 _________________________________________________________ 2381 2382 11.2.7. Wide Characters 2383 _________________________________________________________ 2384 2385 11.2.7.1. Interfaces for Wide Characters 2386 2387 An LSB conforming implementation shall provide the 2388 architecture specific functions for Wide Characters specified 2389 in Table 11-11, with the full mandatory functionality as 2390 described in the referenced underlying specification. 2391 2392 Table 11-11. libc - Wide Characters Function Interfaces 2393 __wcstod_internal(GLIBC_2.2) [LSB] 2394 __wcstof_internal(GLIBC_2.2) [LSB] 2395 __wcstol_internal(GLIBC_2.2) [LSB] 2396 __wcstold_internal(GLIBC_2.2) [LSB] 2397 __wcstoul_internal(GLIBC_2.2) [LSB] btowc(GLIBC_2.2) [SUSv3] 2398 fgetwc(GLIBC_2.2) [SUSv3] fgetws(GLIBC_2.2) [SUSv3] 2399 fputwc(GLIBC_2.2) [SUSv3] fputws(GLIBC_2.2) [SUSv3] 2400 fwide(GLIBC_2.2) [SUSv3] fwprintf(GLIBC_2.2) [SUSv3] 2401 fwscanf(GLIBC_2.2) [LSB] getwc(GLIBC_2.2) [SUSv3] 2402 getwchar(GLIBC_2.2) [SUSv3] mblen(GLIBC_2.2) [SUSv3] 2403 mbrlen(GLIBC_2.2) [SUSv3] mbrtowc(GLIBC_2.2) [SUSv3] 2404 mbsinit(GLIBC_2.2) [SUSv3] mbsnrtowcs(GLIBC_2.2) [LSB] 2405 mbsrtowcs(GLIBC_2.2) [SUSv3] mbstowcs(GLIBC_2.2) [SUSv3] 2406 mbtowc(GLIBC_2.2) [SUSv3] putwc(GLIBC_2.2) [SUSv3] 2407 putwchar(GLIBC_2.2) [SUSv3] swprintf(GLIBC_2.2) [SUSv3] 2408 swscanf(GLIBC_2.2) [LSB] towctrans(GLIBC_2.2) [SUSv3] 2409 towlower(GLIBC_2.2) [SUSv3] towupper(GLIBC_2.2) [SUSv3] 2410 ungetwc(GLIBC_2.2) [SUSv3] vfwprintf(GLIBC_2.2) [SUSv3] 2411 vfwscanf(GLIBC_2.2) [LSB] vswprintf(GLIBC_2.2) [SUSv3] 2412 vswscanf(GLIBC_2.2) [LSB] vwprintf(GLIBC_2.2) [SUSv3] 2413 vwscanf(GLIBC_2.2) [LSB] wcpcpy(GLIBC_2.2) [LSB] 2414 wcpncpy(GLIBC_2.2) [LSB] wcrtomb(GLIBC_2.2) [SUSv3] 2415 wcscasecmp(GLIBC_2.2) [LSB] wcscat(GLIBC_2.2) [SUSv3] 2416 wcschr(GLIBC_2.2) [SUSv3] wcscmp(GLIBC_2.2) [SUSv3] 2417 wcscoll(GLIBC_2.2) [SUSv3] wcscpy(GLIBC_2.2) [SUSv3] 2418 wcscspn(GLIBC_2.2) [SUSv3] wcsdup(GLIBC_2.2) [LSB] 2419 wcsftime(GLIBC_2.2) [SUSv3] wcslen(GLIBC_2.2) [SUSv3] 2420 wcsncasecmp(GLIBC_2.2) [LSB] wcsncat(GLIBC_2.2) [SUSv3] 2421 wcsncmp(GLIBC_2.2) [SUSv3] wcsncpy(GLIBC_2.2) [SUSv3] 2422 wcsnlen(GLIBC_2.2) [LSB] wcsnrtombs(GLIBC_2.2) [LSB] 2423 wcspbrk(GLIBC_2.2) [SUSv3] wcsrchr(GLIBC_2.2) [SUSv3] 2424 wcsrtombs(GLIBC_2.2) [SUSv3] wcsspn(GLIBC_2.2) [SUSv3] 2425 wcsstr(GLIBC_2.2) [SUSv3] wcstod(GLIBC_2.2) [SUSv3] 2426 wcstof(GLIBC_2.2) [SUSv3] wcstoimax(GLIBC_2.2) [SUSv3] 2427 wcstok(GLIBC_2.2) [SUSv3] wcstol(GLIBC_2.2) [SUSv3] 2428 wcstold(GLIBC_2.2) [SUSv3] wcstoll(GLIBC_2.2) [SUSv3] 2429 wcstombs(GLIBC_2.2) [SUSv3] wcstoq(GLIBC_2.2) [LSB] 2430 wcstoul(GLIBC_2.2) [SUSv3] wcstoull(GLIBC_2.2) [SUSv3] 2431 wcstoumax(GLIBC_2.2) [SUSv3] wcstouq(GLIBC_2.2) [LSB] 2432 wcswcs(GLIBC_2.2) [SUSv3] wcswidth(GLIBC_2.2) [SUSv3] 2433 wcsxfrm(GLIBC_2.2) [SUSv3] wctob(GLIBC_2.2) [SUSv3] 2434 wctomb(GLIBC_2.2) [SUSv3] wctrans(GLIBC_2.2) [SUSv3] 2435 wctype(GLIBC_2.2) [SUSv3] wcwidth(GLIBC_2.2) [SUSv3] 2436 wmemchr(GLIBC_2.2) [SUSv3] wmemcmp(GLIBC_2.2) [SUSv3] 2437 wmemcpy(GLIBC_2.2) [SUSv3] wmemmove(GLIBC_2.2) [SUSv3] 2438 wmemset(GLIBC_2.2) [SUSv3] wprintf(GLIBC_2.2) [SUSv3] 2439 wscanf(GLIBC_2.2) [LSB] 2440 _________________________________________________________ 2441 2442 11.2.8. String Functions 2443 _________________________________________________________ 2444 2445 11.2.8.1. Interfaces for String Functions 2446 2447 An LSB conforming implementation shall provide the 2448 architecture specific functions for String Functions specified 2449 in Table 11-12, with the full mandatory functionality as 2450 described in the referenced underlying specification. 2451 2452 Table 11-12. libc - String Functions Function Interfaces 2453 __mempcpy(GLIBC_2.2) [LSB] __rawmemchr(GLIBC_2.2) [LSB] 2454 __stpcpy(GLIBC_2.2) [LSB] __strdup(GLIBC_2.2) [LSB] 2455 __strtod_internal(GLIBC_2.2) [LSB] 2456 __strtof_internal(GLIBC_2.2) [LSB] __strtok_r(GLIBC_2.2) [LSB] 2457 __strtol_internal(GLIBC_2.2) [LSB] 2458 __strtold_internal(GLIBC_2.2) [LSB] 2459 __strtoll_internal(GLIBC_2.2) [LSB] 2460 __strtoul_internal(GLIBC_2.2) [LSB] 2461 __strtoull_internal(GLIBC_2.2) [LSB] 2462 bcmp(GLIBC_2.2) [SUSv3] bcopy(GLIBC_2.2) [SUSv3] 2463 bzero(GLIBC_2.2) [SUSv3] ffs(GLIBC_2.2) [SUSv3] 2464 index(GLIBC_2.2) [SUSv3] memccpy(GLIBC_2.2) [SUSv3] 2465 memchr(GLIBC_2.2) [SUSv3] memcmp(GLIBC_2.2) [SUSv3] 2466 memcpy(GLIBC_2.2) [SUSv3] memmove(GLIBC_2.2) [SUSv3] 2467 memrchr(GLIBC_2.2) [LSB] memset(GLIBC_2.2) [SUSv3] 2468 rindex(GLIBC_2.2) [SUSv3] stpcpy(GLIBC_2.2) [LSB] 2469 stpncpy(GLIBC_2.2) [LSB] strcasecmp(GLIBC_2.2) [SUSv3] 2470 strcasestr(GLIBC_2.2) [LSB] strcat(GLIBC_2.2) [SUSv3] 2471 strchr(GLIBC_2.2) [SUSv3] strcmp(GLIBC_2.2) [SUSv3] 2472 strcoll(GLIBC_2.2) [SUSv3] strcpy(GLIBC_2.2) [SUSv3] 2473 strcspn(GLIBC_2.2) [SUSv3] strdup(GLIBC_2.2) [SUSv3] 2474 strerror(GLIBC_2.2) [SUSv3] strerror_r(GLIBC_2.2) [LSB] 2475 strfmon(GLIBC_2.2) [SUSv3] strftime(GLIBC_2.2) [SUSv3] 2476 strlen(GLIBC_2.2) [SUSv3] strncasecmp(GLIBC_2.2) [SUSv3] 2477 strncat(GLIBC_2.2) [SUSv3] strncmp(GLIBC_2.2) [SUSv3] 2478 strncpy(GLIBC_2.2) [SUSv3] strndup(GLIBC_2.2) [LSB] 2479 strnlen(GLIBC_2.2) [LSB] strpbrk(GLIBC_2.2) [SUSv3] 2480 strptime(GLIBC_2.2) [LSB] strrchr(GLIBC_2.2) [SUSv3] 2481 strsep(GLIBC_2.2) [LSB] strsignal(GLIBC_2.2) [LSB] 2482 strspn(GLIBC_2.2) [SUSv3] strstr(GLIBC_2.2) [SUSv3] 2483 strtof(GLIBC_2.2) [SUSv3] strtoimax(GLIBC_2.2) [SUSv3] 2484 strtok(GLIBC_2.2) [SUSv3] strtok_r(GLIBC_2.2) [SUSv3] 2485 strtold(GLIBC_2.2) [SUSv3] strtoll(GLIBC_2.2) [SUSv3] 2486 strtoq(GLIBC_2.2) [LSB] strtoull(GLIBC_2.2) [SUSv3] 2487 strtoumax(GLIBC_2.2) [SUSv3] strtouq(GLIBC_2.2) [LSB] 2488 strxfrm(GLIBC_2.2) [SUSv3] swab(GLIBC_2.2) [SUSv3] 2489 _________________________________________________________ 2490 2491 11.2.9. IPC Functions 2492 _________________________________________________________ 2493 2494 11.2.9.1. Interfaces for IPC Functions 2495 2496 An LSB conforming implementation shall provide the 2497 architecture specific functions for IPC Functions specified in 2498 Table 11-13, with the full mandatory functionality as 2499 described in the referenced underlying specification. 2500 2501 Table 11-13. libc - IPC Functions Function Interfaces 2502 ftok(GLIBC_2.2) [SUSv3] msgctl(GLIBC_2.2) [SUSv3] 2503 msgget(GLIBC_2.2) [SUSv3] msgrcv(GLIBC_2.2) [SUSv3] 2504 msgsnd(GLIBC_2.2) [SUSv3] semctl(GLIBC_2.2) [SUSv3] 2505 semget(GLIBC_2.2) [SUSv3] semop(GLIBC_2.2) [SUSv3] 2506 shmat(GLIBC_2.2) [SUSv3] shmctl(GLIBC_2.2) [SUSv3] 2507 shmdt(GLIBC_2.2) [SUSv3] shmget(GLIBC_2.2) [SUSv3] 2508 _________________________________________________________ 2509 2510 11.2.10. Regular Expressions 2511 _________________________________________________________ 2512 2513 11.2.10.1. Interfaces for Regular Expressions 2514 2515 An LSB conforming implementation shall provide the 2516 architecture specific functions for Regular Expressions 2517 specified in Table 11-14, with the full mandatory 2518 functionality as described in the referenced underlying 2519 specification. 2520 2521 Table 11-14. libc - Regular Expressions Function Interfaces 2522 regcomp(GLIBC_2.2) [SUSv3] regerror(GLIBC_2.2) [SUSv3] 2523 regexec(GLIBC_2.3.4) [LSB] regfree(GLIBC_2.2) [SUSv3] 2524 _________________________________________________________ 2525 2526 11.2.11. Character Type Functions 2527 _________________________________________________________ 2528 2529 11.2.11.1. Interfaces for Character Type Functions 2530 2531 An LSB conforming implementation shall provide the 2532 architecture specific functions for Character Type Functions 2533 specified in Table 11-15, with the full mandatory 2534 functionality as described in the referenced underlying 2535 specification. 2536 2537 Table 11-15. libc - Character Type Functions Function 2538 Interfaces 2539 __ctype_get_mb_cur_max(GLIBC_2.2) [LSB] _tolower(GLIBC_2.2) 2540 [SUSv3] _toupper(GLIBC_2.2) [SUSv3] isalnum(GLIBC_2.2) [SUSv3] 2541 isalpha(GLIBC_2.2) [SUSv3] isascii(GLIBC_2.2) [SUSv3] 2542 iscntrl(GLIBC_2.2) [SUSv3] isdigit(GLIBC_2.2) [SUSv3] 2543 isgraph(GLIBC_2.2) [SUSv3] islower(GLIBC_2.2) [SUSv3] 2544 isprint(GLIBC_2.2) [SUSv3] ispunct(GLIBC_2.2) [SUSv3] 2545 isspace(GLIBC_2.2) [SUSv3] isupper(GLIBC_2.2) [SUSv3] 2546 iswalnum(GLIBC_2.2) [SUSv3] iswalpha(GLIBC_2.2) [SUSv3] 2547 iswblank(GLIBC_2.2) [SUSv3] iswcntrl(GLIBC_2.2) [SUSv3] 2548 iswctype(GLIBC_2.2) [SUSv3] iswdigit(GLIBC_2.2) [SUSv3] 2549 iswgraph(GLIBC_2.2) [SUSv3] iswlower(GLIBC_2.2) [SUSv3] 2550 iswprint(GLIBC_2.2) [SUSv3] iswpunct(GLIBC_2.2) [SUSv3] 2551 iswspace(GLIBC_2.2) [SUSv3] iswupper(GLIBC_2.2) [SUSv3] 2552 iswxdigit(GLIBC_2.2) [SUSv3] isxdigit(GLIBC_2.2) [SUSv3] 2553 toascii(GLIBC_2.2) [SUSv3] tolower(GLIBC_2.2) [SUSv3] 2554 toupper(GLIBC_2.2) [SUSv3] 2555 _________________________________________________________ 2556 2557 11.2.12. Time Manipulation 2558 _________________________________________________________ 2559 2560 11.2.12.1. Interfaces for Time Manipulation 2561 2562 An LSB conforming implementation shall provide the 2563 architecture specific functions for Time Manipulation 2564 specified in Table 11-16, with the full mandatory 2565 functionality as described in the referenced underlying 2566 specification. 2567 2568 Table 11-16. libc - Time Manipulation Function Interfaces 2569 adjtime(GLIBC_2.2) [LSB] asctime(GLIBC_2.2) [SUSv3] 2570 asctime_r(GLIBC_2.2) [SUSv3] ctime(GLIBC_2.2) [SUSv3] 2571 ctime_r(GLIBC_2.2) [SUSv3] difftime(GLIBC_2.2) [SUSv3] 2572 gmtime(GLIBC_2.2) [SUSv3] gmtime_r(GLIBC_2.2) [SUSv3] 2573 localtime(GLIBC_2.2) [SUSv3] localtime_r(GLIBC_2.2) [SUSv3] 2574 mktime(GLIBC_2.2) [SUSv3] tzset(GLIBC_2.2) [SUSv3] 2575 ualarm(GLIBC_2.2) [SUSv3] 2576 2577 An LSB conforming implementation shall provide the 2578 architecture specific data interfaces for Time Manipulation 2579 specified in Table 11-17, with the full mandatory 2580 functionality as described in the referenced underlying 2581 specification. 2582 2583 Table 11-17. libc - Time Manipulation Data Interfaces 2584 __daylight(GLIBC_2.2) [LSB] __timezone(GLIBC_2.2) [LSB] 2585 __tzname(GLIBC_2.2) [LSB] daylight(GLIBC_2.2) [SUSv3] 2586 timezone(GLIBC_2.2) [SUSv3] tzname(GLIBC_2.2) [SUSv3] 2587 _________________________________________________________ 2588 2589 11.2.13. Terminal Interface Functions 2590 _________________________________________________________ 2591 2592 11.2.13.1. Interfaces for Terminal Interface Functions 2593 2594 An LSB conforming implementation shall provide the 2595 architecture specific functions for Terminal Interface 2596 Functions specified in Table 11-18, with the full mandatory 2597 functionality as described in the referenced underlying 2598 specification. 2599 2600 Table 11-18. libc - Terminal Interface Functions Function 2601 Interfaces 2602 cfgetispeed(GLIBC_2.2) [SUSv3] cfgetospeed(GLIBC_2.2) [SUSv3] 2603 cfmakeraw(GLIBC_2.2) [LSB] cfsetispeed(GLIBC_2.2) [SUSv3] 2604 cfsetospeed(GLIBC_2.2) [SUSv3] cfsetspeed(GLIBC_2.2) [LSB] 2605 tcdrain(GLIBC_2.2) [SUSv3] tcflow(GLIBC_2.2) [SUSv3] 2606 tcflush(GLIBC_2.2) [SUSv3] tcgetattr(GLIBC_2.2) [SUSv3] 2607 tcgetpgrp(GLIBC_2.2) [SUSv3] tcgetsid(GLIBC_2.2) [SUSv3] 2608 tcsendbreak(GLIBC_2.2) [SUSv3] tcsetattr(GLIBC_2.2) [SUSv3] 2609 tcsetpgrp(GLIBC_2.2) [SUSv3] 2610 _________________________________________________________ 2611 2612 11.2.14. System Database Interface 2613 _________________________________________________________ 2614 2615 11.2.14.1. Interfaces for System Database Interface 2616 2617 An LSB conforming implementation shall provide the 2618 architecture specific functions for System Database Interface 2619 specified in Table 11-19, with the full mandatory 2620 functionality as described in the referenced underlying 2621 specification. 2622 2623 Table 11-19. libc - System Database Interface Function 2624 Interfaces 2625 endgrent(GLIBC_2.2) [SUSv3] endprotoent(GLIBC_2.2) [SUSv3] 2626 endpwent(GLIBC_2.2) [SUSv3] endservent(GLIBC_2.2) [SUSv3] 2627 endutent(GLIBC_2.2) [SUSv2] endutxent(GLIBC_2.2) [SUSv3] 2628 getgrent(GLIBC_2.2) [SUSv3] getgrgid(GLIBC_2.2) [SUSv3] 2629 getgrgid_r(GLIBC_2.2) [SUSv3] getgrnam(GLIBC_2.2) [SUSv3] 2630 getgrnam_r(GLIBC_2.2) [SUSv3] getgrouplist(GLIBC_2.2.4) [LSB] 2631 gethostbyaddr(GLIBC_2.2) [SUSv3] gethostbyname(GLIBC_2.2) 2632 [SUSv3] getprotobyname(GLIBC_2.2) [SUSv3] 2633 getprotobynumber(GLIBC_2.2) [SUSv3] 2634 getprotoent(GLIBC_2.2) [SUSv3] getpwent(GLIBC_2.2) [SUSv3] 2635 getpwnam(GLIBC_2.2) [SUSv3] getpwnam_r(GLIBC_2.2) [SUSv3] 2636 getpwuid(GLIBC_2.2) [SUSv3] getpwuid_r(GLIBC_2.2) [SUSv3] 2637 getservbyname(GLIBC_2.2) [SUSv3] getservbyport(GLIBC_2.2) 2638 [SUSv3] 2639 getservent(GLIBC_2.2) [SUSv3] getutent(GLIBC_2.2) [LSB] 2640 getutent_r(GLIBC_2.2) [LSB] getutxent(GLIBC_2.2) [SUSv3] 2641 getutxid(GLIBC_2.2) [SUSv3] getutxline(GLIBC_2.2) [SUSv3] 2642 pututxline(GLIBC_2.2) [SUSv3] setgrent(GLIBC_2.2) [SUSv3] 2643 setgroups(GLIBC_2.2) [LSB] setprotoent(GLIBC_2.2) [SUSv3] 2644 setpwent(GLIBC_2.2) [SUSv3] setservent(GLIBC_2.2) [SUSv3] 2645 setutent(GLIBC_2.2) [LSB] setutxent(GLIBC_2.2) [SUSv3] 2646 utmpname(GLIBC_2.2) [LSB] 2647 _________________________________________________________ 2648 2649 11.2.15. Language Support 2650 _________________________________________________________ 2651 2652 11.2.15.1. Interfaces for Language Support 2653 2654 An LSB conforming implementation shall provide the 2655 architecture specific functions for Language Support specified 2656 in Table 11-20, with the full mandatory functionality as 2657 described in the referenced underlying specification. 2658 2659 Table 11-20. libc - Language Support Function Interfaces 2660 __libc_start_main(GLIBC_2.2) [LSB] 2661 _________________________________________________________ 2662 2663 11.2.16. Large File Support 2664 _________________________________________________________ 2665 2666 11.2.16.1. Interfaces for Large File Support 2667 2668 An LSB conforming implementation shall provide the 2669 architecture specific functions for Large File Support 2670 specified in Table 11-21, with the full mandatory 2671 functionality as described in the referenced underlying 2672 specification. 2673 2674 Table 11-21. libc - Large File Support Function Interfaces 2675 __fxstat64(GLIBC_2.2) [LSB] __lxstat64(GLIBC_2.2) [LSB] 2676 __xstat64(GLIBC_2.2) [LSB] creat64(GLIBC_2.2) [LFS] 2677 fgetpos64(GLIBC_2.2) [LFS] fopen64(GLIBC_2.2) [LFS] 2678 freopen64(GLIBC_2.2) [LFS] fseeko64(GLIBC_2.2) [LFS] 2679 fsetpos64(GLIBC_2.2) [LFS] fstatvfs64(GLIBC_2.2) [LFS] 2680 ftello64(GLIBC_2.2) [LFS] ftruncate64(GLIBC_2.2) [LFS] 2681 ftw64(GLIBC_2.2) [LFS] getrlimit64(GLIBC_2.2) [LFS] 2682 lockf64(GLIBC_2.2) [LFS] mkstemp64(GLIBC_2.2) [LFS] 2683 mmap64(GLIBC_2.2) [LFS] nftw64(GLIBC_2.3.3) [LFS] 2684 readdir64(GLIBC_2.2) [LFS] statvfs64(GLIBC_2.2) [LFS] 2685 tmpfile64(GLIBC_2.2) [LFS] truncate64(GLIBC_2.2) [LFS] 2686 _________________________________________________________ 2687 2688 11.2.17. Standard Library 2689 _________________________________________________________ 2690 2691 11.2.17.1. Interfaces for Standard Library 2692 2693 An LSB conforming implementation shall provide the 2694 architecture specific functions for Standard Library specified 2695 in Table 11-22, with the full mandatory functionality as 2696 described in the referenced underlying specification. 2697 2698 Table 11-22. libc - Standard Library Function Interfaces 2699 _Exit(GLIBC_2.2) [SUSv3] __assert_fail(GLIBC_2.2) [LSB] 2700 __cxa_atexit(GLIBC_2.2) [LSB] __errno_location(GLIBC_2.2) 2701 [LSB] 2702 __fpending(GLIBC_2.2) [LSB] __getpagesize(GLIBC_2.2) [LSB] 2703 __isinf(GLIBC_2.2) [LSB] __isinff(GLIBC_2.2) [LSB] 2704 __isinfl(GLIBC_2.2) [LSB] __isnan(GLIBC_2.2) [LSB] 2705 __isnanf(GLIBC_2.2) [LSB] __isnanl(GLIBC_2.2) [LSB] 2706 __sysconf(GLIBC_2.2) [LSB] _exit(GLIBC_2.2) [SUSv3] 2707 _longjmp(GLIBC_2.2) [SUSv3] _setjmp(GLIBC_2.2) [SUSv3] 2708 a64l(GLIBC_2.2) [SUSv3] abort(GLIBC_2.2) [SUSv3] 2709 abs(GLIBC_2.2) [SUSv3] atof(GLIBC_2.2) [SUSv3] 2710 atoi(GLIBC_2.2) [SUSv3] atol(GLIBC_2.2) [SUSv3] 2711 atoll(GLIBC_2.2) [SUSv3] basename(GLIBC_2.2) [SUSv3] 2712 bsearch(GLIBC_2.2) [SUSv3] calloc(GLIBC_2.2) [SUSv3] 2713 closelog(GLIBC_2.2) [SUSv3] confstr(GLIBC_2.2) [SUSv3] 2714 cuserid(GLIBC_2.2) [SUSv2] daemon(GLIBC_2.2) [LSB] 2715 dirname(GLIBC_2.2) [SUSv3] div(GLIBC_2.2) [SUSv3] 2716 drand48(GLIBC_2.2) [SUSv3] ecvt(GLIBC_2.2) [SUSv3] 2717 erand48(GLIBC_2.2) [SUSv3] err(GLIBC_2.2) [LSB] 2718 error(GLIBC_2.2) [LSB] errx(GLIBC_2.2) [LSB] fcvt(GLIBC_2.2) 2719 [SUSv3] fmtmsg(GLIBC_2.2) [SUSv3] 2720 fnmatch(GLIBC_2.2.3) [SUSv3] fpathconf(GLIBC_2.2) [SUSv3] 2721 free(GLIBC_2.2) [SUSv3] freeaddrinfo(GLIBC_2.2) [SUSv3] 2722 ftrylockfile(GLIBC_2.2) [SUSv3] ftw(GLIBC_2.2) [SUSv3] 2723 funlockfile(GLIBC_2.2) [SUSv3] gai_strerror(GLIBC_2.2) [SUSv3] 2724 gcvt(GLIBC_2.2) [SUSv3] getaddrinfo(GLIBC_2.2) [SUSv3] 2725 getcwd(GLIBC_2.2) [SUSv3] getdate(GLIBC_2.2) [SUSv3] 2726 getenv(GLIBC_2.2) [SUSv3] getlogin(GLIBC_2.2) [SUSv3] 2727 getlogin_r(GLIBC_2.2) [SUSv3] getnameinfo(GLIBC_2.2) [SUSv3] 2728 getopt(GLIBC_2.2) [LSB] getopt_long(GLIBC_2.2) [LSB] 2729 getopt_long_only(GLIBC_2.2) [LSB] getsubopt(GLIBC_2.2) [SUSv3] 2730 gettimeofday(GLIBC_2.2) [SUSv3] glob(GLIBC_2.2) [SUSv3] 2731 glob64(GLIBC_2.2) [LSB] globfree(GLIBC_2.2) [SUSv3] 2732 globfree64(GLIBC_2.2) [LSB] grantpt(GLIBC_2.2) [SUSv3] 2733 hcreate(GLIBC_2.2) [SUSv3] hdestroy(GLIBC_2.2) [SUSv3] 2734 hsearch(GLIBC_2.2) [SUSv3] htonl(GLIBC_2.2) [SUSv3] 2735 htons(GLIBC_2.2) [SUSv3] imaxabs(GLIBC_2.2) [SUSv3] 2736 imaxdiv(GLIBC_2.2) [SUSv3] inet_addr(GLIBC_2.2) [SUSv3] 2737 inet_ntoa(GLIBC_2.2) [SUSv3] inet_ntop(GLIBC_2.2) [SUSv3] 2738 inet_pton(GLIBC_2.2) [SUSv3] initstate(GLIBC_2.2) [SUSv3] 2739 insque(GLIBC_2.2) [SUSv3] isatty(GLIBC_2.2) [SUSv3] 2740 isblank(GLIBC_2.2) [SUSv3] jrand48(GLIBC_2.2) [SUSv3] 2741 l64a(GLIBC_2.2) [SUSv3] labs(GLIBC_2.2) [SUSv3] 2742 lcong48(GLIBC_2.2) [SUSv3] ldiv(GLIBC_2.2) [SUSv3] 2743 lfind(GLIBC_2.2) [SUSv3] llabs(GLIBC_2.2) [SUSv3] 2744 lldiv(GLIBC_2.2) [SUSv3] longjmp(GLIBC_2.2) [SUSv3] 2745 lrand48(GLIBC_2.2) [SUSv3] lsearch(GLIBC_2.2) [SUSv3] 2746 makecontext(GLIBC_2.2) [SUSv3] malloc(GLIBC_2.2) [SUSv3] 2747 memmem(GLIBC_2.2) [LSB] mkstemp(GLIBC_2.2) [SUSv3] 2748 mktemp(GLIBC_2.2) [SUSv3] mrand48(GLIBC_2.2) [SUSv3] 2749 nftw(GLIBC_2.3.3) [SUSv3] nrand48(GLIBC_2.2) [SUSv3] 2750 ntohl(GLIBC_2.2) [SUSv3] ntohs(GLIBC_2.2) [SUSv3] 2751 openlog(GLIBC_2.2) [SUSv3] perror(GLIBC_2.2) [SUSv3] 2752 posix_memalign(GLIBC_2.2) [SUSv3] posix_openpt(GLIBC_2.2.1) 2753 [SUSv3] ptsname(GLIBC_2.2) [SUSv3] putenv(GLIBC_2.2) [SUSv3] 2754 qsort(GLIBC_2.2) [SUSv3] rand(GLIBC_2.2) [SUSv3] 2755 rand_r(GLIBC_2.2) [SUSv3] random(GLIBC_2.2) [SUSv3] 2756 realloc(GLIBC_2.2) [SUSv3] realpath(GLIBC_2.3) [SUSv3] 2757 remque(GLIBC_2.2) [SUSv3] seed48(GLIBC_2.2) [SUSv3] 2758 setenv(GLIBC_2.2) [SUSv3] sethostname(GLIBC_2.2) [LSB] 2759 setlogmask(GLIBC_2.2) [SUSv3] setstate(GLIBC_2.2) [SUSv3] 2760 srand(GLIBC_2.2) [SUSv3] srand48(GLIBC_2.2) [SUSv3] 2761 srandom(GLIBC_2.2) [SUSv3] strtod(GLIBC_2.2) [SUSv3] 2762 strtol(GLIBC_2.2) [SUSv3] strtoul(GLIBC_2.2) [SUSv3] 2763 swapcontext(GLIBC_2.2) [SUSv3] syslog(GLIBC_2.2) [SUSv3] 2764 system(GLIBC_2.2) [LSB] tdelete(GLIBC_2.2) [SUSv3] 2765 tfind(GLIBC_2.2) [SUSv3] tmpfile(GLIBC_2.2) [SUSv3] 2766 tmpnam(GLIBC_2.2) [SUSv3] tsearch(GLIBC_2.2) [SUSv3] 2767 ttyname(GLIBC_2.2) [SUSv3] ttyname_r(GLIBC_2.2) [SUSv3] 2768 twalk(GLIBC_2.2) [SUSv3] unlockpt(GLIBC_2.2) [SUSv3] 2769 unsetenv(GLIBC_2.2) [SUSv3] usleep(GLIBC_2.2) [SUSv3] 2770 verrx(GLIBC_2.2) [LSB] vfscanf(GLIBC_2.2) [LSB] 2771 vscanf(GLIBC_2.2) [LSB] vsscanf(GLIBC_2.2) [LSB] 2772 vsyslog(GLIBC_2.2) [LSB] warn(GLIBC_2.2) [LSB] 2773 warnx(GLIBC_2.2) [LSB] wordexp(GLIBC_2.2.2) [SUSv3] 2774 wordfree(GLIBC_2.2) [SUSv3] 2775 2776 An LSB conforming implementation shall provide the 2777 architecture specific data interfaces for Standard Library 2778 specified in Table 11-23, with the full mandatory 2779 functionality as described in the referenced underlying 2780 specification. 2781 2782 Table 11-23. libc - Standard Library Data Interfaces 2783 __environ(GLIBC_2.2) [LSB] _environ(GLIBC_2.2) [LSB] 2784 _sys_errlist(GLIBC_2.3) [LSB] environ(GLIBC_2.2) [SUSv3] 2785 getdate_err(GLIBC_2.2) [SUSv3] optarg(GLIBC_2.2) [SUSv3] 2786 opterr(GLIBC_2.2) [SUSv3] optind(GLIBC_2.2) [SUSv3] 2787 optopt(GLIBC_2.2) [SUSv3] 2788 _________________________________________________________ 2789 2790 11.3. Data Definitions for libc 2791 2792 This section defines global identifiers and their values that 2793 are associated with interfaces contained in libc. These 2794 definitions are organized into groups that correspond to 2795 system headers. This convention is used as a convenience for 2796 the reader, and does not imply the existence of these headers, 2797 or their content. Where an interface is defined as requiring a 2798 particular system header file all of the data definitions for 2799 that system header file presented here shall be in effect. 2800 2801 This section gives data definitions to promote binary 2802 application portability, not to repeat source interface 2803 definitions available elsewhere. System providers and 2804 application developers should use this ABI to supplement - not 2805 to replace - source interface definition specifications. 2806 2807 This specification uses the ISO C (1999) C Language as the 2808 reference programming language, and data definitions are 2809 specified in ISO C format. The C language is used here as a 2810 convenient notation. Using a C language description of these 2811 data objects does not preclude their use by other programming 2812 languages. 2813 _________________________________________________________ 2814 2815 11.3.1. arpa/inet.h 2816 2817 extern uint32_t htonl(uint32_t); 2818 extern uint16_t htons(uint16_t); 2819 extern in_addr_t inet_addr(const char *); 2820 extern char *inet_ntoa(struct in_addr); 2821 extern const char *inet_ntop(int, const void *, char *, socklen_t); 2822 extern int inet_pton(int, const char *, void *); 2823 extern uint32_t ntohl(uint32_t); 2824 extern uint16_t ntohs(uint16_t); 2825 _________________________________________________________ 2826 2827 11.3.2. assert.h 2828 2829 extern void __assert_fail(const char *, const char *, unsigned int, 2830 const char *); 2831 _________________________________________________________ 2832 2833 11.3.3. ctype.h 2834 2835 extern int _tolower(int); 2836 extern int _toupper(int); 2837 extern int isalnum(int); 2838 extern int isalpha(int); 2839 extern int isascii(int); 2840 extern int iscntrl(int); 2841 extern int isdigit(int); 2842 extern int isgraph(int); 2843 extern int islower(int); 2844 extern int isprint(int); 2845 extern int ispunct(int); 2846 extern int isspace(int); 2847 extern int isupper(int); 2848 extern int isxdigit(int); 2849 extern int toascii(int); 2850 extern int tolower(int); 2851 extern int toupper(int); 2852 extern int isblank(int); 2853 extern const unsigned short **__ctype_b_loc(void); 2854 extern const int32_t **__ctype_toupper_loc(void); 2855 extern const int32_t **__ctype_tolower_loc(void); 2856 _________________________________________________________ 2857 2858 11.3.4. dirent.h 2859 2860 extern void rewinddir(DIR *); 2861 extern void seekdir(DIR *, long int); 2862 extern long int telldir(DIR *); 2863 extern int closedir(DIR *); 2864 extern DIR *opendir(const char *); 2865 extern struct dirent *readdir(DIR *); 2866 extern struct dirent64 *readdir64(DIR *); 2867 extern int readdir_r(DIR *, struct dirent *, struct dirent **); 2868 _________________________________________________________ 2869 2870 11.3.5. err.h 2871 2872 extern void err(int, const char *, ...); 2873 extern void errx(int, const char *, ...); 2874 extern void warn(const char *, ...); 2875 extern void warnx(const char *, ...); 2876 extern void error(int, int, const char *, ...); 2877 _________________________________________________________ 2878 2879 11.3.6. errno.h 2880 2881 #define EDEADLOCK EDEADLK 2882 2883 extern int *__errno_location(void); 2884 _________________________________________________________ 2885 2886 11.3.7. fcntl.h 2887 2888 #define F_GETLK64 5 2889 #define F_SETLK64 6 2890 #define F_SETLKW64 7 2891 2892 extern int lockf64(int, int, off64_t); 2893 extern int fcntl(int, int, ...); 2894 _________________________________________________________ 2895 2896 11.3.8. fmtmsg.h 2897 2898 extern int fmtmsg(long int, const char *, int, const char *, const char *, 2899 const char *); 2900 _________________________________________________________ 2901 2902 11.3.9. fnmatch.h 2903 2904 extern int fnmatch(const char *, const char *, int); 2905 _________________________________________________________ 2906 2907 11.3.10. ftw.h 2908 2909 extern int ftw(const char *, __ftw_func_t, int); 2910 extern int ftw64(const char *, __ftw64_func_t, int); 2911 extern int nftw(const char *, __nftw_func_t, int, int); 2912 extern int nftw64(const char *, __nftw64_func_t, int, int); 2913 _________________________________________________________ 2914 2915 11.3.11. getopt.h 2916 2917 extern int getopt_long(int, char *const, const char *, 2918 const struct option *, int *); 2919 extern int getopt_long_only(int, char *const, const char *, 2920 const struct option *, int *); 2921 _________________________________________________________ 2922 2923 11.3.12. glob.h 2924 2925 extern int glob(const char *, int, 2926 int (*__errfunc) (const char *p1, int p2) 2927 , glob_t *); 2928 extern int glob64(const char *, int, 2929 int (*__errfunc) (const char *p1, int p2) 2930 , glob64_t *); 2931 extern void globfree(glob_t *); 2932 extern void globfree64(glob64_t *); 2933 _________________________________________________________ 2934 2935 11.3.13. grp.h 2936 2937 extern void endgrent(void); 2938 extern struct group *getgrent(void); 2939 extern struct group *getgrgid(gid_t); 2940 extern struct group *getgrnam(char *); 2941 extern int initgroups(const char *, gid_t); 2942 extern void setgrent(void); 2943 extern int setgroups(size_t, const gid_t *); 2944 extern int getgrgid_r(gid_t, struct group *, char *, size_t, 2945 struct group **); 2946 extern int getgrnam_r(const char *, struct group *, char *, size_t, 2947 struct group **); 2948 extern int getgrouplist(const char *, gid_t, gid_t *, int *); 2949 _________________________________________________________ 2950 2951 11.3.14. iconv.h 2952 2953 extern size_t iconv(iconv_t, char **, size_t *, char **, size_t *); 2954 extern int iconv_close(iconv_t); 2955 extern iconv_t iconv_open(char *, char *); 2956 _________________________________________________________ 2957 2958 11.3.15. inttypes.h 2959 2960 typedef long int intmax_t; 2961 typedef unsigned long int uintmax_t; 2962 typedef unsigned long int uintptr_t; 2963 typedef unsigned long int uint64_t; 2964 2965 extern intmax_t strtoimax(const char *, char **, int); 2966 extern uintmax_t strtoumax(const char *, char **, int); 2967 extern intmax_t wcstoimax(const wchar_t *, wchar_t * *, int); 2968 extern uintmax_t wcstoumax(const wchar_t *, wchar_t * *, int); 2969 extern intmax_t imaxabs(intmax_t); 2970 extern imaxdiv_t imaxdiv(intmax_t, intmax_t); 2971 _________________________________________________________ 2972 2973 11.3.16. langinfo.h 2974 2975 extern char *nl_langinfo(nl_item); 2976 _________________________________________________________ 2977 2978 11.3.17. libgen.h 2979 2980 extern char *basename(const char *); 2981 extern char *dirname(char *); 2982 _________________________________________________________ 2983 2984 11.3.18. libintl.h 2985 2986 extern char *bindtextdomain(const char *, const char *); 2987 extern char *dcgettext(const char *, const char *, int); 2988 extern char *dgettext(const char *, const char *); 2989 extern char *gettext(const char *); 2990 extern char *textdomain(const char *); 2991 extern char *bind_textdomain_codeset(const char *, const char *); 2992 extern char *dcngettext(const char *, const char *, const char *, 2993 unsigned long int, int); 2994 extern char *dngettext(const char *, const char *, const char *, 2995 unsigned long int); 2996 extern char *ngettext(const char *, const char *, unsigned long int); 2997 _________________________________________________________ 2998 2999 11.3.19. limits.h 3000 3001 #define LONG_MAX 0x7FFFFFFFFFFFFFFFL 3002 #define ULONG_MAX 0xFFFFFFFFFFFFFFFFUL 3003 3004 #define CHAR_MAX SCHAR_MAX 3005 #define CHAR_MIN SCHAR_MIN 3006 3007 #define PTHREAD_STACK_MIN 196608 3008 _________________________________________________________ 3009 3010 11.3.20. locale.h 3011 3012 extern struct lconv *localeconv(void); 3013 extern char *setlocale(int, const char *); 3014 extern locale_t uselocale(locale_t); 3015 extern void freelocale(locale_t); 3016 extern locale_t duplocale(locale_t); 3017 extern locale_t newlocale(int, const char *, locale_t); 3018 _________________________________________________________ 3019 3020 11.3.21. monetary.h 3021 3022 extern ssize_t strfmon(char *, size_t, const char *, ...); 3023 _________________________________________________________ 3024 3025 11.3.22. net/if.h 3026 3027 extern void if_freenameindex(struct if_nameindex *); 3028 extern char *if_indextoname(unsigned int, char *); 3029 extern struct if_nameindex *if_nameindex(void); 3030 extern unsigned int if_nametoindex(const char *); 3031 _________________________________________________________ 3032 3033 11.3.23. netdb.h 3034 3035 extern void endprotoent(void); 3036 extern void endservent(void); 3037 extern void freeaddrinfo(struct addrinfo *); 3038 extern const char *gai_strerror(int); 3039 extern int getaddrinfo(const char *, const char *, const struct addrinfo *, 3040 struct addrinfo **); 3041 extern struct hostent *gethostbyaddr(const void *, socklen_t, int); 3042 extern struct hostent *gethostbyname(const char *); 3043 extern struct protoent *getprotobyname(const char *); 3044 extern struct protoent *getprotobynumber(int); 3045 extern struct protoent *getprotoent(void); 3046 extern struct servent *getservbyname(const char *, const char *); 3047 extern struct servent *getservbyport(int, const char *); 3048 extern struct servent *getservent(void); 3049 extern void setprotoent(int); 3050 extern void setservent(int); 3051 extern int *__h_errno_location(void); 3052 _________________________________________________________ 3053 3054 11.3.24. netinet/in.h 3055 3056 extern int bindresvport(int, struct sockaddr_in *); 3057 _________________________________________________________ 3058 3059 11.3.25. netinet/ip.h 3060 3061 /* 3062 * This header is architecture neutral 3063 * Please refer to the generic specification for details 3064 */ 3065 _________________________________________________________ 3066 3067 11.3.26. netinet/tcp.h 3068 3069 /* 3070 * This header is architecture neutral 3071 * Please refer to the generic specification for details 3072 */ 3073 _________________________________________________________ 3074 3075 11.3.27. netinet/udp.h 3076 3077 /* 3078 * This header is architecture neutral 3079 * Please refer to the generic specification for details 3080 */ 3081 _________________________________________________________ 3082 3083 11.3.28. nl_types.h 3084 3085 extern int catclose(nl_catd); 3086 extern char *catgets(nl_catd, int, int, const char *); 3087 extern nl_catd catopen(const char *, int); 3088 _________________________________________________________ 3089 3090 11.3.29. poll.h 3091 3092 extern int poll(struct pollfd *, nfds_t, int); 3093 _________________________________________________________ 3094 3095 11.3.30. pty.h 3096 3097 extern int openpty(int *, int *, char *, struct termios *, 3098 struct winsize *); 3099 extern int forkpty(int *, char *, struct termios *, struct winsize *); 3100 _________________________________________________________ 3101 3102 11.3.31. pwd.h 3103 3104 extern void endpwent(void); 3105 extern struct passwd *getpwent(void); 3106 extern struct passwd *getpwnam(char *); 3107 extern struct passwd *getpwuid(uid_t); 3108 extern void setpwent(void); 3109 extern int getpwnam_r(char *, struct passwd *, char *, size_t, 3110 struct passwd **); 3111 extern int getpwuid_r(uid_t, struct passwd *, char *, size_t, 3112 struct passwd **); 3113 _________________________________________________________ 3114 3115 11.3.32. regex.h 3116 3117 extern int regcomp(regex_t *, const char *, int); 3118 extern size_t regerror(int, const regex_t *, char *, size_t); 3119 extern int regexec(const regex_t *, const char *, size_t, regmatch_t, int); 3120 extern void regfree(regex_t *); 3121 _________________________________________________________ 3122 3123 11.3.33. rpc/auth.h 3124 3125 extern struct AUTH *authnone_create(void); 3126 extern int key_decryptsession(char *, union des_block *); 3127 extern bool_t xdr_opaque_auth(XDR *, struct opaque_auth *); 3128 _________________________________________________________ 3129 3130 11.3.34. rpc/clnt.h 3131 3132 extern struct CLIENT *clnt_create(const char *, const u_long, const u_long, 3133 const char *); 3134 extern void clnt_pcreateerror(const char *); 3135 extern void clnt_perrno(enum clnt_stat); 3136 extern void clnt_perror(struct CLIENT *, const char *); 3137 extern char *clnt_spcreateerror(const char *); 3138 extern char *clnt_sperrno(enum clnt_stat); 3139 extern char *clnt_sperror(struct CLIENT *, const char *); 3140 _________________________________________________________ 3141 3142 11.3.35. rpc/pmap_clnt.h 3143 3144 extern u_short pmap_getport(struct sockaddr_in *, const u_long, 3145 const u_long, u_int); 3146 extern bool_t pmap_set(const u_long, const u_long, int, u_short); 3147 extern bool_t pmap_unset(u_long, u_long); 3148 _________________________________________________________ 3149 3150 11.3.36. rpc/rpc_msg.h 3151 3152 extern bool_t xdr_callhdr(XDR *, struct rpc_msg *); 3153 _________________________________________________________ 3154 3155 11.3.37. rpc/svc.h 3156 3157 extern void svc_getreqset(fd_set *); 3158 extern bool_t svc_register(SVCXPRT *, rpcprog_t, rpcvers_t, 3159 __dispatch_fn_t, rpcprot_t); 3160 extern void svc_run(void); 3161 extern bool_t svc_sendreply(SVCXPRT *, xdrproc_t, caddr_t); 3162 extern void svcerr_auth(SVCXPRT *, enum auth_stat); 3163 extern void svcerr_decode(SVCXPRT *); 3164 extern void svcerr_noproc(SVCXPRT *); 3165 extern void svcerr_noprog(SVCXPRT *); 3166 extern void svcerr_progvers(SVCXPRT *, rpcvers_t, rpcvers_t); 3167 extern void svcerr_systemerr(SVCXPRT *); 3168 extern void svcerr_weakauth(SVCXPRT *); 3169 extern SVCXPRT *svctcp_create(int, u_int, u_int); 3170 extern SVCXPRT *svcudp_create(int); 3171 _________________________________________________________ 3172 3173 11.3.38. rpc/types.h 3174 3175 /* 3176 * This header is architecture neutral 3177 * Please refer to the generic specification for details 3178 */ 3179 _________________________________________________________ 3180 3181 11.3.39. rpc/xdr.h 3182 3183 extern bool_t xdr_array(XDR *, caddr_t *, u_int *, u_int, u_int, 3184 xdrproc_t); 3185 extern bool_t xdr_bool(XDR *, bool_t *); 3186 extern bool_t xdr_bytes(XDR *, char **, u_int *, u_int); 3187 extern bool_t xdr_char(XDR *, char *); 3188 extern bool_t xdr_double(XDR *, double *); 3189 extern bool_t xdr_enum(XDR *, enum_t *); 3190 extern bool_t xdr_float(XDR *, float *); 3191 extern void xdr_free(xdrproc_t, char *); 3192 extern bool_t xdr_int(XDR *, int *); 3193 extern bool_t xdr_long(XDR *, long int *); 3194 extern bool_t xdr_opaque(XDR *, caddr_t, u_int); 3195 extern bool_t xdr_pointer(XDR *, char **, u_int, xdrproc_t); 3196 extern bool_t xdr_reference(XDR *, caddr_t *, u_int, xdrproc_t); 3197 extern bool_t xdr_short(XDR *, short *); 3198 extern bool_t xdr_string(XDR *, char **, u_int); 3199 extern bool_t xdr_u_char(XDR *, u_char *); 3200 extern bool_t xdr_u_int(XDR *, u_int *); 3201 extern bool_t xdr_u_long(XDR *, u_long *); 3202 extern bool_t xdr_u_short(XDR *, u_short *); 3203 extern bool_t xdr_union(XDR *, enum_t *, char *, 3204 const struct xdr_discrim *, xdrproc_t); 3205 extern bool_t xdr_vector(XDR *, char *, u_int, u_int, xdrproc_t); 3206 extern bool_t xdr_void(void); 3207 extern bool_t xdr_wrapstring(XDR *, char **); 3208 extern void xdrmem_create(XDR *, caddr_t, u_int, enum xdr_op); 3209 extern void xdrrec_create(XDR *, u_int, u_int, caddr_t, 3210 int (*__readit) (char *p1, char *p2, int p3) 3211 , int (*__writeit) (char *p1, char *p2, int p3) 3212 ); 3213 extern typedef int bool_t xdrrec_eof(XDR *); 3214 _________________________________________________________ 3215 3216 11.3.40. sched.h 3217 3218 extern int sched_get_priority_max(int); 3219 extern int sched_get_priority_min(int); 3220 extern int sched_getparam(pid_t, struct sched_param *); 3221 extern int sched_getscheduler(pid_t); 3222 extern int sched_rr_get_interval(pid_t, struct timespec *); 3223 extern int sched_setparam(pid_t, const struct sched_param *); 3224 extern int sched_setscheduler(pid_t, int, const struct sched_param *); 3225 extern int sched_yield(void); 3226 _________________________________________________________ 3227 3228 11.3.41. search.h 3229 3230 extern int hcreate(size_t); 3231 extern ENTRY *hsearch(ENTRY, ACTION); 3232 extern void insque(void *, void *); 3233 extern void *lfind(const void *, const void *, size_t *, size_t, 3234 __compar_fn_t); 3235 extern void *lsearch(const void *, void *, size_t *, size_t, 3236 __compar_fn_t); 3237 extern void remque(void *); 3238 extern void hdestroy(void); 3239 extern void *tdelete(const void *, void **, __compar_fn_t); 3240 extern void *tfind(const void *, void *const *, __compar_fn_t); 3241 extern void *tsearch(const void *, void **, __compar_fn_t); 3242 extern void twalk(const void *, __action_fn_t); 3243 _________________________________________________________ 3244 3245 11.3.42. setjmp.h 3246 3247 typedef long int __jmp_buf[70] __attribute__ ((aligned(16))); 3248 3249 extern int __sigsetjmp(jmp_buf, int); 3250 extern void longjmp(jmp_buf, int); 3251 extern void siglongjmp(sigjmp_buf, int); 3252 extern void _longjmp(jmp_buf, int); 3253 extern int _setjmp(jmp_buf); 3254 _________________________________________________________ 3255 3256 11.3.43. signal.h 3257 3258 #define SIGEV_PAD_SIZE ((SIGEV_MAX_SIZE/sizeof(int))-4) 3259 3260 #define SI_PAD_SIZE ((SI_MAX_SIZE/sizeof(int))-4) 3261 3262 struct sigaction { 3263 union { 3264 sighandler_t _sa_handler; 3265 void (*_sa_sigaction) (int, siginfo_t *, void *); 3266 } __sigaction_handler; 3267 unsigned long int sa_flags; 3268 sigset_t sa_mask; 3269 }; 3270 3271 #define MINSIGSTKSZ 131027 3272 #define SIGSTKSZ 262144 3273 3274 struct ia64_fpreg { 3275 union { 3276 unsigned long int bits[2]; 3277 long double __dummy; 3278 } u; 3279 }; 3280 3281 struct sigcontext { 3282 unsigned long int sc_flags; 3283 unsigned long int sc_nat; 3284 stack_t sc_stack; 3285 unsigned long int sc_ip; 3286 unsigned long int sc_cfm; 3287 unsigned long int sc_um; 3288 unsigned long int sc_ar_rsc; 3289 unsigned long int sc_ar_bsp; 3290 unsigned long int sc_ar_rnat; 3291 unsigned long int sc_ar_ccv; 3292 unsigned long int sc_ar_unat; 3293 unsigned long int sc_ar_fpsr; 3294 unsigned long int sc_ar_pfs; 3295 unsigned long int sc_ar_lc; 3296 unsigned long int sc_pr; 3297 unsigned long int sc_br[8]; 3298 unsigned long int sc_gr[32]; 3299 struct ia64_fpreg sc_fr[128]; 3300 unsigned long int sc_rbs_base; 3301 unsigned long int sc_loadrs; 3302 unsigned long int sc_ar25; 3303 unsigned long int sc_ar26; 3304 unsigned long int sc_rsvd[12]; 3305 unsigned long int sc_mask; 3306 }; 3307 extern int __libc_current_sigrtmax(void); 3308 extern int __libc_current_sigrtmin(void); 3309 extern sighandler_t __sysv_signal(int, sighandler_t); 3310 extern char *const _sys_siglist(void); 3311 extern int killpg(pid_t, int); 3312 extern void psignal(int, const char *); 3313 extern int raise(int); 3314 extern int sigaddset(sigset_t *, int); 3315 extern int sigandset(sigset_t *, const sigset_t *, const sigset_t *); 3316 extern int sigdelset(sigset_t *, int); 3317 extern int sigemptyset(sigset_t *); 3318 extern int sigfillset(sigset_t *); 3319 extern int sighold(int); 3320 extern int sigignore(int); 3321 extern int siginterrupt(int, int); 3322 extern int sigisemptyset(const sigset_t *); 3323 extern int sigismember(const sigset_t *, int); 3324 extern int sigorset(sigset_t *, const sigset_t *, const sigset_t *); 3325 extern int sigpending(sigset_t *); 3326 extern int sigrelse(int); 3327 extern sighandler_t sigset(int, sighandler_t); 3328 extern int pthread_kill(pthread_t, int); 3329 extern int pthread_sigmask(int, sigset_t *, sigset_t *); 3330 extern int sigaction(int, const struct sigaction *, struct sigaction *); 3331 extern int sigwait(sigset_t *, int *); 3332 extern int kill(pid_t, int); 3333 extern int sigaltstack(const struct sigaltstack *, struct sigaltstack *); 3334 extern sighandler_t signal(int, sighandler_t); 3335 extern int sigpause(int); 3336 extern int sigprocmask(int, const sigset_t *, sigset_t *); 3337 extern int sigreturn(struct sigcontext *); 3338 extern int sigsuspend(const sigset_t *); 3339 extern int sigqueue(pid_t, int, const union sigval); 3340 extern int sigwaitinfo(const sigset_t *, siginfo_t *); 3341 extern int sigtimedwait(const sigset_t *, siginfo_t *, 3342 const struct timespec *); 3343 extern sighandler_t bsd_signal(int, sighandler_t); 3344 _________________________________________________________ 3345 3346 11.3.44. stddef.h 3347 3348 typedef long int ptrdiff_t; 3349 typedef unsigned long int size_t; 3350 _________________________________________________________ 3351 3352 11.3.45. stdio.h 3353 3354 #define __IO_FILE_SIZE 216 3355 3356 extern char *const _sys_errlist(void); 3357 extern void clearerr(FILE *); 3358 extern int fclose(FILE *); 3359 extern FILE *fdopen(int, const char *); 3360 extern int fflush_unlocked(FILE *); 3361 extern int fileno(FILE *); 3362 extern FILE *fopen(const char *, const char *); 3363 extern int fprintf(FILE *, const char *, ...); 3364 extern int fputc(int, FILE *); 3365 extern FILE *freopen(const char *, const char *, FILE *); 3366 extern FILE *freopen64(const char *, const char *, FILE *); 3367 extern int fscanf(FILE *, const char *, ...); 3368 extern int fseek(FILE *, long int, int); 3369 extern int fseeko(FILE *, off_t, int); 3370 extern int fseeko64(FILE *, loff_t, int); 3371 extern off_t ftello(FILE *); 3372 extern loff_t ftello64(FILE *); 3373 extern int getchar(void); 3374 extern int getchar_unlocked(void); 3375 extern int getw(FILE *); 3376 extern int pclose(FILE *); 3377 extern void perror(const char *); 3378 extern FILE *popen(const char *, const char *); 3379 extern int printf(const char *, ...); 3380 extern int putc_unlocked(int, FILE *); 3381 extern int putchar(int); 3382 extern int putchar_unlocked(int); 3383 extern int putw(int, FILE *); 3384 extern int remove(const char *); 3385 extern void rewind(FILE *); 3386 extern int scanf(const char *, ...); 3387 extern void setbuf(FILE *, char *); 3388 extern int sprintf(char *, const char *, ...); 3389 extern int sscanf(const char *, const char *, ...); 3390 extern FILE *stderr(void); 3391 extern FILE *stdin(void); 3392 extern FILE *stdout(void); 3393 extern char *tempnam(const char *, const char *); 3394 extern FILE *tmpfile64(void); 3395 extern FILE *tmpfile(void); 3396 extern char *tmpnam(char *); 3397 extern int vfprintf(FILE *, const char *, va_list); 3398 extern int vprintf(const char *, va_list); 3399 extern int feof(FILE *); 3400 extern int ferror(FILE *); 3401 extern int fflush(FILE *); 3402 extern int fgetc(FILE *); 3403 extern int fgetpos(FILE *, fpos_t *); 3404 extern char *fgets(char *, int, FILE *); 3405 extern int fputs(const char *, FILE *); 3406 extern size_t fread(void *, size_t, size_t, FILE *); 3407 extern int fsetpos(FILE *, const fpos_t *); 3408 extern long int ftell(FILE *); 3409 extern size_t fwrite(const void *, size_t, size_t, FILE *); 3410 extern int getc(FILE *); 3411 extern int putc(int, FILE *); 3412 extern int puts(const char *); 3413 extern int setvbuf(FILE *, char *, int, size_t); 3414 extern int snprintf(char *, size_t, const char *, ...); 3415 extern int ungetc(int, FILE *); 3416 extern int vsnprintf(char *, size_t, const char *, va_list); 3417 extern int vsprintf(char *, const char *, va_list); 3418 extern void flockfile(FILE *); 3419 extern int asprintf(char **, const char *, ...); 3420 extern int fgetpos64(FILE *, fpos64_t *); 3421 extern FILE *fopen64(const char *, const char *); 3422 extern int fsetpos64(FILE *, const fpos64_t *); 3423 extern int ftrylockfile(FILE *); 3424 extern void funlockfile(FILE *); 3425 extern int getc_unlocked(FILE *); 3426 extern void setbuffer(FILE *, char *, size_t); 3427 extern int vasprintf(char **, const char *, va_list); 3428 extern int vdprintf(int, const char *, va_list); 3429 extern int vfscanf(FILE *, const char *, va_list); 3430 extern int vscanf(const char *, va_list); 3431 extern int vsscanf(const char *, const char *, va_list); 3432 extern size_t __fpending(FILE *); 3433 _________________________________________________________ 3434 3435 11.3.46. stdlib.h 3436 3437 extern double __strtod_internal(const char *, char **, int); 3438 extern float __strtof_internal(const char *, char **, int); 3439 extern long int __strtol_internal(const char *, char **, int, int); 3440 extern long double __strtold_internal(const char *, char **, int); 3441 extern long long int __strtoll_internal(const char *, char **, int, int); 3442 extern unsigned long int __strtoul_internal(const char *, char **, int, 3443 int); 3444 extern unsigned long long int __strtoull_internal(const char *, char **, 3445 int, int); 3446 extern long int a64l(const char *); 3447 extern void abort(void); 3448 extern int abs(int); 3449 extern double atof(const char *); 3450 extern int atoi(char *); 3451 extern long int atol(char *); 3452 extern long long int atoll(const char *); 3453 extern void *bsearch(const void *, const void *, size_t, size_t, 3454 __compar_fn_t); 3455 extern div_t div(int, int); 3456 extern double drand48(void); 3457 extern char *ecvt(double, int, int *, int *); 3458 extern double erand48(unsigned short); 3459 extern void exit(int); 3460 extern char *fcvt(double, int, int *, int *); 3461 extern char *gcvt(double, int, char *); 3462 extern char *getenv(const char *); 3463 extern int getsubopt(char **, char *const *, char **); 3464 extern int grantpt(int); 3465 extern long int jrand48(unsigned short); 3466 extern char *l64a(long int); 3467 extern long int labs(long int); 3468 extern void lcong48(unsigned short); 3469 extern ldiv_t ldiv(long int, long int); 3470 extern long long int llabs(long long int); 3471 extern lldiv_t lldiv(long long int, long long int); 3472 extern long int lrand48(void); 3473 extern int mblen(const char *, size_t); 3474 extern size_t mbstowcs(wchar_t *, const char *, size_t); 3475 extern int mbtowc(wchar_t *, const char *, size_t); 3476 extern char *mktemp(char *); 3477 extern long int mrand48(void); 3478 extern long int nrand48(unsigned short); 3479 extern char *ptsname(int); 3480 extern int putenv(char *); 3481 extern void qsort(void *, size_t, size_t, __compar_fn_t); 3482 extern int rand(void); 3483 extern int rand_r(unsigned int *); 3484 extern unsigned short *seed48(unsigned short); 3485 extern void srand48(long int); 3486 extern int unlockpt(int); 3487 extern size_t wcstombs(char *, const wchar_t *, size_t); 3488 extern int wctomb(char *, wchar_t); 3489 extern int system(const char *); 3490 extern void *calloc(size_t, size_t); 3491 extern void free(void *); 3492 extern char *initstate(unsigned int, char *, size_t); 3493 extern void *malloc(size_t); 3494 extern long int random(void); 3495 extern void *realloc(void *, size_t); 3496 extern char *setstate(char *); 3497 extern void srand(unsigned int); 3498 extern void srandom(unsigned int); 3499 extern double strtod(char *, char **); 3500 extern float strtof(const char *, char **); 3501 extern long int strtol(char *, char **, int); 3502 extern long double strtold(const char *, char **); 3503 extern long long int strtoll(const char *, char **, int); 3504 extern long long int strtoq(const char *, char **, int); 3505 extern unsigned long int strtoul(const char *, char **, int); 3506 extern unsigned long long int strtoull(const char *, char **, int); 3507 extern unsigned long long int strtouq(const char *, char **, int); 3508 extern void _Exit(int); 3509 extern size_t __ctype_get_mb_cur_max(void); 3510 extern char **environ(void); 3511 extern char *realpath(const char *, char *); 3512 extern int setenv(const char *, const char *, int); 3513 extern int unsetenv(const char *); 3514 extern int getloadavg(double, int); 3515 extern int mkstemp64(char *); 3516 extern int posix_memalign(void **, size_t, size_t); 3517 extern int posix_openpt(int); 3518 _________________________________________________________ 3519 3520 11.3.47. string.h 3521 3522 extern void *__mempcpy(void *, const void *, size_t); 3523 extern char *__stpcpy(char *, const char *); 3524 extern char *__strtok_r(char *, const char *, char **); 3525 extern void bcopy(void *, void *, size_t); 3526 extern void *memchr(void *, int, size_t); 3527 extern int memcmp(void *, void *, size_t); 3528 extern void *memcpy(void *, void *, size_t); 3529 extern void *memmem(const void *, size_t, const void *, size_t); 3530 extern void *memmove(void *, const void *, size_t); 3531 extern void *memset(void *, int, size_t); 3532 extern char *strcat(char *, const char *); 3533 extern char *strchr(char *, int); 3534 extern int strcmp(char *, char *); 3535 extern int strcoll(const char *, const char *); 3536 extern char *strcpy(char *, char *); 3537 extern size_t strcspn(const char *, const char *); 3538 extern char *strerror(int); 3539 extern size_t strlen(char *); 3540 extern char *strncat(char *, char *, size_t); 3541 extern int strncmp(char *, char *, size_t); 3542 extern char *strncpy(char *, char *, size_t); 3543 extern char *strpbrk(const char *, const char *); 3544 extern char *strrchr(char *, int); 3545 extern char *strsignal(int); 3546 extern size_t strspn(const char *, const char *); 3547 extern char *strstr(char *, char *); 3548 extern char *strtok(char *, const char *); 3549 extern size_t strxfrm(char *, const char *, size_t); 3550 extern int bcmp(void *, void *, size_t); 3551 extern void bzero(void *, size_t); 3552 extern int ffs(int); 3553 extern char *index(char *, int); 3554 extern void *memccpy(void *, const void *, int, size_t); 3555 extern char *rindex(char *, int); 3556 extern int strcasecmp(char *, char *); 3557 extern char *strdup(char *); 3558 extern int strncasecmp(char *, char *, size_t); 3559 extern char *strndup(const char *, size_t); 3560 extern size_t strnlen(const char *, size_t); 3561 extern char *strsep(char **, const char *); 3562 extern char *strerror_r(int, char *, size_t); 3563 extern char *strtok_r(char *, const char *, char **); 3564 extern char *strcasestr(const char *, const char *); 3565 extern char *stpcpy(char *, const char *); 3566 extern char *stpncpy(char *, const char *, size_t); 3567 extern void *memrchr(const void *, int, size_t); 3568 _________________________________________________________ 3569 3570 11.3.48. sys/file.h 3571 3572 extern int flock(int, int); 3573 _________________________________________________________ 3574 3575 11.3.49. sys/ioctl.h 3576 3577 #define TIOCGWINSZ 0x5413 3578 #define FIONREAD 0x541B 3579 #define TIOCNOTTY 0x5422 3580 3581 extern int ioctl(int, unsigned long int, ...); 3582 _________________________________________________________ 3583 3584 11.3.50. sys/ipc.h 3585 3586 struct ipc_perm { 3587 key_t __key; 3588 uid_t uid; 3589 gid_t gid; 3590 uid_t cuid; 3591 uid_t cgid; 3592 mode_t mode; 3593 unsigned short __seq; 3594 unsigned short __pad1; 3595 unsigned long int __unused1; 3596 unsigned long int __unused2; 3597 }; 3598 3599 extern key_t ftok(char *, int); 3600 _________________________________________________________ 3601 3602 11.3.51. sys/mman.h 3603 3604 #define MCL_CURRENT 1 3605 #define MCL_FUTURE 2 3606 3607 extern int msync(void *, size_t, int); 3608 extern int mlock(const void *, size_t); 3609 extern int mlockall(int); 3610 extern void *mmap(void *, size_t, int, int, int, off_t); 3611 extern int mprotect(void *, size_t, int); 3612 extern int munlock(const void *, size_t); 3613 extern int munlockall(void); 3614 extern int munmap(void *, size_t); 3615 extern void *mmap64(void *, size_t, int, int, int, off64_t); 3616 extern int shm_open(const char *, int, mode_t); 3617 extern int shm_unlink(const char *); 3618 _________________________________________________________ 3619 3620 11.3.52. sys/msg.h 3621 3622 struct msqid_ds { 3623 struct ipc_perm msg_perm; 3624 time_t msg_stime; 3625 time_t msg_rtime; 3626 time_t msg_ctime; 3627 unsigned long int __msg_cbytes; 3628 unsigned long int msg_qnum; 3629 unsigned long int msg_qbytes; 3630 pid_t msg_lspid; 3631 pid_t msg_lrpid; 3632 unsigned long int __unused1; 3633 unsigned long int __unused2; 3634 }; 3635 extern int msgctl(int, int, struct msqid_ds *); 3636 extern int msgget(key_t, int); 3637 extern int msgrcv(int, void *, size_t, long int, int); 3638 extern int msgsnd(int, const void *, size_t, int); 3639 _________________________________________________________ 3640 3641 11.3.53. sys/param.h 3642 3643 /* 3644 * This header is architecture neutral 3645 * Please refer to the generic specification for details 3646 */ 3647 _________________________________________________________ 3648 3649 11.3.54. sys/poll.h 3650 3651 /* 3652 * This header is architecture neutral 3653 * Please refer to the generic specification for details 3654 */ 3655 _________________________________________________________ 3656 3657 11.3.55. sys/resource.h 3658 3659 extern int getpriority(__priority_which_t, id_t); 3660 extern int getrlimit64(id_t, struct rlimit64 *); 3661 extern int setpriority(__priority_which_t, id_t, int); 3662 extern int setrlimit(__rlimit_resource_t, const struct rlimit *); 3663 extern int setrlimit64(__rlimit_resource_t, const struct rlimit64 *); 3664 extern int getrlimit(__rlimit_resource_t, struct rlimit *); 3665 extern int getrusage(int, struct rusage *); 3666 _________________________________________________________ 3667 3668 11.3.56. sys/sem.h 3669 3670 struct semid_ds { 3671 struct ipc_perm sem_perm; 3672 time_t sem_otime; 3673 time_t sem_ctime; 3674 unsigned long int sem_nsems; 3675 unsigned long int __unused1; 3676 unsigned long int __unused2; 3677 }; 3678 extern int semctl(int, int, int, ...); 3679 extern int semget(key_t, int, int); 3680 extern int semop(int, struct sembuf *, size_t); 3681 _________________________________________________________ 3682 3683 11.3.57. sys/shm.h 3684 3685 #define SHMLBA (1024*1024) 3686 3687 struct shmid_ds { 3688 struct ipc_perm shm_perm; 3689 size_t shm_segsz; 3690 time_t shm_atime; 3691 time_t shm_dtime; 3692 time_t shm_ctime; 3693 pid_t shm_cpid; 3694 pid_t shm_lpid; 3695 unsigned long int shm_nattch; 3696 unsigned long int __unused1; 3697 unsigned long int __unused2; 3698 }; 3699 extern int __getpagesize(void); 3700 extern void *shmat(int, const void *, int); 3701 extern int shmctl(int, int, struct shmid_ds *); 3702 extern int shmdt(const void *); 3703 extern int shmget(key_t, size_t, int); 3704 _________________________________________________________ 3705 3706 11.3.58. sys/socket.h 3707 3708 typedef uint64_t __ss_aligntype; 3709 3710 #define SO_RCVLOWAT 18 3711 #define SO_SNDLOWAT 19 3712 #define SO_RCVTIMEO 20 3713 #define SO_SNDTIMEO 21 3714 3715 extern int bind(int, const struct sockaddr *, socklen_t); 3716 extern int getnameinfo(const struct sockaddr *, socklen_t, char *, 3717 socklen_t, char *, socklen_t, unsigned int); 3718 extern int getsockname(int, struct sockaddr *, socklen_t *); 3719 extern int listen(int, int); 3720 extern int setsockopt(int, int, int, const void *, socklen_t); 3721 extern int accept(int, struct sockaddr *, socklen_t *); 3722 extern int connect(int, const struct sockaddr *, socklen_t); 3723 extern ssize_t recv(int, void *, size_t, int); 3724 extern ssize_t recvfrom(int, void *, size_t, int, struct sockaddr *, 3725 socklen_t *); 3726 extern ssize_t recvmsg(int, struct msghdr *, int); 3727 extern ssize_t send(int, const void *, size_t, int); 3728 extern ssize_t sendmsg(int, const struct msghdr *, int); 3729 extern ssize_t sendto(int, const void *, size_t, int, 3730 const struct sockaddr *, socklen_t); 3731 extern int getpeername(int, struct sockaddr *, socklen_t *); 3732 extern int getsockopt(int, int, int, void *, socklen_t *); 3733 extern int shutdown(int, int); 3734 extern int socket(int, int, int); 3735 extern int socketpair(int, int, int, int); 3736 extern int sockatmark(int); 3737 _________________________________________________________ 3738 3739 11.3.59. sys/stat.h 3740 3741 #define _STAT_VER 1 3742 3743 struct stat { 3744 dev_t st_dev; 3745 ino_t st_ino; 3746 nlink_t st_nlink; 3747 mode_t st_mode; 3748 uid_t st_uid; 3749 gid_t st_gid; 3750 unsigned int pad0; 3751 dev_t st_rdev; 3752 off_t st_size; 3753 struct timespec st_atim; 3754 struct timespec st_mtim; 3755 struct timespec st_ctim; 3756 blksize_t st_blksize; 3757 blkcnt_t st_blocks; 3758 unsigned long int __unused[3]; 3759 }; 3760 struct stat64 { 3761 dev_t st_dev; 3762 ino64_t st_ino; 3763 nlink_t st_nlink; 3764 mode_t st_mode; 3765 uid_t st_uid; 3766 gid_t st_gid; 3767 unsigned int pad0; 3768 dev_t st_rdev; 3769 off_t st_size; 3770 struct timespec st_atim; 3771 struct timespec st_mtim; 3772 struct timespec st_ctim; 3773 blksize_t st_blksize; 3774 blkcnt64_t st_blocks; 3775 unsigned long int __unused[3]; 3776 }; 3777 3778 extern int __fxstat(int, int, struct stat *); 3779 extern int __fxstat64(int, int, struct stat64 *); 3780 extern int __lxstat(int, char *, struct stat *); 3781 extern int __lxstat64(int, const char *, struct stat64 *); 3782 extern int __xmknod(int, const char *, mode_t, dev_t *); 3783 extern int __xstat(int, const char *, struct stat *); 3784 extern int __xstat64(int, const char *, struct stat64 *); 3785 extern int mkfifo(const char *, mode_t); 3786 extern int chmod(const char *, mode_t); 3787 extern int fchmod(int, mode_t); 3788 extern mode_t umask(mode_t); 3789 _________________________________________________________ 3790 3791 11.3.60. sys/statvfs.h 3792 3793 struct statvfs { 3794 unsigned long int f_bsize; 3795 unsigned long int f_frsize; 3796 fsblkcnt64_t f_blocks; 3797 fsblkcnt64_t f_bfree; 3798 fsblkcnt64_t f_bavail; 3799 fsfilcnt64_t f_files; 3800 fsfilcnt64_t f_ffree; 3801 fsfilcnt64_t f_favail; 3802 unsigned long int f_fsid; 3803 unsigned long int f_flag; 3804 unsigned long int f_namemax; 3805 unsigned int __f_spare[6]; 3806 }; 3807 struct statvfs64 { 3808 unsigned long int f_bsize; 3809 unsigned long int f_frsize; 3810 fsblkcnt64_t f_blocks; 3811 fsblkcnt64_t f_bfree; 3812 fsblkcnt64_t f_bavail; 3813 fsfilcnt64_t f_files; 3814 fsfilcnt64_t f_ffree; 3815 fsfilcnt64_t f_favail; 3816 unsigned long int f_fsid; 3817 unsigned long int f_flag; 3818 unsigned long int f_namemax; 3819 unsigned int __f_spare[6]; 3820 }; 3821 extern int fstatvfs(int, struct statvfs *); 3822 extern int fstatvfs64(int, struct statvfs64 *); 3823 extern int statvfs(const char *, struct statvfs *); 3824 extern int statvfs64(const char *, struct statvfs64 *); 3825 _________________________________________________________ 3826 3827 11.3.61. sys/time.h 3828 3829 extern int getitimer(__itimer_which_t, struct itimerval *); 3830 extern int setitimer(__itimer_which_t, const struct itimerval *, 3831 struct itimerval *); 3832 extern int adjtime(const struct timeval *, struct timeval *); 3833 extern int gettimeofday(struct timeval *, struct timezone *); 3834 extern int utimes(const char *, const struct timeval *); 3835 _________________________________________________________ 3836 3837 11.3.62. sys/timeb.h 3838 3839 extern int ftime(struct timeb *); 3840 _________________________________________________________ 3841 3842 11.3.63. sys/times.h 3843 3844 extern clock_t times(struct tms *); 3845 _________________________________________________________ 3846 3847 11.3.64. sys/types.h 3848 3849 typedef long int int64_t; 3850 3851 typedef int64_t ssize_t; 3852 3853 #define __FDSET_LONGS 16 3854 _________________________________________________________ 3855 3856 11.3.65. sys/uio.h 3857 3858 extern ssize_t readv(int, const struct iovec *, int); 3859 extern ssize_t writev(int, const struct iovec *, int); 3860 _________________________________________________________ 3861 3862 11.3.66. sys/un.h 3863 3864 /* 3865 * This header is architecture neutral 3866 * Please refer to the generic specification for details 3867 */ 3868 _________________________________________________________ 3869 3870 11.3.67. sys/utsname.h 3871 3872 extern int uname(struct utsname *); 3873 _________________________________________________________ 3874 3875 11.3.68. sys/wait.h 3876 3877 extern pid_t wait(int *); 3878 extern pid_t waitpid(pid_t, int *, int); 3879 extern pid_t wait4(pid_t, int *, int, struct rusage *); 3880 _________________________________________________________ 3881 3882 11.3.69. syslog.h 3883 3884 extern void closelog(void); 3885 extern void openlog(const char *, int, int); 3886 extern int setlogmask(int); 3887 extern void syslog(int, const char *, ...); 3888 extern void vsyslog(int, const char *, va_list); 3889 _________________________________________________________ 3890 3891 11.3.70. termios.h 3892 3893 #define OLCUC 0000002 3894 #define ONLCR 0000004 3895 #define XCASE 0000004 3896 #define NLDLY 0000400 3897 #define CR1 0001000 3898 #define IUCLC 0001000 3899 #define CR2 0002000 3900 #define CR3 0003000 3901 #define CRDLY 0003000 3902 #define TAB1 0004000 3903 #define TAB2 0010000 3904 #define TAB3 0014000 3905 #define TABDLY 0014000 3906 #define BS1 0020000 3907 #define BSDLY 0020000 3908 #define VT1 0040000 3909 #define VTDLY 0040000 3910 #define FF1 0100000 3911 #define FFDLY 0100000 3912 3913 #define VSUSP 10 3914 #define VEOL 11 3915 #define VREPRINT 12 3916 #define VDISCARD 13 3917 #define VWERASE 14 3918 #define VEOL2 16 3919 #define VMIN 6 3920 #define VSWTC 7 3921 #define VSTART 8 3922 #define VSTOP 9 3923 3924 #define IXON 0002000 3925 #define IXOFF 0010000 3926 3927 #define CS6 0000020 3928 #define CS7 0000040 3929 #define CS8 0000060 3930 #define CSIZE 0000060 3931 #define CSTOPB 0000100 3932 #define CREAD 0000200 3933 #define PARENB 0000400 3934 #define PARODD 0001000 3935 #define HUPCL 0002000 3936 #define CLOCAL 0004000 3937 #define VTIME 5 3938 3939 #define ISIG 0000001 3940 #define ICANON 0000002 3941 #define ECHOE 0000020 3942 #define ECHOK 0000040 3943 #define ECHONL 0000100 3944 #define NOFLSH 0000200 3945 #define TOSTOP 0000400 3946 #define ECHOCTL 0001000 3947 #define ECHOPRT 0002000 3948 #define ECHOKE 0004000 3949 #define FLUSHO 0010000 3950 #define PENDIN 0040000 3951 #define IEXTEN 0100000 3952 3953 extern speed_t cfgetispeed(const struct termios *); 3954 extern speed_t cfgetospeed(const struct termios *); 3955 extern void cfmakeraw(struct termios *); 3956 extern int cfsetispeed(struct termios *, speed_t); 3957 extern int cfsetospeed(struct termios *, speed_t); 3958 extern int cfsetspeed(struct termios *, speed_t); 3959 extern int tcflow(int, int); 3960 extern int tcflush(int, int); 3961 extern pid_t tcgetsid(int); 3962 extern int tcsendbreak(int, int); 3963 extern int tcsetattr(int, int, const struct termios *); 3964 extern int tcdrain(int); 3965 extern int tcgetattr(int, struct termios *); 3966 _________________________________________________________ 3967 3968 11.3.71. time.h 3969 3970 extern int __daylight(void); 3971 extern long int __timezone(void); 3972 extern char *__tzname(void); 3973 extern char *asctime(const struct tm *); 3974 extern clock_t clock(void); 3975 extern char *ctime(const time_t *); 3976 extern char *ctime_r(const time_t *, char *); 3977 extern double difftime(time_t, time_t); 3978 extern struct tm *getdate(const char *); 3979 extern int getdate_err(void); 3980 extern struct tm *gmtime(const time_t *); 3981 extern struct tm *localtime(const time_t *); 3982 extern time_t mktime(struct tm *); 3983 extern int stime(const time_t *); 3984 extern size_t strftime(char *, size_t, const char *, const struct tm *); 3985 extern char *strptime(const char *, const char *, struct tm *); 3986 extern time_t time(time_t *); 3987 extern int nanosleep(const struct timespec *, struct timespec *); 3988 extern int daylight(void); 3989 extern long int timezone(void); 3990 extern char *tzname(void); 3991 extern void tzset(void); 3992 extern char *asctime_r(const struct tm *, char *); 3993 extern struct tm *gmtime_r(const time_t *, struct tm *); 3994 extern struct tm *localtime_r(const time_t *, struct tm *); 3995 extern int clock_getcpuclockid(pid_t, clockid_t *); 3996 extern int clock_getres(clockid_t, struct timespec *); 3997 extern int clock_gettime(clockid_t, struct timespec *); 3998 extern int clock_nanosleep(clockid_t, int, const struct timespec *, 3999 struct timespec *); 4000 extern int clock_settime(clockid_t, const struct timespec *); 4001 extern int timer_create(clockid_t, struct sigevent *, timer_t *); 4002 extern int timer_delete(timer_t); 4003 extern int timer_getoverrun(timer_t); 4004 extern int timer_gettime(timer_t, struct itimerspec *); 4005 extern int timer_settime(timer_t, int, const struct itimerspec *, 4006 struct itimerspec *); 4007 _________________________________________________________ 4008 4009 11.3.72. ucontext.h 4010 4011 #define _SC_GR0_OFFSET \ 4012 (((char *) &((struct sigcontext *) 0)->sc_gr[0]) - (char *) 0) 4013 4014 typedef struct sigcontext mcontext_t; 4015 4016 typedef struct ucontext { 4017 union { 4018 mcontext_t _mc; 4019 struct { 4020 unsigned long int _pad[_SC_GR0_OFFSET / 8]; 4021 struct ucontext *_link; 4022 } _uc; 4023 } _u; 4024 } ucontext_t; 4025 extern int getcontext(ucontext_t *); 4026 extern int makecontext(ucontext_t *, void (*func) (void) 4027 , int, ...); 4028 extern int setcontext(const struct ucontext *); 4029 extern int swapcontext(ucontext_t *, const struct ucontext *); 4030 _________________________________________________________ 4031 4032 11.3.73. ulimit.h 4033 4034 extern long int ulimit(int, ...); 4035 _________________________________________________________ 4036 4037 11.3.74. unistd.h 4038 4039 typedef long int intptr_t; 4040 4041 extern char **__environ(void); 4042 extern pid_t __getpgid(pid_t); 4043 extern void _exit(int); 4044 extern int acct(const char *); 4045 extern unsigned int alarm(unsigned int); 4046 extern int chown(const char *, uid_t, gid_t); 4047 extern int chroot(const char *); 4048 extern size_t confstr(int, char *, size_t); 4049 extern int creat(const char *, mode_t); 4050 extern int creat64(const char *, mode_t); 4051 extern char *ctermid(char *); 4052 extern char *cuserid(char *); 4053 extern int daemon(int, int); 4054 extern int execl(const char *, const char *, ...); 4055 extern int execle(const char *, const char *, ...); 4056 extern int execlp(const char *, const char *, ...); 4057 extern int execv(const char *, char *const); 4058 extern int execvp(const char *, char *const); 4059 extern int fdatasync(int); 4060 extern int ftruncate64(int, off64_t); 4061 extern long int gethostid(void); 4062 extern char *getlogin(void); 4063 extern int getlogin_r(char *, size_t); 4064 extern int getopt(int, char *const, const char *); 4065 extern pid_t getpgrp(void); 4066 extern pid_t getsid(pid_t); 4067 extern char *getwd(char *); 4068 extern int lockf(int, int, off_t); 4069 extern int mkstemp(char *); 4070 extern int nice(int); 4071 extern char *optarg(void); 4072 extern int opterr(void); 4073 extern int optind(void); 4074 extern int optopt(void); 4075 extern int rename(const char *, const char *); 4076 extern int setegid(gid_t); 4077 extern int seteuid(uid_t); 4078 extern int sethostname(const char *, size_t); 4079 extern int setpgrp(void); 4080 extern void swab(const void *, void *, ssize_t); 4081 extern void sync(void); 4082 extern pid_t tcgetpgrp(int); 4083 extern int tcsetpgrp(int, pid_t); 4084 extern int truncate(const char *, off_t); 4085 extern int truncate64(const char *, off64_t); 4086 extern char *ttyname(int); 4087 extern unsigned int ualarm(useconds_t, useconds_t); 4088 extern int usleep(useconds_t); 4089 extern int close(int); 4090 extern int fsync(int); 4091 extern off_t lseek(int, off_t, int); 4092 extern int open(const char *, int, ...); 4093 extern int pause(void); 4094 extern ssize_t read(int, void *, size_t); 4095 extern ssize_t write(int, const void *, size_t); 4096 extern char *crypt(char *, char *); 4097 extern void encrypt(char *, int); 4098 extern void setkey(const char *); 4099 extern int access(const char *, int); 4100 extern int brk(void *); 4101 extern int chdir(const char *); 4102 extern int dup(int); 4103 extern int dup2(int, int); 4104 extern int execve(const char *, char *const, char *const); 4105 extern int fchdir(int); 4106 extern int fchown(int, uid_t, gid_t); 4107 extern pid_t fork(void); 4108 extern gid_t getegid(void); 4109 extern uid_t geteuid(void); 4110 extern gid_t getgid(void); 4111 extern int getgroups(int, gid_t); 4112 extern int gethostname(char *, size_t); 4113 extern pid_t getpgid(pid_t); 4114 extern pid_t getpid(void); 4115 extern uid_t getuid(void); 4116 extern int lchown(const char *, uid_t, gid_t); 4117 extern int link(const char *, const char *); 4118 extern int mkdir(const char *, mode_t); 4119 extern long int pathconf(const char *, int); 4120 extern int pipe(int); 4121 extern int readlink(const char *, char *, size_t); 4122 extern int rmdir(const char *); 4123 extern void *sbrk(ptrdiff_t); 4124 extern int select(int, fd_set *, fd_set *, fd_set *, struct timeval *); 4125 extern int setgid(gid_t); 4126 extern int setpgid(pid_t, pid_t); 4127 extern int setregid(gid_t, gid_t); 4128 extern int setreuid(uid_t, uid_t); 4129 extern pid_t setsid(void); 4130 extern int setuid(uid_t); 4131 extern unsigned int sleep(unsigned int); 4132 extern int symlink(const char *, const char *); 4133 extern long int sysconf(int); 4134 extern int unlink(const char *); 4135 extern pid_t vfork(void); 4136 extern ssize_t pread(int, void *, size_t, off_t); 4137 extern ssize_t pwrite(int, const void *, size_t, off_t); 4138 extern char **_environ(void); 4139 extern long int fpathconf(int, int); 4140 extern int ftruncate(int, off_t); 4141 extern char *getcwd(char *, size_t); 4142 extern int getpagesize(void); 4143 extern pid_t getppid(void); 4144 extern int isatty(int); 4145 extern loff_t lseek64(int, loff_t, int); 4146 extern int open64(const char *, int, ...); 4147 extern ssize_t pread64(int, void *, size_t, off64_t); 4148 extern ssize_t pwrite64(int, const void *, size_t, off64_t); 4149 extern int ttyname_r(int, char *, size_t); 4150 _________________________________________________________ 4151 4152 11.3.75. utime.h 4153 4154 extern int utime(const char *, const struct utimbuf *); 4155 _________________________________________________________ 4156 4157 11.3.76. utmp.h 4158 4159 struct lastlog { 4160 time_t ll_time; 4161 char ll_line[UT_LINESIZE]; 4162 char ll_host[UT_HOSTSIZE]; 4163 }; 4164 4165 struct utmp { 4166 short ut_type; 4167 pid_t ut_pid; 4168 char ut_line[UT_LINESIZE]; 4169 char ut_id[4]; 4170 char ut_user[UT_NAMESIZE]; 4171 char ut_host[UT_HOSTSIZE]; 4172 struct exit_status ut_exit; 4173 long int ut_session; 4174 struct timeval ut_tv; 4175 int32_t ut_addr_v6[4]; 4176 char __unused[20]; 4177 }; 4178 4179 extern void endutent(void); 4180 extern struct utmp *getutent(void); 4181 extern void setutent(void); 4182 extern int getutent_r(struct utmp *, struct utmp **); 4183 extern int utmpname(const char *); 4184 extern int login_tty(int); 4185 extern void login(const struct utmp *); 4186 extern int logout(const char *); 4187 extern void logwtmp(const char *, const char *, const char *); 4188 _________________________________________________________ 4189 4190 11.3.77. utmpx.h 4191 4192 struct utmpx { 4193 short ut_type; 4194 pid_t ut_pid; 4195 char ut_line[UT_LINESIZE]; 4196 char ut_id[4]; 4197 char ut_user[UT_NAMESIZE]; 4198 char ut_host[UT_HOSTSIZE]; 4199 struct exit_status ut_exit; 4200 long int ut_session; 4201 struct timeval ut_tv; 4202 int32_t ut_addr_v6[4]; 4203 char __unused[20]; 4204 }; 4205 4206 extern void endutxent(void); 4207 extern struct utmpx *getutxent(void); 4208 extern struct utmpx *getutxid(const struct utmpx *); 4209 extern struct utmpx *getutxline(const struct utmpx *); 4210 extern struct utmpx *pututxline(const struct utmpx *); 4211 extern void setutxent(void); 4212 _________________________________________________________ 4213 4214 11.3.78. wchar.h 4215 4216 extern double __wcstod_internal(const wchar_t *, wchar_t * *, int); 4217 extern float __wcstof_internal(const wchar_t *, wchar_t * *, int); 4218 extern long int __wcstol_internal(const wchar_t *, wchar_t * *, int, int); 4219 extern long double __wcstold_internal(const wchar_t *, wchar_t * *, int); 4220 extern unsigned long int __wcstoul_internal(const wchar_t *, wchar_t **, 4221 int, int); 4222 extern wchar_t *wcscat(wchar_t *, const wchar_t *); 4223 extern wchar_t *wcschr(const wchar_t *, wchar_t); 4224 extern int wcscmp(const wchar_t *, const wchar_t *); 4225 extern int wcscoll(const wchar_t *, const wchar_t *); 4226 extern wchar_t *wcscpy(wchar_t *, const wchar_t *); 4227 extern size_t wcscspn(const wchar_t *, const wchar_t *); 4228 extern wchar_t *wcsdup(const wchar_t *); 4229 extern wchar_t *wcsncat(wchar_t *, const wchar_t *, size_t); 4230 extern int wcsncmp(const wchar_t *, const wchar_t *, size_t); 4231 extern wchar_t *wcsncpy(wchar_t *, const wchar_t *, size_t); 4232 extern wchar_t *wcspbrk(const wchar_t *, const wchar_t *); 4233 extern wchar_t *wcsrchr(const wchar_t *, wchar_t); 4234 extern size_t wcsspn(const wchar_t *, const wchar_t *); 4235 extern wchar_t *wcsstr(const wchar_t *, const wchar_t *); 4236 extern wchar_t *wcstok(wchar_t *, const wchar_t *, wchar_t * *); 4237 extern int wcswidth(const wchar_t *, size_t); 4238 extern size_t wcsxfrm(wchar_t *, const wchar_t *, size_t); 4239 extern int wctob(wint_t); 4240 extern int wcwidth(wchar_t); 4241 extern wchar_t *wmemchr(const wchar_t *, wchar_t, size_t); 4242 extern int wmemcmp(const wchar_t *, const wchar_t *, size_t); 4243 extern wchar_t *wmemcpy(wchar_t *, const wchar_t *, size_t); 4244 extern wchar_t *wmemmove(wchar_t *, const wchar_t *, size_t); 4245 extern wchar_t *wmemset(wchar_t *, wchar_t, size_t); 4246 extern size_t mbrlen(const char *, size_t, mbstate_t *); 4247 extern size_t mbrtowc(wchar_t *, const char *, size_t, mbstate_t *); 4248 extern int mbsinit(const mbstate_t *); 4249 extern size_t mbsnrtowcs(wchar_t *, const char **, size_t, size_t, 4250 mbstate_t *); 4251 extern size_t mbsrtowcs(wchar_t *, const char **, size_t, mbstate_t *); 4252 extern wchar_t *wcpcpy(wchar_t *, const wchar_t *); 4253 extern wchar_t *wcpncpy(wchar_t *, const wchar_t *, size_t); 4254 extern size_t wcrtomb(char *, wchar_t, mbstate_t *); 4255 extern size_t wcslen(const wchar_t *); 4256 extern size_t wcsnrtombs(char *, const wchar_t * *, size_t, size_t, 4257 mbstate_t *); 4258 extern size_t wcsrtombs(char *, const wchar_t * *, size_t, mbstate_t *); 4259 extern double wcstod(const wchar_t *, wchar_t * *); 4260 extern float wcstof(const wchar_t *, wchar_t * *); 4261 extern long int wcstol(const wchar_t *, wchar_t * *, int); 4262 extern long double wcstold(const wchar_t *, wchar_t * *); 4263 extern long long int wcstoq(const wchar_t *, wchar_t * *, int); 4264 extern unsigned long int wcstoul(const wchar_t *, wchar_t * *, int); 4265 extern unsigned long long int wcstouq(const wchar_t *, wchar_t * *, int); 4266 extern wchar_t *wcswcs(const wchar_t *, const wchar_t *); 4267 extern int wcscasecmp(const wchar_t *, const wchar_t *); 4268 extern int wcsncasecmp(const wchar_t *, const wchar_t *, size_t); 4269 extern size_t wcsnlen(const wchar_t *, size_t); 4270 extern long long int wcstoll(const wchar_t *, wchar_t * *, int); 4271 extern unsigned long long int wcstoull(const wchar_t *, wchar_t * *, int); 4272 extern wint_t btowc(int); 4273 extern wint_t fgetwc(FILE *); 4274 extern wint_t fgetwc_unlocked(FILE *); 4275 extern wchar_t *fgetws(wchar_t *, int, FILE *); 4276 extern wint_t fputwc(wchar_t, FILE *); 4277 extern int fputws(const wchar_t *, FILE *); 4278 extern int fwide(FILE *, int); 4279 extern int fwprintf(FILE *, const wchar_t *, ...); 4280 extern int fwscanf(FILE *, const wchar_t *, ...); 4281 extern wint_t getwc(FILE *); 4282 extern wint_t getwchar(void); 4283 extern wint_t putwc(wchar_t, FILE *); 4284 extern wint_t putwchar(wchar_t); 4285 extern int swprintf(wchar_t *, size_t, const wchar_t *, ...); 4286 extern int swscanf(const wchar_t *, const wchar_t *, ...); 4287 extern wint_t ungetwc(wint_t, FILE *); 4288 extern int vfwprintf(FILE *, const wchar_t *, va_list); 4289 extern int vfwscanf(FILE *, const wchar_t *, va_list); 4290 extern int vswprintf(wchar_t *, size_t, const wchar_t *, va_list); 4291 extern int vswscanf(const wchar_t *, const wchar_t *, va_list); 4292 extern int vwprintf(const wchar_t *, va_list); 4293 extern int vwscanf(const wchar_t *, va_list); 4294 extern size_t wcsftime(wchar_t *, size_t, const wchar_t *, 4295 const struct tm *); 4296 extern int wprintf(const wchar_t *, ...); 4297 extern int wscanf(const wchar_t *, ...); 4298 _________________________________________________________ 4299 4300 11.3.79. wctype.h 4301 4302 extern int iswblank(wint_t); 4303 extern wint_t towlower(wint_t); 4304 extern wint_t towupper(wint_t); 4305 extern wctrans_t wctrans(const char *); 4306 extern int iswalnum(wint_t); 4307 extern int iswalpha(wint_t); 4308 extern int iswcntrl(wint_t); 4309 extern int iswctype(wint_t, wctype_t); 4310 extern int iswdigit(wint_t); 4311 extern int iswgraph(wint_t); 4312 extern int iswlower(wint_t); 4313 extern int iswprint(wint_t); 4314 extern int iswpunct(wint_t); 4315 extern int iswspace(wint_t); 4316 extern int iswupper(wint_t); 4317 extern int iswxdigit(wint_t); 4318 extern wctype_t wctype(const char *); 4319 extern wint_t towctrans(wint_t, wctrans_t); 4320 _________________________________________________________ 4321 4322 11.3.80. wordexp.h 4323 4324 extern int wordexp(const char *, wordexp_t *, int); 4325 extern void wordfree(wordexp_t *); 4326 _________________________________________________________ 4327 4328 11.4. Interfaces for libm 4329 4330 Table 11-24 defines the library name and shared object name 4331 for the libm library 4332 4333 Table 11-24. libm Definition 4334 Library: libm 4335 SONAME: libm.so.6.1 4336 4337 The behavior of the interfaces in this library is specified by 4338 the following specifications: 4339 4340 [ISOC99] ISO C (1999) 4341 [LSB] This Specification 4342 [SUSv2] SUSv2 4343 [SUSv3] ISO POSIX (2003) 4344 _________________________________________________________ 4345 4346 11.4.1. Math 4347 _________________________________________________________ 4348 4349 11.4.1.1. Interfaces for Math 4350 4351 An LSB conforming implementation shall provide the 4352 architecture specific functions for Math specified in Table 4353 11-25, with the full mandatory functionality as described in 4354 the referenced underlying specification. 4355 4356 Table 11-25. libm - Math Function Interfaces 4357 __finite(GLIBC_2.2) [ISOC99] __finitef(GLIBC_2.2) [ISOC99] 4358 __finitel(GLIBC_2.2) [ISOC99] __fpclassify(GLIBC_2.2) [LSB] 4359 __fpclassifyf(GLIBC_2.2) [LSB] __fpclassifyl(GLIBC_2.2) 4360 [ISOC99] __signbit(GLIBC_2.2) [ISOC99] __signbitf(GLIBC_2.2) 4361 [ISOC99] 4362 __signbitl(GLIBC_2.2) [ISOC99] acos(GLIBC_2.2) [SUSv3] 4363 acosf(GLIBC_2.2) [SUSv3] acosh(GLIBC_2.2) [SUSv3] 4364 acoshf(GLIBC_2.2) [SUSv3] acoshl(GLIBC_2.2) [SUSv3] 4365 acosl(GLIBC_2.2) [SUSv3] asin(GLIBC_2.2) [SUSv3] 4366 asinf(GLIBC_2.2) [SUSv3] asinh(GLIBC_2.2) [SUSv3] 4367 asinhf(GLIBC_2.2) [SUSv3] asinhl(GLIBC_2.2) [SUSv3] 4368 asinl(GLIBC_2.2) [SUSv3] atan(GLIBC_2.2) [SUSv3] 4369 atan2(GLIBC_2.2) [SUSv3] atan2f(GLIBC_2.2) [SUSv3] 4370 atan2l(GLIBC_2.2) [SUSv3] atanf(GLIBC_2.2) [SUSv3] 4371 atanh(GLIBC_2.2) [SUSv3] atanhf(GLIBC_2.2) [SUSv3] 4372 atanhl(GLIBC_2.2) [SUSv3] atanl(GLIBC_2.2) [SUSv3] 4373 cabs(GLIBC_2.2) [SUSv3] cabsf(GLIBC_2.2) [SUSv3] 4374 cabsl(GLIBC_2.2) [SUSv3] cacos(GLIBC_2.2) [SUSv3] 4375 cacosf(GLIBC_2.2) [SUSv3] cacosh(GLIBC_2.2) [SUSv3] 4376 cacoshf(GLIBC_2.2) [SUSv3] cacoshl(GLIBC_2.2) [SUSv3] 4377 cacosl(GLIBC_2.2) [SUSv3] carg(GLIBC_2.2) [SUSv3] 4378 cargf(GLIBC_2.2) [SUSv3] cargl(GLIBC_2.2) [SUSv3] 4379 casin(GLIBC_2.2) [SUSv3] casinf(GLIBC_2.2) [SUSv3] 4380 casinh(GLIBC_2.2) [SUSv3] casinhf(GLIBC_2.2) [SUSv3] 4381 casinhl(GLIBC_2.2) [SUSv3] casinl(GLIBC_2.2) [SUSv3] 4382 catan(GLIBC_2.2) [SUSv3] catanf(GLIBC_2.2) [SUSv3] 4383 catanh(GLIBC_2.2) [SUSv3] catanhf(GLIBC_2.2) [SUSv3] 4384 catanhl(GLIBC_2.2) [SUSv3] catanl(GLIBC_2.2) [SUSv3] 4385 cbrt(GLIBC_2.2) [SUSv3] cbrtf(GLIBC_2.2) [SUSv3] 4386 cbrtl(GLIBC_2.2) [SUSv3] ccos(GLIBC_2.2) [SUSv3] 4387 ccosf(GLIBC_2.2) [SUSv3] ccosh(GLIBC_2.2) [SUSv3] 4388 ccoshf(GLIBC_2.2) [SUSv3] ccoshl(GLIBC_2.2) [SUSv3] 4389 ccosl(GLIBC_2.2) [SUSv3] ceil(GLIBC_2.2) [SUSv3] 4390 ceilf(GLIBC_2.2) [SUSv3] ceill(GLIBC_2.2) [SUSv3] 4391 cexp(GLIBC_2.2) [SUSv3] cexpf(GLIBC_2.2) [SUSv3] 4392 cexpl(GLIBC_2.2) [SUSv3] cimag(GLIBC_2.2) [SUSv3] 4393 cimagf(GLIBC_2.2) [SUSv3] cimagl(GLIBC_2.2) [SUSv3] 4394 clog(GLIBC_2.2) [SUSv3] clog10(GLIBC_2.2) [ISOC99] 4395 clog10f(GLIBC_2.2) [ISOC99] clog10l(GLIBC_2.2) [ISOC99] 4396 clogf(GLIBC_2.2) [SUSv3] clogl(GLIBC_2.2) [SUSv3] 4397 conj(GLIBC_2.2) [SUSv3] conjf(GLIBC_2.2) [SUSv3] 4398 conjl(GLIBC_2.2) [SUSv3] copysign(GLIBC_2.2) [SUSv3] 4399 copysignf(GLIBC_2.2) [SUSv3] copysignl(GLIBC_2.2) [SUSv3] 4400 cos(GLIBC_2.2) [SUSv3] cosf(GLIBC_2.2) [SUSv3] cosh(GLIBC_2.2) 4401 [SUSv3] coshf(GLIBC_2.2) [SUSv3] 4402 coshl(GLIBC_2.2) [SUSv3] cosl(GLIBC_2.2) [SUSv3] 4403 cpow(GLIBC_2.2) [SUSv3] cpowf(GLIBC_2.2) [SUSv3] 4404 cpowl(GLIBC_2.2) [SUSv3] cproj(GLIBC_2.2) [SUSv3] 4405 cprojf(GLIBC_2.2) [SUSv3] cprojl(GLIBC_2.2) [SUSv3] 4406 creal(GLIBC_2.2) [SUSv3] crealf(GLIBC_2.2) [SUSv3] 4407 creall(GLIBC_2.2) [SUSv3] csin(GLIBC_2.2) [SUSv3] 4408 csinf(GLIBC_2.2) [SUSv3] csinh(GLIBC_2.2) [SUSv3] 4409 csinhf(GLIBC_2.2) [SUSv3] csinhl(GLIBC_2.2) [SUSv3] 4410 csinl(GLIBC_2.2) [SUSv3] csqrt(GLIBC_2.2) [SUSv3] 4411 csqrtf(GLIBC_2.2) [SUSv3] csqrtl(GLIBC_2.2) [SUSv3] 4412 ctan(GLIBC_2.2) [SUSv3] ctanf(GLIBC_2.2) [SUSv3] 4413 ctanh(GLIBC_2.2) [SUSv3] ctanhf(GLIBC_2.2) [SUSv3] 4414 ctanhl(GLIBC_2.2) [SUSv3] ctanl(GLIBC_2.2) [SUSv3] 4415 dremf(GLIBC_2.2) [ISOC99] dreml(GLIBC_2.2) [ISOC99] 4416 erf(GLIBC_2.2) [SUSv3] erfc(GLIBC_2.2) [SUSv3] 4417 erfcf(GLIBC_2.2) [SUSv3] erfcl(GLIBC_2.2) [SUSv3] 4418 erff(GLIBC_2.2) [SUSv3] erfl(GLIBC_2.2) [SUSv3] exp(GLIBC_2.2) 4419 [SUSv3] exp2(GLIBC_2.2) [SUSv3] 4420 exp2f(GLIBC_2.2) [SUSv3] exp2l(GLIBC_2.2) [SUSv3] 4421 expf(GLIBC_2.2) [SUSv3] expl(GLIBC_2.2) [SUSv3] 4422 expm1(GLIBC_2.2) [SUSv3] expm1f(GLIBC_2.2) [SUSv3] 4423 expm1l(GLIBC_2.2) [SUSv3] fabs(GLIBC_2.2) [SUSv3] 4424 fabsf(GLIBC_2.2) [SUSv3] fabsl(GLIBC_2.2) [SUSv3] 4425 fdim(GLIBC_2.2) [SUSv3] fdimf(GLIBC_2.2) [SUSv3] 4426 fdiml(GLIBC_2.2) [SUSv3] feclearexcept(GLIBC_2.2) [SUSv3] 4427 fegetenv(GLIBC_2.2) [SUSv3] fegetexceptflag(GLIBC_2.2) [SUSv3] 4428 fegetround(GLIBC_2.2) [SUSv3] feholdexcept(GLIBC_2.2) [SUSv3] 4429 feraiseexcept(GLIBC_2.2) [SUSv3] fesetenv(GLIBC_2.2) [SUSv3] 4430 fesetexceptflag(GLIBC_2.2) [SUSv3] fesetround(GLIBC_2.2) 4431 [SUSv3] fetestexcept(GLIBC_2.2) [SUSv3] feupdateenv(GLIBC_2.2) 4432 [SUSv3] 4433 finite(GLIBC_2.2) [SUSv2] finitef(GLIBC_2.2) [ISOC99] 4434 finitel(GLIBC_2.2) [ISOC99] floor(GLIBC_2.2) [SUSv3] 4435 floorf(GLIBC_2.2) [SUSv3] floorl(GLIBC_2.2) [SUSv3] 4436 fma(GLIBC_2.2) [SUSv3] fmaf(GLIBC_2.2) [SUSv3] 4437 fmal(GLIBC_2.2) [SUSv3] fmax(GLIBC_2.2) [SUSv3] 4438 fmaxf(GLIBC_2.2) [SUSv3] fmaxl(GLIBC_2.2) [SUSv3] 4439 fmin(GLIBC_2.2) [SUSv3] fminf(GLIBC_2.2) [SUSv3] 4440 fminl(GLIBC_2.2) [SUSv3] fmod(GLIBC_2.2) [SUSv3] 4441 fmodf(GLIBC_2.2) [SUSv3] fmodl(GLIBC_2.2) [SUSv3] 4442 frexp(GLIBC_2.2) [SUSv3] frexpf(GLIBC_2.2) [SUSv3] 4443 frexpl(GLIBC_2.2) [SUSv3] gamma(GLIBC_2.2) [SUSv2] 4444 gammaf(GLIBC_2.2) [ISOC99] gammal(GLIBC_2.2) [ISOC99] 4445 hypot(GLIBC_2.2) [SUSv3] hypotf(GLIBC_2.2) [SUSv3] 4446 hypotl(GLIBC_2.2) [SUSv3] ilogb(GLIBC_2.2) [SUSv3] 4447 ilogbf(GLIBC_2.2) [SUSv3] ilogbl(GLIBC_2.2) [SUSv3] 4448 j0(GLIBC_2.2) [SUSv3] j0f(GLIBC_2.2) [ISOC99] 4449 j0l(GLIBC_2.2) [ISOC99] j1(GLIBC_2.2) [SUSv3] j1f(GLIBC_2.2) 4450 [ISOC99] j1l(GLIBC_2.2) [ISOC99] 4451 jn(GLIBC_2.2) [SUSv3] jnf(GLIBC_2.2) [ISOC99] jnl(GLIBC_2.2) 4452 [ISOC99] ldexp(GLIBC_2.2) [SUSv3] 4453 ldexpf(GLIBC_2.2) [SUSv3] ldexpl(GLIBC_2.2) [SUSv3] 4454 lgamma(GLIBC_2.2) [SUSv3] lgamma_r(GLIBC_2.2) [ISOC99] 4455 lgammaf(GLIBC_2.2) [SUSv3] lgammaf_r(GLIBC_2.2) [ISOC99] 4456 lgammal(GLIBC_2.2) [SUSv3] lgammal_r(GLIBC_2.2) [ISOC99] 4457 llrint(GLIBC_2.2) [SUSv3] llrintf(GLIBC_2.2) [SUSv3] 4458 llrintl(GLIBC_2.2) [SUSv3] llround(GLIBC_2.2) [SUSv3] 4459 llroundf(GLIBC_2.2) [SUSv3] llroundl(GLIBC_2.2) [SUSv3] 4460 log(GLIBC_2.2) [SUSv3] log10(GLIBC_2.2) [SUSv3] 4461 log10f(GLIBC_2.2) [SUSv3] log10l(GLIBC_2.2) [SUSv3] 4462 log1p(GLIBC_2.2) [SUSv3] log1pf(GLIBC_2.2) [SUSv3] 4463 log1pl(GLIBC_2.2) [SUSv3] log2(GLIBC_2.2) [SUSv3] 4464 log2f(GLIBC_2.2) [SUSv3] log2l(GLIBC_2.2) [SUSv3] 4465 logb(GLIBC_2.2) [SUSv3] logbf(GLIBC_2.2) [SUSv3] 4466 logbl(GLIBC_2.2) [SUSv3] logf(GLIBC_2.2) [SUSv3] 4467 logl(GLIBC_2.2) [SUSv3] lrint(GLIBC_2.2) [SUSv3] 4468 lrintf(GLIBC_2.2) [SUSv3] lrintl(GLIBC_2.2) [SUSv3] 4469 lround(GLIBC_2.2) [SUSv3] lroundf(GLIBC_2.2) [SUSv3] 4470 lroundl(GLIBC_2.2) [SUSv3] matherr(GLIBC_2.2) [ISOC99] 4471 modf(GLIBC_2.2) [SUSv3] modff(GLIBC_2.2) [SUSv3] 4472 modfl(GLIBC_2.2) [SUSv3] nan(GLIBC_2.2) [SUSv3] 4473 nanf(GLIBC_2.2) [SUSv3] nanl(GLIBC_2.2) [SUSv3] 4474 nearbyint(GLIBC_2.2) [SUSv3] nearbyintf(GLIBC_2.2) [SUSv3] 4475 nearbyintl(GLIBC_2.2) [SUSv3] nextafter(GLIBC_2.2) [SUSv3] 4476 nextafterf(GLIBC_2.2) [SUSv3] nextafterl(GLIBC_2.2) [SUSv3] 4477 nexttoward(GLIBC_2.2) [SUSv3] nexttowardf(GLIBC_2.2) [SUSv3] 4478 nexttowardl(GLIBC_2.2) [SUSv3] pow(GLIBC_2.2) [SUSv3] 4479 pow10(GLIBC_2.2) [ISOC99] pow10f(GLIBC_2.2) [ISOC99] 4480 pow10l(GLIBC_2.2) [ISOC99] powf(GLIBC_2.2) [SUSv3] 4481 powl(GLIBC_2.2) [SUSv3] remainder(GLIBC_2.2) [SUSv3] 4482 remainderf(GLIBC_2.2) [SUSv3] remainderl(GLIBC_2.2) [SUSv3] 4483 remquo(GLIBC_2.2) [SUSv3] remquof(GLIBC_2.2) [SUSv3] 4484 remquol(GLIBC_2.2) [SUSv3] rint(GLIBC_2.2) [SUSv3] 4485 rintf(GLIBC_2.2) [SUSv3] rintl(GLIBC_2.2) [SUSv3] 4486 round(GLIBC_2.2) [SUSv3] roundf(GLIBC_2.2) [SUSv3] 4487 roundl(GLIBC_2.2) [SUSv3] scalb(GLIBC_2.2) [SUSv3] 4488 scalbf(GLIBC_2.2) [ISOC99] scalbl(GLIBC_2.2) [ISOC99] 4489 scalbln(GLIBC_2.2) [SUSv3] scalblnf(GLIBC_2.2) [SUSv3] 4490 scalblnl(GLIBC_2.2) [SUSv3] scalbn(GLIBC_2.2) [SUSv3] 4491 scalbnf(GLIBC_2.2) [SUSv3] scalbnl(GLIBC_2.2) [SUSv3] 4492 significand(GLIBC_2.2) [ISOC99] significandf(GLIBC_2.2) 4493 [ISOC99] 4494 significandl(GLIBC_2.2) [ISOC99] sin(GLIBC_2.2) [SUSv3] 4495 sincos(GLIBC_2.2) [ISOC99] sincosf(GLIBC_2.2) [ISOC99] 4496 sincosl(GLIBC_2.2) [ISOC99] sinf(GLIBC_2.2) [SUSv3] 4497 sinh(GLIBC_2.2) [SUSv3] sinhf(GLIBC_2.2) [SUSv3] 4498 sinhl(GLIBC_2.2) [SUSv3] sinl(GLIBC_2.2) [SUSv3] 4499 sqrt(GLIBC_2.2) [SUSv3] sqrtf(GLIBC_2.2) [SUSv3] 4500 sqrtl(GLIBC_2.2) [SUSv3] tan(GLIBC_2.2) [SUSv3] 4501 tanf(GLIBC_2.2) [SUSv3] tanh(GLIBC_2.2) [SUSv3] 4502 tanhf(GLIBC_2.2) [SUSv3] tanhl(GLIBC_2.2) [SUSv3] 4503 tanl(GLIBC_2.2) [SUSv3] tgamma(GLIBC_2.2) [SUSv3] 4504 tgammaf(GLIBC_2.2) [SUSv3] tgammal(GLIBC_2.2) [SUSv3] 4505 trunc(GLIBC_2.2) [SUSv3] truncf(GLIBC_2.2) [SUSv3] 4506 truncl(GLIBC_2.2) [SUSv3] y0(GLIBC_2.2) [SUSv3] y0f(GLIBC_2.2) 4507 [ISOC99] y0l(GLIBC_2.2) [ISOC99] 4508 y1(GLIBC_2.2) [SUSv3] y1f(GLIBC_2.2) [ISOC99] y1l(GLIBC_2.2) 4509 [ISOC99] yn(GLIBC_2.2) [SUSv3] 4510 ynf(GLIBC_2.2) [ISOC99] ynl(GLIBC_2.2) [ISOC99] 4511 4512 An LSB conforming implementation shall provide the 4513 architecture specific data interfaces for Math specified in 4514 Table 11-26, with the full mandatory functionality as 4515 described in the referenced underlying specification. 4516 4517 Table 11-26. libm - Math Data Interfaces 4518 signgam(GLIBC_2.2) [SUSv3] 4519 _________________________________________________________ 4520 4521 11.5. Data Definitions for libm 4522 4523 This section defines global identifiers and their values that 4524 are associated with interfaces contained in libm. These 4525 definitions are organized into groups that correspond to 4526 system headers. This convention is used as a convenience for 4527 the reader, and does not imply the existence of these headers, 4528 or their content. Where an interface is defined as requiring a 4529 particular system header file all of the data definitions for 4530 that system header file presented here shall be in effect. 4531 4532 This section gives data definitions to promote binary 4533 application portability, not to repeat source interface 4534 definitions available elsewhere. System providers and 4535 application developers should use this ABI to supplement - not 4536 to replace - source interface definition specifications. 4537 4538 This specification uses the ISO C (1999) C Language as the 4539 reference programming language, and data definitions are 4540 specified in ISO C format. The C language is used here as a 4541 convenient notation. Using a C language description of these 4542 data objects does not preclude their use by other programming 4543 languages. 4544 _________________________________________________________ 4545 4546 11.5.1. complex.h 4547 4548 extern double cabs(double complex); 4549 extern float cabsf(float complex); 4550 extern long double cabsl(long double complex); 4551 extern double complex cacos(double complex); 4552 extern float complex cacosf(float complex); 4553 extern double complex cacosh(double complex); 4554 extern float complex cacoshf(float complex); 4555 extern long double complex cacoshl(long double complex); 4556 extern long double complex cacosl(long double complex); 4557 extern double carg(double complex); 4558 extern float cargf(float complex); 4559 extern long double cargl(long double complex); 4560 extern double complex casin(double complex); 4561 extern float complex casinf(float complex); 4562 extern double complex casinh(double complex); 4563 extern float complex casinhf(float complex); 4564 extern long double complex casinhl(long double complex); 4565 extern long double complex casinl(long double complex); 4566 extern double complex catan(double complex); 4567 extern float complex catanf(float complex); 4568 extern double complex catanh(double complex); 4569 extern float complex catanhf(float complex); 4570 extern long double complex catanhl(long double complex); 4571 extern long double complex catanl(long double complex); 4572 extern double complex ccos(double complex); 4573 extern float complex ccosf(float complex); 4574 extern double complex ccosh(double complex); 4575 extern float complex ccoshf(float complex); 4576 extern long double complex ccoshl(long double complex); 4577 extern long double complex ccosl(long double complex); 4578 extern double complex cexp(double complex); 4579 extern float complex cexpf(float complex); 4580 extern long double complex cexpl(long double complex); 4581 extern double cimag(double complex); 4582 extern float cimagf(float complex); 4583 extern long double cimagl(long double complex); 4584 extern double complex clog(double complex); 4585 extern float complex clog10f(float complex); 4586 extern long double complex clog10l(long double complex); 4587 extern float complex clogf(float complex); 4588 extern long double complex clogl(long double complex); 4589 extern double complex conj(double complex); 4590 extern float complex conjf(float complex); 4591 extern long double complex conjl(long double complex); 4592 extern double complex cpow(double complex, double complex); 4593 extern float complex cpowf(float complex, float complex); 4594 extern long double complex cpowl(long double complex, long double complex); 4595 extern double complex cproj(double complex); 4596 extern float complex cprojf(float complex); 4597 extern long double complex cprojl(long double complex); 4598 extern double creal(double complex); 4599 extern float crealf(float complex); 4600 extern long double creall(long double complex); 4601 extern double complex csin(double complex); 4602 extern float complex csinf(float complex); 4603 extern double complex csinh(double complex); 4604 extern float complex csinhf(float complex); 4605 extern long double complex csinhl(long double complex); 4606 extern long double complex csinl(long double complex); 4607 extern double complex csqrt(double complex); 4608 extern float complex csqrtf(float complex); 4609 extern long double complex csqrtl(long double complex); 4610 extern double complex ctan(double complex); 4611 extern float complex ctanf(float complex); 4612 extern double complex ctanh(double complex); 4613 extern float complex ctanhf(float complex); 4614 extern long double complex ctanhl(long double complex); 4615 extern long double complex ctanl(long double complex); 4616 _________________________________________________________ 4617 4618 11.5.2. fenv.h 4619 4620 #define FE_INVALID (1UL << 0) 4621 #define FE_DIVBYZERO (1UL << 2) 4622 #define FE_OVERFLOW (1UL << 3) 4623 #define FE_UNDERFLOW (1UL << 4) 4624 #define FE_INEXACT (1UL << 5) 4625 #define FE_UNNORMAL 1UL << 1 4626 4627 #define FE_ALL_EXCEPT \ 4628 (FE_INEXACT | FE_UNDERFLOW | FE_OVERFLOW | FE_DIVBYZERO | FE_UNNORMAL | FE_INVALID) 4629 4630 #define FE_TONEAREST 0 4631 #define FE_DOWNWARD 1 4632 #define FE_UPWARD 2 4633 #define FE_TOWARDZERO 3 4634 4635 typedef unsigned long int fexcept_t; 4636 4637 typedef unsigned long int fenv_t; 4638 4639 #define FE_DFL_ENV ((__const fenv_t *) 0xc009804c0270033fUL) 4640 4641 extern int feclearexcept(int); 4642 extern int fegetenv(fenv_t *); 4643 extern int fegetexceptflag(fexcept_t *, int); 4644 extern int fegetround(void); 4645 extern int feholdexcept(fenv_t *); 4646 extern int feraiseexcept(int); 4647 extern int fesetenv(const fenv_t *); 4648 extern int fesetexceptflag(const fexcept_t *, int); 4649 extern int fesetround(int); 4650 extern int fetestexcept(int); 4651 extern int feupdateenv(const fenv_t *); 4652 _________________________________________________________ 4653 4654 11.5.3. math.h 4655 4656 #define fpclassify(x) \ 4657 (sizeof (x) == sizeof (float) ? __fpclassifyf (x) :sizeof (x) == sizeof (double) ? __fpclassify (x) : __fpclassifyl (x)) 4658 #define signbit(x) \ 4659 (sizeof (x) == sizeof (float)? __signbitf (x): sizeof (x) == sizeof (double)? __signbit (x) : __signbitl (x)) 4660 4661 #define FP_ILOGB0 -2147483648 4662 #define FP_ILOGBNAN 2147483647 4663 4664 extern int __finite(double); 4665 extern int __finitef(float); 4666 extern int __finitel(long double); 4667 extern int __isinf(double); 4668 extern int __isinff(float); 4669 extern int __isinfl(long double); 4670 extern int __isnan(double); 4671 extern int __isnanf(float); 4672 extern int __isnanl(long double); 4673 extern int __signbit(double); 4674 extern int __signbitf(float); 4675 extern int __fpclassify(double); 4676 extern int __fpclassifyf(float); 4677 extern int __fpclassifyl(long double); 4678 extern int signgam(void); 4679 extern double copysign(double, double); 4680 extern int finite(double); 4681 extern double frexp(double, int *); 4682 extern double ldexp(double, int); 4683 extern double modf(double, double *); 4684 extern double acos(double); 4685 extern double acosh(double); 4686 extern double asinh(double); 4687 extern double atanh(double); 4688 extern double asin(double); 4689 extern double atan(double); 4690 extern double atan2(double, double); 4691 extern double cbrt(double); 4692 extern double ceil(double); 4693 extern double cos(double); 4694 extern double cosh(double); 4695 extern double erf(double); 4696 extern double erfc(double); 4697 extern double exp(double); 4698 extern double expm1(double); 4699 extern double fabs(double); 4700 extern double floor(double); 4701 extern double fmod(double, double); 4702 extern double gamma(double); 4703 extern double hypot(double, double); 4704 extern int ilogb(double); 4705 extern double j0(double); 4706 extern double j1(double); 4707 extern double jn(int, double); 4708 extern double lgamma(double); 4709 extern double log(double); 4710 extern double log10(double); 4711 extern double log1p(double); 4712 extern double logb(double); 4713 extern double nextafter(double, double); 4714 extern double pow(double, double); 4715 extern double remainder(double, double); 4716 extern double rint(double); 4717 extern double scalb(double, double); 4718 extern double sin(double); 4719 extern double sinh(double); 4720 extern double sqrt(double); 4721 extern double tan(double); 4722 extern double tanh(double); 4723 extern double y0(double); 4724 extern double y1(double); 4725 extern double yn(int, double); 4726 extern float copysignf(float, float); 4727 extern long double copysignl(long double, long double); 4728 extern int finitef(float); 4729 extern int finitel(long double); 4730 extern float frexpf(float, int *); 4731 extern long double frexpl(long double, int *); 4732 extern float ldexpf(float, int); 4733 extern long double ldexpl(long double, int); 4734 extern float modff(float, float *); 4735 extern long double modfl(long double, long double *); 4736 extern double scalbln(double, long int); 4737 extern float scalblnf(float, long int); 4738 extern long double scalblnl(long double, long int); 4739 extern double scalbn(double, int); 4740 extern float scalbnf(float, int); 4741 extern long double scalbnl(long double, int); 4742 extern float acosf(float); 4743 extern float acoshf(float); 4744 extern long double acoshl(long double); 4745 extern long double acosl(long double); 4746 extern float asinf(float); 4747 extern float asinhf(float); 4748 extern long double asinhl(long double); 4749 extern long double asinl(long double); 4750 extern float atan2f(float, float); 4751 extern long double atan2l(long double, long double); 4752 extern float atanf(float); 4753 extern float atanhf(float); 4754 extern long double atanhl(long double); 4755 extern long double atanl(long double); 4756 extern float cbrtf(float); 4757 extern long double cbrtl(long double); 4758 extern float ceilf(float); 4759 extern long double ceill(long double); 4760 extern float cosf(float); 4761 extern float coshf(float); 4762 extern long double coshl(long double); 4763 extern long double cosl(long double); 4764 extern float dremf(float, float); 4765 extern long double dreml(long double, long double); 4766 extern float erfcf(float); 4767 extern long double erfcl(long double); 4768 extern float erff(float); 4769 extern long double erfl(long double); 4770 extern double exp2(double); 4771 extern float exp2f(float); 4772 extern long double exp2l(long double); 4773 extern float expf(float); 4774 extern long double expl(long double); 4775 extern float expm1f(float); 4776 extern long double expm1l(long double); 4777 extern float fabsf(float); 4778 extern long double fabsl(long double); 4779 extern double fdim(double, double); 4780 extern float fdimf(float, float); 4781 extern long double fdiml(long double, long double); 4782 extern float floorf(float); 4783 extern long double floorl(long double); 4784 extern double fma(double, double, double); 4785 extern float fmaf(float, float, float); 4786 extern long double fmal(long double, long double, long double); 4787 extern double fmax(double, double); 4788 extern float fmaxf(float, float); 4789 extern long double fmaxl(long double, long double); 4790 extern double fmin(double, double); 4791 extern float fminf(float, float); 4792 extern long double fminl(long double, long double); 4793 extern float fmodf(float, float); 4794 extern long double fmodl(long double, long double); 4795 extern float gammaf(float); 4796 extern long double gammal(long double); 4797 extern float hypotf(float, float); 4798 extern long double hypotl(long double, long double); 4799 extern int ilogbf(float); 4800 extern int ilogbl(long double); 4801 extern float j0f(float); 4802 extern long double j0l(long double); 4803 extern float j1f(float); 4804 extern long double j1l(long double); 4805 extern float jnf(int, float); 4806 extern long double jnl(int, long double); 4807 extern double lgamma_r(double, int *); 4808 extern float lgammaf(float); 4809 extern float lgammaf_r(float, int *); 4810 extern long double lgammal(long double); 4811 extern long double lgammal_r(long double, int *); 4812 extern long long int llrint(double); 4813 extern long long int llrintf(float); 4814 extern long long int llrintl(long double); 4815 extern long long int llround(double); 4816 extern long long int llroundf(float); 4817 extern long long int llroundl(long double); 4818 extern float log10f(float); 4819 extern long double log10l(long double); 4820 extern float log1pf(float); 4821 extern long double log1pl(long double); 4822 extern double log2(double); 4823 extern float log2f(float); 4824 extern long double log2l(long double); 4825 extern float logbf(float); 4826 extern long double logbl(long double); 4827 extern float logf(float); 4828 extern long double logl(long double); 4829 extern long int lrint(double); 4830 extern long int lrintf(float); 4831 extern long int lrintl(long double); 4832 extern long int lround(double); 4833 extern long int lroundf(float); 4834 extern long int lroundl(long double); 4835 extern int matherr(struct exception *); 4836 extern double nan(const char *); 4837 extern float nanf(const char *); 4838 extern long double nanl(const char *); 4839 extern double nearbyint(double); 4840 extern float nearbyintf(float); 4841 extern long double nearbyintl(long double); 4842 extern float nextafterf(float, float); 4843 extern long double nextafterl(long double, long double); 4844 extern double nexttoward(double, long double); 4845 extern float nexttowardf(float, long double); 4846 extern long double nexttowardl(long double, long double); 4847 extern double pow10(double); 4848 extern float pow10f(float); 4849 extern long double pow10l(long double); 4850 extern float powf(float, float); 4851 extern long double powl(long double, long double); 4852 extern float remainderf(float, float); 4853 extern long double remainderl(long double, long double); 4854 extern double remquo(double, double, int *); 4855 extern float remquof(float, float, int *); 4856 extern long double remquol(long double, long double, int *); 4857 extern float rintf(float); 4858 extern long double rintl(long double); 4859 extern double round(double); 4860 extern float roundf(float); 4861 extern long double roundl(long double); 4862 extern float scalbf(float, float); 4863 extern long double scalbl(long double, long double); 4864 extern double significand(double); 4865 extern float significandf(float); 4866 extern long double significandl(long double); 4867 extern void sincos(double, double *, double *); 4868 extern void sincosf(float, float *, float *); 4869 extern void sincosl(long double, long double *, long double *); 4870 extern float sinf(float); 4871 extern float sinhf(float); 4872 extern long double sinhl(long double); 4873 extern long double sinl(long double); 4874 extern float sqrtf(float); 4875 extern long double sqrtl(long double); 4876 extern float tanf(float); 4877 extern float tanhf(float); 4878 extern long double tanhl(long double); 4879 extern long double tanl(long double); 4880 extern double tgamma(double); 4881 extern float tgammaf(float); 4882 extern long double tgammal(long double); 4883 extern double trunc(double); 4884 extern float truncf(float); 4885 extern long double truncl(long double); 4886 extern float y0f(float); 4887 extern long double y0l(long double); 4888 extern float y1f(float); 4889 extern long double y1l(long double); 4890 extern float ynf(int, float); 4891 extern long double ynl(int, long double); 4892 extern int __fpclassifyl(long double); 4893 extern int __fpclassifyl(long double); 4894 extern int __signbitl(long double); 4895 extern int __signbitl(long double); 4896 extern int __signbitl(long double); 4897 extern long double exp2l(long double); 4898 extern long double exp2l(long double); 4899 _________________________________________________________ 4900 4901 11.6. Interfaces for libpthread 4902 4903 Table 11-27 defines the library name and shared object name 4904 for the libpthread library 4905 4906 Table 11-27. libpthread Definition 4907 Library: libpthread 4908 SONAME: libpthread.so.0 4909 4910 The behavior of the interfaces in this library is specified by 4911 the following specifications: 4912 4913 [LFS] Large File Support 4914 [LSB] This Specification 4915 [SUSv3] ISO POSIX (2003) 4916 _________________________________________________________ 4917 4918 11.6.1. Realtime Threads 4919 _________________________________________________________ 4920 4921 11.6.1.1. Interfaces for Realtime Threads 4922 4923 An LSB conforming implementation shall provide the 4924 architecture specific functions for Realtime Threads specified 4925 in Table 11-28, with the full mandatory functionality as 4926 described in the referenced underlying specification. 4927 4928 Table 11-28. libpthread - Realtime Threads Function Interfaces 4929 pthread_attr_getinheritsched(GLIBC_2.2) [SUSv3] 4930 pthread_attr_getschedpolicy(GLIBC_2.2) [SUSv3] 4931 pthread_attr_getscope(GLIBC_2.2) [SUSv3] 4932 pthread_attr_setinheritsched(GLIBC_2.2) [SUSv3] 4933 pthread_attr_setschedpolicy(GLIBC_2.2) [SUSv3] 4934 pthread_attr_setscope(GLIBC_2.2) [SUSv3] 4935 pthread_getschedparam(GLIBC_2.2) [SUSv3] 4936 pthread_setschedparam(GLIBC_2.2) [SUSv3] 4937 _________________________________________________________ 4938 4939 11.6.2. Advanced Realtime Threads 4940 _________________________________________________________ 4941 4942 11.6.2.1. Interfaces for Advanced Realtime Threads 4943 4944 No external functions are defined for libpthread - Advanced 4945 Realtime Threads in this part of the specification. See also 4946 the generic specification. 4947 _________________________________________________________ 4948 4949 11.6.3. Posix Threads 4950 _________________________________________________________ 4951 4952 11.6.3.1. Interfaces for Posix Threads 4953 4954 An LSB conforming implementation shall provide the 4955 architecture specific functions for Posix Threads specified in 4956 Table 11-29, with the full mandatory functionality as 4957 described in the referenced underlying specification. 4958 4959 Table 11-29. libpthread - Posix Threads Function Interfaces 4960 _pthread_cleanup_pop(GLIBC_2.2) [LSB] 4961 _pthread_cleanup_push(GLIBC_2.2) [LSB] 4962 pthread_attr_destroy(GLIBC_2.2) [SUSv3] 4963 pthread_attr_getdetachstate(GLIBC_2.2) [SUSv3] 4964 pthread_attr_getguardsize(GLIBC_2.2) [SUSv3] 4965 pthread_attr_getschedparam(GLIBC_2.2) [SUSv3] 4966 pthread_attr_getstack(GLIBC_2.2) [SUSv3] 4967 pthread_attr_getstackaddr(GLIBC_2.2) [SUSv3] 4968 pthread_attr_getstacksize(GLIBC_2.2) [SUSv3] 4969 pthread_attr_init(GLIBC_2.2) [SUSv3] 4970 pthread_attr_setdetachstate(GLIBC_2.2) [SUSv3] 4971 pthread_attr_setguardsize(GLIBC_2.2) [SUSv3] 4972 pthread_attr_setschedparam(GLIBC_2.2) [SUSv3] 4973 pthread_attr_setstackaddr(GLIBC_2.2) [SUSv3] 4974 pthread_attr_setstacksize(GLIBC_2.3.3) [SUSv3] 4975 pthread_cancel(GLIBC_2.2) [SUSv3] 4976 pthread_cond_broadcast(GLIBC_2.3.2) [SUSv3] 4977 pthread_cond_destroy(GLIBC_2.3.2) [SUSv3] 4978 pthread_cond_init(GLIBC_2.3.2) [SUSv3] 4979 pthread_cond_signal(GLIBC_2.3.2) [SUSv3] 4980 pthread_cond_timedwait(GLIBC_2.3.2) [SUSv3] 4981 pthread_cond_wait(GLIBC_2.3.2) [SUSv3] 4982 pthread_condattr_destroy(GLIBC_2.2) [SUSv3] 4983 pthread_condattr_getpshared(GLIBC_2.2) [SUSv3] 4984 pthread_condattr_init(GLIBC_2.2) [SUSv3] 4985 pthread_condattr_setpshared(GLIBC_2.2) [SUSv3] 4986 pthread_create(GLIBC_2.2) [SUSv3] pthread_detach(GLIBC_2.2) 4987 [SUSv3] 4988 pthread_equal(GLIBC_2.2) [SUSv3] pthread_exit(GLIBC_2.2) 4989 [SUSv3] pthread_getconcurrency(GLIBC_2.2) [SUSv3] 4990 pthread_getspecific(GLIBC_2.2) [SUSv3] 4991 pthread_join(GLIBC_2.2) [SUSv3] pthread_key_create(GLIBC_2.2) 4992 [SUSv3] pthread_key_delete(GLIBC_2.2) [SUSv3] 4993 pthread_kill(GLIBC_2.2) [SUSv3] 4994 pthread_mutex_destroy(GLIBC_2.2) [SUSv3] 4995 pthread_mutex_init(GLIBC_2.2) [SUSv3] 4996 pthread_mutex_lock(GLIBC_2.2) [SUSv3] 4997 pthread_mutex_trylock(GLIBC_2.2) [SUSv3] 4998 pthread_mutex_unlock(GLIBC_2.2) [SUSv3] 4999 pthread_mutexattr_destroy(GLIBC_2.2) [SUSv3] 5000 pthread_mutexattr_getpshared(GLIBC_2.2) [SUSv3] 5001 pthread_mutexattr_gettype(GLIBC_2.2) [SUSv3] 5002 pthread_mutexattr_init(GLIBC_2.2) [SUSv3] 5003 pthread_mutexattr_setpshared(GLIBC_2.2) [SUSv3] 5004 pthread_mutexattr_settype(GLIBC_2.2) [SUSv3] 5005 pthread_once(GLIBC_2.2) [SUSv3] 5006 pthread_rwlock_destroy(GLIBC_2.2) [SUSv3] 5007 pthread_rwlock_init(GLIBC_2.2) [SUSv3] 5008 pthread_rwlock_rdlock(GLIBC_2.2) [SUSv3] 5009 pthread_rwlock_timedrdlock(GLIBC_2.2) [SUSv3] 5010 pthread_rwlock_timedwrlock(GLIBC_2.2) [SUSv3] 5011 pthread_rwlock_tryrdlock(GLIBC_2.2) [SUSv3] 5012 pthread_rwlock_trywrlock(GLIBC_2.2) [SUSv3] 5013 pthread_rwlock_unlock(GLIBC_2.2) [SUSv3] 5014 pthread_rwlock_wrlock(GLIBC_2.2) [SUSv3] 5015 pthread_rwlockattr_destroy(GLIBC_2.2) [SUSv3] 5016 pthread_rwlockattr_getpshared(GLIBC_2.2) [SUSv3] 5017 pthread_rwlockattr_init(GLIBC_2.2) [SUSv3] 5018 pthread_rwlockattr_setpshared(GLIBC_2.2) [SUSv3] 5019 pthread_self(GLIBC_2.2) [SUSv3] 5020 pthread_setcancelstate(GLIBC_2.2) [SUSv3] 5021 pthread_setcanceltype(GLIBC_2.2) [SUSv3] 5022 pthread_setconcurrency(GLIBC_2.2) [SUSv3] 5023 pthread_setspecific(GLIBC_2.2) [SUSv3] 5024 pthread_sigmask(GLIBC_2.2) [SUSv3] 5025 pthread_testcancel(GLIBC_2.2) [SUSv3] 5026 sem_close(GLIBC_2.2) [SUSv3] sem_destroy(GLIBC_2.2) [SUSv3] 5027 sem_getvalue(GLIBC_2.2) [SUSv3] sem_init(GLIBC_2.2) [SUSv3] 5028 sem_open(GLIBC_2.2) [SUSv3] sem_post(GLIBC_2.2) [SUSv3] 5029 sem_timedwait(GLIBC_2.2) [SUSv3] sem_trywait(GLIBC_2.2) 5030 [SUSv3] 5031 sem_unlink(GLIBC_2.2) [SUSv3] sem_wait(GLIBC_2.2) [SUSv3] 5032 _________________________________________________________ 5033 5034 11.6.4. Thread aware versions of libc interfaces 5035 _________________________________________________________ 5036 5037 11.6.4.1. Interfaces for Thread aware versions of libc interfaces 5038 5039 An LSB conforming implementation shall provide the 5040 architecture specific functions for Thread aware versions of 5041 libc interfaces specified in Table 11-30, with the full 5042 mandatory functionality as described in the referenced 5043 underlying specification. 5044 5045 Table 11-30. libpthread - Thread aware versions of libc 5046 interfaces Function Interfaces 5047 lseek64(GLIBC_2.2) [LFS] open64(GLIBC_2.2) [LFS] 5048 pread(GLIBC_2.2) [SUSv3] pread64(GLIBC_2.2) [LFS] 5049 pwrite(GLIBC_2.2) [SUSv3] pwrite64(GLIBC_2.2) [LFS] 5050 _________________________________________________________ 5051 5052 11.7. Data Definitions for libpthread 5053 5054 This section defines global identifiers and their values that 5055 are associated with interfaces contained in libpthread. These 5056 definitions are organized into groups that correspond to 5057 system headers. This convention is used as a convenience for 5058 the reader, and does not imply the existence of these headers, 5059 or their content. Where an interface is defined as requiring a 5060 particular system header file all of the data definitions for 5061 that system header file presented here shall be in effect. 5062 5063 This section gives data definitions to promote binary 5064 application portability, not to repeat source interface 5065 definitions available elsewhere. System providers and 5066 application developers should use this ABI to supplement - not 5067 to replace - source interface definition specifications. 5068 5069 This specification uses the ISO C (1999) C Language as the 5070 reference programming language, and data definitions are 5071 specified in ISO C format. The C language is used here as a 5072 convenient notation. Using a C language description of these 5073 data objects does not preclude their use by other programming 5074 languages. 5075 _________________________________________________________ 5076 5077 11.7.1. pthread.h 5078 5079 extern void _pthread_cleanup_pop(struct _pthread_cleanup_buffer *, int); 5080 extern void _pthread_cleanup_push(struct _pthread_cleanup_buffer *, 5081 void (*__routine) (void *) 5082 , void *); 5083 extern int pthread_attr_destroy(pthread_attr_t *); 5084 extern int pthread_attr_getdetachstate(const typedef struct { 5085 int __detachstate; 5086 int __schedpolicy; 5087 struct sched_param __schedparam; 5088 int __inheritsched; 5089 int __scope; 5090 size_t __guardsize; 5091 int __stackaddr_set; 5092 void *__stackaddr; 5093 unsigned long int __stacksize;} 5094 pthread_attr_t *, int *); 5095 extern int pthread_attr_getinheritsched(const typedef struct { 5096 int __detachstate; 5097 int __schedpolicy; 5098 struct sched_param __schedparam; 5099 int __inheritsched; 5100 int __scope; 5101 size_t __guardsize; 5102 int __stackaddr_set; 5103 void *__stackaddr; 5104 unsigned long int __stacksize;} 5105 pthread_attr_t *, int *); 5106 extern int pthread_attr_getschedparam(const typedef struct { 5107 int __detachstate; 5108 int __schedpolicy; 5109 struct sched_param __schedparam; 5110 int __inheritsched; 5111 int __scope; 5112 size_t __guardsize; 5113 int __stackaddr_set; 5114 void *__stackaddr; 5115 unsigned long int __stacksize;} 5116 pthread_attr_t *, struct sched_param { 5117 int sched_priority;} 5118 5119 *); 5120 extern int pthread_attr_getschedpolicy(const typedef struct { 5121 int __detachstate; 5122 int __schedpolicy; 5123 struct sched_param __schedparam; 5124 int __inheritsched; 5125 int __scope; 5126 size_t __guardsize; 5127 int __stackaddr_set; 5128 void *__stackaddr; 5129 unsigned long int __stacksize;} 5130 pthread_attr_t *, int *); 5131 extern int pthread_attr_getscope(const typedef struct { 5132 int __detachstate; 5133 int __schedpolicy; 5134 struct sched_param __schedparam; 5135 int __inheritsched; 5136 int __scope; 5137 size_t __guardsize; 5138 int __stackaddr_set; 5139 void *__stackaddr; 5140 unsigned long int __stacksize;} 5141 pthread_attr_t *, int *); 5142 extern int pthread_attr_init(pthread_attr_t *); 5143 extern int pthread_attr_setdetachstate(pthread_attr_t *, int); 5144 extern int pthread_attr_setinheritsched(pthread_attr_t *, int); 5145 extern int pthread_attr_setschedparam(pthread_attr_t *, const struct sched_param { 5146 int sched_priority;} 5147 5148 *); 5149 extern int pthread_attr_setschedpolicy(pthread_attr_t *, int); 5150 extern int pthread_attr_setscope(pthread_attr_t *, int); 5151 extern int pthread_cancel(typedef unsigned long int pthread_t); 5152 extern int pthread_cond_broadcast(pthread_cond_t *); 5153 extern int pthread_cond_destroy(pthread_cond_t *); 5154 extern int pthread_cond_init(pthread_cond_t *, const typedef struct { 5155 int __dummy;} 5156 5157 pthread_condattr_t *); 5158 extern int pthread_cond_signal(pthread_cond_t *); 5159 extern int pthread_cond_timedwait(pthread_cond_t *, pthread_mutex_t *,const struct timespec { 5160 time_t tv_sec; long int tv_nsec;} 5161 5162 *); 5163 extern int pthread_cond_wait(pthread_cond_t *, pthread_mutex_t *); 5164 extern int pthread_condattr_destroy(pthread_condattr_t *); 5165 extern int pthread_condattr_init(pthread_condattr_t *); 5166 extern int pthread_create(pthread_t *, const typedef struct { 5167 int __detachstate; 5168 int __schedpolicy; 5169 struct sched_param __schedparam; 5170 int __inheritsched; 5171 int __scope; 5172 size_t __guardsize; 5173 int __stackaddr_set; 5174 void *__stackaddr; 5175 unsigned long int __stacksize;} 5176 pthread_attr_t *, 5177 void *(*__start_routine) (void *p1) 5178 , void *); 5179 extern int pthread_detach(typedef unsigned long int pthread_t); 5180 extern int pthread_equal(typedef unsigned long int pthread_t, 5181 typedef unsigned long int pthread_t); 5182 extern void pthread_exit(void *); 5183 extern int pthread_getschedparam(typedef unsigned long int pthread_t, 5184 int *, struct sched_param { 5185 int sched_priority;} 5186 5187 *); 5188 extern void *pthread_getspecific(typedef unsigned int pthread_key_t); 5189 extern int pthread_join(typedef unsigned long int pthread_t, void **); 5190 extern int pthread_key_create(pthread_key_t *, void (*destr_func) (void *) 5191 ); 5192 extern int pthread_key_delete(typedef unsigned int pthread_key_t); 5193 extern int pthread_mutex_destroy(pthread_mutex_t *); 5194 extern int pthread_mutex_init(pthread_mutex_t *, const typedef struct { 5195 int __mutexkind;} 5196 5197 pthread_mutexattr_t *); 5198 extern int pthread_mutex_lock(pthread_mutex_t *); 5199 extern int pthread_mutex_trylock(pthread_mutex_t *); 5200 extern int pthread_mutex_unlock(pthread_mutex_t *); 5201 extern int pthread_mutexattr_destroy(pthread_mutexattr_t *); 5202 extern int pthread_mutexattr_init(pthread_mutexattr_t *); 5203 extern int pthread_once(pthread_once_t *, void (*init_routine) (void) 5204 ); 5205 extern int pthread_rwlock_destroy(pthread_rwlock_t *); 5206 extern int pthread_rwlock_init(pthread_rwlock_t *, pthread_rwlockattr_t *); 5207 extern int pthread_rwlock_rdlock(pthread_rwlock_t *); 5208 extern int pthread_rwlock_tryrdlock(pthread_rwlock_t *); 5209 extern int pthread_rwlock_trywrlock(pthread_rwlock_t *); 5210 extern int pthread_rwlock_unlock(pthread_rwlock_t *); 5211 extern int pthread_rwlock_wrlock(pthread_rwlock_t *); 5212 extern int pthread_rwlockattr_destroy(pthread_rwlockattr_t *); 5213 extern int pthread_rwlockattr_getpshared(const typedef struct { 5214 int __lockkind; int __pshared;} 5215 pthread_rwlockattr_t *, int *); 5216 extern int pthread_rwlockattr_init(pthread_rwlockattr_t *); 5217 extern int pthread_rwlockattr_setpshared(pthread_rwlockattr_t *, int); 5218 extern typedef unsigned long int pthread_t pthread_self(void); 5219 extern int pthread_setcancelstate(int, int *); 5220 extern int pthread_setcanceltype(int, int *); 5221 extern int pthread_setschedparam(typedef unsigned long int pthread_t, int, const struct sched_param { 5222 int sched_priority;} 5223 5224 *); 5225 extern int pthread_setspecific(typedef unsigned int pthread_key_t, 5226 const void *); 5227 extern void pthread_testcancel(void); 5228 extern int pthread_attr_getguardsize(const typedef struct { 5229 int __detachstate; 5230 int __schedpolicy; 5231 struct sched_param __schedparam; 5232 int __inheritsched; 5233 int __scope; 5234 size_t __guardsize; 5235 int __stackaddr_set; 5236 void *__stackaddr; 5237 unsigned long int __stacksize;} 5238 pthread_attr_t *, size_t *); 5239 extern int pthread_attr_setguardsize(pthread_attr_t *, 5240 typedef unsigned long int size_t); 5241 extern int pthread_attr_setstackaddr(pthread_attr_t *, void *); 5242 extern int pthread_attr_getstackaddr(const typedef struct { 5243 int __detachstate; 5244 int __schedpolicy; 5245 struct sched_param __schedparam; 5246 int __inheritsched; 5247 int __scope; 5248 size_t __guardsize; 5249 int __stackaddr_set; 5250 void *__stackaddr; 5251 unsigned long int __stacksize;} 5252 pthread_attr_t *, void **); 5253 extern int pthread_attr_setstacksize(pthread_attr_t *, 5254 typedef unsigned long int size_t); 5255 extern int pthread_attr_getstacksize(const typedef struct { 5256 int __detachstate; 5257 int __schedpolicy; 5258 struct sched_param __schedparam; 5259 int __inheritsched; 5260 int __scope; 5261 size_t __guardsize; 5262 int __stackaddr_set; 5263 void *__stackaddr; 5264 unsigned long int __stacksize;} 5265 pthread_attr_t *, size_t *); 5266 extern int pthread_mutexattr_gettype(const typedef struct { 5267 int __mutexkind;} 5268 pthread_mutexattr_t *, int *); 5269 extern int pthread_mutexattr_settype(pthread_mutexattr_t *, int); 5270 extern int pthread_getconcurrency(void); 5271 extern int pthread_setconcurrency(int); 5272 extern int pthread_attr_getstack(const typedef struct { 5273 int __detachstate; 5274 int __schedpolicy; 5275 struct sched_param __schedparam; 5276 int __inheritsched; 5277 int __scope; 5278 size_t __guardsize; 5279 int __stackaddr_set; 5280 void *__stackaddr; 5281 unsigned long int __stacksize;} 5282 pthread_attr_t *, void **, size_t *); 5283 extern int pthread_attr_setstack(pthread_attr_t *, void *, 5284 typedef unsigned long int size_t); 5285 extern int pthread_condattr_getpshared(const typedef struct { 5286 int __dummy;} 5287 pthread_condattr_t *, int *); 5288 extern int pthread_condattr_setpshared(pthread_condattr_t *, int); 5289 extern int pthread_mutexattr_getpshared(const typedef struct { 5290 int __mutexkind;} 5291 pthread_mutexattr_t *, int *); 5292 extern int pthread_mutexattr_setpshared(pthread_mutexattr_t *, int); 5293 extern int pthread_rwlock_timedrdlock(pthread_rwlock_t *, const structtimespec { 5294 time_t tv_sec; long int tv_nsec;} 5295 5296 *); 5297 extern int pthread_rwlock_timedwrlock(pthread_rwlock_t *, const structtimespec { 5298 time_t tv_sec; long int tv_nsec;} 5299 5300 *); 5301 extern int __register_atfork(void (*prepare) (void) 5302 , void (*parent) (void) 5303 , void (*child) (void) 5304 , void *); 5305 extern int pthread_setschedprio(typedef unsigned long int pthread_t, int); 5306 _________________________________________________________ 5307 5308 11.7.2. semaphore.h 5309 5310 extern int sem_close(sem_t *); 5311 extern int sem_destroy(sem_t *); 5312 extern int sem_getvalue(sem_t *, int *); 5313 extern int sem_init(sem_t *, int, unsigned int); 5314 extern sem_t *sem_open(const char *, int, ...); 5315 extern int sem_post(sem_t *); 5316 extern int sem_trywait(sem_t *); 5317 extern int sem_unlink(const char *); 5318 extern int sem_wait(sem_t *); 5319 extern int sem_timedwait(sem_t *, const struct timespec *); 5320 _________________________________________________________ 5321 5322 11.8. Interfaces for libgcc_s 5323 5324 Table 11-31 defines the library name and shared object name 5325 for the libgcc_s library 5326 5327 Table 11-31. libgcc_s Definition 5328 Library: libgcc_s 5329 SONAME: libgcc_s.so.1 5330 5331 The behavior of the interfaces in this library is specified by 5332 the following specifications: 5333 5334 [LSB] This Specification 5335 _________________________________________________________ 5336 5337 11.8.1. Unwind Library 5338 _________________________________________________________ 5339 5340 11.8.1.1. Interfaces for Unwind Library 5341 5342 An LSB conforming implementation shall provide the 5343 architecture specific functions for Unwind Library specified 5344 in Table 11-32, with the full mandatory functionality as 5345 described in the referenced underlying specification. 5346 5347 Table 11-32. libgcc_s - Unwind Library Function Interfaces 5348 _Unwind_Backtrace(GCC_3.3) [LSB] 5349 _Unwind_DeleteException(GCC_3.0) [LSB] 5350 _Unwind_FindEnclosingFunction(GCC_3.3) [LSB] 5351 _Unwind_ForcedUnwind(GCC_3.0) [LSB] 5352 _Unwind_GetBSP(GCC_3.3.2) [LSB] _Unwind_GetCFA(GCC_3.3) [LSB] 5353 _Unwind_GetGR(GCC_3.0) [LSB] _Unwind_GetIP(GCC_3.0) [LSB] 5354 _Unwind_GetLanguageSpecificData(GCC_3.0) [LSB] 5355 _Unwind_GetRegionStart(GCC_3.0) [LSB] 5356 _Unwind_RaiseException(GCC_3.0) [LSB] _Unwind_Resume(GCC_3.0) 5357 [LSB] 5358 _Unwind_Resume_or_Rethrow(GCC_3.3) [LSB] 5359 _Unwind_SetGR(GCC_3.0) [LSB] _Unwind_SetIP(GCC_3.0) [LSB] 5360 _________________________________________________________ 5361 5362 11.9. Data Definitions for libgcc_s 5363 5364 This section defines global identifiers and their values that 5365 are associated with interfaces contained in libgcc_s. These 5366 definitions are organized into groups that correspond to 5367 system headers. This convention is used as a convenience for 5368 the reader, and does not imply the existence of these headers, 5369 or their content. Where an interface is defined as requiring a 5370 particular system header file all of the data definitions for 5371 that system header file presented here shall be in effect. 5372 5373 This section gives data definitions to promote binary 5374 application portability, not to repeat source interface 5375 definitions available elsewhere. System providers and 5376 application developers should use this ABI to supplement - not 5377 to replace - source interface definition specifications. 5378 5379 This specification uses the ISO C (1999) C Language as the 5380 reference programming language, and data definitions are 5381 specified in ISO C format. The C language is used here as a 5382 convenient notation. Using a C language description of these 5383 data objects does not preclude their use by other programming 5384 languages. 5385 _________________________________________________________ 5386 5387 11.9.1. unwind.h 5388 5389 extern void _Unwind_DeleteException(struct _Unwind_Exception *); 5390 extern fde *_Unwind_Find_FDE(void *, struct dwarf_eh_base *); 5391 extern void _Unwind_DeleteException(struct _Unwind_Exception *); 5392 extern _Unwind_Ptr _Unwind_ForcedUnwind(struct _Unwind_Exception *, 5393 _Unwind_Stop_Fn, void *); 5394 extern _Unwind_Word _Unwind_GetGR(struct _Unwind_Context *, int); 5395 extern _Unwind_Ptr _Unwind_GetIP(struct _Unwind_Context *); 5396 extern _Unwind_Ptr _Unwind_GetLanguageSpecificData(struct _Unwind_Context 5397 *); 5398 extern _Unwind_Ptr _Unwind_GetRegionStart(struct _Unwind_Context *); 5399 extern _Unwind_Reason_Code _Unwind_RaiseException(struct _Unwind_Exception 5400 *); 5401 extern void _Unwind_Resume(struct _Unwind_Exception *); 5402 extern void _Unwind_SetGR(struct _Unwind_Context *, int, u_int64_t); 5403 extern void _Unwind_SetIP(struct _Unwind_Context *, _Unwind_Ptr); 5404 extern void _Unwind_DeleteException(struct _Unwind_Exception *); 5405 extern fde *_Unwind_Find_FDE(void *, struct dwarf_eh_base *); 5406 extern _Unwind_Ptr _Unwind_ForcedUnwind(struct _Unwind_Exception *, 5407 _Unwind_Stop_Fn, void *); 5408 extern _Unwind_Ptr _Unwind_GetDataRelBase(struct _Unwind_Context *); 5409 extern _Unwind_Word _Unwind_GetGR(struct _Unwind_Context *, int); 5410 extern _Unwind_Ptr _Unwind_GetIP(struct _Unwind_Context *); 5411 extern _Unwind_Ptr _Unwind_GetLanguageSpecificData(struct _Unwind_Context 5412 *); 5413 extern _Unwind_Ptr _Unwind_GetRegionStart(struct _Unwind_Context *); 5414 extern _Unwind_Ptr _Unwind_GetTextRelBase(struct _Unwind_Context *); 5415 extern _Unwind_Reason_Code _Unwind_RaiseException(struct _Unwind_Exception 5416 *); 5417 extern void _Unwind_Resume(struct _Unwind_Exception *); 5418 extern void _Unwind_SetGR(struct _Unwind_Context *, int, u_int64_t); 5419 extern void _Unwind_SetIP(struct _Unwind_Context *, _Unwind_Ptr); 5420 extern _Unwind_Ptr _Unwind_ForcedUnwind(struct _Unwind_Exception *, 5421 _Unwind_Stop_Fn, void *); 5422 extern _Unwind_Ptr _Unwind_GetDataRelBase(struct _Unwind_Context *); 5423 extern _Unwind_Word _Unwind_GetGR(struct _Unwind_Context *, int); 5424 extern _Unwind_Ptr _Unwind_GetIP(struct _Unwind_Context *); 5425 extern _Unwind_Ptr _Unwind_GetLanguageSpecificData(struct _Unwind_Context 5426 *); 5427 extern _Unwind_Ptr _Unwind_GetRegionStart(struct _Unwind_Context *); 5428 extern _Unwind_Ptr _Unwind_GetTextRelBase(struct _Unwind_Context *); 5429 extern _Unwind_Reason_Code _Unwind_RaiseException(struct _Unwind_Exception 5430 *); 5431 extern void _Unwind_Resume(struct _Unwind_Exception *); 5432 extern void _Unwind_SetGR(struct _Unwind_Context *, int, u_int64_t); 5433 extern void _Unwind_SetIP(struct _Unwind_Context *, _Unwind_Ptr); 5434 extern void _Unwind_DeleteException(struct _Unwind_Exception *); 5435 extern fde *_Unwind_Find_FDE(void *, struct dwarf_eh_base *); 5436 extern _Unwind_Ptr _Unwind_ForcedUnwind(struct _Unwind_Exception *, 5437 _Unwind_Stop_Fn, void *); 5438 extern _Unwind_Ptr _Unwind_GetDataRelBase(struct _Unwind_Context *); 5439 extern _Unwind_Word _Unwind_GetGR(struct _Unwind_Context *, int); 5440 extern _Unwind_Ptr _Unwind_GetIP(struct _Unwind_Context *); 5441 extern _Unwind_Ptr _Unwind_GetLanguageSpecificData(struct _Unwind_Context 5442 *); 5443 extern _Unwind_Ptr _Unwind_GetRegionStart(struct _Unwind_Context *); 5444 extern _Unwind_Ptr _Unwind_GetTextRelBase(struct _Unwind_Context *); 5445 extern _Unwind_Reason_Code _Unwind_RaiseException(struct _Unwind_Exception 5446 *); 5447 extern void _Unwind_Resume(struct _Unwind_Exception *); 5448 extern void _Unwind_SetGR(struct _Unwind_Context *, int, u_int64_t); 5449 extern void _Unwind_SetIP(struct _Unwind_Context *, _Unwind_Ptr); 5450 extern void _Unwind_DeleteException(struct _Unwind_Exception *); 5451 extern fde *_Unwind_Find_FDE(void *, struct dwarf_eh_base *); 5452 extern _Unwind_Ptr _Unwind_ForcedUnwind(struct _Unwind_Exception *, 5453 _Unwind_Stop_Fn, void *); 5454 extern _Unwind_Ptr _Unwind_GetDataRelBase(struct _Unwind_Context *); 5455 extern _Unwind_Word _Unwind_GetGR(struct _Unwind_Context *, int); 5456 extern _Unwind_Ptr _Unwind_GetIP(struct _Unwind_Context *); 5457 extern _Unwind_Ptr _Unwind_GetLanguageSpecificData(struct _Unwind_Context 5458 *); 5459 extern _Unwind_Ptr _Unwind_GetRegionStart(struct _Unwind_Context *); 5460 extern _Unwind_Ptr _Unwind_GetTextRelBase(struct _Unwind_Context *); 5461 extern _Unwind_Reason_Code _Unwind_RaiseException(struct _Unwind_Exception 5462 *); 5463 extern void _Unwind_Resume(struct _Unwind_Exception *); 5464 extern void _Unwind_SetGR(struct _Unwind_Context *, int, u_int64_t); 5465 extern void _Unwind_SetIP(struct _Unwind_Context *, _Unwind_Ptr); 5466 extern void _Unwind_DeleteException(struct _Unwind_Exception *); 5467 extern fde *_Unwind_Find_FDE(void *, struct dwarf_eh_base *); 5468 extern _Unwind_Ptr _Unwind_ForcedUnwind(struct _Unwind_Exception *, 5469 _Unwind_Stop_Fn, void *); 5470 extern _Unwind_Ptr _Unwind_GetDataRelBase(struct _Unwind_Context *); 5471 extern _Unwind_Word _Unwind_GetGR(struct _Unwind_Context *, int); 5472 extern _Unwind_Ptr _Unwind_GetIP(struct _Unwind_Context *); 5473 extern _Unwind_Ptr _Unwind_GetLanguageSpecificData(void); 5474 extern _Unwind_Ptr _Unwind_GetRegionStart(struct _Unwind_Context *); 5475 extern _Unwind_Ptr _Unwind_GetTextRelBase(struct _Unwind_Context *); 5476 extern _Unwind_Reason_Code _Unwind_RaiseException(struct _Unwind_Exception 5477 *); 5478 extern void _Unwind_Resume(struct _Unwind_Exception *); 5479 extern void _Unwind_SetGR(struct _Unwind_Context *, int, u_int64_t); 5480 extern void _Unwind_SetIP(struct _Unwind_Context *, _Unwind_Ptr); 5481 extern void _Unwind_DeleteException(struct _Unwind_Exception *); 5482 extern fde *_Unwind_Find_FDE(void *, struct dwarf_eh_base *); 5483 extern _Unwind_Ptr _Unwind_ForcedUnwind(struct _Unwind_Exception *, 5484 _Unwind_Stop_Fn, void *); 5485 extern _Unwind_Ptr _Unwind_GetDataRelBase(struct _Unwind_Context *); 5486 extern _Unwind_Word _Unwind_GetGR(struct _Unwind_Context *, int); 5487 extern _Unwind_Ptr _Unwind_GetIP(struct _Unwind_Context *); 5488 extern _Unwind_Ptr _Unwind_GetLanguageSpecificData(void); 5489 extern _Unwind_Ptr _Unwind_GetRegionStart(struct _Unwind_Context *); 5490 extern _Unwind_Ptr _Unwind_GetTextRelBase(struct _Unwind_Context *); 5491 extern _Unwind_Reason_Code _Unwind_RaiseException(struct _Unwind_Exception 5492 *); 5493 extern void _Unwind_Resume(struct _Unwind_Exception *); 5494 extern void _Unwind_SetGR(struct _Unwind_Context *, int, u_int64_t); 5495 extern void _Unwind_SetIP(struct _Unwind_Context *, _Unwind_Ptr); 5496 extern _Unwind_Reason_Code _Unwind_Backtrace(_Unwind_Trace_Fn, void *); 5497 extern _Unwind_Reason_Code _Unwind_Backtrace(_Unwind_Trace_Fn, void *); 5498 extern _Unwind_Reason_Code _Unwind_Backtrace(_Unwind_Trace_Fn, void *); 5499 extern _Unwind_Reason_Code _Unwind_Backtrace(_Unwind_Trace_Fn, void *); 5500 extern _Unwind_Reason_Code _Unwind_Backtrace(_Unwind_Trace_Fn, void *); 5501 extern _Unwind_Reason_Code _Unwind_Backtrace(_Unwind_Trace_Fn, void *); 5502 extern _Unwind_Reason_Code _Unwind_Backtrace(_Unwind_Trace_Fn, void *); 5503 extern _Unwind_Reason_Code _Unwind_GetCFA(struct _Unwind_Context *); 5504 extern _Unwind_Reason_Code _Unwind_GetCFA(struct _Unwind_Context *); 5505 extern _Unwind_Reason_Code _Unwind_GetCFA(struct _Unwind_Context *); 5506 extern _Unwind_Reason_Code _Unwind_GetCFA(struct _Unwind_Context *); 5507 extern _Unwind_Reason_Code _Unwind_GetCFA(struct _Unwind_Context *); 5508 extern _Unwind_Reason_Code _Unwind_GetCFA(struct _Unwind_Context *); 5509 extern _Unwind_Reason_Code _Unwind_GetCFA(struct _Unwind_Context *); 5510 extern _Unwind_Reason_Code _Unwind_Resume_or_Rethrow(struct 5511 _Unwind_Exception*); 5512 extern _Unwind_Reason_Code _Unwind_Resume_or_Rethrow(struct 5513 _Unwind_Exception*); 5514 extern _Unwind_Reason_Code _Unwind_Resume_or_Rethrow(struct 5515 _Unwind_Exception*); 5516 extern _Unwind_Reason_Code _Unwind_Resume_or_Rethrow(struct 5517 _Unwind_Exception*); 5518 extern _Unwind_Reason_Code _Unwind_Resume_or_Rethrow(struct 5519 _Unwind_Exception*); 5520 extern _Unwind_Reason_Code _Unwind_Resume_or_Rethrow(struct 5521 _Unwind_Exception*); 5522 extern _Unwind_Reason_Code _Unwind_Resume_or_Rethrow(struct 5523 _Unwind_Exception*); 5524 extern void *_Unwind_FindEnclosingFunction(void *); 5525 extern void *_Unwind_FindEnclosingFunction(void *); 5526 extern void *_Unwind_FindEnclosingFunction(void *); 5527 extern void *_Unwind_FindEnclosingFunction(void *); 5528 extern void *_Unwind_FindEnclosingFunction(void *); 5529 extern void *_Unwind_FindEnclosingFunction(void *); 5530 extern void *_Unwind_FindEnclosingFunction(void *); 5531 extern _Unwind_Word _Unwind_GetBSP(struct _Unwind_Context *); 5532 _________________________________________________________ 5533 5534 11.10. Interface Definitions for libgcc_s 5535 5536 Table of Contents 5537 _Unwind_DeleteException -- private C++ error handling method 5538 _Unwind_ForcedUnwind -- private C++ error handling method 5539 _Unwind_GetGR -- private C++ error handling method 5540 _Unwind_GetIP -- private C++ error handling method 5541 _Unwind_GetLanguageSpecificData -- private C++ error handling 5542 method 5543 5544 _Unwind_GetRegionStart -- private C++ error handling method 5545 _Unwind_RaiseException -- private C++ error handling method 5546 _Unwind_Resume -- private C++ error handling method 5547 _Unwind_SetGR -- private C++ error handling method 5548 _Unwind_SetIP -- private C++ error handling method 5549 5550 The interfaces defined on the following pages are included in 5551 libgcc_s and are defined by this specification. Unless 5552 otherwise noted, these interfaces shall be included in the 5553 source standard. 5554 5555 Other interfaces listed in Section 11.8 shall behave as 5556 described in the referenced base document. 5557 5558 _Unwind_DeleteException 5559 5560 Name 5561 5562 _Unwind_DeleteException -- private C++ error handling method 5563 5564 Synopsis 5565 5566 void _Unwind_DeleteException(struct _Unwind_Exception * 5567 object); 5568 5569 Description 5570 5571 _Unwind_DeleteException() deletes the given exception object. 5572 If a given runtime resumes normal execution after catching a 5573 foreign exception, it will not know how to delete that 5574 exception. Such an exception shall be deleted by calling 5575 _Unwind_DeleteException(). This is a convenience function that 5576 calls the function pointed to by the exception_cleanup field 5577 of the exception header. 5578 5579 _Unwind_ForcedUnwind 5580 5581 Name 5582 5583 _Unwind_ForcedUnwind -- private C++ error handling method 5584 5585 Synopsis 5586 5587 _Unwind_Reason_Code _Unwind_ForcedUnwind(struct 5588 _Unwind_Exception * object, _Unwind_Stop_Fn stop, void * 5589 stop_parameter); 5590 5591 Description 5592 5593 _Unwind_ForcedUnwind() raises an exception for forced 5594 unwinding, passing along the given exception object, which 5595 should have its exception_class and exception_cleanup fields 5596 set. The exception object has been allocated by the 5597 language-specific runtime, and has a language-specific format, 5598 except that it shall contain an _Unwind_Exception struct. 5599 5600 Forced unwinding is a single-phase process. stop and 5601 stop_parameter control the termination of the unwind process 5602 instead of the usual personality routine query. stop is called 5603 for each unwind frame, with the parameteres described for the 5604 usual personality routine below, plus an additional 5605 stop_parameter. 5606 5607 Return Value 5608 5609 When stop identifies the destination frame, it transfers 5610 control to the user code as appropriate without returning, 5611 normally after calling _Unwind_DeleteException(). If not, then 5612 it should return an _Unwind_Reason_Code value. 5613 5614 If stop returns any reason code other than _URC_NO_REASON, 5615 then the stack state is indeterminate from the point of view 5616 of the caller of _Unwind_ForcedUnwind(). Rather than attempt 5617 to return, therefore, the unwind library should use the 5618 exception_cleanup entry in the exception, and then call 5619 abort(). 5620 5621 _URC_NO_REASON 5622 This is not the destination from. The unwind runtime 5623 will call frame's personality routine with the 5624 _UA_FORCE_UNWIND and _UA_CLEANUP_PHASE flag set in 5625 actions, and then unwind to the next frame and call the 5626 stop() function again. 5627 5628 _URC_END_OF_STACK 5629 In order to allow _Unwind_ForcedUnwind() to perform 5630 special processing when it reaches the end of the 5631 stack, the unwind runtime will call it after the last 5632 frame is rejected, with a NULL stack pointer in the 5633 context, and the stop() function shall catch this 5634 condition. It may return this code if it cannot handle 5635 end-of-stack. 5636 5637 _URC_FATAL_PHASE2_ERROR 5638 The stop() function may return this code for other 5639 fatal conditions like stack corruption. 5640 5641 _Unwind_GetGR 5642 5643 Name 5644 5645 _Unwind_GetGR -- private C++ error handling method 5646 5647 Synopsis 5648 5649 _Unwind_Word _Unwind_GetGR(struct _Unwind_Context * context, 5650 int index); 5651 5652 Description 5653 5654 _Unwind_GetGR() returns data at index found in context. The 5655 register is identified by its index: 0 to 31 are for the fixed 5656 registers, and 32 to 127 are for the stacked registers. 5657 5658 During the two phases of unwinding, only GR1 has a guaranteed 5659 value, which is the global pointer of the frame referenced by 5660 the unwind context. If the register has its NAT bit set, the 5661 behavior is unspecified. 5662 5663 _Unwind_GetIP 5664 5665 Name 5666 5667 _Unwind_GetIP -- private C++ error handling method 5668 5669 Synopsis 5670 5671 _Unwind_Ptr _Unwind_GetIP(struct _Unwind_Context * context); 5672 5673 Description 5674 5675 _Unwind_GetIP() returns the instruction pointer value for the 5676 routine identified by the unwind context. 5677 5678 _Unwind_GetLanguageSpecificData 5679 5680 Name 5681 5682 _Unwind_GetLanguageSpecificData -- private C++ error handling 5683 method 5684 5685 Synopsis 5686 5687 _Unwind_Ptr _Unwind_GetLanguageSpecificData(struct 5688 _Unwind_Context * context, uint value); 5689 5690 Description 5691 5692 _Unwind_GetLanguageSpecificData() returns the address of the 5693 language specific data area for the current stack frame. 5694 5695 _Unwind_GetRegionStart 5696 5697 Name 5698 5699 _Unwind_GetRegionStart -- private C++ error handling method 5700 5701 Synopsis 5702 5703 _Unwind_Ptr _Unwind_GetRegionStart(struct _Unwind_Context * 5704 context); 5705 5706 Description 5707 5708 _Unwind_GetRegionStart() routine returns the address (i.e., 0) 5709 of the beginning of the procedure or code fragment described 5710 by the current unwind descriptor block. 5711 5712 _Unwind_RaiseException 5713 5714 Name 5715 5716 _Unwind_RaiseException -- private C++ error handling method 5717 5718 Synopsis 5719 5720 _Unwind_Reason_Code _Unwind_RaiseException(struct 5721 _Unwind_Exception * object); 5722 5723 Description 5724 5725 _Unwind_RaiseException() raises an exception, passing along 5726 the given exception object, which should have its 5727 exception_class and exception_cleanup fields set. The 5728 exception object has been allocated by the language-specific 5729 runtime, and has a language-specific format, exception that it 5730 shall contain an _Unwind_Exception. 5731 5732 Return Value 5733 5734 _Unwind_RaiseException() does not return unless an error 5735 condition is found. If an error condition occurs, an 5736 _Unwind_Reason_Code is returnd: 5737 5738 _URC_END_OF_STACK 5739 The unwinder encountered the end of the stack during 5740 phase one without finding a handler. The unwind runtime 5741 will not have modified the stack. The C++ runtime will 5742 normally call uncaught_exception() in this case. 5743 5744 _URC_FATAL_PHASE1_ERROR 5745 The unwinder encountered an unexpected error during 5746 phase one, because of something like stack corruption. 5747 The unwind runtime will not have modified the stack. 5748 The C++ runtime will normally call terminate() in this 5749 case. 5750 5751 _URC_FATAL_PHASE2_ERROR 5752 The unwinder encountered an unexpected error during 5753 phase two. This is usually a throw, which will call 5754 terminate(). 5755 5756 _Unwind_Resume 5757 5758 Name 5759 5760 _Unwind_Resume -- private C++ error handling method 5761 5762 Synopsis 5763 5764 void _Unwind_Resume(struct _Unwind_Exception * object); 5765 5766 Description 5767 5768 _Unwind_Resume() resumes propagation of an existing exception 5769 object. A call to this routine is inserted as the end of a 5770 landing pad that performs cleanup, but does not resume normal 5771 execution. It causes unwinding to proceed further. 5772 5773 _Unwind_SetGR 5774 5775 Name 5776 5777 _Unwind_SetGR -- private C++ error handling method 5778 5779 Synopsis 5780 5781 void _Unwind_SetGR(struct _Unwind_Context * context, int 5782 index, uint value); 5783 5784 Description 5785 5786 _Unwind_SetGR() sets the value of the register indexed for the 5787 routine identified by the unwind context. 5788 5789 _Unwind_SetIP 5790 5791 Name 5792 5793 _Unwind_SetIP -- private C++ error handling method 5794 5795 Synopsis 5796 5797 void _Unwind_SetIP(struct _Unwind_Context * context, uint 5798 value); 5799 5800 Description 5801 5802 _Unwind_SetIP() sets the value of the instruction pointer for 5803 the routine identified by the unwind context 5804 _________________________________________________________ 5805 5806 11.11. Interfaces for libdl 5807 5808 Table 11-33 defines the library name and shared object name 5809 for the libdl library 5810 5811 Table 11-33. libdl Definition 5812 Library: libdl 5813 SONAME: libdl.so.2 5814 5815 The behavior of the interfaces in this library is specified by 5816 the following specifications: 5817 5818 [LSB] This Specification 5819 [SUSv3] ISO POSIX (2003) 5820 _________________________________________________________ 5821 5822 11.11.1. Dynamic Loader 5823 _________________________________________________________ 5824 5825 11.11.1.1. Interfaces for Dynamic Loader 5826 5827 An LSB conforming implementation shall provide the 5828 architecture specific functions for Dynamic Loader specified 5829 in Table 11-34, with the full mandatory functionality as 5830 described in the referenced underlying specification. 5831 5832 Table 11-34. libdl - Dynamic Loader Function Interfaces 5833 dladdr(GLIBC_2.0) [LSB] dlclose(GLIBC_2.0) [SUSv3] 5834 dlerror(GLIBC_2.0) [SUSv3] dlopen(GLIBC_2.1) [LSB] 5835 dlsym(GLIBC_2.0) [LSB] 5836 _________________________________________________________ 5837 5838 11.12. Data Definitions for libdl 5839 5840 This section defines global identifiers and their values that 5841 are associated with interfaces contained in libdl. These 5842 definitions are organized into groups that correspond to 5843 system headers. This convention is used as a convenience for 5844 the reader, and does not imply the existence of these headers, 5845 or their content. Where an interface is defined as requiring a 5846 particular system header file all of the data definitions for 5847 that system header file presented here shall be in effect. 5848 5849 This section gives data definitions to promote binary 5850 application portability, not to repeat source interface 5851 definitions available elsewhere. System providers and 5852 application developers should use this ABI to supplement - not 5853 to replace - source interface definition specifications. 5854 5855 This specification uses the ISO C (1999) C Language as the 5856 reference programming language, and data definitions are 5857 specified in ISO C format. The C language is used here as a 5858 convenient notation. Using a C language description of these 5859 data objects does not preclude their use by other programming 5860 languages. 5861 _________________________________________________________ 5862 5863 11.12.1. dlfcn.h 5864 5865 extern int dladdr(const void *, Dl_info *); 5866 extern int dlclose(void *); 5867 extern char *dlerror(void); 5868 extern void *dlopen(char *, int); 5869 extern void *dlsym(void *, char *); 5870 _________________________________________________________ 5871 5872 11.13. Interfaces for libcrypt 5873 5874 Table 11-35 defines the library name and shared object name 5875 for the libcrypt library 5876 5877 Table 11-35. libcrypt Definition 5878 Library: libcrypt 5879 SONAME: libcrypt.so.1 5880 5881 The behavior of the interfaces in this library is specified by 5882 the following specifications: 5883 5884 [SUSv3] ISO POSIX (2003) 5885 _________________________________________________________ 5886 5887 11.13.1. Encryption 5888 _________________________________________________________ 5889 5890 11.13.1.1. Interfaces for Encryption 5891 5892 An LSB conforming implementation shall provide the 5893 architecture specific functions for Encryption specified in 5894 Table 11-36, with the full mandatory functionality as 5895 described in the referenced underlying specification. 5896 5897 Table 11-36. libcrypt - Encryption Function Interfaces 5898 crypt(GLIBC_2.0) [SUSv3] encrypt(GLIBC_2.0) [SUSv3] 5899 setkey(GLIBC_2.0) [SUSv3] 5900 5901 IV. Utility Libraries 5902 5903 Table of Contents 5904 12. Libraries 5905 5906 12.1. Interfaces for libz 5907 5908 12.1.1. Compression Library 5909 5910 12.2. Data Definitions for libz 5911 5912 12.2.1. zlib.h 5913 5914 12.3. Interfaces for libncurses 5915 5916 12.3.1. Curses 5917 5918 12.4. Data Definitions for libncurses 5919 5920 12.4.1. curses.h 5921 12.4.2. term.h 5922 5923 12.5. Interfaces for libutil 5924 5925 12.5.1. Utility Functions 5926 _________________________________________________________ 5927 5928 Chapter 12. Libraries 5929 5930 An LSB-conforming implementation shall also support some 5931 utility libraries which are built on top of the interfaces 5932 provided by the base libraries. These libraries implement 5933 common functionality, and hide additional system dependent 5934 information such as file formats and device names. 5935 _________________________________________________________ 5936 5937 12.1. Interfaces for libz 5938 5939 Table 12-1 defines the library name and shared object name for 5940 the libz library 5941 5942 Table 12-1. libz Definition 5943 Library: libz 5944 SONAME: libz.so.1 5945 _________________________________________________________ 5946 5947 12.1.1. Compression Library 5948 _________________________________________________________ 5949 5950 12.1.1.1. Interfaces for Compression Library 5951 5952 No external functions are defined for libz - Compression 5953 Library in this part of the specification. See also the 5954 generic specification. 5955 _________________________________________________________ 5956 5957 12.2. Data Definitions for libz 5958 5959 This section defines global identifiers and their values that 5960 are associated with interfaces contained in libz. These 5961 definitions are organized into groups that correspond to 5962 system headers. This convention is used as a convenience for 5963 the reader, and does not imply the existence of these headers, 5964 or their content. Where an interface is defined as requiring a 5965 particular system header file all of the data definitions for 5966 that system header file presented here shall be in effect. 5967 5968 This section gives data definitions to promote binary 5969 application portability, not to repeat source interface 5970 definitions available elsewhere. System providers and 5971 application developers should use this ABI to supplement - not 5972 to replace - source interface definition specifications. 5973 5974 This specification uses the ISO C (1999) C Language as the 5975 reference programming language, and data definitions are 5976 specified in ISO C . The C language is used here as a 5977 convenient notation. Using a C language description of these 5978 data objects does not preclude their use by other programming 5979 languages. 5980 _________________________________________________________ 5981 5982 12.2.1. zlib.h 5983 5984 extern int gzread(gzFile, voidp, unsigned int); 5985 extern int gzclose(gzFile); 5986 extern gzFile gzopen(const char *, const char *); 5987 extern gzFile gzdopen(int, const char *); 5988 extern int gzwrite(gzFile, voidpc, unsigned int); 5989 extern int gzflush(gzFile, int); 5990 extern const char *gzerror(gzFile, int *); 5991 extern uLong adler32(uLong, const Bytef *, uInt); 5992 extern int compress(Bytef *, uLongf *, const Bytef *, uLong); 5993 extern int compress2(Bytef *, uLongf *, const Bytef *, uLong, int); 5994 extern uLong crc32(uLong, const Bytef *, uInt); 5995 extern int deflate(z_streamp, int); 5996 extern int deflateCopy(z_streamp, z_streamp); 5997 extern int deflateEnd(z_streamp); 5998 extern int deflateInit2_(z_streamp, int, int, int, int, int, const char *, 5999 int); 6000 extern int deflateInit_(z_streamp, int, const char *, int); 6001 extern int deflateParams(z_streamp, int, int); 6002 extern int deflateReset(z_streamp); 6003 extern int deflateSetDictionary(z_streamp, const Bytef *, uInt); 6004 extern const uLongf *get_crc_table(void); 6005 extern int gzeof(gzFile); 6006 extern int gzgetc(gzFile); 6007 extern char *gzgets(gzFile, char *, int); 6008 extern int gzprintf(gzFile, const char *, ...); 6009 extern int gzputc(gzFile, int); 6010 extern int gzputs(gzFile, const char *); 6011 extern int gzrewind(gzFile); 6012 extern z_off_t gzseek(gzFile, z_off_t, int); 6013 extern int gzsetparams(gzFile, int, int); 6014 extern z_off_t gztell(gzFile); 6015 extern int inflate(z_streamp, int); 6016 extern int inflateEnd(z_streamp); 6017 extern int inflateInit2_(z_streamp, int, const char *, int); 6018 extern int inflateInit_(z_streamp, const char *, int); 6019 extern int inflateReset(z_streamp); 6020 extern int inflateSetDictionary(z_streamp, const Bytef *, uInt); 6021 extern int inflateSync(z_streamp); 6022 extern int inflateSyncPoint(z_streamp); 6023 extern int uncompress(Bytef *, uLongf *, const Bytef *, uLong); 6024 extern const char *zError(int); 6025 extern const char *zlibVersion(void); 6026 extern uLong deflateBound(z_streamp, uLong); 6027 extern uLong compressBound(uLong); 6028 _________________________________________________________ 6029 6030 12.3. Interfaces for libncurses 6031 6032 Table 12-2 defines the library name and shared object name for 6033 the libncurses library 6034 6035 Table 12-2. libncurses Definition 6036 Library: libncurses 6037 SONAME: libncurses.so.5 6038 _________________________________________________________ 6039 6040 12.3.1. Curses 6041 _________________________________________________________ 6042 6043 12.3.1.1. Interfaces for Curses 6044 6045 No external functions are defined for libncurses - Curses in 6046 this part of the specification. See also the generic 6047 specification. 6048 _________________________________________________________ 6049 6050 12.4. Data Definitions for libncurses 6051 6052 This section defines global identifiers and their values that 6053 are associated with interfaces contained in libncurses. These 6054 definitions are organized into groups that correspond to 6055 system headers. This convention is used as a convenience for 6056 the reader, and does not imply the existence of these headers, 6057 or their content. Where an interface is defined as requiring a 6058 particular system header file all of the data definitions for 6059 that system header file presented here shall be in effect. 6060 6061 This section gives data definitions to promote binary 6062 application portability, not to repeat source interface 6063 definitions available elsewhere. System providers and 6064 application developers should use this ABI to supplement - not 6065 to replace - source interface definition specifications. 6066 6067 This specification uses the ISO C (1999) C Language as the 6068 reference programming language, and data definitions are 6069 specified in ISO C . The C language is used here as a 6070 convenient notation. Using a C language description of these 6071 data objects does not preclude their use by other programming 6072 languages. 6073 _________________________________________________________ 6074 6075 12.4.1. curses.h 6076 6077 extern int addch(const chtype); 6078 extern int addchnstr(const chtype *, int); 6079 extern int addchstr(const chtype *); 6080 extern int addnstr(const char *, int); 6081 extern int addstr(const char *); 6082 extern int attroff(int); 6083 extern int attron(int); 6084 extern int attrset(int); 6085 extern int attr_get(attr_t *, short *, void *); 6086 extern int attr_off(attr_t, void *); 6087 extern int attr_on(attr_t, void *); 6088 extern int attr_set(attr_t, short, void *); 6089 extern int baudrate(void); 6090 extern int beep(void); 6091 extern int bkgd(chtype); 6092 extern void bkgdset(chtype); 6093 extern int border(chtype, chtype, chtype, chtype, chtype, chtype, chtype, 6094 chtype); 6095 extern int box(WINDOW *, chtype, chtype); 6096 extern bool can_change_color(void); 6097 extern int cbreak(void); 6098 extern int chgat(int, attr_t, short, const void *); 6099 extern int clear(void); 6100 extern int clearok(WINDOW *, bool); 6101 extern int clrtobot(void); 6102 extern int clrtoeol(void); 6103 extern int color_content(short, short *, short *, short *); 6104 extern int color_set(short, void *); 6105 extern int copywin(const WINDOW *, WINDOW *, int, int, int, int, int, int, 6106 int); 6107 extern int curs_set(int); 6108 extern int def_prog_mode(void); 6109 extern int def_shell_mode(void); 6110 extern int delay_output(int); 6111 extern int delch(void); 6112 extern void delscreen(SCREEN *); 6113 extern int delwin(WINDOW *); 6114 extern int deleteln(void); 6115 extern WINDOW *derwin(WINDOW *, int, int, int, int); 6116 extern int doupdate(void); 6117 extern WINDOW *dupwin(WINDOW *); 6118 extern int echo(void); 6119 extern int echochar(const chtype); 6120 extern int erase(void); 6121 extern int endwin(void); 6122 extern char erasechar(void); 6123 extern void filter(void); 6124 extern int flash(void); 6125 extern int flushinp(void); 6126 extern chtype getbkgd(WINDOW *); 6127 extern int getch(void); 6128 extern int getnstr(char *, int); 6129 extern int getstr(char *); 6130 extern WINDOW *getwin(FILE *); 6131 extern int halfdelay(int); 6132 extern bool has_colors(void); 6133 extern bool has_ic(void); 6134 extern bool has_il(void); 6135 extern int hline(chtype, int); 6136 extern void idcok(WINDOW *, bool); 6137 extern int idlok(WINDOW *, bool); 6138 extern void immedok(WINDOW *, bool); 6139 extern chtype inch(void); 6140 extern int inchnstr(chtype *, int); 6141 extern int inchstr(chtype *); 6142 extern WINDOW *initscr(void); 6143 extern int init_color(short, short, short, short); 6144 extern int init_pair(short, short, short); 6145 extern int innstr(char *, int); 6146 extern int insch(chtype); 6147 extern int insdelln(int); 6148 extern int insertln(void); 6149 extern int insnstr(const char *, int); 6150 extern int insstr(const char *); 6151 extern int instr(char *); 6152 extern int intrflush(WINDOW *, bool); 6153 extern bool isendwin(void); 6154 extern bool is_linetouched(WINDOW *, int); 6155 extern bool is_wintouched(WINDOW *); 6156 extern const char *keyname(int); 6157 extern int keypad(WINDOW *, bool); 6158 extern char killchar(void); 6159 extern int leaveok(WINDOW *, bool); 6160 extern char *longname(void); 6161 extern int meta(WINDOW *, bool); 6162 extern int move(int, int); 6163 extern int mvaddch(int, int, const chtype); 6164 extern int mvaddchnstr(int, int, const chtype *, int); 6165 extern int mvaddchstr(int, int, const chtype *); 6166 extern int mvaddnstr(int, int, const char *, int); 6167 extern int mvaddstr(int, int, const char *); 6168 extern int mvchgat(int, int, int, attr_t, short, const void *); 6169 extern int mvcur(int, int, int, int); 6170 extern int mvdelch(int, int); 6171 extern int mvderwin(WINDOW *, int, int); 6172 extern int mvgetch(int, int); 6173 extern int mvgetnstr(int, int, char *, int); 6174 extern int mvgetstr(int, int, char *); 6175 extern int mvhline(int, int, chtype, int); 6176 extern chtype mvinch(int, int); 6177 extern int mvinchnstr(int, int, chtype *, int); 6178 extern int mvinchstr(int, int, chtype *); 6179 extern int mvinnstr(int, int, char *, int); 6180 extern int mvinsch(int, int, chtype); 6181 extern int mvinsnstr(int, int, const char *, int); 6182 extern int mvinsstr(int, int, const char *); 6183 extern int mvinstr(int, int, char *); 6184 extern int mvprintw(int, int, char *, ...); 6185 extern int mvscanw(int, int, const char *, ...); 6186 extern int mvvline(int, int, chtype, int); 6187 extern int mvwaddch(WINDOW *, int, int, const chtype); 6188 extern int mvwaddchnstr(WINDOW *, int, int, const chtype *, int); 6189 extern int mvwaddchstr(WINDOW *, int, int, const chtype *); 6190 extern int mvwaddnstr(WINDOW *, int, int, const char *, int); 6191 extern int mvwaddstr(WINDOW *, int, int, const char *); 6192 extern int mvwchgat(WINDOW *, int, int, int, attr_t, short, const void*); 6193 extern int mvwdelch(WINDOW *, int, int); 6194 extern int mvwgetch(WINDOW *, int, int); 6195 extern int mvwgetnstr(WINDOW *, int, int, char *, int); 6196 extern int mvwgetstr(WINDOW *, int, int, char *); 6197 extern int mvwhline(WINDOW *, int, int, chtype, int); 6198 extern int mvwin(WINDOW *, int, int); 6199 extern chtype mvwinch(WINDOW *, int, int); 6200 extern int mvwinchnstr(WINDOW *, int, int, chtype *, int); 6201 extern int mvwinchstr(WINDOW *, int, int, chtype *); 6202 extern int mvwinnstr(WINDOW *, int, int, char *, int); 6203 extern int mvwinsch(WINDOW *, int, int, chtype); 6204 extern int mvwinsnstr(WINDOW *, int, int, const char *, int); 6205 extern int mvwinsstr(WINDOW *, int, int, const char *); 6206 extern int mvwinstr(WINDOW *, int, int, char *); 6207 extern int mvwprintw(WINDOW *, int, int, char *, ...); 6208 extern int mvwscanw(WINDOW *, int, int, const char *, ...); 6209 extern int mvwvline(WINDOW *, int, int, chtype, int); 6210 extern int napms(int); 6211 extern WINDOW *newpad(int, int); 6212 extern SCREEN *newterm(const char *, FILE *, FILE *); 6213 extern WINDOW *newwin(int, int, int, int); 6214 extern int nl(void); 6215 extern int nocbreak(void); 6216 extern int nodelay(WINDOW *, bool); 6217 extern int noecho(void); 6218 extern int nonl(void); 6219 extern void noqiflush(void); 6220 extern int noraw(void); 6221 extern int notimeout(WINDOW *, bool); 6222 extern int overlay(const WINDOW *, WINDOW *); 6223 extern int overwrite(const WINDOW *, WINDOW *); 6224 extern int pair_content(short, short *, short *); 6225 extern int pechochar(WINDOW *, chtype); 6226 extern int pnoutrefresh(WINDOW *, int, int, int, int, int, int); 6227 extern int prefresh(WINDOW *, int, int, int, int, int, int); 6228 extern int printw(char *, ...); 6229 extern int putwin(WINDOW *, FILE *); 6230 extern void qiflush(void); 6231 extern int raw(void); 6232 extern int redrawwin(WINDOW *); 6233 extern int refresh(void); 6234 extern int resetty(void); 6235 extern int reset_prog_mode(void); 6236 extern int reset_shell_mode(void); 6237 extern int ripoffline(int, int (*init) (WINDOW *, int) 6238 ); 6239 extern int savetty(void); 6240 extern int scanw(const char *, ...); 6241 extern int scr_dump(const char *); 6242 extern int scr_init(const char *); 6243 extern int scrl(int); 6244 extern int scroll(WINDOW *); 6245 extern int scrollok(WINDOW *, typedef unsigned char bool); 6246 extern int scr_restore(const char *); 6247 extern int scr_set(const char *); 6248 extern int setscrreg(int, int); 6249 extern SCREEN *set_term(SCREEN *); 6250 extern int slk_attroff(const typedef unsigned long int chtype); 6251 extern int slk_attron(const typedef unsigned long int chtype); 6252 extern int slk_attrset(const typedef unsigned long int chtype); 6253 extern int slk_attr_set(const typedef chtype attr_t, short, void *); 6254 extern int slk_clear(void); 6255 extern int slk_color(short); 6256 extern int slk_init(int); 6257 extern char *slk_label(int); 6258 extern int slk_noutrefresh(void); 6259 extern int slk_refresh(void); 6260 extern int slk_restore(void); 6261 extern int slk_set(int, const char *, int); 6262 extern int slk_touch(void); 6263 extern int standout(void); 6264 extern int standend(void); 6265 extern int start_color(void); 6266 extern WINDOW *subpad(WINDOW *, int, int, int, int); 6267 extern WINDOW *subwin(WINDOW *, int, int, int, int); 6268 extern int syncok(WINDOW *, typedef unsigned char bool); 6269 extern typedef unsigned long int chtype termattrs(void); 6270 extern char *termname(void); 6271 extern void timeout(int); 6272 extern int typeahead(int); 6273 extern int ungetch(int); 6274 extern int untouchwin(WINDOW *); 6275 extern void use_env(typedef unsigned char bool); 6276 extern int vidattr(typedef unsigned long int chtype); 6277 extern int vidputs(typedef unsigned long int chtype, 6278 int (*vidputs_int) (int) 6279 ); 6280 extern int vline(typedef unsigned long int chtype, int); 6281 extern int vwprintw(WINDOW *, char *, typedef void *va_list); 6282 extern int vw_printw(WINDOW *, const char *, typedef void *va_list); 6283 extern int vwscanw(WINDOW *, const char *, typedef void *va_list); 6284 extern int vw_scanw(WINDOW *, const char *, typedef void *va_list); 6285 extern int waddch(WINDOW *, const typedef unsigned long int chtype); 6286 extern int waddchnstr(WINDOW *, const typedef unsigned long int chtype*, 6287 int); 6288 extern int waddchstr(WINDOW *, const typedef unsigned long int chtype *); 6289 extern int waddnstr(WINDOW *, const char *, int); 6290 extern int waddstr(WINDOW *, const char *); 6291 extern int wattron(WINDOW *, int); 6292 extern int wattroff(WINDOW *, int); 6293 extern int wattrset(WINDOW *, int); 6294 extern int wattr_get(WINDOW *, attr_t *, short *, void *); 6295 extern int wattr_on(WINDOW *, typedef chtype attr_t, void *); 6296 extern int wattr_off(WINDOW *, typedef chtype attr_t, void *); 6297 extern int wattr_set(WINDOW *, typedef chtype attr_t, short, void *); 6298 extern int wbkgd(WINDOW *, typedef unsigned long int chtype); 6299 extern void wbkgdset(WINDOW *, typedef unsigned long int chtype); 6300 extern int wborder(WINDOW *, typedef unsigned long int chtype, 6301 typedef unsigned long int chtype, 6302 typedef unsigned long int chtype, 6303 typedef unsigned long int chtype, 6304 typedef unsigned long int chtype, 6305 typedef unsigned long int chtype, 6306 typedef unsigned long int chtype, 6307 typedef unsigned long int chtype); 6308 extern int wchgat(WINDOW *, int, typedef chtype attr_t, short, 6309 const void *); 6310 extern int wclear(WINDOW *); 6311 extern int wclrtobot(WINDOW *); 6312 extern int wclrtoeol(WINDOW *); 6313 extern int wcolor_set(WINDOW *, short, void *); 6314 extern void wcursyncup(WINDOW *); 6315 extern int wdelch(WINDOW *); 6316 extern int wdeleteln(WINDOW *); 6317 extern int wechochar(WINDOW *, const typedef unsigned long int chtype); 6318 extern int werase(WINDOW *); 6319 extern int wgetch(WINDOW *); 6320 extern int wgetnstr(WINDOW *, char *, int); 6321 extern int wgetstr(WINDOW *, char *); 6322 extern int whline(WINDOW *, typedef unsigned long int chtype, int); 6323 extern typedef unsigned long int chtype winch(WINDOW *); 6324 extern int winchnstr(WINDOW *, chtype *, int); 6325 extern int winchstr(WINDOW *, chtype *); 6326 extern int winnstr(WINDOW *, char *, int); 6327 extern int winsch(WINDOW *, typedef unsigned long int chtype); 6328 extern int winsdelln(WINDOW *, int); 6329 extern int winsertln(WINDOW *); 6330 extern int winsnstr(WINDOW *, const char *, int); 6331 extern int winsstr(WINDOW *, const char *); 6332 extern int winstr(WINDOW *, char *); 6333 extern int wmove(WINDOW *, int, int); 6334 extern int wnoutrefresh(WINDOW *); 6335 extern int wprintw(WINDOW *, char *, ...); 6336 extern int wredrawln(WINDOW *, int, int); 6337 extern int wrefresh(WINDOW *); 6338 extern int wscanw(WINDOW *, const char *, ...); 6339 extern int wscrl(WINDOW *, int); 6340 extern int wsetscrreg(WINDOW *, int, int); 6341 extern int wstandout(WINDOW *); 6342 extern int wstandend(WINDOW *); 6343 extern void wsyncdown(WINDOW *); 6344 extern void wsyncup(WINDOW *); 6345 extern void wtimeout(WINDOW *, int); 6346 extern int wtouchln(WINDOW *, int, int, int); 6347 extern int wvline(WINDOW *, typedef unsigned long int chtype, int); 6348 extern char *unctrl(typedef unsigned long int chtype); 6349 extern int COLORS(void); 6350 extern int COLOR_PAIRS(void); 6351 extern chtype acs_map(void); 6352 extern WINDOW *curscr(void); 6353 extern WINDOW *stdscr(void); 6354 extern int COLS(void); 6355 extern int LINES(void); 6356 extern int touchline(WINDOW *, int, int); 6357 extern int touchwin(WINDOW *); 6358 _________________________________________________________ 6359 6360 12.4.2. term.h 6361 6362 extern int putp(const char *); 6363 extern int tigetflag(const char *); 6364 extern int tigetnum(const char *); 6365 extern char *tigetstr(const char *); 6366 extern char *tparm(const char *, ...); 6367 extern TERMINAL *set_curterm(TERMINAL *); 6368 extern int del_curterm(TERMINAL *); 6369 extern int restartterm(char *, int, int *); 6370 extern int setupterm(char *, int, int *); 6371 extern char *tgetstr(char *, char **); 6372 extern char *tgoto(const char *, int, int); 6373 extern int tgetent(char *, const char *); 6374 extern int tgetflag(char *); 6375 extern int tgetnum(char *); 6376 extern int tputs(const char *, int, int (*putcproc) (int) 6377 ); 6378 extern TERMINAL *cur_term(void); 6379 _________________________________________________________ 6380 6381 12.5. Interfaces for libutil 6382 6383 Table 12-3 defines the library name and shared object name for 6384 the libutil library 6385 6386 Table 12-3. libutil Definition 6387 Library: libutil 6388 SONAME: libutil.so.1 6389 6390 The behavior of the interfaces in this library is specified by 6391 the following specifications: 6392 6393 [LSB] This Specification 6394 _________________________________________________________ 6395 6396 12.5.1. Utility Functions 6397 _________________________________________________________ 6398 6399 12.5.1.1. Interfaces for Utility Functions 6400 6401 An LSB conforming implementation shall provide the 6402 architecture specific functions for Utility Functions 6403 specified in Table 12-4, with the full mandatory functionality 6404 as described in the referenced underlying specification. 6405 6406 Table 12-4. libutil - Utility Functions Function Interfaces 6407 forkpty(GLIBC_2.0) [LSB] login(GLIBC_2.0) [LSB] 6408 login_tty(GLIBC_2.0) [LSB] logout(GLIBC_2.0) [LSB] 6409 logwtmp(GLIBC_2.0) [LSB] openpty(GLIBC_2.0) [LSB] 6410 6411 V. Package Format and Installation 6412 6413 Table of Contents 6414 13. Software Installation 6415 6416 13.1. Package Dependencies 6417 13.2. Package Architecture Considerations 6418 _________________________________________________________ 6419 6420 Chapter 13. Software Installation 6421 _________________________________________________________ 6422 6423 13.1. Package Dependencies 6424 6425 The LSB runtime environment shall provde the following 6426 dependencies. 6427 6428 lsb-core-ia64 6429 6430 This dependency is used to indicate that the application is 6431 dependent on features contained in the LSB-Core specification. 6432 6433 These dependencies shall have a version of 3.0. 6434 6435 Other LSB modules may add additional dependencies; such 6436 dependencies shall have the format lsb-module-ia64. 6437 _________________________________________________________ 6438 6439 13.2. Package Architecture Considerations 6440 6441 All packages must specify an architecture of IA64. A LSB 6442 runtime environment must accept an architecture of ia64 even 6443 if the native architecture is different. 6444 6445 The archnum value in the Lead Section shall be 0x0009. 6446 _________________________________________________________ 6447 6448 Appendix A. Alphabetical Listing of Interfaces 6449 _________________________________________________________ 6450 6451 A.1. libgcc_s 6452 6453 The behavior of the interfaces in this library is specified by 6454 the following Standards. 6455 6456 This Specification 6457 6458 Table A-1. libgcc_s Function Interfaces 6459 _Unwind_Backtrace[1] _Unwind_GetCFA[1] 6460 _Unwind_RaiseException[1] 6461 _Unwind_DeleteException[1] _Unwind_GetGR[1] _Unwind_Resume[1] 6462 _Unwind_FindEnclosingFunction[1] _Unwind_GetIP[1] 6463 _Unwind_Resume_or_Rethrow[1] 6464 _Unwind_ForcedUnwind[1] _Unwind_GetLanguageSpecificData[1] 6465 _Unwind_SetGR[1] 6466 _Unwind_GetBSP[1] _Unwind_GetRegionStart[1] _Unwind_SetIP[1] 6467 _________________________________________________________ 6468 6469 A.2. libm 6470 6471 The behavior of the interfaces in this library is specified by 6472 the following Standards. 6473 6474 ISO C (1999) 6475 ISO POSIX (2003) 6476 6477 Table A-2. libm Function Interfaces 6478 __fpclassifyl[1] __signbitl[1] exp2l[1] 6479 _________________________________________________________ 6480 6481 Appendix B. GNU Free Documentation License (Informative) 6482 6483 This specification is published under the terms of the GNU 6484 Free Documentation License, Version 1.1, March 2000 6485 6486 Copyright (C) 2000 Free Software Foundation, Inc. 59 Temple 6487 Place, Suite 330, Boston, MA 02111-1307 USA Everyone is 6488 permitted to copy and distribute verbatim copies of this 6489 license document, but changing it is not allowed. 6490 _________________________________________________________ 6491 6492 B.1. PREAMBLE 6493 6494 The purpose of this License is to make a manual, textbook, or 6495 other written document "free" in the sense of freedom: to 6496 assure everyone the effective freedom to copy and redistribute 6497 it, with or without modifying it, either commercially or 6498 noncommercially. Secondarily, this License preserves for the 6499 author and publisher a way to get credit for their work, while 6500 not being considered responsible for modifications made by 6501 others. 6502 6503 This License is a kind of "copyleft", which means that 6504 derivative works of the document must themselves be free in 6505 the same sense. It complements the GNU General Public License, 6506 which is a copyleft license designed for free software. 6507 6508 We have designed this License in order to use it for manuals 6509 for free software, because free software needs free 6510 documentation: a free program should come with manuals 6511 providing the same freedoms that the software does. But this 6512 License is not limited to software manuals; it can be used for 6513 any textual work, regardless of subject matter or whether it 6514 is published as a printed book. We recommend this License 6515 principally for works whose purpose is instruction or 6516 reference. 6517 _________________________________________________________ 6518 6519 B.2. APPLICABILITY AND DEFINITIONS 6520 6521 This License applies to any manual or other work that contains 6522 a notice placed by the copyright holder saying it can be 6523 distributed under the terms of this License. The "Document", 6524 below, refers to any such manual or work. Any member of the 6525 public is a licensee, and is addressed as "you". 6526 6527 A "Modified Version" of the Document means any work containing 6528 the Document or a portion of it, either copied verbatim, or 6529 with modifications and/or translated into another language. 6530 6531 A "Secondary Section" is a named appendix or a front-matter 6532 section of the Document that deals exclusively with the 6533 relationship of the publishers or authors of the Document to 6534 the Document's overall subject (or to related matters) and 6535 contains nothing that could fall directly within that overall 6536 subject. (For example, if the Document is in part a textbook 6537 of mathematics, a Secondary Section may not explain any 6538 mathematics.) The relationship could be a matter of historical 6539 connection with the subject or with related matters, or of 6540 legal, commercial, philosophical, ethical or political 6541 position regarding them. 6542 6543 The "Invariant Sections" are certain Secondary Sections whose 6544 titles are designated, as being those of Invariant Sections, 6545 in the notice that says that the Document is released under 6546 this License. 6547 6548 The "Cover Texts" are certain short passages of text that are 6549 listed, as Front-Cover Texts or Back-Cover Texts, in the 6550 notice that says that the Document is released under this 6551 License. 6552 6553 A "Transparent" copy of the Document means a machine-readable 6554 copy, represented in a format whose specification is available 6555 to the general public, whose contents can be viewed and edited 6556 directly and straightforwardly with generic text editors or 6557 (for images composed of pixels) generic paint programs or (for 6558 drawings) some widely available drawing editor, and that is 6559 suitable for input to text formatters or for automatic 6560 translation to a variety of formats suitable for input to text 6561 formatters. A copy made in an otherwise Transparent file 6562 format whose markup has been designed to thwart or discourage 6563 subsequent modification by readers is not Transparent. A copy 6564 that is not "Transparent" is called "Opaque". 6565 6566 Examples of suitable formats for Transparent copies include 6567 plain ASCII without markup, Texinfo input format, LaTeX input 6568 format, SGML or XML using a publicly available DTD, and 6569 standard-conforming simple HTML designed for human 6570 modification. Opaque formats include PostScript, PDF, 6571 proprietary formats that can be read and edited only by 6572 proprietary word processors, SGML or XML for which the DTD 6573 and/or processing tools are not generally available, and the 6574 machine-generated HTML produced by some word processors for 6575 output purposes only. 6576 6577 The "Title Page" means, for a printed book, the title page 6578 itself, plus such following pages as are needed to hold, 6579 legibly, the material this License requires to appear in the 6580 title page. For works in formats which do not have any title 6581 page as such, "Title Page" means the text near the most 6582 prominent appearance of the work's title, preceding the 6583 beginning of the body of the text. 6584 _________________________________________________________ 6585 6586 B.3. VERBATIM COPYING 6587 6588 You may copy and distribute the Document in any medium, either 6589 commercially or noncommercially, provided that this License, 6590 the copyright notices, and the license notice saying this 6591 License applies to the Document are reproduced in all copies, 6592 and that you add no other conditions whatsoever to those of 6593 this License. You may not use technical measures to obstruct 6594 or control the reading or further copying of the copies you 6595 make or distribute. However, you may accept compensation in 6596 exchange for copies. If you distribute a large enough number 6597 of copies you must also follow the conditions in section 3. 6598 6599 You may also lend copies, under the same conditions stated 6600 above, and you may publicly display copies. 6601 _________________________________________________________ 6602 6603 B.4. COPYING IN QUANTITY 6604 6605 If you publish printed copies of the Document numbering more 6606 than 100, and the Document's license notice requires Cover 6607 Texts, you must enclose the copies in covers that carry, 6608 clearly and legibly, all these Cover Texts: Front-Cover Texts 6609 on the front cover, and Back-Cover Texts on the back cover. 6610 Both covers must also clearly and legibly identify you as the 6611 publisher of these copies. The front cover must present the 6612 full title with all words of the title equally prominent and 6613 visible. You may add other material on the covers in addition. 6614 Copying with changes limited to the covers, as long as they 6615 preserve the title of the Document and satisfy these 6616 conditions, can be treated as verbatim copying in other 6617 respects. 6618 6619 If the required texts for either cover are too voluminous to 6620 fit legibly, you should put the first ones listed (as many as 6621 fit reasonably) on the actual cover, and continue the rest 6622 onto adjacent pages. 6623 6624 If you publish or distribute Opaque copies of the Document 6625 numbering more than 100, you must either include a 6626 machine-readable Transparent copy along with each Opaque copy, 6627 or state in or with each Opaque copy a publicly-accessible 6628 computer-network location containing a complete Transparent 6629 copy of the Document, free of added material, which the 6630 general network-using public has access to download 6631 anonymously at no charge using public-standard network 6632 protocols. If you use the latter option, you must take 6633 reasonably prudent steps, when you begin distribution of 6634 Opaque copies in quantity, to ensure that this Transparent 6635 copy will remain thus accessible at the stated location until 6636 at least one year after the last time you distribute an Opaque 6637 copy (directly or through your agents or retailers) of that 6638 edition to the public. 6639 6640 It is requested, but not required, that you contact the 6641 authors of the Document well before redistributing any large 6642 number of copies, to give them a chance to provide you with an 6643 updated version of the Document. 6644 _________________________________________________________ 6645 6646 B.5. MODIFICATIONS 6647 6648 You may copy and distribute a Modified Version of the Document 6649 under the conditions of sections 2 and 3 above, provided that 6650 you release the Modified Version under precisely this License, 6651 with the Modified Version filling the role of the Document, 6652 thus licensing distribution and modification of the Modified 6653 Version to whoever possesses a copy of it. In addition, you 6654 must do these things in the Modified Version: 6655 6656 A. Use in the Title Page (and on the covers, if any) a title 6657 distinct from that of the Document, and from those of 6658 previous versions (which should, if there were any, be 6659 listed in the History section of the Document). You may 6660 use the same title as a previous version if the original 6661 publisher of that version gives permission. 6662 B. List on the Title Page, as authors, one or more persons or 6663 entities responsible for authorship of the modifications 6664 in the Modified Version, together with at least five of 6665 the principal authors of the Document (all of its 6666 principal authors, if it has less than five). 6667 C. State on the Title page the name of the publisher of the 6668 Modified Version, as the publisher. 6669 D. Preserve all the copyright notices of the Document. 6670 E. Add an appropriate copyright notice for your modifications 6671 adjacent to the other copyright notices. 6672 F. Include, immediately after the copyright notices, a 6673 license notice giving the public permission to use the 6674 Modified Version under the terms of this License, in the 6675 form shown in the Addendum below. 6676 G. Preserve in that license notice the full lists of 6677 Invariant Sections and required Cover Texts given in the 6678 Document's license notice. 6679 H. Include an unaltered copy of this License. 6680 I. Preserve the section entitled "History", and its title, 6681 and add to it an item stating at least the title, year, 6682 new authors, and publisher of the Modified Version as 6683 given on the Title Page. If there is no section entitled 6684 "History" in the Document, create one stating the title, 6685 year, authors, and publisher of the Document as given on 6686 its Title Page, then add an item describing the Modified 6687 Version as stated in the previous sentence. 6688 J. Preserve the network location, if any, given in the 6689 Document for public access to a Transparent copy of the 6690 Document, and likewise the network locations given in the 6691 Document for previous versions it was based on. These may 6692 be placed in the "History" section. You may omit a network 6693 location for a work that was published at least four years 6694 before the Document itself, or if the original publisher 6695 of the version it refers to gives permission. 6696 K. In any section entitled "Acknowledgements" or 6697 "Dedications", preserve the section's title, and preserve 6698 in the section all the substance and tone of each of the 6699 contributor acknowledgements and/or dedications given 6700 therein. 6701 L. Preserve all the Invariant Sections of the Document, 6702 unaltered in their text and in their titles. Section 6703 numbers or the equivalent are not considered part of the 6704 section titles. 6705 M. Delete any section entitled "Endorsements". Such a section 6706 may not be included in the Modified Version. 6707 N. Do not retitle any existing section as "Endorsements" or 6708 to conflict in title with any Invariant Section. 6709 6710 If the Modified Version includes new front-matter sections or 6711 appendices that qualify as Secondary Sections and contain no 6712 material copied from the Document, you may at your option 6713 designate some or all of these sections as invariant. To do 6714 this, add their titles to the list of Invariant Sections in 6715 the Modified Version's license notice. These titles must be 6716 distinct from any other section titles. 6717 6718 You may add a section entitled "Endorsements", provided it 6719 contains nothing but endorsements of your Modified Version by 6720 various parties--for example, statements of peer review or 6721 that the text has been approved by an organization as the 6722 authoritative definition of a standard. 6723 6724 You may add a passage of up to five words as a Front-Cover 6725 Text, and a passage of up to 25 words as a Back-Cover Text, to 6726 the end of the list of Cover Texts in the Modified Version. 6727 Only one passage of Front-Cover Text and one of Back-Cover 6728 Text may be added by (or through arrangements made by) any one 6729 entity. If the Document already includes a cover text for the 6730 same cover, previously added by you or by arrangement made by 6731 the same entity you are acting on behalf of, you may not add 6732 another; but you may replace the old one, on explicit 6733 permission from the previous publisher that added the old one. 6734 6735 The author(s) and publisher(s) of the Document do not by this 6736 License give permission to use their names for publicity for 6737 or to assert or imply endorsement of any Modified Version. 6738 _________________________________________________________ 6739 6740 B.6. COMBINING DOCUMENTS 6741 6742 You may combine the Document with other documents released 6743 under this License, under the terms defined in section 4 above 6744 for modified versions, provided that you include in the 6745 combination all of the Invariant Sections of all of the 6746 original documents, unmodified, and list them all as Invariant 6747 Sections of your combined work in its license notice. 6748 6749 The combined work need only contain one copy of this License, 6750 and multiple identical Invariant Sections may be replaced with 6751 a single copy. If there are multiple Invariant Sections with 6752 the same name but different contents, make the title of each 6753 such section unique by adding at the end of it, in 6754 parentheses, the name of the original author or publisher of 6755 that section if known, or else a unique number. Make the same 6756 adjustment to the section titles in the list of Invariant 6757 Sections in the license notice of the combined work. 6758 6759 In the combination, you must combine any sections entitled 6760 "History" in the various original documents, forming one 6761 section entitled "History"; likewise combine any sections 6762 entitled "Acknowledgements", and any sections entitled 6763 "Dedications". You must delete all sections entitled 6764 "Endorsements." 6765 _________________________________________________________ 6766 6767 B.7. COLLECTIONS OF DOCUMENTS 6768 6769 You may make a collection consisting of the Document and other 6770 documents released under this License, and replace the 6771 individual copies of this License in the various documents 6772 with a single copy that is included in the collection, 6773 provided that you follow the rules of this License for 6774 verbatim copying of each of the documents in all other 6775 respects. 6776 6777 You may extract a single document from such a collection, and 6778 distribute it individually under this License, provided you 6779 insert a copy of this License into the extracted document, and 6780 follow this License in all other respects regarding verbatim 6781 copying of that document. 6782 _________________________________________________________ 6783 6784 B.8. AGGREGATION WITH INDEPENDENT WORKS 6785 6786 A compilation of the Document or its derivatives with other 6787 separate and independent documents or works, in or on a volume 6788 of a storage or distribution medium, does not as a whole count 6789 as a Modified Version of the Document, provided no compilation 6790 copyright is claimed for the compilation. Such a compilation 6791 is called an "aggregate", and this License does not apply to 6792 the other self-contained works thus compiled with the 6793 Document, on account of their being thus compiled, if they are 6794 not themselves derivative works of the Document. 6795 6796 If the Cover Text requirement of section 3 is applicable to 6797 these copies of the Document, then if the Document is less 6798 than one quarter of the entire aggregate, the Document's Cover 6799 Texts may be placed on covers that surround only the Document 6800 within the aggregate. Otherwise they must appear on covers 6801 around the whole aggregate. 6802 _________________________________________________________ 6803 6804 B.9. TRANSLATION 6805 6806 Translation is considered a kind of modification, so you may 6807 distribute translations of the Document under the terms of 6808 section 4. Replacing Invariant Sections with translations 6809 requires special permission from their copyright holders, but 6810 you may include translations of some or all Invariant Sections 6811 in addition to the original versions of these Invariant 6812 Sections. You may include a translation of this License 6813 provided that you also include the original English version of 6814 this License. In case of a disagreement between the 6815 translation and the original English version of this License, 6816 the original English version will prevail. 6817 _________________________________________________________ 6818 6819 B.10. TERMINATION 6820 6821 You may not copy, modify, sublicense, or distribute the 6822 Document except as expressly provided for under this License. 6823 Any other attempt to copy, modify, sublicense or distribute 6824 the Document is void, and will automatically terminate your 6825 rights under this License. However, parties who have received 6826 copies, or rights, from you under this License will not have 6827 their licenses terminated so long as such parties remain in 6828 full compliance. 6829 _________________________________________________________ 6830 6831 B.11. FUTURE REVISIONS OF THIS LICENSE 6832 6833 The Free Software Foundation may publish new, revised versions 6834 of the GNU Free Documentation License from time to time. Such 6835 new versions will be similar in spirit to the present version, 6836 but may differ in detail to address new problems or concerns. 6837 See http://www.gnu.org/copyleft/. 6838 6839 Each version of the License is given a distinguishing version 6840 number. If the Document specifies that a particular numbered 6841 version of this License "or any later version" applies to it, 6842 you have the option of following the terms and conditions 6843 either of that specified version or of any later version that 6844 has been published (not as a draft) by the Free Software 6845 Foundation. If the Document does not specify a version number 6846 of this License, you may choose any version ever published 6847 (not as a draft) by the Free Software Foundation. 6848 _________________________________________________________ 6849 6850 B.12. How to use this License for your documents 6851 6852 To use this License in a document you have written, include a 6853 copy of the License in the document and put the following 6854 copyright and license notices just after the title page: 6855 6856 Copyright (c) YEAR YOUR NAME. Permission is granted to 6857 copy, distribute and/or modify this document under the 6858 terms of the GNU Free Documentation License, Version 1.1 or 6859 any later version published by the Free Software 6860 Foundation; with the Invariant Sections being LIST THEIR 6861 TITLES, with the Front-Cover Texts being LIST, and with the 6862 Back-Cover Texts being LIST. A copy of the license is 6863 included in the section entitled "GNU Free Documentation 6864 License". 6865 6866 If you have no Invariant Sections, write "with no Invariant 6867 Sections" instead of saying which ones are invariant. If you 6868 have no Front-Cover Texts, write "no Front-Cover Texts" 6869 instead of "Front-Cover Texts being LIST"; likewise for 6870 Back-Cover Texts. 6871 6872 If your document contains nontrivial examples of program code, 6873 we recommend releasing these examples in parallel under your 6874 choice of free software license, such as the GNU General 6875 Public License, to permit their use in free software.