__attribute__((__transparent_union__))
attribute.
-fident
/-fno-indent
options to control generation
of .ident strings on platforms that support that.
-fgcc-version=x.y.z
option to specify desired
GCC compatility (for Linux and z/TPF environments.)
-fsyntax-only
/-fno-syntax-only
options to simply
parse the source and not generate the program.
__has_builtin
in the C preprocessor.
__builtin_mempcpy()
and __mempcpy
.
-D
and -U
options are now processed in the order
they appear on the command line.
__builtin_thread_pointer()
builtin for environments
that support thread-local-storage (z/TPF and z/Linux).
-fpreinclude=filename
options on the
command line.
__attribute__((__deprecated__))
.
__attribute__((__unavailable))
.
__attribute__((aligned))
attribute without any
specification now indicates the maximum possible alignment.
_Decimal128
changed to match GCC's
for DCC, z/TPF and Linux environments. For LE environments
the alignment will match IBM's.
-fc23
), a type-mismatch error is now
generated for a function definition with no prototype
when a previous prototype is in scope, e.g:
void f(int); void f() { }
now generates a type mismatch error for the declaration.
-Wlabel-unused
option and warning.
-Wunused-function
option and warning that diagnoses
unused defined static functions in a compilation.
-Wunused-parameter
and -Wunused-variable
options,
and warnings.
-trigraphs
/-no-trigraphs
option to enable/disable
C trigraphs. C23 removes trigraphs from the language,
-trigraphs
specified after -fc23
can be used to
re-enable them if needed.
typeof()
and typeof_unqual()
.
-fshort-enums
option. -fshort-enums
is
equivalent to -fenum=SMALL
and -fno-short-enums
is
equivalent to -fenum=INT
.
.cfi_xxx
instructions the GNU gas assembler. -fno-dwarf2-cfi-asm
selects the old manually-generated tables.
__builtin_popcount()
function takes
advantage of the Miscellaneous-Instruction-Extentions
Facility 3 enhancements to the POPCNT
instruction to reduce
the generated code
__builtin_abort()
and
__builtin_trap()
. For the z/Arch targets, __builtin_trap()
generates 2 bytes of 0x0000
because the Principles of
Operation say:
Operation code 00 hex will never be assigned to an instruction implemented in the CPU
Thus, when execution reaches those two bytes, the program will receive an INVALID OPERATION exception.
-MM
option which is similar to -M
except that dependencies involving system include
files are not included in the output.
__attribute__((__packed__))
attribute is now
recognized and applied to individual structure field
members for Linux(z/TPF) and DCC modes as well as
IBM compatibility mode. It should have always applied
in Linux mode mode, but this represents a change in
the ABI for DCC mode. For example, this structure:
struct packed_chars {
char a:4;
char b:8 __attribute__ ((packed));
char c:4;
};
only uses 2 bytes where before it would have been 3.
-Wswitch
and -Wswitch-enum
. When the
controlling expression of a switch statement is an
enumerated type, the compiler will verify that all
values of the enumeration appear as case labels.
-Wswitch-outside-range
/-Wno-switch-outside-range
which checks that a case label's value is in the range
of the controlling switch expression.
CC
in the register allocator for improved code.
_BitInt(x)
bit-precise integers and
decimal constants.
__stpcpy()
and __builtin_stpcpy()
compiler builtins.
-fwrapv
indicates the compiler
should assume signed integer overflow "wraps-around" and
defeats such optimization. -fwrapv
is the default
but that may change in the future.
-fwrapv-pointer
and -fno-wrapv-pointer
options to
control this.
-fc23
is specified, _Static_assert
's string 's' is
optional.
-fhosted
/-fno-hosted
options that controls the
definition of __STDC_HOSTED__
. Also - define __STDC_HOSTED__
if c99 or c11 is enabled; but only then. -ffreestanding
is
a synonym for -fno-hosted
.
ISO C90 forbids mixed declarations and code
which is enabled by -fc90
and disabled by -fc99
or -fc11
.
This can be helpful if writing code that needs to also be
compiled with older compilers.
__volatile
as a synonym for volatile.
FPR8
-FPR15
if used in a function. There
is a new -mafp_volatile
option also causes any function call
to indicate the registers are altered and thus saved/restored
in the calling function.
strcmp()
function was
improved to 'swap' the comparison addresses for CLC
and
CLST
instructions and take advantage of IPM
+ shifts to
produce a -1, 0, +1 result.
memcmp()
function was
improved to do no branches for constant lengths when
possible. Also, the code was dramatically improved
over the previous byte-by-byte comparison code to do
the comparison in 256-byte chunks, then a final CLC
for the remainder.
__FUNCTION__
and support
GCC's __PRETTY_FUNCTION__
pre-defined identifiers.
-@
processing improved on MVS to support quoted strings.
-fno-dwarf2-cfi-asm
to allow the use of older
GAS assemblers.
-fasm-listing
, -fno-asm-listing
to the
tpf-dcc
and tpf-dcxx
scripts to control inclusion of the GAS assembly
listings.
pthread_main_np()
function added to the library.
mempcpy()
function.
void *__initial_parm_block_addr(void)
function
that returns the address of the incoming parm block
for DCC MVS 32-bit and 64-bit environments.
aio_cancel(2)
, aio_error(2)
, aio_read(2)
, aio_return(2)
,
aio_suspend(2)
, aio_write(2)
, lio_listio(2)
.
clock_gettime()
supports CLOCK_MONOTONIC
as well
as CLOCK_REALTIME
.
sigqueue()
added to the runtime library.
pread()
and pwrite()
functions for HFS files.
__ibmfd
function that returns the underlying
IBM HFS or SOCKET file descriptor for a Dignus file descriptor.
strfmon()
function and monetary.h
header (POSIX) was added.
__smf_record()
function for writing SMF records
was added.
__MAP_64
flag was added to mmap()
.
__MAP_MEGA
flag was added to mmap()
.
write()
will
assign ENOSPC
to errno
instead of EIO
.
"abend=abend"
and "abend=recover"
attributes for BSAM
file opens. If "abend=abend"
is specified, then an ignorable
I/O ABEND will become a "real" ABEND and need to be handled
via normal ABEND methods (e.g. a signal handler for SIGABND
.)
If "abend=recover" is specified, the library will "ignore"
ignorable I/O ABENDs and report the error to the caller and
set errno
to EIO
or other appropriate value. The default
is "abend=recover"
.
stpcpy()
and stpncpy()
functions added to the library.
TRAP(ON)
/TRAP(OFF)
now take
precendent over any environment decision about establishing
an ESTAE
, so that the ESTAE
can just be completely turned off.
SI_USER
value in
the siginfo_t
passed to the signal handler.
pathconf()
and fpathconf()
functions now support
the newer _PC_ACL
and _PC_ACL_ENTRIES_MAX
options
from IBM.
stdalign.h
header.
max_align_t
type in stddef.h
.
strnlen()
and wcsnlen()
.
round()
, roundf()
and roundl()
functions could
raise the INEXACT
flag. The ANSI C99 and C11 standards
allowed for that behavior, while the C14 standard does
not. This function was changed to no longer raise the
INEXACT
flag in any situation.
MODE
, ALIAS
, and CHANGE
command cards.
-esd
/-xsd
/-goff
options to control
PLINK output format.
finish
command for running and completing the current function.
__atomic
* builtin functions.
__builtin_fabsd32()
, __builtin_fabsd64()
and __builtin_fabsd128()
.
_Decimal
N values.
__builtin_unreachable()
function.
_Noreturn
keyword supported when -fc11
enabled.
-march=z13
flag to enable instructions from the 13th
edition of the Principles of Operation.
__builtin_swap16()
, __builtin_swap32()
and __builtin_swap64()
. These will use hardware instructions
if the -march level allows it.
-march=z9
) to use instructions to convert from IEEE floating-pt
to unsigned integers.
-mmisc-instructions-extensions-facility-2
is allowed,
the compiler will now take advantage of the AGH
/SGH
and MGH
instructions for operations involving 64-bit signed values and 16-bit
signed values in memory
-mfp-extensions-facility
is enabled (-march=z9
or greater.)
__builtin_frame_address()
and
__builtin_return_address()
builtin functions.
-mtpf-skip-trace
option which alters
z/TPF trace branch targets in the function prologue/expilogue.
__builtin_isdigit()
function.
-march
option, conversions of 1_Decimal
N
values to floating point will now use hardware instructions.
__SIZE_TYPE__
and __PTRDIFF_TYPE__
.
_Decimal
N types in __builtin_classify_type()
(used by the va_arg()
expansion.)
_Decimal
N/_Float
N values to int
when applying default promotions. Also, (_Float32
) is not promoted
to (double) as (float) is as suggested by the standard.
#
" directives even inside the arguments to a macro.
__builtin_sqrtf()
, __builtin_sqrt()
and __builtin_sqrtl()
builtins from GCC, for both IEEE and HFP data
-bonly
links.
-except
on long names as well as short ones.
EXEC
CICS ASSIGN
, EXTRACT TCPIP
, EXTRACT WEB
, and WEB PARSE
. And add
STRINGZONE
to EXEC CICS FORMATTIME
.
CVDA
(DFHVALUE
) table to CICS TS V5.5.
EXEC CICS INQUIRE SYSTEM
as of CICS TS V5R4.
<float.h>
now supports _FP_MODE_VARIABLE
for the definitions of the various floating-pt constants/sizes, etc...
alarm()
, setitimer()
and getitimer()
functions.
OBTAIN
for the osddinfo()
function.
usleep(3)
function (based on the recently
added nanosleep(2)
.)
call_once()
, cnd_broadcast()
, cnd_destroy()
,
cnd_init()
, cnd_signal()
, cnd_timedwait()
, cnd_wait()
, mtx_destroy()
,
mtx_init()
, mtx_lock()
, mtx_timedlock()
, mtx_trylock()
, mtx_unlock()
,
thrd_create()
, thrd_current()
, thrd_detach()
, thrd_equal()
,
thrd_exit()
, thrd_join()
, thrd_sleep()
, thrd_yield()
, tss_create()
,
tss_delete()
, tss_get()
,tss_set()
.
pthread_atfork()
, pthread_cleanup_pop()
, pthread_cleanup_push()
,
pthread_condattr_destroy()
, pthread_condattr_init()
,
pthread_cond_broadcast()
, pthread_cond_destroy()
, pthread_cond_init()
,
pthread_cond_signal()
, pthread_cond_timedwait()
, pthread_cond_wait()
,
pthread_create()
, pthread_detach()
, pthread_equal()
, pthread_exit()
,
pthread_getspecific()
, pthread_join()
, pthread_key_delete()
,
pthread_kill()
, pthread_mutexattr_destroy()
,
pthread_mutexattr_getprioceiling()
, pthread_mutexattr_getprotocol()
,
pthread_mutexattr_gettype()
, pthread_mutexattr_init()
,
pthread_mutexattr_setprioceiling()
, pthread_mutexattr_setprotocol()
,
pthread_mutexattr_settype()
, pthread_mutex_destroy()
,
pthread_mutex_init()
, pthread_mutex_lock()
, pthread_mutex_trylock()
,
pthread_mutex_unlock()
, pthread_once()
, pthread_rwlockattr_destroy()
,
pthread_rwlockattr_getpshared()
, pthread_rwlockattr_init()
,
pthread_rwlockattr_setpshared()
, pthread_rwlock_destroy()
,
pthread_rwlock_init()
, pthread_rwlock_rdlock()
,
pthread_rwlock_unlock()
, pthread_rwlock_wrlock()
, pthread_self()
,
pthread_setcancelstate()
, pthread_setcanceltype()
,
pthread_setspecific()
, pthread_testcancel()
as well as the pthread barrier functions: pthread_barrier_destroy()
,
pthread_barrier_init()
and pthread_barrier_wait()
.
and the non-POSIX additions pthread_attr_get_weight_np()
,
pthread_attr_set_weight_np()
, pthread_attr_get_synctype_np()
,
pthread_attr_set_synctype_np()
and pthread_set_limit_np()
.
nanosleep()
function (depends on BPX.)
sem_destroy()
, sem_getvalue()
, sem_init()
,
sem_open()
, sem_post()
, sem_timedwait()
, sem_trywait()
,
sem_unlink()
and sem_wait()
.
sched_yield()
added to the C library.
strchrnul()
added to the C library.
unsetenv()
now returns (int
) to match the POSIX specification.
clock_gettime()
, clock_settime()
and
clock_getres()
functions. Mainframe hardware only supports
the REALTIME
clock.
getdelim()
and getline()
POSIX functions.
wordexp()
and wordfree()
POSIX functions.
__abendcode()
and __rsncode()
functions to
be able to determine these values in a SIGABND
signal handler.
posix_spawn()
and the associated functions
to the C library.
vfork()
to the C library.
__getprv(2)
(@@GETPRV
) function to return the current PRV
address.
sigsuspend(2)
, sigwait(2)
and pause(3)
signal-related
functions for POSIX signals.
O_CLOEXEC
open(2)
flag added.
pipe2()
function added.
__runopt
variable that disables parsing parameter strings
for runtime options. If the variable is defined, and the value
is 0, then don't do runtime options processing in TSO or BATCH.
lrecl=x
open(2)
attributes; also for a variable-spanned
file defined with LRECL=X
, the osddinfo()
function returns a
special LRECL_X
value (32-bit MAXINT
), the lrecl
field in
the return __fldata_t
structure from the fldata()
function
also uses that value.
LRECL
from the DCB
for a Variable Spanned
file is X
(it has the high-order bit set) then we return a
__maxreclen
of 0x7fffffff
in the fldata_t
structure returned
by the fldata()
function.
LRECL
to be the maximum
limit of the record length. This doesn't make too much sense since
there could be many segment descriptors along for a spanned
record; but it fits with the non-spanned Variable record approach
and since IBM does it we now do as well. This does not occur with
LRECL=X
.
RECFM
/LRECL
and BLKSIZE
, we now only provide an an inferred setting
for RECFM
if the DCB doesn't have one, the user
didn't give us one, and the file is an output file. If after
that, the DCBRECFM
is still
unset, then we end the open exit processing and allow the OPEN
to proceed (likely getting an ABEND
and driving the ABEND EXIT
because the DCBRECFM
is unset.) This aides in failing the open()
of a FILEDEF
for a non-existing file on CMS. (If the DCB
is
complete, CMS will allow the open for a non-existing file, which should fail.)
__reglen()
and __regcpy()
to the C
library for copying s compiled regular expression.
TRAP(ON)
even when it wasn't requested
__cs1()
/__cds1()
/__csg()
/__cdsg()
builtins in LE mode.
__float128
type, which is always 128-bits long no matter the setting of long_double_is_distinct.
_Float32
/_Float32x
/_Float64
/_Float64x
/_Float128
IEEE interchange and extended floating point types.
__attribute__((used))
on a static function definition to indicate the compiler should not elide it, even if it appears unused. This is helpful for referencing the function from in-line assembly source.
alloca()
is now defined to be __builtin_alloca()
(as Linux and, essentially, LE environments do.) This allows the compiler to be aware when alloca() has been used.
LRECL=133,RECFM=FBA
on MVS to provide nice defaults if none are provided in JCL or allocated output file.
__builtin_tbegin
, __builtin_tbegin_nofloat
, __builtin_tbegin_retry
, __builtin_tbegin_retry_nofloat
, __builtin_tend
, __builtin_tabort
, __builtin_tx_assist
, __builtin_tx_nesting_depth
, __builtin_non_tx_store
).
__attribute__((gnu_inline))
, which force the "inline
" keyword to be treated like the pre-C99 gcc extension instead of the standard C99 meaning. This is compatible with how gcc treats inline since gcc version 4.3.
__attribute__((packed))
on enum types, which uses the smallest container size that fits all of the enum values.
__callback
function pointers so that XPLINK code can call non-XPLINK function pointers passed in from other DLLs.
@CODE
section.) This allows for duplicate non-rent definitions to be elided at link time.
*
' in column one) in PLINK, the entire card is ignored and can't be continued.
ALTER MASK
, ALTER PERMISSION
, ALTER TRIGGER
, ALTER TRUSTED CONTEXT
, CREATE MASK
, CREATE PERMISSION
, CREATE TRUSTED CONTEXT
, CREATE TYPE
, EXCHANGE
, MERGE INTO
.
CATALOG
, as that causes the generation of IEF287I for input files. Only set the normal disposition to CATALOG
if we are creating a new file for output, and the open()
hasn't otherwise specified a disposition in the attributes.
sigset_t
manipulation)
@@PDIV
library routine to generate a decimal divide exception if the divisor is 0.
sleep()
which will invoke the POSIX sleep function
in the USS environment.
makecontext()
/swapcontext()
/getcontext()
/setcontext()
functions (these functions make use of the EXTRACT PSW
and RESUME PROGRAM
instructions, and thus require hardware that provides those. All z/Arch machines do, as well as later ESA/390 machines.)
__pfsctl()
function to invoke the BPX BPX1PCT (phsyical file system control) interface.
setjmp()
/longjmp()
functions where changed to match the sigaction handling that POSIX specifies (to provide some interoperability with the new sigsetjmp()
/siglongjmp()
functions.)
sigaction()
, sigprocmask()
and other signal-related functions.
__bpxsig
is set) the runtime establishes support for USS signals and can receive POSIX signals sent from other processes by the kill() function (or, other methods, e.g. SIGINT
.)
ESTAE
exit is used to catch SIGSEGV
, SIGILL
, SIGFPE
and SIGABND
events and invoke a signal handler if one is defined.
TRAP(OFF)
is specified, no ESTAE
exit is established (via #pragma prolkey
on the main()
function.) The default is TRAP(ON)
.
main()
, DCALL environments provide no signal catching (for either the POSIX or non-posix signals.)
-march=z11
which
represents the 11th revision of the z/Architecture
Priniciples of Operation.
__func__
is now supported in all runtime environments.
__builtin_fpclassify()
for HFP and BFP data.
This is the 'generic' version; __builtin_bfp_fpclassify()
accepts BFP data, and __builtin_hfp_fpclassify()
accepts
HFP data.
__builtin_frexpf
, __builtin_frexp
, __builtin_frexpl
,
__builtin_signbitf
, __builtin_signbit
, __builtin_signbitl
,
__builtin_isnanf
, __builtin_isnan
, __builtin_isnanl
,
__builtin_isinff
, __builtin_isinf
, __builtin_isinfl
,
__builtin_isfinitef
, __builtin_isfinite
, __builtin_isfinitel
,
__builtin_isnormalf
, __builtin_isnormal
, __builtin_isnormall
These are 'generic' versions that depend on the
current setting of the -fieee
option. There are also
BFP or HFP specific versions of these (with _bfp
or _hfp
qualifications after the __builtin
portion of the name.)
-fc99
), there is
a new -fc90
option to indicate that C90 mode be used.
__builtin_return_address()
builtin in all
environments.
__builtin_clz()
, __builtin_clzl()
, __builtin_clzll()
,
__builtin_ctz()
, __builtin_ctzl()
, __builtin_ctzll()
,
__builtin_ffs()
, __builtin_ffsl()
, __builtin_ffsll()
If extended immediate instructions are allowed, these
will use the FLOGR
instruction; otherwise a binary
search is generated.
-fc99
or -fc11
is
enabled.
U
/u
character literal prefixes and u8
/U
/u
string literal prefixes if -fc11
is enabled. If these
are specified the constant is comprised of UTF (ASCII)
characters regardless of the -fasciiout
option.
Compile-time concatenation of string literals does not
translate the adjacent strings.
-fc11
option to indicate C11 standard compatibilty.
__STDC_ISO_10646__
pre-defined macro will be
defined by the compiler if wchar_t
is larger than 16 bits,
except in Linux environments where that definition is
provided by the runtime library header files.
-febcdic=
__LP64__
symbol
in all environments if -mlp64
is enabled.
__NO_INLINE__
macro if inlining disabled.
__OPTIMIZE__
and __OPTIMIZE_SIZE__
macros.
__builtin_memchr()
is 0, then
the result is definitionally NULL
.
FD_FREEONCLOSE
fcntl()
flag for BSAM I/O. If
FD_FREEONCLOSE
is set, then the FREE
option will be
added to the BSAM CLOSE
step.
getaddrinfo()
and getnameinfo()
now invoke the IBM (BPX)
routines according to the host: line setting in nsswitch().
(time_t)
changed to a 64-bit value for the 32-bit;
this may affect structure alignment/compatibility with
existing data. This is in anticipation of the 2038
roll-over date for a 32-bit time_t
. Note that (time_t)
is used in a (struct timeval)
, which is also used
in the select()
function.
dynalloc()
and dynfree()
functions for z/OS
dynamic allocation support.
--
" as a comment-to-end-of-line within
an EXEC SQL statement.
_
') in more DB2 identifiers;
such as the name of an EXEC SQL CALL
function.
SQL TYPE IS XML
and BLOB_FILE
/ CLOB_FILE
/ DBCLOB_FILE
.
-fccsid=x
to set the default CCSID.
EXEC SQL TRUNCATE
(from DB2 V9).
-ds0xl
option, which causes D2S to treat
"DS 0XLn
" as equivalent to "EQU n
", for compatibility with
some sources that used that idiom.
__attribute__((visibility("hidden"))
for Systems/C
shared objects.
__attribute__((always_inline))
on functions to bypass
compiler heuristics when determining if a function is eligible
for inlining.
System Include
" specified
in the license key file.
-Spath
option that is similar to IBM's SEARCH
option for searching for included files.
-fsave_dsa_over_call
/-fno_save_dsa_over_call
option
to control saving/restoring bytes of the DSA over linkage-OS
or linkage-ASM function calls.
__builtin
functions that have constant operands.
__bit_offsetof()
and __bit_sizeof()
operations similarly
to offsetof()
and sizeof()
but returning the values in bits.
__int8
/__int16
/__int32
/__int64
in all environments.
__attribute__((noreturn))
and provide warnings
if a return statement is encountered.
-nodiginc
option that indicates the system include
directory specified in the license file should be ignored.
-M=fn
option to specify an optional file name for dependency
information. New -fdep[=fn]
option to generate the dependency
information during the normal compilation.
__grande
and __regpair
type modifiers for (long long)
data. __grande
indicates the (long long) value should be kept
in a 64-bit register instead of two 32-bit registers. Also added
new -fllgrande
option that indicates __grande
should be
the default for (long long) data types.
-fpreproc=filename
option that writes preprocessor output to
a file without halding the compilation.
-MT
and -MF
options compatibly with GCC. -MT filename
provides the target name to use in dependency information.
-MF
names the output (equivalent to '=filename' for -fdep
and -M
.)
__asm__
or gcc-style asm("")
appears in a function,
generate an LTORG
in the 4K region in which it appears so that the
in-line ASM can reference ASM literals.
BASER=int
specification in
a #pragma prolkey()
and use that given integer value
as the code base register for the specific function. This allows the
programmer to change the code-base for individual functions.
unsigned long long
(64-bit) bitfields in 32-bit
compilations.
_Ieee
and _Hexadec
qualifiers for floating-point types
that indicate the value is either using BFP or HFP format. Values
in the "alien" format are converted to the default (as specified
by the -fieee
option) for operations. E.g.
double _Ieee b1; double _Hexadec h1;
h1 = b1 + 10;
If the -fieee
option is off, the addition is accomplished
in HFP format, otherwise it is accomplished in BFP format
and the result converted to HFP for the assignment.
-fhfpfloatpromote
option indicating if HFP
(float) values should be promoted. For LE these are promoted to
(double) when passed directly in parm blocks. For Linux and Systems/C
mode, these are not promoted (to be compatible with IEEE
values.) The -fnohfpfloatpromote
option will disable the
promotion, -fhfpfloatpromote
enables it. Previous compiler
versions did the promotion in Systems/C mode but this was changed.
_Generic
generic-selection.
-fatid
option that allows '@' characters in C identifiers
(not the first character.)
__attribute__((visibility("hidden"))
for Systems/C
shared objects.
BIGNUM
(long long).
BRAS
instead of B
)
that's used in DB2 V10.
-fdb2ver=v8
and -fdb2ver=v10
, which make
DB2PPC match the IBM preprocessor output at V8 and V10,
respectively. The changes are largely aesthetic -- trigraphs and
white space.
__bpxso = 0
at global
(extern) scope.
_O_BINARY
and O_TEXT
read performance
from FIXED (BLOCKED) files.
kopen()
for processing LDS files without SHAREOPTIONS(1,3)
on the allocation.
RECFM=U
reading and writing for BINARY and TEXT
files with and without _O_RECIO
.
S
) specification on recfm=
option in
open()
for FIXED (F
) record-length files and mark the DCB
accordingly.
TCPIP.TCPIP.DATA
file
and related files.
__traceback
output, so you can see which
call point is active.
poll()
function (emulated based on select()
)
RLSE
and NORLSE
attributes in open()
processing
indicating any unused space after a close is to be released
or not. RLSE
is the new default.
__svc99
function to provide interface to DYNALLOC
.
_Decimal(n,p)
multiply.
-fsigned_char
/-funsigned_char
options, indicating
the default "signedness" of the (char)
type.
-M
option output was changed to be consistent with among
all the Dignus tools.
EDCPRLK
pre-linker.
#pragma
anontstruct if -xanon
is specified.
-style=nestorg
that is similar to -style=next
,
but with a simpler treatment for ORG
statements.
-xcom
/-com=single
/-com=con
/-com=all
to control generation
of comments taken from ASM source.
@@SARNTI
(stand alone re-entrant initialization) in 64-bit environments.
-march=z
option was extended to become
-march=zN
,
where N indicates the revision number of the z/Architecture
Principles of Operation.
-mhfp-mult-add
, -mgeneral-instructions-extension
,
-mimmediate-extension
options to control the use of the
z/Architecture instructions available with those hardware
extensions.
__userid()
function that returns the NUL
-terminated
usedr id value (or NULL
if it can't be found)
_Decimal32
, _Decimal64
and
_Decimal128
.
NIHH
/NIHL
/NILH
/NILL
and OIHH
/
OIHL
/OILH
/OILL
when z/Architecture instructions are allowed.
#pragma linkage(OS)
implies __local
for function pointers.#pragma prolkey
/epilkey
now imply that the function
cannot be inlined.#pragma variable(
name, RENT)
and #pragma variable(
name, NORENT)
memset()
will now use up to 7 XC instructions when
a constant length is given and the value to store is 0x00.__COUNTER__
predefined macro extension.strlen()
.strcat()
/memchr()
will use string instructions if
they are allowed.memcpy()
with a constant length was
improved to use a simple MVC loop with only one EXecuted MVC
if needed, or the MVCLE instruction if allowed._Decimal()
values to (long long)
.memcpy()
is a (non-constant)
unsigned character, the compiler will generate a single EXecuted
MVC instruction as the length cannot be longer than 256.__local__
syntax for declaring labels local
to a scope.__attribute__
syntax for decorating types,
variables and functions with various attributes. defined()
test appearing in replacement text on #if
lines.0b
(binary) constant extension.#define
values in -E output.__asm__("
string")
syntax applied to externally visible
variables and functions; to basically be the same as #pragma map
.#pragma pack()
facility for providing IBM LE-style, Systems/C-style
or GCC-style structure member packing. #pragma export
and _Export
now also apply to ELF visibility flags
(to support #pragma export
in z/TPF.)\a
(alert) escape sequence in string constants.A'
, E'
, A"
and E"
as valid tokens in the C preprocessor.#pragma options(inline)
/#pragma options(noinline)
.EXEC SQL INCLUDE
to provide search command line options.#define
name_length
output to represent the length
attribute of EQU symbols when -equ=def is specified.ORDER
card to place specific CSECTs at the
beginning of the output.ddnfind()
now supported in 64-bit environmentsosddinfo()
function to return information about a DD name.frexpf()
, frexpl()
, ldexpf()
and ldexpl()
.<netinet/tcp.h>
kopen()
, ksearch()
,
kretrv()
, kgetpos()
, ksetpos()
and kclose()
.__setsockparm()
parameter, _SP_SUBTASK
, to set the
SUBTASK value on the EZASMI INITAPI start.memmem()
function.deprecated
'
and 'packed
' attributes, __typeof__()
,
__asmval()
values.
strpbrk()
function
__370__
as the IBM compiler does
-Imyheaders.zip
TML
instruction for situations like:
if(x & val) {
LTR
s after
certain arithmetic and logical operations.
-fenum= option and #pragma enum()
pragma in IBM compatibility mode.
- Support
-@filename
processing discovered when
reading a -@file file (i.e. recursive -@).
- Support z/OS 1.9 and 1.10 compatibility in IBM compat mode.
- Correct result type of
__asmval()
expressions to be unsigned.
Also, support 8-byte __asmval()
expressions in a 32-bit compilation.
In this situation, the resulting type of the __asmval()
is
unsigned-long-long instread of unsigned-long.
- New message #2147 - no function prototype given for `XXX'
disabled by default.
#pragma linkage
specifications are not case-specific.
- Add support for
#pragma runopts(POSIX(ON/OFF))
in IBM compatibility
mode.
IMPORT
and
RENAME
statements when the values are not quoted (per newer
IBM binder documentation.)
INCLUDE
files (in a manner analagous for -S used for AUTOCALL
files.)
old
,new
option to manage common prefixes on
DSECT
member names.
CSECT
s.
@
, $
, and #
in
DSECT
names are now translated to a
,
n
, and d
respectively for the struct name, just like member names.
DS C
" members.
*
' with '.' in ASM comments so
that a C-style comment embedded in the ASM source won't break our output.
CHANNEL
/CONTAINER
commands.
EXCI
mode (-fexci), which
is used to translate a special version of the EXEC CICS LINK
command.
EXEC CICS INQUIRE
commands.
DSIDERR
, END
, TASKIDERR
conditions for use with IGNORE
/HANDLE CONDITION
.
START
/NEXT
/END
keywords) for
several INQUIRE
commands
INQUIRE TERMINAL()
and
INQUIRE NETNAME()
commands in some situations.
ctermid()
, fmtcheck()
, err()
- and
warn()
- family, fmtmsg()
.
mblen()
,
mbrlen()
, mbrtowc()
, mbsinit()
,
mbsnrtowcs()
, mbsrtowcs()
, mbstowcs()
, mbtowc()
,
wcrtomb()
, wcsftime()
, wcsnrtombs()
, wcsrtombs()
,
wcstod()
, wcstof()
, wcstold()
, wctomb()
btowc()
and wctob()
POSIX functions.
<timeconv.h>
include file, and related
time_to_...()
and ..._to_time()
functions.
GETMAIN
(previous versions did not.) We used
an LTGR
instruction to check the GETMAIN
return code and need to be mindful of this change in z/OS behavior.
strtold()
to round to the nearest value instead
of rounding to zero.
volatile
data references, forcing them
to be in memory and loaded/stored at each reference.
-march=esa390
or later
is enabled.
__int8
/__int16
/__int32
and __int64
builtin types.
@crt0
labels were renamed to be upper-case @CRT0
. Lower-case
aliases are provided for compatibility.
errno
values - ENOATTR
, EDOOFUS
, EBADMSG
, EMULTIHOP
, ENOLINK
and EPROTO
.
scanf()
family of functions now supports more C99-specified
conversions, including the hh
, j
,
ll
, t
and z
modifiers. Also,
many of the older compatibility conversions were removed.
%E
and %F
now follow ANSI rules.
popen()
/pclose()
functions for POSIX environments.
-uu
option.
-uu
operates exactly as -u
,
except that the return code will be unaffected
by unresolved references.
XSD
or
ESD
-style output files. For some situations (but not all)
the binder will include those sequence numbers in error messages, which
can help in diagnosing binder (or PLINK) issues.
-bvse
option, which causes it to do full
binding of the modules and produce a VSE "unloaded" PHASE file.
-dint
option that treats
'D'
-type fields as 8-byte integers instead of 8-byte
floating point values.
-fpack
option to specify per-compilation structure member
alignment.
#include
files from PDS members under OpenEdition.
-frsa=NNN
to provide the user a mechanism
for defining the per-function register-save-area.
Support for 128-bit (long double
) floating point data type.
#pragma linkage
values can now also apply to function typedefs,
to support building function pointers that have different linkage
conventions.
-march=esa390
option; causes the compiler to use
halfword immediate instructions, use string instructions and to
assume 16 floating-pt registers. Enabled by default with
-flinux
is specified.
non-constant member-designator in offsetof
-showctl
option that causes PLINK to display any control cards encountered during linking.
O_CREAT
and O_EXCL
flags in open(2) now
supported for dynamically allocating MVS file-system files. Also - several
new attribute values pertinent to specifying sizes and file attributes when
creating files.
-march=zarch
is specified, the compiler will predefine
the macro _LP64
to 1; otherwise, it defines the _ILP32
macro to 1.
-fcodepage500
option on EBCDIC platforms to support
source in IBM-500 codepage. New #pragma filetag
supported
on EBCDIC platforms to indicate the source code code-page.
-fc370
is not specified, the compiler recognizes
#pragma pack(pop)
as a equivalent to #pragma pack(reset)
.
__FUNCTION__
predefined
identifier. This is replaced with a string constant that is the
name of the current function.
LNAMEADDR=
parameter was added to DCCPRLG
which provides the label for
this string. This allows the string to be as long as necessary,
and contain any required bytes, and also be properly demangled
in the C++ case. This significantly enhances the __traceback
function.
-fc370=z1r2
option, to indicate compatibility with the
IBM V1R2 z/OS compiler.
getprogname()
and setprogname()
functions were added.
__jobname()
, __stepname()
, __procname()
, __get_cpuid()
, __isPosixOn()
functions.
_exit()
, getpid()
, getppid()
, pipe()
,
getcwd()
, getlogin()
, uname()
, fork()
, exec*()
, execve()
,
wait()
, waitpid()
, wait3()
, getgid()
, setgid()
, getegid()
, setegid()
,
getuid()
, setuid()
, geteuid()
, seteuid()
, setreuid()
, setregid()
,
getpwent()
, setpassent()
, setpwent()
, endpwent()
, getpwnam()
, getpwuid()
,
getgrent()
, setgroupent()
, setgrent()
, endgrent()
, getgrnam()
, getgruid()
,
getpid()
, getppidd()
, getcwd()
, getwd()
, getgroups()
, setgroups()
,
getpriority()
, setpriority()
, nice()
, getpgrp()
, setpgrp()
,
getpgid()
, setpgid()
, getsid()
, setsid()
, getrusage()
, kill()
,
times()
, __passwd()
, realpath()
, mmap()
, mprotect()
, msync()
, munmap()
,
ftok()
, shmat()
, shmdt()
, shmget()
, shmctl()
, msgget()
, msgctl()
,
msgrcv()
, msgsnd()
, system()
, semctl()
, semop()
, semget()
,
ptsname()
, grantpt()
, unlockpt()
, tcsendbreak()
, tcdrain()
,
tcflow()
, tcflush()
, tcgetattr()
, tcsetattr()
, tcgetpgrp()
,
tcsetpgrp()
, cfgetispeed()
, cfsetispeed()
, cfgetospeed()
, cfsetospeed()
,
cfsetspeed()
, and cfmakeraw()
.
open()
, read()
, write()
,
close()
, lseek()
, unlink()
, rename()
, isatty()
, fcntl()
, rmdir()
,
mkdir()
, access()
, fsync()
, umask()
, fstat()
, stat()
, lstat()
,
link()
, symlink()
, readlink()
, mknod()
, mkfifo()
,
opendir()
, readdir()
, rewinddir()
, closedir()
, chown()
, fchown()
,
lchown()
, chmod()
, fchmod()
, chdir()
, fchdir()
, chroot()
,
truncate()
, ftruncate()
, pathconf()
, fpathconf() utime()
,
utimes()
and futimes()
.
- Support for executing 31-bit and 64-bit Systems/C programs under OpenEdition (via
execve()
.)
- New C99
<inttypes.h>
file, and the imaxabs()
,
imaxdiv()
, stroimax()
, stroumax()
, wcstoimax()
and wcstoumax()
functions
from section 7.8.2 of the ANSI C99 standard.
- New C99
<wctype.h>
and <wchar.h>
and the associated
functions from there (section 7.25 of the C99 standard), including
iswalnum()
, iswalpha()
, iswascii()
, iswblank()
, iswcntrl()
,
iswdigit(),
iswgraph(),
iswhexnumber(),
iswideogram(),
iswlower(),
iswnumber(),
iswphonogram(),
iswprint(),
iswpunct(),
iswrune(),
iswspace(),
iswspecial(),
iswupper(),
iswxdigit(),
towlower(),
towupper(),
wctrans(),
towctrans(),
wcwidth(),
wctype(),
iswctype(),
wcstoul(),
wcstol(),
wcstoll()
and
wcstoull()
.
-
The default buffer size for STDIO files was increased from
1024 bytes to 8192 bytes, to improve I/O performance.
//HFS:
-style files use the fstat()
function to determine
optimimum buffer sizes, particularly in network situations.
-
optimizations for multiple SEEK_ENDs on the same read-only
non-
//HFS: files. Also, further optimizations to avoid redundant NOTE
s.
sys_signame[]
, sys_siglist[]
and sys_nsig
;
DOMAIN
statement as well
as DOMAINORIGIN
in the TCPIP.DATA
file.
sysconf()
function to provide partial POSIX compatibility
in non-POSIX environments.
getipnodebyname()
, getipnodebyaddr()
, and freehostent()
.
strtoll()
, strtoull()
are provided (the previous non-standard strtoq()
and strtouq()
are still provided for backwards compatibility.)
strcasestr(),
wcscat(),
wcslcpy(),
wcsrchr(),
wmemcpy(),
strlcat(),
wcschr(),
wcslen(),
wcsspn(),
wmemmove(),
strlcpy(),
wcscmp(),
wcsncat(),
wcsstr(),
wmemset(),
strmode(),
wcscpy(),
wcsncmp(),
wcswidth(),
strnstr(),
wcscspn(),
wcsncpy(),
wmemchr(),
strsignal(),
wcslcat(),
wcspbrk()
and wmemcmp()
.
digittoint()
, ishexnumber()
, isideogram()
, isnumber()
,
isphonogram()
, isrune()
and isspecial()
.
ddnfind()
/ddnnext()
functions which determine the DSN
associated with a DD
.
-DD=
name=
template which specifies a search
pattern template to use processing an INCLUDE
card with a
DDNAME(MEM)-style name.
-elc
/-xelc options in D2S to enable lower-casing of EQU/SECTION
names.
-bfstruct
/-xbfstruct
option in D2S to control the generation of
bitfield-populated structures for odd-sized data (e.g.
XL3
will be translated to struct { unsigned BF : 24; }
.
rename()
function has been added which can rename
DSN-style files.
Also - by default, PLINK will process all defined "dummy" sections creating a PRV table. This allows reentrant programs to be generated for systems the use older versions of the IBM linker that don't support a Psuedo Register Vector larger than 4K (e.g. VSE and older CMS.)
PLINK will also eliminate duplicately defined weak functions in Systems/C programs (mostly used for C++ templates.) PLINK will remove the bytes from the generated TXT sections, signifcantly reducing the resulting load-module size.
Furthermore, PLINK (and DAR/DRANLIB) can now handle IBM C objects. When an IBM compatible object is discovered, PLINK mimics the IBM Pre-Linker. Thus, all IBM pre-linking functions can be accomplished on a cross-platform host.
#pragma weak
functions in Systems/C mode.
(The new version of PLINK will automatically remove duplicate
weak definitions and eliminate the duplicate code from the resulting
load module.) This is also employed for proper handling
of C++ automatic template instantiation.
-finstrument_functions
option. For Linux
(-flinux
), this
decorates function entry/exit points compatibly with the normal Linux
utilities. In Systems/C mode, this causes macros to be generated
a function entry/exit points.
-fstructmap
/-fno_structmap
option to
enable/disable the
"structure map" portion of the listing.
-fasmcomm
option in the C compiler, which describes
how the original C lines should appear in the generated
assembler output.
-fasmlnno
option in the C compiler. This causes
the codegenerator to generate comments detailing the line number
in the generated assembler source.
-fflex
, -fmin_lm_reg=X
and
-fmin_stm_reg=X
options in the
C compiler. These control peepholing of consecutive
Load/STore instructions. On the FLEX/ES(tm) system, LM and STM
instructions can perform slower than the sequence of L/ST instructions.
-fsascdigraphs
in the C compiler.
-fat
enables
support for the SAS/C(tm) @
-operator; and -fsascdigraphs
enables
support for SAS/C(tm)-style digraphs.
-fopts[=macro]
and -fendmacro[=text]
in the C compilers.
-fdll
and -fexportall
in C compiler (in IBM mode)
-fdollar
option in the C compiler - allows '$' in
identifiers.
SAR
/SAC/CPYA
instructions for __far
/__based
pointers.
#pragma ident
and #ident
which
places text characters into the generated object.
-O
option to engage optimizations.
#pragma
statements, to allow comments
within the pragmas.
inline
" keyword, or based
on command-line heuristics.
<bitstring.h>
header file that
defines bitstring manipulation macros.
-fquiet
option, which suppresses the banner messages
-fignore_case
, causes the compiler to no treat upper-case
letters "special" in generated HLASM compatible source
-march=zarch
option:
#pragma linkage(identifier,ALIGN4)
to allow
for older 4-byte aligned (ESA) parameter lists.
extern "align4"
linkage for C++
-famode=any
to support using Grande
instructions and 64-bit integers/pointers when the
execution AMODE may not
be 64-bits.
__ptr31
/__ptr64
pointer type qualifiers,
for specifically declaring 32 (31) bit or 64 bit pointers,
no matter what type of code is being compiled.
-fc99
option to optionally enabled ANSI C99 features:
_Bool
data type and recognition of C99 keywords.
declarations anywhere - including declarations in
for
-statements
#pragma STDC FENV_ACCESS
which suppresses floating
pointer optimizations
-fc99
not enabled
-fc370
now supports the following IBM builtin functions:
alloca
, tsched
, cs
,
cds
. Thus, all of the documented IBM C builtin
functions are now supported.
#pragma csect ({CODE,STATIC,TEST), "name")
for setting sname.
_Pragma
, guarded headers not re-read, etc...
#pragma export
supported in IBM compatiblity mode
-flinux
mode. C and C++ code compiled with
-flinux
is now
directly debuggable by the Linux debugger gdb.
-fpic
and -fPIC
for Linux/390 and z/Linux.
-r
(re-plink) option, allows for PLINK produced objects to be
passed through PLINK again.
-allow_ref
option, allows for PLINK to ignore particular
unresolved references, which will be resolved later.
< stdbool.h>
,
< stdint.h >
, < iso646.h >
.
__malloc31
/__free31
and
__malloc24
/__free24
functions
providing memory allocation management within a known
addressing range.
< stdarg.h >
now defines va_copy
as specified
in the ANSI C99 standard. Furthemore, stdarg related macros
now support passing integral types smaller than `int'-sized
values, which is a common extension on other platforms.
CVTTZ
) from the
operating system, and assumes the clock is set to UTC.
The TZ
environment variable will be appropriately set
at program startup for non-DCALL programs.
__attribute__((__constructor__))
and
__attribute__((__destructor__))
in function declarations. The __attribute__((__constructor__))
specification causes the declared C function to be marked as a "constructor" function - i.e.
one that is executed by the C library before main() is invoked.
__attribute__((__destructor__))
causes the
function to be executed after main() returns, or by the exit()
function.
#pragma weak
for indicating weak function and non-rent data
references.
_exit()
(which is invoked by exit()
) no longer does a direct
SVC 3
to end the program. Instead, Systems/C programs now
properly release resources and simply return to the caller.
timezone()
function has been added to the C library.
cabs()
and hypot()
functions have been added to the C math library.
#pragma export
in LE370 mode (requires the Systems/ASM
assembler.)
__setsockparm()
function which allows the program to define
IBM TCP/IP initialization values.
|
-bar,
allow compilation of source which contain that character (e.g. codepage
037.)
__far
pointer support.
__builtin_alloca()
.
fcntl()
now supports the F_GETFL
(get flags) command.
fdopen()
now supported.
#pragma eject
, #pragma page(n)
and #pragma page()
, #pragma pagesize(n)
and the new -fpagesize=n option which allow the user to
tailor the compiler listing.
#pragma options()
is now implemented in the Systems/C compile, and supports some of the
options available on the command line.
__far
pointer flexibility, including options to change
the alignment of __far
pointers and to specify the order
of ALET and OFFSET.
#pragma linkage
-OS function now saves and
restores the first three words of the local save area.
O_APPEND
flag in
open()
for sequential files.
getcliendid()
, selectex()
, givesocket()
and takesocket()
are now
provided in the library - for implementing multi-tasking socket
programs.
lseek()
to any offset within a
text or binary read-only file. lseek()
to offset 0 is also supported
for both input and output files.
memcmp()
builtin function to use a CLC when the
operand length is constant and less than 256.
ARLIBRARY
and INSERT
control cards.
#include_next
, #warning
, several GCC builtins,
compound statements, as style generated assembly, Linux/390 entry/exit, etc...)
-@filename
option on command lines for
long command lines on Windows and OS/390
__STDC__
is now defined.
__register
variables are now supported at file scope; which globally reserves
a register.
__far
pointer support.
Learn more about Systems/C here.
Learn more about Dignus, LLC here.
Contact us $Date: 2024/11/11 00:28:26 $ |
Copyright © 2019 Dignus, LLC All rights reserved. |