IBM Software Group AIM Core and Enterprise Solutions IBM z/Transaction Processing Facility Enterprise Edition 1.1.0 Any references to future plans are for planning purposes only. IBM reserves the right to change those plans at its discretion. Any reliance on such a disclosure is solely at your own risk. IBM makes no commitment to provide additional information in the future. Copyright IBM Corporation 2004 Colette A. Manoni October 2004 GNU Compiler Collection (GCC) TPF Users Group Grapevine, Texas
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
IBM Software Group
AIM Core and Enterprise Solutions IBM z/Transaction Processing Facility Enterprise Edition 1.1.0
Any references to future plans are for planning purposes only. IBM reserves the right to change those plans at its discretion. Any reliance on such a disclosure is solely at your own risk. IBM makes no commitment to provide additional information in the future.
Copyright IBM Corporation 2004
Colette A. ManoniOctober 2004
GNU Compiler Collection (GCC)
TPF Users GroupGrapevine, Texas
IBM Software Group
AIM Core and Enterprise Solutions | IBM z/Transaction Processing Facility Enterprise Edition 1.1.0
Copyright IBM Corporation 2004
What is the GNU Compiler Collection?
A set of programming language compilers produced by the GNU Project
Started with support for C Language, and added the following:AdaC++FortranJavaTM
Objective C
TPF only supports C/C++
IBM Software Group
AIM Core and Enterprise Solutions | IBM z/Transaction Processing Facility Enterprise Edition 1.1.0
Copyright IBM Corporation 2004
Why use GCC?
Widely availableSupports large number of architectures and operating systems
Open community Large number of mailing lists Dedicated core of developers
Code is portable
Large number of tools available
Can be used as a cross compilerCompiler does not need to run on target platform
IBM Software Group
AIM Core and Enterprise Solutions | IBM z/Transaction Processing Facility Enterprise Edition 1.1.0
Copyright IBM Corporation 2004
GCC for z/TPF
TPF is a supported platform
TPF platform code under S/390® tree
GCC built as cross compiler for z/TPFMinimum stack frame size is larger
Needed to support integration of C/C++ with TPF Assembler
AIM Core and Enterprise Solutions | IBM z/Transaction Processing Facility Enterprise Edition 1.1.0
Copyright IBM Corporation 2004
Code Page Support
GCC by default generates character literals in ascii
Long standing requirement to support additional code pages
TPF organization helped to drive this support due to the need for IBM1047
Implementation is based on iconv() Any supported code page can be specified example: -fexec-charset=IBM1047
General option is available to all platforms
IBM Software Group
AIM Core and Enterprise Solutions | IBM z/Transaction Processing Facility Enterprise Edition 1.1.0
Copyright IBM Corporation 2004
The -W option : Warning Message Generation
Some examples:
-WuninitializedAn automatic variable is used without first being initialized
-WpaddedPadding is included in a structure, either to align an element of the structure or to align the whole structure.
-Wreturn-typeA function is defined with a return-type that defaults to int or a return statement with no return-value in a function whose return-type is not void.
Function comparable to LINT tools
IBM Software Group
AIM Core and Enterprise Solutions | IBM z/Transaction Processing Facility Enterprise Edition 1.1.0
Copyright IBM Corporation 2004
Other Compile Options
Creating Shared Objects
Option needed is -fpic or -fPICProgram produced is relocatableTwo flavors based on size of program
Heavy use of relative instructions
Producing Debug Information
Option needed is -gdwarf-2Information needed for the following functions/capabilities:
source statements in the listingfunction information for zdmapparameter information for stack and trace formattingsymbol information for debugger
IBM Software Group
AIM Core and Enterprise Solutions | IBM z/Transaction Processing Facility Enterprise Edition 1.1.0
Copyright IBM Corporation 2004
GCC Extenstion: Attributes
Keyword __attribute__ used to alter default characteristicsFunctions
Attribute mechanism used to create 32-bit pointer mode defines the size of the variableSI is single integer (4 bytes) void * ptr __attribute__ ((mode (SI)))
prt is allocated and accessed as 4-bytessize_t size_t32 __attribute__ ((mode (SI)))
size_t32 is allocated and accessed as 4-bytes
IBM Software Group
AIM Core and Enterprise Solutions | IBM z/Transaction Processing Facility Enterprise Edition 1.1.0
AIM Core and Enterprise Solutions | IBM z/Transaction Processing Facility Enterprise Edition 1.1.0
Copyright IBM Corporation 2004
Function Call Linkage
C/C++ parameter formatSame for both 'C' and 'C++'R2 - R6 used for passing the first 5 parameters.
Additional parameters are stored in the calling functions stack frameSee ABI document for more details
TPF assembler calling C New macros provided: CPROC and CALLCDetails covered in single source presentation
Interface for calling BAL segments from C functionsTPF_regsBehaves the same as today - default is 31-bit modeNew macros provided for calling 64-bit assembler
IBM Software Group
AIM Core and Enterprise Solutions | IBM z/Transaction Processing Facility Enterprise Edition 1.1.0
Copyright IBM Corporation 2004
Register Conventionsr0, r1 General purpose Volatile¹
r2 Parameter passing and return values Volatile
r3, r4, r5 Parameter passing Volatile
r6 Parameter passing Saved²
r7 - r11 Local variables Saved
r12 Local variable, commonly used as GOT pointer Saved
r13 Local variable, commonly used as Literal Pool pointer
Saved
r14 Return address Volatile
r15 Stack pointer Saved
f0, f2, f4, f6 Parameter passing and return values Volatile
f1, f3, f5, f7 General purpose Volatile
f8 –f15 General purpose Saved
Access registers 0,1 Reserved for system use Volatile
Access registers 2-15 General purpose Volatile
¹Volatile: These registers are not preserved across function calls.²Saved: These registers belong to the calling function. A called function shall save these registers' values before it changes them, restoring their values before it returns.
AIM Core and Enterprise Solutions | IBM z/Transaction Processing Facility Enterprise Edition 1.1.0
Copyright IBM Corporation 2004
Sample Output - nm
nm -S QZZ2.so
0000000000000808 0000000000000064 T QZZ20000000000003000 A _DYNAMIC0000000000002000 A _GLOBAL_OFFSET_TABLE_0000123a234535c8 a __TPF_TOD0000000000003280 A __bss_start0000000000003280 A _edata0000000000003280 A _end U average U find_average00000000000007a0 0000000000000066 T get_average U printf
IBM Software Group
AIM Core and Enterprise Solutions | IBM z/Transaction Processing Facility Enterprise Edition 1.1.0
AIM Core and Enterprise Solutions | IBM z/Transaction Processing Facility Enterprise Edition 1.1.0
Copyright IBM Corporation 2004
readelf Output
Symbol table '.dynsym' contains 35 entries: Num: Value Size Type Bind Vis Ndx Name 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND 1: 00000000000000e8 0 SECTION LOCAL DEFAULT 1 ... 25: 0000000000000000 222 FUNC GLOBAL DEFAULT UND printf 26: 0000000000003000 0 OBJECT GLOBAL DEFAULT ABS _DYNAMIC 27: 0000000000000808 100 FUNC GLOBAL DEFAULT 8 QZZ2 28: 0000000000000000 4 OBJECT GLOBAL DEFAULT UND average 29: 0000000000000000 70 FUNC GLOBAL DEFAULT UND find_average 30: 0000000000003280 0 NOTYPE GLOBAL DEFAULT ABS __bss_start 31: 00000000000007a0 102 FUNC GLOBAL DEFAULT 8 get_average ...
IBM Software Group
AIM Core and Enterprise Solutions | IBM z/Transaction Processing Facility Enterprise Edition 1.1.0
Copyright IBM Corporation 2004
Sample Output - size
size QZZ2.so
text data bss dec hex filename 1950 808 0 2758 ac6 QZZ2.so
IBM Software Group
AIM Core and Enterprise Solutions | IBM z/Transaction Processing Facility Enterprise Edition 1.1.0
Copyright IBM Corporation 2004
References
http://www.gnu.orgInformation about FSFLinks to open source packages
http://gcc.gnu.orgManualsMailing Lists
http://www.google.comSearch for more information !
IBM Software Group
AIM Core and Enterprise Solutions | IBM z/Transaction Processing Facility Enterprise Edition 1.1.0
Copyright IBM Corporation 2004
Questions?
IBM Software Group
AIM Core and Enterprise Solutions | IBM z/Transaction Processing Facility Enterprise Edition 1.1.0
Copyright IBM Corporation 2004
Java and all Java-based trademarks are trademarks of Sun Microsystems, Inc. in the United States, other countries, or both.
The following are registered trademarks of IBM in the United States; all others are trademarks or common law marks of IBM in the United States.
S/390zSeries
Other company, product and service names may be trademarks or service marks of others