Compare commits
No commits in common. "master" and "V60000-raw" have entirely different histories.
master
...
V60000-raw
|
@ -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
|
334
CMakeLists.txt
334
CMakeLists.txt
|
@ -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
|
||||
|
|
15
CVS/Entries
15
CVS/Entries
|
@ -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////
|
|
@ -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////////
|
|
@ -1,3 +0,0 @@
|
|||
/CMakeLists.txt////*////
|
||||
/COPYING////*////
|
||||
/README////*////
|
|
@ -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
|
|
@ -1 +0,0 @@
|
|||
gtm
|
|
@ -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 -
|
||||
|
|
|
@ -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
|
|
@ -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////*////
|
|
@ -1 +0,0 @@
|
|||
gtm/sr_alpha
|
|
@ -1 +0,0 @@
|
|||
:pserver:anonymous@fis-gtm.cvs.sourceforge.net:/cvsroot/fis-gtm
|
133
sr_alpha/axp.h
133
sr_alpha/axp.h
|
@ -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
|
|
@ -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
|
|
@ -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;
|
||||
}
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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) {};
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
|
@ -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////*////
|
|
@ -1 +0,0 @@
|
|||
gtm/sr_i386
|
|
@ -1 +0,0 @@
|
|||
:pserver:anonymous@fis-gtm.cvs.sourceforge.net:/cvsroot/fis-gtm
|
|
@ -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 *
|
||||
|
|
|
@ -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 *
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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 *
|
||||
|
|
|
@ -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 */
|
||||
};
|
||||
|
|
|
@ -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};
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||
|
|
1294
sr_i386/ttt.c
1294
sr_i386/ttt.c
File diff suppressed because it is too large
Load Diff
|
@ -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
|
|
@ -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////*////
|
|
@ -1 +0,0 @@
|
|||
gtm/sr_linux
|
|
@ -1 +0,0 @@
|
|||
:pserver:anonymous@fis-gtm.cvs.sourceforge.net:/cvsroot/fis-gtm
|
|
@ -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)
|
||||
|
|
|
@ -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=
|
||||
|
|
|
@ -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;
|
||||
}
|
|
@ -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_ */
|
|
@ -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()
|
|
@ -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"
|
||||
|
|
1766
sr_port/CVS/Entries
1766
sr_port/CVS/Entries
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1 +0,0 @@
|
|||
gtm/sr_port
|
|
@ -1 +0,0 @@
|
|||
:pserver:anonymous@fis-gtm.cvs.sourceforge.net:/cvsroot/fis-gtm
|
|
@ -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.
|
|
@ -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);
|
||||
|
|
|
@ -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:
|
||||
;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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))
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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));
|
||||
|
|
|
@ -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
Loading…
Reference in New Issue