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) {
LTRs 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.
CSECTs.
@, $, 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 NOTEs.
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: 2009/01/30 20:50:59 $ |
Copyright © 2002 Dignus, LLC All rights reserved. |