Compare commits

...

No commits in common. "master" and "V60000-raw" have entirely different histories.

936 changed files with 23728 additions and 56160 deletions

398
.gitignore vendored
View File

@ -1,398 +0,0 @@
### Gradle ###
.gradle
build/
# Ignore Gradle GUI config
gradle-app.setting
# Avoid ignoring Gradle wrapper jar file (.jar files are usually ignored)
!gradle-wrapper.jar
# Cache of project
.gradletasknamecache
# # Work around https://youtrack.jetbrains.com/issue/IDEA-116898
# gradle/wrapper/gradle-wrapper.properties
### Gradle Patch ###
**/build/
### Intellij ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
### Intellij Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
# *.iml
# modules.xml
# .idea/misc.xml
# *.ipr
# Sonarlint plugin
.idea/sonarlint
### Intellij+iml ###
# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm
# Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839
# User-specific stuff
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
# Generated files
.idea/**/contentModel.xml
# Sensitive or high-churn files
.idea/**/dataSources/
.idea/**/dataSources.ids
.idea/**/dataSources.local.xml
.idea/**/sqlDataSources.xml
.idea/**/dynamic.xml
.idea/**/uiDesigner.xml
.idea/**/dbnavigator.xml
# Gradle
.idea/**/gradle.xml
.idea/**/libraries
# Gradle and Maven with auto-import
# When using Gradle or Maven with auto-import, you should exclude module files,
# since they will be recreated, and may cause churn. Uncomment if using
# auto-import.
# .idea/modules.xml
# .idea/*.iml
# .idea/modules
# *.iml
# *.ipr
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
### Intellij+iml Patch ###
# Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-249601023
*.iml
modules.xml
.idea/misc.xml
*.ipr
### Maven ###
target/
pom.xml.tag
pom.xml.releaseBackup
pom.xml.versionsBackup
pom.xml.next
release.properties
dependency-reduced-pom.xml
buildNumber.properties
.mvn/timing.properties
.mvn/wrapper/maven-wrapper.jar
.flattened-pom.xml
# CMake
cmake-build-*/
# Mongo Explorer plugin
.idea/**/mongoSettings.xml
# File-based project format
*.iws
# IntelliJ
out/
# mpeltonen/sbt-idea plugin
.idea_modules/
# JIRA plugin
atlassian-ide-plugin.xml
# Cursive Clojure plugin
.idea/replstate.xml
# Crashlytics plugin (for Android Studio and IntelliJ)
com_crashlytics_export_strings.xml
crashlytics.properties
crashlytics-build.properties
fabric.properties
# Editor-based Rest Client
.idea/httpRequests
# Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser
### Intellij Patch ###
# Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721
# *.iml
# modules.xml
# .idea/misc.xml
# *.ipr
# Sonarlint plugin
.idea/sonarlint
### Node ###
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
.pnpm-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Snowpack dependency directory (https://snowpack.dev/)
web_modules/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Optional stylelint cache
.stylelintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variable files
.env
.env.development.local
.env.test.local
.env.production.local
.env.local
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# Next.js build output
.next
out
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# vuepress v2.x temp and cache directory
.temp
# Docusaurus cache and generated files
.docusaurus
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
### Node Patch ###
# Serverless Webpack directories
.webpack/
# Optional stylelint cache
# SvelteKit build / generate output
.svelte-kit
### yarn ###
.yarn/*
!.yarn/releases
!.yarn/patches
!.yarn/plugins
!.yarn/sdks
!.yarn/versions
# if you are NOT using Zero-installs, then:
# comment the following lines
!.yarn/cache
# and uncomment the following lines
# .pnp.*
### CVS ###
/CVS/*
**/CVS/*
.cvsignore
*/.cvsignore

View File

@ -1,6 +1,6 @@
#################################################################
# #
# Copyright 2012, 2013 Fidelity Information Services, Inc #
# Copyright 2012 Fidelity Information Services, Inc #
# #
# This source code contains the intellectual property #
# of its copyright holder(s), and is made available #
@ -15,63 +15,14 @@
cmake_minimum_required(VERSION 2.8.5)
project(GTM C ASM)
# Max optimization level is -O2
get_property(languages GLOBAL PROPERTY ENABLED_LANGUAGES)
foreach(lang ${languages})
get_property(flags CACHE CMAKE_${lang}_FLAGS_RELEASE PROPERTY VALUE)
if("${flags}" MATCHES "-O[3-9]")
string(REGEX REPLACE "-O[3-9]" "-O2" flags "${flags}")
set_property(CACHE CMAKE_${lang}_FLAGS_RELEASE PROPERTY VALUE "${flags}")
endif()
endforeach()
# Defaults
set(version V6.0-003)
if("${version}" STREQUAL "")
set(version V9.9-0)
set(version V6.0-000)
if("${version}" EQUAL "")
set(version V9.9-0)
endif()
# If CMAKE_BUILD_TYPE is not defined make it a Release build
if(NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
endif()
# If it's a debug build make sure GT.M uses all of its debug options
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -DDEBUG")
set(install_permissions_script
OWNER_READ OWNER_EXECUTE OWNER_WRITE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE
)
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG)
# Only IA64 and x86_64 architectures use this option
set(gen_xfer_desc 0)
# Platform specific libs
set(gtm_osarch_libs "")
# Define these ahead of establishing platforms
set(gt_src_list)
set(sources_used "")
set(extralibs "")
set(is_encryption_supported 1)
set(libmumpsrestoreregex "")
message("--> OS = ${CMAKE_SYSTEM_NAME} / ARCH = ${CMAKE_SYSTEM_PROCESSOR}")
# Establish platform
# Except for Solaris, CMAKE_COMPILER_IS_GNUCC is true
if("${CMAKE_SYSTEM_NAME}" MATCHES "Linux")
include(sr_linux/platform.cmake)
elseif("${CMAKE_SYSTEM_NAME}" MATCHES "HP-UX")
include(sr_hpux/platform.cmake)
elseif("${CMAKE_SYSTEM_NAME}" MATCHES "AIX")
include(sr_aix/platform.cmake)
elseif("${CMAKE_SYSTEM_NAME}" MATCHES "SunOS")
include(sr_sun/platform.cmake)
if("${CMAKE_SIZEOF_VOID_P}" EQUAL 4)
set(arch "x86")
else()
message(FATAL_ERROR "--> OS = ${CMAKE_SYSTEM_NAME} / ARCH = ${CMAKE_SYSTEM_PROCESSOR}")
set(arch "x86_64")
endif()
# Choose where to get bootstrap sources.
@ -97,6 +48,41 @@ if(NOT GTM_INSTALL_DIR)
set(GTM_INSTALL_DIR .)
endif()
# Max optimization level is -O2
get_property(languages GLOBAL PROPERTY ENABLED_LANGUAGES)
foreach(lang ${languages})
get_property(flags CACHE CMAKE_${lang}_FLAGS_RELEASE PROPERTY VALUE)
if("${flags}" MATCHES "-O[3-9]")
string(REGEX REPLACE "-O[3-9]" "-O2" flags "${flags}")
set_property(CACHE CMAKE_${lang}_FLAGS_RELEASE PROPERTY VALUE "${flags}")
endif()
endforeach()
if(NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
set(CMAKE_BUILD_TYPE Release CACHE STRING "Build type" FORCE)
endif()
set(install_permissions_script
OWNER_READ OWNER_EXECUTE OWNER_WRITE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE
)
set(CMAKE_INCLUDE_FLAG_ASM "-Wa,-I") # gcc -I does not make it to "as"
set(CMAKE_C_FLAGS
# TODO: Use CMake 2.8.9 POSITION_INDEPENDENT_CODE abstraction for -fPIC in static libs
"${CMAKE_C_FLAGS} -ansi -fsigned-char -fPIC -Wmissing-prototypes")
set(CMAKE_C_FLAGS_RELEASE
"${CMAKE_C_FLAGS_RELEASE} -fno-defer-pop -fno-strict-aliasing -ffloat-store")
add_definitions(
#-DNOLIBGTMSHR #gt_cc_option_DBTABLD=-DNOLIBGTMSHR
-D_GNU_SOURCE
-D_FILE_OFFSET_BITS=64
-D_XOPEN_SOURCE=600
-D_LARGEFILE64_SOURCE
)
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG)
#-----------------------------------------------------------------------------
# Source files are organized into subdirectories named by platform.
@ -105,6 +91,17 @@ endif()
# appear in multiple directories but only the instance found earliest
# in the search path will be used. Later instances of the same source
# file name will be ignored.
set(gt_src_list)
set(gen_xfer_desc 0)
if("${CMAKE_SYSTEM_NAME}" MATCHES "Linux")
list(APPEND gt_src_list sr_linux)
if("${CMAKE_SIZEOF_VOID_P}" EQUAL 4)
list(APPEND gt_src_list sr_i386 sr_x86_regs sr_unix_nsb)
else()
list(APPEND gt_src_list sr_x86_64 sr_x86_regs)
set(gen_xfer_desc 1)
endif()
endif()
list(APPEND gt_src_list
sr_unix_gnp
sr_unix_cm
@ -119,7 +116,7 @@ list(APPEND gt_src_list
foreach(d ${gt_src_list})
set(source_dir_${d} ${GTM_SOURCE_DIR}/${d})
file(GLOB sources_${d} RELATIVE ${source_dir_${d}}
${d}/*.c ${d}/*.s ${d}/*.si)
${d}/*.c ${d}/*.s ${d}/*.si)
endforeach()
if(gen_bootstrap)
# Prefer generated sources over all other locations.
@ -159,20 +156,15 @@ endfunction()
# Macro to search directories ordered by 'gt_src_list' for a given
# list of source file names, assign them to a target, and exclude the
# source file names from inclusion in libmumps.
set(sources_used "")
macro(set_source_list target)
foreach(name ${ARGN})
set(src "")
foreach(d ${gt_src_list})
if(";${sources_${d}};" MATCHES ";(${name}\\.(c|s|si));")
set(fname ${CMAKE_MATCH_1})
set(src ${d}/${fname})
set("source_used_${fname}" 1)
list(APPEND sources_used ${source_dir_${d}}/${fname})
if(NOT "${libmumpsrestoreregex}" STREQUAL "")
if(";${name};" MATCHES ";(${libmumpsrestoreregex});")
set("source_used_${fname}" 0)
endif()
endif()
set(src ${d}/${CMAKE_MATCH_1})
set("source_used_${CMAKE_MATCH_1}" 1)
list(APPEND sources_used ${source_dir_${d}}/${CMAKE_MATCH_1})
break()
endif()
endforeach()
@ -203,9 +195,6 @@ load_source_list(libgtcm sr_unix_cm/libgtcm.list)
load_source_list(liblke sr_unix/liblke.list)
load_source_list(libmupip sr_unix/libmupip.list)
load_source_list(libstub sr_unix/libstub.list)
if("${CMAKE_SYSTEM_NAME}" STREQUAL "SunOS")
load_source_list(libgtmrpc sr_sun/libgtmrpc.list)
endif()
# Assign sources to executables.
set_source_list(gtm_threadgbl_deftypes gtm_threadgbl_deftypes)
@ -227,9 +216,6 @@ set_source_list(maskpass maskpass)
set_source_list(mumps gtm)
set_source_list(mupip mupip mupip_cmd)
set_source_list(semstat2 semstat2)
if("${CMAKE_SYSTEM_NAME}" STREQUAL "SunOS")
set_source_list(gtm_svc gtm_svc gtm_rpc_init gtm_dal_svc)
endif()
#-----------------------------------------------------------------------------
# libmumps gets leftover sources, so compute the remaining list.
@ -324,7 +310,6 @@ if(gen_xfer_desc)
${GTM_BINARY_DIR}/sources.list
COMMAND ${CMAKE_COMMAND}
-D CMAKE_C_COMPILER=${CMAKE_C_COMPILER}
-D "arch=${arch}"
-D "includes=${includes}"
-P ${GTM_SOURCE_DIR}/sr_unix/gen_xfer_desc.cmake
VERBATIM
@ -375,7 +360,6 @@ foreach(lib
mupip
stub
mumps
${extralibs}
)
add_library(lib${lib} STATIC ${lib${lib}_SOURCES})
set_property(TARGET lib${lib} PROPERTY OUTPUT_NAME ${lib})
@ -383,72 +367,61 @@ foreach(lib
endforeach()
# TODO: find_package or find_library for system libs?
include_directories ("/usr/local/include")
target_link_libraries(libmumps ${libmumpslibs})
target_link_libraries(libmumps -lelf -lncurses -lm -ldl -lpthread -lrt)
add_executable(mumps ${mumps_SOURCES})
target_link_libraries(mumps libmumps)
add_executable(mumps ${mumps_SOURCES})
target_link_libraries(mumps libmumps)
add_executable(dse ${dse_SOURCES})
target_link_libraries(dse libdse libmumps libstub)
add_executable(dse ${dse_SOURCES})
target_link_libraries(dse libdse libmumps libstub)
list(APPEND with_export dse)
add_executable(dbcertify ${dbcertify_SOURCES})
target_link_libraries(dbcertify libdbcertify libmupip libmumps libstub)
add_executable(dbcertify ${dbcertify_SOURCES})
target_link_libraries(dbcertify libdbcertify libmupip libmumps libstub)
add_executable(geteuid ${geteuid_SOURCES})
add_executable(geteuid ${geteuid_SOURCES})
add_executable(gtmsecshr ${gtmsecshr_SOURCES})
add_dependencies(gtmsecshr gen_gtm_threadgbl_deftypes)
add_executable(gtmsecshr ${gtmsecshr_SOURCES})
add_dependencies(gtmsecshr gen_gtm_threadgbl_deftypes)
add_executable(gtmsecshr_real ${gtmsecshr_real_SOURCES})
add_executable(gtmsecshr_real ${gtmsecshr_real_SOURCES})
target_link_libraries(gtmsecshr_real libmumps)
set_target_properties(gtmsecshr_real PROPERTIES
OUTPUT_NAME gtmsecshr
RUNTIME_OUTPUT_DIRECTORY ${GTM_BINARY_DIR}/gtmsecshrdir
)
add_dependencies(gtmsecshr_real gen_gtm_threadgbl_deftypes)
add_dependencies(gtmsecshr_real gen_gtm_threadgbl_deftypes)
add_executable(mupip ${mupip_SOURCES})
target_link_libraries(mupip libmupip libmumps libstub)
add_executable(mupip ${mupip_SOURCES})
target_link_libraries(mupip libmupip libmumps libstub)
list(APPEND with_export mupip)
add_executable(lke ${lke_SOURCES})
target_link_libraries(lke liblke libmumps libgnpclient libmumps libgnpclient libcmisockettcp)
list(APPEND with_export lke)
add_executable(lke ${lke_SOURCES})
target_link_libraries(lke liblke libmumps libgnpclient libmumps libgnpclient libcmisockettcp)
add_executable(gtcm_server ${gtcm_server_SOURCES})
target_link_libraries(gtcm_server libgtcm libmumps libstub)
add_executable(gtcm_server ${gtcm_server_SOURCES})
target_link_libraries(gtcm_server libgtcm libmumps libstub)
list(APPEND with_export gtcm_server)
add_executable(gtcm_gnp_server ${gtcm_gnp_server_SOURCES})
target_link_libraries(gtcm_gnp_server libgnpserver liblke libmumps libcmisockettcp libstub)
add_executable(gtcm_gnp_server ${gtcm_gnp_server_SOURCES})
target_link_libraries(gtcm_gnp_server libgnpserver liblke libmumps libcmisockettcp libstub)
list(APPEND with_export gtcm_gnp_server)
add_executable(gtcm_play ${gtcm_play_SOURCES})
target_link_libraries(gtcm_play libgtcm libmumps libstub)
add_executable(gtcm_play ${gtcm_play_SOURCES})
target_link_libraries(gtcm_play libgtcm libmumps libstub)
list(APPEND with_export gtcm_play)
add_executable(gtcm_pkdisp ${gtcm_pkdisp_SOURCES})
target_link_libraries(gtcm_pkdisp libgtcm libmumps libstub)
add_executable(gtcm_pkdisp ${gtcm_pkdisp_SOURCES})
target_link_libraries(gtcm_pkdisp libgtcm libmumps libstub)
add_executable(gtcm_shmclean ${gtcm_shmclean_SOURCES})
target_link_libraries(gtcm_shmclean libgtcm libmumps libstub)
add_executable(semstat2 ${semstat2_SOURCES})
add_executable(ftok ${ftok_SOURCES})
target_link_libraries(ftok libmumps libstub)
add_executable(gtcm_shmclean ${gtcm_shmclean_SOURCES})
target_link_libraries(gtcm_shmclean libgtcm libmumps libstub)
add_executable(semstat2 ${semstat2_SOURCES})
add_executable(ftok ${ftok_SOURCES})
target_link_libraries(ftok libmumps libstub)
if("${CMAKE_SYSTEM_NAME}" STREQUAL "SunOS")
add_executable(gtm_svc ${gtm_svc_SOURCES})
target_link_libraries(gtm_svc libmumps libgnpclient libcmisockettcp libgtmrpc)
endif()
foreach(t ${with_export})
set_target_properties(${t} PROPERTIES
LINK_FLAGS "${gtm_link}"
LINK_DEPENDS "${gtm_dep}"
LINK_FLAGS "-Wl,-u,gtm_filename_to_id -Wl,-u,gtm_zstatus -Wl,--version-script,\"${GTM_BINARY_DIR}/gtmexe_symbols.export\""
LINK_DEPENDS "${GTM_BINARY_DIR}/gtmexe_symbols.export"
)
add_dependencies(${t} gen_export)
endforeach()
@ -457,81 +430,68 @@ add_library(libgtmshr MODULE ${libgtmshr_SOURCES})
set_property(TARGET libgtmshr PROPERTY OUTPUT_NAME gtmshr)
target_link_libraries(libgtmshr libmumps libgnpclient libcmisockettcp)
set_target_properties(libgtmshr PROPERTIES
LINK_FLAGS "${libgtmshr_link}"
LINK_DEPENDS "${libgtmshr_dep}"
LINK_FLAGS "-Wl,-u,gtm_ci -Wl,-u,gtm_filename_to_id -Wl,--version-script,\"${GTM_BINARY_DIR}/gtmshr_symbols.export\""
LINK_DEPENDS "${GTM_BINARY_DIR}/gtmshr_symbols.export"
)
add_dependencies(libgtmshr gen_export)
add_dependencies(mumps libgtmshr)
if(is_encryption_supported)
# Iterate over the list of GPG related libraries
foreach(gpglib gpg-error gpgme gcrypt)
# For each library, we need a new CMake variable, hence GPGLIB_${gpglib}
find_library(GPGLIB_${gpglib} NAME ${gpglib} PATHS ${CMAKE_LIBRARY_PATH})
# Append the found library to the list
set(GPG_LIBRARIES ${GPG_LIBRARIES} ${GPGLIB_${gpglib}})
endforeach()
add_library(libgtmcrypt MODULE ${libgtmcrypt_SOURCES})
set_target_properties(libgtmcrypt PROPERTIES
OUTPUT_NAME gtmcrypt
COMPILE_DEFINITIONS USE_GCRYPT
LIBRARY_OUTPUT_DIRECTORY ${GTM_BINARY_DIR}/plugin
)
target_link_libraries(libgtmcrypt gpg-error gpgme gcrypt)
install(TARGETS libgtmcrypt DESTINATION ${GTM_INSTALL_DIR}/plugin)
add_library(libgtmcrypt MODULE ${libgtmcrypt_SOURCES})
set_target_properties(libgtmcrypt PROPERTIES
OUTPUT_NAME gtmcrypt
COMPILE_DEFINITIONS "USE_GCRYPT -DUSE_AES256CFB"
LIBRARY_OUTPUT_DIRECTORY ${GTM_BINARY_DIR}/plugin
add_executable(maskpass ${maskpass_SOURCES})
target_link_libraries(maskpass gpg-error gpgme gcrypt)
set_target_properties(maskpass PROPERTIES
COMPILE_DEFINITIONS USE_GCRYPT
RUNTIME_OUTPUT_DIRECTORY ${GTM_BINARY_DIR}/plugin/gtmcrypt
)
install(TARGETS maskpass DESTINATION ${GTM_INSTALL_DIR}/plugin/gtmcrypt)
foreach(f
add_db_key.sh
build.sh
encrypt_sign_db_key.sh
gen_keypair.sh
gen_sym_hash.sh
gen_sym_key.sh
gtmcrypt.tab
gtmcrypt_dbk_ref.c
gtmcrypt_dbk_ref.h
gtmcrypt_interface.h
gtmcrypt_pk_ref.c
gtmcrypt_pk_ref.h
gtmcrypt_ref.c
gtmcrypt_ref.h
gtmcrypt_sym_ref.h
gtmxc_types.h
import_and_sign_key.sh
install.sh
maskpass.c
pinentry-gtm.sh
pinentry.m
pinentry.m
)
target_link_libraries(libgtmcrypt ${GPG_LIBRARIES})
install(TARGETS libgtmcrypt DESTINATION ${GTM_INSTALL_DIR}/plugin)
add_executable(maskpass ${maskpass_SOURCES})
target_link_libraries(maskpass ${GPG_LIBRARIES})
set_target_properties(maskpass PROPERTIES
COMPILE_DEFINITIONS USE_GCRYPT
RUNTIME_OUTPUT_DIRECTORY ${GTM_BINARY_DIR}/plugin/gtmcrypt
set(f_in "${GTM_SOURCE_DIR}/sr_unix/${f}")
set(f_out "${GTM_BINARY_DIR}/plugin/gtmcrypt/${f}")
add_custom_command(
OUTPUT "${f_out}"
DEPENDS "${f_in}"
COMMAND ${CMAKE_COMMAND} -E copy "${f_in}" "${f_out}"
)
install(TARGETS maskpass DESTINATION ${GTM_INSTALL_DIR}/plugin/gtmcrypt)
foreach(f
add_db_key.sh
build.sh
encrypt_sign_db_key.sh
gen_keypair.sh
gen_sym_hash.sh
gen_sym_key.sh
gtmcrypt.tab
gtmcrypt_dbk_ref.c
gtmcrypt_dbk_ref.h
gtmcrypt_interface.h
gtmcrypt_pk_ref.c
gtmcrypt_pk_ref.h
gtmcrypt_dbk_ref.c
gtmcrypt_dbk_ref.h
gtmcrypt_ref.c
gtmcrypt_ref.h
gtmcrypt_sym_ref.h
gtmxc_types.h
import_and_sign_key.sh
install.sh
maskpass.c
pinentry-gtm.sh
pinentry.m
pinentry.m
show_install_config.sh
)
set(f_in "${GTM_SOURCE_DIR}/sr_unix/${f}")
set(f_out "${GTM_BINARY_DIR}/plugin/gtmcrypt/${f}")
add_custom_command(
OUTPUT "${f_out}"
DEPENDS "${f_in}"
COMMAND ${CMAKE_COMMAND} -E copy "${f_in}" "${f_out}"
)
if("${f}" MATCHES "\\.sh$")
set(permissions PERMISSIONS ${install_permissions_script})
else()
set(permissions "")
endif()
install(FILES "${f_out}" DESTINATION ${GTM_INSTALL_DIR}/plugin/gtmcrypt ${permissions})
list(APPEND files_to_place "${f_out}")
endforeach()
endif()
if("${f}" MATCHES "\\.sh$")
set(permissions PERMISSIONS ${install_permissions_script})
else()
set(permissions "")
endif()
install(FILES "${f_out}" DESTINATION ${GTM_INSTALL_DIR}/plugin/gtmcrypt ${permissions})
list(APPEND files_to_place "${f_out}")
endforeach()
install(TARGETS
mumps
@ -646,7 +606,6 @@ foreach(f
lke.hlp
mumps.hlp
mupip.hlp
custom_errors_sample.txt
)
select_file(src ${f})
list(APPEND files ${src})
@ -717,10 +676,7 @@ endforeach()
#-----------------------------------------------------------------------------
set(gtm_hlp mumps.hlp)
set(gde_hlp gde.hlp)
set(mupip_hlp mupip.hlp)
set(dse_hlp dse.hlp)
set(lke_hlp lke.hlp)
foreach(help gtm gde mupip dse lke)
foreach(help gtm gde)
set(CMAKE_CONFIGURABLE_FILE_CONTENT
"Change -segment DEFAULT -block=2048 -file=\$gtm_dist/${help}help.dat
Change -region DEFAULT -record=1020 -key=255

0
COPYING Executable file → Normal file
View File

View File

@ -1,15 +0,0 @@
/CMakeLists.txt/1.6/Wed Oct 23 03:49:20 2013//
/COPYING/1.6/Fri Nov 2 03:00:12 2012//
/README/1.21/Wed Oct 23 03:49:20 2013//
D/sr_alpha////
D/sr_i386////
D/sr_linux////
D/sr_port////
D/sr_port_cm////
D/sr_unix////
D/sr_unix_cm////
D/sr_unix_gnp////
D/sr_unix_nsb////
D/sr_vvms////
D/sr_x86_64////
D/sr_x86_regs////

View File

@ -1,15 +0,0 @@
/CMakeLists.txt////*////
/COPYING////*////
/README////*////
D/sr_alpha////////
D/sr_i386////////
D/sr_linux////////
D/sr_port////////
D/sr_port_cm////////
D/sr_unix////////
D/sr_unix_cm////////
D/sr_unix_gnp////////
D/sr_unix_nsb////////
D/sr_vvms////////
D/sr_x86_64////////
D/sr_x86_regs////////

View File

@ -1,3 +0,0 @@
/CMakeLists.txt////*////
/COPYING////*////
/README////*////

View File

@ -1,4 +0,0 @@
/CMakeLists.txt/1.6/Wed Oct 23 03:49:20 2013//
/COPYING/1.6/Fri Nov 2 03:00:12 2012//
/README/1.21/Wed Oct 23 03:49:20 2013//
D

View File

@ -1 +0,0 @@
gtm

View File

@ -1 +0,0 @@
:pserver:anonymous@fis-gtm.cvs.sourceforge.net:/cvsroot/fis-gtm

69
README Executable file → Normal file
View File

@ -1,6 +1,6 @@
All software in this package is part of FIS GT.M (http://fis-gtm.com)
which is Copyright 2013 Fidelity Information Services, Inc., and
provided to you under the terms of a license. If there is a COPYING
All software in this package is part of FIS GT.M (http://fis-gtm.com)
which is Copyright 2012 Fidelity Information Services, Inc., and
provided to you under the terms of a license. If there is a COPYING
file included in this package, it contains the terms of the license under
which the package is provided to you. If there is not a COPYING file in
the package, you must ensure that your use of FIS GT.M complies with the
@ -22,68 +22,49 @@ To build GT.M for Linux, do the following steps:
Install developement libraries libelf, zlib, libicu, libgpgme, libgpg-error,
libgcrypt.
Ensure that your locale settings are correct, otherwise you will see
GTM-E-NONUTF8LOCALE messages. Refer the Messages and Recovery Procedures
Manual if you do encounter these messages.
[optional] The GT.M source tarball includes pre-generated files. To generate
these files requires a binary distribution of GT.M. You can download GT.M
from http://sourceforge.net/projects/fis-gtm/ Unpack the tar file and run
the configure script as root. Note: the tar file unpacks everything into
your current working directory, not a new subdirectory. The Linux Standard
Base (LSB) install path for GT.M V6.0-003 is /opt/fis-gtm/V6.0-003_i686 or
/opt/fis-gtm/V6.0-003_x8664. These instrcutions are written using x8664, please
use i686 as necessary.
$ tar xfz gtm_V60003_linux_x8664_pro.tar.gz
# Note down the installation path for use with cmake below
Base (LSB) install path for GT.M V60000 is /opt/lsb-gtm/V6.0-000_i686 or
/opt/lsb-gtm/V6.0-000_x8664.
$ tar xfz gtm_V60000_linux_i686_pro.tar.gz
$ sudo sh ./configure
2. Unpack the GT.M sources
The GT.M source tarball extracts to a directory with the version number in
the name, fis-gtm-V6.0-003
$ tar xfz fis-gtm-V6.0-003.tar.gz
$ cd fis-gtm-V6.0-003
# Provide the directory path to cmake using
# -D GTM_DIST:PATH=$gtm_dist
You should find this README, LICENSE, COPYING and CMakeLists.txt file and
sr_* source directories.
2. Unpack the GT.M sources
Change directory in the directory that you will place the GT.M source,
here after referred to as <gtm-directory>.
$ mkdir <gtm-directory>
$ cd <gtm-directory>
$ tar xfz gtm_V60000_linux_i686_src.tar.gz
You should find this README, COPYING and CMakeLitst.txt file and sr_* source
directories.
3. Building GT.M -
<fis-gtm-build> can be a sub directory of the source directory,
fis-gtm-V6.0-003, or any other valid path.
<gtm-builddir> can be a sub directory of the source directory <gtm-directory>
$ mkdir <gtm-builddir>
$ cd <gtm-builddir>
$ cmake <gtm-directory>
$ mkdir <fis-gtm-build>
$ cd <fis-gtm-build>
# [optional] If you installed GT.M, provide the directory path to cmake
# -D GTM_DIST:PATH=$gtm_dist
#
# By default the build produces release versions of GT.M. To build a debug
# version of GT.M supply the following parameter to cmake
# -D CMAKE_BUILD_TYPE=DEBUG
#
# Note that the cmake install does not create the final installed GT.M.
# Instead, it stages GT.M for distribution. Change the CMAKE_INSTALL_PREFIX
# to place the staged files in a local directory. To install GT.M, you must
# cd to that installed directory and execute the configure script.
# Note that the default install location is driven by CMAKE_INSTALL_PREFIX.
# You can change this when executing cmake
# -D CMAKE_INSTALL_PREFIX:PATH=/opt/lsb-gtm
#
# -D CMAKE_INSTALL_PREFIX:PATH=${PWD}/package
#
$ cmake <path to>/fis-gtm-V6.0-003 -D CMAKE_INSTALL_PREFIX:PATH=${PWD}/package
$ make
$ make install
$ cd package/lib/fis-gtm/V6.0-003_x86_64
# Now you are ready to install GT.M. Answer a few questions and install it.
# The recommended installation path is /opt/fis-gtm/V6.0-003_x86_64
$ sudo ./configure
$ make clean
4. Packaging GT.M -

View File

@ -1,22 +0,0 @@
/axp.h/1.1/Wed Oct 23 03:49:21 2013//
/cacheflush.m64/1.1/Wed Oct 23 03:49:21 2013//
/double2s.c/1.1/Wed Oct 23 03:49:21 2013//
/emit_code_sp.c/1.1/Wed Oct 23 03:49:21 2013//
/emit_code_sp.h/1.1/Wed Oct 23 03:49:21 2013//
/follow.m64/1.1/Wed Oct 23 03:49:21 2013//
/gtm_dump.c/1.1/Wed Oct 23 03:49:21 2013//
/inst_flush.m64/1.1/Wed Oct 23 03:49:21 2013//
/mint2mval.m64/1.1/Wed Oct 23 03:49:21 2013//
/movq.m64/1.1/Wed Oct 23 03:49:21 2013//
/mval2bool.m64/1.1/Wed Oct 23 03:49:21 2013//
/mval2mint.m64/1.1/Wed Oct 23 03:49:21 2013//
/objlangdefs.h/1.1/Wed Oct 23 03:49:21 2013//
/op_call.m64/1.1/Wed Oct 23 03:49:21 2013//
/op_equnul.m64/1.1/Wed Oct 23 03:49:21 2013//
/op_forlcldo.m64/1.1/Wed Oct 23 03:49:21 2013//
/op_linestart.m64/1.1/Wed Oct 23 03:49:21 2013//
/op_pattern.m64/1.1/Wed Oct 23 03:49:21 2013//
/op_sorts_after.m64/1.1/Wed Oct 23 03:49:21 2013//
/pseudo_ret.m64/1.1/Wed Oct 23 03:49:21 2013//
/zbreaksp.h/1.1/Wed Oct 23 03:49:21 2013//
D

View File

@ -1,21 +0,0 @@
/axp.h////*////
/cacheflush.m64////*////
/double2s.c////*////
/emit_code_sp.c////*////
/emit_code_sp.h////*////
/follow.m64////*////
/gtm_dump.c////*////
/inst_flush.m64////*////
/mint2mval.m64////*////
/movq.m64////*////
/mval2bool.m64////*////
/mval2mint.m64////*////
/objlangdefs.h////*////
/op_call.m64////*////
/op_equnul.m64////*////
/op_forlcldo.m64////*////
/op_linestart.m64////*////
/op_pattern.m64////*////
/op_sorts_after.m64////*////
/pseudo_ret.m64////*////
/zbreaksp.h////*////

View File

@ -1 +0,0 @@
gtm/sr_alpha

View File

@ -1 +0,0 @@
:pserver:anonymous@fis-gtm.cvs.sourceforge.net:/cvsroot/fis-gtm

View File

@ -1,133 +0,0 @@
/****************************************************************
* *
* Copyright 2001, 2002 Sanchez Computer Associates, Inc. *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
* under a license. If you do not know the terms of *
* the license, please stop and do not read further. *
* *
****************************************************************/
/* axp.h - AXP machine instruction information.
*
* Requires "axp_registers.h" and "axp_gtm_registers.h".
*
*/
/* Machine instruction templates. */
#define ALPHA_INS_ADDL ((unsigned)0x10 << ALPHA_SHIFT_OP)
#define ALPHA_INS_BEQ ((unsigned)0x39 << ALPHA_SHIFT_OP)
#define ALPHA_INS_BGE ((unsigned)0x3e << ALPHA_SHIFT_OP)
#define ALPHA_INS_BGT ((unsigned)0x3f << ALPHA_SHIFT_OP)
#define ALPHA_INS_BIS ((unsigned)0x11 << ALPHA_SHIFT_OP | 0x20 << ALPHA_SHIFT_FUNC)
#define ALPHA_INS_BLE ((unsigned)0x3b << ALPHA_SHIFT_OP)
#define ALPHA_INS_BLT ((unsigned)0x3a << ALPHA_SHIFT_OP)
#define ALPHA_INS_BLBC ((unsigned)0x38 << ALPHA_SHIFT_OP)
#define ALPHA_INS_BLBS ((unsigned)0x3c << ALPHA_SHIFT_OP)
#define ALPHA_INS_BNE ((unsigned)0x3d << ALPHA_SHIFT_OP)
#define ALPHA_INS_BSR ((unsigned)0x34 << ALPHA_SHIFT_OP)
#define ALPHA_INS_BR ((unsigned)0x30 << ALPHA_SHIFT_OP)
#define ALPHA_INS_JMP ((unsigned)0x1a << ALPHA_SHIFT_OP)
#define ALPHA_INS_JSR ((unsigned)0x1a << ALPHA_SHIFT_OP | 1 << ALPHA_SHIFT_BRANCH_FUNC)
#define ALPHA_INS_LDA ((unsigned)0x08 << ALPHA_SHIFT_OP)
#define ALPHA_INS_LDAH ((unsigned)0x09 << ALPHA_SHIFT_OP)
#define ALPHA_INS_LDL ((unsigned)0x28 << ALPHA_SHIFT_OP)
#define ALPHA_INS_LDQ ((unsigned)0x29 << ALPHA_SHIFT_OP)
#define ALPHA_INS_RET ((unsigned)0x1a << ALPHA_SHIFT_OP | 2 << ALPHA_SHIFT_BRANCH_FUNC)
#define ALPHA_INS_STL ((unsigned)0x2c << ALPHA_SHIFT_OP)
#define ALPHA_INS_STQ ((unsigned)0x2d << ALPHA_SHIFT_OP)
#define ALPHA_INS_SUBL ((unsigned)0x10 << ALPHA_SHIFT_OP | 0x9 << ALPHA_SHIFT_FUNC)
#define ALPHA_INS_SUBQ ((unsigned)0x10 << ALPHA_SHIFT_OP | 0x29 << ALPHA_SHIFT_FUNC)
/* Bit offsets to instruction fields. */
#define ALPHA_SHIFT_OP 26
#define ALPHA_SHIFT_BRANCH_FUNC 14
#define ALPHA_SHIFT_FUNC 5
#define ALPHA_SHIFT_LITERAL 13
#define ALPHA_SHIFT_RA 21
#define ALPHA_SHIFT_RB 16
#define ALPHA_SHIFT_RC 0
#define ALPHA_SHIFT_BRANCH_DISP 0
#define ALPHA_SHIFT_DISP 0
/* Bit masks for instruction fields. */
#define ALPHA_BIT_LITERAL (1 << 12)
#define ALPHA_MASK_BRANCH_DISP 0x1fffff
#define ALPHA_MASK_BRANCH_FUNC 0xc00000
#define ALPHA_MASK_DISP 0xffff
#define ALPHA_MASK_FUNC 0x7f
#define ALPHA_MASK_LITERAL 0xff
#define ALPHA_MASK_OP 0x3f
#define ALPHA_MASK_REG 0x1f
/* Alternative assembler mnemonics for machine instruction. */
#define ALPHA_INS_CLRQ (ALPHA_INS_BIS \
| (ALPHA_REG_ZERO << ALPHA_SHIFT_RA) \
| (ALPHA_REG_ZERO << ALPHA_SHIFT_RB))
#define ALPHA_INS_LPC (ALPHA_INS_BR \
| (GTM_REG_CODEGEN_TEMP << ALPHA_SHIFT_RA))
#define ALPHA_INS_MOVE (ALPHA_INS_BIS \
| ALPHA_REG_ZERO << ALPHA_SHIFT_RB)
#define ALPHA_INS_NOP (ALPHA_INS_BIS \
| (ALPHA_REG_ZERO << ALPHA_SHIFT_RA) \
| (ALPHA_REG_ZERO << ALPHA_SHIFT_RB) \
| (ALPHA_REG_ZERO << ALPHA_SHIFT_RC))
/* Construction forms. */
#define ALPHA_BRA(op,ra,disp) ((op) | ((ra) << ALPHA_SHIFT_RA) | (disp)&ALPHA_MASK_BRANCH_DISP)
#define ALPHA_JMP(op,ra,rb) ((op) | ((ra) << ALPHA_SHIFT_RA) | ((rb) << ALPHA_SHIFT_RB))
#define ALPHA_LIT(op,ra,lit,rc) ((op) | ((ra) << ALPHA_SHIFT_RA) \
| (((lit)&ALPHA_MASK_LITERAL) << ALPHA_SHIFT_LITERAL) \
| ALPHA_BIT_LITERAL \
| ((rc) << ALPHA_SHIFT_RC))
#define ALPHA_MEM(op,ra,rb,disp)((op) | ((ra) << ALPHA_SHIFT_RA) | ((rb) << ALPHA_SHIFT_RB) | (disp)&ALPHA_MASK_DISP)
#define ALPHA_OPR(op,ra,rb,rc) ((op) | ((ra) << ALPHA_SHIFT_RA) | ((rb) << ALPHA_SHIFT_RB) | ((rc) << ALPHA_SHIFT_RC))
#ifdef DEBUG
#define GET_OPCODE(ains) ((ains >> ALPHA_SHIFT_OP) & ALPHA_MASK_OP)
#define GET_RA(ains) ((ains >> ALPHA_SHIFT_RA) & ALPHA_MASK_REG)
#define GET_RB(ains) ((ains >> ALPHA_SHIFT_RB) & ALPHA_MASK_REG)
#define GET_RC(ains) ((ains >> ALPHA_SHIFT_RC) & ALPHA_MASK_REG)
#define GET_MEMDISP(ains) ((ains >> ALPHA_SHIFT_DISP) & ALPHA_MASK_DISP)
#define GET_BRDISP(ains) ((ains >> ALPHA_SHIFT_BRANCH_DISP) & ALPHA_MASK_BRANCH_DISP)
#define GET_FUNC(ains) ((ains >> ALPHA_SHIFT_FUNC) & ALPHA_MASK_FUNC)
#define ADDL_INST "addl"
#define SUBL_INST "subl"
#define SUBQ_INST "subq"
#define BIS_INST "bis"
#define JSR_INST "jsr"
#define RET_INST "ret"
#define JMP_INST "jmp"
#define LDA_INST "lda"
#define LDAH_INST "ldah"
#define LDL_INST "ldl"
#define LDQ_INST "ldq"
#define STL_INST "stl"
#define STQ_INST "stq"
#define BR_INST "br"
#define BSR_INST "bsr"
#define BLBC_INST "blbc"
#define BEQ_INST "beq"
#define BLT_INST "blt"
#define BLE_INST "ble"
#define BLBS_INST "blbs"
#define BNE_INST "bne"
#define BGE_INST "bge"
#define BGT_INST "bgt"
#define CONSTANT "Constant 0x"
/* Space for op_code to be in */
#define OPSPC 7
#endif

View File

@ -1,27 +0,0 @@
; ################################################################
; # #
; # Copyright 2001, 2008 Fidelity Information Services, Inc #
; # #
; # This source code contains the intellectual property #
; # of its copyright holder(s), and is made available #
; # under a license. If you do not know the terms of #
; # the license, please stop and do not read further. #
; # #
; ################################################################
.title cacheflush - flush data and instruction caches
; cacheflush
;
; entry:
; a0 (r16) address of start of region to flush
; a1 (r17) length (in bytes) of region to flush
; a2 (r18) flag indicating which region to flush (not used on AXP)
$routine name=cacheflush, entry=cacheflush_ca, kind=null
imb
ret r26
$end_routine name=cacheflush

View File

@ -1,158 +0,0 @@
/****************************************************************
* *
* Copyright 2001, 2009 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
* under a license. If you do not know the terms of *
* the license, please stop and do not read further. *
* *
****************************************************************/
#include "mdef.h"
#include "stringpool.h"
#define MAX_NUM_SIZE 64
GBLREF spdesc stringpool;
static char pot_index [256] =
{
-78, 78, -77, 77, 77, 77, -76, 76, 76, -75, 75, 75, -74, 74, 74, 74,
-73, 73, 73, -72, 72, 72, -71, 71, 71, 71, -70, 70, 70, -69, 69, 69,
-68, 68, 68, -67, 67, 67, 67, -66, 66, 66, -65, 65, 65, -64, 64, 64,
64, -63, 63, 63, -62, 62, 62, -61, 61, 61, 61, -60, 60, 60, -59, 59,
59, -58, 58, 58, 58, -57, 57, 57, -56, 56, 56, -55, 55, 55, 55, -54,
54, 54, -53, 53, 53, -52, 52, 52, 52, -51, 51, 51, -50, 50, 50, -49,
49, 49, 49, -48, 48, 48, -47, 47, 47, -46, 46, 46, 46, -45, 45, 45,
-44, 44, 44, -43, 43, 43, 43, -42, 42, 42, -41, 41, 41, -40, 40, 40,
40, -39, 39, 39, -38, 38, 38, -37, 37, 37, -36, 36, 36, 36, -35, 35,
35, -34, 34, 34, -33, 33, 33, 33, -32, 32, 32, -31, 31, 31, -30, 30,
30, 30, -29, 29, 29, -28, 28, 28, -27, 27, 27, 27, -26, 26, 26, -25,
25, 25, -24, 24, 24, 24, -23, 23, 23, -22, 22, 22, -21, 21, 21, 21,
-20, 20, 20, -19, 19, 19, -18, 18, 18, 18, -17, 17, 17, -16, 16, 16,
-15, 15, 15, 15, -14, 14, 14, -13, 13, 13, -12, 12, 12, 12, -11, 11,
11, -10, 10, 10, -9, 9, 9, -8, 8, 8, 8, -7, 7, 7, -6, 6,
6, -5, 5, 5, 5, -4, 4, 4, -3, 3, 3, -2, 2, 2, 2, -1
};
static double pot [79] =
{
1.701411834604692e+38 + 2.83e+22,
1e+38, 1e+37, 1e+36, 1e+35, 1e+34, 1e+33, 1e+32,
1e+31, 1e+30, 1e+29, 1e+28, 1e+27, 1e+26, 1e+25, 1e+24,
1e+23, 1e+22, 1e+21, 1e+20, 1e+19, 1e+18, 1e+17, 1e+16,
1e+15, 1e+14, 1e+13, 1e+12, 1e+11, 1e+10, 1e+9, 1e+8,
1e+7, 1e+6, 1e+5, 1e+4, 1e+3, 1e+2, 1e+1, 1.0,
1e-1, 1e-2, 1e-3, 1e-4, 1e-5, 1e-6, 1e-7, 1e-8,
1e-9, 1e-10, 1e-11, 1e-12, 1e-13, 1e-14, 1e-15, 1e-16,
1e-17, 1e-18, 1e-19, 1e-20, 1e-21, 1e-22, 1e-23, 1e-24,
1e-25, 1e-26, 1e-27, 1e-28, 1e-29, 1e-30, 1e-31, 1e-32,
1e-33, 1e-34, 1e-35, 1e-36, 1e-37, 1e-38, 0
};
#define POT_UNITY 39 /* Subscript of pot: pot[POT_UNITY] == 1.0 */
struct D_float /* Format of D-floating point datum */
{
unsigned int : 7; /* fraction, bits 0:6 */
unsigned int exp : 8; /* exponent, bits 7:14 */
unsigned int sign : 1; /* sign, bit 15 */
unsigned int : 16; /* fraction, bits 16:31 */
unsigned int : 32; /* fraction, bits 32:63 */
};
void double2s (double *dp, mval *v)
{
double d = *dp;
char *p, *q;
int i, j, k;
ENSURE_STP_FREE_SPACE(MAX_NUM_SIZE);
assert (stringpool.free >= stringpool.base);
v->mvtype = MV_STR;
p = v->str.addr
= (char *)stringpool.free;
if (d == 0.0)
*p++ = '0';
else
{
if (d < 0.0)
{
*p++ = '-'; /* plug in a minus sign */
d = -d; /* but make d positive */
}
i = pot_index[((struct D_float *)dp)->exp];
if (i < 0)
{
i = -i;
if (d < pot[i])
++i;
}
i = POT_UNITY + 1 - i;
/* "Normalize" the number; i.e. adjust it to be between 0.0 and 1.0 */
d *= pot[i + POT_UNITY];
if (d < 5e-16)
/* Call it zero */
*p++ = '0';
else
{
/* Round the sixteenth digit */
d += 5e-16;
if (d >= 1.0)
{
/* Readjust it to be between 0.0 and 1.0 */
d /= 10.0;
++i;
}
q = p; /* q will point to the last non-zero byte */
j = i;
if (i <= 0)
{
*p++ = '.';
for (; i < 0; ++i)
*p++ = '0';
}
for (i = 15; i > 0; --i)
{
/* Multiply the value by ten, put the integer portion
of the result into k (0 <= k <= 9), and replace the
value with the fractional portion of the result */
k = d *= 10.0;
d -= k;
*p++ = '0' + k;
if (k > 0)
q = p;
if (--j == 0)
{
q = p;
*p++ = '.';
}
}
if (j > 0)
do
*p++ = '0';
while (--j > 0);
else
p = q;
}
}
v->str.len = p - (char *)stringpool.free;
stringpool.free = (unsigned char *)p;
assert(stringpool.free <= stringpool.top);
return;
}

View File

@ -1,278 +0,0 @@
/****************************************************************
* *
* Copyright 2001, 2009 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
* under a license. If you do not know the terms of *
* the license, please stop and do not read further. *
* *
****************************************************************/
#include "mdef.h"
#include "gtm_string.h"
#include "cgp.h"
#include "compiler.h"
#include <rtnhdr.h>
#include "list_file.h"
#include <emit_code.h>
GBLREF uint4 code_buf[]; /* Instruction buffer */
GBLREF int code_idx; /* Index into code_buf */
GBLREF char cg_phase; /* Current compiler phase */
GBLREF int4 curr_addr;
#ifdef DEBUG
GBLREF unsigned char *obpt; /* output buffer index */
GBLREF unsigned char outbuf[]; /* assembly language output buffer */
static unsigned int ains; /* assembler instruction (binary) */
#endif
/* Used by emit_base_offset to extract offset parts */
int alpha_adjusted_upper(int offset)
{
int upper;
upper = (offset >> 16) & 0xFFFF;
if (offset & 0x8000)
upper = (upper + 1) & 0xFFFF;
return upper;
}
void emit_base_offset(int base, int offset)
{
/* NOTE: emit_base_offset does not advance past its last
generated instruction because that instruction is
incomplete; it contains only a base and offset -- the
rt and opcode field are left empty for use by the caller. */
int upper, low, source;
switch (cg_phase)
{
#ifdef DEBUG
case CGP_ASSEMBLY:
#endif
case CGP_ADDR_OPT:
case CGP_APPROX_ADDR:
case CGP_MACHINE:
assert(base >= 0 && base <= 31);
source = base;
upper = alpha_adjusted_upper(offset);
if (0 != upper)
{
code_buf[code_idx++] = ALPHA_INS_LDAH
| (GTM_REG_CODEGEN_TEMP << ALPHA_SHIFT_RA)
| (source << ALPHA_SHIFT_RB)
| (upper & ALPHA_MASK_DISP) << ALPHA_SHIFT_DISP;
source = GTM_REG_CODEGEN_TEMP;
}
low = offset & 0xFFFF;
code_buf[code_idx] = source << ALPHA_SHIFT_RB
| (low & ALPHA_MASK_DISP) << ALPHA_SHIFT_DISP;
break;
default:
GTMASSERT;
}
}
#ifdef DEBUG
void fmt_ra()
{
*obpt++ = 'r';
obpt = i2asc(obpt, GET_RA(ains));
}
void fmt_ra_rb()
{
fmt_ra();
*obpt++ = ',';
*obpt++;
*obpt++ = 'r';
obpt = i2asc(obpt, GET_RB(ains));
}
void fmt_ra_rb_rc()
{
fmt_ra_rb();
*obpt++ = ',';
*obpt++;
*obpt++ = 'r';
obpt = i2asc(obpt, GET_RC(ains));
}
void fmt_ra_mem()
{
fmt_ra();
*obpt++ = ',';
obpt++;
*obpt++ = '0';
*obpt++ = 'x';
obpt += i2hex_nofill(GET_MEMDISP(ains), obpt, 6);
*obpt++ = '(';
*obpt++ = 'r';
obpt = i2asc(obpt, GET_RB(ains));
*obpt++ = ')';
}
void fmt_ra_brdisp()
{
fmt_ra();
*obpt++ = ',';
obpt++;
*obpt++ = '0';
*obpt++ = 'x';
obpt += i2hex_nofill(GET_BRDISP(ains) * 4, obpt, 6);
}
void format_machine_inst(void)
{
int instindx;
for (instindx = 0; instindx < code_idx; instindx++)
{
list_chkpage();
obpt = &outbuf[0];
memset(obpt, SP, ASM_OUT_BUFF);
obpt += 10;
i2hex((curr_addr - SIZEOF(rhdtyp)), (uchar_ptr_t)obpt, 8);
curr_addr += 4;
obpt += 10;
i2hex(code_buf[instindx], (uchar_ptr_t)obpt, 8);
obpt += 10;
ains = code_buf[instindx];
switch(GET_OPCODE(ains))
{
case 0x8:
memcpy(obpt, LDA_INST, SIZEOF(LDA_INST) - 1);
obpt += OPSPC;
fmt_ra_mem();
break;
case 0x9:
memcpy(obpt, LDAH_INST, SIZEOF(LDAH_INST) - 1);
obpt += OPSPC;
fmt_ra_mem();
break;
case 0x10:
/* Note opcodes 0x10, 0x11, have overlapping functions but none that we generate
so we can combine their disassembly.
*/
case 0x11:
switch(GET_FUNC(ains))
{
case 0x0: /* main opcode 0x10 */
memcpy(obpt, ADDL_INST, SIZEOF(ADDL_INST) - 1);
break;
case 0x9: /* main opcode 0x10 */
memcpy(obpt, SUBL_INST, SIZEOF(SUBL_INST) - 1);
break;
case 0x29: /* main opcode 0x10 */
memcpy(obpt, SUBQ_INST, SIZEOF(SUBQ_INST) - 1);
break;
case 0x20: /* main opcode 0x11 */
memcpy(obpt, BIS_INST, SIZEOF(BIS_INST) - 1);
break;
default:
GTMASSERT;
}
obpt += OPSPC;
fmt_ra_rb_rc();
break;
case 0x1a:
switch(GET_MEMDISP(ains) & 0x3)
{
case 0x0:
memcpy(obpt, JMP_INST, SIZEOF(JMP_INST) - 1);
break;
case 0x1:
memcpy(obpt, JSR_INST, SIZEOF(JSR_INST) - 1);
break;
case 0x2:
memcpy(obpt, RET_INST, SIZEOF(RET_INST) - 1);
break;
default:
GTMASSERT;
}
obpt += OPSPC;
fmt_ra_rb();
break;
case 0x28:
memcpy(obpt, LDL_INST, SIZEOF(LDL_INST) - 1);
obpt += OPSPC;
fmt_ra_mem();
break;
case 0x29:
memcpy(obpt, LDQ_INST, SIZEOF(LDQ_INST) - 1);
obpt += OPSPC;
fmt_ra_mem();
break;
case 0x2c:
memcpy(obpt, STL_INST, SIZEOF(STL_INST) - 1);
obpt += OPSPC;
fmt_ra_mem();
break;
case 0x2d:
memcpy(obpt, STQ_INST, SIZEOF(STQ_INST) - 1);
obpt += OPSPC;
fmt_ra_mem();
break;
case 0x30:
memcpy(obpt, BR_INST, SIZEOF(BR_INST) - 1);
obpt += OPSPC;
fmt_ra_brdisp();
break;
case 0x34:
memcpy(obpt, BSR_INST, SIZEOF(BSR_INST) - 1);
obpt += OPSPC;
fmt_ra_brdisp();
break;
case 0x38:
memcpy(obpt, BLBC_INST, SIZEOF(BLBC_INST) - 1);
obpt += OPSPC;
fmt_ra_brdisp();
break;
case 0x39:
memcpy(obpt, BEQ_INST, SIZEOF(BEQ_INST) - 1);
obpt += OPSPC;
fmt_ra_brdisp();
break;
case 0x3a:
memcpy(obpt, BLT_INST, SIZEOF(BLT_INST) - 1);
obpt += OPSPC;
fmt_ra_brdisp();
break;
case 0x3b:
memcpy(obpt, BLE_INST, SIZEOF(BLE_INST) - 1);
obpt += OPSPC;
fmt_ra_brdisp();
break;
case 0x3c:
memcpy(obpt, BLBS_INST, SIZEOF(BLBS_INST) - 1);
obpt += OPSPC;
fmt_ra_brdisp();
break;
case 0x3d:
memcpy(obpt, BNE_INST, SIZEOF(BNE_INST) - 1);
obpt += OPSPC;
fmt_ra_brdisp();
break;
case 0x3e:
memcpy(obpt, BGE_INST, SIZEOF(BGE_INST) - 1);
obpt += OPSPC;
fmt_ra_brdisp();
break;
case 0x3f:
memcpy(obpt, BGT_INST, SIZEOF(BGT_INST) - 1);
obpt += OPSPC;
fmt_ra_brdisp();
break;
default: /* Not an instruction but a constant */
memcpy(obpt, CONSTANT, SIZEOF(CONSTANT) - 1);
obpt += SIZEOF(CONSTANT) - 1;
i2hex(ains, obpt, 8);
obpt += 8;
}
emit_eoi();
}
}
#endif

View File

@ -1,206 +0,0 @@
/****************************************************************
* *
* Copyright 2003, 2009 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
* under a license. If you do not know the terms of *
* the license, please stop and do not read further. *
* *
****************************************************************/
#ifndef EMIT_CODE_SP_INCLUDED
#define EMIT_CODE_SP_INCLUDED
#include "axp_registers.h"
#include "axp_gtm_registers.h"
#include "axp.h"
void emit_base_offset(int base, int offset);
int alpha_adjusted_upper(int offset);
#ifdef DEBUG
void format_machine_inst(void);
void fmt_ra(void);
void fmt_ra_rb(void);
void fmt_ra_rb_rc(void);
void fmt_ra_mem(void);
void fmt_ra_brdisp(void);
#endif
#define INST_SIZE (int)SIZEOF(uint4)
#define BRANCH_OFFSET_FROM_IDX(idx_start, idx_end) (idx_end - (idx_start + 1))
#define LONG_JUMP_OFFSET (0x4ffffffc) /* should be large enough to force the long jump instruction sequence */
#define MAX_BRANCH_CODEGEN_SIZE 32 /* The length in bytes, of the longest form of branch instruction sequence */
#define MAX_OFFSET 0x3fff
#define STACK_ARG_OFFSET(indx) (8 * (indx)) /* All arguments on Alpha platforms are 8 bytes wide on stack */
#define MACHINE_FIRST_ARG_REG ALPHA_REG_A0
/* Register usage in some of the code generation expansions */
#define CALLS_TINT_TEMP_REG ALPHA_REG_R1
#define CLRL_REG ALPHA_REG_ZERO
#define CMPL_TEMP_REG ALPHA_REG_T1
#define GET_ARG_REG(indx) (ALPHA_REG_A0 + (indx))
#define MOVC3_SRC_REG ALPHA_REG_R0
#define MOVC3_TRG_REG ALPHA_REG_R1
#define MOVL_RETVAL_REG ALPHA_REG_V0
#define MOVL_REG_R1 ALPHA_REG_R1
/* Macros to define the opcodes for use in emit_jmp() and emit_tip() args */
#define GENERIC_OPCODE_BEQ ((uint4)ALPHA_INS_BEQ)
#define GENERIC_OPCODE_BGE ((uint4)ALPHA_INS_BGE)
#define GENERIC_OPCODE_BGT ((uint4)ALPHA_INS_BGT)
#define GENERIC_OPCODE_BLE ((uint4)ALPHA_INS_BLE)
#define GENERIC_OPCODE_BLT ((uint4)ALPHA_INS_BLT)
#define GENERIC_OPCODE_BNE ((uint4)ALPHA_INS_BNE)
#define GENERIC_OPCODE_BLBC ((uint4)ALPHA_INS_BLBC)
#define GENERIC_OPCODE_BLBS ((uint4)ALPHA_INS_BLBS)
#define GENERIC_OPCODE_BR ((uint4)ALPHA_INS_BR)
#define GENERIC_OPCODE_LDA ((uint4)ALPHA_INS_LDA)
#define GENERIC_OPCODE_LOAD ((uint4)ALPHA_INS_LDL)
#define GENERIC_OPCODE_STORE ((uint4)ALPHA_INS_STL)
#define GENERIC_OPCODE_NOP ((uint4)ALPHA_INS_NOP)
/* Macro to extract parts of generic opcodes */
#define GENXCT_LOAD_SRCREG(inst) ((inst >> ALPHA_SHIFT_RB) & ALPHA_MASK_REG)
/* Macros to create specific generated code sequences */
/* Note that the GEN_CLEAR/SET_TRUTH macros are only used on VMS (TRUTH_IN_REG) */
#define GEN_CLEAR_TRUTH code_buf[code_idx++] = (ALPHA_INS_STL | ALPHA_REG_ZERO << ALPHA_SHIFT_RA \
| GTM_REG_DOLLAR_TRUTH << ALPHA_SHIFT_RB \
| 0 << ALPHA_SHIFT_DISP)
#define GEN_SET_TRUTH { \
code_buf[code_idx++] = (ALPHA_INS_BIS | ALPHA_REG_ZERO << ALPHA_SHIFT_RA \
| 1 << ALPHA_SHIFT_LITERAL | ALPHA_BIT_LITERAL \
| GTM_REG_CODEGEN_TEMP << ALPHA_SHIFT_RC); \
code_buf[code_idx++] = (ALPHA_INS_STL | GTM_REG_CODEGEN_TEMP << ALPHA_SHIFT_RA \
| GTM_REG_DOLLAR_TRUTH << ALPHA_SHIFT_RB \
| 0 << ALPHA_SHIFT_DISP); \
}
#define GEN_LOAD_ADDR(reg, breg, disp) code_buf[code_idx++] = (ALPHA_INS_LDA | reg << ALPHA_SHIFT_RA \
| breg << ALPHA_SHIFT_RB \
| (disp & ALPHA_MASK_DISP) << ALPHA_SHIFT_DISP)
#define GEN_LOAD_WORD(reg, breg, disp) code_buf[code_idx++] = (ALPHA_INS_LDL | reg << ALPHA_SHIFT_RA \
| breg << ALPHA_SHIFT_RB \
| (disp & ALPHA_MASK_DISP) << ALPHA_SHIFT_DISP)
#define GEN_STORE_WORD(reg, breg, disp) code_buf[code_idx++] = (ALPHA_INS_STL | reg << ALPHA_SHIFT_RA \
| breg << ALPHA_SHIFT_RB \
| (disp & ALPHA_MASK_DISP) << ALPHA_SHIFT_DISP)
#define GEN_LOAD_IMMED(reg, disp) GEN_LOAD_ADDR(reg, ALPHA_REG_ZERO, disp)
#define GEN_CLEAR_WORD_EMIT(reg) emit_trip(*(fst_opr + *inst++), TRUE, ALPHA_INS_STL, reg)
#define GEN_LOAD_WORD_EMIT(reg) emit_trip(*(fst_opr + *inst++), TRUE, ALPHA_INS_LDL, reg)
#define GEN_SUBTRACT_REGS(src1, src2, trgt) \
code_buf[code_idx++] = (ALPHA_INS_SUBL \
| src1 << ALPHA_SHIFT_RA \
| src2 << ALPHA_SHIFT_RB \
| trgt << ALPHA_SHIFT_RC)
#define GEN_ADD_IMMED(reg, imval) code_buf[code_idx++] = (ALPHA_INS_ADDL \
| reg << ALPHA_SHIFT_RA \
| imval << ALPHA_SHIFT_LITERAL | ALPHA_BIT_LITERAL \
| reg << ALPHA_SHIFT_RC)
#define GEN_JUMP_REG(reg) code_buf[code_idx++] = (ALPHA_INS_JMP | ALPHA_REG_ZERO << ALPHA_SHIFT_RA \
| reg << ALPHA_SHIFT_RB)
#define GEN_STORE_ARG(reg, offset) code_buf[code_idx++] = (ALPHA_INS_STQ | reg << ALPHA_SHIFT_RA \
| ALPHA_REG_SP << ALPHA_SHIFT_RB \
| (offset & ALPHA_MASK_DISP) << ALPHA_SHIFT_DISP)
#define GEN_PCREL code_buf[code_idx++] = (ALPHA_INS_LPC)
#define GEN_MOVE_REG(trg, src) code_buf[code_idx++] = (ALPHA_INS_MOVE | src << ALPHA_SHIFT_RA | trg << ALPHA_SHIFT_RC)
#if defined(__vms)
/* CALL_INST_SIZE is the byte length of the minimum-length instruction sequence to implement a transfer
* table call. In the case of OpenVMS AXP, this is the sequence:
*
* ldl r27, xfer(r11) ; get address of procedure descriptor from transfer table
* ldq r26, 8(r27) ; get code address of procedure from procedure descriptor
* jmp r26, (r26) ; call it
*
* This value is used to determine how to adjust the offset value for a relative call and may not
* be appropriate for the Alpha because VAX relative calls are emulated on the Alpha differently.
*/
# define CALL_INST_SIZE (3 * INST_SIZE)
# define GEN_XFER_TBL_CALL(xfer) \
{ \
emit_base_offset(GTM_REG_XFER_TABLE, xfer); \
code_buf[code_idx++] |= ALPHA_INS_LDL | ALPHA_REG_PV << ALPHA_SHIFT_RA; \
emit_base_offset(ALPHA_REG_PV, 8); \
code_buf[code_idx++] |= ALPHA_INS_LDQ | ALPHA_REG_RA << ALPHA_SHIFT_RA; \
code_buf[code_idx++] = ALPHA_INS_JSR | ALPHA_REG_RA << ALPHA_SHIFT_RA | ALPHA_REG_RA << ALPHA_SHIFT_RB; \
}
#elif defined(__osf__)
/* CALL_INST_SIZE is the byte length of the minimum-length instruction sequence to implement a transfer
* table call. In the case of OSF/1 (Digital Unix) AXP, this is the sequence:
*
* ldl r27, offset(r12) # get address of entry point from transfer table
* jmp r26, (r27) # call it
*
* This value is used to determine how to adjust the offset value for a relative call and may not
* be appropriate for the Alpha because VAX relative calls are emulated on the Alpha differently.
*/
# define CALL_INST_SIZE (2 * INST_SIZE)
# define GEN_XFER_TBL_CALL(xfer) \
{ \
emit_base_offset(GTM_REG_XFER_TABLE, xfer); \
code_buf[code_idx++] |= ALPHA_INS_LDL | ALPHA_REG_PV << ALPHA_SHIFT_RA; \
code_buf[code_idx++] = ALPHA_INS_JSR | ALPHA_REG_RA << ALPHA_SHIFT_RA | ALPHA_REG_PV << ALPHA_SHIFT_RB; \
}
#else
# error "Unsupported platform"
#endif
/* Macros to return an instruction value. This is typcically used to modify an instruction
that is already in the instruction buffer such as the last instruction that was created
by emit_pcrel().
*/
#define IGEN_COND_BRANCH_REG_OFFSET(opcode, reg, disp) (opcode | ((reg & ALPHA_MASK_REG) << ALPHA_SHIFT_RA) \
| ((disp & ALPHA_MASK_DISP) << ALPHA_SHIFT_BRANCH_DISP))
#define IGEN_UCOND_BRANCH_REG_OFFSET(opcode, reg, disp) IGEN_COND_BRANCH_REG_OFFSET(opcode, reg, disp)
#define IGEN_LOAD_ADDR_REG(reg) (ALPHA_INS_LDA | (reg & ALPHA_MASK_REG) << ALPHA_SHIFT_RA)
#define IGEN_LOAD_WORD_REG(reg) (ALPHA_INS_LDL | (reg & ALPHA_MASK_REG) << ALPHA_SHIFT_RA)
#define IGEN_LOAD_NATIVE_REG(reg) IGEN_LOAD_WORD_REG(reg)
#define IGEN_COND_BRANCH_OFFSET(disp) ((disp & ALPHA_MASK_BRANCH_DISP) << ALPHA_SHIFT_BRANCH_DISP)
#define IGEN_UCOND_BRANCH_OFFSET(disp) IGEN_COND_BRANCH_OFFSET(disp)
#define IGEN_LOAD_LINKAGE(reg) (ALPHA_INS_LDQ | (reg & ALPHA_MASK_REG) << ALPHA_SHIFT_RA)
#define IGEN_GENERIC_REG(opcode, reg) (opcode | ((reg & ALPHA_MASK_REG) << ALPHA_SHIFT_RA))
/* Some macros that are used in certain routines in emit_code.c. The names of these
macros start with the routine name they are used in.
*/
/* Branch has origin of +1 instructions. However, if the branch was nullified in an earlier shrink_trips,
* the origin is the current instruction itself */
#define EMIT_JMP_ADJUST_BRANCH_OFFSET branch_offset = ((branch_offset != 0) ? branch_offset - 1 : 0)
/* Can jump be done within range of immediate operand */
#define EMIT_JMP_SHORT_CODE_CHECK (branch_offset >= (-(ALPHA_MASK_BRANCH_DISP/2) - 1) \
&& branch_offset <= (ALPHA_MASK_BRANCH_DISP/2))
/* Emit the short jump */
#define EMIT_JMP_SHORT_CODE_GEN \
{ \
code_buf[code_idx++] = (branchop | (reg << ALPHA_SHIFT_RA) \
| ((branch_offset & ALPHA_MASK_BRANCH_DISP) << ALPHA_SHIFT_BRANCH_DISP)); \
branch_offset--; \
}
/* Is this a conditional branch? */
#define EMIT_JMP_OPPOSITE_BR_CHECK (branchop != ALPHA_INS_BR && (branchop != ALPHA_INS_BEQ || reg != ALPHA_REG_ZERO))
#define EMIT_JMP_GEN_COMPARE /* No compare necessary */
#define EMIT_JMP_LONG_CODE_CHECK FALSE
/* Is the offset field in this instruction zero? */
#define EMIT_JMP_ZERO_DISP_COND (0 == ((code_buf[code_idx] >> ALPHA_SHIFT_DISP) & ALPHA_MASK_DISP))
/* Emit code to load a given numeric literal */
#define EMIT_TRIP_ILIT_GEN { /* Emit liternal number */ \
emit_base_offset(ALPHA_REG_ZERO, immediate); \
code_buf[code_idx++] |= (ALPHA_INS_LDA | \
(trg_reg & ALPHA_MASK_REG) << ALPHA_SHIFT_RA); \
}
/*
* GT.M on AIX and SPARC is 64bit
* By default the loads/stores use ldd/std(load double),
* but if the value being dealt with is a word,the
* opcode in generic_inst is changed to ldw/stw
*/
#define REVERT_GENERICINST_TO_WORD(inst)
#endif

View File

@ -1,32 +0,0 @@
; ################################################################
; # #
; # Copyright 2001, 2008 Fidelity Information Services, Inc #
; # #
; # This source code contains the intellectual property #
; # of its copyright holder(s), and is made available #
; # under a license. If you do not know the terms of #
; # the license, please stop and do not read further. #
; # #
; ################################################################
.title FOLLOW "Allows run-time modules to call OP_FOLLOW"
; FOLLOW simply passes its two arguments, which are pointers to
; mval's, to OP_FOLLOW, which expects them in registers r0 and r1.
; OP_FOLLOW returns 1, 0, or -1; FOLLOW returns a boolean result:
; 1 (true) if OP_FOLLOW returned 1, otherwise 0 (false).
$routine FOLLOW, entry=FOLLOW_CA, kind=stack
.base r27, $ls
sextl r16, r0
sextl r17, r1
$call OP_FOLLOW, set_arg_info=false
sextl r0, r0
cmovlt r0, 0, r0
$return
$end_routine
.end

View File

@ -1,17 +0,0 @@
/****************************************************************
* *
* Copyright 2001 Sanchez Computer Associates, Inc. *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
* under a license. If you do not know the terms of *
* the license, please stop and do not read further. *
* *
****************************************************************/
/*** STUB FILE ***/
#include "mdef.h"
#include "error.h"
void gtm_dump(void) {};

View File

@ -1,24 +0,0 @@
; ################################################################
; # #
; # Copyright 2001, 2008 Fidelity Information Services, Inc #
; # #
; # This source code contains the intellectual property #
; # of its copyright holder(s), and is made available #
; # under a license. If you do not know the terms of #
; # the license, please stop and do not read further. #
; # #
; ################################################################
.title inst_flush flush instruction cache
; inst_flush is a C-callable routine that makes the instruction cache coherent with memory.
$routine name=inst_flush,entry=inst_flush_ca,kind=null
imb
ret r26
$end_routine name=inst_flush
.end

View File

@ -1,51 +0,0 @@
.title mint2mval "Convert integer to mval"
; ###############################################################
; # #
; # Copyright 2001, 2004 Sanchez Computer Associates, Inc. #
; # #
; # This source code contains the intellectual property #
; # of its copyright holder(s), and is made available #
; # under a license. If you do not know the terms of #
; # the license, please stop and do not read further. #
; # #
; ###############################################################
; On input, r1 = integer value, r0 -> mval
mval$def
$linkage_section
int_hi_val:
.quad INT_HI
$routine MINT2MVAL, entry=MINT2MVAL_CA, kind=null
lda sp, -24(sp)
stq r26, (sp)
stq r13, 8(sp)
mov r27, r13
.base r13, $ls
ldq r22, int_hi_val
cmplt r1, r22, r28
beq r28, 11$ ; int >= INT_HI
negq r22, r22
cmple r1, r22, r28
bne r28, 11$ ; int <= -INT_HI
mv_i2mval r1, r0
12$: ldq r26, (sp)
ldq r13, 8(sp)
lda sp, 24(sp)
ret r26
11$: mov r0, r16
mov r1, r17
$call I2MVAL, args=<r16, r17>, set_arg_info=false, nonstandard=true
br 12$
$end_routine
.end

View File

@ -1,21 +0,0 @@
; ################################################################
; # #
; # Copyright 2001, 2008 Fidelity Information Services, Inc #
; # #
; # This source code contains the intellectual property #
; # of its copyright holder(s), and is made available #
; # under a license. If you do not know the terms of #
; # the license, please stop and do not read further. #
; # #
; ################################################################
.title movq move quadword
$routine name=movq,entry=movq_ca,kind=null
ldq r28, (r16)
stq r28, (r17)
ret r26
$end_routine name=movq

View File

@ -1,39 +0,0 @@
; ################################################################
; # #
; # Copyright 2000, 2008 Fidelity Information Services, Inc #
; # #
; # This source code contains the intellectual property #
; # of its copyright holder(s), and is made available #
; # under a license. If you do not know the terms of #
; # the license, please stop and do not read further. #
; # #
; ################################################################
.title mval2bool "Sets condition code from mval"
; On entry, r1 -> mval.
; On exit, r24 = numeric value of mval
mval$def
$routine MVAL2BOOL, entry=MVAL2BOOL_CA, kind=null
lda sp, -24(sp)
stq r26, (sp)
stq r13, 8(sp)
mov r27, r13
.base r13, $ls
mv_force_defined r1
stq r1, 16(sp)
mv_force_num (r1)
ldq r1, 16(sp)
ldl r24, mval$l_m1(r1)
ldq r26, (sp)
ldq r13, 8(sp)
lda sp, 24(sp)
ret r26
$end_routine
.end

View File

@ -1,39 +0,0 @@
; ################################################################
; # #
; # Copyright 2000, 2008 Fidelity Information Services, Inc #
; # #
; # This source code contains the intellectual property #
; # of its copyright holder(s), and is made available #
; # under a license. If you do not know the terms of #
; # the license, please stop and do not read further. #
; # #
; ################################################################
.title mval2mint "Converts an mval to integer"
; On entry, r1 -> mval
; On exit, r0 = integer value
mval$def
$routine MVAL2MINT, entry=MVAL2MINT_CA, kind=null
lda sp, -24(sp)
stq r26, (sp)
stq r13, 8(sp)
mov r27, r13
.base r13, $ls
mv_force_defined r1
stq r1, 16(sp)
mv_force_num (r1)
ldq r16, 16(sp)
$call MVAL2I, args=<r16>, set_arg_info=false, nonstandard=true
ldq r26, (sp)
ldq r13, 8(sp)
lda sp, 24(sp)
ret r26
$end_routine
.end

View File

@ -1,457 +0,0 @@
/****************************************************************
* *
* Copyright 2001 Sanchez Computer Associates, Inc. *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
* under a license. If you do not know the terms of *
* the license, please stop and do not read further. *
* *
****************************************************************/
/* Object record types: */
#define EOBJ$C_EMH 8
#define EOBJ$C_EEOM 9
#define EOBJ$C_EGSD 10
#define EOBJ$C_ETIR 11
#define EOBJ$C_EDBG 12
#define EOBJ$C_ETBT 13
#define EOBJ$C_MAXRECTYP 13
/* Byte offsets into object record and related constants: */
#define EOBJ$K_SUBTYP 4
#define EOBJ$C_SUBTYP 4
#define EOBJ$C_MAXRECSIZ 8192
#define EOBJ$C_STRLVL 2
#define EOBJ$C_SYMSIZ 31
#define EOBJ$C_STOREPLIM -1
#define EOBJ$C_PSCALILIM 16
#define EOBJ$S_EOBJRECDEF 10
#define EOBJ$W_RECTYP 0
#define EOBJ$W_SIZE 2
#define EOBJ$W_SUBTYP 4
#define EOBJ$B_MHD_STRLV 6
#define EOBJ$B_MHD_HOLD 7
#define EOBJ$W_MHD_RECSZ 8
#define EOBJ$T_MHD_NAME 10
/* Object header record (EOBJ$C_EMH) subtypes: */
#define EMH$C_MHD 0
#define EMH$C_LNM 1
#define EMH$C_SRC 2
#define EMH$C_TTL 3
#define EMH$C_CPR 4
#define EMH$C_MTC 5
#define EMH$C_GTX 6
#define EMH$C_MAXHDRTYP 6
/* Byte offsets of fields in object header record (EOBJ$C_EMH): */
#define EMH$S_EMHDEF 52
#define EMH$W_RECTYP 0
#define EMH$W_SIZE 2
#define EMH$W_HDRTYP 4
#define EMH$B_STRLVL 6
#define EMH$B_TEMP 7
#define EMH$L_ARCH1 8
#define EMH$L_ARCH2 12
#define EMH$L_RECSIZ 16
#define EMH$B_NAMLNG 20
#define EMH$S_NAME 31
#define EMH$T_NAME 21
#define EEOM$C_SUCCESS 0
#define EEOM$C_WARNING 1
#define EEOM$C_ERROR 2
#define EEOM$C_ABORT 3
#define EEOM$K_EOMMIN 10
#define EEOM$C_EOMMIN 10
#define EEOM$K_EOMMX1 10
#define EEOM$C_EOMMX1 10
#define EEOM$M_WKTFR 0X1
#define EEOM$K_EOMMAX 24
#define EEOM$C_EOMMAX 24
#define EEOM$S_EEOMDEF 24
#define EEOM$W_RECTYP 0
#define EEOM$W_SIZE 2
#define EEOM$L_TOTAL_LPS 4
#define EEOM$W_COMCOD 8
#define EEOM$B_TFRFLG 10
#define EEOM$V_WKTFR 0
#define EEOM$B_TEMP 11
#define EEOM$L_PSINDX 12
#define EEOM$S_TFRADR 8
#define EEOM$Q_TFRADR 16
#define EEOM$L_TFRADR 16
#define EGSD$K_ENTRIES 2
#define EGSD$C_ENTRIES 2
#define EGSD$C_PSC 0
#define EGSD$C_SYM 1
#define EGSD$C_IDC 2
#define EGSD$C_ENV 3
#define EGSD$C_LSY 4
#define EGSD$C_SPSC 5
#define EGSD$C_SYMV 6
#define EGSD$C_SYMM 7
#define EGSD$C_SYMG 8
#define EGSD$C_MAXRECTYP 8
#define EGSD$S_EGSDEF 12
#define EGSD$W_RECTYP 0
#define EGSD$W_RECSIZ 2
#define EGSD$L_ALIGNLW 4
#define EGSD$W_GSDTYP 8
#define EGSD$W_GSDSIZ 10
#define EGPS$M_PIC 0X1
#define EGPS$M_LIB 0X2
#define EGPS$M_OVR 0X4
#define EGPS$M_REL 0X8
#define EGPS$M_GBL 0X10
#define EGPS$M_SHR 0X20
#define EGPS$M_EXE 0X40
#define EGPS$M_RD 0X80
#define EGPS$M_WRT 0X100
#define EGPS$M_VEC 0X200
#define EGPS$M_NOMOD 0X400
#define EGPS$M_COM 0X800
#define EGPS$K_NAME 12
#define EGPS$C_NAME 12
#define EGPS$S_EGPSDEF 44
#define EGPS$W_GSDTYP 0
#define EGPS$T_START 0
#define EGPS$W_SIZE 2
#define EGPS$B_ALIGN 4
#define EGPS$B_TEMP 5
#define EGPS$W_FLAGS 6
#define EGPS$V_PIC 0
#define EGPS$V_LIB 1
#define EGPS$V_OVR 2
#define EGPS$V_REL 3
#define EGPS$V_GBL 4
#define EGPS$V_SHR 5
#define EGPS$V_EXE 6
#define EGPS$V_RD 7
#define EGPS$V_WRT 8
#define EGPS$V_VEC 9
#define EGPS$V_NOMOD 10
#define EGPS$V_COM 11
#define EGPS$L_ALLOC 8
#define EGPS$B_NAMLNG 12
#define EGPS$S_NAME 31
#define EGPS$T_NAME 13
#define ESGPS$M_PIC 0X1
#define ESGPS$M_LIB 0X2
#define ESGPS$M_OVR 0X4
#define ESGPS$M_REL 0X8
#define ESGPS$M_GBL 0X10
#define ESGPS$M_SHR 0X20
#define ESGPS$M_EXE 0X40
#define ESGPS$M_RD 0X80
#define ESGPS$M_WRT 0X100
#define ESGPS$M_VEC 0X200
#define ESGPS$M_NOMOD 0X400
#define ESGPS$M_COM 0X800
#define ESGPS$K_NAME 25
#define ESGPS$C_NAME 25
#define ESGPS$S_ESGPSDEF 56
#define ESGPS$W_GSDTYP 0
#define ESGPS$T_START 0
#define ESGPS$W_SIZE 2
#define ESGPS$B_ALIGN 4
#define ESGPS$B_TEMP 5
#define ESGPS$W_FLAGS 6
#define ESGPS$V_PIC 0
#define ESGPS$V_LIB 1
#define ESGPS$V_OVR 2
#define ESGPS$V_REL 3
#define ESGPS$V_GBL 4
#define ESGPS$V_SHR 5
#define ESGPS$V_EXE 6
#define ESGPS$V_RD 7
#define ESGPS$V_WRT 8
#define ESGPS$V_VEC 9
#define ESGPS$V_NOMOD 10
#define ESGPS$V_COM 11
#define ESGPS$L_ALLOC 8
#define ESGPS$L_BASE 12
#define ESGPS$S_VALUE 8
#define ESGPS$Q_VALUE 16
#define ESGPS$L_VALUE 16
#define ESGPS$B_NAMLNG 24
#define ESGPS$S_NAME 31
#define ESGPS$T_NAME 25
#define EGSY$M_WEAK 0X1
#define EGSY$M_DEF 0X2
#define EGSY$M_UNI 0X4
#define EGSY$M_REL 0X8
#define EGSY$M_COMM 0X10
#define EGSY$M_VECEP 0X20
#define EGSY$M_NORM 0X40
#define EGSY$S_EGSYDEF 8
#define EGSY$W_GSDTYP 0
#define EGSY$T_START 0
#define EGSY$W_SIZE 2
#define EGSY$B_DATYP 4
#define EGSY$B_TEMP 5
#define EGSY$W_FLAGS 6
#define EGSY$V_WEAK 0
#define EGSY$V_DEF 1
#define EGSY$V_UNI 2
#define EGSY$V_REL 3
#define EGSY$V_COMM 4
#define EGSY$V_VECEP 5
#define EGSY$V_NORM 6
#define EGST$K_NAME 37
#define EGST$C_NAME 37
#define EGST$S_EGSTDEF 68
#define EGST$W_GSDTYP 0
#define EGST$T_START 0
#define EGST$W_SIZE 2
#define EGST$B_DATYP 4
#define EGST$B_TEMP 5
#define EGST$W_FLAGS 6
#define EGST$S_VALUE 8
#define EGST$Q_VALUE 8
#define EGST$L_VALUE 8
#define EGST$S_LP_1 8
#define EGST$Q_LP_1 16
#define EGST$L_LP_1 16
#define EGST$S_LP_2 8
#define EGST$Q_LP_2 24
#define EGST$L_LP_2 24
#define EGST$L_PSINDX 32
#define EGST$B_NAMLNG 36
#define EGST$S_NAME 31
#define EGST$T_NAME 37
#define ESDF$K_NAME 33
#define ESDF$C_NAME 33
#define ESDF$S_ESDFDEF 64
#define ESDF$W_GSDTYP 0
#define ESDF$T_START 0
#define ESDF$W_SIZE 2
#define ESDF$B_DATYP 4
#define ESDF$B_TEMP 5
#define ESDF$W_FLAGS 6
#define ESDF$S_VALUE 8
#define ESDF$Q_VALUE 8
#define ESDF$L_VALUE 8
#define ESDF$S_CODE_ADDRESS 8
#define ESDF$Q_CODE_ADDRESS 16
#define ESDF$L_CODE_ADDRESS 16
#define ESDF$L_CA_PSINDX 24
#define ESDF$L_PSINDX 28
#define ESDF$B_NAMLNG 32
#define ESDF$S_NAME 31
#define ESDF$T_NAME 33
#define ESDFV$K_NAME 25
#define ESDFV$C_NAME 25
#define ESDFV$S_ESDFVDEF 56
#define ESDFV$W_GSDTYP 0
#define ESDFV$T_START 0
#define ESDFV$W_SIZE 2
#define ESDFV$B_DATYP 4
#define ESDFV$B_TEMP 5
#define ESDFV$W_FLAGS 6
#define ESDFV$S_VALUE 8
#define ESDFV$Q_VALUE 8
#define ESDFV$L_VALUE 8
#define ESDFV$L_PSINDX 16
#define ESDFV$L_VECTOR 20
#define ESDFV$B_NAMLNG 24
#define ESDFV$S_NAME 31
#define ESDFV$T_NAME 25
#define ESDFM$K_NAME 25
#define ESDFM$C_NAME 25
#define ESDFM$S_ESDFMDEF 56
#define ESDFM$W_GSDTYP 0
#define ESDFM$T_START 0
#define ESDFM$W_SIZE 2
#define ESDFM$B_DATYP 4
#define ESDFM$B_TEMP 5
#define ESDFM$W_FLAGS 6
#define ESDFM$S_VALUE 8
#define ESDFM$Q_VALUE 8
#define ESDFM$L_VALUE 8
#define ESDFM$L_PSINDX 16
#define ESDFM$L_VERSION_MASK 20
#define ESDFM$B_NAMLNG 24
#define ESDFM$S_NAME 31
#define ESDFM$T_NAME 25
#define ESRF$K_NAME 9
#define ESRF$C_NAME 9
#define ESRF$S_ESRFDEF 40
#define ESRF$W_GSDTYP 0
#define ESRF$T_START 0
#define ESRF$W_SIZE 2
#define ESRF$B_DATYP 4
#define ESRF$B_TEMP 5
#define ESRF$W_FLAGS 6
#define ESRF$B_NAMLNG 8
#define ESRF$S_NAME 31
#define ESRF$T_NAME 9
#define EIDC$C_LEQ 0
#define EIDC$C_EQUAL 1
#define EIDC$S_EIDCDEF 7
#define EIDC$W_GSDTYP 0
#define EIDC$W_SIZE 2
#define EIDC$B_NAMLNG 4
#define EIDC$T_NAME 5
#define EIDC$W_FLAGS 5
#define EIDC$V_BINIDENT 0
#define EIDC$S_IDMATCH 2
#define EIDC$V_IDMATCH 1
#define EIDC$S_ERRSEV 3
#define EIDC$V_ERRSEV 3
#define EENV$M_DEF 0X1
#define EENV$M_NESTED 0X2
#define EENV$S_EENVDEF 40
#define EENV$W_GSDTYP 0
#define EENV$W_SIZE 2
#define EENV$W_FLAGS 4
#define EENV$V_DEF 0
#define EENV$V_NESTED 1
#define EENV$W_ENVINDX 6
#define EENV$B_NAMLNG 8
#define EENV$S_NAME 31
#define EENV$T_NAME 9
#define ELSY$M_WEAK 0X1
#define ELSY$M_DEF 0X2
#define ELSY$M_UNI 0X4
#define ELSY$M_REL 0X8
#define ELSY$S_ELSYDEF 14
#define ELSY$W_GSDTYP 0
#define ELSY$T_START 0
#define ELSY$W_SIZE 2
#define ELSY$B_DATYP 4
#define ELSY$B_TEMP1 5
#define ELSY$W_FLAGS 6
#define ELSY$V_WEAK 0
#define ELSY$V_DEF 1
#define ELSY$V_UNI 2
#define ELSY$V_REL 3
#define ELSY$L_PSINDX 8
#define ELSY$W_ENVINDX 12
#define ELSRF$K_NAME 17
#define ELSRF$C_NAME 17
#define ELSRF$S_ELSRFDEF 48
#define ELSRF$W_GSDTYP 0
#define ELSRF$T_START 0
#define ELSRF$W_SIZE 2
#define ELSRF$B_DATYP 4
#define ELSRF$B_TEMP1 5
#define ELSRF$W_FLAGS 6
#define ELSRF$L_PSINDX 8
#define ELSRF$W_ENVINDX 12
#define ELSRF$W_TEMP2 14
#define ELSRF$B_NAMLNG 16
#define ELSRF$S_NAME 31
#define ELSRF$T_NAME 17
#define ELSDF$K_NAME 25
#define ELSDF$C_NAME 25
#define ELSDF$S_ELSDFDEF 56
#define ELSDF$W_GSDTYP 0
#define ELSDF$T_START 0
#define ELSDF$W_SIZE 2
#define ELSDF$B_DATYP 4
#define ELSDF$B_TEMP1 5
#define ELSDF$W_FLAGS 6
#define ELSDF$S_VALUE 8
#define ELSDF$Q_VALUE 8
#define ELSDF$L_VALUE 8
#define ELSDF$L_PSINDX 16
#define ELSDF$W_ENVINDX 20
#define ELSDF$W_TEMP2 22
#define ELSDF$B_NAMLNG 24
#define ELSDF$S_NAME 31
#define ELSDF$T_NAME 25
/* ETIR command types: */
/* ETIR stack commands: */
#define ETIR$C_MINSTACOD 0
#define ETIR$C_STA_GBL 0
#define ETIR$C_STA_LW 1
#define ETIR$C_STA_QW 2
#define ETIR$C_STA_PQ 3
#define ETIR$C_STA_LI 4
#define ETIR$C_STA_MOD 5
#define ETIR$C_STA_CKARG 6
#define ETIR$C_MAXSTACOD 6
#define ETIR$C_MINSTOCOD 50
#define ETIR$C_STO_B 50
#define ETIR$C_STO_W 51
#define ETIR$C_STO_LW 52
#define ETIR$C_STO_QW 53
#define ETIR$C_STO_IMMR 54
#define ETIR$C_STO_GBL 55
#define ETIR$C_STO_CA 56
#define ETIR$C_STO_RB 57
#define ETIR$C_STO_AB 58
#define ETIR$C_STO_OFF 59
#define ETIR$C_STO_IMM 61
#define ETIR$C_STO_GBL_LW 62
#define ETIR$C_STO_HINT_GBL 64
#define ETIR$C_STO_HINT_PS 65
#define ETIR$C_MAXSTOCOD 65
#define ETIR$C_MINOPRCOD 100
#define ETIR$C_OPR_NOP 100
#define ETIR$C_OPR_ADD 101
#define ETIR$C_OPR_SUB 102
#define ETIR$C_OPR_MUL 103
#define ETIR$C_OPR_DIV 104
#define ETIR$C_OPR_AND 105
#define ETIR$C_OPR_IOR 106
#define ETIR$C_OPR_EOR 107
#define ETIR$C_OPR_NEG 108
#define ETIR$C_OPR_COM 109
#define ETIR$C_OPR_INSV 110
#define ETIR$C_OPR_ASH 111
#define ETIR$C_OPR_USH 112
#define ETIR$C_OPR_ROT 113
#define ETIR$C_OPR_SEL 114
#define ETIR$C_OPR_REDEF 115
#define ETIR$C_OPR_DFLIT 116
#define ETIR$C_MAXOPRCOD 116
#define ETIR$C_MINCTLCOD 150
#define ETIR$C_CTL_SETRB 150
#define ETIR$C_CTL_AUGRB 151
#define ETIR$C_CTL_DFLOC 152
#define ETIR$C_CTL_STLOC 153
#define ETIR$C_CTL_STKDL 154
#define ETIR$C_MAXCTLCOD 154
#define ETIR$C_MINSTCCOD 200
#define ETIR$C_STC_LP 200
#define ETIR$C_STC_LP_PSB 201
#define ETIR$C_STC_GBL 202
#define ETIR$C_STC_GCA 203
#define ETIR$C_STC_PS 204
#define ETIR$C_STC_NOP_GBL 205
#define ETIR$C_STC_NOP_PS 206
#define ETIR$C_STC_BSR_GBL 207
#define ETIR$C_STC_BSR_PS 208
#define ETIR$C_STC_LDA_GBL 209
#define ETIR$C_STC_LDA_PS 210
#define ETIR$C_STC_BOH_GBL 211
#define ETIR$C_STC_BOH_PS 212
#define ETIR$C_STC_NBH_GBL 213
#define ETIR$C_STC_NBH_PS 214
#define ETIR$C_MAXSTCCOD 214
#define ETIR$S_ETIRDEF 4
#define ETIR$W_RECTYP 0
#define ETIR$W_SIZE 2

View File

@ -1,51 +0,0 @@
.title OP_CALL
; ###############################################################
; # #
; # Copyright 2001, 2003 Sanchez Computer Associates, Inc. #
; # #
; # This source code contains the intellectual property #
; # of its copyright holder(s), and is made available #
; # under a license. If you do not know the terms of #
; # the license, please stop and do not read further. #
; # #
; ###############################################################
G_MSF
$linkage_section
a_frame_pointer:
.address frame_pointer
$code_section
$routine OP_CALLB, entry=OP_CALL_CA, aliases=<OP_CALLW, OP_CALLL>, kind=null
lda sp, -16(sp)
stq r13, 8(sp)
stq r26, (sp)
mov r27, r13
.base r13, $ls
ldq r1, a_frame_pointer
ldl r1, (r1)
; Bump the return PC past the branch sequence following the jsr that got us here:
addl r26, r16, r26 ; length of branch sequence
stl r26, msf$mpc_off(r1) ; and store it in the Mumps stack frame
$call COPY_STACK_FRAME, set_arg_info=false, nonstandard=true
ldq r12, a_frame_pointer
ldl r12, (r12)
ldq r26, (sp)
ldq r13, 8(sp)
lda sp, 16(sp)
ret r26
$end_routine
.end

View File

@ -1,61 +0,0 @@
; ################################################################
; # #
; # Copyright 2001, 2008 Fidelity Information Services, Inc #
; # #
; # This source code contains the intellectual property #
; # of its copyright holder(s), and is made available #
; # under a license. If you do not know the terms of #
; # the license, please stop and do not read further. #
; # #
; ################################################################
.title OP_EQUNUL "Compare mval to null string"
mval$def
$linkage_section
a_undef_inhibit:
.address undef_inhibit
$code_section
$routine OP_EQUNUL, entry=OP_EQUNUL_CA, kind=null
.base r27, $ls
mv_if_notdefined (r0), 30$
mv_if_notstring (r0), 20$
ldl r28, mval$l_strlen(r0)
bne r28, 20$
; Mval is a null string
10$: mov 1, r24
ret r26
; Mval is not a null string
20$: clr r24
ret r26
; If undef_inhibit is set, then all undefined values are equal to the null string:
30$: ldq r28, a_undef_inhibit
ldq_u r24, (r28)
extbl r24, r28, r24
bne r24, 10$ ; it's set; treat mval as a null string
; It's not set, so issue a message:
lda sp, -8(sp) ; but first,
stq r26, (sp) ; save the return address
mov r0, r16
$call UNDERR, args=<r16>, set_arg_info=false, nonstandard=true
ldq r26, (sp) ; restore our return address
lda sp, 8(sp)
ret r26
$end_routine
.end

View File

@ -1,51 +0,0 @@
.title OP_FORLCLDO
; ###############################################################
; # #
; # Copyright 2001, 2003 Sanchez Computer Associates, Inc. #
; # #
; # This source code contains the intellectual property #
; # of its copyright holder(s), and is made available #
; # under a license. If you do not know the terms of #
; # the license, please stop and do not read further. #
; # #
; ###############################################################
G_MSF
$linkage_section
a_frame_pointer:
.address frame_pointer
$code_section
$routine OP_FORLCLDOB, entry=OP_FORLCLDO_CA, aliases=<OP_FORLCLDOW,OP_FORLCLDOL>, kind=null
lda sp, -16(sp)
stq r13, 8(sp)
stq r26, (sp)
mov r27, r13
.base r13, $ls
ldq r1, a_frame_pointer
ldl r1, (r1)
; Bump the return PC past the branch instruction following the jsr that got us here:
addl r26, r16, r26 ; length of branch sequence
stl r26, msf$mpc_off(r1) ; and store it in the Mumps stack frame
$call EXFUN_FRAME, set_arg_info=false, nonstandard=true
ldq r12, a_frame_pointer
ldl r12, (r12)
ldl r9, msf$temps_ptr_off(r12)
ldq r26, (sp)
ldq r13, 8(sp)
lda sp, 16(sp)
ret r26
$end_routine
.end

View File

@ -1,24 +0,0 @@
; ################################################################
; # #
; # Copyright 2001, 2008 Fidelity Information Services, Inc #
; # #
; # This source code contains the intellectual property #
; # of its copyright holder(s), and is made available #
; # under a license. If you do not know the terms of #
; # the license, please stop and do not read further. #
; # #
; ################################################################
.title op_linestart
G_MSF
; op_linestart - establish start of line in GT.M MUMPS stack frame
$routine name=op_linestart,entry=op_linestart_ca,kind=null
stl r26, msf$mpc_off(r12)
stl r13, msf$ctxt_off(r12)
ret r26
$end_routine name=op_linestart

View File

@ -1,51 +0,0 @@
; ################################################################
; # #
; # Copyright 2001, 2008 Fidelity Information Services, Inc #
; # #
; # This source code contains the intellectual property #
; # of its copyright holder(s), and is made available #
; # under a license. If you do not know the terms of #
; # the license, please stop and do not read further. #
; # #
; ################################################################
.title OP_PATTERN
mval$def
$routine OP_PATTERN, entry=OP_PATTERN_CA, kind=null
lda sp, -16(sp)
stq r13, 8(sp)
stq r26, (sp)
mov r27, r13
.base r13, $ls
mov r0, r16
mov r1, r17
;
; This is an array of unaligned ints. If the first word is zero, then call do_pattern
; instead of do_patfixed. Only the low order byte is significant and so it is the only
; one we need to test. We would do this in assembly because (1) we need the assmembly
; routine anyway to save the return value into $TEST and (2) it saves an extra level of
; call linkage at the C level to do the decision here.
;
ldl r28, mval$a_straddr(r1)
ldq_u r24, (r28)
extbl r24, r28, r24
beq r24, 20$
10$: $call DO_PATFIXED, args=<r16, r17>, set_arg_info=false, nonstandard=true
15$: mov r0, r24
ldq r26, (sp)
ldq r13, 8(sp)
lda sp, 16(sp)
ret r26
20$: $call DO_PATTERN, args=<r16, r17>, set_arg_info=false, nonstandard=true
br 15$
$end_routine
.end

View File

@ -1,41 +0,0 @@
; ################################################################
; # #
; # Copyright 2001, 2008 Fidelity Information Services, Inc #
; # #
; # This source code contains the intellectual property #
; # of its copyright holder(s), and is made available #
; # under a license. If you do not know the terms of #
; # the license, please stop and do not read further. #
; # #
; ################################################################
.title OP_SORTS_AFTER
; On entry:
; r0 -> mval for left hand side
; r1 -> mval for right hand side
;
; On exit:
; r24 < 0 : lhs ']] rhs (lhs ]] rhs is false)
; r24 = 0 : lhs = rhs (lhs ]] rhs is false)
; r24 > 0 : lhs ]] rhs (lhs ]] rhs is true)
$routine OP_SORTS_AFTER, entry=OP_SORTS_AFTER_CA, kind=null
lda sp, -8(sp)
stq r26, (sp)
.base r27, $ls
mov r0, r16
mov r1, r17
$call SORTS_AFTER, args=<r16, r17>, set_arg_info=false, nonstandard=true
mov r0, r24
ldq r26, (sp)
lda sp, 8(sp)
ret r26
$end_routine
.end

View File

@ -1,37 +0,0 @@
; ################################################################
; # #
; # Copyright 2001, 2008 Fidelity Information Services, Inc #
; # #
; # This source code contains the intellectual property #
; # of its copyright holder(s), and is made available #
; # under a license. If you do not know the terms of #
; # the license, please stop and do not read further. #
; # #
; ################################################################
.title PSEUDO_RET
; PSEUDO_RET calls opp_ret (which doesn't return). It executes in a
; GT.M MUMPS stack frame and is, in fact, normally entered via a
; getframe/ret instruction sequence.
;
; entry:
; r13 - address of PSEUDO_RET's procedure descriptor (not r27)
;
; WARNING: because PSEUDO_RET is designed to be invoked from a GT.M
; MUMPS stack frame, it does not conform to the Alpha calling
; standard and cannot be invoked from any high-level language. The
; invoker should load the address of PSEUDO_RET's procedure descriptor
; into r13, not r27.
$code_section
$routine PSEUDO_RET, entry=PSEUDO_RET_CA, kind=null
.base r13, $ls
$call opp_ret, set_arg_info=false, nonstandard=true
$end_routine
.end

View File

@ -1,28 +0,0 @@
/****************************************************************
* *
* Copyright 2001, 2009 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
* under a license. If you do not know the terms of *
* the license, please stop and do not read further. *
* *
****************************************************************/
typedef unsigned short zb_code;
#define ZB_CODE_MASK 0xffff
#define INST_TYPE zb_code
/* The ZBreak command operates by finding the generated code for the op_linestart or op_linefetch for the source
* line in question and changing the offset in the transfer table load address instruction from the op_linestart or
* op_linefetch offset to the appropriate zbreak functionality opcode offset.
* In some platforms(IA64 and ZOS) since the INSTRUCTION LAYOUT is complex we need following
* macros for instruction manipulation.
* EXTRACT_OFFSET_TO_M_OPCODE
* FIX_OFFSET_WITH_ZBREAK_OFFSET
* EXTRACT_AND_UPDATE_INST
* These macros are called only when COMPLEX_INSTRUCTION_UPDATE is defined
* If COMPLEX_INSTRUCTION_UPDATE is not defined portable code in the caller of these macros
* is invoked.
*/
#undef COMPLEX_INSTRUCTION_UPDATE

View File

@ -1,112 +0,0 @@
/aswp.s/1.1.1.1/Wed May 16 14:01:20 2001//
/auto_zlink.c/1.3/Fri Nov 2 03:00:12 2012//
/auto_zlink.h/1.2/Fri Nov 2 03:00:13 2012//
/call_dm.s/1.2/Fri Nov 2 03:00:13 2012//
/caller_id.s/1.1.1.1/Wed May 16 14:01:20 2001//
/callg.s/1.2/Fri Nov 2 03:00:13 2012//
/ci_restart.s/1.2/Tue Aug 19 19:03:07 2003//
/cmerrors_ctl.c/1.2/Fri Jan 11 04:43:23 2013//
/cmierrors_ctl.c/1.2/Fri Jan 11 04:43:23 2013//
/compswap.s/1.1.1.1/Wed May 16 14:01:20 2001//
/dm_start.s/1.3/Fri Nov 2 03:00:13 2012//
/emit_code.c/1.5/Wed Oct 23 03:49:21 2013//
/emit_code.h/1.1.1.1/Wed May 16 14:01:20 2001//
/error.si/1.2/Fri Nov 2 03:00:13 2012//
/find_line_call.c/1.3/Fri Nov 2 03:00:13 2012//
/follow.s/1.1.1.1/Wed May 16 14:01:20 2001//
/g_msf.si/1.3/Fri Nov 2 03:00:13 2012//
/gdeerrors_ctl.c/1.2/Fri Jan 11 04:43:23 2013//
/incr_link.c/1.3/Fri Nov 2 03:00:13 2012//
/linkage.si/1.1.1.1/Wed May 16 14:01:20 2001//
/make_cimode.c/1.2/Fri Nov 2 03:00:13 2012//
/make_dmode.c/1.4/Fri Nov 2 03:00:13 2012//
/masscomp.h/1.2/Thu Dec 13 21:19:49 2001//
/merrors_ansi.h/1.4/Wed Oct 23 03:49:21 2013//
/merrors_ctl.c/1.4/Wed Oct 23 03:49:22 2013//
/mint2mval.s/1.1.1.1/Wed May 16 14:01:20 2001//
/mum_tstart.s/1.3/Thu Jun 13 14:23:09 2002//
/mval2bool.s/1.2/Fri Nov 2 03:00:13 2012//
/mval2mint.s/1.2/Fri Nov 2 03:00:13 2012//
/mval2num.s/1.2/Fri Nov 2 03:00:13 2012//
/mval_def.si/1.4/Fri Jan 11 04:43:23 2013//
/obj_file.c/1.5/Fri Nov 2 03:00:13 2012//
/op_bkpt.s/1.3/Fri Nov 2 03:00:13 2012//
/op_call.s/1.1.1.1/Wed May 16 14:01:21 2001//
/op_callsp.s/1.1.1.1/Wed May 16 14:01:21 2001//
/op_contain.s/1.2/Fri Nov 2 03:00:13 2012//
/op_currtn.s/1.2/Fri Nov 2 03:00:13 2012//
/op_equ.s/1.1.1.1/Wed May 16 14:01:21 2001//
/op_equnul.s/1.2/Fri Nov 2 03:00:13 2012//
/op_exfun.s/1.3/Fri Nov 2 03:00:13 2012//
/op_extcall.s/1.2/Fri Nov 2 03:00:14 2012//
/op_extexfun.s/1.3/Fri Nov 2 03:00:14 2012//
/op_extjmp.s/1.3/Fri Nov 2 03:00:14 2012//
/op_fetchintrrpt.s/1.2/Fri Nov 2 03:00:14 2012//
/op_fnget.s/1.2/Fri Nov 2 03:00:14 2012//
/op_fnzextract.s/1.1/Fri Nov 2 03:00:14 2012//
/op_follow.s/1.2/Fri Nov 2 03:00:14 2012//
/op_forcenum.s/1.2/Fri Nov 2 03:00:14 2012//
/op_forchk1.s/1.1.1.1/Wed May 16 14:01:21 2001//
/op_forinit.s/1.2/Fri Nov 2 03:00:14 2012//
/op_forintrrpt.s/1.2/Fri Nov 2 03:00:14 2012//
/op_forlcldo.s/1.1.1.1/Wed May 16 14:01:21 2001//
/op_forloop.s/1.3/Fri Jan 11 04:43:23 2013//
/op_gettruth.s/1.1.1.1/Wed May 16 14:01:21 2001//
/op_iretmvad.s/1.1.1.1/Wed May 16 14:01:21 2001//
/op_linefetch.s/1.2/Fri Nov 2 03:00:14 2012//
/op_linestart.s/1.1.1.1/Wed May 16 14:01:21 2001//
/op_mprofcall.s/1.1.1.1/Wed May 16 14:01:21 2001//
/op_mprofcallsp.s/1.1.1.1/Wed May 16 14:01:21 2001//
/op_mprofexfun.s/1.3/Fri Nov 2 03:00:14 2012//
/op_mprofextcall.s/1.2/Fri Nov 2 03:00:14 2012//
/op_mprofextexfun.s/1.3/Fri Nov 2 03:00:14 2012//
/op_mprofforchk1.s/1.1/Fri Nov 2 03:00:14 2012//
/op_mprofforlcldo.s/1.2/Fri Nov 2 03:00:14 2012//
/op_mproflinefetch.s/1.3/Fri Nov 2 03:00:14 2012//
/op_mproflinestart.s/1.3/Fri Nov 2 03:00:14 2012//
/op_neg.s/1.2/Fri Nov 2 03:00:14 2012//
/op_numcmp.s/1.1.1.1/Wed May 16 14:01:21 2001//
/op_pattern.s/1.2/Thu Jun 13 14:23:21 2002//
/op_restartpc.s/1.2/Thu Dec 13 21:19:53 2001//
/op_retarg.s/1.2/Fri Nov 2 03:00:14 2012//
/op_sorts_after.s/1.1.1.1/Wed May 16 14:01:21 2001//
/op_startintrrpt.s/1.3/Thu Jun 13 14:23:22 2002//
/op_sto.s/1.2/Fri Nov 2 03:00:14 2012//
/op_zhelp.s/1.1.1.1/Wed May 16 14:01:21 2001//
/opp_break.s/1.1.1.1/Wed May 16 14:01:20 2001//
/opp_commarg.s/1.1.1.1/Wed May 16 14:01:20 2001//
/opp_dmode.s/1.1.1.1/Wed May 16 14:01:20 2001//
/opp_hardret.s/1.2/Fri Nov 2 03:00:15 2012//
/opp_inddevparms.s/1.1.1.1/Wed May 16 14:01:20 2001//
/opp_indfnname.s/1.1.1.1/Wed May 16 14:01:20 2001//
/opp_indfun.s/1.1.1.1/Wed May 16 14:01:20 2001//
/opp_indglvn.s/1.1.1.1/Wed May 16 14:01:21 2001//
/opp_indincr.s/1.1/Fri Nov 2 03:00:15 2012//
/opp_indlvadr.s/1.1.1.1/Wed May 16 14:01:21 2001//
/opp_indlvarg.s/1.1.1.1/Wed May 16 14:01:21 2001//
/opp_indlvnamadr.s/1.1.1.1/Wed May 16 14:01:21 2001//
/opp_indmerge.s/1.1.1.1/Wed May 16 14:01:21 2001//
/opp_indpat.s/1.1.1.1/Wed May 16 14:01:21 2001//
/opp_indrzshow.s/1.1.1.1/Wed May 16 14:01:21 2001//
/opp_indsavglvn.s/1.1/Fri Jan 11 05:31:38 2013//
/opp_indsavlvn.s/1.1/Fri Jan 11 05:31:38 2013//
/opp_indset.s/1.1.1.1/Wed May 16 14:01:21 2001//
/opp_indtext.s/1.2/Thu Jun 13 14:23:24 2002//
/opp_iretmval.s/1.3/Fri Jan 11 04:43:23 2013//
/opp_newintrinsic.s/1.1/Thu Dec 13 21:04:04 2001//
/opp_newvar.s/1.1.1.1/Wed May 16 14:01:21 2001//
/opp_ret.s/1.1.1.1/Wed May 16 14:01:21 2001//
/opp_rterror.s/1.2/Thu Jun 13 14:23:25 2002//
/opp_svput.s/1.2/Thu Jun 13 14:23:26 2002//
/opp_tcommit.s/1.2/Fri Nov 2 03:00:15 2012//
/opp_trestart.s/1.2/Fri Nov 2 03:00:15 2012//
/opp_trollback.s/1.1/Tue Aug 19 18:50:41 2003//
/opp_tstart.s/1.2/Fri Nov 2 03:00:15 2012//
/opp_xnew.s/1.1.1.1/Wed May 16 14:01:21 2001//
/opp_zcont.s/1.2/Fri Nov 2 03:00:15 2012//
/opp_zg1.s/1.1/Fri Nov 2 03:00:15 2012//
/opp_zgoto.s/1.1/Fri Nov 2 03:00:15 2012//
/pseudo_ret.s/1.1.1.1/Wed May 16 14:01:21 2001//
/ttt.c/1.3/Mon Jul 1 22:46:01 2013//
/zbreaksp.h/1.2/Fri Nov 2 03:00:15 2012//
D

View File

@ -1,111 +0,0 @@
/aswp.s////*////
/auto_zlink.c////*////
/auto_zlink.h////*////
/call_dm.s////*////
/caller_id.s////*////
/callg.s////*////
/ci_restart.s////*////
/cmerrors_ctl.c////*////
/cmierrors_ctl.c////*////
/compswap.s////*////
/dm_start.s////*////
/emit_code.c////*////
/emit_code.h////*////
/error.si////*////
/find_line_call.c////*////
/follow.s////*////
/g_msf.si////*////
/gdeerrors_ctl.c////*////
/incr_link.c////*////
/linkage.si////*////
/make_cimode.c////*////
/make_dmode.c////*////
/masscomp.h////*////
/merrors_ansi.h////*////
/merrors_ctl.c////*////
/mint2mval.s////*////
/mum_tstart.s////*////
/mval2bool.s////*////
/mval2mint.s////*////
/mval2num.s////*////
/mval_def.si////*////
/obj_file.c////*////
/op_bkpt.s////*////
/op_call.s////*////
/op_callsp.s////*////
/op_contain.s////*////
/op_currtn.s////*////
/op_equ.s////*////
/op_equnul.s////*////
/op_exfun.s////*////
/op_extcall.s////*////
/op_extexfun.s////*////
/op_extjmp.s////*////
/op_fetchintrrpt.s////*////
/op_fnget.s////*////
/op_fnzextract.s////*////
/op_follow.s////*////
/op_forcenum.s////*////
/op_forchk1.s////*////
/op_forinit.s////*////
/op_forintrrpt.s////*////
/op_forlcldo.s////*////
/op_forloop.s////*////
/op_gettruth.s////*////
/op_iretmvad.s////*////
/op_linefetch.s////*////
/op_linestart.s////*////
/op_mprofcall.s////*////
/op_mprofcallsp.s////*////
/op_mprofexfun.s////*////
/op_mprofextcall.s////*////
/op_mprofextexfun.s////*////
/op_mprofforchk1.s////*////
/op_mprofforlcldo.s////*////
/op_mproflinefetch.s////*////
/op_mproflinestart.s////*////
/op_neg.s////*////
/op_numcmp.s////*////
/op_pattern.s////*////
/op_restartpc.s////*////
/op_retarg.s////*////
/op_sorts_after.s////*////
/op_startintrrpt.s////*////
/op_sto.s////*////
/op_zhelp.s////*////
/opp_break.s////*////
/opp_commarg.s////*////
/opp_dmode.s////*////
/opp_hardret.s////*////
/opp_inddevparms.s////*////
/opp_indfnname.s////*////
/opp_indfun.s////*////
/opp_indglvn.s////*////
/opp_indincr.s////*////
/opp_indlvadr.s////*////
/opp_indlvarg.s////*////
/opp_indlvnamadr.s////*////
/opp_indmerge.s////*////
/opp_indpat.s////*////
/opp_indrzshow.s////*////
/opp_indsavglvn.s////*////
/opp_indsavlvn.s////*////
/opp_indset.s////*////
/opp_indtext.s////*////
/opp_iretmval.s////*////
/opp_newintrinsic.s////*////
/opp_newvar.s////*////
/opp_ret.s////*////
/opp_rterror.s////*////
/opp_svput.s////*////
/opp_tcommit.s////*////
/opp_trestart.s////*////
/opp_trollback.s////*////
/opp_tstart.s////*////
/opp_xnew.s////*////
/opp_zcont.s////*////
/opp_zg1.s////*////
/opp_zgoto.s////*////
/pseudo_ret.s////*////
/ttt.c////*////
/zbreaksp.h////*////

View File

@ -1 +0,0 @@
gtm/sr_i386

View File

@ -1 +0,0 @@
:pserver:anonymous@fis-gtm.cvs.sourceforge.net:/cvsroot/fis-gtm

View File

@ -1,6 +1,6 @@
/****************************************************************
* *
* Copyright 2001,2013 Fidelity Information Services, Inc *
* Copyright 2001,2012 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *

View File

@ -1,6 +1,6 @@
/****************************************************************
* *
* Copyright 2001,2013 Fidelity Information Services, Inc *
* Copyright 2001,2012 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *

View File

@ -1,6 +1,6 @@
/****************************************************************
* *
* Copyright 2001, 2013 Fidelity Information Services, Inc *
* Copyright 2001, 2009 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
@ -87,9 +87,6 @@ GBLDEF uint4 txtrel_cnt; /* count of text relocation records */
/* its referenced in ind_code.c */
GBLDEF int calculated_code_size, generated_code_size;
error_def(ERR_UNIMPLOP);
error_def(ERR_MAXARGCNT);
void trip_gen(triple *ct)
{
oprtype **sopr, *opr; /* triple operand */
@ -102,6 +99,8 @@ void trip_gen(triple *ct)
oprtype *irep_opr;
short *repl, repcnt; /* temp irep ptr */
int4 off;
error_def (ERR_UNIMPLOP);
error_def (ERR_MAXARGCNT);
tp = ttt[ct->opcode];
if (tp <= 0)
@ -126,8 +125,8 @@ void trip_gen(triple *ct)
continue;
}
*sopr++ = opr;
if (sopr >= ARRAYTOP(saved_opr)) /* user-visible max args is MAX_ARGS - 3 */
rts_error_csa(CSA_ARG(NULL) VARLSTCNT(3) ERR_MAXARGCNT, 1, MAX_ARGS - 3);
if (sopr >= ARRAYTOP(saved_opr))
rts_error(VARLSTCNT(3) ERR_MAXARGCNT, 1, MAX_ARGS);
}
opr++;
}
@ -753,6 +752,8 @@ void emit_trip(generic_op op, oprtype *opr, bool val_output, unsigned char use_r
int4 offset, literal;
triple *ct;
error_def (ERR_UNIMPLOP);
if (opr->oprclass == TRIP_REF)
{
ct = opr->oprval.tref;
@ -789,7 +790,7 @@ void emit_trip(generic_op op, oprtype *opr, bool val_output, unsigned char use_r
temp_reg = I386_REG_ECX;
break;
default:
rts_error_csa(CSA_ARG(NULL) VARLSTCNT(1) ERR_UNIMPLOP);
rts_error(VARLSTCNT(1) ERR_UNIMPLOP);
break;
}
pc_value_idx = code_idx + 5;
@ -831,7 +832,7 @@ void emit_trip(generic_op op, oprtype *opr, bool val_output, unsigned char use_r
code_idx += 1 + SIZEOF(int4);
break;
default:
rts_error_csa(CSA_ARG(NULL) VARLSTCNT(1) ERR_UNIMPLOP);
rts_error(VARLSTCNT(1) ERR_UNIMPLOP);
break;
}
break;
@ -939,7 +940,7 @@ void emit_trip(generic_op op, oprtype *opr, bool val_output, unsigned char use_r
emit_base_offset(use_reg, base_reg, offset);
break;
default:
rts_error_csa(CSA_ARG(NULL) VARLSTCNT(1) ERR_UNIMPLOP);
rts_error(VARLSTCNT(1) ERR_UNIMPLOP);
break;
}
break;
@ -969,7 +970,7 @@ void emit_trip(generic_op op, oprtype *opr, bool val_output, unsigned char use_r
temp_reg = I386_REG_ECX;
break;
default:
rts_error_csa(CSA_ARG(NULL) VARLSTCNT(1) ERR_UNIMPLOP);
rts_error(VARLSTCNT(1) ERR_UNIMPLOP);
break;
}
code_buf[code_idx++] = I386_INS_CALL_Jv;
@ -1031,7 +1032,7 @@ void emit_trip(generic_op op, oprtype *opr, bool val_output, unsigned char use_r
}
break;
default:
rts_error_csa(CSA_ARG(NULL) VARLSTCNT(1) ERR_UNIMPLOP);
rts_error(VARLSTCNT(1) ERR_UNIMPLOP);
break;
}
break;
@ -1145,7 +1146,7 @@ void emit_trip(generic_op op, oprtype *opr, bool val_output, unsigned char use_r
emit_base_offset(use_reg, base_reg, offset);
break;
default:
rts_error_csa(CSA_ARG(NULL) VARLSTCNT(1) ERR_UNIMPLOP);
rts_error(VARLSTCNT(1) ERR_UNIMPLOP);
break;
}
break;
@ -1174,6 +1175,9 @@ void emit_xfer(short xfer)
void emit_op_base_offset(generic_op op, short base_reg, int offset, short use_reg)
{
error_def (ERR_UNIMPLOP);
switch (op)
{
case CLEAR:
@ -1217,7 +1221,7 @@ void emit_op_base_offset(generic_op op, short base_reg, int offset, short use_re
code_buf[code_idx++] = 0;
break;
default:
rts_error_csa(CSA_ARG(NULL) VARLSTCNT(1) ERR_UNIMPLOP);
rts_error(VARLSTCNT(1) ERR_UNIMPLOP);
break;
}
}
@ -1267,6 +1271,8 @@ void emit_base_offset (short reg_opcode, short base_reg, int4 offset)
void emit_op_alit (generic_op op, unsigned char use_reg)
{
error_def (ERR_UNIMPLOP);
switch (op)
{
case LOAD_ADDRESS:
@ -1283,7 +1289,7 @@ void emit_op_alit (generic_op op, unsigned char use_reg)
code_buf[code_idx++] = I386_INS_PUSH_Iv;
break;
default:
rts_error_csa(CSA_ARG(NULL) VARLSTCNT(1) ERR_UNIMPLOP);
rts_error(VARLSTCNT(1) ERR_UNIMPLOP);
break;
}
}

View File

@ -1,6 +1,6 @@
/****************************************************************
* *
* Copyright 2001,2013 Fidelity Information Services, Inc *
* Copyright 2001,2012 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *

View File

@ -1,6 +1,6 @@
/****************************************************************
* *
* Copyright 2001,2013 Fidelity Information Services, Inc *
* Copyright 2001,2012 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
@ -93,7 +93,7 @@ const static readonly int error_ansi[] = {
7, /* GVUNDEF */
0, /* TRANSNEST */
0, /* INDEXTRACHARS */
0, /* UNUSEDMSG260 */
0, /* INDMAXNEST */
0, /* INDRMAXLEN */
0, /* INSFFBCNT */
0, /* INTEGERRS */
@ -193,7 +193,7 @@ const static readonly int error_ansi[] = {
5, /* TEXTARG */
0, /* TMPSTOREMAX */
0, /* VIEWCMD */
0, /* JNI */
12, /* TXTNEGLIN */
0, /* TXTSRCFMT */
0, /* UIDMSG */
0, /* UIDSND */
@ -202,9 +202,9 @@ const static readonly int error_ansi[] = {
39, /* VAREXPECTED */
0, /* VARRECBLKSZ */
0, /* MAXARGCNT */
0, /* GTMSECSHRSEMGET */
0, /* WCFAIL */
0, /* VIEWARGCNT */
0, /* GTMSECSHRDMNSTARTED */
0, /* XKILLCNTEXC */
0, /* ZATTACHERR */
0, /* ZDATEFMT */
0, /* ZEDFILSPEC */
@ -271,14 +271,14 @@ const static readonly int error_ansi[] = {
21, /* MULTFORMPARM */
16, /* QUITARGUSE */
0, /* NAMEEXPECTED */
11, /* FALLINTOFLST */
11, /* UNUSEDMSG438 */
16, /* NOTEXTRINSIC */
0, /* GTMSECSHRREMSEMFAIL */
11, /* UNUSEDMSG440 */
20, /* FMLLSTMISSING */
58, /* ACTLSTTOOLONG */
0, /* ACTOFFSET */
0, /* MAXACTARG */
0, /* GTMSECSHRREMSEM */
0, /* GTMDUMPFAIL */
0, /* JNLTMQUAL2 */
0, /* GDINVALID */
0, /* ASSERT */
@ -422,13 +422,13 @@ const static readonly int error_ansi[] = {
0, /* BEGINST */
0, /* INVMVXSZ */
0, /* JNLWRTNOWWRTR */
0, /* GTMSECSHRSHMCONCPROC */
0, /* MUPGDERR */
0, /* JNLINVALLOC */
0, /* JNLINVEXT */
0, /* MUPCLIERR */
0, /* JNLTMQUAL4 */
0, /* GTMSECSHRREMSHM */
0, /* GTMSECSHRREMFILE */
0, /* UNUSEDMSG594 */
0, /* UNUSEDMSG595 */
0, /* MUNODBNAME */
0, /* FILECREATE */
0, /* FILENOTCREATE */
@ -450,7 +450,7 @@ const static readonly int error_ansi[] = {
0, /* WCWRNNOTCHG */
0, /* ZCWRONGDESC */
0, /* MUTNWARN */
0, /* GTMSECSHRUPDDBHDR */
0, /* JNLNAMLEN */
0, /* LCKSTIMOUT */
0, /* CTLMNEMAXLEN */
0, /* CTLMNEXPECTED */
@ -586,14 +586,14 @@ const static readonly int error_ansi[] = {
0, /* GTMSECSHR */
0, /* GTMSECSHRSRVFID */
0, /* GTMSECSHRSRVFIL */
0, /* FREEBLKSLOW */
0, /* SOCKACTNA */
0, /* PROTNOTSUP */
0, /* DELIMSIZNA */
0, /* INVCTLMNE */
0, /* SOCKLISTEN */
0, /* LQLENGTHNA */
0, /* ADDRTOOLONG */
0, /* GTMSECSHRGETSEMFAIL */
76, /* UNUSEDMSG760 */
0, /* CPBEYALLOC */
0, /* DBRDONLY */
0, /* DUPTN */
@ -614,7 +614,7 @@ const static readonly int error_ansi[] = {
0, /* NOFORKCORE */
0, /* JNLREAD */
0, /* JNLMINALIGN */
0, /* UNUSEDMSG781 */
0, /* JNLDSKALIGN */
0, /* JNLPOOLSETUP */
0, /* JNLSTATEOFF */
0, /* RECVPOOLSETUP */
@ -677,7 +677,7 @@ const static readonly int error_ansi[] = {
0, /* BUFFLUFAILED */
0, /* MUQUALINCOMP */
0, /* DISTPATHMAX */
0, /* UNUSEDMSG844 */
0, /* MAXTRACEHEIGHT */
0, /* IMAGENAME */
0, /* GTMSECSHRPERM */
0, /* GTMDISTUNDEF */
@ -783,7 +783,7 @@ const static readonly int error_ansi[] = {
0, /* DBMBPFRINT */
0, /* DBMAXKEYEXC */
0, /* DBMXRSEXCMIN */
0, /* UNUSEDMSG950 */
0, /* DBMAXRSEXBL */
0, /* DBREADBM */
0, /* DBCOMPTOOLRG */
0, /* DBVERPERFWARN2 */
@ -805,7 +805,7 @@ const static readonly int error_ansi[] = {
0, /* SEMWT2LONG */
0, /* REPLINSTOPEN */
0, /* REPLINSTCLOSE */
0, /* UNUSEDMSG972 */
0, /* JNLNOTFOUND */
0, /* DBCRERR8 */
0, /* NUMPROCESSORS */
0, /* DBADDRANGE8 */
@ -822,16 +822,16 @@ const static readonly int error_ansi[] = {
0, /* RENAMEFAIL */
0, /* FILERENAME */
0, /* JNLBUFINFO */
0, /* UNUSEDMSG989 */
0, /* UNUSEDMSG990 */
0, /* JNLQIOLOCKED */
0, /* JNLEOFPREZERO */
0, /* TPNOTACID */
0, /* JNLSETDATA2LONG */
0, /* JNLNEWREC */
0, /* REPLFTOKSEM */
0, /* UNUSEDMSG995 */
0, /* GETCWD */
0, /* EXTRIOERR */
0, /* EXTRCLOSEERR */
0, /* UNUSEDMSG998 */
0, /* TRUNCATE */
0, /* REPLEXITERR */
0, /* MUDESTROYSUC */
0, /* DBRNDWN */
@ -912,7 +912,7 @@ const static readonly int error_ansi[] = {
0, /* SYSTEMVALUE */
0, /* SIZENOTVALID4 */
0, /* STRNOTVALID */
0, /* UNUSEDMSG1079 */
0, /* RECNOCREJNL */
0, /* ERRWETRAP */
0, /* TRACINGON */
0, /* CITABENV */
@ -940,9 +940,9 @@ const static readonly int error_ansi[] = {
0, /* ZDIROUTOFSYNC */
0, /* GBLNOEXIST */
0, /* MAXBTLEVEL */
0, /* UNUSEDMSG1107 */
0, /* JNLSTRESTFL */
0, /* JNLALIGNSZCHG */
0, /* UNUSEDMSG1109 */
0, /* MAXTRACELEVEL */
0, /* GVFAILCORE */
0, /* DBCDBNOCERTIFY */
0, /* DBFRZRESETSUC */
@ -1187,7 +1187,7 @@ const static readonly int error_ansi[] = {
0, /* TRIGTLVLCHNG */
0, /* TRIGNAMEUNIQ */
0, /* ZTRIGINVACT */
0, /* INDRCOMPFAIL */
0, /* UNUSEDMSG1354 */
0, /* QUITALSINV */
0, /* PROCTERM */
0, /* SRCLNNTDSP */
@ -1200,10 +1200,10 @@ const static readonly int error_ansi[] = {
0, /* SSATTACHSHM */
0, /* TRIGDEFNOSYNC */
0, /* TRESTMAX */
0, /* UNUSEDMSG1367 */
0, /* TPLOCKRESTMAX */
0, /* GBLEXPECTED */
0, /* GVZTRIGFAIL */
0, /* MUUSERLBK */
0, /* UNUSEDMSG1370 */
0, /* SETINSETTRIGONLY */
0, /* DZTRIGINTRIG */
0, /* SECNODZTRIGINTP */
@ -1215,7 +1215,7 @@ const static readonly int error_ansi[] = {
0, /* REPLXENDIANFAIL */
0, /* ZGOTOINVLVL2 */
0, /* GTMSECSHRCHDIRF */
0, /* JNLORDBFLU */
0, /* UNUSEDMSG1382 */
0, /* ZCCLNUPRTNMISNG */
0, /* ZCINVALIDKEYWORD */
0, /* REPLNOMULTILINETRG */
@ -1246,8 +1246,8 @@ const static readonly int error_ansi[] = {
0, /* NORESYNCUPDATERONLY */
0, /* NOSUPPLSUPPL */
0, /* REPL2OLD */
0, /* EXTRFILEXISTS */
0, /* MUUSERECOV */
0, /* UNUSEDMSG1413 */
0, /* UNUSEDMSG1414 */
0, /* SECNOTSUPPLEMENTARY */
0, /* SUPRCVRNEEDSSUPSRC */
0, /* UNUSEDMSG1417 */
@ -1270,7 +1270,7 @@ const static readonly int error_ansi[] = {
0, /* ORLBKNOV4BLK */
0, /* DBROLLEDBACK */
0, /* DSEWCREINIT */
0, /* MURNDWNOVRD */
0, /* UNUSEDMSG1437 */
0, /* REPLONLNRLBK */
0, /* SRVLCKWT2LNG */
0, /* IGNBMPMRKFREE */
@ -1324,41 +1324,4 @@ const static readonly int error_ansi[] = {
0, /* MUFILRNDWNFL2 */
0, /* MUINSTFROZEN */
0, /* MUINSTUNFROZEN */
0, /* GTMEISDIR */
0, /* SPCLZMSG */
0, /* MUNOTALLINTEG */
0, /* BKUPRUNNING */
0, /* MUSIZEINVARG */
0, /* MUSIZEFAIL */
0, /* SIDEEFFECTEVAL */
0, /* CRYPTINIT2 */
0, /* CRYPTDLNOOPEN2 */
0, /* CRYPTBADCONFIG */
0, /* DBCOLLREQ */
0, /* SETEXTRENV */
0, /* NOTALLDBRNDWN */
0, /* TPRESTNESTERR */
0, /* JNLFILRDOPN */
0, /* SEQNUMSEARCHTIMEOUT */
0, /* FTOKKEY */
0, /* SEMID */
0, /* JNLQIOSALVAGE */
0, /* FAKENOSPCLEARED */
0, /* MMFILETOOLARGE */
0, /* BADZPEEKARG */
0, /* BADZPEEKRANGE */
0, /* BADZPEEKFMT */
0, /* DBMBMINCFREFIXED */
0, /* NULLENTRYREF */
0, /* ZPEEKNORPLINFO */
0, /* MMREGNOACCESS */
0, /* MALLOCMAXUNIX */
0, /* MALLOCMAXVMS */
0, /* HOSTCONFLICT */
0, /* GETADDRINFO */
0, /* GETNAMEINFO */
0, /* SOCKBIND */
0, /* INSTFRZDEFER */
0, /* REGOPENRETRY */
0, /* REGOPENFAIL */
};

View File

@ -1,6 +1,6 @@
/****************************************************************
* *
* Copyright 2001,2013 Fidelity Information Services, Inc *
* Copyright 2001,2012 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
@ -67,7 +67,7 @@ LITDEF err_msg merrors[] = {
"NUMUNXEOR", "!_!AD!/!_!_!_unexpected end of record in numeric subscript", 2,
"EXPR", "Expression expected but not found", 0,
"STRUNXEOR", "!_!AD!/!_!_!_unexpected end of record in string subscript", 2,
"JNLEXTEND", "Journal file extension error for file !AD", 2,
"JNLEXTEND", "Journal file extension error. Journal file !AD closed.", 2,
"FCHARMAXARGS", "Argument count of $CHAR function exceeded the maximum of 255", 0,
"FCNSVNEXPECTED", "Function or special variable expected in this context", 0,
"FNARGINC", "Format specifiers to $FNUMBER are incompatible: \"!AD\"", 2,
@ -95,7 +95,7 @@ LITDEF err_msg merrors[] = {
"GVUNDEF", "Global variable undefined: !AD", 2,
"TRANSNEST", "Maximum transaction nesting levels exceeded", 0,
"INDEXTRACHARS", "Indirection string contains extra trailing characters", 0,
"UNUSEDMSG260", "INDMAXNEST Last used in V6.0-000", 0,
"INDMAXNEST", "Maximum nesting of indirection expressions exceeded", 0,
"INDRMAXLEN", "Maximum length !UL of an indirection argument was exceeded", 1,
"INSFFBCNT", "Insufficient byte count quota left for requested operation", 0,
"INTEGERRS", "Database integrity errors", 0,
@ -195,7 +195,7 @@ LITDEF err_msg merrors[] = {
"TEXTARG", "Invalid argument to $TEXT function", 0,
"TMPSTOREMAX", "Maximum space for temporary values exceeded", 0,
"VIEWCMD", "View parameter is not valid with VIEW command", 0,
"JNI", "!AD", 2,
"TXTNEGLIN", "A line prior to line number zero was referenced in $TEXT", 0,
"TXTSRCFMT", "$TEXT encountered an invalid source program file format", 0,
"UIDMSG", "Unidentified message received", 0,
"UIDSND", "Unidentified sender PID", 0,
@ -204,9 +204,9 @@ LITDEF err_msg merrors[] = {
"VAREXPECTED", "Variable expected in this context", 0,
"VARRECBLKSZ", "Blocksize must be at least record size + 4 bytes", 0,
"MAXARGCNT", "Maximum number of arguments !UL exceeded", 1,
"GTMSECSHRSEMGET", "semget error errno = !UL", 1,
"WCFAIL", "The database cache is corrupt", 0,
"VIEWARGCNT", "View parameter !AD has inappropriate number of subparameters", 2,
"GTMSECSHRDMNSTARTED", "gtmsecshr daemon started (key: 0x!XL) for version !AD from !AD", 5,
"XKILLCNTEXC", "Maximum number of arguments (!UL) to exclusive kill exceeded", 1,
"ZATTACHERR", "Error attaching to \"!AD\"", 2,
"ZDATEFMT", "$ZDATE format string contains invalid character", 0,
"ZEDFILSPEC", "Illegal ZEDIT file specification: !AD", 2,
@ -273,14 +273,14 @@ LITDEF err_msg merrors[] = {
"MULTFORMPARM", "This formal parameter is multiply defined", 0,
"QUITARGUSE", "Quit cannot take an argument in this context", 0,
"NAMEEXPECTED", "A local variable name is expected in this context", 0,
"FALLINTOFLST", "Fall-through to a label with formallist is not allowed", 0,
"UNUSEDMSG438", "ACTLSTEXP: Last used in V5.4-002B", 0,
"NOTEXTRINSIC", "Quit does not return to an extrinsic function: argument not allowed", 0,
"GTMSECSHRREMSEMFAIL", "error removing semaphore errno = !UL", 1,
"UNUSEDMSG440", "FMLLSTPRESENT: Last used in V5.4-002B", 0,
"FMLLSTMISSING", "The formal list is absent from a label called with an actual list: !AD", 2,
"ACTLSTTOOLONG", "More actual parameters than formal parameters: !AD", 2,
"ACTOFFSET", "Actuallist not allowed with offset", 0,
"MAXACTARG", "Maximum number of actual arguments exceeded", 0,
"GTMSECSHRREMSEM", "[client pid !UL] Semaphore (!UL) removed", 2,
"GTMDUMPFAIL", "Could not create DUMP FILE", 0,
"JNLTMQUAL2", "Time qualifier LOOKBACK_TIME=\"!AZ\" is later than SINCE_TIME=\"!AZ\"", 2,
"GDINVALID", "Unrecognized Global Directory file format: !AD, expected label: !AD, found: !AD", 6,
"ASSERT", "Assert failed in !AD line !UL for expression (!AD)", 5,
@ -424,13 +424,13 @@ LITDEF err_msg merrors[] = {
"BEGINST", "Beginning LOAD at record number: !UL", 1,
"INVMVXSZ", "Invalid block size for GOQ load format", 0,
"JNLWRTNOWWRTR", "Journal writer attempting another write", 0,
"GTMSECSHRSHMCONCPROC", "More than one process attached to Shared memory segment (!UL) not removed (!UL)", 2,
"MUPGDERR", "Command aborted due to global directory errors", 0,
"JNLINVALLOC", "Journal file allocation !UL is not within the valid range of !UL to !UL. Journal file not created.", 3,
"JNLINVEXT", "Journal file extension !UL is greater than the maximum allowed size of !UL. Journal file not created.", 2,
"MUPCLIERR", "Action not taken due to CLI errors", 0,
"JNLTMQUAL4", "Time qualifier BEFORE_TIME=\"!AZ\" is less than AFTER_TIME=\"!AZ\"", 2,
"GTMSECSHRREMSHM", "[client pid !UL] Shared memory segment (!UL) removed, nattch = !UL", 3,
"GTMSECSHRREMFILE", "[client pid !UL] File (!AD) removed", 3,
"UNUSEDMSG594", "JNLBUFFTOOLG Last used in V5.5-000", 0,
"UNUSEDMSG595", "JNLBUFFTOOSM Last used in V5.5-000", 0,
"MUNODBNAME", "A database name or the region qualifier must be specified", 0,
"FILECREATE", "!AD file !AD created", 4,
"FILENOTCREATE", "!AD file !AD not created", 4,
@ -452,7 +452,7 @@ LITDEF err_msg merrors[] = {
"WCWRNNOTCHG", "Not all specified database files were changed", 0,
"ZCWRONGDESC", "A string longer than 65535 is passed via 32-bit descriptor", 0,
"MUTNWARN", "Database file !AD has 0x!16@XQ more transactions to go before reaching the transaction number limit (0x!16@XQ). Renew database with MUPIP INTEG TN_RESET", 4,
"GTMSECSHRUPDDBHDR", "[client pid !UL] database fileheader (!AD) updated !AD", 5,
"JNLNAMLEN", "Journal file name !AD: for database file !AD exceeds maximum length of !UL", 5,
"LCKSTIMOUT", "DAL timed lock request expired", 0,
"CTLMNEMAXLEN", "The maximum length of a control mnemonic has been exceeded", 0,
"CTLMNEXPECTED", "Control mnemonic is expected in this context", 0,
@ -542,7 +542,7 @@ LITDEF err_msg merrors[] = {
"MUSTANDALONE", "Could not get exclusive access to !AD", 2,
"MUNOACTION", "MUPIP unable to perform requested action", 0,
"RMBIGSHARE", "File with BIGRECORD specified may only be shared if READONLY", 0,
"TPRESTART", "Database !AD; code: !AD; blk: 0x!XL in glbl: ^!AD; pvtmods: !UL, blkmods: !UL, blklvl: !UL, type: !UL, readset: !UL, writeset: !UL, local_tn: 0x!16@XQ", 14,
"TPRESTART", "Database !AD; code: !AD; blk: 0x!XL in glbl: ^!AD; pvtmods: !UL, blkmods: !UL, blklvl: !UL, type: !UL, readset: !UL, writeset: !UL, local_tn: !16@XQ", 14,
"SOCKWRITE", "Write to a TCP/IP socket failed", 0,
"DBCNTRLERR", "Database file !AD: control error suspected but not found", 2,
"NOTERMENV", "Environment variable TERM not set. Assuming \"unknown.\"", 0,
@ -576,7 +576,7 @@ LITDEF err_msg merrors[] = {
"ZCPREALLNUMEX", "Pre-allocation value should be a decimal number", 0,
"ZCPREALLVALPAR", "Pre-allocation allowed only for variables passed by reference", 0,
"VERMISMATCH", "Attempt to access !AD with version !AD, while already using !AD", 6,
"JNLCNTRL", "Journal control unsynchronized for !AD.", 2,
"JNLCNTRL", "Journal control unsynchronized. Journaling closed for !AD.", 2,
"TRIGNAMBAD", "Trigger initialization failed. Error while processing ^#t(\"!AD\",!AD)", 4,
"BUFRDTIMEOUT", "Pid [0x!XL] timed out waiting for buffered read of blk [0x!XL] into cr [0x!XL] by process [0x!XL] to complete in database file !AD", 6,
"INVALIDRIP", "Invalid read-in-progress field in Cache Record. Resetting and continuing. Region: !AD.", 2,
@ -588,14 +588,14 @@ LITDEF err_msg merrors[] = {
"GTMSECSHR", "!UL : Error during gtmsecshr operation", 1,
"GTMSECSHRSRVFID", "!AD: !UL - Attempt to service request failed.!/ client id: !UL, mesg type: !UL, mesg data: !UL", 6,
"GTMSECSHRSRVFIL", "!AD: !UL - Attempt to service request failed.!/ client id: !UL, mesg type: !UL!/file: !AD", 7,
"FREEBLKSLOW", "Only !UL free blocks left out of !UL total blocks for !AD", 4,
"SOCKACTNA", "Action not appropriate for current socket", 0,
"PROTNOTSUP", "Protocol !AD not supported", 2,
"DELIMSIZNA", "Delimiter size is not appropriate", 0,
"INVCTLMNE", "Invalid control mnemonics", 0,
"SOCKLISTEN", "Error listening on a socket", 0,
"LQLENGTHNA", "Listening queue length !UL not appropriate. Must be between 1 and 5.", 1,
"ADDRTOOLONG", "Socket address !AD of length !UL is longer than the maximum permissible length !UL", 4,
"GTMSECSHRGETSEMFAIL", "error getting semaphore errno = !UL", 1,
"UNUSEDMSG760", "LSNCONNOTCMP Last used in V5.4-002A", 0,
"CPBEYALLOC", "Attempt to copy beyond the allocated buffer", 0,
"DBRDONLY", "Database file !AD read only", 2,
"DUPTN", "Duplicate transaction found [TN = 0x!16@XQ] at offset 0x!XL in journal file !AD", 4,
@ -616,7 +616,7 @@ LITDEF err_msg merrors[] = {
"NOFORKCORE", "Unable to fork off process to create core. Core creation postponed.", 0,
"JNLREAD", "Error reading from journal file !AD at offset [0x!XL]", 3,
"JNLMINALIGN", "Journal Record Alignment !UL is less than the minimum value of !UL", 2,
"UNUSEDMSG781", "JNLDSKALIGN : Last used in V4.3-000", 0,
"JNLDSKALIGN", "Journal Record Alignment !UL is not a multiple of 512", 1,
"JNLPOOLSETUP", "Journal Pool setup error", 0,
"JNLSTATEOFF", "ROLLBACK or RECOVER BACKWARD cannot proceed as database file !AD does not have journaling ENABLED and ON", 2,
"RECVPOOLSETUP", "Receive Pool setup error", 0,
@ -679,7 +679,7 @@ LITDEF err_msg merrors[] = {
"BUFFLUFAILED", "Error flushing buffers from !AD for database file !AD", 4,
"MUQUALINCOMP", "Incompatible qualifiers - FILE and REGION", 0,
"DISTPATHMAX", "$gtm_dist path is greater than maximum (!UL)", 1,
"UNUSEDMSG844", "MAXTRACEHEIGHT last used in V5.4-002", 0,
"MAXTRACEHEIGHT", "The maximum trace tree height (!UL) has been exceeded. The trace information will be incomplete.", 1,
"IMAGENAME", "The executing module name should be !AD instead of !AD", 4,
"GTMSECSHRPERM", "The gtmsecshr module in $gtm_dist does not have the correct permission and uid", 0,
"GTMDISTUNDEF", "Environment variable $gtm_dist is not defined", 0,
@ -785,7 +785,7 @@ LITDEF err_msg merrors[] = {
"DBMBPFRINT", "!AD Master bit map shows this map has space, agreeing with MUPIP INTEG", 2,
"DBMAXKEYEXC", "!AD Maximum key size for database exceeds design maximum", 2,
"DBMXRSEXCMIN", "!AD Maximum record size for database is less than the design minimum", 2,
"UNUSEDMSG950", "DBMAXRSEXBL : Last used in V5.5-000", 0,
"DBMAXRSEXBL", "!AD Maximum record size for database exceeds what the block size can support", 2,
"DBREADBM", "!AD Read error on bitmap", 2,
"DBCOMPTOOLRG", "!AD Record has too large compression count", 2,
"DBVERPERFWARN2", "Peformance warning: Database !AD is not fully upgraded. Run MUPIP REORG UPGRADE for best overall performance", 2,
@ -807,7 +807,7 @@ LITDEF err_msg merrors[] = {
"SEMWT2LONG", "Process !UL waited !UL second(s) for the !AD lock for region !AD, lock held by pid !UL", 7,
"REPLINSTOPEN", "Error opening replication instance file !AD", 2,
"REPLINSTCLOSE", "Error closing replication instance file !AD", 2,
"UNUSEDMSG972", "JNLNOTFOUND : Last used in V4.4-000", 0,
"JNLNOTFOUND", "File !AD does not exist -- possibly moved or deleted", 2,
"DBCRERR8", "Database file !AD, cr location 0x!XJ blk = 0x!XL error: !AD was 0x!16@XQ, expecting 0x!16@XQ -- called from module !AD at line !UL", 11,
"NUMPROCESSORS", "Could not determine number of processors", 0,
"DBADDRANGE8", "Database file !AD, element location 0x!XJ: blk = 0x!XL: control 0x!16@XQ was outside !AD range 0x!16@XQ to 0x!16@XQ", 9,
@ -824,16 +824,16 @@ LITDEF err_msg merrors[] = {
"RENAMEFAIL", "Rename of file !AD to !AD failed", 4,
"FILERENAME", "File !AD is renamed to !AD", 4,
"JNLBUFINFO", "Pid 0x!XL!/ dsk 0x!XL free 0x!XL bytcnt 0x!XL io_in_prog 0x!XL fsync_in_prog 0x!XL!/ dskaddr 0x!XL freeaddr 0x!XL qiocnt 0x!XL now_writer 0x!XL fsync_pid 0x!XL!/filesize 0x!XL cycle 0x!XL errcnt 0x!XL wrtsize 0x!XL fsync_dskaddr 0x!XL", 16,
"UNUSEDMSG989", "JNLQIOLOCKED : Last used in V4.4-000", 0,
"UNUSEDMSG990", "JNLEOFPREZERO : Last used in V4.4-000", 0,
"JNLQIOLOCKED", "Error obtaining io_in_prog lock on jnl-file !AD", 2,
"JNLEOFPREZERO", "Error while zeroing jnl-file !AD", 2,
"TPNOTACID", "!AD at !AD in a final TP retry violates ACID properties of a TRANSACTION; indefinite RESTARTs may occur !AD !AD", 8,
"JNLSETDATA2LONG", "SET journal record has data of length !UL. Target system cannot handle data more than !UL bytes.", 2,
"JNLNEWREC", "Target system cannot recognize journal record of type !UL, last recognized type is !UL", 2,
"REPLFTOKSEM", "Error with replication semaphores for instance file !AD", 2,
"UNUSEDMSG995", "GETCWD : Last used before V4.0-001E", 0,
"GETCWD", "Error getting current working directory for file !AD", 2,
"EXTRIOERR", "Error writing extract file !AD", 2,
"EXTRCLOSEERR", "Error closing extract file !AD", 2,
"UNUSEDMSG998", "TRUNCATE : Last used in V4.3-001F", 0,
"TRUNCATE", "Error while truncating jnl-file !AD to length !UL", 3,
"REPLEXITERR", "Replication process encountered an error while exiting", 0,
"MUDESTROYSUC", "Global section (!AD) corresponding to file !AD successfully destroyed", 4,
"DBRNDWN", "Error during global database rundown for region !AD.!/Notify those responsible for proper database operation.", 2,
@ -846,7 +846,7 @@ LITDEF err_msg merrors[] = {
"TCSETATTR", "Error while setting terminal attributes on file descriptor !UL", 1,
"IOWRITERR", "IO Write by pid 0x!XL to blk 0x!XL of database file !AD failed. Pid 0x!XL retrying the IO.", 5,
"REPLINSTWRITE", "Error writing [0x!XL] bytes at offset [0x!16@XQ] in replication instance file !AD", 4,
"DBBADFREEBLKCTR", "Database !AD free blocks counter in file header: 0x!XL appears incorrect, should be 0x!XL. Auto-corrected.", 4,
"DBBADFREEBLKCTR", "Database !AD free blocks counter in file header: 0x!XL is incorrect, should be 0x!XL. Auto-corrected.", 4,
"REQ2RESUME", "Request to resume suspended processing received from process !UL owned by userid !UL", 2,
"TIMERHANDLER", "Incorrect SIGALRM handler (0x!XJ) found by !AD", 3,
"FREEMEMORY", "Error occurred freeing memory from 0x!XJ", 1,
@ -860,7 +860,7 @@ LITDEF err_msg merrors[] = {
"REPLACCSEM", "Error with replication access semaphore (id = !UL) for instance file !AD", 3,
"JNLFLUSHNOPROG", "No progress while attempting to flush journal file !AD", 2,
"REPLINSTCREATE", "Error creating replication instance file !AD", 2,
"SUSPENDING", "Process Received Signal !UL. Suspending processing on user request or attempt to do terminal I/O while running in the background", 1,
"SUSPENDING", "Suspending processing on user request or attempt to do terminal I/O while running in the background", 0,
"SOCKBFNOTEMPTY", "Socket buffer size cannot be set to 0x!XL due to 0x!XL bytes of buffered data. Read first.", 2,
"ILLESOCKBFSIZE", "The specified socket buffer size is 0x!XL, which is either 0 or too big", 1,
"NOSOCKETINDEV", "There is no socket in the current socket device", 0,
@ -914,7 +914,7 @@ LITDEF err_msg merrors[] = {
"SYSTEMVALUE", "Invalid value for $SYSTEM (!AD)", 2,
"SIZENOTVALID4", "Size (in bytes) must be either 1, 2, or 4", 0,
"STRNOTVALID", "Error: cannot convert !AD value to valid value", 2,
"UNUSEDMSG1079", "RECNOCREJNL : Last used in V4.3-001F", 0,
"RECNOCREJNL", "Recover could not create new journal file !AD", 2,
"ERRWETRAP", "Error while processing $ETRAP", 0,
"TRACINGON", "Tracing already turned on", 0,
"CITABENV", "Environment variable for call-in table !AD not set", 2,
@ -942,9 +942,9 @@ LITDEF err_msg merrors[] = {
"ZDIROUTOFSYNC", "$ZDIRECTORY !AD is not the same as its cached value !AD", 4,
"GBLNOEXIST", "Global !AD no longer exists", 2,
"MAXBTLEVEL", "Global !AD reached maximum level", 2,
"UNUSEDMSG1107", "JNLSTRESTFL : found no evidence it ever was used in a production release", 0,
"JNLSTRESTFL", "Failed to restore journaling state for database !AD", 2,
"JNLALIGNSZCHG", "Journal ALIGNSIZE is rounded up to !UL blocks (closest next higher power of two)", 1,
"UNUSEDMSG1109", "MAXTRACELEVEL : last used in V5.4-002B", 0,
"MAXTRACELEVEL", "The maximum traceable level of !UL has been exceeded. The frame information will not be maintained.", 1,
"GVFAILCORE", "A core file is being created for later analysis if necessary", 0,
"DBCDBNOCERTIFY", "Database !AD HAS NOT been certified due to the preceding errors - rerun DBCERTIFY SCAN", 2,
"DBFRZRESETSUC", "Freeze released successfully on database file !AD", 2,
@ -1145,15 +1145,15 @@ LITDEF err_msg merrors[] = {
"DZWRNOALIAS", "$ZWRTAC cannot be aliased", 0,
"FREEZEERR", "Error while trying to !AD region !AD", 4,
"CLOSEFAIL", "Error while closing file descriptor !SL", 1,
"CRYPTINIT", "Could not initialize encryption library while opening encrypted file !AD. !AD", 4,
"CRYPTOPFAILED", "Encrypt/Decrypt operation failed for file !AD. !AD", 4,
"CRYPTDLNOOPEN", "Could not load encryption library while opening encrypted file !AD. !AD", 4,
"CRYPTINIT", "Error initializing encryption library. !AD", 2,
"CRYPTOPFAILED", "Encrypt/Decrypt operation failed. !AD", 2,
"CRYPTDLNOOPEN", "Error loading encryption library. !AD", 2,
"CRYPTNOV4", "!AD is an encrypted database. Cannot downgrade(to V4) with Encryption option enabled.", 2,
"CRYPTNOMM", "!AD is an encrypted database. Cannot support MM access method.", 2,
"CRYPTJNLWRONGHASH", "Encryption key hash mismatch between journal file !AD and corresponding database file !AD", 4,
"CRYPTKEYFETCHFAILED", "Could not retrieve encryption key corresponding to file !AD. !AD", 4,
"CRYPTKEYFETCHFAILEDNF", "Could not retrieve encryption key during !AD operation key. !AD", 4,
"CRYPTHASHGENFAILED", "Could not generate cryptographic hash for symmetric key corresponding to file !AD. !AD", 4,
"CRYPTKEYFETCHFAILED", "Cannot obtain encryption key for !AD. !AD", 4,
"CRYPTKEYFETCHFAILEDNF", "Cannot obtain encryption key. !AD", 2,
"CRYPTHASHGENFAILED", "Error generating encryption hash. !AD", 2,
"CRYPTNOPSWDINTP", "Cannot prompt for password inside a TP transaction.", 0,
"BADTAG", "Unable to use file !AD (CCSID !UL) with CCSID !UL", 4,
"ICUVERLT36", "!AD !UL.!UL. ICU version greater than or equal to 3.6 should be used", 4,
@ -1189,7 +1189,7 @@ LITDEF err_msg merrors[] = {
"TRIGTLVLCHNG", "Detected a net transaction level ($TLEVEL) change during trigger !AD. Transaction level must be the same at exit as when the trigger started", 2,
"TRIGNAMEUNIQ", "Unable to make trigger name !AD unique beyond !UL versions already loaded", 3,
"ZTRIGINVACT", "Missing or invalid parameter in position !UL given to $ZTRIGGER()", 1,
"INDRCOMPFAIL", "Compilation of indirection failed", 0,
"UNUSEDMSG1354", "ZTRIGNOTP : Last used in V5.4-001", 0,
"QUITALSINV", "QUIT * return when the extrinsic was not invoked with SET *", 0,
"PROCTERM", "!AD process termination due to !AD (return code !UL) from !AD", 7,
"SRCLNNTDSP", "Source lines exceeding !UL character width are not displayed", 1,
@ -1202,10 +1202,10 @@ LITDEF err_msg merrors[] = {
"SSATTACHSHM", "Error while attaching to shared memory identifier !UL", 1,
"TRIGDEFNOSYNC", "Global ^!AD has triggers defined on the !AD instance but none on the !AD instance. Current journal sequence number is 0x!16@XQ", 7,
"TRESTMAX", "TRESTART not allowed in a final TP retry more than once", 0,
"UNUSEDMSG1367", "TPLOCKRESTMAX : Last used in V5.5-000", 0,
"TPLOCKRESTMAX", "Transaction restarts due to unavailability of locks not allowed in a final TP retry more than !UL times", 1,
"GBLEXPECTED", "Global variable reference expected in this context", 0,
"GVZTRIGFAIL", "ZTRIGGER of a global variable failed. Failure code: !AD.", 2,
"MUUSERLBK", "Abnormal shutdown of replication-enabled database !AD detected", 2,
"UNUSEDMSG1370", "ONLYLDTRIG: Last used in V5.4-001", 0,
"SETINSETTRIGONLY", "ISV !AD can only be modified in a 'SET' type trigger", 2,
"DZTRIGINTRIG", "$ZTRIGGER() is not allowed inside trigger context. Trigger name: !AD", 2,
"SECNODZTRIGINTP", "Sequence number 0x!16@XQ contains $ZTRIGGER() updates made inside a transaction which the current replicating instance does not support. The replicating instance must be upgraded to at least V5.4-002 to support this type of transaction. Cannot continue", 1,
@ -1217,7 +1217,7 @@ LITDEF err_msg merrors[] = {
"REPLXENDIANFAIL", "!AD side encountered error while doing endian conversion at journal sequence number 0x!16@XQ", 3,
"ZGOTOINVLVL2", "ZGOTO 0:entryref is not valid on VMS (UNLINK is a UNIX only feature)", 0,
"GTMSECSHRCHDIRF", "gtmsecshr unable to chdir to its temporary directory (!AD)", 2,
"JNLORDBFLU", "Error flushing database blocks to !AD. See related messages in the operator log", 2,
"UNUSEDMSG1382", "FORCTRLINDX: Only used in V5.4-002", 0,
"ZCCLNUPRTNMISNG", "External call: Cleanup routine name missing. Cannot continue", 0,
"ZCINVALIDKEYWORD", "External call: Invalid keyword found. Cannot continue", 0,
"REPLNOMULTILINETRG", "Sequence number 0x!16@XQ contains a trigger definition too large for transmission to the current replicating instance, which does not support multi-line triggers - stopping replication", 1,
@ -1248,8 +1248,8 @@ LITDEF err_msg merrors[] = {
"NORESYNCUPDATERONLY", "NORESYNC qualifier only allowed on a Supplementary Instance which allows local updates", 0,
"NOSUPPLSUPPL", "Instance !AD is configured to perform local updates so it cannot receive from Supplementary Instance !AD", 4,
"REPL2OLD", "Instance !AD uses a GT.M version that does not support connection with the current version on instance !AD", 4,
"EXTRFILEXISTS", "Error opening output file: !AD -- File exists", 2,
"MUUSERECOV", "Abnormal shutdown of journaled database !AD detected", 2,
"UNUSEDMSG1413", "RCVR2MANY: Never used before so slot free for reuse", 0,
"UNUSEDMSG1414", "RLBKCONFIGBNDRY: Never used before so slot free for reuse", 0,
"SECNOTSUPPLEMENTARY", "!AD is a Supplementary Instance and so cannot act as a source to non-Supplementary Instance !AD ", 4,
"SUPRCVRNEEDSSUPSRC", "Instance !AD is not configured to perform local updates so it cannot act as a receiver for non-Supplementary Instance !AD", 4,
"UNUSEDMSG1417", "SYNCTOSAMETYPE: Never used before so slot free for reuse", 0,
@ -1272,7 +1272,7 @@ LITDEF err_msg merrors[] = {
"ORLBKNOV4BLK", "Region !AD (!AD) has V4 format blocks. Database upgrade required. ONLINE ROLLBACK cannot continue", 4,
"DBROLLEDBACK", "Concurrent ONLINE ROLLBACK detected on one or more regions. The current operation is no longer valid", 0,
"DSEWCREINIT", "Database cache reinitialized by DSE for region !AD", 2,
"MURNDWNOVRD", "OVERRIDE qualifier used with MUPIP RUNDOWN on database file !AD", 2,
"UNUSEDMSG1437", "A total of !UL process(es) skipped database rundown due to a concurrent ONLINE ROLLBACK", 1,
"REPLONLNRLBK", "ONLINE ROLLBACK detected. Starting afresh", 0,
"SRVLCKWT2LNG", "PID !UL is holding the source server lock. Waited for !UL minute(s). Now exiting", 2,
"IGNBMPMRKFREE", "Ignoring bitmap free-up operation for region !AD (!AD) due to concurrent ONLINE ROLLBACK", 4,
@ -1326,43 +1326,6 @@ LITDEF err_msg merrors[] = {
"MUFILRNDWNFL2", "Database section (id = !UL) belonging to database file !AD rundown failed", 3,
"MUINSTFROZEN", "!AD : Instance !AZ is frozen. Waiting for instance to be unfrozen before proceeding with writes to database file !AD", 5,
"MUINSTUNFROZEN", "!AD : Instance !AZ is now Unfrozen. Continuing with writes to database file !AD", 5,
"GTMEISDIR", "!AD : Is a directory", 2,
"SPCLZMSG", "The following error message cannot be driven through ZMESSAGE", 0,
"MUNOTALLINTEG", "At least one region skipped. See the earlier messages", 0,
"BKUPRUNNING", "Process !UL is currently backing up region !AD. Cannot start another backup.", 3,
"MUSIZEINVARG", "MUPIP SIZE : Invalid parameter value for: !AD", 2,
"MUSIZEFAIL", "MUPIP SIZE : failed. Failure code: !AD.", 2,
"SIDEEFFECTEVAL", "Extrinsic ($$), External call ($&) or $INCREMENT() with potential side effects in actuallist, function arguments, non-Boolean binary operands or subscripts", 0,
"CRYPTINIT2", "Could not initialize encryption library !AD. !AD", 4,
"CRYPTDLNOOPEN2", "Could not load encryption library !AD. !AD", 4,
"CRYPTBADCONFIG", "Could not retrieve data from encrypted file !AD due to bad encryption configuration. !AD", 4,
"DBCOLLREQ", "JOURNAL EXTRACT proceeding without collation information for globals in database. !AD !AD", 4,
"SETEXTRENV", "Database files are missing or Instance is frozen; supply the database files, wait for the freeze to lift or define gtm_extract_nocol to extract possibly incorrect collation", 0,
"NOTALLDBRNDWN", "Not all regions were successfully rundown", 0,
"TPRESTNESTERR", "TP restart signaled while handing error - treated as nested error - Use TROLLBACK in error handler to avoid this", 0,
"JNLFILRDOPN", "Error opening journal file !AD for read for database file !AD", 4,
"SEQNUMSEARCHTIMEOUT", "Timed out trying to find sequence number !@ZQ [0x!16@XQ] in Journal File(s). See above messages for details. Source server exiting", 2,
"FTOKKEY", "FTOK key 0x!XL", 1,
"SEMID", "Semaphore id !UL", 1,
"JNLQIOSALVAGE", "Journal IO lock salvaged", 0,
"FAKENOSPCLEARED", "DEBUG: All fake ENOSPC flags were cleared !UL heartbeats ago", 1,
"MMFILETOOLARGE", "Size of !AD region (!AD) is larger than maximum size supported for memory mapped I/O on this platform", 4,
"BADZPEEKARG", "Missing, invalid or surplus !AD parameter for $ZPEEK()", 2,
"BADZPEEKRANGE", "Access exception raised in memory range given to $ZPEEK()", 0,
"BADZPEEKFMT", "$ZPEEK() value length inappropriate for selected format", 0,
"DBMBMINCFREFIXED", "Master bitmap incorrectly marks local bitmap 0x!XL as free. Auto-corrected", 1,
"NULLENTRYREF", "JOB command did not specify entryref", 0,
"ZPEEKNORPLINFO", "$ZPEEK() unable to access requested replication structure", 0,
"MMREGNOACCESS", "Region !AD (!AD) is no longer accessible. See prior error messages in the operator and application error logs", 4,
"MALLOCMAXUNIX", "Exceeded maximum allocation defined by $gtm_max_storalloc", 0,
"MALLOCMAXVMS", "Exceeded maximum allocation defined by GTM_MAX_STORALLOC", 0,
"HOSTCONFLICT", "Host !AD could not open database file !AD because it is marked as already open on node !AD", 6,
"GETADDRINFO", "Error in getting address info", 0,
"GETNAMEINFO", "Error in getting name info", 0,
"SOCKBIND", "Error in binding TCP socket", 0,
"INSTFRZDEFER", "Instance Freeze initiated by !AD error on region !AD deferred due to critical resource conflict", 4,
"REGOPENRETRY", "Attempt to open region !AD (!AD) using startup shortcut failed due to conflicting database shutdown. Retrying...", 4,
"REGOPENFAIL", "Failed to open region !AD (!AD) due to conflicting database shutdown activity", 4,
};
LITDEF int ERR_ACK = 150372361;
@ -1447,7 +1410,7 @@ LITDEF int ERR_GVSUBOFLOW = 150372986;
LITDEF int ERR_GVUNDEF = 150372994;
LITDEF int ERR_TRANSNEST = 150373002;
LITDEF int ERR_INDEXTRACHARS = 150373010;
LITDEF int ERR_UNUSEDMSG260 = 150373018;
LITDEF int ERR_INDMAXNEST = 150373018;
LITDEF int ERR_INDRMAXLEN = 150373026;
LITDEF int ERR_INSFFBCNT = 150373034;
LITDEF int ERR_INTEGERRS = 150373042;
@ -1547,7 +1510,7 @@ LITDEF int ERR_TERMASTQUOTA = 150373786;
LITDEF int ERR_TEXTARG = 150373794;
LITDEF int ERR_TMPSTOREMAX = 150373802;
LITDEF int ERR_VIEWCMD = 150373810;
LITDEF int ERR_JNI = 150373818;
LITDEF int ERR_TXTNEGLIN = 150373818;
LITDEF int ERR_TXTSRCFMT = 150373826;
LITDEF int ERR_UIDMSG = 150373834;
LITDEF int ERR_UIDSND = 150373842;
@ -1556,9 +1519,9 @@ LITDEF int ERR_UNIMPLOP = 150373858;
LITDEF int ERR_VAREXPECTED = 150373866;
LITDEF int ERR_VARRECBLKSZ = 150373874;
LITDEF int ERR_MAXARGCNT = 150373882;
LITDEF int ERR_GTMSECSHRSEMGET = 150373890;
LITDEF int ERR_WCFAIL = 150373890;
LITDEF int ERR_VIEWARGCNT = 150373898;
LITDEF int ERR_GTMSECSHRDMNSTARTED = 150373907;
LITDEF int ERR_XKILLCNTEXC = 150373906;
LITDEF int ERR_ZATTACHERR = 150373914;
LITDEF int ERR_ZDATEFMT = 150373922;
LITDEF int ERR_ZEDFILSPEC = 150373930;
@ -1613,7 +1576,7 @@ LITDEF int ERR_GVRUNDOWN = 150374314;
LITDEF int ERR_LKRUNDOWN = 150374322;
LITDEF int ERR_IORUNDOWN = 150374330;
LITDEF int ERR_FILENOTFND = 150374338;
LITDEF int ERR_MUFILRNDWNFL = 150374346;
LITDEF int ERR_MUFILRNDWNFL = 150374347;
LITDEF int ERR_JNLTMQUAL1 = 150374354;
LITDEF int ERR_FORCEDHALT = 150374364;
LITDEF int ERR_LOADEOF = 150374370;
@ -1625,14 +1588,14 @@ LITDEF int ERR_GVZPREVFAIL = 150374410;
LITDEF int ERR_MULTFORMPARM = 150374418;
LITDEF int ERR_QUITARGUSE = 150374426;
LITDEF int ERR_NAMEEXPECTED = 150374434;
LITDEF int ERR_FALLINTOFLST = 150374442;
LITDEF int ERR_UNUSEDMSG438 = 150374442;
LITDEF int ERR_NOTEXTRINSIC = 150374450;
LITDEF int ERR_GTMSECSHRREMSEMFAIL = 150374458;
LITDEF int ERR_UNUSEDMSG440 = 150374458;
LITDEF int ERR_FMLLSTMISSING = 150374466;
LITDEF int ERR_ACTLSTTOOLONG = 150374474;
LITDEF int ERR_ACTOFFSET = 150374482;
LITDEF int ERR_MAXACTARG = 150374490;
LITDEF int ERR_GTMSECSHRREMSEM = 150374498;
LITDEF int ERR_GTMDUMPFAIL = 150374498;
LITDEF int ERR_JNLTMQUAL2 = 150374506;
LITDEF int ERR_GDINVALID = 150374514;
LITDEF int ERR_ASSERT = 150374524;
@ -1776,17 +1739,17 @@ LITDEF int ERR_LDGOQFMT = 150375618;
LITDEF int ERR_BEGINST = 150375627;
LITDEF int ERR_INVMVXSZ = 150375636;
LITDEF int ERR_JNLWRTNOWWRTR = 150375642;
LITDEF int ERR_GTMSECSHRSHMCONCPROC = 150375650;
LITDEF int ERR_MUPGDERR = 150375650;
LITDEF int ERR_JNLINVALLOC = 150375656;
LITDEF int ERR_JNLINVEXT = 150375664;
LITDEF int ERR_MUPCLIERR = 150375674;
LITDEF int ERR_JNLTMQUAL4 = 150375682;
LITDEF int ERR_GTMSECSHRREMSHM = 150375691;
LITDEF int ERR_GTMSECSHRREMFILE = 150375699;
LITDEF int ERR_UNUSEDMSG594 = 150375690;
LITDEF int ERR_UNUSEDMSG595 = 150375698;
LITDEF int ERR_MUNODBNAME = 150375706;
LITDEF int ERR_FILECREATE = 150375715;
LITDEF int ERR_FILENOTCREATE = 150375723;
LITDEF int ERR_JNLPROCSTUCK = 150375728;
LITDEF int ERR_JNLPROCSTUCK = 150375731;
LITDEF int ERR_INVGLOBALQUAL = 150375738;
LITDEF int ERR_COLLARGLONG = 150375746;
LITDEF int ERR_NOPINI = 150375754;
@ -1804,7 +1767,7 @@ LITDEF int ERR_WCERRNOTCHG = 150375842;
LITDEF int ERR_WCWRNNOTCHG = 150375848;
LITDEF int ERR_ZCWRONGDESC = 150375858;
LITDEF int ERR_MUTNWARN = 150375864;
LITDEF int ERR_GTMSECSHRUPDDBHDR = 150375875;
LITDEF int ERR_JNLNAMLEN = 150375874;
LITDEF int ERR_LCKSTIMOUT = 150375880;
LITDEF int ERR_CTLMNEMAXLEN = 150375890;
LITDEF int ERR_CTLMNEXPECTED = 150375898;
@ -1940,14 +1903,14 @@ LITDEF int ERR_MUTEXFRCDTERM = 150376928;
LITDEF int ERR_GTMSECSHR = 150376938;
LITDEF int ERR_GTMSECSHRSRVFID = 150376944;
LITDEF int ERR_GTMSECSHRSRVFIL = 150376952;
LITDEF int ERR_FREEBLKSLOW = 150376960;
LITDEF int ERR_SOCKACTNA = 150376962;
LITDEF int ERR_PROTNOTSUP = 150376970;
LITDEF int ERR_DELIMSIZNA = 150376978;
LITDEF int ERR_INVCTLMNE = 150376986;
LITDEF int ERR_SOCKLISTEN = 150376994;
LITDEF int ERR_LQLENGTHNA = 150377002;
LITDEF int ERR_ADDRTOOLONG = 150377010;
LITDEF int ERR_GTMSECSHRGETSEMFAIL = 150377018;
LITDEF int ERR_UNUSEDMSG760 = 150377018;
LITDEF int ERR_CPBEYALLOC = 150377026;
LITDEF int ERR_DBRDONLY = 150377034;
LITDEF int ERR_DUPTN = 150377040;
@ -1968,7 +1931,7 @@ LITDEF int ERR_BCKUPBUFLUSH = 150377154;
LITDEF int ERR_NOFORKCORE = 150377160;
LITDEF int ERR_JNLREAD = 150377170;
LITDEF int ERR_JNLMINALIGN = 150377176;
LITDEF int ERR_UNUSEDMSG781 = 150377186;
LITDEF int ERR_JNLDSKALIGN = 150377184;
LITDEF int ERR_JNLPOOLSETUP = 150377194;
LITDEF int ERR_JNLSTATEOFF = 150377202;
LITDEF int ERR_RECVPOOLSETUP = 150377210;
@ -2031,7 +1994,7 @@ LITDEF int ERR_RECSIZENOTEVEN = 150377658;
LITDEF int ERR_BUFFLUFAILED = 150377666;
LITDEF int ERR_MUQUALINCOMP = 150377674;
LITDEF int ERR_DISTPATHMAX = 150377682;
LITDEF int ERR_UNUSEDMSG844 = 150377690;
LITDEF int ERR_MAXTRACEHEIGHT = 150377691;
LITDEF int ERR_IMAGENAME = 150377698;
LITDEF int ERR_GTMSECSHRPERM = 150377706;
LITDEF int ERR_GTMDISTUNDEF = 150377714;
@ -2137,7 +2100,7 @@ LITDEF int ERR_DBMBPFRDLBM = 150378504;
LITDEF int ERR_DBMBPFRINT = 150378512;
LITDEF int ERR_DBMAXKEYEXC = 150378522;
LITDEF int ERR_DBMXRSEXCMIN = 150378530;
LITDEF int ERR_UNUSEDMSG950 = 150378538;
LITDEF int ERR_DBMAXRSEXBL = 150378538;
LITDEF int ERR_DBREADBM = 150378546;
LITDEF int ERR_DBCOMPTOOLRG = 150378554;
LITDEF int ERR_DBVERPERFWARN2 = 150378560;
@ -2159,7 +2122,7 @@ LITDEF int ERR_MUTEXRSRCCLNUP = 150378683;
LITDEF int ERR_SEMWT2LONG = 150378690;
LITDEF int ERR_REPLINSTOPEN = 150378698;
LITDEF int ERR_REPLINSTCLOSE = 150378706;
LITDEF int ERR_UNUSEDMSG972 = 150378714;
LITDEF int ERR_JNLNOTFOUND = 150378715;
LITDEF int ERR_DBCRERR8 = 150378723;
LITDEF int ERR_NUMPROCESSORS = 150378728;
LITDEF int ERR_DBADDRANGE8 = 150378739;
@ -2176,16 +2139,16 @@ LITDEF int ERR_REPLJNLCLOSED = 150378818;
LITDEF int ERR_RENAMEFAIL = 150378824;
LITDEF int ERR_FILERENAME = 150378835;
LITDEF int ERR_JNLBUFINFO = 150378843;
LITDEF int ERR_UNUSEDMSG989 = 150378850;
LITDEF int ERR_UNUSEDMSG990 = 150378858;
LITDEF int ERR_JNLQIOLOCKED = 150378850;
LITDEF int ERR_JNLEOFPREZERO = 150378858;
LITDEF int ERR_TPNOTACID = 150378867;
LITDEF int ERR_JNLSETDATA2LONG = 150378874;
LITDEF int ERR_JNLNEWREC = 150378882;
LITDEF int ERR_REPLFTOKSEM = 150378890;
LITDEF int ERR_UNUSEDMSG995 = 150378898;
LITDEF int ERR_GETCWD = 150378898;
LITDEF int ERR_EXTRIOERR = 150378906;
LITDEF int ERR_EXTRCLOSEERR = 150378914;
LITDEF int ERR_UNUSEDMSG998 = 150378922;
LITDEF int ERR_TRUNCATE = 150378922;
LITDEF int ERR_REPLEXITERR = 150378930;
LITDEF int ERR_MUDESTROYSUC = 150378939;
LITDEF int ERR_DBRNDWN = 150378946;
@ -2198,7 +2161,7 @@ LITDEF int ERR_TCGETATTR = 150378994;
LITDEF int ERR_TCSETATTR = 150379002;
LITDEF int ERR_IOWRITERR = 150379010;
LITDEF int ERR_REPLINSTWRITE = 150379018;
LITDEF int ERR_DBBADFREEBLKCTR = 150379024;
LITDEF int ERR_DBBADFREEBLKCTR = 150379027;
LITDEF int ERR_REQ2RESUME = 150379035;
LITDEF int ERR_TIMERHANDLER = 150379040;
LITDEF int ERR_FREEMEMORY = 150379050;
@ -2206,11 +2169,11 @@ LITDEF int ERR_MUREPLSECDEL = 150379059;
LITDEF int ERR_MUREPLSECNOTDEL = 150379067;
LITDEF int ERR_MUJPOOLRNDWNSUC = 150379075;
LITDEF int ERR_MURPOOLRNDWNSUC = 150379083;
LITDEF int ERR_MUJPOOLRNDWNFL = 150379090;
LITDEF int ERR_MURPOOLRNDWNFL = 150379098;
LITDEF int ERR_MUJPOOLRNDWNFL = 150379091;
LITDEF int ERR_MURPOOLRNDWNFL = 150379099;
LITDEF int ERR_MUREPLPOOL = 150379107;
LITDEF int ERR_REPLACCSEM = 150379114;
LITDEF int ERR_JNLFLUSHNOPROG = 150379120;
LITDEF int ERR_JNLFLUSHNOPROG = 150379122;
LITDEF int ERR_REPLINSTCREATE = 150379130;
LITDEF int ERR_SUSPENDING = 150379139;
LITDEF int ERR_SOCKBFNOTEMPTY = 150379146;
@ -2266,7 +2229,7 @@ LITDEF int ERR_NOSUBSCRIPT = 150379538;
LITDEF int ERR_SYSTEMVALUE = 150379546;
LITDEF int ERR_SIZENOTVALID4 = 150379554;
LITDEF int ERR_STRNOTVALID = 150379562;
LITDEF int ERR_UNUSEDMSG1079 = 150379570;
LITDEF int ERR_RECNOCREJNL = 150379571;
LITDEF int ERR_ERRWETRAP = 150379578;
LITDEF int ERR_TRACINGON = 150379587;
LITDEF int ERR_CITABENV = 150379594;
@ -2284,7 +2247,7 @@ LITDEF int ERR_SETZDIR = 150379682;
LITDEF int ERR_JOBACTREF = 150379690;
LITDEF int ERR_ECLOSTMID = 150379696;
LITDEF int ERR_ZFF2MANY = 150379706;
LITDEF int ERR_JNLFSYNCLSTCK = 150379712;
LITDEF int ERR_JNLFSYNCLSTCK = 150379715;
LITDEF int ERR_DELIMWIDTH = 150379722;
LITDEF int ERR_DBBMLCORRUPT = 150379730;
LITDEF int ERR_DLCKAVOIDANCE = 150379738;
@ -2294,9 +2257,9 @@ LITDEF int ERR_INVZDIRFORM = 150379762;
LITDEF int ERR_ZDIROUTOFSYNC = 150379768;
LITDEF int ERR_GBLNOEXIST = 150379779;
LITDEF int ERR_MAXBTLEVEL = 150379786;
LITDEF int ERR_UNUSEDMSG1107 = 150379794;
LITDEF int ERR_JNLSTRESTFL = 150379794;
LITDEF int ERR_JNLALIGNSZCHG = 150379803;
LITDEF int ERR_UNUSEDMSG1109 = 150379810;
LITDEF int ERR_MAXTRACELEVEL = 150379811;
LITDEF int ERR_GVFAILCORE = 150379818;
LITDEF int ERR_DBCDBNOCERTIFY = 150379826;
LITDEF int ERR_DBFRZRESETSUC = 150379835;
@ -2541,7 +2504,7 @@ LITDEF int ERR_TRIGTCOMMIT = 150381738;
LITDEF int ERR_TRIGTLVLCHNG = 150381746;
LITDEF int ERR_TRIGNAMEUNIQ = 150381754;
LITDEF int ERR_ZTRIGINVACT = 150381762;
LITDEF int ERR_INDRCOMPFAIL = 150381770;
LITDEF int ERR_UNUSEDMSG1354 = 150381770;
LITDEF int ERR_QUITALSINV = 150381778;
LITDEF int ERR_PROCTERM = 150381784;
LITDEF int ERR_SRCLNNTDSP = 150381795;
@ -2554,10 +2517,10 @@ LITDEF int ERR_TCOMMITDISALLOW = 150381842;
LITDEF int ERR_SSATTACHSHM = 150381850;
LITDEF int ERR_TRIGDEFNOSYNC = 150381856;
LITDEF int ERR_TRESTMAX = 150381866;
LITDEF int ERR_UNUSEDMSG1367 = 150381874;
LITDEF int ERR_TPLOCKRESTMAX = 150381874;
LITDEF int ERR_GBLEXPECTED = 150381882;
LITDEF int ERR_GVZTRIGFAIL = 150381890;
LITDEF int ERR_MUUSERLBK = 150381898;
LITDEF int ERR_UNUSEDMSG1370 = 150381898;
LITDEF int ERR_SETINSETTRIGONLY = 150381906;
LITDEF int ERR_DZTRIGINTRIG = 150381914;
LITDEF int ERR_SECNODZTRIGINTP = 150381922;
@ -2569,7 +2532,7 @@ LITDEF int ERR_REPLNOXENDIAN = 150381962;
LITDEF int ERR_REPLXENDIANFAIL = 150381970;
LITDEF int ERR_ZGOTOINVLVL2 = 150381978;
LITDEF int ERR_GTMSECSHRCHDIRF = 150381986;
LITDEF int ERR_JNLORDBFLU = 150381994;
LITDEF int ERR_UNUSEDMSG1382 = 150381994;
LITDEF int ERR_ZCCLNUPRTNMISNG = 150382002;
LITDEF int ERR_ZCINVALIDKEYWORD = 150382010;
LITDEF int ERR_REPLNOMULTILINETRG = 150382018;
@ -2600,8 +2563,8 @@ LITDEF int ERR_NORESYNCSUPPLONLY = 150382210;
LITDEF int ERR_NORESYNCUPDATERONLY = 150382218;
LITDEF int ERR_NOSUPPLSUPPL = 150382226;
LITDEF int ERR_REPL2OLD = 150382234;
LITDEF int ERR_EXTRFILEXISTS = 150382242;
LITDEF int ERR_MUUSERECOV = 150382250;
LITDEF int ERR_UNUSEDMSG1413 = 150382243;
LITDEF int ERR_UNUSEDMSG1414 = 150382251;
LITDEF int ERR_SECNOTSUPPLEMENTARY = 150382258;
LITDEF int ERR_SUPRCVRNEEDSSUPSRC = 150382266;
LITDEF int ERR_UNUSEDMSG1417 = 150382275;
@ -2624,7 +2587,7 @@ LITDEF int ERR_ORLBKFRZOVER = 150382403;
LITDEF int ERR_ORLBKNOV4BLK = 150382410;
LITDEF int ERR_DBROLLEDBACK = 150382418;
LITDEF int ERR_DSEWCREINIT = 150382427;
LITDEF int ERR_MURNDWNOVRD = 150382435;
LITDEF int ERR_UNUSEDMSG1437 = 150382435;
LITDEF int ERR_REPLONLNRLBK = 150382442;
LITDEF int ERR_SRVLCKWT2LNG = 150382450;
LITDEF int ERR_IGNBMPMRKFREE = 150382459;
@ -2675,49 +2638,12 @@ LITDEF int ERR_JNLBUFFDBUPD = 150382808;
LITDEF int ERR_LOCKINCR2HIGH = 150382818;
LITDEF int ERR_LOCKIS = 150382827;
LITDEF int ERR_LDSPANGLOINCMP = 150382834;
LITDEF int ERR_MUFILRNDWNFL2 = 150382842;
LITDEF int ERR_MUFILRNDWNFL2 = 150382843;
LITDEF int ERR_MUINSTFROZEN = 150382851;
LITDEF int ERR_MUINSTUNFROZEN = 150382859;
LITDEF int ERR_GTMEISDIR = 150382866;
LITDEF int ERR_SPCLZMSG = 150382874;
LITDEF int ERR_MUNOTALLINTEG = 150382880;
LITDEF int ERR_BKUPRUNNING = 150382890;
LITDEF int ERR_MUSIZEINVARG = 150382898;
LITDEF int ERR_MUSIZEFAIL = 150382906;
LITDEF int ERR_SIDEEFFECTEVAL = 150382912;
LITDEF int ERR_CRYPTINIT2 = 150382922;
LITDEF int ERR_CRYPTDLNOOPEN2 = 150382930;
LITDEF int ERR_CRYPTBADCONFIG = 150382938;
LITDEF int ERR_DBCOLLREQ = 150382944;
LITDEF int ERR_SETEXTRENV = 150382954;
LITDEF int ERR_NOTALLDBRNDWN = 150382962;
LITDEF int ERR_TPRESTNESTERR = 150382970;
LITDEF int ERR_JNLFILRDOPN = 150382978;
LITDEF int ERR_SEQNUMSEARCHTIMEOUT = 150382986;
LITDEF int ERR_FTOKKEY = 150382995;
LITDEF int ERR_SEMID = 150383003;
LITDEF int ERR_JNLQIOSALVAGE = 150383011;
LITDEF int ERR_FAKENOSPCLEARED = 150383019;
LITDEF int ERR_MMFILETOOLARGE = 150383026;
LITDEF int ERR_BADZPEEKARG = 150383034;
LITDEF int ERR_BADZPEEKRANGE = 150383042;
LITDEF int ERR_BADZPEEKFMT = 150383050;
LITDEF int ERR_DBMBMINCFREFIXED = 150383056;
LITDEF int ERR_NULLENTRYREF = 150383066;
LITDEF int ERR_ZPEEKNORPLINFO = 150383074;
LITDEF int ERR_MMREGNOACCESS = 150383082;
LITDEF int ERR_MALLOCMAXUNIX = 150383090;
LITDEF int ERR_MALLOCMAXVMS = 150383098;
LITDEF int ERR_HOSTCONFLICT = 150383106;
LITDEF int ERR_GETADDRINFO = 150383114;
LITDEF int ERR_GETNAMEINFO = 150383122;
LITDEF int ERR_SOCKBIND = 150383130;
LITDEF int ERR_INSTFRZDEFER = 150383139;
LITDEF int ERR_REGOPENRETRY = 150383147;
LITDEF int ERR_REGOPENFAIL = 150383154;
GBLDEF err_ctl merrors_ctl = {
246,
"GTM",
&merrors[0],
1350};
1313};

View File

@ -1,6 +1,6 @@
#################################################################
# #
# Copyright 2001, 2012 Fidelity Information Services, Inc #
# Copyright 2001, 2011 Fidelity Information Services, Inc #
# #
# This source code contains the intellectual property #
# of its copyright holder(s), and is made available #
@ -95,19 +95,6 @@ top = 8
addl $4,%esp
movl %eax, \mval
\label:
.endm
.sbttl mval_def.si mv_force_defined_strict
# ---------------------------------------
# mv_force_defined_strict(mval, label)
# ---------------------------------------
.macro mv_force_defined_strict mval, label
testw $(mval_m_str+mval_m_nm),mval_w_mvtype(\mval)
jne \label
pushl \mval
call underr_strict
addl $4,%esp
\label:
.endm
.sbttl mval_def.si mv_force_str

View File

@ -1,6 +1,6 @@
#################################################################
# #
# Copyright 2001, 2012 Fidelity Information Services, Inc #
# Copyright 2001, 2008 Fidelity Information Services, Inc #
# #
# This source code contains the intellectual property #
# of its copyright holder(s), and is made available #
@ -53,7 +53,7 @@ ENTRY op_forloop
pushl %esi
pushl %ebx
movl indx(%ebp),%esi
mv_force_defined_strict %esi, l0 # disregard NOUNDEF
mv_force_defined %esi, l0
movl %esi, indx(%ebp)
mv_force_num %esi, l1
movl indx(%ebp),%esi

View File

@ -1,39 +0,0 @@
#################################################################
# #
# Copyright 2012 Fidelity Information Services, Inc #
# #
# This source code contains the intellectual property #
# of its copyright holder(s), and is made available #
# under a license. If you do not know the terms of #
# the license, please stop and do not read further. #
# #
#################################################################
# PAGE ,132
.title opp_indsavglvn.s
# .386
# .MODEL FLAT, C
.include "linkage.si"
.INCLUDE "g_msf.si"
.sbttl opp_indsavglvn
# PAGE +
.DATA
.extern frame_pointer # /* :DWORD */
.text
.extern op_indsavglvn
# PUBLIC opp_indsavglvn
ENTRY opp_indsavglvn # /* PROC */
putframe
addl $4,%esp # /* burn return pc */
call op_indsavglvn
addl $12,%esp # /* burn three passed-in args */
getframe
ret
# opp_indsavglvn ENDP
# END

View File

@ -1,39 +0,0 @@
#################################################################
# #
# Copyright 2012 Fidelity Information Services, Inc #
# #
# This source code contains the intellectual property #
# of its copyright holder(s), and is made available #
# under a license. If you do not know the terms of #
# the license, please stop and do not read further. #
# #
#################################################################
# PAGE ,132
.title opp_indsavlvn.s
# .386
# .MODEL FLAT, C
.include "linkage.si"
.INCLUDE "g_msf.si"
.sbttl opp_indsavlvn
# PAGE +
.DATA
.extern frame_pointer # /* :DWORD */
.text
.extern op_indsavlvn
# PUBLIC opp_indsavlvn
ENTRY opp_indsavlvn # /* PROC */
putframe
addl $4,%esp # /* burn return pc */
call op_indsavlvn
addl $8,%esp # /* burn two passed-in args */
getframe
ret
# opp_indsavlvn ENDP
# END

View File

@ -1,6 +1,6 @@
#################################################################
# #
# Copyright 2001, 2012 Fidelity Information Services, Inc #
# Copyright 2001, 2007 Fidelity Information Services, Inc #
# #
# This source code contains the intellectual property #
# of its copyright holder(s), and is made available #
@ -29,9 +29,9 @@
# PUBLIC opp_iretmval
ENTRY opp_iretmval # /* PROC */
putframe
addl $4,%esp # /* burn return pc */
addl $4,%esp
call op_iretmval
addl $8,%esp # /* burn two passed-in args */
addl $4,%esp
getframe
ret
# opp_iretmval ENDP

File diff suppressed because it is too large Load Diff

View File

@ -1,12 +0,0 @@
/arch.gtc/1.1.1.1/Wed May 16 14:01:21 2001//
/caller_id.c/1.1/Fri Nov 2 03:00:15 2012//
/genexport.csh/1.2/Fri Nov 2 03:00:15 2012//
/gtm_env_sp.csh/1.9/Mon Jul 1 22:46:01 2013//
/gtm_env_sp.mk/1.6/Fri Jan 11 04:43:23 2013//
/gtm_getenv.c/1.1/Fri Nov 2 03:00:15 2012//
/hugetlbfs_overrides.c/1.1/Fri Jan 11 05:31:39 2013//
/hugetlbfs_overrides.h/1.1/Fri Jan 11 05:31:39 2013//
/inst_flush.c/1.2/Fri Nov 2 03:00:15 2012//
/platform.cmake/1.1/Fri Jan 11 05:31:39 2013//
/release_name.h/1.6/Wed Oct 23 03:49:22 2013//
D

View File

@ -1,11 +0,0 @@
/arch.gtc////*////
/caller_id.c////*////
/genexport.csh////*////
/gtm_env_sp.csh////*////
/gtm_env_sp.mk////*////
/gtm_getenv.c////*////
/hugetlbfs_overrides.c////*////
/hugetlbfs_overrides.h////*////
/inst_flush.c////*////
/platform.cmake////*////
/release_name.h////*////

View File

@ -1 +0,0 @@
gtm/sr_linux

View File

@ -1 +0,0 @@
:pserver:anonymous@fis-gtm.cvs.sourceforge.net:/cvsroot/fis-gtm

View File

@ -1,6 +1,6 @@
#################################################################
# #
# Copyright 2001, 2013 Fidelity Information Services, Inc #
# Copyright 2001, 2012 Fidelity Information Services, Inc #
# #
# This source code contains the intellectual property #
# of its copyright holder(s), and is made available #
@ -182,12 +182,11 @@ if ( $?gtm_version_change == "1" ) then
# -fno-defer-pop to prevent problems with assembly/generated code with optimization
# -fno-strict-aliasing since we don't comply with the rules
# -ffloat-store for consistent results avoiding rounding differences
# -fno-omit-frame-pointer so %rbp always gets set up (required by caller_id()). Default changed in gcc 4.6.
if ( "ia64" != $mach_type ) then
setenv gt_cc_option_optimize "-O2 -fno-defer-pop -fno-strict-aliasing -ffloat-store"
if ( "32" == $gt_build_type ) then
# applies to 32bit x86_64, ia32 and cygwin
setenv gt_cc_option_optimize "$gt_cc_option_optimize -fno-omit-frame-pointer -march=i686"
setenv gt_cc_option_optimize "$gt_cc_option_optimize -march=i686"
endif
endif
# -g generate debugging information for dbx (no longer overrides -O)

View File

@ -65,10 +65,25 @@ gt_cc_option_nooptimize=
gt_cc_option_optimize=-O2 -fno-defer-pop -fno-strict-aliasing -ffloat-store
gt_cc_options_common+= -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_XOPEN_SOURCE=600 -fsigned-char
ifeq ($(gt_build_type),32)
gt_cc_option_I=-I-
endif
ifeq ($(gt_machine_type), x86_64)
ifeq ($(gt_build_type),32)
# Do not lookup the source directory before include directories specified by -I.
# gcc complains about -I- being obsolete, but using -iquote cause build errors for gcc and as - ABS 2008.12.09
#
# The -I- option is only needed for 32 bit builds on x86_64. It provides a feature that is not present in
# -iquote - namely -I- disables the ability to search the current directory for include files. This is needed
# when compiling something in sr_port which includes a file that is in both sr_port and the architecture specific
# sr_386. We don't want the sr_port version. An example is sr_port/code_gen.c which includes emit_code.h.
# emit_code.h is found in both sr_port and sr_i386. Using -I- will find the sr_i386 version, but without it the
# sr_port version is used. SLJ 2010.03.31
# The /emul/ia32-linux/... directory doesn't exist on most machines, but when it's there we need it. No problem
# with always includeing it.
gt_cc_option_I+= -I/emul/ia32-linux/usr/include/
else
gt_cc_option_I=

View File

@ -1,112 +0,0 @@
/****************************************************************
* *
* Copyright 2012, 2013 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
* under a license. If you do not know the terms of *
* the license, please stop and do not read further. *
* *
****************************************************************/
/*
* This file contains functions related to Linux HugeTLB support. Its functions rely
* on libhugetlbfs which allocates memory in Huge Pages.
* This library is Linux only and works only on (currently) x86, AMD64 and PowerPC
* Supported Huge Page functionality requires the following prerequisites:
* Linux kernel support of Huge Pages
* x86_64 or i386 architecture
* libhugetlbfs.so being installed
* Availability of Huge Pages through setting value to /proc/sys/vm/nr_hugepages or hugepages=<n> kernel parameter or
* /proc/sys/vm/nr_overcommit_hugepages
* In order to use shmget with Huge Pages, either the process gid should be in /proc/sys/vm/hugetlb_shm_group or the
* process should have CAP_IPC_LOCK
* In order to remap .text/.data/.bss sections, a file system of type hugetlbfs should be mounted
* Appropriate environmental variables should be set (refer to libhugetlbfs documentation) to enable/disable Huge Pages
*/
#include "mdef.h"
#include <dlfcn.h>
#include "gtm_string.h"
#include "get_page_size.h"
#include "hugetlbfs_overrides.h"
#undef shmget
#include "send_msg.h"
#include "wbox_test_init.h"
#ifdef DEBUG
# define WBTEST_HUGETLB_DLSYM_ERROR "WBTEST_HUGETLB_DLSYM error"
#endif
GBLDEF long gtm_os_hugepage_size = -1; /* Default Huge Page size of OS. If huge pages are not supported or the
* value doesn't fit into a *long* it will be equal to the OS page size
*/
OS_PAGE_SIZE_DECLARE
/* ptr to libhugetlbfs's overriden shmget. It uses Linux Huge Pages to back the shared segment if possible */
STATICDEF int (*p_shmget) (key_t, size_t, int) = NULL;
/* returns default huge page size of the OS or -1 in case huge pages are not supported or their sizes doesn't
* fit into a long. Refer to libhugetlbfs for further info. */
STATICDEF long (*p_gethugepagesize) (void) = NULL;
STATICDEF boolean_t hugetlb_is_attempted = FALSE;
/* all shmget declarations have already been MACROed to gtm_shmget in mdefsp.h so we need to declare the real
* one here */
extern int shmget (key_t __key, size_t __size, int __shmflg);
error_def(ERR_DLLNORTN);
error_def(ERR_TEXT);
/* A MACRO in mdefsp.h (LINUX_ONLY) replaces all shmget with this function */
int gtm_shmget (key_t key, size_t size, int shmflg)
{
assert(hugetlb_is_attempted); /* libhugetlbfs_init must be called prior to this function */
return p_shmget(key, size, shmflg);
}
/*
* This function initializes libhugetlbfs if it's available. Upon dlopen() the initializing function of libhugetlbfs
* is called. If libhugetlbfs is available gtm_shmget uses its shmget. Otherwise it falls back to the native shmget.
* For malloc to use hugepages, it calls __morecore() hook if it needs more memory. In case libhugetlbfs is available
* and other Huge Page conditions are met, the libhugetlbfs assigns __morecore() to a version which backs them with
* hugepages during its initialization
* Consult libhugetlbfs documentation for a list of HugeTLB configuration environment variables.
*/
void libhugetlbfs_init(void)
{
char *error = NULL;
void *handle;
assert(!hugetlb_is_attempted);
handle = dlopen("libhugetlbfs.so", RTLD_NOW);
GTM_WHITE_BOX_TEST(WBTEST_HUGETLB_DLOPEN, handle, NULL);
if (NULL != handle)
{
/* C99 standard leaves casting from "void *" to a function pointer undefined. The assignment used
* below is the POSIX.1-2003 (Technical Corrigendum 1) workaround; */
*(void **) (&p_shmget) = dlsym(handle, "shmget");
GTM_WHITE_BOX_TEST(WBTEST_HUGETLB_DLSYM, p_shmget, NULL);
if (NULL != p_shmget) /* NULL value for shmget() necessarily means it was not found */
{
*(void **) (&p_gethugepagesize) = dlsym(handle, "gethugepagesize");
if (NULL != p_gethugepagesize)
gtm_os_hugepage_size = p_gethugepagesize();
else
error = dlerror();
} else
error = dlerror();
GTM_WHITE_BOX_TEST(WBTEST_HUGETLB_DLSYM, error, WBTEST_HUGETLB_DLSYM_ERROR);
if (error)
{
p_shmget = NULL;
send_msg(VARLSTCNT(8) ERR_DLLNORTN, 2, LEN_AND_LIT("shmget from libhugetlbfs.so"), ERR_TEXT, 2,
LEN_AND_STR(error));
}
}
if (NULL == p_shmget)
p_shmget = &shmget; /* Fall back to using the native shmget */
get_page_size();
if (-1 == gtm_os_hugepage_size)
gtm_os_hugepage_size = OS_PAGE_SIZE;
assert(0 == (gtm_os_hugepage_size % OS_PAGE_SIZE)); /* huge pages sizes are multiples of page sizes */
hugetlb_is_attempted = TRUE;
}

View File

@ -1,25 +0,0 @@
/****************************************************************
* *
* Copyright 2012, 2013 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
* under a license. If you do not know the terms of *
* the license, please stop and do not read further. *
* *
****************************************************************/
#ifndef HUGETLBFS_OVERRIDES_H_
#define HUGETLBFS_OVERRIDES_H_
#if defined(__linux__) && ( defined(__i386__) || defined(__x86_64__) )
# define HUGETLB_SUPPORTED 1
#endif
GBLREF long gtm_os_hugepage_size;
#define OS_HUGEPAGE_SIZE gtm_os_hugepage_size
extern int gtm_shmget(key_t __key, size_t __size, int __shmflg);
void libhugetlbfs_init(void);
#endif /* HUGETLBFS_OVERRIDES_H_ */

View File

@ -1,59 +0,0 @@
#################################################################
# #
# Copyright 2013 Fidelity Information Services, Inc #
# #
# This source code contains the intellectual property #
# of its copyright holder(s), and is made available #
# under a license. If you do not know the terms of #
# the license, please stop and do not read further. #
# #
#################################################################
if("${CMAKE_SIZEOF_VOID_P}" EQUAL 4)
set(arch "x86")
set(bits 32)
set(FIND_LIBRARY_USE_LIB64_PATHS FALSE)
else()
set(arch "x86_64")
set(bits 64)
endif()
# Platform directories
list(APPEND gt_src_list sr_linux)
if(${bits} EQUAL 32)
list(APPEND gt_src_list sr_i386 sr_x86_regs sr_unix_nsb)
else()
list(APPEND gt_src_list sr_x86_64 sr_x86_regs)
set(gen_xfer_desc 1)
endif()
# Assembler
set(CMAKE_INCLUDE_FLAG_ASM "-Wa,-I") # gcc -I does not make it to "as"
# Compiler
set(CMAKE_C_FLAGS
"${CMAKE_C_FLAGS} -ansi -fsigned-char -fPIC -Wmissing-prototypes -fno-omit-frame-pointer")
set(CMAKE_C_FLAGS_RELEASE
"${CMAKE_C_FLAGS_RELEASE} -fno-defer-pop -fno-strict-aliasing -ffloat-store")
add_definitions(
#-DNOLIBGTMSHR #gt_cc_option_DBTABLD=-DNOLIBGTMSHR
-D_GNU_SOURCE
-D_FILE_OFFSET_BITS=64
-D_XOPEN_SOURCE=600
-D_LARGEFILE64_SOURCE
)
# Linker
set(gtm_link "-Wl,-u,gtm_filename_to_id -Wl,-u,gtm_zstatus -Wl,--version-script,\"${GTM_BINARY_DIR}/gtmexe_symbols.export\"")
set(gtm_dep "${GTM_BINARY_DIR}/gtmexe_symbols.export")
set(libgtmshr_link "-Wl,-u,gtm_ci -Wl,-u,gtm_filename_to_id -Wl,--version-script,\"${GTM_BINARY_DIR}/gtmshr_symbols.export\"")
set(libgtmshr_dep "${GTM_BINARY_DIR}/gtmexe_symbols.export")
if(${bits} EQUAL 32)
set(libmumpslibs "-lncurses -lm -ldl -lc -lpthread -lrt")
else()
set(libmumpslibs "-lelf -lncurses -lm -ldl -lc -lpthread -lrt")
endif()

View File

@ -10,15 +10,15 @@
****************************************************************/
#ifdef __CYGWIN__
#define GTM_RELEASE_NAME "GT.M V6.0-003 CYGWIN x86"
#define GTM_RELEASE_NAME "GT.M V6.0-000 CYGWIN x86"
#elif defined(__ia64)
#define GTM_RELEASE_NAME "GT.M V6.0-003 Linux IA64"
#define GTM_RELEASE_NAME "GT.M V6.0-000 Linux IA64"
#elif defined(__x86_64__)
#define GTM_RELEASE_NAME "GT.M V6.0-003 Linux x86_64"
#define GTM_RELEASE_NAME "GT.M V6.0-000 Linux x86_64"
#elif defined(__s390__)
#define GTM_RELEASE_NAME "GT.M V6.0-003 Linux S390X"
#define GTM_RELEASE_NAME "GT.M V6.0-000 Linux S390X"
#else
#define GTM_RELEASE_NAME "GT.M V6.0-003 Linux x86"
#define GTM_RELEASE_NAME "GT.M V6.0-000 Linux x86"
#endif
#define GTM_PRODUCT "GT.M"
#define GTM_VERSION "V6.0"

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1 +0,0 @@
gtm/sr_port

View File

@ -1 +0,0 @@
:pserver:anonymous@fis-gtm.cvs.sourceforge.net:/cvsroot/fis-gtm

View File

@ -1,5 +0,0 @@
All software in this package is part of FIS GT.M (http://fis-gtm.com) which is Copyright 2012 Fidelity Information
Services, Inc., and provided to you under the terms of a license. If there is a COPYING file included in this package,
it contains the terms of the license under which the package is provided to you. If there is not a COPYING file in the
package, you must ensure that your use of FIS GT.M complies with the license under which it is provided. If you are
unsure as to the terms of your license, please consult with the entity that provided you with the package.

View File

@ -1,6 +1,6 @@
/****************************************************************
* *
* Copyright 2001, 2013 Fidelity Information Services, Inc *
* Copyright 2001, 2011 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
@ -13,22 +13,15 @@
#include "compiler.h"
#include "opcode.h"
#include "toktyp.h"
#include "mdq.h"
#include "fullbool.h"
#include "advancewindow.h"
#include "show_source_line.h"
GBLREF boolean_t run_time;
error_def(ERR_COMMAORRPAREXP);
error_def(ERR_MAXACTARG);
error_def(ERR_NAMEEXPECTED);
error_def(ERR_SIDEEFFECTEVAL);
error_def (ERR_MAXACTARG);
error_def (ERR_NAMEEXPECTED);
error_def (ERR_COMMAORRPAREXP);
int actuallist (oprtype *opr)
{
boolean_t se_warn;
int i, j, mask, parmcount;
int mask, parmcount;
oprtype ot;
triple *counttrip, *masktrip, *ref0, *ref1, *ref2;
DCL_THREADGBL_ACCESS;
@ -103,29 +96,6 @@ error_def(ERR_SIDEEFFECTEVAL);
}
ref0 = ref1;
}
if ((1 < parmcount) && (TREF(side_effect_base))[TREF(expr_depth)])
{ /* at least two arguments and at least one side effect - look for lvns needing protection */
assert(OLD_SE != TREF(side_effect_handling));
se_warn = (!run_time && (SE_WARN == TREF(side_effect_handling)));
for (i = 0, j = parmcount, ref0 = counttrip->operand[1].oprval.tref; --j;
ref0 = ref0->operand[1].oprval.tref)
{ /* no need to do the last argument - can't have a side effect after it */
assert(OC_PARAMETER == ref0->opcode);
assert((TRIP_REF == ref0->operand[0].oprclass) && (TRIP_REF == ref0->operand[1].oprclass));
if (!((1 << i++) & mask) && (OC_VAR == ref0->operand[0].oprval.tref->opcode))
{ /* can only protect pass-by-value (not pass-by-reference) */
ref1 = maketriple(OC_STOTEMP);
ref1->operand[0] = put_tref(ref0->operand[0].oprval.tref);
ref0->operand[0].oprval.tref = ref1;
dqins(ref0, exorder, ref1); /* NOTE:this violates information hiding */
if (se_warn)
ISSUE_SIDEEFFECTEVAL_WARNING(ref0->src.column);
}
}
/* the following asserts check we're getting only TRIP_REF or empty operands */
assert((NO_REF == ref0->operand[0].oprclass) || (TRIP_REF == ref0->operand[0].oprclass));
assert(((NO_REF == ref0->operand[0].oprclass) ? TRIP_REF : NO_REF) == ref0->operand[1].oprclass);
}
}
advancewindow();
masktrip->operand[0] = put_ilit(mask);

View File

@ -1,6 +1,6 @@
/****************************************************************
* *
* Copyright 2001, 2013 Fidelity Information Services, Inc *
* Copyright 2001, 2011 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
@ -52,7 +52,7 @@ static readonly unsigned char apos_ok[] =
void advancewindow(void)
{
unsigned char *cp1, *cp2, *cp3, x;
char *tmp;
char *tmp, source_line_buff[MAX_SRCLINE + SIZEOF(ARROW)];
int y, charlen;
# ifdef UNICODE_SUPPORTED
uint4 ch;
@ -96,7 +96,7 @@ void advancewindow(void)
}
if (!run_time)
{
show_source_line(TRUE);
show_source_line(source_line_buff, SIZEOF(source_line_buff), TRUE);
dec_err(VARLSTCNT(1) ERR_LITNONGRAPH);
}
}
@ -151,7 +151,7 @@ void advancewindow(void)
{
if (cp2 < cp3)
*cp2++ = x;
y = ctypetab[x = *++lexical_ptr]; /* note assignment */
y = ctypetab[x = *++lexical_ptr];
if ((TK_UPPER != y) && (TK_DIGIT != y) && (TK_LOWER != y))
break;
}
@ -159,7 +159,7 @@ void advancewindow(void)
TREF(director_token) = TK_IDENT;
return;
case TK_PERIOD:
if (ctypetab[x = *(lexical_ptr + 1)] != TK_DIGIT) /* note assignment */
if (ctypetab[x = *(lexical_ptr + 1)] != TK_DIGIT)
break;
case TK_DIGIT:
(TREF(director_mval)).str.addr = lexical_ptr;
@ -186,14 +186,14 @@ void advancewindow(void)
}
return;
case TK_APOSTROPHE:
if (32 <= (x = *++lexical_ptr)) /* note assignment */
if (( x = *++lexical_ptr) >= 32)
{
x -= 32;
if (x < ARRAYSIZE(apos_ok))
if (x < SIZEOF(apos_ok) / SIZEOF(unsigned char))
{
if (y = apos_ok[x])
{
if (DEL < (x = *++lexical_ptr)) /* note assignment */
if (DEL < (x = *++lexical_ptr))
{
TREF(director_token) = TK_ERROR;
return;
@ -210,14 +210,6 @@ void advancewindow(void)
}
TREF(director_token) = TK_APOSTROPHE;
return;
case TK_GREATER:
case TK_LESS:
if (TK_EQUAL == ctypetab[*(lexical_ptr + 1)])
{
++lexical_ptr;
y = ((TK_LESS == y) ? TK_NGREATER : TK_NLESS);
}
break;
case TK_SEMICOLON:
while (*++lexical_ptr)
;
@ -225,7 +217,7 @@ void advancewindow(void)
TREF(director_token) = TK_EOL;
return; /* if next character is terminator, avoid incrementing past it */
case TK_ASTERISK:
if (DEL < (x = *(lexical_ptr + 1))) /* note assignment */
if (DEL < (x = *(lexical_ptr + 1)))
{
TREF(director_token) = TK_ERROR;
return;
@ -237,7 +229,7 @@ void advancewindow(void)
}
break;
case TK_RBRACKET:
if ((x = *(lexical_ptr + 1)) > DEL) /* note assignment */
if ((x = *(lexical_ptr + 1)) > DEL)
{
TREF(director_token) = TK_ERROR;
return;
@ -248,17 +240,6 @@ void advancewindow(void)
y = TK_SORTS_AFTER;
}
break;
case TK_ATSIGN:
if (DEL < (x = *(lexical_ptr + 1))) /* note assignment */
{
TREF(director_token) = TK_ERROR;
return;
}
if (TK_HASH == ctypetab[x])
{
lexical_ptr++;
y = TK_ATHASH;
}
default:
;
}

View File

@ -1,6 +1,6 @@
/****************************************************************
* *
* Copyright 2001, 2013 Fidelity Information Services, Inc *
* Copyright 2001, 2012 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
@ -23,6 +23,8 @@
#include "alloc_reg.h"
#include "cdbg_dump.h"
#define MAX_TEMP_COUNT 128
GBLDEF int4 sa_temps[VALUED_REF_TYPES];
GBLDEF int4 sa_temps_offset[VALUED_REF_TYPES];
@ -42,12 +44,8 @@ LITDEF int4 sa_class_sizes[VALUED_REF_TYPES] =
};
LITREF octabstruct oc_tab[];
#define MAX_TEMP_COUNT 1024
error_def(ERR_TMPSTOREMAX);
STATICFNDCL void remove_backptr(triple *curtrip, oprtype *opnd, char (*tempcont)[MAX_TEMP_COUNT]);
void alloc_reg(void)
{
triple *x, *y, *ref;
@ -96,22 +94,14 @@ void alloc_reg(void)
COMPDBG(PRINTF(" ** Converting triple to NOOP (rsn 2) **\n"););
continue; /* continue, because 'normal' NOOP continues from this switch */
}
# ifndef DEBUG
break;
# endif
case OC_LINEFETCH:
# ifdef DEBUG
for (c = temphigh[TVAL_REF]; 0 <= c; c--)
assert(0 == tempcont[TVAL_REF][c]); /* check against leaking TVAL temps */
if (OC_LINESTART == opc)
break;
# endif
case OC_FETCH:
assert((TRIP_REF == x->operand[0].oprclass) && (OC_ILIT == x->operand[0].oprval.tref->opcode));
if (x->operand[0].oprval.tref->operand[0].oprval.ilit == mvmax)
{
x->operand[0].oprval.tref->operand[0].oprval.ilit = 0;
x->operand[1].oprclass = NO_REF;
x->operand[1].oprclass = 0;
}
break;
case OC_STO:
@ -131,24 +121,50 @@ void alloc_reg(void)
&& (0 == x->operand[0].oprval.tref->operand[0].oprval.mlit->v.str.len))
{
x->operand[0] = x->operand[1];
x->operand[1].oprclass = NO_REF;
x->operand[1].oprclass = 0;
opc = x->opcode = OC_EQUNUL;
} else if ((TRIP_REF == x->operand[1].oprclass) && (OC_LIT == x->operand[1].oprval.tref->opcode)
&& (0 == x->operand[1].oprval.tref->operand[0].oprval.mlit->v.str.len))
{
x->operand[1].oprclass = NO_REF;
x->operand[1].oprclass = 0;
opc = x->opcode = OC_EQUNUL;
}
break;
}
for (j = x->operand, y = x; j < ARRAYTOP(y->operand); )
{
if (TRIP_REF == j->oprclass)
{
ref = j->oprval.tref;
if (OC_PARAMETER == ref->opcode)
{
y = ref;
j = y->operand;
continue;
}
if (r = ref->destination.oprclass) /* Note assignment */
{
dqloop(&ref->backptr, que, b)
{
if (b->bpt == y)
{
dqdel(b, que);
break;
}
}
if ((ref->backptr.que.fl == &ref->backptr) && (TVAR_REF != r))
tempcont[r][j->oprval.tref->destination.oprval.temp] = 0;
}
}
j++;
}
if (OC_PASSTHRU == x->opcode)
{
COMPDBG(PRINTF(" *** OC_PASSTHRU opcode being NOOP'd\n"););
remove_backptr(x, &x->operand[0], tempcont);
x->opcode = OC_NOOP;
continue;
}
if (NO_REF == (dest_type = x->destination.oprclass)) /* Note assignment */
if (!(dest_type = x->destination.oprclass)) /* Note assignment */
{
oct = oc_tab[opc].octype;
if ((oct & OCT_VALUE) && (x->backptr.que.fl != &x->backptr) && !(oct & OCT_CGSKIP))
@ -159,7 +175,7 @@ void alloc_reg(void)
{
x->destination = y->operand[0];
y->opcode = OC_NOOP;
y->operand[0].oprclass = y->operand[1].oprclass = NO_REF;
y->operand[0].oprclass = y->operand[1].oprclass = 0;
} else
{
oct &= OCT_VALUE | OCT_MVADDR;
@ -170,7 +186,7 @@ void alloc_reg(void)
for (c = 0; tempcont[r][c] && (MAX_TEMP_COUNT > c); c++)
;
if (MAX_TEMP_COUNT <= c)
rts_error_csa(CSA_ARG(NULL) VARLSTCNT(1) ERR_TMPSTOREMAX);
rts_error(VARLSTCNT(1) ERR_TMPSTOREMAX);
tempcont[r][c] = 1;
x->destination.oprclass = r;
x->destination.oprval.temp = c;
@ -185,27 +201,6 @@ void alloc_reg(void)
assert(x->destination.oprval.tref->destination.oprclass);
x->destination = x->destination.oprval.tref->destination;
}
for (j = x->operand, y = x; j < ARRAYTOP(y->operand); )
{ /* Loop through all the parameters of the current opcode. For each parameter that requires an intermediate
* temporary, decrement (this is what remove_backptr does) the "reference count" -- opcodes yet to be
* processed that still need the intermediate result -- and if that number is zero, mark the temporary
* available. We can then reuse the temp to hold the results of subsequent opcodes. Note that remove_backptr
* is essentially the resolve_tref() in resolve_ref.c. resolve_tref increments the "reference count",
* while remove_backptr decrements it.
*/
if (TRIP_REF == j->oprclass)
{
ref = j->oprval.tref;
if (OC_PARAMETER == ref->opcode)
{
y = ref;
j = y->operand;
continue;
}
remove_backptr(y, j, tempcont);
}
j++;
}
}
for (r = 0; VALUED_REF_TYPES > r; r++)
sa_temps[r] = temphigh[r] + 1;
@ -213,40 +208,10 @@ void alloc_reg(void)
size = sa_temps[TVAL_REF] * sa_class_sizes[TVAL_REF];
sa_temps_offset[TVAL_REF] = size;
/* Since we need to align the temp region to the largest types, align even int temps to SIZEOF(char*) */
size += ROUND_UP2(sa_temps[TINT_REF] *sa_class_sizes[TINT_REF], SIZEOF(char *));
size += ROUND_UP2(sa_temps[TINT_REF] * sa_class_sizes[TINT_REF], SIZEOF(char *));
sa_temps_offset[TINT_REF] = size;
size += sa_temps[TVAD_REF] * sa_class_sizes[TVAD_REF];
sa_temps_offset[TVAD_REF] = size;
size += sa_temps[TCAD_REF] * sa_class_sizes[TCAD_REF];
sa_temps_offset[TCAD_REF] = size;
}
void remove_backptr(triple *curtrip, oprtype *opnd, char (*tempcont)[MAX_TEMP_COUNT])
{
triple *ref;
tbp *b;
int r;
assert(TRIP_REF == opnd->oprclass);
ref = opnd->oprval.tref;
while (OC_PASSTHRU == opnd->oprval.tref->opcode)
{
ref = ref->operand[0].oprval.tref;
opnd = &ref->operand[0];
assert(TRIP_REF == opnd->oprclass);
}
r = ref->destination.oprclass;
if (NO_REF != r)
{
dqloop(&ref->backptr, que, b)
{
if (b->bpt == curtrip)
{
dqdel(b, que);
break;
}
}
if ((ref->backptr.que.fl == &ref->backptr) && (TVAR_REF != r))
tempcont[r][ref->destination.oprval.temp] = 0;
}
}

View File

@ -1,6 +1,6 @@
/****************************************************************
* *
* Copyright 2012, 2013 Fidelity Information Services, Inc *
* Copyright 2012 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
@ -24,23 +24,19 @@
#include "wait_for_disk_space.h" /* needed by DB_LSEEKWRITE macro for prototype */
#include "gtmimagename.h" /* needed for IS_GTM_IMAGE */
boolean_t is_anticipatory_freeze_needed(sgmnt_addrs *csa, int msg_id);
void set_anticipatory_freeze(sgmnt_addrs *csa, int msg_id);
boolean_t is_anticipatory_freeze_needed(int msg_id);
void set_anticipatory_freeze(int msg_id);
boolean_t init_anticipatory_freeze_errors(void);
/* Define function pointers to certain functions to avoid executables like gtmsecshr from unnecessarily
* linking with these functions (which causes the database/replication stuff to be pulled in).
*/
typedef boolean_t (*is_anticipatory_freeze_needed_t)(sgmnt_addrs *csa, int msgid);
typedef void (*set_anticipatory_freeze_t)(sgmnt_addrs *csa, int msg_id);
typedef boolean_t (*is_anticipatory_freeze_needed_t)(int msgid);
typedef void (*set_anticipatory_freeze_t)(int msg_id);
GBLREF is_anticipatory_freeze_needed_t is_anticipatory_freeze_needed_fnptr;
GBLREF set_anticipatory_freeze_t set_anticipatory_freeze_fnptr;
GBLREF boolean_t pool_init;
GBLREF boolean_t mupip_jnl_recover;
#ifdef DEBUG
GBLREF uint4 lseekwrite_target;
#endif
error_def(ERR_MUINSTFROZEN);
error_def(ERR_MUINSTUNFROZEN);
@ -49,48 +45,35 @@ error_def(ERR_MUNOACTION);
error_def(ERR_REPLINSTFREEZECOMMENT);
error_def(ERR_REPLINSTFROZEN);
error_def(ERR_REPLINSTUNFROZEN);
error_def(ERR_TEXT);
#define ENABLE_FREEZE_ON_ERROR \
#define SET_ANTICIPATORY_FREEZE_IF_NEEDED(MSG_ID, FREEZE_SET) \
{ \
if (ANTICIPATORY_FREEZE_AVAILABLE) \
{ /* Set anticipatory freeze function pointers to be used later (in send_msg and rts_error) */ \
is_anticipatory_freeze_needed_fnptr = &is_anticipatory_freeze_needed; \
set_anticipatory_freeze_fnptr = &set_anticipatory_freeze; \
GBLREF jnlpool_addrs jnlpool; \
DCL_THREADGBL_ACCESS; \
\
SETUP_THREADGBL_ACCESS; \
if (ANTICIPATORY_FREEZE_AVAILABLE && (NULL != is_anticipatory_freeze_needed_fnptr)) \
{ /* NOT gtmsecshr */ \
assert(NULL != set_anticipatory_freeze_fnptr); \
if (IS_REPL_INST_UNFROZEN && (*is_anticipatory_freeze_needed_fnptr)(MSG_ID)) \
{ \
(*set_anticipatory_freeze_fnptr)(MSG_ID); \
FREEZE_SET = TRUE; \
} \
} \
}
#define CHECK_IF_FREEZE_ON_ERROR_NEEDED(CSA, MSG_ID, FREEZE_NEEDED, FREEZE_MSG_ID) \
#define REPORT_INSTANCE_FROZEN(FREEZE_SET) \
{ \
GBLREF jnlpool_addrs jnlpool; \
DCL_THREADGBL_ACCESS; \
\
SETUP_THREADGBL_ACCESS; \
if (!FREEZE_NEEDED && ANTICIPATORY_FREEZE_AVAILABLE && (NULL != is_anticipatory_freeze_needed_fnptr)) \
{ /* NOT gtmsecshr */ \
if (IS_REPL_INST_UNFROZEN && (*is_anticipatory_freeze_needed_fnptr)((sgmnt_addrs *)CSA, MSG_ID)) \
{ \
FREEZE_NEEDED = TRUE; \
FREEZE_MSG_ID = MSG_ID; \
} \
if (FREEZE_SET) \
{ \
send_msg(VARLSTCNT(3) ERR_REPLINSTFROZEN, 1, jnlpool.repl_inst_filehdr->inst_info.this_instname); \
send_msg(VARLSTCNT(3) ERR_REPLINSTFREEZECOMMENT, 1, jnlpool.jnlpool_ctl->freeze_comment); \
} \
}
#define FREEZE_INSTANCE_IF_NEEDED(CSA, FREEZE_NEEDED, FREEZE_MSG_ID) \
{ \
GBLREF jnlpool_addrs jnlpool; \
\
if (FREEZE_NEEDED) \
{ \
assert(NULL != set_anticipatory_freeze_fnptr); \
(*set_anticipatory_freeze_fnptr)((sgmnt_addrs *)CSA, FREEZE_MSG_ID); \
send_msg_csa(CSA_ARG(NULL) VARLSTCNT(3) ERR_REPLINSTFROZEN, 1, \
jnlpool.repl_inst_filehdr->inst_info.this_instname); \
send_msg_csa(CSA_ARG(NULL) VARLSTCNT(3) ERR_REPLINSTFREEZECOMMENT, 1, jnlpool.jnlpool_ctl->freeze_comment); \
} \
}
#define CLEAR_ANTICIPATORY_FREEZE(FREEZE_CLEARED) \
{ \
GBLREF jnlpool_addrs jnlpool; \
@ -102,23 +85,20 @@ error_def(ERR_TEXT);
} \
}
#define REPORT_INSTANCE_UNFROZEN(FREEZE_CLEARED) \
{ \
GBLREF jnlpool_addrs jnlpool; \
\
if (FREEZE_CLEARED) \
send_msg_csa(CSA_ARG(NULL) VARLSTCNT(3) ERR_REPLINSTUNFROZEN, 1, \
jnlpool.repl_inst_filehdr->inst_info.this_instname); \
#define REPORT_INSTANCE_UNFROZEN(FREEZE_CLEARED) \
{ \
GBLREF jnlpool_addrs jnlpool; \
\
if (FREEZE_CLEARED) \
send_msg(VARLSTCNT(3) ERR_REPLINSTUNFROZEN, 1, jnlpool.repl_inst_filehdr->inst_info.this_instname); \
}
#define AFREEZE_MASK 0x01
#define ANTICIPATORY_FREEZE_AVAILABLE (0 != (TREF(gtm_custom_errors)).len)
#define INSTANCE_FREEZE_HONORED(CSA) (DBG_ASSERT(NULL != CSA) \
((NULL != jnlpool.jnlpool_ctl) \
&& ((REPL_ALLOWED(((sgmnt_addrs *)CSA)->hdr)) \
|| mupip_jnl_recover /* recover or rollback */ \
|| ((sgmnt_addrs *)CSA)->nl->onln_rlbk_pid )))
#define ANTICIPATORY_FREEZE_ENABLED(CSA) (INSTANCE_FREEZE_HONORED(CSA) \
#define ANTICIPATORY_FREEZE_HONORED(CSA) (DBG_ASSERT(NULL != CSA) \
((NULL != jnlpool.jnlpool_ctl) \
&& (REPL_ALLOWED(((sgmnt_addrs *)CSA)->hdr))))
#define ANTICIPATORY_FREEZE_ENABLED(CSA) (ANTICIPATORY_FREEZE_HONORED(CSA) \
&& ANTICIPATORY_FREEZE_AVAILABLE \
&& (((sgmnt_addrs *)CSA)->hdr->freeze_on_fail))
#define IS_REPL_INST_FROZEN ((NULL != jnlpool.jnlpool_ctl) && jnlpool.jnlpool_ctl->freeze)
@ -126,22 +106,16 @@ error_def(ERR_TEXT);
#define INST_FROZEN_COMMENT "PID %d encountered %s; Instance frozen"
#define MSGID_TO_ERRMSG(MSG_ID, ERRMSG) \
{ \
const err_ctl *ctl; \
\
ctl = err_check(MSG_ID); \
assert(NULL != ctl); \
GET_MSG_INFO(MSG_ID, ctl, ERRMSG); \
}
#define GENERATE_INST_FROZEN_COMMENT(BUF, BUF_LEN, MSG_ID) \
{ \
GBLREF uint4 process_id; \
const err_msg *msginfo; \
\
MSGID_TO_ERRMSG(MSG_ID, msginfo); \
SNPRINTF(BUF, BUF_LEN, INST_FROZEN_COMMENT, process_id, msginfo->tag); \
#define GENERATE_INST_FROZEN_COMMENT(BUF, BUF_LEN, MSG_ID) \
{ \
GBLREF uint4 process_id; \
const err_ctl *ctl; \
const err_msg *msginfo; \
\
ctl = err_check(MSG_ID); \
assert(NULL != ctl); \
GET_MSG_INFO(MSG_ID, ctl, msginfo); \
SNPRINTF(BUF, BUF_LEN, INST_FROZEN_COMMENT, process_id, msginfo->tag); \
}
/* This is a version of the macro which waits for the instance freeze to be lifted off assuming the process has
@ -160,20 +134,20 @@ error_def(ERR_TEXT);
\
SETUP_THREADGBL_ACCESS; \
assert(NULL != CSA); \
if (INSTANCE_FREEZE_HONORED(CSA)) \
if (ANTICIPATORY_FREEZE_HONORED(CSA)) \
{ \
reg = ((sgmnt_addrs *)CSA)->region; \
if (!IS_GTM_IMAGE) \
{ \
GET_CUR_TIME; \
gtm_putmsg_csa(CSA_ARG(NULL) VARLSTCNT(7) ERR_MUINSTFROZEN, 5, CTIME_BEFORE_NL, time_ptr, \
gtm_putmsg(VARLSTCNT(7) ERR_MUINSTFROZEN, 5, CTIME_BEFORE_NL, time_ptr, \
jnlpool.repl_inst_filehdr->inst_info.this_instname, DB_LEN_STR(reg)); \
} \
WAIT_FOR_REPL_INST_UNFREEZE_NOCSA; \
if (!IS_GTM_IMAGE) \
{ \
GET_CUR_TIME; \
gtm_putmsg_csa(CSA_ARG(NULL) VARLSTCNT(7) ERR_MUINSTUNFROZEN, 5, CTIME_BEFORE_NL, time_ptr, \
gtm_putmsg(VARLSTCNT(7) ERR_MUINSTUNFROZEN, 5, CTIME_BEFORE_NL, time_ptr, \
jnlpool.repl_inst_filehdr->inst_info.this_instname, DB_LEN_STR(reg)); \
} \
} \
@ -205,12 +179,11 @@ error_def(ERR_TEXT);
{ \
if (exit_state != 0) \
{ \
send_msg_csa(CSA_ARG(NULL) VARLSTCNT(1) forced_exit_err); \
gtm_putmsg_csa(CSA_ARG(NULL) VARLSTCNT(1) forced_exit_err); \
send_msg(VARLSTCNT(1) forced_exit_err); \
gtm_putmsg(VARLSTCNT(1) forced_exit_err); \
exit(-exi_condition); \
} \
SHORT_SLEEP(SLEEP_INSTFREEZEWAIT); \
DEBUG_ONLY(CLEAR_FAKE_ENOSPC_IF_MASTER_DEAD); \
} \
}
#define WAIT_FOR_REPL_INST_UNFREEZE_NOCSA_SAFE \
@ -261,69 +234,23 @@ error_def(ERR_TEXT);
#define GTM_REPL_INST_FSYNC(FD, RC) GTM_FSYNC(FD, RC)
#define LSEEKWRITE_IS_TO_NONE 0
#define LSEEKWRITE_IS_TO_DB 1
#define LSEEKWRITE_IS_TO_JNL 2
#ifdef DEBUG
#define FAKE_ENOSPC(CSA, FAKE_WHICH_ENOSPC, LSEEKWRITE_TARGET, LCL_STATUS) \
{ \
GBLREF jnlpool_addrs jnlpool; \
if (NULL != CSA) \
{ \
if (WBTEST_ENABLED(WBTEST_RECOVER_ENOSPC)) \
{ /* This test case is only used by mupip */ \
gtm_wbox_input_test_case_count++; \
if ((0 != gtm_white_box_test_case_count) \
&& (gtm_white_box_test_case_count <= gtm_wbox_input_test_case_count)) \
{ \
LCL_STATUS = ENOSPC; \
if (gtm_white_box_test_case_count == gtm_wbox_input_test_case_count) \
send_msg_csa(CSA_ARG(NULL) VARLSTCNT(4) ERR_TEXT, 2, \
LEN_AND_LIT("Turning on fake ENOSPC for exit status test")); \
} \
} else if (!IS_DSE_IMAGE /*DSE does not freeze so let it work as normal */ \
&& ((NULL != jnlpool.jnlpool_ctl) && (NULL != ((sgmnt_addrs *)CSA)->nl)) \
&& ((sgmnt_addrs *)CSA)->nl->FAKE_WHICH_ENOSPC) \
{ \
LCL_STATUS = ENOSPC; \
lseekwrite_target = LSEEKWRITE_TARGET; \
} \
} \
}
void clear_fake_enospc_if_master_dead(void);
#define CLEAR_FAKE_ENOSPC_IF_MASTER_DEAD clear_fake_enospc_if_master_dead()
#else
#define FAKE_ENOSPC(CSA, FAKE_ENOSPC, LSEEKWRITE_TARGET, LCL_STATUS) {}
#endif
#define DB_LSEEKWRITE(csa, db_fn, fd, new_eof, buff, size, status) \
DO_LSEEKWRITE(csa, db_fn, fd, new_eof, buff, size, status, fake_db_enospc, LSEEKWRITE_IS_TO_DB)
#define JNL_LSEEKWRITE(csa, jnl_fn, fd, new_eof, buff, size, status) \
DO_LSEEKWRITE(csa, jnl_fn, fd, new_eof, buff, size, status, fake_jnl_enospc, LSEEKWRITE_IS_TO_JNL)
#define DO_LSEEKWRITE(csa, fnptr, fd, new_eof, buff, size, status, FAKE_WHICH_ENOSPC, LSEEKWRITE_TARGET) \
{ \
int lcl_status; \
\
if (NULL != csa) \
WAIT_FOR_REPL_INST_UNFREEZE_SAFE(csa); \
LSEEKWRITE(fd, new_eof, buff, size, lcl_status); \
FAKE_ENOSPC(csa, FAKE_WHICH_ENOSPC, LSEEKWRITE_TARGET, lcl_status); \
if (ENOSPC == lcl_status) \
{ \
wait_for_disk_space(csa, (char *)fnptr, fd, (off_t)new_eof, (char *)buff, (size_t)size, &lcl_status); \
assert((NULL == csa) || (NULL == ((sgmnt_addrs *)csa)->nl) || !((sgmnt_addrs *)csa)->nl->FAKE_WHICH_ENOSPC \
|| (ENOSPC != lcl_status)); \
} \
status = lcl_status; \
{ \
int lcl_status; \
\
if (NULL != csa) \
WAIT_FOR_REPL_INST_UNFREEZE_SAFE(csa); \
LSEEKWRITE(fd, new_eof, buff, size, lcl_status); \
if (ENOSPC == lcl_status) \
wait_for_disk_space(csa, (char *)db_fn, fd, (off_t)new_eof, (char *)buff, (size_t)size, &lcl_status); \
status = lcl_status; \
}
/* Currently, writes to journal files are treated the same way as database files.
* But the macros are defined so we have the ability to easily change them in the future in case needed.
*/
#define JNL_LSEEKWRITE DB_LSEEKWRITE
/* Currently, writes to replication instance files do NOT trigger instance freeze behavior.
* Neither does a pre-existing instance freeze affect replication instance file writes.
* Hence this is defined as simple LSEEKWRITE.

View File

@ -1,6 +1,6 @@
/****************************************************************
* *
* Copyright 2001, 2013 Fidelity Information Services, Inc *
* Copyright 2001 Sanchez Computer Associates, Inc. *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
@ -11,53 +11,24 @@
#include "mdef.h"
LITREF unsigned char lower_to_upper_table[];
unsigned int asc_hex2i(uchar_ptr_t p, int len)
unsigned int asc_hex2i(p,len)
char *p;
int len;
{
uchar_ptr_t c;
unsigned char ch;
int ret;
char *c;
int ret;
ret = 0;
for (c = p + len; c > p; p++)
{
if (('0' <= *p) && ('9' >= *p))
ret = (ret << 4) + (*p - '0');
if (*p >= '0' && *p <= '9')
ret = ret * 16 + *p - '0';
else if (*p >= 'a' && *p <= 'f')
ret = ret * 16 + *p - 'a' + 10;
else if (*p >= 'A' && *p <= 'F')
ret = ret * 16 + *p - 'A' + 10;
else
{
ch = lower_to_upper_table[*p];
if (('A' <= ch) && ('F' >= ch))
ret = (ret << 4) + ch - 'A' + 10;
else
return (unsigned int)-1;
}
return (uint4)-1;
}
return ret;
}
#ifndef VMS
/* Routine identical to asc_hex2i() but with 8 byte accumulator and return type */
gtm_uint64_t asc_hex2l(uchar_ptr_t p, int len)
{
uchar_ptr_t c;
unsigned char ch;
gtm_uint64_t ret;
ret = 0;
for (c = p + len; c > p; p++)
{
if (('0' <= *p) && ('9' >= *p))
ret = (ret << 4) + (*p - '0');
else
{
ch = lower_to_upper_table[*p];
if (('A' <= ch) && ('F' >= ch))
ret = (ret << 4) + ch - 'A' + 10;
else
return (gtm_uint64_t)-1;
}
}
return ret;
}
#endif

View File

@ -13,7 +13,6 @@
#include "gtm_string.h"
#include "error.h" /* For DBGEHND() */
#include <rtnhdr.h>
#include "stack_frame.h"
@ -62,5 +61,4 @@ void base_frame(rhdtyp *base_address)
fp->type = SFT_COUNT;
fp->ret_value = NULL;
fp->dollar_test = -1;
DBGEHND((stderr, "base_frame: New base frame allocated at 0x"lvaddr"\n", fp));
}

View File

@ -1,6 +1,6 @@
/****************************************************************
* *
* Copyright 2001, 2013 Fidelity Information Services, Inc *
* Copyright 2001, 2012 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
@ -67,9 +67,6 @@ GBLREF uint4 dollar_tlevel;
GBLREF uint4 update_array_size, cumul_update_array_size;
GBLREF unsigned int t_tries;
error_def(ERR_DBBADFREEBLKCTR);
error_def(ERR_DBMBMINCFREFIXED);
block_id bm_getfree(block_id orig_hint, boolean_t *blk_used, unsigned int cw_work, cw_set_element *cs, int *cw_depth_ptr)
{
cw_set_element *cs1;
@ -102,7 +99,7 @@ block_id bm_getfree(block_id orig_hint, boolean_t *blk_used, unsigned int cw_wor
hint = 1;
continue;
}
if (SS_NORMAL != (status = GDSFILEXT(cs_data->extension_size, total_blks, TRANS_IN_PROG_TRUE)))
if (SS_NORMAL != (status = gdsfilext(cs_data->extension_size, total_blks)))
return (status);
if (dba_mm == cs_data->acc_meth)
return (FILE_EXTENDED);
@ -202,21 +199,14 @@ block_id bm_getfree(block_id orig_hint, boolean_t *blk_used, unsigned int cw_wor
if (hint_cycled)
hint_cycled = (hint_limit < hint_cycled) ? hint_limit: 0;
}
if ((0 == depth) && cs_addrs->now_crit) /* if it's from the cw_set, its state is murky */
{
assert(FALSE);
send_msg_csa(CSA_ARG(cs_addrs) VARLSTCNT(3) ERR_DBMBMINCFREFIXED, 1, bml);
bit_clear(bml / BLKS_PER_LMAP, MM_ADDR(cs_data)); /* repair master map error */
}
if ((0 == depth) && (FALSE != cs_addrs->now_crit)) /* if it's from the cw_set, its state is murky */
bit_clear(bml / BLKS_PER_LMAP, MM_ADDR(cs_data)); /* if crit, repair master map error */
}
/* If not in the final retry, it is possible that free_bit is >= map_size, e.g., if the buffer holding the bitmap block
* gets recycled with a non-bitmap block in which case the bit that bm_find_blk returns could be greater than map_size.
* But, this should never happen in final retry.
*/
if ((map_size <= (uint4)free_bit) && (CDB_STAGNATE <= t_tries))
{ /* Bad free bit. */
/* If not in the final retry, it is possible that free_bit is >= map_size (e.g. if bitmap block gets recycled). */
if (map_size <= (uint4)free_bit && CDB_STAGNATE <= t_tries)
{ /* bad free bit */
assert((NO_FREE_SPACE == free_bit) && (lcnt > local_maps)); /* All maps full, should have extended */
assertpro(FALSE);
GTMASSERT;
}
if (0 != depth)
{
@ -258,6 +248,8 @@ boolean_t is_free_blks_ctr_ok(void)
sm_uc_ptr_t bmp;
unsigned int local_maps, total_blks, free_blocks;
error_def(ERR_DBBADFREEBLKCTR);
assert(&FILE_INFO(gv_cur_region)->s_addrs == cs_addrs && cs_addrs->hdr == cs_data && cs_addrs->now_crit);
total_blks = (dba_mm == cs_data->acc_meth) ? cs_addrs->total_blks : cs_addrs->ti->total_blks;
local_maps = DIVIDE_ROUND_UP(total_blks, BLKS_PER_LMAP);
@ -289,8 +281,7 @@ boolean_t is_free_blks_ctr_ok(void)
assert(cs_addrs->ti->free_blocks == free_blocks);
if (cs_addrs->ti->free_blocks != free_blocks)
{
send_msg_csa(CSA_ARG(cs_addrs) VARLSTCNT(6) ERR_DBBADFREEBLKCTR, 4, DB_LEN_STR(gv_cur_region),
cs_addrs->ti->free_blocks, free_blocks);
send_msg(VARLSTCNT(6) ERR_DBBADFREEBLKCTR, 4, DB_LEN_STR(gv_cur_region), cs_addrs->ti->free_blocks, free_blocks);
cs_addrs->ti->free_blocks = free_blocks;
return FALSE;
}

View File

@ -1,6 +1,6 @@
/****************************************************************
* *
* Copyright 2001, 2013 Fidelity Information Services, Inc *
* Copyright 2001, 2011 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
@ -35,13 +35,13 @@
#include "gvcst_map_build.h"
#include "mm_read.h"
GBLREF gd_region *gv_cur_region;
GBLREF sgmnt_addrs *cs_addrs;
GBLREF sgmnt_data_ptr_t cs_data;
GBLREF char *update_array, *update_array_ptr;
GBLREF cw_set_element cw_set[];
GBLREF unsigned char rdfail_detail;
GBLREF jnl_format_buffer *non_tp_jfb_ptr;
GBLREF gd_region *gv_cur_region;
GBLREF sgmnt_addrs *cs_addrs;
GBLREF sgmnt_data_ptr_t cs_data;
GBLREF char *update_array, *update_array_ptr;
GBLREF cw_set_element cw_set[];
GBLREF unsigned char rdfail_detail;
GBLREF unsigned char *non_tp_jfb_buff_ptr;
void bm_setmap(block_id bml, block_id blk, int4 busy)
{
@ -96,8 +96,8 @@ void bm_setmap(block_id bml, block_id blk, int4 busy)
if (JNL_ENABLED(cs_data))
{
cse = (cw_set_element *)(&cw_set[0]);
cse->new_buff = (unsigned char *)non_tp_jfb_ptr->buff;
memcpy(cse->new_buff, bmp, ((blk_hdr_ptr_t)bmp)->bsiz);
cse->new_buff = non_tp_jfb_buff_ptr;
memcpy(non_tp_jfb_buff_ptr, bmp, ((blk_hdr_ptr_t)bmp)->bsiz);
gvcst_map_build((uint4 *)cse->upd_addr, (uchar_ptr_t)cse->new_buff, cse, cs_addrs->ti->curr_tn);
cse->done = TRUE;
}

View File

@ -1,6 +1,6 @@
/****************************************************************
* *
* Copyright 2001, 2012 Fidelity Information Services, Inc *
* Copyright 2001, 2011 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
@ -10,7 +10,6 @@
****************************************************************/
#include "mdef.h"
#include "gtm_string.h" /* needed by INCREMENT_EXPR_DEPTH */
#include "compiler.h"
#include "opcode.h"
@ -20,15 +19,17 @@ int bool_expr(boolean_t op, oprtype *addr)
DCL_THREADGBL_ACCESS;
SETUP_THREADGBL_ACCESS;
INCREMENT_EXPR_DEPTH;
if (!(TREF(expr_depth))++)
TREF(expr_start) = TREF(expr_start_orig) = NULL;
if (!eval_expr(&x))
{
DECREMENT_EXPR_DEPTH;
TREF(expr_depth) = 0;
return FALSE;
}
assert(TRIP_REF == x.oprclass);
coerce(&x, OCT_BOOL);
bx_tail(x.oprval.tref, op, addr);
DECREMENT_EXPR_DEPTH;
if (!(--(TREF(expr_depth))))
TREF(saw_side_effect) = TREF(shift_side_effects) = FALSE;
return TRUE;
}

View File

@ -1,6 +1,6 @@
/****************************************************************
* *
* Copyright 2001, 2013 Fidelity Information Services, Inc *
* Copyright 2001 Sanchez Computer Associates, Inc. *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
@ -16,17 +16,14 @@
#include "gdsbt.h"
#include "gdsfhead.h"
void bt_init(sgmnt_addrs *csa)
void bt_init(sgmnt_addrs *cs)
{
sgmnt_data_ptr_t csd;
sgmnt_data_ptr_t base;
csd = csa->hdr;
csa->ti = &csd->trans_hist;
if (dba_mm != csd->acc_meth)
{ /* BT structures are NOT maintained for MM */
csa->bt_header = (bt_rec_ptr_t)((sm_uc_ptr_t) csd + csa->nl->bt_header_off);
csa->bt_base = (bt_rec_ptr_t)((sm_uc_ptr_t) csd + csa->nl->bt_base_off);
csa->th_base = (th_rec_ptr_t)((sm_uc_ptr_t) csd + csa->nl->th_base_off);
}
base = cs->hdr;
cs->ti = &base->trans_hist;
cs->bt_header = (bt_rec_ptr_t)((sm_uc_ptr_t) base + cs->nl->bt_header_off);
cs->bt_base = (bt_rec_ptr_t)((sm_uc_ptr_t) base + cs->nl->bt_base_off);
cs->th_base = (th_rec_ptr_t)((sm_uc_ptr_t) base + cs->nl->th_base_off);
return;
}

View File

@ -1,6 +1,6 @@
/****************************************************************
* *
* Copyright 2001, 2013 Fidelity Information Services, Inc *
* Copyright 2001, 2012 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
@ -36,6 +36,7 @@ GBLREF uint4 process_id;
GBLREF jnl_gbls_t jgbl;
error_def(ERR_BTFAIL);
error_def(ERR_WCFAIL);
error_def(ERR_WCBLOCKED);
bt_rec_ptr_t bt_put(gd_region *reg, int4 block)
@ -91,7 +92,8 @@ bt_rec_ptr_t bt_put(gd_region *reg, int4 block)
bt->killtn = lcl_tn;
insqt((que_ent_ptr_t)bt, (que_ent_ptr_t)hdr);
th = (th_rec_ptr_t)remqh((que_ent_ptr_t)csa->th_base);
assertpro(EMPTY_QUEUE != (sm_long_t)th);
if (EMPTY_QUEUE == (sm_long_t)th)
GTMASSERT;
break;
}
if (bt->blk == block)
@ -112,7 +114,8 @@ bt_rec_ptr_t bt_put(gd_region *reg, int4 block)
assert(in_wcs_recover || (bt->tn < lcl_tn) || (jgbl.forw_phase_recovery && !JNL_ENABLED(csa)));
q0 = (bt_rec_ptr_t)((sm_uc_ptr_t)bt + bt->tnque.fl);
th = (th_rec_ptr_t)remqt((que_ent_ptr_t)((sm_uc_ptr_t)q0 + SIZEOF(th->tnque)));
assertpro(EMPTY_QUEUE != (sm_long_t)th);
if (EMPTY_QUEUE == (sm_long_t)th)
GTMASSERT;
break;
}
if (0 == bt->blkque.fl)

View File

@ -1,6 +1,6 @@
/****************************************************************
* *
* Copyright 2001, 2013 Fidelity Information Services, Inc *
* Copyright 2001, 2012 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
@ -10,7 +10,6 @@
****************************************************************/
#include "mdef.h"
#include "cmd_qlf.h"
#include "compiler.h"
#include "opcode.h"
#include "mdq.h"
@ -20,42 +19,6 @@
LITREF octabstruct oc_tab[];
GBLREF boolean_t run_time;
GBLREF command_qualifier cmd_qlf;
#define STOTEMP_IF_NEEDED(REF0, I, T1, OPND) \
{ /* Input: \
* --- REF0: a boolean triple, which may have either 1 input (OC_COBOOL) or 2 (other opcodes). \
* --- I: whichever operand of REF0 we are STOTEMPing \
* --- T1: STOTEMP triple. NOOPed if not needed \
* --- OPND: operand referring to value we need need to pass as input into boolean operation \
* If OPND refers to a variable (OC_VAR), we need to STOTEMP it to protect it from subsequent side effects. \
* If it refers to a literal, and dynamic literals are enabled, we need to insert an OC_LITC anyway. Doing it \
* here in bx_boolop is convenient and ensures the OC_LITC is not skipped at run time. \
*/ \
assert(TRIP_REF == OPND.oprclass); \
switch (OPND.oprval.tref->opcode) \
{ \
case OC_VAR: \
T1->opcode = OC_STOTEMP; \
T1->operand[0] = OPND; \
REF0->operand[I] = put_tref(T1); \
break; \
case OC_LIT: \
if (!run_time && (cmd_qlf.qlf & CQ_DYNAMIC_LITERALS)) \
{ \
T1->opcode = OC_LITC; \
T1->operand[0] = OPND; \
REF0->operand[I] = put_tref(T1); \
break; \
} \
default: \
T1->opcode = OC_NOOP; \
T1->operand[0].oprclass = NO_REF; \
REF0->operand[I] = put_tref(OPND.oprval.tref); \
} \
}
void bx_boolop(triple *t, boolean_t jmp_type_one, boolean_t jmp_to_next, boolean_t sense, oprtype *addr)
{
boolean_t expr_fini;
@ -73,13 +36,13 @@ void bx_boolop(triple *t, boolean_t jmp_type_one, boolean_t jmp_to_next, boolean
*p = put_tjmp(t);
} else
p = addr;
if (!TREF(saw_side_effect) || ((OLD_SE == TREF(side_effect_handling)) && (GTM_BOOL == TREF(gtm_fullbool))))
if (GTM_BOOL == TREF(gtm_fullbool) || !TREF(saw_side_effect))
{ /* nice simple short circuit */
assert(NULL == TREF(boolchain_ptr));
bx_tail(t->operand[0].oprval.tref, jmp_type_one, p);
bx_tail(t->operand[1].oprval.tref, sense, addr);
t->opcode = OC_NOOP;
t->operand[0].oprclass = t->operand[1].oprclass = NO_REF;
t->operand[0].oprclass = t->operand[1].oprclass = NOCLASS;
return;
}
/* got a side effect and don't want them short circuited */
@ -149,7 +112,19 @@ void bx_boolop(triple *t, boolean_t jmp_type_one, boolean_t jmp_to_next, boolean
dqins(ref1, exorder, ref0);
if (oc_tab[t1->operand[0].oprval.tref->opcode].octype & OCT_MVAL)
{ /* do we need a STOTEMP? */
STOTEMP_IF_NEEDED(ref0, 0, t1, t1->operand[0]);
switch (t1->operand[0].oprval.tref->opcode)
{
case OC_INDGLVN: /* indirect actions not happy without STOTEMP */
case OC_INDNAME:
case OC_VAR: /* variable could change so must save it */
t1->opcode = OC_STOTEMP;
ref0->operand[0] = put_tref(t1);/* new COBOOL points to this OC_STOTEMP */
break;
default: /* else no temporary if it's mval */
ref0->operand[0] = put_tref(t1->operand[0].oprval.tref);
t1->opcode = OC_NOOP;
t1->operand[0].oprclass = NOCLASS;
}
} else
{ /* make it an mval instead of COBOOL now */
t1->opcode = OC_COMVAL;
@ -159,7 +134,7 @@ void bx_boolop(triple *t, boolean_t jmp_type_one, boolean_t jmp_to_next, boolean
ref0 = maketriple(t1->opcode); /* create new jmp on result of coerce */
ref0->operand[0] = t1->operand[0];
t1->opcode = OC_NOOP; /* wipe out original jmp */
t1->operand[0].oprclass = NO_REF;
t1->operand[0].oprclass = NOCLASS;
break;
case OC_CONTAIN:
case OC_EQU:
@ -171,14 +146,32 @@ void bx_boolop(triple *t, boolean_t jmp_type_one, boolean_t jmp_to_next, boolean
assert(TRIP_REF == t1->operand[0].oprclass);
assert(TRIP_REF == t1->operand[1].oprclass);
dqins(ref1, exorder, ref0);
STOTEMP_IF_NEEDED(ref0, 0, t1, t1->operand[0]);
if (OC_VAR == t1->operand[0].oprval.tref->opcode)
{ /* VAR could change so must save it */
t1->opcode = OC_STOTEMP; /* overlay the original op with a STOTEMP */
ref0->operand[0] = put_tref(t1); /* new op points to thi STOTEMP */
} else
{ /* no need for a temporary unless it's a VAR */
ref0->operand[0] = put_tref(t1->operand[0].oprval.tref);
t1->opcode = OC_NOOP;
}
ref1 = t1;
t1 = t1->exorder.fl;
ref2 = maketriple(t1->opcode); /* copy jmp */
ref2->operand[0] = t1->operand[0];
STOTEMP_IF_NEEDED(ref0, 1, t1, ref1->operand[1]);
if (OC_VAR == ref1->operand[1].oprval.tref->opcode)
{ /* VAR could change so must save it */
ref0->operand[1] = put_tref(t1); /* new op points to STOTEMP overlaying the jmp */
t1->operand[0] = ref1->operand[1];
t1->opcode = OC_STOTEMP; /* overlay jmp with 2nd STOTEMP */
} else
{ /* no need for a temporary unless it's a VAR */
ref0->operand[1] = put_tref(ref1->operand[1].oprval.tref);
t1->opcode = OC_NOOP;
t1->operand[0].oprclass = NOCLASS;
}
if (OC_NOOP == ref1->opcode) /* does op[0] need cleanup? */
ref1->operand[0].oprclass = ref1->operand[1].oprclass = NO_REF;
ref1->operand[0].oprclass = ref1->operand[1].oprclass = NOCLASS;
ref0 = ref2;
break;
case OC_JMPTSET:
@ -188,20 +181,19 @@ void bx_boolop(triple *t, boolean_t jmp_type_one, boolean_t jmp_to_next, boolean
ref2 = maketriple(OC_NOOP); /* insert a NOOP in new chain inplace of COBOOL */
dqins(ref1, exorder, ref2);
t1->opcode = OC_NOOP; /* wipe out original jmp */
t1->operand[0].oprclass = NO_REF;
t1->operand[0].oprclass = NOCLASS;
break;
default:
assertpro(FALSE);
}
assert((OC_STOTEMP == t1->opcode) || (OC_NOOP == t1->opcode) || (OC_COMVAL == t1->opcode)
|| (OC_LITC == t1->opcode));
assert((OC_STOTEMP == t1->opcode) || (OC_NOOP == t1->opcode) || (OC_COMVAL == t1->opcode));
assert(oc_tab[ref0->opcode].octype & OCT_JUMP);
ref1 = (TREF(boolchain_ptr))->exorder.bl;
dqins(ref1, exorder, ref0); /* common insert for new jmp */
}
assert(oc_tab[t->opcode].octype & OCT_BOOL);
t->opcode = OC_NOOP; /* wipe out the original boolean op */
t->operand[0].oprclass = t->operand[1].oprclass = NO_REF;
t->operand[0].oprclass = t->operand[1].oprclass = NOCLASS;
tripbp = &t->jmplist; /* borrow jmplist to track jmp targets */
assert(NULL == tripbp->bpt);
assert((tripbp == tripbp->que.fl) && (tripbp == tripbp->que.bl));

View File

@ -1,6 +1,6 @@
/****************************************************************
* *
* Copyright 2001, 2012 Fidelity Information Services, Inc *
* Copyright 2001, 2011 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
@ -45,7 +45,7 @@ void bx_tail(triple *t, boolean_t sense, oprtype *addr)
assert((1 & sense) == sense);
assert(oc_tab[t->opcode].octype & OCT_BOOL);
assert(TRIP_REF == t->operand[0].oprclass);
assert((TRIP_REF == t->operand[1].oprclass) || (NO_REF == t->operand[1].oprclass));
assert((TRIP_REF == t->operand[1].oprclass) || (NOCLASS == t->operand[1].oprclass));
switch (t->opcode)
{
case OC_COBOOL:
@ -64,7 +64,7 @@ void bx_tail(triple *t, boolean_t sense, oprtype *addr)
case OC_COM:
bx_tail(t->operand[0].oprval.tref, !sense, addr);
t->opcode = OC_NOOP;
t->operand[0].oprclass = NO_REF;
t->operand[0].oprclass = 0;
return;
case OC_NEQU:
sense = !sense;

View File

@ -1,6 +1,6 @@
/****************************************************************
* *
* Copyright 2003, 2013 Fidelity Information Services, Inc *
* Copyright 2003, 2012 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
@ -116,5 +116,3 @@ CDB_SC_LCHAR_ENTRY(cdb_sc_gvtrootmod, FALSE, 'r') /* 'r' gvcst_kill found
CDB_SC_LCHAR_ENTRY(cdb_sc_instancefreeze, FALSE, 's') /* 's' instance freeze detected in t_end/tp_tend, requires retry */
CDB_SC_LCHAR_ENTRY(cdb_sc_gvtrootmod2, FALSE, 't') /* 't' t_end/tp_tend detected root blocks moved by reorg */
CDB_SC_LCHAR_ENTRY(cdb_sc_spansize, FALSE, 'u') /* 'u' chunks of spanning node don't add up */
CDB_SC_LCHAR_ENTRY(cdb_sc_restarted, FALSE, 'v') /* 'v' return value indicating t_retry has already happened */
CDB_SC_LCHAR_ENTRY(cdb_sc_tqreadnowait, FALSE, 'w') /* 'w' update helper returning from t_qread instead of sleeping */

View File

@ -1,6 +1,6 @@
/****************************************************************
* *
* Copyright 2001, 2013 Fidelity Information Services, Inc *
* Copyright 2001, 2012 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
@ -41,7 +41,6 @@
GBLREF uint4 dollar_tlevel;
GBLREF boolean_t dse_running;
GBLREF boolean_t mu_reorg_upgrd_dwngrd_in_prog;
error_def(ERR_DBBLEVMX);
error_def(ERR_DBBLEVMN);
@ -83,21 +82,23 @@ error_def(ERR_DBBDBALLOC);
#define TEXT4 ", "
#define MAX_UTIL_LEN 40
#define RTS_ERROR_FUNC(CSA, ERR, BUFF) \
{ \
if (gtmassert_on_error) \
GTMASSERT; \
rts_error_csa(CSA_ARG(CSA) VARLSTCNT(4) MAKE_MSG_INFO(ERR), 2, LEN_AND_STR((char_ptr_t)BUFF)); \
#define RTS_ERROR_FUNC(err, buff) \
{ \
if (gtmassert_on_error) \
GTMASSERT; \
rts_error_func(err, buff); \
}
void rts_error_func(int err, uchar_ptr_t buff);
int cert_blk (gd_region *reg, block_id blk, blk_hdr_ptr_t bp, block_id root, boolean_t gtmassert_on_error)
{
block_id child, prev_child;
rec_hdr_ptr_t rp, r_top;
int num_subscripts;
uint4 bplmap, mask1, offset, rec_offset, rec_size;
uint4 bplmap, mask1, offset;
sm_uint_ptr_t chunk_p; /* Value is unaligned so will be assigned to chunk */
uint4 chunk, blk_size;
uint4 chunk;
sm_uc_ptr_t blk_top, blk_id_ptr, next_tp_child_ptr, key_base, mp, b_ptr;
unsigned short rec_cmpc, min_cmpc; /* the minimum cmpc expected in any record (except star-key) in a gvt */
int tmp_cmpc;
@ -105,16 +106,14 @@ int cert_blk (gd_region *reg, block_id blk, blk_hdr_ptr_t bp, block_id root, boo
unsigned int prior_expkeylen;
unsigned short temp_ushort;
int blk_levl;
int comp_length, key_size;
int blk_size, rec_size, comp_length, rec_offset, key_size;
unsigned char util_buff[MAX_UTIL_LEN];
int util_len;
off_chain chain;
sgmnt_addrs *csa;
sgmnt_data_ptr_t csd;
boolean_t is_gvt, is_directory, first_key, full, prev_char_is_delimiter;
DCL_THREADGBL_ACCESS;
SETUP_THREADGBL_ACCESS;
csa = &FILE_INFO(reg)->s_addrs;
csd = csa->hdr;
bplmap = csd->bplmap;
@ -147,18 +146,18 @@ int cert_blk (gd_region *reg, block_id blk, blk_hdr_ptr_t bp, block_id root, boo
{
if ((unsigned char)blk_levl != LCL_MAP_LEVL)
{
RTS_ERROR_FUNC(csa, MAKE_MSG_INFO(ERR_DBLVLINC), util_buff);
RTS_ERROR_FUNC(MAKE_MSG_INFO(ERR_DBLVLINC), util_buff);
return FALSE;
}
if (blk_size != BM_SIZE(bplmap))
{
RTS_ERROR_FUNC(csa, ERR_DBBMSIZE, util_buff);
RTS_ERROR_FUNC(ERR_DBBMSIZE, util_buff);
return FALSE;
}
mp = (sm_uc_ptr_t)bp + SIZEOF(blk_hdr);
if ((*mp & 1) != 0)
{ /* bitmap doesn't protect itself */
RTS_ERROR_FUNC(csa, ERR_DBBMBARE, util_buff);
RTS_ERROR_FUNC(ERR_DBBMBARE, util_buff);
return FALSE;
}
full = TRUE;
@ -182,14 +181,14 @@ int cert_blk (gd_region *reg, block_id blk, blk_hdr_ptr_t bp, block_id root, boo
mask1 &= chunk; /* check against the original contents */
if (mask1 != 0) /* busy and reused should never appear together */
{
RTS_ERROR_FUNC(csa, ERR_DBBMINV, util_buff);
RTS_ERROR_FUNC(ERR_DBBMINV, util_buff);
return FALSE;
}
}
if (full == (NO_FREE_SPACE != gtm_ffs(blk / bplmap, MM_ADDR(csd), MASTER_MAP_BITS_PER_LMAP)))
{
RTS_ERROR_FUNC(csa, ERR_DBBMMSTR, util_buff);
RTS_ERROR_FUNC(ERR_DBBMMSTR, util_buff);
/* DSE CACHE -VERIFY used to fail occasionally with the DBBMMSTR error because of passing
* an older twin global buffer that contained stale bitmap information. That is now fixed.
* So we dont expect any more such failures. Assert accordingly.
@ -201,57 +200,52 @@ int cert_blk (gd_region *reg, block_id blk, blk_hdr_ptr_t bp, block_id root, boo
}
if (blk_levl > MAX_BT_DEPTH)
{
RTS_ERROR_FUNC(csa, ERR_DBBLEVMX, util_buff);
RTS_ERROR_FUNC(ERR_DBBLEVMX, util_buff);
return FALSE;
}
if (blk_levl < 0)
{
RTS_ERROR_FUNC(csa, ERR_DBBLEVMN, util_buff);
RTS_ERROR_FUNC(ERR_DBBLEVMN, util_buff);
return FALSE;
}
if (blk_levl == 0)
{ /* data block */
if ((DIR_ROOT == blk) || (blk == root))
{ /* headed for where an index block should be */
RTS_ERROR_FUNC(csa, ERR_DBROOTBURN, util_buff);
RTS_ERROR_FUNC(ERR_DBROOTBURN, util_buff);
return FALSE;
}
if (blk_size < (uint4)SIZEOF(blk_hdr))
if (blk_size < SIZEOF(blk_hdr))
{
RTS_ERROR_FUNC(csa, ERR_DBBSIZMN, util_buff);
RTS_ERROR_FUNC(ERR_DBBSIZMN, util_buff);
return FALSE;
}
} else
{ /* index block */
if (blk_size < (uint4)(SIZEOF(blk_hdr) + SIZEOF(rec_hdr) + SIZEOF(block_id)))
if (blk_size < (SIZEOF(blk_hdr) + SIZEOF(rec_hdr) + SIZEOF(block_id)))
{ /* must have at least one record */
RTS_ERROR_FUNC(csa, ERR_DBBSIZMN, util_buff);
RTS_ERROR_FUNC(ERR_DBBSIZMN, util_buff);
return FALSE;
}
}
if (blk_size > (uint4)csd->blk_size)
if (blk_size > csd->blk_size)
{
RTS_ERROR_FUNC(csa, ERR_DBBSIZMX, util_buff);
RTS_ERROR_FUNC(ERR_DBBSIZMX, util_buff);
return FALSE;
}
is_directory = FALSE;
is_gvt = FALSE;
/* if both "is_directory" and "is_gvt" are FALSE, then we dont know YET if the given block is a directory or gvt */
if (DIR_ROOT == root)
is_directory = TRUE;
if ((0 != root) && (DIR_ROOT != root))
is_gvt = TRUE;
/* MUPIP REORG -TRUNCATE has some special cases */
if (MUSWP_INCR_ROOT_CYCLE == TREF(in_mu_swap_root_state))
{ /* We could be updating either a gvt root block or a directory leaf block. Don't know yet. */
if (0 == root)
{
is_directory = FALSE;
is_gvt = FALSE;
} else if (MUSWP_DIRECTORY_SWAP == TREF(in_mu_swap_root_state))
{ /* We know we're updating a directory block, even though root is not DIR_ROOT. root and gv_target correspond
* to the gvt being REORG'ed.
*/
/* if both "is_directory" and "is_gvt" are FALSE, then we dont know YET if the given block is a directory or gvt */
} else if (DIR_ROOT == root)
{
is_directory = TRUE;
is_gvt = FALSE;
} else
{
is_directory = FALSE;
is_gvt = TRUE;
}
blk_top = (sm_uc_ptr_t)bp + blk_size;
first_key = TRUE;
@ -265,7 +259,7 @@ int cert_blk (gd_region *reg, block_id blk, blk_hdr_ptr_t bp, block_id root, boo
for (rp = (rec_hdr_ptr_t)((sm_uc_ptr_t)bp + SIZEOF(blk_hdr)) ; rp < (rec_hdr_ptr_t)blk_top ; rp = r_top)
{
GET_RSIZ(rec_size, rp);
rec_offset = (uint4)((sm_ulong_t)rp - (sm_ulong_t)bp);
rec_offset = (int)((sm_ulong_t)rp - (sm_ulong_t)bp);
/*add util_buff here*/
util_len=0;
@ -281,14 +275,14 @@ int cert_blk (gd_region *reg, block_id blk, blk_hdr_ptr_t bp, block_id root, boo
util_len += SIZEOF(TEXT2) - 1;
util_buff[util_len] = 0;
if (rec_size <= (uint4)SIZEOF(rec_hdr))
if (rec_size <= SIZEOF(rec_hdr))
{
RTS_ERROR_FUNC(csa, ERR_DBRSIZMN, util_buff);
RTS_ERROR_FUNC(ERR_DBRSIZMN, util_buff);
return FALSE;
}
if (rec_size > (uint4)((sm_ulong_t)blk_top - (sm_ulong_t)rp))
if (rec_size > (unsigned short)((sm_ulong_t)blk_top - (sm_ulong_t)rp))
{
RTS_ERROR_FUNC(csa, ERR_DBRSIZMX, util_buff);
RTS_ERROR_FUNC(ERR_DBRSIZMX, util_buff);
return FALSE;
}
r_top = (rec_hdr_ptr_t)((sm_ulong_t)rp + rec_size);
@ -297,7 +291,7 @@ int cert_blk (gd_region *reg, block_id blk, blk_hdr_ptr_t bp, block_id root, boo
{
if (rec_cmpc)
{
RTS_ERROR_FUNC(csa, ERR_DBCMPNZRO, util_buff);
RTS_ERROR_FUNC(ERR_DBCMPNZRO, util_buff);
return FALSE;
}
if (0 == blk_levl)
@ -311,12 +305,12 @@ int cert_blk (gd_region *reg, block_id blk, blk_hdr_ptr_t bp, block_id root, boo
{ /* star key */
if (rec_size != SIZEOF(rec_hdr) + SIZEOF(block_id))
{
RTS_ERROR_FUNC(csa, ERR_DBSTARSIZ, util_buff);
RTS_ERROR_FUNC(ERR_DBSTARSIZ, util_buff);
return FALSE;
}
if (rec_cmpc)
{
RTS_ERROR_FUNC(csa, ERR_DBSTARCMP, util_buff);
RTS_ERROR_FUNC(ERR_DBSTARCMP, util_buff);
return FALSE;
}
blk_id_ptr = (sm_uc_ptr_t)rp + SIZEOF(rec_hdr);
@ -330,7 +324,7 @@ int cert_blk (gd_region *reg, block_id blk, blk_hdr_ptr_t bp, block_id root, boo
{
if (rec_cmpc >= prior_expkeylen)
{
RTS_ERROR_FUNC(csa, ERR_DBCMPMX, util_buff);
RTS_ERROR_FUNC(ERR_DBCMPMX, util_buff);
return FALSE;
}
for (b_ptr = prior_expkey; b_ptr < (prior_expkey + rec_cmpc); b_ptr++)
@ -361,7 +355,7 @@ int cert_blk (gd_region *reg, block_id blk, blk_hdr_ptr_t bp, block_id root, boo
prev_char_is_delimiter = FALSE;
if (blk_id_ptr >= (sm_uc_ptr_t)r_top)
{
RTS_ERROR_FUNC(csa, ERR_DBKEYMX, util_buff);
RTS_ERROR_FUNC(ERR_DBKEYMX, util_buff);
return FALSE;
}
}
@ -372,7 +366,7 @@ int cert_blk (gd_region *reg, block_id blk, blk_hdr_ptr_t bp, block_id root, boo
if (is_gvt)
{ /* this is a contradiction. a block cannot be a directory and gvt at the same time.
* gvt should contain all keys with the same global name */
RTS_ERROR_FUNC(csa, ERR_DBINVGBL, util_buff);
RTS_ERROR_FUNC(ERR_DBINVGBL, util_buff);
return FALSE;
}
is_directory = TRUE; /* no need to do this if it was already TRUE but we save an if check */
@ -382,19 +376,19 @@ int cert_blk (gd_region *reg, block_id blk, blk_hdr_ptr_t bp, block_id root, boo
if (is_directory)
{ /* this is a contradiction. a block cannot be a directory and gvt at the same time.
* the directory tree should contain only name-level (i.e. unsubscripted) globals */
RTS_ERROR_FUNC(csa, ERR_DBDIRTSUBSC, util_buff);
RTS_ERROR_FUNC(ERR_DBDIRTSUBSC, util_buff);
return FALSE;
}
is_gvt = TRUE; /* no need to do this if it was already TRUE but we save an if check */
}
if (MAX_GVSUBSCRIPTS <= num_subscripts)
{
RTS_ERROR_FUNC(csa, ERR_DBMAXNRSUBS, util_buff);
RTS_ERROR_FUNC(ERR_DBMAXNRSUBS, util_buff);
return FALSE;
}
if (blk_levl && (key_size != (rec_size - SIZEOF(block_id) - SIZEOF(rec_hdr))))
{
RTS_ERROR_FUNC(csa, ERR_DBKEYMN, util_buff);
RTS_ERROR_FUNC(ERR_DBKEYMN, util_buff);
return FALSE;
}
assert(first_key || (rec_cmpc < prior_expkeylen));
@ -402,12 +396,12 @@ int cert_blk (gd_region *reg, block_id blk, blk_hdr_ptr_t bp, block_id root, boo
{
if (prior_expkey[rec_cmpc] == key_base[0])
{
RTS_ERROR_FUNC(csa, ERR_DBCMPBAD, util_buff);
RTS_ERROR_FUNC(ERR_DBCMPBAD, util_buff);
return FALSE;
}
if (((unsigned int)prior_expkey[rec_cmpc] >= (unsigned int)key_base[0]))
{
RTS_ERROR_FUNC(csa, ERR_DBKEYORD, util_buff);
RTS_ERROR_FUNC(ERR_DBKEYORD, util_buff);
return FALSE;
}
}
@ -426,24 +420,22 @@ int cert_blk (gd_region *reg, block_id blk, blk_hdr_ptr_t bp, block_id root, boo
{
if (child <= 0)
{
RTS_ERROR_FUNC(csa, ERR_DBPTRNOTPOS, util_buff);
RTS_ERROR_FUNC(ERR_DBPTRNOTPOS, util_buff);
return FALSE;
}
if ((child > csa->ti->total_blks) && !mu_reorg_upgrd_dwngrd_in_prog)
{ /* REORG -UPGRADE/DOWNGRADE can update recycled blocks, which may contain children beyond
* the total_blks if a truncate happened sometime after the block was killed.
*/
RTS_ERROR_FUNC(csa, ERR_DBPTRMX, util_buff);
if (child > csa->ti->total_blks)
{
RTS_ERROR_FUNC(ERR_DBPTRMX, util_buff);
return FALSE;
}
if (!(child % bplmap))
{
RTS_ERROR_FUNC(csa, ERR_DBPTRMAP, util_buff);
RTS_ERROR_FUNC(ERR_DBPTRMAP, util_buff);
return FALSE;
}
if (child == prev_child)
{
RTS_ERROR_FUNC(csa, ERR_DBBDBALLOC, util_buff);
RTS_ERROR_FUNC(ERR_DBBDBALLOC, util_buff);
return FALSE;
}
prev_child = child;
@ -451,7 +443,7 @@ int cert_blk (gd_region *reg, block_id blk, blk_hdr_ptr_t bp, block_id root, boo
{
if ((blk_id_ptr != next_tp_child_ptr) && (NULL != next_tp_child_ptr))
{
RTS_ERROR_FUNC(csa, ERR_DBPTRNOTPOS, util_buff);
RTS_ERROR_FUNC(ERR_DBPTRNOTPOS, util_buff);
return FALSE;
}
next_tp_child_ptr = blk_id_ptr + chain.next_off;
@ -462,4 +454,10 @@ int cert_blk (gd_region *reg, block_id blk, blk_hdr_ptr_t bp, block_id root, boo
}
assert(!is_directory || !is_gvt); /* the block cannot be a directory AND gvt at the same time */
return TRUE;
}
void rts_error_func(int err, uchar_ptr_t buff)
{
rts_error(VARLSTCNT(4) MAKE_MSG_INFO(err), 2, LEN_AND_STR((char_ptr_t)buff));
}

View File

@ -208,10 +208,6 @@ LITDEF struct
SETUP_THREADGBL_ACCESS;
assert((SIZEOF(cmd_names) / SIZEOF(nametabent)) == cmd_index[26]);
while (TREF(expr_depth))
DECREMENT_EXPR_DEPTH; /* in case of prior errors */
(TREF(side_effect_base))[0] = FALSE;
TREF(temp_subs) = FALSE;
CHKTCHAIN(TREF(curtchain));
TREF(pos_in_chain) = *TREF(curtchain);
if (TREF(window_token) != TK_IDENT)
@ -245,7 +241,6 @@ LITDEF struct
{
assert((m_zinvcmd != cmd_data[x].fcn));
cr = NULL;
shifting = FALSE;
} else
{
advancewindow();

View File

@ -1,6 +1,6 @@
/****************************************************************
* *
* Copyright 2001, 2013 Fidelity Information Services, Inc *
* Copyright 2001, 2010 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
@ -42,7 +42,6 @@ typedef struct
#define CQ_ALIGN_STRINGS (1 << 11) /* 0x0800 */
#define CQ_UTF8 (1 << 12) /* 0x1000 */
#define CQ_NAMEOFRTN (1 << 13) /* 0x2000 */
#define CQ_DYNAMIC_LITERALS (1 << 14) /* 0x4000 -- Set via environmental variable gtm_dynamic_literals (gtm_logicals.h) */
/* TODO: add CQ_ALIGN_STRINGS to the default list below when alignment is supported */
#define CQ_DEFAULT (CQ_WARNINGS | CQ_OBJECT | CQ_IGNORE | CQ_LOWER_LABELS | CQ_LINE_ENTRY | CQ_INLINE_LITERALS)
@ -50,16 +49,6 @@ typedef struct
#define LISTTAB 10
#define PG_WID 132
#define INIT_CMD_QLF_STRINGS(CMD_QLF, OBJ_FILE, LIST_FILE, CEPREP_FILE, SIZE) \
{ \
CMD_QLF.object_file.str.addr = OBJ_FILE; \
CMD_QLF.object_file.str.len = SIZE; \
CMD_QLF.list_file.str.addr = LIST_FILE; \
CMD_QLF.list_file.str.len = SIZE; \
CMD_QLF.ceprep_file.str.addr = CEPREP_FILE; \
CMD_QLF.ceprep_file.str.len = SIZE; \
}
typedef struct src_line_type
{
struct

View File

@ -1,6 +1,6 @@
/****************************************************************
* *
* Copyright 2001, 2013 Fidelity Information Services, Inc *
* Copyright 2001, 2011 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
@ -33,9 +33,8 @@ GBLREF char cg_phase;
GBLREF unsigned char *source_buffer;
error_def(ERR_INDEXTRACHARS);
error_def(ERR_INDRCOMPFAIL);
int comp_fini(int status, mstr *obj, opctype retcode, oprtype *retopr, oprtype *dst, mstr_len_t src_len)
int comp_fini(int status, mstr *obj, opctype retcode, oprtype *retopr, mstr_len_t src_len)
{
triple *ref;
DCL_THREADGBL_ACCESS;
@ -45,11 +44,7 @@ int comp_fini(int status, mstr *obj, opctype retcode, oprtype *retopr, oprtype *
{
while (TK_SPACE == TREF(window_token)) /* Eat up trailing white space */
advancewindow();
if (TK_ERROR == TREF(window_token))
{
status = EXPR_FAIL;
stx_error(ERR_INDRCOMPFAIL);
} else if ((TK_EOL != TREF(window_token)) || (source_column < src_len))
if (((src_len + 2) != source_column) && ('\0' != source_buffer[source_column]))
{
status = EXPR_FAIL;
stx_error(ERR_INDEXTRACHARS);
@ -62,8 +57,6 @@ int comp_fini(int status, mstr *obj, opctype retcode, oprtype *retopr, oprtype *
ref = newtriple(retcode);
if (retopr)
ref->operand[0] = *retopr;
if (OC_IRETMVAL == retcode)
ref->operand[1] = *dst;
start_fetches(OC_NOOP);
resolve_ref(0); /* cannot fail because there are no MLAB_REF's in indirect code */
alloc_reg();
@ -82,12 +75,6 @@ int comp_fini(int status, mstr *obj, opctype retcode, oprtype *retopr, oprtype *
ind_code(obj);
indr_stringpool.free = indr_stringpool.base;
}
} else
{ /* If this assert fails, it means a syntax problem could have been caught earlier. Consider placing a more useful
* and specific error message at that location.
*/
assert(FALSE);
stx_error(ERR_INDRCOMPFAIL);
}
if (EXPR_FAIL == status)
{

View File

@ -1,6 +1,6 @@
/****************************************************************
* *
* Copyright 2001, 2013 Fidelity Information Services, Inc *
* Copyright 2001, 2012 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
@ -21,6 +21,7 @@
#include "cache.h"
#include "objlabel.h"
#include "mprof.h"
#include "cacheflush.h"
#include "compiler.h"
#include "obj_file.h"
#include "error.h"

View File

@ -1,6 +1,6 @@
/****************************************************************
* *
* Copyright 2001, 2012 Fidelity Information Services, Inc *
* Copyright 2001, 2011 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
@ -35,7 +35,7 @@ GBLREF char cg_phase;
error_def(ERR_INDRMAXLEN);
void comp_init(mstr *src, oprtype *dst)
void comp_init(mstr *src)
{
DCL_THREADGBL_ACCESS;
@ -64,12 +64,5 @@ void comp_init(mstr *src, oprtype *dst)
curr_fetch_trip = newtriple(OC_FETCH);
curr_fetch_count = 0;
start_fetches(OC_FETCH);
/* op_igetdst fetches the destination (ind_result) onto the M-stack at the start of execution so that if we end up doing
* nested indirection, in which case ind_result could change, op_iretmval can put the result in the correct location.
* op_igetsrc serves a very similar purpose, placing a copy of the source mval (ind_source) on the M-stack at the start
* of execution.
*/
if (dst)
*dst = put_tref(newtriple(OC_IGETDST));
return;
}

View File

@ -1,6 +1,6 @@
/****************************************************************
* *
* Copyright 2001, 2012 Fidelity Information Services, Inc *
* Copyright 2001, 2011 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
@ -32,23 +32,29 @@ int compile_pattern(oprtype *opr, boolean_t is_indirect)
ptstr retstr;
mval retmval;
mstr instr;
triple *oldchain, *ref;
save_se save_state;
triple *oldchain, *ref, tmpchain, *triptr;
DCL_THREADGBL_ACCESS;
SETUP_THREADGBL_ACCESS;
if (is_indirect)
{
if (SHIFT_SIDE_EFFECTS)
TREF(saw_side_effect) = TREF(shift_side_effects);
if (TREF(shift_side_effects) && (GTM_BOOL == TREF(gtm_fullbool)))
{
START_GVBIND_CHAIN(&save_state, oldchain);
dqinit(&tmpchain, exorder);
oldchain = setcurtchain(&tmpchain);
if (!indirection(opr))
{
setcurtchain(oldchain);
return FALSE;
}
ref = newtriple(OC_INDPAT);
PLACE_GVBIND_CHAIN(&save_state, oldchain);
newtriple(OC_GVSAVTARG);
setcurtchain(oldchain);
dqadd(TREF(expr_start), &tmpchain, exorder);
TREF(expr_start) = tmpchain.exorder.bl;
triptr = newtriple(OC_GVRECTARG);
triptr->operand[0] = put_tref(TREF(expr_start));
} else
{
if (!indirection(opr))

View File

@ -1,6 +1,6 @@
/****************************************************************
* *
* Copyright 2001, 2013 Fidelity Information Services, Inc *
* Copyright 2001, 2012 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
@ -88,7 +88,7 @@ typedef struct oprtypestruct
} oprtype;
/* Values for oprclass */
#define NO_REF 0
#define NOCLASS 0
#define TVAR_REF 1
#define TVAL_REF 2
#define TINT_REF 3
@ -170,30 +170,6 @@ typedef struct
unsigned short opr_type;
} toktabtype;
/* These two structures really belong in glvn_pool.h, but gtmpcat doesn't know to include that file. So put them here for now. */
#include "callg.h"
typedef struct
{
opctype sav_opcode;
uint4 mval_top; /* mval just beyond ones used by this entry */
uint4 precursor; /* index of previous FOR slot at same level */
mval *lvname;
gparam_list glvn_info;
} glvn_pool_entry;
typedef struct
{
uint4 capacity; /* total # allocated entries */
uint4 top; /* current available glvn_pool_entry slot */
uint4 for_slot[MAX_FOR_STACK + 1]; /* indices of most recent FOR slots */
uint4 share_slot; /* currently active slot */
opctype share_opcode; /* currently active opcode */
uint4 mval_capacity; /* total # allocated mvals */
uint4 mval_top; /* current available mval in mval_stack */
mval *mval_stack; /* stack of mvals */
glvn_pool_entry slot[1]; /* stack of entries */
} glvn_pool;
#define VMS_OS 01
#define UNIX_OS 02
#define ALL_SYS (VMS_OS | UNIX_OS)
@ -226,7 +202,7 @@ typedef struct
#define CHARMAXARGS 256
#define MAX_FORARGS 127
#define MAX_SRCLINE 8192 /* maximum length of a program source or indirection line */
#define NO_FORMALLIST (-1)
#define NO_FORMALLIST (-1)
/* Some errors should not cause stx_error to issue an rts_error. These are the errors related to
* a) Invalid Intrinsic Commands
@ -331,146 +307,21 @@ error_def(ERR_SVNOSET);
} \
}
typedef struct
{
triple *expr_start;
triple *expr_start_orig;
boolean_t shift_side_effects;
boolean_t saw_side_effect;
triple tmpchain;
} save_se;
#define START_GVBIND_CHAIN(SS, OLDCHAIN) \
{ \
(SS)->expr_start = TREF(expr_start); \
(SS)->expr_start_orig = TREF(expr_start_orig); \
(SS)->shift_side_effects = TREF(shift_side_effects); \
(SS)->saw_side_effect = TREF(saw_side_effect); \
TREF(expr_start) = NULL; \
TREF(expr_start_orig) = NULL; \
TREF(shift_side_effects) = FALSE; \
TREF(saw_side_effect) = FALSE; \
dqinit(&(SS)->tmpchain, exorder); \
OLDCHAIN = setcurtchain(&(SS)->tmpchain); \
}
#define PLACE_GVBIND_CHAIN(SS, OLDCHAIN) \
{ \
newtriple(OC_GVSAVTARG); \
TREF(expr_start) = (SS)->expr_start; \
TREF(expr_start_orig) = (SS)->expr_start_orig; \
TREF(shift_side_effects) = (SS)->shift_side_effects; \
TREF(saw_side_effect) = (SS)->saw_side_effect; \
setcurtchain(OLDCHAIN); \
assert(NULL != TREF(expr_start)); \
dqadd(TREF(expr_start), &(SS)->tmpchain, exorder); \
TREF(expr_start) = (SS)->tmpchain.exorder.bl; \
assert(OC_GVSAVTARG == (TREF(expr_start))->opcode); \
newtriple(OC_GVRECTARG)->operand[0] = put_tref(TREF(expr_start)); \
}
/* note assignment below */
#define SHIFT_SIDE_EFFECTS ((TREF(saw_side_effect) = TREF(shift_side_effects)) && (GTM_BOOL == TREF(gtm_fullbool)))
#define INITIAL_SIDE_EFFECT_DEPTH 33 /* initial allocation for expression nesting to track side effects */
/* note side effect for boolean shifting temporaries */
#define ENCOUNTERED_SIDE_EFFECT \
{ /* Needs #include "show_source_line" and #include "fullbool.h" */ \
char source_line_buff[MAX_SRCLINE + SIZEOF(ARROW)]; \
\
if (TREF(shift_side_effects)) \
{ \
TREF(saw_side_effect) = TRUE; \
if (!run_time && (FULL_BOOL_WARN == TREF(gtm_fullbool))) \
{ /* warnings requested by by gtm_fullbool and enabled by eval_expr */ \
show_source_line(TRUE); \
show_source_line(source_line_buff, SIZEOF(source_line_buff), TRUE); \
dec_err(VARLSTCNT(1) ERR_BOOLSIDEFFECT); \
} \
} \
}
#define SE_WARN_ON (!run_time && (SE_WARN == TREF(side_effect_handling)))
#define ISSUE_SIDEEFFECTEVAL_WARNING(COLUMN) \
{ \
TREF(last_source_column) = (COLUMN); \
show_source_line(TRUE); \
dec_err(VARLSTCNT(1) ERR_SIDEEFFECTEVAL); \
}
/* maintain array indexed by expr_depth to track side effects - for subscripts, actuallists, binary expressions and functions */
#define INCREMENT_EXPR_DEPTH \
{ \
boolean_t *TMP_BASE; \
\
if (!(TREF(expr_depth))++) \
TREF(expr_start) = TREF(expr_start_orig) = NULL; \
else \
{ /* expansion is unlikely as it's hard to nest expressions deeply, but we don't want a hard limit */ \
assertpro(TREF(expr_depth)); /* expr_depth doesn't handle rollover */ \
assert(TREF(expr_depth) <= TREF(side_effect_depth)); \
if (TREF(expr_depth) == TREF(side_effect_depth)) \
{ \
TMP_BASE = TREF(side_effect_base); \
(TREF(side_effect_depth))++; \
TREF(side_effect_base) = malloc(SIZEOF(boolean_t) * TREF(side_effect_depth)); \
memcpy(TREF(side_effect_base), TMP_BASE, SIZEOF(boolean_t) * TREF(expr_depth)); \
free(TMP_BASE); \
(TREF(side_effect_base))[TREF(expr_depth)] = FALSE; \
} \
} \
assert(FALSE == (TREF(side_effect_base))[TREF(expr_depth)]); \
}
/* complement of the above increment - uses the macro just below for assertpto and to clear the level we're leaving */
#define DECREMENT_EXPR_DEPTH \
{ \
DISABLE_SIDE_EFFECT_AT_DEPTH; \
if (!(--(TREF(expr_depth)))) \
TREF(saw_side_effect) = TREF(shift_side_effects) = FALSE; \
}
/* clear the current expr_depth level and propagate down */
#define DISABLE_SIDE_EFFECT_AT_DEPTH \
{ \
unsigned int DEPTH; \
\
DEPTH = TREF(expr_depth); \
assertpro(DEPTH); /* expr_depth shouldn't underflow */ \
(TREF(side_effect_base))[DEPTH - 1] |= (TREF(side_effect_base))[DEPTH]; /* propagate down */ \
(TREF(side_effect_base))[DEPTH] = FALSE; \
}
/* The following macro transfers subscripts from an array to the triple chain for gvn, lvn and name_glvn
* it requires includes for fullbool.m, mdq.h, and show_source_line.h, and also GBLREF of runtime
*/
#define SUBS_ARRAY_2_TRIPLES(REF1, SB1, SB2, SUBSCRIPTS, XTRA) \
{ \
boolean_t PROTECT_LVN, SE_NOTIFY; \
triple *REF2; \
\
if (PROTECT_LVN = (TREF(side_effect_base))[TREF(expr_depth)]) /* NOTE assignment */ \
SE_NOTIFY = SE_WARN_ON; \
while (SB2 < SB1) \
{ \
if (PROTECT_LVN && (SB2 > (SUBSCRIPTS + XTRA)) && ((SB1 - SB2) > 1) \
&& ((OC_VAR == SB2->oprval.tref->opcode) || (OC_GETINDX == SB2->oprval.tref->opcode))) \
{ /* protect lvns from side effects: skip 1st (unsubscripted name), and last (nothing following) */ \
assert(OLD_SE != TREF(side_effect_handling)); \
REF2 = maketriple(OC_STOTEMP); \
REF2->operand[0] = *SB2; \
dqins(SB2->oprval.tref, exorder, REF2); /* NOTE:this violates information hiding */ \
if (SE_NOTIFY) \
ISSUE_SIDEEFFECTEVAL_WARNING(SB2->oprval.tref->src.column + 1); \
*SB2 = put_tref(REF2); \
} \
REF2 = newtriple(OC_PARAMETER); \
REF1->operand[1] = put_tref(REF2); \
REF1 = REF2; \
REF1->operand[0] = *SB2++; \
} \
}
/* the macro below tucks a code reference into the for_stack so a FOR that's done can move on correctly when done */
#define FOR_END_OF_SCOPE(DEPTH, RESULT) \
{ \
@ -494,16 +345,37 @@ typedef struct
*/
#define FOR_POP(ALL) \
{ \
unsigned int For_stack_level; \
boolean_t Seen_indx; \
\
assert(TREF(for_stack_ptr) >= (oprtype **)TADR(for_stack)); \
assert(TREF(for_stack_ptr) <= (oprtype **)TADR(for_stack) + MAX_FOR_STACK); \
if (TREF(for_stack_ptr) > (oprtype **)TADR(for_stack)) \
--(TREF(for_stack_ptr)); \
if (ALL) \
{ \
(TREF(for_stack_ptr)) = (oprtype **)TADR(for_stack); \
while (TREF(for_stack_ptr) > (oprtype **)TADR(for_stack)) \
(TREF(for_stack_ptr))--; \
*(TREF(for_stack_ptr)) = NULL; \
} else if (TREF(for_stack_ptr) > (oprtype **)TADR(for_stack)) \
--(TREF(for_stack_ptr)); \
} \
if (TREF(for_stack_ptr) == (oprtype **)TADR(for_stack)) \
{ \
for (Seen_indx = FALSE, For_stack_level = MAX_FOR_STACK; --For_stack_level; ) \
{ \
if (!Seen_indx && (TRUE_WITH_INDX == TAREF1(for_temps, For_stack_level))) \
{ \
(void)newtriple(OC_FORFREEINDX); \
Seen_indx = TRUE; \
} \
TAREF1(for_temps, For_stack_level) = FALSE; \
} \
} else \
assert(TREF(for_stack_ptr) > (oprtype **)TADR(for_stack)); \
}
/* value used to make for_temps entries a little more than boolean */
#define TRUE_WITH_INDX 2
int actuallist(oprtype *opr);
int bool_expr(boolean_t op, oprtype *addr);
void bx_boolop(triple *t, boolean_t jmp_type_one, boolean_t jmp_to_next, boolean_t sense, oprtype *addr);
@ -512,11 +384,10 @@ void bx_tail(triple *t, boolean_t sense, oprtype *addr);
void chktchain(triple *head);
void code_gen(void);
void coerce(oprtype *a, unsigned short new_type);
int comp_fini(int status, mstr *obj, opctype retcode, oprtype *retopr, oprtype *dst, mstr_len_t src_len);
void comp_init(mstr *src, oprtype *dst);
int comp_fini(int status, mstr *obj, opctype retcode, oprtype *retopr, mstr_len_t src_len);
void comp_init(mstr *src);
void comp_indr(mstr *obj);
boolean_t compiler_startup(void);
void create_temporaries(triple *sub, opctype put_oc);
triple *entryref(opctype op1, opctype op2, mint commargcode, boolean_t can_commarg, boolean_t labref, boolean_t textname);
int eval_expr(oprtype *a);
int expratom(oprtype *a);
@ -536,7 +407,6 @@ int f_fnzbitget(oprtype *a, opctype op);
int f_fnzbitset(oprtype *a, opctype op);
int f_fnzbitstr(oprtype *a, opctype op);
int f_get(oprtype *a, opctype op);
int f_get1(oprtype *a, opctype op);
int f_incr(oprtype *a, opctype op);
int f_justify(oprtype *a, opctype op);
int f_length(oprtype *a, opctype op);
@ -570,7 +440,6 @@ int f_zechar(oprtype *a, opctype op);
int f_zgetsyi(oprtype *a, opctype op);
int f_zjobexam(oprtype *a, opctype op);
int f_zparse(oprtype *a, opctype op);
int f_zpeek(oprtype *a, opctype op);
int f_zprevious(oprtype *a, opctype op);
int f_zqgblmod(oprtype *a, opctype op);
int f_zsearch(oprtype *a, opctype op);
@ -581,7 +450,6 @@ int f_zsubstr(oprtype *a, opctype op);
int f_ztrigger(oprtype *a, opctype op);
int f_ztrnlnm(oprtype *a, opctype op);
int f_zwidth(oprtype *a, opctype op);
int f_zwrite(oprtype *a, opctype op);
mlabel *get_mladdr(mident *c);
mvar *get_mvaddr(mident *c);
int glvn(oprtype *a);

View File

@ -1,6 +1,6 @@
/****************************************************************
* *
* Copyright 2001, 2013 Fidelity Information Services, Inc *
* Copyright 2001, 2011 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
@ -67,14 +67,7 @@ boolean_t compiler_startup(void)
DCL_THREADGBL_ACCESS;
SETUP_THREADGBL_ACCESS;
/* Although we have an invocation of compiler cleanups at the end of this module, there exist ways to avoid this
* cleanup by working in direct mode, getting certain types of errors combined with an argumentless ZGOTO that unwinds
* pretty much everything that can bypass that cleanup. So do a quick check if it is needed and if so, git-r-done
* (test is part of the macro invocation). Note this is the easiest place to make this check rather than complicating
* error handling to provide a similar effect.
*/
COMPILE_HASHTAB_CLEANUP;
reinit_externs();
assert(NULL == complits_hashtab || NULL == complits_hashtab->base);
memset(&null_mident, 0, SIZEOF(null_mident));
ESTABLISH_RET(compiler_ch, FALSE);
/* Since the stringpool alignment is solely based on mstr_native_align, we need to initialize it based

View File

@ -1,6 +1,6 @@
/****************************************************************
* *
* Copyright 2001, 2013 Fidelity Information Services, Inc *
* Copyright 2001, 2010 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
@ -26,8 +26,8 @@
boolean_t compswap(sm_global_latch_ptr_t lock, int compval, int newval1);
# define COMPSWAP_LOCK(LCK, CMPVAL1, CMPVAL2, NEWVAL1, NEWVAL2) compswap(LCK, CMPVAL1, NEWVAL1)
# define COMPSWAP_UNLOCK(LCK, CMPVAL1, CMPVAL2, NEWVAL1, NEWVAL2) compswap(LCK, CMPVAL1, NEWVAL1)
# elif (defined(__HP_cc) || (defined(__hpux) && defined(__GNUC__)))
/* Use compiler inline assembly macros for HP-UX/HP C or GCC on HPUX*/
# elif defined(__HP_cc)
/* Use compiler inline assembly macros for HP-UX/HP C */
/* This is assuming 32 bit lock storage, which right now seems to be PIDs
* most of the time. PIDs are currently 32 bit values, but that could change
* someday, so beware
@ -46,8 +46,6 @@
_Asm_cmpxchg((_Asm_sz)_SZ_W,(_Asm_sem)_SEM_REL,(uint32_t *)LCK, \
(uint64_t)NEWVAL1, (_Asm_ldhint)_LDHINT_NONE) == (uint64_t)CMPVAL1 ? 1 : 0 \
)
# else
# error Unsupported Platform sr_port/compswap.h
# endif /* __ia64 */
#else
boolean_t compswap(sm_global_latch_ptr_t lock, int compval1, int compval2, int newval1, int newval2);

View File

@ -1,6 +1,6 @@
/****************************************************************
* *
* Copyright 2001, 2013 Fidelity Information Services, Inc *
* Copyright 2001, 2012 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
@ -17,7 +17,6 @@
#include "stack_frame.h"
#include "mprof.h"
#include "error.h"
#include "glvn_pool.h"
GBLREF stack_frame *frame_pointer;
GBLREF unsigned char *stackbase ,*stacktop, *msp, *stackwarn;
@ -37,21 +36,18 @@ void copy_stack_frame(void)
if (msp <= stacktop)
{
msp = msp_save;
rts_error_csa(CSA_ARG(NULL) VARLSTCNT(1) ERR_STACKOFLOW);
rts_error(VARLSTCNT(1) ERR_STACKOFLOW);
} else
rts_error_csa(CSA_ARG(NULL) VARLSTCNT(1) ERR_STACKCRIT);
rts_error(VARLSTCNT(1) ERR_STACKCRIT);
}
assert(msp < stackbase);
assert((frame_pointer < frame_pointer->old_frame_pointer) || (NULL == frame_pointer->old_frame_pointer));
*sf = *frame_pointer;
sf->old_frame_pointer = frame_pointer;
sf->flags = 0; /* Don't propagate special flags */
sf->type &= SFT_ZINTR_OFF; /* Don't propagate special type - normally can't propagate but if $ZINTERRUPT frame is
* rewritten by ZGOTO to a "regular" frame, this frame type *can* propagate.
*/
SET_GLVN_INDX(sf, GLVN_POOL_UNTOUCHED);
sf->flags = 0; /* Don't propagate special flags */
sf->for_ctrl_stack = NULL;
sf->ret_value = NULL;
sf->dollar_test = -1; /* initialize it with -1 for indication of not yet being used */
sf->dollar_test = -1; /* initialize it with -1 for indication of not yet being used */
frame_pointer = sf;
DBGEHND((stderr, "copy_stack_frame: Added stackframe at addr 0x"lvaddr" old-msp: 0x"lvaddr" new-msp: 0x"lvaddr"\n",
sf, msp_save, msp));

View File

@ -1,6 +1,6 @@
/****************************************************************
* *
* Copyright 2003, 2013 Fidelity Information Services, Inc *
* Copyright 2003, 2012 Fidelity Information Services, Inc *
* *
* This source code contains the intellectual property *
* of its copyright holder(s), and is made available *
@ -112,34 +112,39 @@ uint4 cre_jnl_file(jnl_create_info *info)
{
mstr filestr;
int org_fn_len, rename_fn_len, fstat;
uint4 ustatus;
char *org_fn, rename_fn[MAX_FN_LEN];
boolean_t no_rename;
assert(0 != jgbl.gbl_jrec_time);
if (!info->no_rename) /* ***MAY*** be rename is required */
{
no_rename = FALSE;
if (SS_NORMAL != (info->status = prepare_unique_name((char *)info->jnl, info->jnl_len, "", "",
rename_fn, &rename_fn_len, jgbl.gbl_jrec_time, &info->status2)))
{
no_rename = TRUE;
} else
{
rename_fn, &rename_fn_len, &info->status2)))
{ /* prepare_unique_name calls append_time_stamp which needs to open the info->jnl file.
* We are here because append_time_stamp failed to open info->jnl or something else.
* So check if info->jnl is present in the system */
filestr.addr = (char *)info->jnl;
filestr.len = info->jnl_len;
if (FILE_PRESENT != (fstat = gtm_file_stat(&filestr, NULL, NULL, FALSE, (uint4 *)&info->status)))
if (FILE_NOT_FOUND != (fstat = gtm_file_stat(&filestr, NULL, NULL, FALSE, &ustatus)))
{
if (FILE_NOT_FOUND != fstat)
if (FILE_STAT_ERROR == fstat)
{
STATUS_MSG(info);
return EXIT_ERR;
STATUS_MSG(info); /* for prepare_unique_name call */
info->status = ustatus;
info->status2 = SS_NORMAL;
}
if (IS_GTM_IMAGE)
send_msg(VARLSTCNT(4) ERR_JNLFNF, 2, filestr.len, filestr.addr);
else
gtm_putmsg(VARLSTCNT(4) ERR_JNLFNF, 2, filestr.len, filestr.addr);
no_rename = TRUE;
STATUS_MSG(info);
return EXIT_ERR;
}
if (IS_GTM_IMAGE)
send_msg(VARLSTCNT(4) ERR_JNLFNF, 2, filestr.len, filestr.addr);
else
gtm_putmsg(VARLSTCNT(4) ERR_JNLFNF, 2, filestr.len, filestr.addr);
STATUS_MSG(info);
info->status = info->status2 = SS_NORMAL;
info->no_rename = TRUE; /* We wanted to rename, but not required */
info->no_prev_link = TRUE; /* No rename => no prev_link */
} else
{
/* Note if info->no_prev_link == TRUE, we do not keep previous link, though rename can happen */
if (JNL_ENABLED(info) && !info->no_prev_link)
{
@ -148,13 +153,6 @@ uint4 cre_jnl_file(jnl_create_info *info)
} else
assert(info->no_prev_link);
}
if (no_rename)
{
STATUS_MSG(info);
info->status = info->status2 = SS_NORMAL;
info->no_rename = TRUE; /* We wanted to rename, but not required anymore */
info->no_prev_link = TRUE; /* No rename => no prev_link */
}
} /* else we know for sure rename is not required */
return (cre_jnl_file_common(info, rename_fn, rename_fn_len));
}
@ -173,13 +171,13 @@ uint4 cre_jnl_file_common(jnl_create_info *info, char *rename_fn, int rename_fn_
fd_type channel;
char *jrecbuf, *jrecbuf_base;
gd_id jnlfile_id;
# ifdef VMS
#if defined(VMS)
struct FAB fab;
struct NAM nam;
char es_buffer[MAX_FN_LEN], name_buffer[MAX_FN_LEN];
uint4 blk, block, zero_size;
io_status_block_disk iosb;
# else
#elif defined(UNIX)
struct stat stat_buf;
int fstat_res;
ZOS_ONLY(int realfiletag;)
@ -188,7 +186,7 @@ uint4 cre_jnl_file_common(jnl_create_info *info, char *rename_fn, int rename_fn_
struct stat sb;
int perm;
struct perm_diag_data pdd;
# endif
#endif
int idx;
trans_num db_tn;
uint4 temp_offset, temp_checksum, pfin_offset, eof_offset;
@ -211,13 +209,13 @@ uint4 cre_jnl_file_common(jnl_create_info *info, char *rename_fn, int rename_fn_
{
create_fn = &fn_buff[0];
if (SS_NORMAL != (info->status = prepare_unique_name((char *)info->jnl, (int)info->jnl_len, "", EXT_NEW,
(char *)create_fn, &create_fn_len, 0, &info->status2)))
(char *)create_fn, &create_fn_len, &info->status2)))
{
STATUS_MSG(info);
return EXIT_ERR;
}
}
# ifdef UNIX
#if defined(UNIX)
OPENFILE3((char *)create_fn, O_CREAT | O_EXCL | O_RDWR, 0600, channel);
if (-1 == channel)
{
@ -225,10 +223,10 @@ uint4 cre_jnl_file_common(jnl_create_info *info, char *rename_fn, int rename_fn_
STATUS_MSG(info);
return EXIT_ERR;
}
# ifdef __MVS__
#if defined(__MVS__)
if (-1 == gtm_zos_set_tag(channel, TAG_BINARY, TAG_NOTTEXT, TAG_FORCE, &realfiletag))
TAG_POLICY_SEND_MSG((char *)create_fn, errno, realfiletag, TAG_BINARY);
# endif
#endif
FSTAT_FILE(channel, &stat_buf, fstat_res);
if (-1 == fstat_res)
{
@ -292,7 +290,7 @@ uint4 cre_jnl_file_common(jnl_create_info *info, char *rename_fn, int rename_fn_
jrecbuf = (char *)ROUND_UP2((uintszofptr_t)jrecbuf_base, jnl_fs_block_size);
memset(jrecbuf, 0, jnl_fs_block_size);
set_gdid_from_stat(&jnlfile_id, &stat_buf);
# else
#elif defined(VMS)
nam = cc$rms_nam;
nam.nam$l_rsa = name_buffer;
nam.nam$b_rss = SIZEOF(name_buffer);
@ -336,7 +334,7 @@ uint4 cre_jnl_file_common(jnl_create_info *info, char *rename_fn, int rename_fn_
memcpy(jnlfile_id.did, &nam.nam$w_did, SIZEOF(jnlfile_id.did));
memcpy(jnlfile_id.fid, &nam.nam$w_fid, SIZEOF(jnlfile_id.fid));
jnl_fs_block_size = get_fs_block_size(channel);
# endif
#endif
info->checksum = compute_checksum(INIT_CHECKSUM_SEED, (uint4 *)&jnlfile_id, SIZEOF(gd_id));
/* Journal file header size relies on this assert */
assert(256 == GTMCRYPT_RESERVED_HASH_LEN);

Some files were not shown because too many files have changed in this diff Show More