Initial commit

This commit is contained in:
Eagle517
2026-01-14 10:27:57 -06:00
commit c1576fee30
11290 changed files with 1552799 additions and 0 deletions

104
TBE/MinGW/bin/a2dll Normal file
View File

@@ -0,0 +1,104 @@
#!/bin/sh
# This is a2dll 1.0
# (c)1999-2000 Paul Sokolovsky
# a2dll is distrubuted under GNU General Public License, see http://www.gnu.org
usage() {
echo 'a2dll 1.0: convert static library into win32 dll'
echo ' by <Paul.Sokolovsky@technologist.com>'
echo 'Usage: a2dll <staticlib> [-o <dllname>] [linker commands:-L,-l,-s] [--relink]'
exit 0
}
cmdline=$@
while test $# -ge 1
do
case "$1" in
-\? | -h* | --h*) usage;;
-o ) out="$2"; shift; shift;;
--relink) relink=1; shift;;
-* ) libs="$libs $1"; shift;;
*) in=$1; shift;;
esac
done
if [ "$in" = "" ]
then
usage
fi
base=`basename $in .a`
if [ "$out" = "" ]
then
out=`awk -v n=$base 'BEGIN {print substr(n,4); exit;}'`.dll
fi
if [ "$relink" != "1" ]
then
rm -f .dll/*
/usr/bin/mkdir -p .dll
cd .dll
ar x ../$in
else
cd .dll
fi
echo Creating shared library \'$out\'
dllwrap --export-all -o ../$out `ls` $libs >../ld.err 2>&1
cd ..
if [ `wc ld.err|awk ' {print $1}' ` -gt 2 ]
then
echo Linking error, consult file \'ld.err\', correct errors, and run
echo \'$0 $cmdline --relink\'
exit 1
else
# cleanup
rm -f ld.err
rm -f .dll/*
/usr/bin/rmdir .dll
# create .def
# we use pexports on dll instead of dlltool on objects for this,
# because it's:
# 1. faster
# 2. I just saw that dlltool lies about assembly-sourced files, it
# lists their symbols as data
pexports $out >$base.def
# create import library
mv $in $in.static
dlltool --dllname $out --def $base.def --output-lib $in
# finally, we check whether dll exports data symbols
# if yes, we suggest user on steps to perform
pexports $out | awk '/DATA/ { print $1}' >$out.data
if test -s $out.data
then
echo
echo Shared library exports data symbols, they are listed \
in \'$out.data\'. For using them in client application, you should mark \
them as __declspec\(dllimport\) in library headers. You can quickly \
find places where these data symbols declared by issuing
echo
echo " grep -f $out.data *.h"
echo
echo in library header directory. Also note that this step is optional, you can postpone \
it until you\'ll get during linking unresolved symbol _imp__\<something\>, where \
\<something\> is one of the symbols listed in $out.data. Read documentation \
\(static2dll_howto.txt\) for more information.
else
rm $out.data
fi
rm $base.def
fi

BIN
TBE/MinGW/bin/addr2line.exe Normal file

Binary file not shown.

BIN
TBE/MinGW/bin/ar.exe Normal file

Binary file not shown.

BIN
TBE/MinGW/bin/as.exe Normal file

Binary file not shown.

BIN
TBE/MinGW/bin/c++.exe Normal file

Binary file not shown.

BIN
TBE/MinGW/bin/c++filt.exe Normal file

Binary file not shown.

BIN
TBE/MinGW/bin/cpp.exe Normal file

Binary file not shown.

BIN
TBE/MinGW/bin/dlltool.exe Normal file

Binary file not shown.

BIN
TBE/MinGW/bin/dllwrap.exe Normal file

Binary file not shown.

BIN
TBE/MinGW/bin/dos2unix.exe Normal file

Binary file not shown.

BIN
TBE/MinGW/bin/drmingw.exe Normal file

Binary file not shown.

976
TBE/MinGW/bin/dsw2mak Normal file
View File

@@ -0,0 +1,976 @@
#!gawk -f
# dsw2mak.awk
#
# An Awk script that generates a unix Makefile from a
# Microsoft Developer Studio workspace file.
#
# Copyright (C) 2001 Jos<6F> Fonseca
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License, http://www.gnu.org/copyleft/gpl.html
# for more details.
#
# Jos<6F> Fonseca <j_r_fonseca@yahoo.co.uk>
#
# Features:
# - generation of GUI applications (including resource files),
# DLLs, console applications and static libraries
# - translations of the most common compiler and linker options
# - conversion of workspace files (.dsw) and all associated
# projects files (.dsp) generating all necessary Makefiles
# - handling of nested !IF, !ELSEIF and !ENDIF maintaining the
# same build configurations as the original project
# - automatic generation of the dependencies
#
# Example:
# gawk -f dsw2mak.awk MyApp.dsw
#
# Notes:
# - Make sure that both this script and the input files are in
# a line ending convention that gawk version in your system
# can handle.
# - If an option is not handled by this script don't edit all
# generate Makefiles by hand. Add support for the option in
# this script and submit your additions to the author.
#
# Changelog (incomplete):
# 2001-02-18: Jos<6F> Fonseca
# Improved linker libraries and options handling.
# Debug output.
# Better handling of custom builds
#
# 2001-02-15: Jos<6F> Fonseca
# Improved C compiler options handling.
# More verbose warning output.
#
# 2001-02-14: Jos<6F> Fonseca
# Added comments to the source code.
#
# check and remove unnecessary quotes from a string
function fixquotes(str) {
if(str ~ /^"[^[:blank:]]+"$/) {
sub(/^"/, "", str);
sub(/"$/, "", str);
}
return str
}
# fixes a path string
function fixpath(path) {
# remove leading and trainling whitespaces
sub(/^[[:blank:]]+/, "", path);
sub(/[[:blank:]]+$/, "", path);
# check and remove unnecessary quotes
path = fixquotes(path)
# change the forward slashes to backslashes
gsub(/\\/, "/", path)
# remove reduntant ./ directories
gsub(/^(\.\/)+/, "", path)
gsub(/^\/(\.\/)+/, "", path)
return path
}
# get the base directory from a path
function basedir(path) {
# remove leading and trainling whitespaces
sub(/^[[:blank:]]+/, "", path);
sub(/[[:blank:]]+$/, "", path);
# remove the quotes
if(path ~ /^".+"$/) {
sub(/^"/, "", path);
sub(/"$/, "", path);
}
# remove the leading path
sub(/(^|[\/\\:])[^\/\\:]*$/, "", path)
# add quotes if needed
if(path ~ /[[:blank:]]/)
path = "\"" path "\""
return path
}
# get the filename from a path
function basefile(path) {
# remove leading and trainling whitespaces
sub(/^[[:blank:]]+/, "", path);
sub(/[[:blank:]]+$/, "", path);
# remove the quotes
if(path ~ /^".+"$/) {
sub(/^"/, "", path);
sub(/"$/, "", path);
}
# remove the trailing path
sub(/^.*[\/\\:]/, "", path)
# add quotes if needed
if(path ~ /[[:blank:]]/)
path = "\"" path "\""
return path
}
# skip lines until matching a given regular expression
# NOTE: not used but it could be eventually handy
function skip(regexp, infile, ret) {
while((ret = getline < infile) == 1 && $0 !~ regexp) {}
return ret
}
# parses a project file (.dsp) specified by 'infile' and generates a makefile to 'outfile'
function parse_dsp(infile, outfile, i) {
print infile
# this specifies verbose debug output
debug = 0
# this specifies a prefix to the binutils and gcc binaries
#prefix = "mingw32-"
prefix = ""
# this specifies the name of the 'rm -f' or equivalent command
rm = "rm -f"
# check for a bad file
if((getline < infile) == -1) {
print infile ": " ERRNO
return
}
# Strip DOS line-endings
gsub(/\r$/, "")
# count the number of lines
inline = 1
# print the Makefile header
print "# Makefile - " basefile(infile) > outfile
print "" > outfile
# this specifies the default name for the dependencies file
dependencies = ".dependencies"
# attemp to get the project name
if(/^# Microsoft Developer Studio Project File/) {
name = gensub(/^# Microsoft Developer Studio Project File - Name="(.*)".*$/, "\\1", "1")
dependencies = name ".dep"
}
# main loop
while((getline < infile) == 1) {
# Strip DOS line-endings
gsub(/\r$/, "")
# increment the number of lines
inline = inline + 1
# catch the target type definition
if(/^# TARGTYPE/) {
if (/[[:space:]]0x0101$/) {
# Win32 (x86) Application
exeflag = 1
dllflag = 0
libflag = 0
}
if (/[[:space:]]0x0102$/) {
# Win32 (x86) Dynamic-Link Library
exeflag = 0
dllflag = 1
libflag = 0
}
if (/[[:space:]]0x0103$/) {
# Win32 (x86) Console Application
exeflag = 1
dllflag = 0
libflag = 0
}
if (/[[:space:]]0x0104$/) {
# Win32 (x86) Static Library
exeflag = 0
dllflag = 0
libflag = 1
}
continue
}
# catch the default configuration definition
if(/^CFG=/) {
print "ifndef CFG" > outfile
print > outfile
print "endif" > outfile
}
# deal with the preprocessor commands
if(/^!/) {
# as GNU make doesn't have the '!ELSEIF' equivalent we have to use nested 'if ... else .. endif' to obtain the same effect
# a stack is used to keep track of the current nested level
if(/^!IF/) {
$0 = gensub(/^!IF[[:space:]]+(.+)[[:space:]]*==[[:space:]]*(.+)$/, "ifeq \\1 \\2", "1")
$0 = gensub(/^!IF[[:space:]]+(.+)[[:space:]]*!=[[:space:]]*(.+)$/, "ifneq \\1 \\2", "1")
print > outfile
stacktop += 1
stack[stacktop] = 1
continue
}
if(/^!ELSE$/) {
print "else"
}
if(/^!ELSEIF/) {
$0 = gensub(/^!ELSEIF[[:space:]]+(.+)[[:space:]]*==[[:space:]]*(.+)$/, "else\nifeq \\1 \\2", "1")
$0 = gensub(/^!ELSEIF[[:space:]]+(.+)[[:space:]]*!=[[:space:]]*(.+)$/, "else\nifneq \\1 \\2", "1")
print > outfile
stack[stacktop] += 1
continue
}
if(/^!ENDIF[[:space:]]*$/) {
for (i = 0; i < stack[stacktop]; i++)
print "endif" > outfile
stacktop -= 1
continue
}
}
# catch the C++ compiler definition
if(/^CPP=/) {
print "CC=" prefix "gcc" > outfile
print "CFLAGS=" > outfile
print "CXX=" prefix "g++" > outfile
print "CXXFLAGS=$(CFLAGS)" > outfile
continue
}
# catch the C++ compiler flags
if(/^# ADD CPP /) {
if (debug)
print infile ":" inline ": " $0
# extract the flags from the line
cflags = $0
sub(/^# ADD CPP /, "", cflags)
split(" " cflags, options, /[[:space:]]+\//)
cflags = ""
for(i in options) {
option = options[i]
# translate the options
# some of the translations effectively remove the option (and its arguments) since there is no translation equivalent
if (option == "") {
} else if(option ~ /^nologo$/) {
# Suppress Startup Banner and Information Messages
option = ""
} else if (option ~ /^W0$/) {
# Turns off all warning messages
option = "-w"
} else if (option ~ /^W[123]$/) {
# Warning Level
option = "-W"
} else if (option ~ /^W4$/) {
# Warning Level
option = "-Wall"
} else if (option ~ /^WX$/) {
# Warnings As Errors
option = "-Werror"
} else if (option ~ /^Gm$/) {
# Enable Minimal Rebuild
option = ""
} else if (option ~ /^GX$/) {
# Enable Exception Handling
option = "-fexceptions"
} else if (option ~ /^Z[d7iI]$/) {
# Debug Info
option = "-g"
} else if (option ~ /^Od$/) {
# Disable Optimizations
option = "-O0"
} else if (option ~ /^O1$/) {
# Minimize Size
option = "-Os"
} else if (option ~ /^O2$/) {
# Maximize Speed
option = "-O2"
} else if (option ~ /^Ob0$/) {
# Disables inline Expansion
option = "-fno-inline"
} else if (option ~ /^Ob1$/) {
# In-line Function Expansion
option = ""
} else if (option ~ /^Ob2$/) {
# auto In-line Function Expansion
option = "-finline-functions"
} else if (option ~ /^Oy$/) {
# Frame-Pointer Omission
option = "-fomit-frame-pointer"
} else if (option ~ /^GZ$/) {
# Catch Release-Build Errors in Debug Build
option = ""
} else if (option ~ /^M[DLT]d?$/) {
# Use Multithreaded Run-Time Library
option = ""
} else if (option ~ /^D/) {
# Preprocessor Definitions
gsub(/^D[[:space:]]*/, "", option)
option = "-D" fixquotes(option)
} else if (option ~ /^I/) {
# Additional Include Directories
gsub(/^I[[:space:]]*/, "", option)
option = "-I" fixpath(option)
} else if (option ~ /^U/) {
# Undefines a previously defined symbol
gsub(/^U[[:space:]]*/, "", option)
option = "-U" fixquotes(option)
} else if (option ~ /^Fp/) {
# Name .PCH File
option = ""
} else if (option ~ /^F[Rr]/) {
# Create .SBR File
option = ""
} else if (option ~ /^YX$/) {
# Automatic Use of Precompiled Headers
option = ""
} else if (option ~ /^FD$/) {
# Generate File Dependencies
option = ""
} else if (option ~ /^c$/) {
# Compile Without Linking
# this option is always present and is already specified in the suffix rules
option = ""
} else if (option ~ /^GB$/) {
# Blend Optimization
option = "-mcpu=pentiumpro -D_M_IX86=500"
} else if (option ~ /^G6$/) {
# Pentium Pro Optimization
option = "-march=pentiumpro -D_M_IX86=600"
} else if (option ~ /^G5$/) {
# Pentium Optimization
option = "-mcpu=pentium -D_M_IX86=500"
} else if (option ~ /^G3$/) {
# 80386 Optimization
option = "-mcpu=i386 -D_M_IX86=300"
} else if (option ~ /^G4$/) {
# 80486 Optimization
option = "-mcpu=i486 -D_M_IX86=400"
} else if (option ~ /^Yc/) {
# Create Precompiled Header
option = ""
} else if (option ~ /^Yu/) {
# Use Precompiled Header
option = ""
} else if (option ~ /^Za$/) {
# Disable Language Extensions
option = "-ansi"
} else if (option ~ /^Ze$/) {
# Enable Microsoft Extensions
print infile ":" inline ": /" option ": Enable Microsoft Extensions option ignored" > "/dev/stderr"
option = ""
} else if (option ~ /^Zm[[:digit:]]+$/) {
# Specify Memory Allocation Limit
option = ""
} else if (option ~ /^Zp1$/) {
# Packs structures on 1-byte boundaries
option = "-fpack-struct"
} else if (option ~ /^Zp(2|4|8|16)?$/) {
# Struct Member Alignment
option = ""
print infile ":" inline ": /" option ": Struct Member Alignment option ignored" > "/dev/stderr"
} else {
print infile ":" inline ": /" option ": C compiler option not implemented" > "/dev/stderr"
option = ""
}
if (option != "") {
if(cflags == "")
cflags = option
else
cflags = cflags " " option
}
}
# change the slashes
gsub(/\\/, "/", cflags)
print "CFLAGS+=" cflags > outfile
if (debug)
print outfile ": " "CFLAGS+=" cflags
continue
}
# catch the linker definition
if(/^LINK32=/) {
if (exeflag)
print "LD=$(CXX) $(CXXFLAGS)" > outfile
if (dllflag)
print "LD=" prefix "dllwrap" > outfile
print "LDFLAGS=" > outfile
continue
}
# catch the linker flags
if(/^# ADD LINK32 /) {
if (debug)
print infile ":" inline ": " $0
# extract the flags from the line
ldflags = $0
sub(/^# ADD LINK32 /, "", ldflags)
split(ldflags, options, /[[:space:]]+\//)
# attempts to get the used libraries to a seperate variable
libs = options[1]
libs = gensub(/([[:alnum:]/\\_-]+)\.lib/, "-l\\1", "g", libs)
delete options[1]
ldflags = ""
for(i in options) {
option = options[i]
# translate the options
# some of the translations effectively remove the option (and its arguments) since there is no translation equivalent
if (option == "") {
} else if (option ~ /^base:/) {
# Base Address
gsub(/^base:/, "--image-base ", option)
} else if (option ~ /^debug$/) {
# Generate Debug Info
option = ""
} else if (option ~ /^dll$/) {
# Build a DLL
dllflag = 1
# remove this option since the DLL output option is handled by the suffix rules
option = ""
} else if (option ~ /^incremental:[[:alpha:]]+$/) {
# Link Incrmentally
option = ""
} else if (option ~ /^implib:/) {
# Name import library
gsub(/^implib:/, "", option)
option = "--implib " fixpath(gensub(/([[:alnum:]_-]+)\.lib/, "lib\\1.a", "g", option))
} else if (option ~ /^libpath:/) {
# Additional Libpath
gsub(/^libpath:/, "", option)
option = "-L" fixpath(option)
} else if (option ~ /^machine:[[:alnum:]]+$/) {
# Specify Target Platform
option = ""
} else if (option ~ /^map/) {
# Generate Mapfile
if (option ~ /^map:/)
gsub(/^map:/, "-Map ", option)
else
option = "-Map " name ".map"
} else if(option ~ /^nologo$/) {
# Suppress Startup Banner and Information Messages
option = ""
} else if (option ~ /^out:/) {
# Output File Name
target = fixpath(gensub(/out:("[^"]+"|[^[:space:]]+).*$/, "\\1", "1", option))
print "TARGET=" target > outfile
# remove this option since the output option is handled by the suffix rules
option = ""
} else if (option ~ /^pdbtype:/) {
# Program Database Storage
option = ""
} else if (option ~ /^subsystem:/) {
# Specify Subsystem
gsub(/^subsystem:/, "-Wl,--subsystem,", option)
} else if (option ~ /^version:[[:digit:].]+$/) {
# Version Information
option = ""
} else {
print infile ":" inline ": /" option ": linker option not implemented" > "/dev/stderr"
option = ""
}
if (option != "") {
if(ldflags == "")
ldflags = option
else
ldflags = ldflags " " option
}
}
# attempt to get the name of the target from the '/out:' option
if (ldflags ~ /\/out:/) { # Output File Name
}
# change the slashes
gsub(/\\/, "/", ldflags)
print "LDFLAGS+=" ldflags > outfile
print "LIBS+=" libs > outfile
if (debug) {
print outfile ": " "LDFLAGS+=" ldflags
print outfile ": " "LIBS+=" libs
}
continue
}
# catch the library archiver definition
if(/^LIB32=/) {
libflag = 1
print "AR=" prefix "ar" > outfile
continue
}
# catch the library archiver flags
if(/^# ADD LIB32 /) {
# extract the flags from the line
arflags = $0
sub(/^# ADD LIB32 /, "", arflags)
# translate the options
gsub(/\/nologo[[:space:]]*/, "", arflags) # Suppress Startup Banner and Information Messages
gsub(/\/machine:[[:alnum:]]+[[:space:]]*/, "", arflags) # Specify Target Platform
# attempt to get the name of the target from the '/out:' option
if (arflags ~ /\/out:/) {
target = fixpath(gensub(/^.*\/out:(".*"|[^[:space:]]+).*$/, "\\1", "1", arflags))
target = basedir(target) "/lib" basefile(gensub(/(\.[^.]*)?$/, ".a", 1, target))
print "TARGET=" target > outfile
# remove this option since the output option is handled differentely
sub(/\/out:(".*"|[^[:space:]]+)/, "", arflags)
}
# change the slashes
gsub(/\\/, "/", arflags)
print "ARFLAGS=rus" > outfile
continue
}
# catch the resource compiler definition
if(/^RSC=/) {
print "RC=" prefix "windres -O COFF" > outfile
continue
}
# handle the begin of the target definition
if(/^# Begin Target$/) {
print "" > outfile
# print the default target name definition
print "ifndef TARGET" > outfile
if(exeflag)
print "TARGET=" name ".exe" > outfile
if(dllflag)
print "TARGET=" name ".dll" > outfile
if(libflag)
print "TARGET=lib" name ".a" > outfile
print "endif" > outfile
print "" > outfile
# print the default target and the suffix rules
print ".PHONY: all" > outfile
print "all: $(TARGET)" > outfile
print "" > outfile
print "%.o: %.c" > outfile
print "\t$(CC) $(CFLAGS) $(CPPFLAGS) -o $@ -c $<" > outfile
print "" > outfile
print "%.o: %.cc" > outfile
print "\t$(CXX) $(CXXFLAGS) $(CPPFLAGS) -o $@ -c $<" > outfile
print "" > outfile
print "%.o: %.cpp" > outfile
print "\t$(CXX) $(CXXFLAGS) $(CPPFLAGS) -o $@ -c $<" > outfile
print "" > outfile
print "%.o: %.cxx" > outfile
print "\t$(CXX) $(CXXFLAGS) $(CPPFLAGS) -o $@ -c $<" > outfile
print "" > outfile
print "%.res: %.rc" > outfile
print "\t$(RC) $(CPPFLAGS) -o $@ -i $<" > outfile
print "" > outfile
# initialize some bookeeping variables
ngroups = 0 # number of groups in the target
nsources = 0 # number of isolated sources in the target
groupflag = 0 # state variable that indicates if we are inside or outside of a group definition
continue
}
# handle the end of a target definition
if(/^# End Target$/) {
# print the sources files definition that includes...
printf "SRCS=" > outfile
# ... the sources groups variables...
for (i = 0; i < ngroups; i++)
printf "$(%s) ", groups[i] > outfile
# ... and isolated sources not included in any group
if (nsources) {
print " \\" > outfile
for (i = 0; i < nsources - 1; i++)
print "\t" sources[i] " \\" > outfile
print "\t" sources[i] > outfile
}
else
print "" > outfile
print "" > outfile
# define the objects automatically from the sources in the Makefile
print "OBJS=$(patsubst %.rc,%.res,$(patsubst %.cxx,%.o,$(patsubst %.cpp,%.o,$(patsubst %.cc,%.o,$(patsubst %.c,%.o,$(filter %.c %.cc %.cpp %.cxx %.rc,$(SRCS)))))))" > outfile
print "" > outfile
# print the target rule, according with the type of target
print "$(TARGET): $(OBJS)" > outfile
if (exeflag)
print "\t$(LD) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)" > outfile
if (dllflag)
print "\t$(LD) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)" > outfile
if (libflag)
print "\t$(AR) $(ARFLAGS) $@ $(OBJS)" > outfile
print "" > outfile
continue
}
# gather groups of source files to put them in diferent variables in the Makefile
if(/^# Begin Group/) {
# get the group name
groupname = gensub(/^# Begin Group "(.*)"$/, "\\1", "1")
# take the variable name as the upper case of the group name and changing the spaces to underscores
groupvarname = toupper(groupname)
gsub(/[[:space:]]/, "_", groupvarname)
# add this information to the groups array
groups[ngroups] = groupvarname
ngroups += 1
# initialize some bookeeping variables
ngsources = 0 # number of sources in this group
# signal that we are inside a group
groupflag = 1
continue
}
if(/^# End Group$/) {
# print the group source variable definition
printf "%s=", groupvarname > outfile
if (ngsources) {
for (i = 0; i < ngsources; i++)
printf " \\\n\t%s", gsources[i] > outfile
}
print "" > outfile
print "" > outfile
# signal that we are outside a group
groupflag = 0
continue
}
if (/^SOURCE=/) {
# get the source file name
source = fixpath(gensub(/^SOURCE=(.*)$/, "\\1", "1"))
# add to the group sources or isolated sources according we are in a group or not
if (groupflag)
{
gsources[ngsources] = source
ngsources += 1
}
else
{
sources[nsources] = source
nsources += 1
}
continue
}
# attempts to handle custom builds definition
if(/^# Begin Custom Build/) {
print infile ":" inline ": " source ": Custom Build" > "/dev/stderr"
# signal we are inside a custom build definition
customflag = 1
ncustomvars = 0
continue
}
if(/^# End Custom Build/) {
# signal we are leaving a custom build definition
customflag = 0
continue
}
if(customflag) {
if (debug)
print infile ": " $0
# MSDS handles customs builds defining a series of variables for the user convenience
# handle their definition ...
if($0 ~ /^IntDir=/) {
gsub(/^IntDir=/, "", $0)
Intdir = fixpath($0)
continue
}
if($0 ~ /^IntPath=/) {
gsub(/^IntPath=/, "", $0)
IntPath = fixpath($0)
continue
}
if($0 ~ /^OutDir=/) {
gsub(/^OutDir=/, "", $0)
OutDir_ = fixpath($0)
OutDir = "."
continue
}
if($0 ~ /^InputDir=/) {
gsub(/^InputDir=/, "", $0)
InputDir = fixpath($0)
continue
}
if($0 ~ /^InputName=/) {
gsub(/^InputName=/, "", $0)
InputName = fixquotes($0)
continue
}
if($0 ~ /^InputPath=/) {
gsub(/^InputPath=/, "", $0)
InputPath = fixpath($0)
continue
}
if($0 ~ /^TargetDir=/) {
gsub(/^TargetDir=/, "", $0)
TargetDir_ = fixpath($0)
TargetDir = "."
continue
}
if($0 ~ /^TargetPath=/) {
gsub(/^TargetPath=/, "", $0)
gsub(TargetDir_, ".", $0)
TargetPath = fixpath($0)
continue
}
# ... and substitute them in the rules
gsub(/\$\(IntDir\)/, IntDir)
gsub(/\$\(IntPath\)/, IntPath)
gsub(/\$\(OutDir\)/, OutDir)
gsub(/\$\(InputDir\)/, InputDir)
gsub(/\$\(InputName\)/, InputName)
gsub(/\$\(InputPath\)/, InputPath)
gsub(/\$\(TargetDir\)/, TargetDir)
gsub(/\$\(TargetPath\)/, TargetPath)
gsub(/\$\(SOURCE\)/, source)
gsub(/"\$\(INTDIR\)"[[:space:]]*/, "")
gsub(/"\$\(OUTDIR\)"[[:space:]]*/, "")
# do a serie of generic actions to convert the rule
gsub(/^ /, "\t")
gsub(/\\/, "/")
gsub(/\/$/, "\\")
gsub(/\.obj/, ".o")
print > outfile
if (debug)
print outfile ": " $0
}
}
# print the 'clean' target rule
print ".PHONY: clean" > outfile
print "clean:" > outfile
print "\t-" rm " $(OBJS) $(TARGET) " dependencies > outfile
print "" > outfile
# print the 'depends' target rule for automatic dependencies generation
print ".PHONY: depends" > outfile
print "depends:" > outfile
print "\t-$(CXX) $(CXXFLAGS) $(CPPFLAGS) -MM $(filter %.c %.cc %.cpp %.cxx,$(SRCS)) > " dependencies> outfile
print "" > outfile
print "-include " dependencies > outfile
print "" > outfile
# close the files
close(outfile)
close(infile)
}
# parses a workpace file (.dsw) specified by 'infile' and generates a makefile to 'outfile'
function parse_dsw(infile, outfile, i)
{
print infile
# print the Makefile header
print "# Makefile - " basefile(infile) > outfile
print "" > outfile
# initialize the number of projects counter
nprojects = 0
# main loop
while((getline < infile) == 1) {
# catch a project definition
if(/^Project:/) {
# increment the project counter
project = nprojects
nprojects++
# extract the project name and filename
project_name[project] = fixpath(gensub(/^Project:[[:blank:]]+(.*)=(.*)[[:blank:]]+-[[:blank:]]+.*$/, "\\1", 1))
project_file[project] = fixpath(gensub(/^Project:[[:blank:]]+(.*)=(.*)[[:blank:]]+-[[:blank:]]+.*$/, "\\2", 1))
# check for a .dsp file extension
if(project_file[project] ~ /\.[Dd][Ss][Pp]$/) {
# create the output filename by renaming the file extension from .dsp to .mak
project_makefile[project] = project_file[project]
sub(/(\.[^.]*)?$/, ".mak", project_makefile[project])
}
else
project_makefile[project] = ""
# initialize the project dependencies
project_dependencies[project] = ""
continue
}
# catch a project dependency marker
if(project && /^{{{$/) {
# read dependencies until the end marker
while((getline < infile) == 1 && !/^}}}$/)
if(/^[[:blank:]]*Project_Dep_Name[[:blank:]]+/)
project_dependencies[project] = project_dependencies[project] " " fixpath(gensub(/^[[:blank:]]*Project_Dep_Name[[:blank:]]+(.*)$/, "\\1", 1))
continue
}
# catch other (perhaps important) section definitions and produce a warning
if(/^[[:alpha:]]+:/)
{
project = 0
print infile ": " gensub(/^([[:alpha:]]+):/, "\\1", 1) ": unknown section" > "/dev/stderr"
}
}
# print the default target rule
print ".PHONY: all" > outfile
printf "all:" > outfile
for(i = 0; i < nprojects; i++)
printf " \\\n\t%s", project_name[i] > outfile
print "" > outfile
print "" > outfile
# print the rules for each project target
for(i = 0; i < nprojects; i++) {
print ".PHONY: " project_name[i] > outfile
print project_name[i] ":" project_dependencies[i] > outfile
if(project_makefile[i] != "") {
if(basedir(project_makefile[i]) == "")
print "\t$(MAKE) -f " project_makefile[i] > outfile
else
print "\t$(MAKE) -C " basedir(project_makefile[i]) " -f " basefile(project_makefile[i]) > outfile
}
print "" > outfile
}
# print the 'clean' target rule
print ".PHONY: clean" > outfile
print "clean:" > outfile
for(i = 0; i < nprojects; i++)
if(project_makefile[i] != "") {
if(basedir(project_makefile[i]) == "")
print "\t$(MAKE) -f " project_makefile[i] " clean" > outfile
else
print "\t$(MAKE) -C " basedir(project_makefile[i]) " -f " basefile(project_makefile[i]) " clean" > outfile
}
print "" > outfile
# print the 'depends' target rule for automatic dependencies generation
print ".PHONY: depends" > outfile
print "depends:" > outfile
for(i = 0; i < nprojects; i++)
if(project_makefile[i] != "") {
if(basedir(project_makefile[i]) == "")
print "\t$(MAKE) -f " project_makefile[i] " depends" > outfile
else
print "\t$(MAKE) -C " basedir(project_makefile[i]) " -f " basefile(project_makefile[i]) " depends" > outfile
}
print "" > outfile
close(outfile)
close(infile)
# parse every project file
for(i = 0; i < nprojects; i++)
if(project_makefile[i] != "") {
if(basedir(infile) == "")
parse_dsp(project_file[i], project_makefile[i])
else
parse_dsp(basedir(infile) "\\" project_file[i], basedir(infile) "\\" project_makefile[i])
}
}
# main program
BEGIN {
print "dsw2mak.awk Generates a Makefile from a .DSW/.DSP file Jose Fonseca"
print ""
# for each argument ...
for (i = 1; i < ARGC; i++) {
infile = ARGV[i]
# determine whether is a workspace or a project file and parse it
if(infile ~ /\.[Dd][Ss][Ww]$/) {
# create the output filename by renaming the filename to Makefile
outfile = infile
sub(/[^\/\\:]+$/, "Makefile", outfile)
parse_dsw(infile, outfile)
} else if(infile ~ /\.[Dd][Ss][Pp]$/) {
# create the output filename by renaming the file extension from .dsp to .mak
outfile = infile
sub(/(\.[^.]*)?$/, ".mak", outfile)
parse_dsp(infile, outfile)
} else {
print infile ": unknown file format" > "/dev/stderr"
}
}
}

BIN
TBE/MinGW/bin/exchndl.dll Normal file

Binary file not shown.

BIN
TBE/MinGW/bin/g++.exe Normal file

Binary file not shown.

BIN
TBE/MinGW/bin/g77.exe Normal file

Binary file not shown.

BIN
TBE/MinGW/bin/gcc.exe Normal file

Binary file not shown.

551
TBE/MinGW/bin/gccbug Normal file
View File

@@ -0,0 +1,551 @@
#!/bin/sh
# Submit a problem report to a GNATS site.
# Copyright (C) 1993, 2000, 2001, 2002 Free Software Foundation, Inc.
# Contributed by Brendan Kehoe (brendan@cygnus.com), based on a
# version written by Heinz G. Seidl (hgs@cygnus.com).
#
# This file is part of GNU GNATS.
#
# GNU GNATS is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
#
# GNU GNATS is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with GNU GNATS; see the file COPYING. If not, write to
# the Free Software Foundation, 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
# The version of this send-pr.
VERSION=3.113
# The submitter-id for your site.
SUBMITTER=net
# The default mail address for PR submissions.
GNATS_ADDR=gcc-gnats@gcc.gnu.org
# The default release for this host.
DEFAULT_RELEASE="3.2.3 (mingw special 20030425-1)"
# The default organization.
DEFAULT_ORGANIZATION=
# What mailer to use. This must come after the config file, since it is
# host-dependent.
# Copied from cvsbug
if [ -f /usr/sbin/sendmail ]; then
MAIL_AGENT="/usr/sbin/sendmail -oi -t"
else
MAIL_AGENT="/usr/lib/sendmail -oi -t"
fi
MAILER=`echo $MAIL_AGENT | sed -e 's, .*,,'`
if [ ! -f "$MAILER" ] ; then
echo "$COMMAND: Cannot file mail program \"$MAILER\"."
echo "$COMMAND: Please fix the MAIL_AGENT entry in the $COMMAND file."
exit 1
fi
# How to read the passwd database.
PASSWD="cat /etc/passwd"
ECHON=bsd
if [ $ECHON = bsd ] ; then
ECHON1="echo -n"
ECHON2=
elif [ $ECHON = sysv ] ; then
ECHON1=echo
ECHON2='\c'
else
ECHON1=echo
ECHON2=
fi
#
if [ -z "$TMPDIR" ]; then
TMPDIR=/tmp
else
if [ "`echo $TMPDIR | grep '/$'`" != "" ]; then
TMPDIR="`echo $TMPDIR | sed -e 's,/$,,'`"
fi
fi
if [ yes = yes ]; then
TEMP0=`mktemp $TMPDIR/poXXXXXX` || exit 1
TEMP=`mktemp $TMPDIR/pXXXXXX` || exit 1
BAD=`mktemp $TMPDIR/pbadXXXXXX` || exit 1
REF=`mktemp $TMPDIR/pfXXXXXX` || exit 1
REMOVE_TEMP="rm -f $TEMP0 $TEMP $BAD $REF"
else
TEMPD=$TMPDIR/pd$$
TEMP0=$TEMPD/po$$
TEMP=$TEMPD/p$$
BAD=$TEMPD/pbad$$
REF=$TEMPD/pf$$
mkdir $TEMPD || exit 1
REMOVE_TEMP="rm -rf $TEMPD"
fi
# find a user name
if [ "$LOGNAME" = "" ]; then
if [ "$USER" != "" ]; then
LOGNAME="$USER"
else
LOGNAME="UNKNOWN"
fi
fi
FROM="$LOGNAME"
REPLY_TO="${REPLY_TO:-${REPLYTO:-$LOGNAME}}"
# Find out the name of the originator of this PR.
if [ -n "$NAME" ]; then
ORIGINATOR="$NAME"
elif [ -f $HOME/.fullname ]; then
ORIGINATOR="`sed -e '1q' $HOME/.fullname`"
else
# Must use temp file due to incompatibilities in quoting behavior
# and to protect shell metacharacters in the expansion of $LOGNAME
$PASSWD | grep "^$LOGNAME:" | awk -F: '{print $5}' | sed -e 's/,.*//' > $TEMP0
ORIGINATOR="`cat $TEMP0`"
rm -f $TEMP0
fi
if [ -n "$ORGANIZATION" ]; then
if [ -f "$ORGANIZATION" ]; then
ORGANIZATION="`cat $ORGANIZATION`"
fi
else
if [ -n "$DEFAULT_ORGANIZATION" ]; then
ORGANIZATION="$DEFAULT_ORGANIZATION"
elif [ -f $HOME/.organization ]; then
ORGANIZATION="`cat $HOME/.organization`"
fi
fi
# If they don't have a preferred editor set, then use
if [ -z "$VISUAL" ]; then
if [ -z "$EDITOR" ]; then
EDIT=vi
else
EDIT="$EDITOR"
fi
else
EDIT="$VISUAL"
fi
# Find out some information.
SYSTEM=`( [ -f /bin/uname ] && /bin/uname -a ) || \
( [ -f /usr/bin/uname ] && /usr/bin/uname -a ) || echo ""`
ARCH=`[ -f /bin/arch ] && /bin/arch`
MACHINE=`[ -f /bin/machine ] && /bin/machine`
COMMAND=`echo $0 | sed -e 's,.*/,,'`
USAGE="Usage: $COMMAND [-PVL] [-t address] [-f filename] [-s severity]
[-c address] [--request-id] [--version]"
REMOVE=
BATCH=
CC=
SEVERITY_C=
while [ $# -gt 0 ]; do
case "$1" in
-r) ;; # Ignore for backward compat.
-t | --to) if [ $# -eq 1 ]; then echo "$USAGE"; $REMOVE_TEMP; exit 1; fi
shift ; GNATS_ADDR="$1"
EXPLICIT_GNATS_ADDR=true
;;
-f | --file) if [ $# -eq 1 ]; then echo "$USAGE"; $REMOVE_TEMP; exit 1; fi
shift ; IN_FILE="$1"
if [ "$IN_FILE" != "-" -a ! -r "$IN_FILE" ]; then
echo "$COMMAND: cannot read $IN_FILE"
$REMOVE_TEMP
exit 1
fi
;;
-b | --batch) BATCH=true ;;
-c | --cc) if [ $# -eq 1 ]; then echo "$USAGE"; $REMOVE_TEMP; exit 1; fi
shift ; CC="$1"
;;
-s | --severity) if [ $# -eq 1 ]; then echo "$USAGE"; $REMOVE_TEMP; exit 1; fi
shift ; SEVERITY_C="$1"
;;
-p | -P | --print) PRINT=true ;;
-L | --list) FORMAT=norm ;;
-l | -CL | --lisp) FORMAT=lisp ;;
--request-id) REQUEST_ID=true ;;
-h | --help) echo "$USAGE"; $REMOVE_TEMP; exit 0 ;;
-V | --version) cat <<EOF
gccbug (GCC) $DEFAULT_RELEASE
Copyright (C) 2002 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
EOF
$REMOVE_TEMP; exit 0 ;;
-*) echo "$USAGE" ; $REMOVE_TEMP; exit 1 ;;
*) echo "$USAGE" ; $REMOVE_TEMP; exit 1
esac
shift
done
# spam does not need to be listed here
CATEGORIES="ada bootstrap c++ c debug fortran java libf2c libgcj libobjc libstdc++ middle-end objc optimization other preprocessor target web"
case "$FORMAT" in
lisp) echo "$CATEGORIES" | \
awk 'BEGIN {printf "( "} {printf "(\"%s\") ",$0} END {printf ")\n"}'
$REMOVE_TEMP
exit 0
;;
norm) l=`echo "$CATEGORIES" | \
awk 'BEGIN {max = 0; } { if (length($0) > max) { max = length($0); } }
END {print max + 1;}'`
c=`expr 70 / $l`
if [ $c -eq 0 ]; then c=1; fi
echo "$CATEGORIES" | \
awk 'BEGIN {print "Known categories:"; i = 0 }
{ printf ("%-'$l'.'$l's", $0); if ((++i % '$c') == 0) { print "" } }
END { print ""; }'
$REMOVE_TEMP
exit 0
;;
esac
ORIGINATOR_C='<name of the PR author (one line)>'
ORGANIZATION_C='<organization of PR author (multiple lines)>'
SYNOPSIS_C='<synopsis of the problem (one line)>'
if [ -z "$SEVERITY_C" ]; then
SEVERITY_C='<[ non-critical | serious | critical ] (one line)>'
fi
PRIORITY_C='<[ low | medium ] (one line)>'
CATEGORY_C='<choose from the top of this file (one line)>'
RELEASE_C='<release number or tag (one line)>'
ENVIRONMENT_C='<machine, os, target, libraries (multiple lines)>'
DESCRIPTION_C='<precise description of the problem (multiple lines)>'
HOW_TO_REPEAT_C='<When reporting a compiler error, preprocessor output must be included>'
FIX_C='<how to correct or work around the problem, if known (multiple lines)>'
# Catch some signals. ($xs kludge needed by Sun /bin/sh)
xs=0
trap '$REMOVE_TEMP; exit $xs' 0
trap 'echo "$COMMAND: Aborting ..."; $REMOVE_TEMP; xs=1; exit' 1 3 13 15
# If they told us to use a specific file, then do so.
if [ -n "$IN_FILE" ]; then
if [ "$IN_FILE" = "-" ]; then
# The PR is coming from the standard input.
if [ -n "$EXPLICIT_GNATS_ADDR" ]; then
sed -e "s;^[Tt][Oo]:.*;To: $GNATS_ADDR;" > $TEMP
else
cat > $TEMP
fi
else
# Use the file they named.
if [ -n "$EXPLICIT_GNATS_ADDR" ]; then
sed -e "s;^[Tt][Oo]:.*;To: $GNATS_ADDR;" $IN_FILE > $TEMP
else
cat $IN_FILE > $TEMP
fi
fi
else
if [ -n "$PR_FORM" -a -z "$PRINT_INTERN" ]; then
# If their PR_FORM points to a bogus entry, then bail.
if [ ! -f "$PR_FORM" -o ! -r "$PR_FORM" -o ! -s "$PR_FORM" ]; then
echo "$COMMAND: can't seem to read your template file (\`$PR_FORM'), ignoring PR_FORM"
sleep 1
PRINT_INTERN=bad_prform
fi
fi
if [ -n "$PR_FORM" -a -z "$PRINT_INTERN" ]; then
cp $PR_FORM $TEMP ||
( echo "$COMMAND: could not copy $PR_FORM" ; xs=1; exit )
else
for file in $TEMP $REF ; do
cat > $file << '__EOF__'
SEND-PR: -*- send-pr -*-
SEND-PR: Lines starting with `SEND-PR' will be removed automatically, as
SEND-PR: will all comments (text enclosed in `<' and `>').
SEND-PR:
SEND-PR: Please consult the GCC manual if you are not sure how to
SEND-PR: fill out a problem report.
SEND-PR: Note that the Synopsis field is mandatory. The Subject (for
SEND-PR: the mail) will be made the same as Synopsis unless explicitly
SEND-PR: changed.
SEND-PR:
SEND-PR: Choose from the following categories:
SEND-PR:
__EOF__
# Format the categories so they fit onto lines.
l=`echo "$CATEGORIES" | \
awk 'BEGIN {max = 0; } { if (length($0) > max) { max = length($0); } }
END {print max + 1;}'`
c=`expr 61 / $l`
if [ $c -eq 0 ]; then c=1; fi
echo "$CATEGORIES" | \
awk 'BEGIN {printf "SEND-PR: "; i = 0 }
{ printf ("%-'$l'.'$l's", $0);
if ((++i % '$c') == 0) { printf "\nSEND-PR: " } }
END { printf "\nSEND-PR:\n"; }' >> $file
cat >> $file << __EOF__
To: $GNATS_ADDR
Subject:
From: $FROM
Reply-To: $REPLYTO
Cc: $CC
X-send-pr-version: $VERSION
X-GNATS-Notify:
>Submitter-Id: $SUBMITTER
>Originator: $ORIGINATOR
>Organization: ${ORGANIZATION-$ORGANIZATION_C}
>Confidential: no
SEND-PR: Leave "Confidential" as "no"; all GCC PRs are public.
>Synopsis: $SYNOPSIS_C
>Severity: $SEVERITY_C
SEND-PR: critical GCC is completely not operational; no work-around known.
SEND-PR: serious GCC is not working properly; a work-around is possible.
SEND-PR: non-critical Report indicates minor problem.
>Priority: $PRIORITY_C
SEND-PR: medium The problem should be solved in the next release.
SEND-PR: low The problem should be solve in a future release.
>Category: $CATEGORY_C
>Class: <[ doc-bug | accepts-illegal | rejects-legal | wrong-code | ice-on-legal-code| ice-on-illegal-code | pessimizes-code | sw-bug | change-request | support ] (one line)>
SEND-PR: doc-bug The documentation is incorrect.
SEND-PR: accepts-illegal GCC fails to reject erroneous code.
SEND-PR: rejects-legal GCC gives an error message for correct code.
SEND-PR: wrong-code The machine code generated by gcc is incorrect.
SEND-PR: ice-on-legal-code GCC gives an Internal Compiler Error (ICE)
SEND-PR: for correct code
SEND-PR: ice-on-illegal-code GCC gives an ICE instead of reporting an error
SEND-PR: pessimizes-code GCC misses an important optimization opportunity
SEND-PR: sw-bug Software bug of some other class than above
SEND-PR: change-request A feature in GCC is missing.
SEND-PR: support I need help with gcc.
>Release: ${DEFAULT_RELEASE-$RELEASE_C}
>Environment:
`[ -n "$SYSTEM" ] && echo System: $SYSTEM`
`[ -n "$ARCH" ] && echo Architecture: $ARCH`
`[ -n "$MACHINE" ] && echo Machine: $MACHINE`
$ENVIRONMENT_C
host: i386-pc-mingw32
build: i386-pc-mingw32
target: i386-pc-mingw32
configured with: ../gcc/configure --with-gcc --with-gnu-ld --with-gnu-as --host=mingw32 --target=mingw32 --prefix=/mingw --enable-threads --disable-nls --enable-languages=c++,f77,objc --disable-win32-registry --disable-shared --enable-sjlj-exceptions
>Description:
$DESCRIPTION_C
>How-To-Repeat:
$HOW_TO_REPEAT_C
>Fix:
$FIX_C
__EOF__
done
fi
if [ "$PRINT" = true -o "$PRINT_INTERN" = true ]; then
cat $TEMP
xs=0; exit
fi
chmod u+w $TEMP
if [ -z "$REQUEST_ID" ]; then
eval $EDIT $TEMP
else
ed -s $TEMP << '__EOF__'
/^Subject/s/^Subject:.*/Subject: request for a customer id/
/^>Category/s/^>Category:.*/>Category: send-pr/
w
q
__EOF__
fi
if cmp -s $REF $TEMP ; then
echo "$COMMAND: problem report not filled out, therefore not sent"
xs=1; exit
fi
fi
#
# Check the enumeration fields
# This is a "sed-subroutine" with one keyword parameter
# (with workaround for Sun sed bug)
#
SED_CMD='
/$PATTERN/{
s|||
s|<.*>||
s|^[ ]*||
s|[ ]*$||
p
q
}'
while [ -z "$REQUEST_ID" ]; do
CNT=0
# 1) Confidential
#
PATTERN=">Confidential:"
CONFIDENTIAL=`eval sed -n -e "\"$SED_CMD\"" $TEMP`
case "$CONFIDENTIAL" in
no) CNT=`expr $CNT + 1` ;;
*) echo "$COMMAND: \`$CONFIDENTIAL' is not a valid value for \`Confidential'." ;;
esac
#
# 2) Severity
#
PATTERN=">Severity:"
SEVERITY=`eval sed -n -e "\"$SED_CMD\"" $TEMP`
case "$SEVERITY" in
""|non-critical|serious|critical) CNT=`expr $CNT + 1` ;;
*) echo "$COMMAND: \`$SEVERITY' is not a valid value for \`Severity'."
esac
#
# 3) Priority
#
PATTERN=">Priority:"
PRIORITY=`eval sed -n -e "\"$SED_CMD\"" $TEMP`
case "$PRIORITY" in
""|low|medium) CNT=`expr $CNT + 1` ;;
high) echo "$COMMAND: \`Priority: high' is reserved for GCC maintainers." ;;
*) echo "$COMMAND: \`$PRIORITY' is not a valid value for \`Priority'."
esac
#
# 4) Category
#
PATTERN=">Category:"
CATEGORY=`eval sed -n -e "\"$SED_CMD\"" $TEMP`
FOUND=
for C in $CATEGORIES
do
if [ "$C" = "$CATEGORY" ]; then FOUND=true ; break ; fi
done
if [ -n "$FOUND" ]; then
CNT=`expr $CNT + 1`
else
if [ -z "$CATEGORY" ]; then
echo "$COMMAND: you must include a Category: field in your report."
else
echo "$COMMAND: \`$CATEGORY' is not a known category."
fi
fi
#
# 5) Class
#
PATTERN=">Class:"
CLASS=`eval sed -n -e "\"$SED_CMD\"" $TEMP`
case "$CLASS" in
""|doc-bug|accepts-illegal|rejects-legal|wrong-code|ice-on-legal-code|ice-on-illegal-code|pessimizes-code|sw-bug|change-request|support) CNT=`expr $CNT + 1` ;;
*) echo "$COMMAND: \`$CLASS' is not a valid value for \`Class'."
esac
#
# 6) Check that synopsis is not empty
#
if grep "^>Synopsis:[ ]*${SYNOPSIS_C}\$" $TEMP > /dev/null
then
echo "$COMMAND: Synopsis must not be empty."
else
CNT=`expr $CNT + 1`
fi
[ $CNT -lt 6 -a -z "$BATCH" ] &&
echo "Errors were found with the problem report."
while true; do
if [ -z "$BATCH" ]; then
$ECHON1 "a)bort, e)dit or s)end? $ECHON2"
read input
else
if [ $CNT -eq 6 ]; then
input=s
else
input=a
fi
fi
case "$input" in
a*)
if [ -z "$BATCH" ]; then
echo "$COMMAND: the problem report remains in $BAD and is not sent."
REMOVE_TEMP="rm -f $TEMP0 $TEMP $REF"
mv $TEMP $BAD
else
echo "$COMMAND: the problem report is not sent."
fi
xs=1; exit
;;
e*)
eval $EDIT $TEMP
continue 2
;;
s*)
break 2
;;
esac
done
done
#
# Make sure the mail has got a Subject. If not, use the same as
# in Synopsis.
#
if grep '^Subject:[ ]*$' $TEMP > /dev/null
then
SYNOPSIS=`grep '^>Synopsis:' $TEMP | sed -e 's/^>Synopsis:[ ]*//'`
ed -s $TEMP << __EOF__
/^Subject:/s/:.*\$/: $SYNOPSIS/
w
q
__EOF__
fi
#
# Remove comments and send the problem report
# (we have to use patterns, where the comment contains regex chars)
#
# /^>Originator:/s;$ORIGINATOR;;
sed -e "
/^SEND-PR:/d
/^>Organization:/,/^>[A-Za-z-]*:/s;$ORGANIZATION_C;;
/^>Confidential:/s;<.*>;;
/^>Synopsis:/s;$SYNOPSIS_C;;
/^>Severity:/s;<.*>;;
/^>Priority:/s;<.*>;;
/^>Category:/s;$CATEGORY_C;;
/^>Class:/s;<.*>;;
/^>Release:/,/^>[A-Za-z-]*:/s;$RELEASE_C;;
/^>Environment:/,/^>[A-Za-z-]*:/s;$ENVIRONMENT_C;;
/^>Description:/,/^>[A-Za-z-]*:/s;$DESCRIPTION_C;;
/^>How-To-Repeat:/,/^>[A-Za-z-]*:/s;$HOW_TO_REPEAT_C;;
/^>Fix:/,/^>[A-Za-z-]*:/s;$FIX_C;;
" $TEMP > $REF
if $MAIL_AGENT < $REF; then
echo "$COMMAND: problem report sent"
xs=0; exit
else
echo "$COMMAND: mysterious mail failure."
if [ -z "$BATCH" ]; then
echo "$COMMAND: the problem report remains in $BAD and is not sent."
REMOVE_TEMP="rm -f $TEMP0 $TEMP $REF"
mv $REF $BAD
else
echo "$COMMAND: the problem report is not sent."
fi
xs=1; exit
fi

BIN
TBE/MinGW/bin/gcov.exe Normal file

Binary file not shown.

BIN
TBE/MinGW/bin/gdb.exe Normal file

Binary file not shown.

BIN
TBE/MinGW/bin/gprof.exe Normal file

Binary file not shown.

BIN
TBE/MinGW/bin/ld.exe Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
TBE/MinGW/bin/mingwm10.dll Normal file

Binary file not shown.

BIN
TBE/MinGW/bin/nm.exe Normal file

Binary file not shown.

BIN
TBE/MinGW/bin/objcopy.exe Normal file

Binary file not shown.

BIN
TBE/MinGW/bin/objdump.exe Normal file

Binary file not shown.

BIN
TBE/MinGW/bin/pexports.exe Normal file

Binary file not shown.

BIN
TBE/MinGW/bin/protoize.exe Normal file

Binary file not shown.

BIN
TBE/MinGW/bin/ranlib.exe Normal file

Binary file not shown.

BIN
TBE/MinGW/bin/readelf.exe Normal file

Binary file not shown.

BIN
TBE/MinGW/bin/redir.exe Normal file

Binary file not shown.

BIN
TBE/MinGW/bin/reimp.exe Normal file

Binary file not shown.

BIN
TBE/MinGW/bin/res2coff.exe Normal file

Binary file not shown.

BIN
TBE/MinGW/bin/size.exe Normal file

Binary file not shown.

BIN
TBE/MinGW/bin/strings.exe Normal file

Binary file not shown.

BIN
TBE/MinGW/bin/strip.exe Normal file

Binary file not shown.

BIN
TBE/MinGW/bin/unix2dos.exe Normal file

Binary file not shown.

Binary file not shown.

BIN
TBE/MinGW/bin/windres.exe Normal file

Binary file not shown.

340
TBE/MinGW/doc/MinGW/COPYING Normal file
View File

@@ -0,0 +1,340 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

View File

@@ -0,0 +1,482 @@
GNU LIBRARY GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1991 Free Software Foundation, Inc.
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the library GPL. It is
numbered 2 because it goes with version 2 of the ordinary GPL.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Library General Public License, applies to some
specially designated Free Software Foundation software, and to any
other libraries whose authors decide to use it. You can use it for
your libraries, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if
you distribute copies of the library, or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link a program with the library, you must provide
complete object files to the recipients so that they can relink them
with the library, after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
Our method of protecting your rights has two steps: (1) copyright
the library, and (2) offer you this license which gives you legal
permission to copy, distribute and/or modify the library.
Also, for each distributor's protection, we want to make certain
that everyone understands that there is no warranty for this free
library. If the library is modified by someone else and passed on, we
want its recipients to know that what they have is not the original
version, so that any problems introduced by others will not reflect on
the original authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that companies distributing free
software will individually obtain patent licenses, thus in effect
transforming the program into proprietary software. To prevent this,
we have made it clear that any patent must be licensed for everyone's
free use or not licensed at all.
Most GNU software, including some libraries, is covered by the ordinary
GNU General Public License, which was designed for utility programs. This
license, the GNU Library General Public License, applies to certain
designated libraries. This license is quite different from the ordinary
one; be sure to read it in full, and don't assume that anything in it is
the same as in the ordinary license.
The reason we have a separate public license for some libraries is that
they blur the distinction we usually make between modifying or adding to a
program and simply using it. Linking a program with a library, without
changing the library, is in some sense simply using the library, and is
analogous to running a utility program or application program. However, in
a textual and legal sense, the linked executable is a combined work, a
derivative of the original library, and the ordinary General Public License
treats it as such.
Because of this blurred distinction, using the ordinary General
Public License for libraries did not effectively promote software
sharing, because most developers did not use the libraries. We
concluded that weaker conditions might promote sharing better.
However, unrestricted linking of non-free programs would deprive the
users of those programs of all benefit from the free status of the
libraries themselves. This Library General Public License is intended to
permit developers of non-free programs to use free libraries, while
preserving your freedom as a user of such programs to change the free
libraries that are incorporated in them. (We have not seen how to achieve
this as regards changes in header files, but we have achieved it as regards
changes in the actual functions of the Library.) The hope is that this
will lead to faster development of free libraries.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, while the latter only
works together with the library.
Note that it is possible for a library to be covered by the ordinary
General Public License rather than by this special one.
GNU LIBRARY GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library which
contains a notice placed by the copyright holder or other authorized
party saying it may be distributed under the terms of this Library
General Public License (also called "this License"). Each licensee is
addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also compile or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
c) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
d) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the source code distributed need not include anything that is normally
distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Library General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,4 @@
The library libiberty.a and its associated header falls under the GNU
General Public License. Please read the file COPYING if you intend to
distribute applications linking against this library. It is your
responsibility to understand and comply with the conditions of the GPL

View File

@@ -0,0 +1,231 @@
<html>
<head>
<title>
a2dll: An utility (to help) to convert static library into Win32 DLL
</title>
</head>
<body>
<h1>
a2dll: An utility (to help) to convert static library into Win32 DLL
</h1>
<h2>
Synopsis
</h2>
<p>
a2dll is shell script (see <a href="#requirements">requirements</a>) to
automotize process of converting existing static libraries (produced
by gnu-win32 tools, of course) into DLL. First of all, yes it's possible:
if you have binary static distribution of some library (i.e. library
itself and its headers), that's all you need to convert it to DLL and
use in your programs. Read <a href="static2dll_howto.txt">HOWTO</a> for
underlying magic. So, you may not waste time if you need DLL: just
grab existing static distribution and convert. Also, you may use it to
build Win32 DLL of your library. Also, until GNU libtool will allow
seamless building of Win32 DLLs, you may build static lib (what
libtool of course supports) and then convert it to DLL.
<blockquote>
<tt>
a2dll &lt;static_lib> [-o &lt;dll_name>] [&lt;linker_flags>] [--relink]
</tt>
</blockquote>
where:
<dl>
<dt>
<tt>&lt;static_lib></tt>
</dt>
<dd>
Static library you want to convert
</dd>
<dt>
<tt>-o &lt;dll_name></tt>
</dt>
<dd>
Name of resulting dll. If not given, three first chars of input
name are stripped and <tt>.a</tt> suffix replaced with <tt>.dll</tt> .
So, from '<tt>libfoo.a</tt>' you'll get '<tt>foo.dll</tt>'.
</dd>
<dt>
<tt>&lt;linker_flags></tt>
</dt>
<dd>
Linker flags:
<ul>
<li>Use '<tt>-s</tt>' to get library without debugging symbols and information.
<li>Use '<tt>--driver-name=&lt;name></tt>' to link library with specified
linker (well, compiler, to be precise). For example, for C++ library use
<tt>--driver-name=g++</tt> .
<li>You should list all libraries on which your library depends with
<tt>-l</tt> switches and directories they are reside in with <tt>-L</tt>
switches. For example, if your library uses PCRE library you just built and
not yet installed, use something like <tt>-L../pcre -lpcre</tt>
</ul>
</dd>
<dt>
<tt>--relink</tt>
</dt>
<dd>
Skip exploding library stage (see below). Use this flag to continue
process after some error occured.
</dd>
</dl>
</p>
<h2>
Performing
</h2>
<p>
a2dll works in following way:
<ol>
<li>If you did not specify <tt>--relink</tt> option,
explodes source library under newly-created <tt>.dll</tt> subdirectory.
<li>Links all resulting objects into DLL with exporting all non-static
symbols. On this stage, link errors
(such as underfined symbols) may occur. In such case, a2dll terminates
and all linker messages are available in '<tt>ld.err</tt>' file. You
should correct errors (mostly by finding out additional
dependecies, but sometimes by deleting 'superfluos' objects under .dll)
and re-run a2dll with all the options you gave it before,
plus new dependencies, plus <tt>--relink</tt> flag. You may need to
repeat this several times.
<li>Renames original static library with suffix <tt>.static</tt> .
<li>Creates import library for produced DLL with the name of original
static library.
<li>Check whether DLL exports data symbols. If no, congratulations,
you've done. However, if some present, it lists all of them in file
'<tt>&lt;dll_name>.data</tt>' . Presense of such symbols generally
means that you should patch library's headers to mark those symbols
as dll-imported. But don't hurry with that, first, do following:
<ol>
<li>Look into <tt>&lt;dll_name>.data</tt> file. If all what you see
is something like '<tt>internal_counter_of_bogons</tt>' or
'<tt>_ksdauso</tt>', don't worry - those symbols are hardly part of
external interface of the library.
<li>If all you need is to link your application against that
library, try it. If it succeeds, congratulation.
<li>Only if above is failed, or you are going to distribute produced
library, so you need to be sure that everything is ok, proceed with
marking symbols in headers. Read <a href="static2dll_howto.txt">Static2DLL
HOWTO</a> for more information on suggested ways of doing this. Use
'<tt>grep -f <tt>&lt;dll_name>.data</tt> *.h</tt>' command to find
out where offending symbols defined in library headers.
</ol>
</ol>
</p>
<h2>
Examples
</h2>
<p>
Since converting static libraries to DLLs is not fully automated and
formal process, some experience with it is required. Learing
by example is known to be one of the efficient way of communicating
experince, so I would like to provide some realistic examples of
converting statics to DLLs with the help of a2dll.
</p>
<h3>
Zlib
</h3>
<p>
Build libz.a . Now, run '<tt>a2dll libz.a</tt>'. It builds cleanly,
but warns us about data symbols. Let's look at them:
<blockquote>
<pre>
inflate_mask
z_errmsg
</pre>
</blockquote>
What they could be. The first one is probably some internal variable,
while second is probably array of error messages. As we know, zlib
provides functional way of getting error messages, something like. So
our hypothesis is that job's done. Let's prove it:
'<tt>grep -f z.dll.data zlib.h</tt>'. Yes, we're right: no mentioning
of those symbols in interface header file.
</p>
<h3>
libstdc++
</h3>
<p>
I've got an idea to DLLize libstdc++ coming with my mingw32 distribution.
'<tt>a2dll "libstdc++.a"</tt>'. Note that we don't use
<tt>--driver-name=g++</tt> - that option need to be used when we link
something <i>against</i> libstdc++ . But when we link libstdc++
<i>itself</i>, we need libc (whatever it is in mingw32), nothing else.
But, process aborts due to linker errors. <tt>ld.err</tt> tells us:
<blockquote>
<pre>
strerror.o(.text+0x303): undefined reference to `sys_nerr'
vfork.o(.text+0x7): undefined reference to `fork'
waitpid.o(.text+0x15): undefined reference to `wait'
</pre>
</blockquote>
Well, strerror, vfork, waitpid are libc functions, what they do in
libstdc++? Probably, stubs, delete them and
'<tt>a2dll "libstdc++.a" --relink</tt>'. Of course,
<tt>stdc++.dll.data</tt> is here. Looking into it, I may tell you
that everything starting with '<tt>__ti&lt;digit></tt>' is RTTI
internal data structures and everything starting with
'<tt>_vt$</tt>' is virtual tables (use c++filt if in doubt),
you can leave them alone.
(If so, why I don't filter them? Because "you can leave them alone"
is hypothesis for now, I haven't linked too much C++ libraries to
be sure). From the rest, there's stuff starting
with '<tt>_IO_</tt>'. That's probably some internal variables, let's
don't do anything about them, unless we'll be forced to. Than, as
c++filt shows, there're some static members of templated classes. Darkness.
Forget for now. Than, there's '<tt>io_defs__</tt>'. Does your C++ application
reference something like that? Mine not. So, what is left? Our four
happy friends, <tt>cin, cout, cerr,</tt> and <tt>clog</tt>. Do mark them as
__declspec(dllimport) in <tt>iostream.h</tt>.
</p>
<h3>
Some C++ library
</h3>
<p>
Suppose we have following file:
<pre>
#include &lt;iostream.h>
void foo()
{
cout&lt;&lt;"hi!"&lt;&lt;endl;
}
</pre>
and want to turn it into DLL. Create static liba.a from it. Now,
'<tt>a2dll liba.a --driver-name=g++</tt>'. Well, our DLL contains
single function, why then it complains about data symbols? Oh, it's
those stupid RTTI structures. Next time, compile with <tt>-fno-rtti</tt> unless
you really need it, ok? Ditto for <tt>-fno-exceptions</tt> .
</p>
<h2>
<a name="requirements">
Requirements
</h2>
<p>
a2dll requires POSIX shell (<tt>sh</tt>) to run. It is developed and
tested with <tt>ash</tt> from
<a href="http://pw32.sourceforge.net">PW32</a> distribution. Additionally,
a2dll requires following utilities to perform its tasks:
<ul>
<li>GNU fileutils: mkdir, mv, rm
<li>GNU textutils: wc
<li>GNU grep
<li>GNU awk
<li>GNU binutils: dllwrap, dlltool (and the rest of binutils and gcc, of course)
<li>pexports, an utility to dump symbols exported by dll. You'll need a
version 0.43 or above, capable of distinguishing between code and data symbols, as one
from <a href="http://www.is.lg.ua/~paul/devel/binutils.html">here</a>.
</ul>
</p>
<hr noshade>
<i><a href="mailto:Paul.Sokolovsky@technologist.com">Paul Sokolovsky</a></i>
</body>
</html>

View File

@@ -0,0 +1,141 @@
How to build Win32 Dynamic-Loading Library (DLL) from existing static library
-----------------------------------------------------------------------------
-------
NOTE: To perform steps below, you'll need contemparary dlltool, for
example from Mumit Khan's gcc-2.95.2 packages.
-------
This document describes step-by-step procedure of building Win32 DLL from
static library. It suitable for both your own and third-party (i.e. ones
which you know, and would like to, little about) libs. However, for your
own libraries you may adopt more handy and adequate method (exporting all
symbols, as done here, may be not the best solution). However, procedure
given here describes easiest and fastest way if what you want is just
create proper DLL and forget about it. This documets assumes that
you have, or will, read documentation for Mumit Khan's dllwrappers
tools (dllwrap & dlltool utilities).
Before proceeding with description of process, some notes about
distinction of DLLs and usual *nix-style shared libraries (.so, referred
as SO below) (read also if you don't have experience with .so):
[Once again note that there's a big gap between abstract information
below and specific practical steps which follow; if you want to fill
that gap, read standard documentation.]
Theory
------
1. Usually, compilation of objects for shared libraries requires different
set of compiler options comparing to static counterparts. For example,
many systems require -fpic flag to generate position-independent code.
However, for Win32, both static libs and DLLs are created from the same
set of objects. Despite this little advantage, DLLs have following big
disadvantage:
2. Once have been created, shared libraries require no additional fuzz
for usage. When so-using executable is loaded, every reference to
so-symbol gets fixed up to point directly to SO. Win32 has different
system: every executable importing DLL has special section, .idata, to hold
pointers to imported symbols. During loading, OS loader fills this section
with actual info. And application is supposed, when needed DLL-symbol, first
lookup its pointer in .idata, and only then have access by that pointer,
As you see, for DLL-imported symbols, additional level of indirection is
required. This stems probably from dark times of real-mode 16-bit Windows,
working on 8086 processor lacking virtual memory. Having all import-related
stuff in one single place facilated runtime relocation, which was needed
to effictively manage memory there. So or other, but it is that way.
So, as you see, special compiler support required to compile client of
DLL (note strange symmetry - *nix require special support to compile library,
while Win32 - to compile client. Former is better, I agree).
3. As was said before, with SO you use library just as you would static
version. This is not so for Win32. Win32 DLL is self-contained executable,
not supposed to be linked against. Instead, client is linked with special
auxilary library, called 'import library' or 'implib'. Implib contains
information to properly layout .idata section to be filled in by OS loader
with information about DLL.
Building DLL from existing static library
-----------------------------------------
We assume that you already build static lib, which we will call 'libfoo.a'.
However, building yourself is not requirement, to perform these instructions,
you don't needed sources of library - only library itself and its headers.
1. Fisrt step would be to create export definition file (or just def). You
can do this directly from library:
dlltool libfoo.a --export-all-symbols --output-def foo.def
2. Now, we can create DLL itself. This may be done by two ways: 1) link
dummy file referencing each symbol in libfoo.a (created by script acting on
output from 'nm libfoo.a') against libfoo.a (so, each foo's object for
sure will be in foo.dll) or 2) exploding library and linking all its objects
together. I consider second way cleaner and show it:
mkdir tmp
cp libfoo.a tmp/
cd tmp
ar x libfoo.a
dllwrap *.o --def ../foo.def -o ../foo.dll [usual -l libraries here]
cd ..
3. Let's create implib. If you want totally transparent transition from
static to DLL, call it 'libfoo.a'. However, if you want to keep destinction,
'libfoo.dll.a' is good:
dlltool --def foo.def --ouput-lib libfoo.dll.a
4. Now grep foo.def for entries containing 'DATA'. If there's none -
congratulations, your library uses functional-only interface and you've done.
Else, most unpleasant work left - patch headers to include dllimport tag.
If you want to do it once-and-for-all (you should), do following:
a) make something like 'dl_import.h' and put there:
-----
#if !defined(STATIC) && defined(_WIN32)
#define _DL_IMPORT __delcspec(dllimport)
#else
#define _DL_IMPORT
#endif
-----
, if you want to use DLL by default (note that you will need to compile
library itself with STATIC defined), or
-----
#if defined(DLL) && defined(_WIN32)
#define _DL_IMPORT __delcspec(dllimport)
#else
#define _DL_IMPORT
#endif
-----
, if you want to include -DDLL each time you compile DLL client.
b) for each def symbol having DATA attribute, find header where its declared
as extern. If that header doesn't have '#include "dl_import.h"' at the top,
add it. Put '_DL_IMPORT' in front of 'extern' (strictly speaking, position
matters and proper place is after both extern and type, but for data
declaration above works also (at least for me)). For example, if it was
extern void *(*my_malloc)(int sz);
becoming
_DL_IMPORT extern void *(*my_malloc)(int sz);
will suffice. Procedd with next symbol.
However, if you're lazy for that, you may stretch the pleasure and mark
symbol as _DL_IMPORT only whenever you encounter it in undefined symbol
error during linking of client.
5. That's all! Now, just compile client either as usually or with -DDLL,
and link either as usually or with -lfoo.dll .
Paul.Sokolovsky@technologist.com
1999-08-28

View File

@@ -0,0 +1,29 @@
* Copyright (c) 1994, 1995 Benjamin Lin.
* Copyright (c) 1998, Bernd Johannes Wuebben
* Copyright (c) 1998, Christian Wurll
* All rights reserved.
*
* This software is free and not encumbered by a restrictive licence such
* as the GPL in the following sense:
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice in the documentation and/or other materials provided with
* the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
* IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@@ -0,0 +1,245 @@
Content-type: text/html
<HTML><HEAD><TITLE>Manpage of dos2unix</TITLE>
</HEAD><BODY>
<H1>dos2unix</H1>
Section: User Commands (1)<BR>Updated: dos2unix v3.0<BR><A HREF="#index">Index</A>
<A HREF="http://localhost/cgi-bin/man/man2html">Return to Main Contents</A><HR>
<P>
<A NAME="lbAB">&nbsp;</A>
<H2>NAME</H2>
<P>
dos2unix - DOS/MAC to UNIX text file format converter
<P>
<A NAME="lbAC">&nbsp;</A>
<H2>SYNOPSYS</H2>
<P>
dos2unix [options] [-c convmode] [-o file ...] [-n infile outfile ...]
<P>
Options:
<P>
[-hkqV] [--help] [--keepdate] [--quiet] [--version]
<P>
<A NAME="lbAD">&nbsp;</A>
<H2>DESCRIPTION</H2>
<P>
<P>
This manual page documents dos2unix, the program that converts plain text
files in DOS/MAC format to UNIX format.
<P>
<A NAME="lbAE">&nbsp;</A>
<H2>OPTIONS</H2>
<P>
The following options are available:
<DL COMPACT>
<DT><B>-h --help</B>
<DD>
Print online help.
<P>
<DT><B>-k --keepdate</B>
<DD>
Keep the date stamp of output file same as input file.
<P>
<DT><B>-q --quiet</B>
<DD>
Quiet mode. Suppress all warning and messages.
<P>
<DT><B>-V --version</B>
<DD>
Prints version information.
<P>
<DT><B>-c --convmode convmode</B>
<DD>
Sets conversion mode. Simulates dos2unix under SunOS.
<P>
<DT><B>-o --oldfile file ...</B>
<DD>
Old file mode. Convert the file and write output to it. The program
default to run in this mode. Wildcard names may be used.
<P>
<DT><B>-n --newfile infile outfile ...</B>
<DD>
New file mode. Convert the infile and write output to outfile. File names
must be given in pairs and wildcard names should NOT be used or you WILL
lost your files.
<P>
</DL>
<A NAME="lbAF">&nbsp;</A>
<H2>EXAMPLES</H2>
<P>
<P>
Get input from stdin and write output to stdout.
<DL COMPACT>
<DT><DD>
<B>dos2unix</B>
<P>
</DL>
<P>
Convert and replace a.txt. Convert and replace b.txt.
<DL COMPACT>
<DT><DD>
<B>dos2unix a.txt b.txt</B>
<DT><DD>
<B>dos2unix -o a.txt b.txt</B>
<P>
</DL>
<P>
Convert and replace a.txt in ASCII conversion mode.
Convert and replace b.txt in ISO conversion mode.
Convert c.txt from Mac to Unix ascii format.
<DL COMPACT>
<DT><DD>
<B>dos2unix a.txt -c iso b.txt</B>
<DT><DD>
<B>dos2unix -c ascii a.txt -c iso b.txt</B>
<DT><DD>
<B>dos2unix -c mac a.txt b.txt</B>
<P>
</DL>
<P>
Convert and replace a.txt while keeping original date stamp.
<DL COMPACT>
<DT><DD>
<B>dos2unix -k a.txt</B>
<DT><DD>
<B>dos2unix -k -o a.txt</B>
<P>
</DL>
<P>
Convert a.txt and write to e.txt.
<DL COMPACT>
<DT><DD>
<B>dos2unix -n a.txt e.txt</B>
<P>
</DL>
<P>
Convert a.txt and write to e.txt, keep date stamp of e.txt same as a.txt.
<DL COMPACT>
<DT><DD>
<B>dos2unix -k -n a.txt e.txt </B>
<P>
</DL>
<P>
Convert and replace a.txt. Convert b.txt and write to e.txt.
<DL COMPACT>
<DT><DD>
<B>dos2unix a.txt -n b.txt e.txt</B>
<DT><DD>
<B>dos2unix -o a.txt -n b.txt e.txt</B>
<P>
</DL>
<P>
Convert c.txt and write to e.txt. Convert and replace a.txt.
Convert and replace b.txt. Convert d.txt and write to f.txt.
<DL COMPACT>
<DT><DD>
<B>dos2unix -n c.txt e.txt -o a.txt b.txt -n d.txt f.txt</B>
<P>
</DL>
<A NAME="lbAG">&nbsp;</A>
<H2>DIAGNOSTICS</H2>
<P>
<A NAME="lbAH">&nbsp;</A>
<H2>BUGS</H2>
<P>
The program does not work properly under MSDOS in stdio processing mode.
If you know why is that so, please tell me.
<P>
<A NAME="lbAI">&nbsp;</A>
<H2>AUTHORS</H2>
<P>
Benjamin Lin -
<B>&lt;<A HREF="mailto:blin@socs.uts.edu.au">blin@socs.uts.edu.au</A>&gt;</B>
<P>
<P>
Bernd Johannes Wuebben (mac2unix mode)
<B>&lt;<A HREF="mailto:wuebben@kde.org">wuebben@kde.org</A>&gt;</B>
<P>
<P>
<A NAME="lbAJ">&nbsp;</A>
<H2>MISCELLANY</H2>
<P>
Tested environment:
<DL COMPACT>
<DT><DD>
Linux 1.2.0 with GNU C 2.5.8
<DT><DD>
SunOS 4.1.3 with GNU C 2.6.3
<DT><DD>
MS-DOS 6.20 with Borland C++ 4.02
</DL>
<P>
Suggestions and bug reports are welcome.
<P>
<A NAME="lbAK">&nbsp;</A>
<H2>SEE ALSO</H2>
<A HREF="http://localhost/cgi-bin/man/man2html?1+unix2dos">unix2dos</A>(1) <A HREF="http://localhost/cgi-bin/man/man2html?1+mac2unix">mac2unix</A>(1)
<P>
<P>
<HR>
<A NAME="index">&nbsp;</A><H2>Index</H2>
<DL>
<DT><A HREF="#lbAB">NAME</A><DD>
<DT><A HREF="#lbAC">SYNOPSYS</A><DD>
<DT><A HREF="#lbAD">DESCRIPTION</A><DD>
<DT><A HREF="#lbAE">OPTIONS</A><DD>
<DT><A HREF="#lbAF">EXAMPLES</A><DD>
<DT><A HREF="#lbAG">DIAGNOSTICS</A><DD>
<DT><A HREF="#lbAH">BUGS</A><DD>
<DT><A HREF="#lbAI">AUTHORS</A><DD>
<DT><A HREF="#lbAJ">MISCELLANY</A><DD>
<DT><A HREF="#lbAK">SEE ALSO</A><DD>
</DL>
<HR>
This document was created by
<A HREF="http://localhost/cgi-bin/man/man2html">man2html</A>,
using the manual pages.<BR>
Time: 11:51:18 GMT, December 04, 2002
</BODY>
</HTML>

View File

@@ -0,0 +1,340 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

View File

@@ -0,0 +1,482 @@
GNU LIBRARY GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1991 Free Software Foundation, Inc.
59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
[This is the first released version of the library GPL. It is
numbered 2 because it goes with version 2 of the ordinary GPL.]
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
Licenses are intended to guarantee your freedom to share and change
free software--to make sure the software is free for all its users.
This license, the Library General Public License, applies to some
specially designated Free Software Foundation software, and to any
other libraries whose authors decide to use it. You can use it for
your libraries, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if
you distribute copies of the library, or if you modify it.
For example, if you distribute copies of the library, whether gratis
or for a fee, you must give the recipients all the rights that we gave
you. You must make sure that they, too, receive or can get the source
code. If you link a program with the library, you must provide
complete object files to the recipients so that they can relink them
with the library, after making changes to the library and recompiling
it. And you must show them these terms so they know their rights.
Our method of protecting your rights has two steps: (1) copyright
the library, and (2) offer you this license which gives you legal
permission to copy, distribute and/or modify the library.
Also, for each distributor's protection, we want to make certain
that everyone understands that there is no warranty for this free
library. If the library is modified by someone else and passed on, we
want its recipients to know that what they have is not the original
version, so that any problems introduced by others will not reflect on
the original authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that companies distributing free
software will individually obtain patent licenses, thus in effect
transforming the program into proprietary software. To prevent this,
we have made it clear that any patent must be licensed for everyone's
free use or not licensed at all.
Most GNU software, including some libraries, is covered by the ordinary
GNU General Public License, which was designed for utility programs. This
license, the GNU Library General Public License, applies to certain
designated libraries. This license is quite different from the ordinary
one; be sure to read it in full, and don't assume that anything in it is
the same as in the ordinary license.
The reason we have a separate public license for some libraries is that
they blur the distinction we usually make between modifying or adding to a
program and simply using it. Linking a program with a library, without
changing the library, is in some sense simply using the library, and is
analogous to running a utility program or application program. However, in
a textual and legal sense, the linked executable is a combined work, a
derivative of the original library, and the ordinary General Public License
treats it as such.
Because of this blurred distinction, using the ordinary General
Public License for libraries did not effectively promote software
sharing, because most developers did not use the libraries. We
concluded that weaker conditions might promote sharing better.
However, unrestricted linking of non-free programs would deprive the
users of those programs of all benefit from the free status of the
libraries themselves. This Library General Public License is intended to
permit developers of non-free programs to use free libraries, while
preserving your freedom as a user of such programs to change the free
libraries that are incorporated in them. (We have not seen how to achieve
this as regards changes in header files, but we have achieved it as regards
changes in the actual functions of the Library.) The hope is that this
will lead to faster development of free libraries.
The precise terms and conditions for copying, distribution and
modification follow. Pay close attention to the difference between a
"work based on the library" and a "work that uses the library". The
former contains code derived from the library, while the latter only
works together with the library.
Note that it is possible for a library to be covered by the ordinary
General Public License rather than by this special one.
GNU LIBRARY GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License Agreement applies to any software library which
contains a notice placed by the copyright holder or other authorized
party saying it may be distributed under the terms of this Library
General Public License (also called "this License"). Each licensee is
addressed as "you".
A "library" means a collection of software functions and/or data
prepared so as to be conveniently linked with application programs
(which use some of those functions and data) to form executables.
The "Library", below, refers to any such software library or work
which has been distributed under these terms. A "work based on the
Library" means either the Library or any derivative work under
copyright law: that is to say, a work containing the Library or a
portion of it, either verbatim or with modifications and/or translated
straightforwardly into another language. (Hereinafter, translation is
included without limitation in the term "modification".)
"Source code" for a work means the preferred form of the work for
making modifications to it. For a library, complete source code means
all the source code for all modules it contains, plus any associated
interface definition files, plus the scripts used to control compilation
and installation of the library.
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running a program using the Library is not restricted, and output from
such a program is covered only if its contents constitute a work based
on the Library (independent of the use of the Library in a tool for
writing it). Whether that is true depends on what the Library does
and what the program that uses the Library does.
1. You may copy and distribute verbatim copies of the Library's
complete source code as you receive it, in any medium, provided that
you conspicuously and appropriately publish on each copy an
appropriate copyright notice and disclaimer of warranty; keep intact
all the notices that refer to this License and to the absence of any
warranty; and distribute a copy of this License along with the
Library.
You may charge a fee for the physical act of transferring a copy,
and you may at your option offer warranty protection in exchange for a
fee.
2. You may modify your copy or copies of the Library or any portion
of it, thus forming a work based on the Library, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) The modified work must itself be a software library.
b) You must cause the files modified to carry prominent notices
stating that you changed the files and the date of any change.
c) You must cause the whole of the work to be licensed at no
charge to all third parties under the terms of this License.
d) If a facility in the modified Library refers to a function or a
table of data to be supplied by an application program that uses
the facility, other than as an argument passed when the facility
is invoked, then you must make a good faith effort to ensure that,
in the event an application does not supply such function or
table, the facility still operates, and performs whatever part of
its purpose remains meaningful.
(For example, a function in a library to compute square roots has
a purpose that is entirely well-defined independent of the
application. Therefore, Subsection 2d requires that any
application-supplied function or table used by this function must
be optional: if the application does not supply it, the square
root function must still compute square roots.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Library,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Library, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote
it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Library.
In addition, mere aggregation of another work not based on the Library
with the Library (or with a work based on the Library) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may opt to apply the terms of the ordinary GNU General Public
License instead of this License to a given copy of the Library. To do
this, you must alter all the notices that refer to this License, so
that they refer to the ordinary GNU General Public License, version 2,
instead of to this License. (If a newer version than version 2 of the
ordinary GNU General Public License has appeared, then you can specify
that version instead if you wish.) Do not make any other change in
these notices.
Once this change is made in a given copy, it is irreversible for
that copy, so the ordinary GNU General Public License applies to all
subsequent copies and derivative works made from that copy.
This option is useful when you wish to copy part of the code of
the Library into a program that is not a library.
4. You may copy and distribute the Library (or a portion or
derivative of it, under Section 2) in object code or executable form
under the terms of Sections 1 and 2 above provided that you accompany
it with the complete corresponding machine-readable source code, which
must be distributed under the terms of Sections 1 and 2 above on a
medium customarily used for software interchange.
If distribution of object code is made by offering access to copy
from a designated place, then offering equivalent access to copy the
source code from the same place satisfies the requirement to
distribute the source code, even though third parties are not
compelled to copy the source along with the object code.
5. A program that contains no derivative of any portion of the
Library, but is designed to work with the Library by being compiled or
linked with it, is called a "work that uses the Library". Such a
work, in isolation, is not a derivative work of the Library, and
therefore falls outside the scope of this License.
However, linking a "work that uses the Library" with the Library
creates an executable that is a derivative of the Library (because it
contains portions of the Library), rather than a "work that uses the
library". The executable is therefore covered by this License.
Section 6 states terms for distribution of such executables.
When a "work that uses the Library" uses material from a header file
that is part of the Library, the object code for the work may be a
derivative work of the Library even though the source code is not.
Whether this is true is especially significant if the work can be
linked without the Library, or if the work is itself a library. The
threshold for this to be true is not precisely defined by law.
If such an object file uses only numerical parameters, data
structure layouts and accessors, and small macros and small inline
functions (ten lines or less in length), then the use of the object
file is unrestricted, regardless of whether it is legally a derivative
work. (Executables containing this object code plus portions of the
Library will still fall under Section 6.)
Otherwise, if the work is a derivative of the Library, you may
distribute the object code for the work under the terms of Section 6.
Any executables containing that work also fall under Section 6,
whether or not they are linked directly with the Library itself.
6. As an exception to the Sections above, you may also compile or
link a "work that uses the Library" with the Library to produce a
work containing portions of the Library, and distribute that work
under terms of your choice, provided that the terms permit
modification of the work for the customer's own use and reverse
engineering for debugging such modifications.
You must give prominent notice with each copy of the work that the
Library is used in it and that the Library and its use are covered by
this License. You must supply a copy of this License. If the work
during execution displays copyright notices, you must include the
copyright notice for the Library among them, as well as a reference
directing the user to the copy of this License. Also, you must do one
of these things:
a) Accompany the work with the complete corresponding
machine-readable source code for the Library including whatever
changes were used in the work (which must be distributed under
Sections 1 and 2 above); and, if the work is an executable linked
with the Library, with the complete machine-readable "work that
uses the Library", as object code and/or source code, so that the
user can modify the Library and then relink to produce a modified
executable containing the modified Library. (It is understood
that the user who changes the contents of definitions files in the
Library will not necessarily be able to recompile the application
to use the modified definitions.)
b) Accompany the work with a written offer, valid for at
least three years, to give the same user the materials
specified in Subsection 6a, above, for a charge no more
than the cost of performing this distribution.
c) If distribution of the work is made by offering access to copy
from a designated place, offer equivalent access to copy the above
specified materials from the same place.
d) Verify that the user has already received a copy of these
materials or that you have already sent this user a copy.
For an executable, the required form of the "work that uses the
Library" must include any data and utility programs needed for
reproducing the executable from it. However, as a special exception,
the source code distributed need not include anything that is normally
distributed (in either source or binary form) with the major
components (compiler, kernel, and so on) of the operating system on
which the executable runs, unless that component itself accompanies
the executable.
It may happen that this requirement contradicts the license
restrictions of other proprietary libraries that do not normally
accompany the operating system. Such a contradiction means you cannot
use both them and the Library together in an executable that you
distribute.
7. You may place library facilities that are a work based on the
Library side-by-side in a single library together with other library
facilities not covered by this License, and distribute such a combined
library, provided that the separate distribution of the work based on
the Library and of the other library facilities is otherwise
permitted, and provided that you do these two things:
a) Accompany the combined library with a copy of the same work
based on the Library, uncombined with any other library
facilities. This must be distributed under the terms of the
Sections above.
b) Give prominent notice with the combined library of the fact
that part of it is a work based on the Library, and explaining
where to find the accompanying uncombined form of the same work.
8. You may not copy, modify, sublicense, link with, or distribute
the Library except as expressly provided under this License. Any
attempt otherwise to copy, modify, sublicense, link with, or
distribute the Library is void, and will automatically terminate your
rights under this License. However, parties who have received copies,
or rights, from you under this License will not have their licenses
terminated so long as such parties remain in full compliance.
9. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Library or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Library (or any work based on the
Library), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Library or works based on it.
10. Each time you redistribute the Library (or any work based on the
Library), the recipient automatically receives a license from the
original licensor to copy, distribute, link with or modify the Library
subject to these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
11. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Library at all. For example, if a patent
license would not permit royalty-free redistribution of the Library by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Library.
If any portion of this section is held invalid or unenforceable under any
particular circumstance, the balance of the section is intended to apply,
and the section as a whole is intended to apply in other circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
12. If the distribution and/or use of the Library is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Library under this License may add
an explicit geographical distribution limitation excluding those countries,
so that distribution is permitted only in or among countries not thus
excluded. In such case, this License incorporates the limitation as if
written in the body of this License.
13. The Free Software Foundation may publish revised and/or new
versions of the Library General Public License from time to time.
Such new versions will be similar in spirit to the present version,
but may differ in detail to address new problems or concerns.
Each version is given a distinguishing version number. If the Library
specifies a version number of this License which applies to it and
"any later version", you have the option of following the terms and
conditions either of that version or of any later version published by
the Free Software Foundation. If the Library does not specify a
license version number, you may choose any version ever published by
the Free Software Foundation.
14. If you wish to incorporate parts of the Library into other free
programs whose distribution conditions are incompatible with these,
write to the author to ask for permission. For software which is
copyrighted by the Free Software Foundation, write to the Free
Software Foundation; we sometimes make exceptions for this. Our
decision will be guided by the two goals of preserving the free status
of all derivatives of our free software and of promoting the sharing
and reuse of software generally.
NO WARRANTY
15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Libraries
If you develop a new library, and you want it to be of the greatest
possible use to the public, we recommend making it free software that
everyone can redistribute and change. You can do so by permitting
redistribution under these terms (or, alternatively, under the terms of the
ordinary General Public License).
To apply these terms, attach the following notices to the library. It is
safest to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least the
"copyright" line and a pointer to where the full notice is found.
<one line to give the library's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
version 2 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
Library General Public License for more details.
You should have received a copy of the GNU Library General Public
License along with this library; if not, write to the Free
Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
MA 02111-1307, USA
Also add information on how to contact you by electronic and paper mail.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the library, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the
library `Frob' (a library for tweaking knobs) written by James Random Hacker.
<signature of Ty Coon>, 1 April 1990
Ty Coon, President of Vice
That's all there is to it!

View File

@@ -0,0 +1,417 @@
<html>
<head>
<title>Dr. Mingw</title>
</head>
<body>
<p>Dr. Mingw is a <i>Just-in-Time (JIT)</i> debugger. When the application throws
an unhandled exception, Dr. Mingw attaches itself to the application and collects
information about the exception, using the available debugging information.</p>
<h1>Features</h1>
<p>Dr. Mingw can read debugging information in <em>Stabs</em> formats &#151; generated
by the Gnu C/C++ Compiler, and in a PDB file &#151; generated by the Microsoft
Visual C++ Compiler.</p>
<p>Windows NT/2000 platform is supported, as well as Windows 95/98. On older Windows
versions though, the IMAGEHLP.DLL isn't included or it's a rather old version.
Dr. Mingw doesn't require it, but relies upon it to resolve symbols in modules
compiled by the Microsoft tools. See <a href="#imagehlp">The
IMAGEHLP.DLL Saga</a> for more information. </p>
<h1>Download</h1>
<p>Dr. Mingw is now part of <a
href="http://sourceforge.net/project/showfiles.php?group_id=2435&release_id=115457">mingw-utils</a>.</p>
<h1>Installation</h1>
<p>If you didn't download the self-installing package, to install enter</p>
<blockquote>
<pre><b>drmingw -i</b></pre>
</blockquote>
<p>Dr. Mingw will register itself as the JIT debugger by writting into the
system registry. On Windows NT/2000 make sure you have Administrator
rights. See <a href="#jit">Enabling Just-in-Time (JIT) Debugging</a> for
more information.</p>
<p>If the installation is sucessful, the following message box should appear:</p>
<p align="center"><img src="install.gif" alt="installation dialog"/></p>
<p>To enable other options they must be set them allong with the <b>-i</b>
option. For example,</p>
<blockquote>
<pre><b>drmingw -i -v </b></pre>
</blockquote>
<p>If you still have trouble installing, edit the included<b>
drmingw.reg</b> file to reflect the <b>drmingw.exe</b> executable path and
load it on the system registry.</p>
<h1>Usage</h1>
<p>You can test Dr. Mingw by running the sample<b> test.exe</b>. Depending
of your Windows version, you'll see a familiar dialog:</p>
<p align="center"><img src="exception-nt.gif" alt="Windows general protection fault dialog"/></p>
<p>If you request to debug the program, Dr. Mingw will attach to the
faulting application, collect information about the exception, and display
the dialog</p>
<p align="center"><img src="sample.gif" alt="sample report"/></p>
<p>To resolve the addresses it's necessary to compile the application with
debugging information. In case of address is in a DLL with no debugging
information, it will resolve to the precedent exported symbol.</p>
<h1>Command Line Options</h1>
<p>The Dr. Mingw command line uses the following syntax:</p>
<pre>
<b>drmingw </b>[<b>-h | --help</b>] [<b>-V | --version</b>] [<b>-i | --install</b>] [<b>-a | --auto</b>] [<b>-u | --uninstall</b>]
[<b>-p</b> <i>pid</i> | <b>--process-id=</b><i>pid</i>] [<b>-e</b> <i>event</i> | <b>--event=</b><i>event</i>]
[<b>-v | --verbose</b>]
</pre>
<p>The following table describes the Dr. Mingw command-line options. All
comand-line options are case-sensitive. </p>
<table width="78%" summary="command-line options">
<tr>
<th align=left width=10%>Option</th>
<th align=left width=25%>&nbsp;</th>
<th align=left width=65%>Action</th>
</tr>
<tr>
<td width=10%>
<pre><b>-h</b></pre>
</td>
<td width=25%>
<pre><b>--help</b></pre>
</td>
<td width=65%>Print help and exit </td>
</tr>
<tr>
<td width=10%>
<pre><b>-V</b></pre>
</td>
<td width=25%>
<pre><b>--version</b></pre>
</td>
<td width=65%>Print version and exit</td>
</tr>
<tr>
<td width=10%>
<pre><b>-i</b></pre>
</td>
<td width=25%>
<pre><b>--install</b></pre>
</td>
<td width=65%>Install as the default JIT debugger</td>
</tr>
<tr>
<td width=10%>
<pre><b>-a</b></pre>
</td>
<td width=25%>
<pre><b>--auto</b></pre>
</td>
<td width=65%>Automatically start (used with <b>-i</b> | <b>--install</b>)</td>
</tr>
<tr>
<td width=10%>
<pre><b>-u</b></pre>
</td>
<td width=25%>
<pre><b>--uninstall</b></pre>
</td>
<td width=65%>Uninstall</td>
</tr>
<tr>
<td width=10%>
<pre><b>-p</b> <i>pid</i></pre>
</td>
<td width=25%>
<pre><b>--process-id=</b><i>pid</i></pre>
</td>
<td width=65%>Attach to the process with the given identifier</td>
</tr>
<tr>
<td width=10%>
<pre><b>-e</b> <i>event</i></pre>
</td>
<td width=25%><pre><b>--event=</b><i>event</i></pre></td>
<td width=65%>Signal an event after process is attached</td>
</tr>
<tr>
<td width=10%>
<pre><b>-v</b></pre>
</td>
<td width=25%>
<pre><b>--verbose</b></pre>
</td>
<td width=65%>Verbose output</td>
</tr>
</table>
<h1><a name="exchndl"></a>The EXCHNDL.DLL</h1>
<h2>Introduction</h2>
<p>Although internally Dr. Mingw behaves much like a debugger, from the
outside it is like a standalone exception handler. But for its own
debugging purposes, Dr. Mingw has a internal exception handler that is
completly seperate from the main code.</p>
<p>This exception handler resides in <b>exchndl.c</b>. When
<b>drmingw.exe</b> is loaded, the code in <b>exchndl.c</b> is automatically
executed (by the gcc static constructor/destructor mechanism) and registers
itself as a exception handler.</p>
<p>This exception handler is much lighter than Dr. Mingw debugging system
because it doesn't have to deal with interprocess communication. The
exception handling routine runs in the same process context of the faulting
application (<b>drmingw</b>, in this case).</p>
<h2>Using ExcHndl for you own purposes</h2>
<p>If you incorporate ExcHndl in you own programs, especially those that
you release to others, you can have almost the same exception information
that you would get with Dr. Mingw, but with no need of the end user to have
Dr. Mingw installed.</p>
<p>You can use ExcHndl in two ways:</p>
<ul>
<li>linking <b>exchndl.o</b> and <b>libbfd.a</b> with your program objects</li>
<li>linking <b>exchndl.o</b> and <b>libfd.a</b> in the
<b>EXCHNDL.DLL</b> and dinamically loading it at run-time. This can be
done by linking just <b>exchndl2.o</b> or explicitly calling
<i>LoadLibrary(&quot;exchndl.dll&quot;)</i></li>
</ul>
<p>The latter method is preferred because you have smaller executables and
don't need to link the BFD library in all builds. The application wont fail
if the <b>EXCHNDL.DLL</b> is missing.</p>
<h2>Example</h2>
<p>The sample<b> test.exe</b> application uses the second method above.
Copy <b>EXCHNDL.DLL</b> to executable directory. When you run it, even
before general protection fault dialog box appears, it's written to the
<b>test.RPT</b> file a report of the fault.</p>
<p>Here is how <b>test.RPT</b> should look like:</p>
<pre>
-------------------
Error occured on Sunday, May 7, 2000 at 20:22:03.
C:\home\jrfonseca\drmingw\src\test.exe caused an Access Violation in module C:\WINDOWS\system32\msvcrt.dll Writing to location 00000008.
Registers:
eax=00003039 ebx=00000064 ecx=00000008 edx=0244fec0 esi=00401211 edi=0244fec0
eip=78027470 esp=0244fcd8 ebp=0244fea8 iopl=0 nv up ei pl nz na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=0038 gs=0000 efl=00010202
Call stack:
78027470 C:\WINDOWS\system32\msvcrt.dll:78027470 wscanf
7802544B C:\WINDOWS\system32\msvcrt.dll:7802544B sscanf
00401241 C:\home\jrfonseca\drmingw\src\test.exe:00401241 YetAnotherFunction //C/home/jrfonseca/drmingw/src/test.cxx:14
00401272 C:\home\jrfonseca\drmingw\src\test.exe:00401272 MyWonderfulFunction //C/home/jrfonseca/drmingw/src/test.cxx:19
004012A9 C:\home\jrfonseca\drmingw\src\test.exe:004012A9 main //C/home/jrfonseca/drmingw/src/test.cxx:24
004011C1 C:\home\jrfonseca\drmingw\src\test.exe:004011C1
004011EB C:\home\jrfonseca\drmingw\src\test.exe:004011EB
77E87903 C:\WINDOWS\system32\KERNEL32.dll:77E87903 SetUnhandledExceptionFilter
</pre>
<h1>Appendix</h1>
<h2><a name="jit"></a>Enabling Just-in-Time (JIT) Debugging</h2>
<p><em>[Taken from Using Microsoft Debuggers of the April 2000 Platform SDK.]</em></p>
<p>There are a variety of application errors which will cause Windows
NT/Windows 2000 a to terminate the application. The most common kinds of
errors are deadlocks and access violations. From the operating systems
point of view, these are all simply unhandled exceptions.</p>
<p>When an application error occurs, Windows searches for an exception
handler. If it does not find an exception handler, the system verifies that
the application is not currently being debugged and considers the exception
to be unhandled. At this point, there are three possible responses:</p>
<ul>
<li>Windows can end the process immediately.</li>
<li>Windows can freeze the process and start a user-mode debugger. This
debugger can then be used to examine the application.</li>
<li>Windows can run a debugging tool which will create a memory dump
file of the application's memory space, and then end the process.</li>
</ul>
<p>The debugging tool which is used to debug the application or write the
dump file is called <I>Just-in-Time (JIT) Debugger</I>, or the
<i>post-mortem debugger</i>.</p>
<p>The default JIT debugger is Dr. Watson. When the application throws
an unhandled exception, Dr. Watson attaches itself to the application and
generates a crash dump file. After it creates the crash dump file, Dr.
Watson closes the application and exits.</p>
<p>Any user-mode debugging tool can be selected as the JIT debugger:</p>
<ul>
<li>To change the JIT debugger to WinDbg, run <b>windbg -I</b>. When
WinDbg is the JIT debugger, WinDbg will be activated whenever an
application crashes. See WinDbg Command Line Options for details.</li>
<li>To change the JIT debugger to NTSD, you must edit the registry.
When NTSD is the JIT debugger, NTSD will be activated whenever an
application crashes.</li>
<li>To change the JIT debugger back to Dr. Watson, run <b>drwtsn32
-i</b>. When Dr. Watson is the JIT debugger, a memory dump file will
be written to disk if an application crashes. See Dr. Watson Command
Line Options for details.</li>
</ul>
<p>Only a system administrator can alter the JIT settings.</p>
<p>If a JIT debugger has been installed, you can deliberately break into
the debugger from a user-mode application by calling the <b>DebugBreak</b>
function.</p>
<h3>Editing the Registry</h3>
<p>The Just-in-Time debugging settings are stored in the registry, under
<b>\\HKEY_LOCAL_MACHINE\Software\Microsoft\Windows&nbsp;NT\CurrentVersion\AeDebug\</b>.
The two relevant keys in this directory are <b>Debugger</b> and
<b>Auto</b>.</p>
<p>The <b>Debugger</b> key's value shows the name of the debugger specified
to analyze application errors. The <b>Auto</b> key is either zero or
one.</p>
<p>When an unhandled application error occurs, Windows checks to see if the
<b>Debugger</b> and <b>Auto</b> keys exist.</p>
<p>If the <b>Auto</b> key equals zero and the <b>Debugger</b> value
contains the name of a valid debugger (such as WinDbg or NTSD), the message
box will have two buttons: <b>OK</b> and <b>Cancel</b>. If the <b>OK</b>
button is pressed, the application is terminated. If the <b>Cancel</b>
button is pressed, the debugger specified in the <b>Debugger</b> key is
started.</p>
<p>If the <b>Auto</b> key equals zero, but the <b>Debugger</b> key value is
empty, the message box will have only an <b>OK</b> button and no debugger
will start.</p>
<p>If the <b>Auto</b> key equals one, no message box appears. The debugger
referred to in the <b>Debugger</b> key is automatically started.</p>
<p><b>Setting Dr. Watson as the JIT debugger (default):</b></p>
<pre>
Debugger = "drwtsn32 -p %ld -e %ld -g"
Auto = 1
</pre>
<p><b>Setting WinDbg as the JIT debugger:</b></p>
<pre>
Debugger = "WinDbg -p %ld -e %ld"
Auto = 1
</pre>
<p><b>Setting NTSD as the JIT debugger:</b></p>
<pre>
Debugger = "NTSD -p %ld -e %ld -g"
Auto = 1
</pre>
<p>In these examples, -<b>p&nbsp;%ld</b> specifies the process ID that NTSD
will debug, -<b>e&nbsp;%ld</b> provides the event that caused the
exception, and -<b>g</b> causes the debugger to skip the initial
breakpoint. (Dr.&nbsp;Watson ignores the -<b>g</b> option.)</p>
<h2><a name="imagehlp"></a>The IMAGEHLP.DLL Saga</h2>
<p><em>[Taken from several Bugslayer articles of MSJ.]</em></p>
<p>The IMAGEHLP.DLL symbol engine first appeared in Windows NT<4E> 4.0. The
beta Windows NT 5.0 SDK had new parts of IMAGEHLP.H that dealt with source
and line information. In the meantime, the November 1998 Platform SDK
showed and the IMAGEHLP.DLL that shipped with it supported the new source
and line handling. There are several different versions of IMAGEHLP.DLL.
The only one that does not support the new source and line information is
the original Windows NT 4.0 version. </p>
<p>The IMAGEHLP.DLL version 5.00.1678.1 dynamically links to MSPDB50.DLL.
It first tries to load MSDBI.DLL, and if that is not found it will load
MSPDB50.DLL, so it works with both Visual C++<2B> 5.0 and 6.0. To use it with
Visual C++ 6.0, copy MSPDB50.DLL to MSPDB60.DLL. If you want to get symbols
from the field, you will have to compile with CodeView<65> symbols and use
.DBG files to get them. Keep in mind that MSPDB50.DLL, like MSDBI.DLL, is
not redistributable. </p>
<p>The IMAGEHLP.DLL version 5.00.1878.1, which comes with the Windows 2000
Beta 2 Platform SDK, hard links against MSDBI.DLL instead of dynamically
loading MSPDB50.DLL as in earlier versions to read PDB files. The problem
is that MSDBI.DLL is not redistributable.</p>
<p>IMAGEHLP.DLL now uses DEBUGHLP.DLL.</p>
<p>If you want IMAGEHLP.DLL, it's available in:</p>
<ul>
<li>
Platform SDK
</li>
<li>
WinDBG Debugger
</li>
<li>
Windows 2000
</li>
</ul>
<h1>Suggested Reading</h1>
<ul>
<li> <a
href="http://www.microsoft.com/msj/0197/exception/exception.htm">A
Crash Course on the Depths of Win32 Structured Exception Handling, MSJ
January 1997</a> </li>
<li> <a
href="http://www.microsoft.com/msj/0497/hood/hood0497.htm">MSJEXHND -
Part 1, Under the Hood, MSJ April 1997</a></li>
<li> <a
href="http://www.microsoft.com/msj/0597/hood0597.htm">MSJEXHND -
Part 2, Under the Hood, MSJ May 1997</a></li>
<li><a
href=http://www.microsoft.com/msj/0898/bugslayer0898.htm>Bugslayer,
MSJ, August 1998</a></li>
<li> <a
href="http://msdn.microsoft.com/library/techart/msdn_debug.htm"> The
Win32 Debugging Application Programming Interface</a></li>
</ul>
</body>
</html>
<!-- vim: set ai ts=4 sw=4 noet syntax=pyhtml: -->

View File

@@ -0,0 +1,6 @@
REGEDIT4
[HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\AeDebug]
"Auto"="0"
"Debugger"="C:\\home\\jrfonseca\\\\drmingw\\bin\\drmingw.exe -p %ld -e %ld"

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View File

@@ -0,0 +1,20 @@
/* exchndl2.cxx
*
* A portable way to load the EXCHNDL.DLL on startup.
*
* Jose Fonseca
*/
#include <windows.h>
class ExceptionHandler
{
public:
ExceptionHandler()
{
LoadLibrary("exchndl.dll");
}
};
static ExceptionHandler gExceptionHandler; // global instance of class

View File

@@ -0,0 +1,44 @@
/* test-c.c
*
* A sample C program to demonstrate the symbolic capabilities
* of Dr.MinGW.
*
* Jose Fonseca
*/
#include <stdio.h>
void YetAnotherFunction(int i)
{
int k;
#if 0
/* Other ways to cause a GPF */
*(int *)i = 5;
__asm ("int $3");
(*((void (*)(void)) 0x12345678))();
#endif
sscanf("12345", "%i", (int *) (k=i));
}
struct AStructType
{
int AnArray[2];
};
void MyWonderfulFunction(int AnInteger, double ADouble, int AnArray[4], char * AString, enum {a,b,c} AnEnum, struct AStructType AStruct, void (*AFunction)(void))
{
YetAnotherFunction( 8 );
}
void ASimpleFunction(void) {}
int main(int argc, char *argv[])
{
struct AStructType AStruct = {{10, 3}};
int AnArray[4] = {4,3,2,1};
MyWonderfulFunction( 4, 5.6, AnArray, "Hello" , 1, AStruct, ASimpleFunction);
return 0;
}

Binary file not shown.

View File

@@ -0,0 +1,36 @@
/* test-c.c
*
* A sample C++ program to test Dr.MinGW.
*
* Jose Fonseca
*/
#include <stdio.h>
typedef char * cp;
void YetAnotherFunction( int i, double j, char * pszString )
{
int k;
#if 0
/* Other ways to cause a GPF */
*(int *)i = 5;
__asm ("int $3");
(*((void (*)(void)) 0x12345678))();
#endif
sscanf("12345", "%i", (int *) (k=i));
}
void MyWonderfulFunction( int i, float j )
{
YetAnotherFunction( i * 2, j, "Hello" );
}
int main()
{
MyWonderfulFunction( 4, float(5.6) );
return 0;
}

Binary file not shown.

View File

@@ -0,0 +1,2 @@
Anders Norlander <anorland@hem2.passagen.se>
Paul Sokolovsky <Paul.Sokolovsky@technologist.com>

View File

@@ -0,0 +1,340 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

View File

@@ -0,0 +1,38 @@
PEXPORTS 0.43 README
============================================
PEXPORTS is a program to extract exported symbols from a PE image
(executable). It can perform a simple check on the size of the
arguments of the exported functions, provided there is a header with
prototypes for the functions. This is useful when you want the
decorated function names for functions using the stdcall calling
convention. GCC is used to do the preprocessing so it must be in your
path.
Note that the mingw32 version uses ';' as path separator,
while the cygwin version uses ':'.
Command line options:
=====================
-h <header> parse header
-o print function ordinals
-p <preprocessor> set preprocessor
-v verbose mode
Header files are searched for in the following directories:
1. Current directory
2. Directories in C_INCLUDE_PATH
3. Directories in CPLUS_INCLUDE_PATH
4. Directories in PATH
NOTE: The header parser is *very* primitive, it only tries to find
function prototypes and check the number of arguments a function
expects. It is NOT a complete C parser, there are probably many
conditions when it will fail (especially complex parameter types),
although I it works fine for me. Please report bugs or send me a
patch.
Pexports, Copyright (C) 1998 Anders Norlander
This program has ABSOLUTELY NO WARRANTY; This is free software, and you are
welcome to redistribute it under certain conditions; see COPYING
for details.

View File

@@ -0,0 +1,68 @@
This is a simple port of DJGPP's redir utility for those who're stuck with
braindead COMMAND/CMD shells on windows32 that cannot redirect standard
error correctly.
Here's the documentation provided with DJGPP's redir utility (also
provided in the .zip file):
redir
DOS, in its many flavors and versions, lacks a decent I/O redirection
mechanism. Sure, it's got < and > and >>, but what about error
messages? Lots of people ask, "How do you send those error messages to
a file?" Well, you use a program like redir.
redir is basically a program that manipulates the standard file
descriptors by copying them, closing and opening them, etc. Once it
has the file descriptors where it wants them, it runs your program,
which inherits the changed descriptors. Thus, redir has nearly
complete control over the input and output of your program.
It also allows you to view the exit code of the program, and the
elapsed time of the program, by supplying the appropriate options on
the command line.
Note that redir is built with command-line expansion and response
files disabled, so as to allow the application to control that
themselves. This means that you can't use those features to provide
redir's options or the command name, but if you use them for the
command's options, the command will do the expansion if it wants to.
The exit code of redir is 1 if it exits on its own accord, else it
returns the same error code as the program it runs.
Usage: redir [-i file] [-o file] [-oa file] [-e file] [-ea file] [-eo]
[-oe] [-x] command [args . . .]
-i file
Redirect stdandard input from file
-o file
Redirect standard output to file
-oa file
Append standard output to file
-e file
Redirect standard error to file
-ea file
Append standard error to file
-eo
Redirect standard error to standard output
-oe
Redirect standard output to standard error
-x
Print the exit code of the command after it exits. If the exit
code is 0..255, it is printed as is. If it is not, the low byte
(0..255) is printed in decimal and the whole value is also
printed in hex.
Options are processed in the order they are encountered. Thus, "-o foo
-eo" means "redirect output to foo, then redirect errors there also",
whereas "-eo -o foo" means "send errors to where output was going,
then move output to foo".
Examples:
To redirect errors to a file:
redir -e errors.lst command ...
To redirect output to a file, and errors through a pipe:
redir -eo -o prog.out command ... | pipe

View File

@@ -0,0 +1,62 @@
README for reimp
================
* Overview
`reimp' is a tool to convert Microsoft's new-style (short) import
libraries to import libraries for win32 ports of GNU tools (mingw32,
cygwin).
`reimp' reads an MS import library and writes all imports to the
corresponding .DEF file(s) that it feeds to `dlltool' that creates the
import library.
* Invocation
Usage: reimp [options] IMPLIB
Options:
-s, --dump-symbols dump symbols to stdout
-d, --only-def only create .def files
-c, --keep-case keep case in lib*.a file names
--dlltool <name> use <name> for dlltool
--as <name> use <name> for assembler
The `--dump-symbols' option makes `reimp' use a quick method for
finding imported symbols and sending the names of found symbols to
stdout. If the input library contain non-imported symbols they will be
listed as well. The output symbols will have all decoration preserved
(i.e '_' will prefix most symbols), so if you feed it to dlltool you
should strip leading underscores. For example
echo EXPORTS > imp.def
reimp imp.lib | sed 's/_//' >> imp.def
dlltool -k --def imp.def --output-lib libimp.a --dllname imp.dll
The `--only-def' option makes `reimp' stop after generating the .DEF
file(s).
By default `reimp' converts all output library names to lower-case. By
using the `keep-case' option `reimp' will use exactly the case of the
DLL imported from when creating an import library. KERNEL32.dll will
generate libKERNEL32.a and not libkernel32.a as it would be default.
* Notes on mixed libraries
If an input library contain regular objects (non-imports, i.e code and
data) `reimp' will write out those objects unless you specify one of
the `--only-def' and `--dump-symbols' options. You probably want to
include those objects as well in the generated library. `reimp'
doesn't do that automatically so you have to do it manually using
`ar', like this
reimp imp.lib # this generates several .o or .obj files.
ar rcs libimp.a *.obj # add them to library
* Contact information
URL: http://www.acc.umu.se/~anorland/gnu-win32/
Anders Norlander <anorland@hem2.passagen.se>

View File

@@ -0,0 +1,40 @@
RES2COFF : a binary resource to COFF object format converter
First of all understand this :
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRENTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAMED. This includes but is not limited to warrenties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Second, should you reuse it, I'd really appretiate a reference to this
software. Blessings (if the program is useful to you), why not. Blamings,
none.
Now how to use it:
res2coff [-v] -i <resource file> -o <object file>
Both the resource and the object file have to be fully qualified and include
the extension. I never assume anything about files.
the -v flag will turn on a verbose mode which will show you a
short recap of all resources found in the resource file.
Revision history:
v1.00 First 'working' version using Jacob Navia's lccwin32
v1.10 Ported to the Minimalist GNUWIN32 with the win32 headers
from lccwin32, modified to pack system structures under GCC
v1.20 Sorts the string tables found and now passes the tests
in RCL 1.6.3
Enjoy
Pedro A. Aranda
paag@tid.es

View File

@@ -0,0 +1,23 @@
Copyright (c) 1994, 1995 Benjamin Lin.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
notice in the documentation and/or other materials provided with
the distribution.
THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@@ -0,0 +1,236 @@
Content-type: text/html
<HTML><HEAD><TITLE>Manpage of unix2dos</TITLE>
</HEAD><BODY>
<H1>unix2dos</H1>
Section: User Commands (1)<BR>Updated: unix2dos v2.2<BR><A HREF="#index">Index</A>
<A HREF="http://localhost/cgi-bin/man/man2html">Return to Main Contents</A><HR>
<P>
<A NAME="lbAB">&nbsp;</A>
<H2>NAME</H2>
<P>
unix2dos - UNIX to DOS text file format converter
<P>
<A NAME="lbAC">&nbsp;</A>
<H2>SYNOPSYS</H2>
<P>
unix2dos [options] [-c convmode] [-o file ...] [-n infile outfile ...]
<P>
Options:
<P>
[-hkqV] [--help] [--keepdate] [--quiet] [--version]
<P>
<A NAME="lbAD">&nbsp;</A>
<H2>DESCRIPTION</H2>
<P>
<P>
This manual page documents dos2unix, the program that converts text
files in UNIX format to DOS format.
<P>
<A NAME="lbAE">&nbsp;</A>
<H2>OPTIONS</H2>
<P>
The following options are available:
<DL COMPACT>
<DT><B>-h --help</B>
<DD>
Print online help.
<P>
<DT><B>-k --keepdate</B>
<DD>
Keep the date stamp of output file same as input file.
<P>
<DT><B>-q --quiet</B>
<DD>
Quiet mode. Suppress all warning and messages.
<P>
<DT><B>-V --version</B>
<DD>
Prints version information.
<P>
<DT><B>-c --convmode convmode</B>
<DD>
Sets conversion mode. Simulates dos2unix under SunOS.
<P>
<DT><B>-o --oldfile file ...</B>
<DD>
Old file mode. Convert the file and write output to it. The program
default to run in this mode. Wildcard names may be used.
<P>
<DT><B>-n --newfile infile outfile ...</B>
<DD>
New file mode. Convert the infile and write output to outfile. File names
must be given in pairs and wildcard names should NOT be used or you WILL
lost your files.
<P>
</DL>
<A NAME="lbAF">&nbsp;</A>
<H2>EXAMPLES</H2>
<P>
<P>
Get input from stdin and write output to stdout.
<DL COMPACT>
<DT><DD>
<B>unix2dos</B>
<P>
</DL>
<P>
Convert and replace a.txt. Convert and replace b.txt.
<DL COMPACT>
<DT><DD>
<B>unix2dos a.txt b.txt</B>
<DT><DD>
<B>unix2dos -o a.txt b.txt</B>
<P>
</DL>
<P>
Convert and replace a.txt in ASCII conversion mode.
Convert and replace b.txt in ISO conversion mode.
<DL COMPACT>
<DT><DD>
<B>dos2unix a.txt -c iso b.txt</B>
<DT><DD>
<B>dos2unix -c ascii a.txt -c iso b.txt</B>
<P>
</DL>
<P>
Convert and replace a.txt while keeping original date stamp.
<DL COMPACT>
<DT><DD>
<B>unix2dos -k a.txt</B>
<DT><DD>
<B>unix2dos -k -o a.txt</B>
<P>
</DL>
<P>
Convert a.txt and write to e.txt.
<DL COMPACT>
<DT><DD>
<B>unix2dos -n a.txt e.txt</B>
<P>
</DL>
<P>
Convert a.txt and write to e.txt, keep date stamp of e.txt same as a.txt.
<DL COMPACT>
<DT><DD>
<B>unix2dos -k -n a.txt e.txt </B>
<P>
</DL>
<P>
Convert and replace a.txt. Convert b.txt and write to e.txt.
<DL COMPACT>
<DT><DD>
<B>unix2dos a.txt -n b.txt e.txt</B>
<DT><DD>
<B>unix2dos -o a.txt -n b.txt e.txt</B>
<P>
</DL>
<P>
Convert c.txt and write to e.txt. Convert and replace a.txt.
Convert and replace b.txt. Convert d.txt and write to f.txt.
<DL COMPACT>
<DT><DD>
<B>unix2dos -n c.txt e.txt -o a.txt b.txt -n d.txt f.txt</B>
<P>
</DL>
<A NAME="lbAG">&nbsp;</A>
<H2>DIAGNOSTICS</H2>
<P>
<A NAME="lbAH">&nbsp;</A>
<H2>BUGS</H2>
<P>
The program does not work properly under MSDOS in stdio processing mode.
If you know why is that so, please tell me.
<P>
<A NAME="lbAI">&nbsp;</A>
<H2>AUTHOR</H2>
<P>
Benjamin Lin - (
<B><A HREF="mailto:blin@socs.uts.edu.au">blin@socs.uts.edu.au</A></B>
)
<P>
<A NAME="lbAJ">&nbsp;</A>
<H2>MISCELLANY</H2>
<P>
Tested environment:
<DL COMPACT>
<DT><DD>
Linux 1.2.0 with GNU C 2.5.8
<DT><DD>
SunOS 4.1.3 with GNU C 2.6.3
<DT><DD>
MS-DOS 6.20 with Borland C++ 4.02
</DL>
<P>
Suggestions and bug reports are welcome.
<P>
<A NAME="lbAK">&nbsp;</A>
<H2>SEE ALSO</H2>
<A HREF="http://localhost/cgi-bin/man/man2html?1+dos2unix">dos2unix</A>(1)
<P>
<P>
<HR>
<A NAME="index">&nbsp;</A><H2>Index</H2>
<DL>
<DT><A HREF="#lbAB">NAME</A><DD>
<DT><A HREF="#lbAC">SYNOPSYS</A><DD>
<DT><A HREF="#lbAD">DESCRIPTION</A><DD>
<DT><A HREF="#lbAE">OPTIONS</A><DD>
<DT><A HREF="#lbAF">EXAMPLES</A><DD>
<DT><A HREF="#lbAG">DIAGNOSTICS</A><DD>
<DT><A HREF="#lbAH">BUGS</A><DD>
<DT><A HREF="#lbAI">AUTHOR</A><DD>
<DT><A HREF="#lbAJ">MISCELLANY</A><DD>
<DT><A HREF="#lbAK">SEE ALSO</A><DD>
</DL>
<HR>
This document was created by
<A HREF="http://localhost/cgi-bin/man/man2html">man2html</A>,
using the manual pages.<BR>
Time: 11:52:21 GMT, December 04, 2002
</BODY>
</HTML>

1472
TBE/MinGW/include/GL/gl.h Normal file

File diff suppressed because it is too large Load Diff

4623
TBE/MinGW/include/GL/glext.h Normal file

File diff suppressed because it is too large Load Diff

328
TBE/MinGW/include/GL/glu.h Normal file
View File

@@ -0,0 +1,328 @@
/*
** License Applicability. Except to the extent portions of this file are
** made subject to an alternative license as permitted in the SGI Free
** Software License B, Version 1.1 (the "License"), the contents of this
** file are subject only to the provisions of the License. You may not use
** this file except in compliance with the License. You may obtain a copy
** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600
** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:
**
** http://oss.sgi.com/projects/FreeB
**
** Note that, as provided in the License, the Software is distributed on an
** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS
** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND
** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A
** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.
**
** Original Code. The Original Code is: OpenGL Sample Implementation,
** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,
** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.
** Copyright in any portions created by third parties is as indicated
** elsewhere herein. All Rights Reserved.
**
** Additional Notice Provisions: This software was created using the
** OpenGL(R) version 1.2.1 Sample Implementation published by SGI, but has
** not been independently verified as being compliant with the OpenGL(R)
** version 1.2.1 Specification.
*/
/*
* 2002-Apr-15, Marcus Geelnard:
* Changed GLAPIENTRY to APIENTRY.
*/
#ifndef __glu_h__
#define __glu_h__
#include <GL/gl.h>
#ifdef __cplusplus
extern "C" {
#endif
/*************************************************************/
/* Extensions */
#define GLU_EXT_object_space_tess 1
#define GLU_EXT_nurbs_tessellator 1
/* Boolean */
#define GLU_FALSE 0
#define GLU_TRUE 1
/* Version */
#define GLU_VERSION_1_1 1
#define GLU_VERSION_1_2 1
#define GLU_VERSION_1_3 1
/* StringName */
#define GLU_VERSION 100800
#define GLU_EXTENSIONS 100801
/* ErrorCode */
#define GLU_INVALID_ENUM 100900
#define GLU_INVALID_VALUE 100901
#define GLU_OUT_OF_MEMORY 100902
#define GLU_INVALID_OPERATION 100904
/* NurbsDisplay */
/* GLU_FILL */
#define GLU_OUTLINE_POLYGON 100240
#define GLU_OUTLINE_PATCH 100241
/* NurbsCallback */
#define GLU_NURBS_ERROR 100103
#define GLU_ERROR 100103
#define GLU_NURBS_BEGIN 100164
#define GLU_NURBS_BEGIN_EXT 100164
#define GLU_NURBS_VERTEX 100165
#define GLU_NURBS_VERTEX_EXT 100165
#define GLU_NURBS_NORMAL 100166
#define GLU_NURBS_NORMAL_EXT 100166
#define GLU_NURBS_COLOR 100167
#define GLU_NURBS_COLOR_EXT 100167
#define GLU_NURBS_TEXTURE_COORD 100168
#define GLU_NURBS_TEX_COORD_EXT 100168
#define GLU_NURBS_END 100169
#define GLU_NURBS_END_EXT 100169
#define GLU_NURBS_BEGIN_DATA 100170
#define GLU_NURBS_BEGIN_DATA_EXT 100170
#define GLU_NURBS_VERTEX_DATA 100171
#define GLU_NURBS_VERTEX_DATA_EXT 100171
#define GLU_NURBS_NORMAL_DATA 100172
#define GLU_NURBS_NORMAL_DATA_EXT 100172
#define GLU_NURBS_COLOR_DATA 100173
#define GLU_NURBS_COLOR_DATA_EXT 100173
#define GLU_NURBS_TEXTURE_COORD_DATA 100174
#define GLU_NURBS_TEX_COORD_DATA_EXT 100174
#define GLU_NURBS_END_DATA 100175
#define GLU_NURBS_END_DATA_EXT 100175
/* NurbsError */
#define GLU_NURBS_ERROR1 100251
#define GLU_NURBS_ERROR2 100252
#define GLU_NURBS_ERROR3 100253
#define GLU_NURBS_ERROR4 100254
#define GLU_NURBS_ERROR5 100255
#define GLU_NURBS_ERROR6 100256
#define GLU_NURBS_ERROR7 100257
#define GLU_NURBS_ERROR8 100258
#define GLU_NURBS_ERROR9 100259
#define GLU_NURBS_ERROR10 100260
#define GLU_NURBS_ERROR11 100261
#define GLU_NURBS_ERROR12 100262
#define GLU_NURBS_ERROR13 100263
#define GLU_NURBS_ERROR14 100264
#define GLU_NURBS_ERROR15 100265
#define GLU_NURBS_ERROR16 100266
#define GLU_NURBS_ERROR17 100267
#define GLU_NURBS_ERROR18 100268
#define GLU_NURBS_ERROR19 100269
#define GLU_NURBS_ERROR20 100270
#define GLU_NURBS_ERROR21 100271
#define GLU_NURBS_ERROR22 100272
#define GLU_NURBS_ERROR23 100273
#define GLU_NURBS_ERROR24 100274
#define GLU_NURBS_ERROR25 100275
#define GLU_NURBS_ERROR26 100276
#define GLU_NURBS_ERROR27 100277
#define GLU_NURBS_ERROR28 100278
#define GLU_NURBS_ERROR29 100279
#define GLU_NURBS_ERROR30 100280
#define GLU_NURBS_ERROR31 100281
#define GLU_NURBS_ERROR32 100282
#define GLU_NURBS_ERROR33 100283
#define GLU_NURBS_ERROR34 100284
#define GLU_NURBS_ERROR35 100285
#define GLU_NURBS_ERROR36 100286
#define GLU_NURBS_ERROR37 100287
/* NurbsProperty */
#define GLU_AUTO_LOAD_MATRIX 100200
#define GLU_CULLING 100201
#define GLU_SAMPLING_TOLERANCE 100203
#define GLU_DISPLAY_MODE 100204
#define GLU_PARAMETRIC_TOLERANCE 100202
#define GLU_SAMPLING_METHOD 100205
#define GLU_U_STEP 100206
#define GLU_V_STEP 100207
#define GLU_NURBS_MODE 100160
#define GLU_NURBS_MODE_EXT 100160
#define GLU_NURBS_TESSELLATOR 100161
#define GLU_NURBS_TESSELLATOR_EXT 100161
#define GLU_NURBS_RENDERER 100162
#define GLU_NURBS_RENDERER_EXT 100162
/* NurbsSampling */
#define GLU_OBJECT_PARAMETRIC_ERROR 100208
#define GLU_OBJECT_PARAMETRIC_ERROR_EXT 100208
#define GLU_OBJECT_PATH_LENGTH 100209
#define GLU_OBJECT_PATH_LENGTH_EXT 100209
#define GLU_PATH_LENGTH 100215
#define GLU_PARAMETRIC_ERROR 100216
#define GLU_DOMAIN_DISTANCE 100217
/* NurbsTrim */
#define GLU_MAP1_TRIM_2 100210
#define GLU_MAP1_TRIM_3 100211
/* QuadricDrawStyle */
#define GLU_POINT 100010
#define GLU_LINE 100011
#define GLU_FILL 100012
#define GLU_SILHOUETTE 100013
/* QuadricCallback */
/* GLU_ERROR */
/* QuadricNormal */
#define GLU_SMOOTH 100000
#define GLU_FLAT 100001
#define GLU_NONE 100002
/* QuadricOrientation */
#define GLU_OUTSIDE 100020
#define GLU_INSIDE 100021
/* TessCallback */
#define GLU_TESS_BEGIN 100100
#define GLU_BEGIN 100100
#define GLU_TESS_VERTEX 100101
#define GLU_VERTEX 100101
#define GLU_TESS_END 100102
#define GLU_END 100102
#define GLU_TESS_ERROR 100103
#define GLU_TESS_EDGE_FLAG 100104
#define GLU_EDGE_FLAG 100104
#define GLU_TESS_COMBINE 100105
#define GLU_TESS_BEGIN_DATA 100106
#define GLU_TESS_VERTEX_DATA 100107
#define GLU_TESS_END_DATA 100108
#define GLU_TESS_ERROR_DATA 100109
#define GLU_TESS_EDGE_FLAG_DATA 100110
#define GLU_TESS_COMBINE_DATA 100111
/* TessContour */
#define GLU_CW 100120
#define GLU_CCW 100121
#define GLU_INTERIOR 100122
#define GLU_EXTERIOR 100123
#define GLU_UNKNOWN 100124
/* TessProperty */
#define GLU_TESS_WINDING_RULE 100140
#define GLU_TESS_BOUNDARY_ONLY 100141
#define GLU_TESS_TOLERANCE 100142
/* TessError */
#define GLU_TESS_ERROR1 100151
#define GLU_TESS_ERROR2 100152
#define GLU_TESS_ERROR3 100153
#define GLU_TESS_ERROR4 100154
#define GLU_TESS_ERROR5 100155
#define GLU_TESS_ERROR6 100156
#define GLU_TESS_ERROR7 100157
#define GLU_TESS_ERROR8 100158
#define GLU_TESS_MISSING_BEGIN_POLYGON 100151
#define GLU_TESS_MISSING_BEGIN_CONTOUR 100152
#define GLU_TESS_MISSING_END_POLYGON 100153
#define GLU_TESS_MISSING_END_CONTOUR 100154
#define GLU_TESS_COORD_TOO_LARGE 100155
#define GLU_TESS_NEED_COMBINE_CALLBACK 100156
/* TessWinding */
#define GLU_TESS_WINDING_ODD 100130
#define GLU_TESS_WINDING_NONZERO 100131
#define GLU_TESS_WINDING_POSITIVE 100132
#define GLU_TESS_WINDING_NEGATIVE 100133
#define GLU_TESS_WINDING_ABS_GEQ_TWO 100134
/*************************************************************/
#ifdef __cplusplus
class GLUnurbs;
class GLUquadric;
class GLUtesselator;
#else
typedef struct GLUnurbs GLUnurbs;
typedef struct GLUquadric GLUquadric;
typedef struct GLUtesselator GLUtesselator;
#endif
typedef GLUnurbs GLUnurbsObj;
typedef GLUquadric GLUquadricObj;
typedef GLUtesselator GLUtesselatorObj;
typedef GLUtesselator GLUtriangulatorObj;
#define GLU_TESS_MAX_COORD 1.0e150
/* Internal convenience typedefs */
typedef void (APIENTRY *_GLUfuncptr)();
GLAPI void APIENTRY gluBeginCurve (GLUnurbs* nurb);
GLAPI void APIENTRY gluBeginPolygon (GLUtesselator* tess);
GLAPI void APIENTRY gluBeginSurface (GLUnurbs* nurb);
GLAPI void APIENTRY gluBeginTrim (GLUnurbs* nurb);
GLAPI GLint APIENTRY gluBuild1DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
GLAPI GLint APIENTRY gluBuild1DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLenum format, GLenum type, const void *data);
GLAPI GLint APIENTRY gluBuild2DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
GLAPI GLint APIENTRY gluBuild2DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLenum format, GLenum type, const void *data);
GLAPI GLint APIENTRY gluBuild3DMipmapLevels (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, GLint level, GLint base, GLint max, const void *data);
GLAPI GLint APIENTRY gluBuild3DMipmaps (GLenum target, GLint internalFormat, GLsizei width, GLsizei height, GLsizei depth, GLenum format, GLenum type, const void *data);
GLAPI GLboolean APIENTRY gluCheckExtension (const GLubyte *extName, const GLubyte *extString);
GLAPI void APIENTRY gluCylinder (GLUquadric* quad, GLdouble base, GLdouble top, GLdouble height, GLint slices, GLint stacks);
GLAPI void APIENTRY gluDeleteNurbsRenderer (GLUnurbs* nurb);
GLAPI void APIENTRY gluDeleteQuadric (GLUquadric* quad);
GLAPI void APIENTRY gluDeleteTess (GLUtesselator* tess);
GLAPI void APIENTRY gluDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops);
GLAPI void APIENTRY gluEndCurve (GLUnurbs* nurb);
GLAPI void APIENTRY gluEndPolygon (GLUtesselator* tess);
GLAPI void APIENTRY gluEndSurface (GLUnurbs* nurb);
GLAPI void APIENTRY gluEndTrim (GLUnurbs* nurb);
GLAPI const GLubyte * APIENTRY gluErrorString (GLenum error);
GLAPI void APIENTRY gluGetNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat* data);
GLAPI const GLubyte * APIENTRY gluGetString (GLenum name);
GLAPI void APIENTRY gluGetTessProperty (GLUtesselator* tess, GLenum which, GLdouble* data);
GLAPI void APIENTRY gluLoadSamplingMatrices (GLUnurbs* nurb, const GLfloat *model, const GLfloat *perspective, const GLint *view);
GLAPI void APIENTRY gluLookAt (GLdouble eyeX, GLdouble eyeY, GLdouble eyeZ, GLdouble centerX, GLdouble centerY, GLdouble centerZ, GLdouble upX, GLdouble upY, GLdouble upZ);
GLAPI GLUnurbs* APIENTRY gluNewNurbsRenderer (void);
GLAPI GLUquadric* APIENTRY gluNewQuadric (void);
GLAPI GLUtesselator* APIENTRY gluNewTess (void);
GLAPI void APIENTRY gluNextContour (GLUtesselator* tess, GLenum type);
GLAPI void APIENTRY gluNurbsCallback (GLUnurbs* nurb, GLenum which, _GLUfuncptr CallBackFunc);
GLAPI void APIENTRY gluNurbsCallbackData (GLUnurbs* nurb, GLvoid* userData);
GLAPI void APIENTRY gluNurbsCallbackDataEXT (GLUnurbs* nurb, GLvoid* userData);
GLAPI void APIENTRY gluNurbsCurve (GLUnurbs* nurb, GLint knotCount, GLfloat *knots, GLint stride, GLfloat *control, GLint order, GLenum type);
GLAPI void APIENTRY gluNurbsProperty (GLUnurbs* nurb, GLenum property, GLfloat value);
GLAPI void APIENTRY gluNurbsSurface (GLUnurbs* nurb, GLint sKnotCount, GLfloat* sKnots, GLint tKnotCount, GLfloat* tKnots, GLint sStride, GLint tStride, GLfloat* control, GLint sOrder, GLint tOrder, GLenum type);
GLAPI void APIENTRY gluOrtho2D (GLdouble left, GLdouble right, GLdouble bottom, GLdouble top);
GLAPI void APIENTRY gluPartialDisk (GLUquadric* quad, GLdouble inner, GLdouble outer, GLint slices, GLint loops, GLdouble start, GLdouble sweep);
GLAPI void APIENTRY gluPerspective (GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar);
GLAPI void APIENTRY gluPickMatrix (GLdouble x, GLdouble y, GLdouble delX, GLdouble delY, GLint *viewport);
GLAPI GLint APIENTRY gluProject (GLdouble objX, GLdouble objY, GLdouble objZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* winX, GLdouble* winY, GLdouble* winZ);
GLAPI void APIENTRY gluPwlCurve (GLUnurbs* nurb, GLint count, GLfloat* data, GLint stride, GLenum type);
GLAPI void APIENTRY gluQuadricCallback (GLUquadric* quad, GLenum which, _GLUfuncptr CallBackFunc);
GLAPI void APIENTRY gluQuadricDrawStyle (GLUquadric* quad, GLenum draw);
GLAPI void APIENTRY gluQuadricNormals (GLUquadric* quad, GLenum normal);
GLAPI void APIENTRY gluQuadricOrientation (GLUquadric* quad, GLenum orientation);
GLAPI void APIENTRY gluQuadricTexture (GLUquadric* quad, GLboolean texture);
GLAPI GLint APIENTRY gluScaleImage (GLenum format, GLsizei wIn, GLsizei hIn, GLenum typeIn, const void *dataIn, GLsizei wOut, GLsizei hOut, GLenum typeOut, GLvoid* dataOut);
GLAPI void APIENTRY gluSphere (GLUquadric* quad, GLdouble radius, GLint slices, GLint stacks);
GLAPI void APIENTRY gluTessBeginContour (GLUtesselator* tess);
GLAPI void APIENTRY gluTessBeginPolygon (GLUtesselator* tess, GLvoid* data);
GLAPI void APIENTRY gluTessCallback (GLUtesselator* tess, GLenum which, _GLUfuncptr CallBackFunc);
GLAPI void APIENTRY gluTessEndContour (GLUtesselator* tess);
GLAPI void APIENTRY gluTessEndPolygon (GLUtesselator* tess);
GLAPI void APIENTRY gluTessNormal (GLUtesselator* tess, GLdouble valueX, GLdouble valueY, GLdouble valueZ);
GLAPI void APIENTRY gluTessProperty (GLUtesselator* tess, GLenum which, GLdouble data);
GLAPI void APIENTRY gluTessVertex (GLUtesselator* tess, GLdouble *location, GLvoid* data);
GLAPI GLint APIENTRY gluUnProject (GLdouble winX, GLdouble winY, GLdouble winZ, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble* objX, GLdouble* objY, GLdouble* objZ);
GLAPI GLint APIENTRY gluUnProject4 (GLdouble winX, GLdouble winY, GLdouble winZ, GLdouble clipW, const GLdouble *model, const GLdouble *proj, const GLint *view, GLdouble nearVal, GLdouble farVal, GLdouble* objX, GLdouble* objY, GLdouble* objZ, GLdouble* objW);
#ifdef __cplusplus
}
#endif
#endif /* __glu_h__ */

107
TBE/MinGW/include/_mingw.h Normal file
View File

@@ -0,0 +1,107 @@
/*
* _mingw.h
*
* Mingw specific macros included by ALL include files.
*
* This file is part of the Mingw32 package.
*
* Contributors:
* Created by Mumit Khan <khan@xraylith.wisc.edu>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAIMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
*/
#ifndef __MINGW_H
#define __MINGW_H
/* These are defined by the user (or the compiler)
to specify how identifiers are imported from a DLL.
__DECLSPEC_SUPPORTED Defined if dllimport attribute is supported.
__MINGW_IMPORT The attribute definition to specify imported
variables/functions.
_CRTIMP As above. For MS compatibility.
__MINGW32_VERSION Runtime version.
__MINGW32_MAJOR_VERSION Runtime major version.
__MINGW32_MINOR_VERSION Runtime minor version.
__MINGW32_BUILD_DATE Runtime build date.
Other macros:
__int64 define to be long long. Using a typedef can
tweak bugs in the C++ parser.
All headers should include this first, and then use __DECLSPEC_SUPPORTED
to choose between the old ``__imp__name'' style or __MINGW_IMPORT
style declarations. */
#ifndef __GNUC__
# ifndef __MINGW_IMPORT
# define __MINGW_IMPORT __declspec(dllimport)
# endif
# ifndef _CRTIMP
# define _CRTIMP __declspec(dllimport)
# endif
# define __DECLSPEC_SUPPORTED
#else /* __GNUC__ */
# ifdef __declspec
# ifndef __MINGW_IMPORT
/* Note the extern. This is needed to work around GCC's
limitations in handling dllimport attribute. */
# define __MINGW_IMPORT extern __attribute__((dllimport))
# endif
# ifndef _CRTIMP
# ifdef __USE_CRTIMP
# define _CRTIMP __attribute__((dllimport))
# else
# define _CRTIMP
# endif
# endif
# define __DECLSPEC_SUPPORTED
# else /* __declspec */
# undef __DECLSPEC_SUPPORTED
# undef __MINGW_IMPORT
# ifndef _CRTIMP
# define _CRTIMP
# endif
# endif /* __declspec */
# ifndef __cdecl
# define __cdecl __attribute__((cdecl))
# endif
# ifndef __stdcall
# define __stdcall __attribute__((stdcall))
# endif
# ifndef __int64
# define __int64 long long
# endif
# ifndef __int32
# define __int32 long
# endif
# ifndef __int16
# define __int16 int
# endif
# ifndef __int8
# define __int8 char
# endif
# ifndef __small
# define __small char
# endif
# ifndef __hyper
# define __hyper long long
# endif
#endif /* __GNUC__ */
#define __MINGW32_VERSION 3.1
#define __MINGW32_MAJOR_VERSION 3
#define __MINGW32_MINOR_VERSION 1
#endif /* __MINGW_H */

315
TBE/MinGW/include/accctrl.h Normal file
View File

@@ -0,0 +1,315 @@
#ifndef _ACCCTRL_H
#define _ACCCTRL_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __cplusplus
extern "C" {
#endif
#define AccFree LocalFree
#define ACTRL_RESERVED 0x00000000
#define ACTRL_ACCESS_PROTECTED 0x00000001
#define ACTRL_ACCESS_ALLOWED 0x00000001
#define ACTRL_ACCESS_DENIED 0x00000002
#define ACTRL_AUDIT_SUCCESS 0x00000004
#define ACTRL_AUDIT_FAILURE 0x00000008
#define ACTRL_SYSTEM_ACCESS 0x04000000
#define ACTRL_DELETE 0x08000000
#define ACTRL_READ_CONTROL 0x10000000
#define ACTRL_CHANGE_ACCESS 0x20000000
#define ACTRL_CHANGE_OWNER 0x40000000
#define ACTRL_SYNCHRONIZE 0x80000000
#define ACTRL_STD_RIGHTS_ALL 0xf8000000
#define ACTRL_FILE_READ 0x00000001
#define ACTRL_FILE_WRITE 0x00000002
#define ACTRL_FILE_APPEND 0x00000004
#define ACTRL_FILE_READ_PROP 0x00000008
#define ACTRL_FILE_WRITE_PROP 0x00000010
#define ACTRL_FILE_EXECUTE 0x00000020
#define ACTRL_FILE_READ_ATTRIB 0x00000080
#define ACTRL_FILE_WRITE_ATTRIB 0x00000100
#define ACTRL_FILE_CREATE_PIPE 0x00000200
#define ACTRL_DIR_LIST 0x00000001
#define ACTRL_DIR_CREATE_OBJECT 0x00000002
#define ACTRL_DIR_CREATE_CHILD 0x00000004
#define ACTRL_DIR_DELETE_CHILD 0x00000040
#define ACTRL_DIR_TRAVERSE 0x00000020
#define ACTRL_KERNEL_TERMINATE 0x00000001
#define ACTRL_KERNEL_THREAD 0x00000002
#define ACTRL_KERNEL_VM 0x00000004
#define ACTRL_KERNEL_VM_READ 0x00000008
#define ACTRL_KERNEL_VM_WRITE 0x00000010
#define ACTRL_KERNEL_DUP_HANDLE 0x00000020
#define ACTRL_KERNEL_PROCESS 0x00000040
#define ACTRL_KERNEL_SET_INFO 0x00000080
#define ACTRL_KERNEL_GET_INFO 0x00000100
#define ACTRL_KERNEL_CONTROL 0x00000200
#define ACTRL_KERNEL_ALERT 0x00000400
#define ACTRL_KERNEL_GET_CONTEXT 0x00000800
#define ACTRL_KERNEL_SET_CONTEXT 0x00001000
#define ACTRL_KERNEL_TOKEN 0x00002000
#define ACTRL_KERNEL_IMPERSONATE 0x00004000
#define ACTRL_KERNEL_DIMPERSONATE 0x00008000
#define ACTRL_PRINT_SADMIN 0x00000001
#define ACTRL_PRINT_SLIST 0x00000002
#define ACTRL_PRINT_PADMIN 0x00000004
#define ACTRL_PRINT_PUSE 0x00000008
#define ACTRL_PRINT_JADMIN 0x00000010
#define ACTRL_SVC_GET_INFO 0x00000001
#define ACTRL_SVC_SET_INFO 0x00000002
#define ACTRL_SVC_STATUS 0x00000004
#define ACTRL_SVC_LIST 0x00000008
#define ACTRL_SVC_START 0x00000010
#define ACTRL_SVC_STOP 0x00000020
#define ACTRL_SVC_PAUSE 0x00000040
#define ACTRL_SVC_INTERROGATE 0x00000080
#define ACTRL_SVC_UCONTROL 0x00000100
#define ACTRL_REG_QUERY 0x00000001
#define ACTRL_REG_SET 0x00000002
#define ACTRL_REG_CREATE_CHILD 0x00000004
#define ACTRL_REG_LIST 0x00000008
#define ACTRL_REG_NOTIFY 0x00000010
#define ACTRL_REG_LINK 0x00000020
#define ACTRL_WIN_CLIPBRD 0x00000001
#define ACTRL_WIN_GLOBAL_ATOMS 0x00000002
#define ACTRL_WIN_CREATE 0x00000004
#define ACTRL_WIN_LIST_DESK 0x00000008
#define ACTRL_WIN_LIST 0x00000010
#define ACTRL_WIN_READ_ATTRIBS 0x00000020
#define ACTRL_WIN_WRITE_ATTRIBS 0x00000040
#define ACTRL_WIN_SCREEN 0x00000080
#define ACTRL_WIN_EXIT 0x00000100
#define ACTRL_ACCESS_NO_OPTIONS 0x00000000
#define ACTRL_ACCESS_SUPPORTS_OBJECT_ENTRIES 0x00000001
#define ACCCTRL_DEFAULT_PROVIDERA "Windows NT Access Provider"
#define ACCCTRL_DEFAULT_PROVIDERW L"Windows NT Access Provider"
#define TRUSTEE_ACCESS_ALLOWED 0x00000001L
#define TRUSTEE_ACCESS_READ 0x00000002L
#define TRUSTEE_ACCESS_WRITE 0x00000004L
#define TRUSTEE_ACCESS_EXPLICIT 0x00000001L
#define TRUSTEE_ACCESS_READ_WRITE (TRUSTEE_ACCESS_READ | TRUSTEE_ACCESS_WRITE)
#define TRUSTEE_ACCESS_ALL 0xFFFFFFFFL
#define NO_INHERITANCE 0x0
#define SUB_OBJECTS_ONLY_INHERIT 0x1
#define SUB_CONTAINERS_ONLY_INHERIT 0x2
#define SUB_CONTAINERS_AND_OBJECTS_INHERIT 0x3
#define INHERIT_NO_PROPAGATE 0x4
#define INHERIT_ONLY 0x8
#define INHERITED_ACCESS_ENTRY 0x10
#define INHERITED_PARENT 0x10000000
#define INHERITED_GRANDPARENT 0x20000000
typedef ULONG INHERIT_FLAGS, *PINHERIT_FLAGS;
typedef ULONG ACCESS_RIGHTS, *PACCESS_RIGHTS;
typedef enum _ACCESS_MODE {
NOT_USED_ACCESS = 0,
GRANT_ACCESS,
SET_ACCESS,
DENY_ACCESS,
REVOKE_ACCESS,
SET_AUDIT_SUCCESS,
SET_AUDIT_FAILURE
} ACCESS_MODE;
typedef enum _SE_OBJECT_TYPE {
SE_UNKNOWN_OBJECT_TYPE = 0,
SE_FILE_OBJECT,
SE_SERVICE,
SE_PRINTER,
SE_REGISTRY_KEY,
SE_LMSHARE,
SE_KERNEL_OBJECT,
SE_WINDOW_OBJECT,
SE_DS_OBJECT,
SE_DS_OBJECT_ALL,
SE_PROVIDER_DEFINED_OBJECT,
SE_WMIGUID_OBJECT,
SE_REGISTRY_WOW64_32KEY
} SE_OBJECT_TYPE;
typedef enum _TRUSTEE_TYPE {
TRUSTEE_IS_UNKNOWN,
TRUSTEE_IS_USER,
TRUSTEE_IS_GROUP,
TRUSTEE_IS_DOMAIN,
TRUSTEE_IS_ALIAS,
TRUSTEE_IS_WELL_KNOWN_GROUP,
TRUSTEE_IS_DELETED,
TRUSTEE_IS_INVALID,
TRUSTEE_IS_COMPUTER
} TRUSTEE_TYPE;
typedef enum _TRUSTEE_FORM {
TRUSTEE_IS_SID,
TRUSTEE_IS_NAME,
TRUSTEE_BAD_FORM,
TRUSTEE_IS_OBJECTS_AND_SID,
TRUSTEE_IS_OBJECTS_AND_NAME
} TRUSTEE_FORM;
typedef enum _MULTIPLE_TRUSTEE_OPERATION {
NO_MULTIPLE_TRUSTEE,
TRUSTEE_IS_IMPERSONATE
} MULTIPLE_TRUSTEE_OPERATION;
typedef struct _TRUSTEE_A {
struct _TRUSTEE_A *pMultipleTrustee;
MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation;
TRUSTEE_FORM TrusteeForm;
TRUSTEE_TYPE TrusteeType;
LPSTR ptstrName;
} TRUSTEE_A, *PTRUSTEE_A, TRUSTEEA, *PTRUSTEEA;
typedef struct _TRUSTEE_W {
struct _TRUSTEE_W *pMultipleTrustee;
MULTIPLE_TRUSTEE_OPERATION MultipleTrusteeOperation;
TRUSTEE_FORM TrusteeForm;
TRUSTEE_TYPE TrusteeType;
LPWSTR ptstrName;
} TRUSTEE_W, *PTRUSTEE_W, TRUSTEEW, *PTRUSTEEW;
typedef struct _ACTRL_ACCESS_ENTRYA {
TRUSTEE_A Trustee;
ULONG fAccessFlags;
ACCESS_RIGHTS Access;
ACCESS_RIGHTS ProvSpecificAccess;
INHERIT_FLAGS Inheritance;
LPCSTR lpInheritProperty;
} ACTRL_ACCESS_ENTRYA, *PACTRL_ACCESS_ENTRYA;
typedef struct _ACTRL_ACCESS_ENTRYW {
TRUSTEE_W Trustee;
ULONG fAccessFlags;
ACCESS_RIGHTS Access;
ACCESS_RIGHTS ProvSpecificAccess;
INHERIT_FLAGS Inheritance;
LPCWSTR lpInheritProperty;
} ACTRL_ACCESS_ENTRYW, *PACTRL_ACCESS_ENTRYW;
typedef struct _ACTRL_ACCESS_ENTRY_LISTA {
ULONG cEntries;
ACTRL_ACCESS_ENTRYA *pAccessList;
} ACTRL_ACCESS_ENTRY_LISTA, *PACTRL_ACCESS_ENTRY_LISTA;
typedef struct _ACTRL_ACCESS_ENTRY_LISTW {
ULONG cEntries;
ACTRL_ACCESS_ENTRYW *pAccessList;
} ACTRL_ACCESS_ENTRY_LISTW, *PACTRL_ACCESS_ENTRY_LISTW;
typedef struct _ACTRL_PROPERTY_ENTRYA {
LPCSTR lpProperty;
PACTRL_ACCESS_ENTRY_LISTA pAccessEntryList;
ULONG fListFlags;
} ACTRL_PROPERTY_ENTRYA, *PACTRL_PROPERTY_ENTRYA;
typedef struct _ACTRL_PROPERTY_ENTRYW {
LPCWSTR lpProperty;
PACTRL_ACCESS_ENTRY_LISTW pAccessEntryList;
ULONG fListFlags;
} ACTRL_PROPERTY_ENTRYW, *PACTRL_PROPERTY_ENTRYW;
typedef struct _ACTRL_ALISTA {
ULONG cEntries;
PACTRL_PROPERTY_ENTRYA pPropertyAccessList;
} ACTRL_ACCESSA, *PACTRL_ACCESSA, ACTRL_AUDITA, *PACTRL_AUDITA;
typedef struct _ACTRL_ALISTW {
ULONG cEntries;
PACTRL_PROPERTY_ENTRYW pPropertyAccessList;
} ACTRL_ACCESSW, *PACTRL_ACCESSW, ACTRL_AUDITW, *PACTRL_AUDITW;
typedef struct _TRUSTEE_ACCESSA {
LPSTR lpProperty;
ACCESS_RIGHTS Access;
ULONG fAccessFlags;
ULONG fReturnedAccess;
} TRUSTEE_ACCESSA, *PTRUSTEE_ACCESSA;
typedef struct _TRUSTEE_ACCESSW {
LPWSTR lpProperty;
ACCESS_RIGHTS Access;
ULONG fAccessFlags;
ULONG fReturnedAccess;
} TRUSTEE_ACCESSW, *PTRUSTEE_ACCESSW;
typedef struct _ACTRL_OVERLAPPED {
_ANONYMOUS_UNION
union {
PVOID Provider;
ULONG Reserved1;
} DUMMYUNIONNAME;
ULONG Reserved2;
HANDLE hEvent;
} ACTRL_OVERLAPPED, *PACTRL_OVERLAPPED;
typedef struct _ACTRL_ACCESS_INFOA {
ULONG fAccessPermission;
LPSTR lpAccessPermissionName;
} ACTRL_ACCESS_INFOA, *PACTRL_ACCESS_INFOA;
typedef struct _ACTRL_ACCESS_INFOW {
ULONG fAccessPermission;
LPWSTR lpAccessPermissionName;
} ACTRL_ACCESS_INFOW, *PACTRL_ACCESS_INFOW;
typedef struct _ACTRL_CONTROL_INFOA {
LPSTR lpControlId;
LPSTR lpControlName;
} ACTRL_CONTROL_INFOA, *PACTRL_CONTROL_INFOA;
typedef struct _ACTRL_CONTROL_INFOW {
LPWSTR lpControlId;
LPWSTR lpControlName;
} ACTRL_CONTROL_INFOW, *PACTRL_CONTROL_INFOW;
typedef struct _EXPLICIT_ACCESS_A {
DWORD grfAccessPermissions;
ACCESS_MODE grfAccessMode;
DWORD grfInheritance;
TRUSTEE_A Trustee;
} EXPLICIT_ACCESS_A, *PEXPLICIT_ACCESS_A, EXPLICIT_ACCESSA, *PEXPLICIT_ACCESSA;
typedef struct _EXPLICIT_ACCESS_W {
DWORD grfAccessPermissions;
ACCESS_MODE grfAccessMode;
DWORD grfInheritance;
TRUSTEE_W Trustee;
} EXPLICIT_ACCESS_W, *PEXPLICIT_ACCESS_W, EXPLICIT_ACCESSW, *PEXPLICIT_ACCESSW;
typedef struct _OBJECTS_AND_SID {
DWORD ObjectsPresent;
GUID ObjectTypeGuid;
GUID InheritedObjectTypeGuid;
SID * pSid;
} OBJECTS_AND_SID, *POBJECTS_AND_SID;
typedef struct _OBJECTS_AND_NAME_A {
DWORD ObjectsPresent;
SE_OBJECT_TYPE ObjectType;
LPSTR ObjectTypeName;
LPSTR InheritedObjectTypeName;
LPSTR ptstrName;
} OBJECTS_AND_NAME_A, *POBJECTS_AND_NAME_A;
typedef struct _OBJECTS_AND_NAME_W {
DWORD ObjectsPresent;
SE_OBJECT_TYPE ObjectType;
LPWSTR ObjectTypeName;
LPWSTR InheritedObjectTypeName;
LPWSTR ptstrName;
} OBJECTS_AND_NAME_W, *POBJECTS_AND_NAME_W;
#ifdef UNICODE
#define ACCCTRL_DEFAULT_PROVIDER ACCCTRL_DEFAULT_PROVIDERW
typedef TRUSTEE_W TRUSTEE_, *PTRUSTEE_;
typedef TRUSTEEW TRUSTEE, *PTRUSTEE;
typedef ACTRL_ACCESSW ACTRL_ACCESS, *PACTRL_ACCESS;
typedef ACTRL_ACCESS_ENTRY_LISTW ACTRL_ACCESS_ENTRY_LIST, *PACTRL_ACCESS_ENTRY_LIST;
typedef ACTRL_ACCESS_INFOW ACTRL_ACCESS_INFO, *PACTRL_ACCESS_INFO;
typedef ACTRL_ACCESS_ENTRYW ACTRL_ACCESS_ENTRY, *PACTRL_ACCESS_ENTRY;
typedef ACTRL_AUDITW ACTRL_AUDIT, *PACTRL_AUDIT;
typedef ACTRL_CONTROL_INFOW ACTRL_CONTROL_INFO, *PACTRL_CONTROL_INFO;
typedef EXPLICIT_ACCESS_W EXPLICIT_ACCESS_, *PEXPLICIT_ACCESS_;
typedef EXPLICIT_ACCESSW EXPLICIT_ACCESS, *PEXPLICIT_ACCESS;
typedef TRUSTEE_ACCESSW TRUSTEE_ACCESS, *PTRUSTEE_ACCESS;
typedef OBJECTS_AND_NAME_W OBJECTS_AND_NAME_, *POBJECTS_AND_NAME_;
#else
#define ACCCTRL_DEFAULT_PROVIDER ACCCTRL_DEFAULT_PROVIDERA
typedef TRUSTEE_A TRUSTEE_, *PTRUSTEE_;
typedef TRUSTEEA TRUSTEE, *PTRUSTEE;
typedef ACTRL_ACCESSA ACTRL_ACCESS, *PACTRL_ACCESS;
typedef ACTRL_ACCESS_ENTRY_LISTA ACTRL_ACCESS_ENTRY_LIST, *PACTRL_ACCESS_ENTRY_LIST;
typedef ACTRL_ACCESS_INFOA ACTRL_ACCESS_INFO, *PACTRL_ACCESS_INFO;
typedef ACTRL_ACCESS_ENTRYA ACTRL_ACCESS_ENTRY, *PACTRL_ACCESS_ENTRY;
typedef ACTRL_AUDITA ACTRL_AUDIT, *PACTRL_AUDIT;
typedef ACTRL_CONTROL_INFOA ACTRL_CONTROL_INFO, *PACTRL_CONTROL_INFO;
typedef EXPLICIT_ACCESS_A EXPLICIT_ACCESS_, *PEXPLICIT_ACCESS_;
typedef EXPLICIT_ACCESSA EXPLICIT_ACCESS, *PEXPLICIT_ACCESS;
typedef TRUSTEE_ACCESSA TRUSTEE_ACCESS, *PTRUSTEE_ACCESS;
typedef OBJECTS_AND_NAME_A OBJECTS_AND_NAME_, *POBJECTS_AND_NAME_;
#endif
#ifdef __cplusplus
}
#endif
#endif /* _ACCCTRL_H */

113
TBE/MinGW/include/aclapi.h Normal file
View File

@@ -0,0 +1,113 @@
#ifndef _ACLAPI_H
#define _ACLAPI_H
#if __GNUC__ >= 3
#pragma GCC system_header
#endif
#include <windows.h>
#include <accctrl.h>
#ifdef __cplusplus
extern "C" {
#endif
VOID WINAPI BuildExplicitAccessWithNameA(PEXPLICIT_ACCESS_A,LPSTR,DWORD,ACCESS_MODE,DWORD);
VOID WINAPI BuildExplicitAccessWithNameW(PEXPLICIT_ACCESS_W,LPWSTR,DWORD,ACCESS_MODE,DWORD);
DWORD WINAPI BuildSecurityDescriptorA(PTRUSTEE_A,PTRUSTEE_A ,ULONG,PEXPLICIT_ACCESS_A,
ULONG,PEXPLICIT_ACCESS_A,PSECURITY_DESCRIPTOR,PULONG,PSECURITY_DESCRIPTOR*);
DWORD WINAPI BuildSecurityDescriptorW(PTRUSTEE_W,PTRUSTEE_W ,ULONG,PEXPLICIT_ACCESS_W,
ULONG,PEXPLICIT_ACCESS_W,PSECURITY_DESCRIPTOR,PULONG,PSECURITY_DESCRIPTOR*);
VOID WINAPI BuildTrusteeWithNameA(PTRUSTEE_A,LPSTR);
VOID WINAPI BuildTrusteeWithNameW(PTRUSTEE_W,LPWSTR);
VOID WINAPI BuildTrusteeWithObjectsAndNameA(PTRUSTEE_A,POBJECTS_AND_NAME_A,SE_OBJECT_TYPE,
LPSTR,LPSTR,LPSTR);
VOID WINAPI BuildTrusteeWithObjectsAndNameW(PTRUSTEE_W,POBJECTS_AND_NAME_W,SE_OBJECT_TYPE,
LPWSTR,LPWSTR,LPWSTR);
VOID WINAPI BuildTrusteeWithObjectsAndSidA(PTRUSTEE_A,POBJECTS_AND_SID,GUID*,GUID*,PSID);
VOID WINAPI BuildTrusteeWithObjectsAndSidW(PTRUSTEE_W,POBJECTS_AND_SID,GUID*,GUID*,PSID);
VOID WINAPI BuildTrusteeWithSidA(PTRUSTEE_A,PSID);
VOID WINAPI BuildTrusteeWithSidW(PTRUSTEE_W,PSID);
DWORD WINAPI GetAuditedPermissionsFromAclA(PACL,PTRUSTEE_A,PACCESS_MASK,PACCESS_MASK);
DWORD WINAPI GetAuditedPermissionsFromAclW(PACL,PTRUSTEE_W,PACCESS_MASK,PACCESS_MASK);
DWORD WINAPI GetEffectiveRightsFromAclA(PACL,PTRUSTEE_A,PACCESS_MASK);
DWORD WINAPI GetEffectiveRightsFromAclW(PACL,PTRUSTEE_W,PACCESS_MASK);
DWORD WINAPI GetExplicitEntriesFromAclA(PACL,PULONG,PEXPLICIT_ACCESS_A*);
DWORD WINAPI GetExplicitEntriesFromAclW(PACL,PULONG,PEXPLICIT_ACCESS_W*);
DWORD WINAPI GetNamedSecurityInfoA(LPSTR,SE_OBJECT_TYPE,SECURITY_INFORMATION,
PSID*,PSID*,PACL*,PACL*,PSECURITY_DESCRIPTOR*);
DWORD WINAPI GetNamedSecurityInfoW(LPWSTR,SE_OBJECT_TYPE,SECURITY_INFORMATION,
PSID*,PSID*,PACL*,PACL*,PSECURITY_DESCRIPTOR*);
DWORD WINAPI GetSecurityInfo(HANDLE,SE_OBJECT_TYPE,SECURITY_INFORMATION,
PSID*,PSID*,PACL*,PACL*,PSECURITY_DESCRIPTOR*);
TRUSTEE_FORM WINAPI GetTrusteeFormA(PTRUSTEE_A);
TRUSTEE_FORM WINAPI GetTrusteeFormW(PTRUSTEE_W);
LPSTR WINAPI GetTrusteeNameA(PTRUSTEE_A);
LPWSTR WINAPI GetTrusteeNameW(PTRUSTEE_W);
TRUSTEE_TYPE WINAPI GetTrusteeTypeA(PTRUSTEE_A);
TRUSTEE_TYPE WINAPI GetTrusteeTypeW(PTRUSTEE_W);
DWORD WINAPI LookupSecurityDescriptorPartsA(PTRUSTEE_A*,PTRUSTEE_A*,PULONG,PEXPLICIT_ACCESS_A*,
PULONG,PEXPLICIT_ACCESS_A*,PSECURITY_DESCRIPTOR);
DWORD WINAPI LookupSecurityDescriptorPartsW(PTRUSTEE_W*,PTRUSTEE_W*,PULONG,PEXPLICIT_ACCESS_W*,
PULONG,PEXPLICIT_ACCESS_W*,PSECURITY_DESCRIPTOR);
DWORD WINAPI SetEntriesInAclA(ULONG,PEXPLICIT_ACCESS_A,PACL,PACL*);
DWORD WINAPI SetEntriesInAclW(ULONG,PEXPLICIT_ACCESS_W,PACL,PACL*);
DWORD WINAPI SetNamedSecurityInfoA(LPSTR,SE_OBJECT_TYPE,SECURITY_INFORMATION,PSID,PSID,PACL,PACL);
DWORD WINAPI SetNamedSecurityInfoW(LPWSTR,SE_OBJECT_TYPE,SECURITY_INFORMATION,PSID,PSID,PACL,PACL);
DWORD WINAPI SetSecurityInfo(HANDLE,SE_OBJECT_TYPE,SECURITY_INFORMATION,PSID,PSID,PACL,PACL);
VOID WINAPI BuildImpersonateExplicitAccessWithNameA(PEXPLICIT_ACCESS_A,LPSTR,PTRUSTEE_A,DWORD,ACCESS_MODE,DWORD);
VOID WINAPI BuildImpersonateExplicitAccessWithNameW(PEXPLICIT_ACCESS_W,LPWSTR,PTRUSTEE_W,DWORD,ACCESS_MODE,DWORD);
VOID WINAPI BuildImpersonateTrusteeA(PTRUSTEE_A,PTRUSTEE_A);
VOID WINAPI BuildImpersonateTrusteeW(PTRUSTEE_W,PTRUSTEE_W);
PTRUSTEE_A WINAPI GetMultipleTrusteeA(PTRUSTEE_A);
PTRUSTEE_W WINAPI GetMultipleTrusteeW(PTRUSTEE_W);
MULTIPLE_TRUSTEE_OPERATION WINAPI GetMultipleTrusteeOperationA(PTRUSTEE_A);
MULTIPLE_TRUSTEE_OPERATION WINAPI GetMultipleTrusteeOperationW(PTRUSTEE_W);
#ifdef UNICODE
#define BuildExplicitAccessWithName BuildExplicitAccessWithNameW
#define BuildSecurityDescriptor BuildSecurityDescriptorW
#define BuildTrusteeWithName BuildTrusteeWithNameW
#define BuildTrusteeWithObjectsAndName BuildTrusteeWithObjectsAndNameW
#define BuildTrusteeWithObjectsAndSid BuildTrusteeWithObjectsAndSidW
#define BuildTrusteeWithSid BuildTrusteeWithSidW
#define GetAuditedPermissionsFromAcl GetAuditedPermissionsFromAclW
#define GetEffectiveRightsFromAcl GetEffectiveRightsFromAclW
#define GetExplicitEntriesFromAcl GetExplicitEntriesFromAclW
#define GetNamedSecurityInfo GetNamedSecurityInfoW
#define GetTrusteeForm GetTrusteeFormW
#define GetTrusteeName GetTrusteeNameW
#define GetTrusteeType GetTrusteeTypeW
#define LookupSecurityDescriptorParts LookupSecurityDescriptorPartsW
#define SetEntriesInAcl SetEntriesInAclW
#define SetNamedSecurityInfo SetNamedSecurityInfoW
#define BuildImpersonateExplicitAccessWithName BuildImpersonateExplicitAccessWithNameW
#define BuildImpersonateTrustee BuildImpersonateTrusteeW
#define GetMultipleTrustee GetMultipleTrusteeW
#define GetMultipleTrusteeOperation GetMultipleTrusteeOperationW
#else
#define BuildExplicitAccessWithName BuildExplicitAccessWithNameA
#define BuildSecurityDescriptor BuildSecurityDescriptorA
#define BuildTrusteeWithName BuildTrusteeWithNameA
#define BuildTrusteeWithObjectsAndName BuildTrusteeWithObjectsAndNameA
#define BuildTrusteeWithObjectsAndSid BuildTrusteeWithObjectsAndSidA
#define BuildTrusteeWithSid BuildTrusteeWithSidA
#define GetAuditedPermissionsFromAcl GetAuditedPermissionsFromAclA
#define GetEffectiveRightsFromAcl GetEffectiveRightsFromAclA
#define GetExplicitEntriesFromAcl GetExplicitEntriesFromAclA
#define GetNamedSecurityInfo GetNamedSecurityInfoA
#define GetTrusteeForm GetTrusteeFormA
#define GetTrusteeName GetTrusteeNameA
#define GetTrusteeType GetTrusteeTypeA
#define LookupSecurityDescriptorParts LookupSecurityDescriptorPartsA
#define SetEntriesInAcl SetEntriesInAclA
#define SetNamedSecurityInfo SetNamedSecurityInfoA
#define BuildImpersonateExplicitAccessWithName BuildImpersonateExplicitAccessWithNameA
#define BuildImpersonateTrustee BuildImpersonateTrusteeA
#define GetMultipleTrustee GetMultipleTrusteeA
#define GetMultipleTrusteeOperation GetMultipleTrusteeOperationA
#endif /* UNICODE */
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -0,0 +1,298 @@
/* ANSI and traditional C compatability macros
Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001
Free Software Foundation, Inc.
This file is part of the GNU C Library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
/* ANSI and traditional C compatibility macros
ANSI C is assumed if __STDC__ is #defined.
Macro ANSI C definition Traditional C definition
----- ---- - ---------- ----------- - ----------
ANSI_PROTOTYPES 1 not defined
PTR `void *' `char *'
PTRCONST `void *const' `char *'
LONG_DOUBLE `long double' `double'
const not defined `'
volatile not defined `'
signed not defined `'
VA_START(ap, var) va_start(ap, var) va_start(ap)
Note that it is safe to write "void foo();" indicating a function
with no return value, in all K+R compilers we have been able to test.
For declaring functions with prototypes, we also provide these:
PARAMS ((prototype))
-- for functions which take a fixed number of arguments. Use this
when declaring the function. When defining the function, write a
K+R style argument list. For example:
char *strcpy PARAMS ((char *dest, char *source));
...
char *
strcpy (dest, source)
char *dest;
char *source;
{ ... }
VPARAMS ((prototype, ...))
-- for functions which take a variable number of arguments. Use
PARAMS to declare the function, VPARAMS to define it. For example:
int printf PARAMS ((const char *format, ...));
...
int
printf VPARAMS ((const char *format, ...))
{
...
}
For writing functions which take variable numbers of arguments, we
also provide the VA_OPEN, VA_CLOSE, and VA_FIXEDARG macros. These
hide the differences between K+R <varargs.h> and C89 <stdarg.h> more
thoroughly than the simple VA_START() macro mentioned above.
VA_OPEN and VA_CLOSE are used *instead of* va_start and va_end.
Immediately after VA_OPEN, put a sequence of VA_FIXEDARG calls
corresponding to the list of fixed arguments. Then use va_arg
normally to get the variable arguments, or pass your va_list object
around. You do not declare the va_list yourself; VA_OPEN does it
for you.
Here is a complete example:
int
printf VPARAMS ((const char *format, ...))
{
int result;
VA_OPEN (ap, format);
VA_FIXEDARG (ap, const char *, format);
result = vfprintf (stdout, format, ap);
VA_CLOSE (ap);
return result;
}
You can declare variables either before or after the VA_OPEN,
VA_FIXEDARG sequence. Also, VA_OPEN and VA_CLOSE are the beginning
and end of a block. They must appear at the same nesting level,
and any variables declared after VA_OPEN go out of scope at
VA_CLOSE. Unfortunately, with a K+R compiler, that includes the
argument list. You can have multiple instances of VA_OPEN/VA_CLOSE
pairs in a single function in case you need to traverse the
argument list more than once.
For ease of writing code which uses GCC extensions but needs to be
portable to other compilers, we provide the GCC_VERSION macro that
simplifies testing __GNUC__ and __GNUC_MINOR__ together, and various
wrappers around __attribute__. Also, __extension__ will be #defined
to nothing if it doesn't work. See below.
This header also defines a lot of obsolete macros:
CONST, VOLATILE, SIGNED, PROTO, EXFUN, DEFUN, DEFUN_VOID,
AND, DOTS, NOARGS. Don't use them. */
#ifndef _ANSIDECL_H
#define _ANSIDECL_H 1
/* Every source file includes this file,
so they will all get the switch for lint. */
/* LINTLIBRARY */
/* Using MACRO(x,y) in cpp #if conditionals does not work with some
older preprocessors. Thus we can't define something like this:
#define HAVE_GCC_VERSION(MAJOR, MINOR) \
(__GNUC__ > (MAJOR) || (__GNUC__ == (MAJOR) && __GNUC_MINOR__ >= (MINOR)))
and then test "#if HAVE_GCC_VERSION(2,7)".
So instead we use the macro below and test it against specific values. */
/* This macro simplifies testing whether we are using gcc, and if it
is of a particular minimum version. (Both major & minor numbers are
significant.) This macro will evaluate to 0 if we are not using
gcc at all. */
#ifndef GCC_VERSION
#define GCC_VERSION (__GNUC__ * 1000 + __GNUC_MINOR__)
#endif /* GCC_VERSION */
#if defined (__STDC__) || defined (_AIX) || (defined (__mips) && defined (_SYSTYPE_SVR4)) || defined(_WIN32) || (defined(__alpha) && defined(__cplusplus))
/* All known AIX compilers implement these things (but don't always
define __STDC__). The RISC/OS MIPS compiler defines these things
in SVR4 mode, but does not define __STDC__. */
/* eraxxon@alumni.rice.edu: The Compaq C++ compiler, unlike many other
C++ compilers, does not define __STDC__, though it acts as if this
was so. (Verified versions: 5.7, 6.2, 6.3, 6.5) */
#define ANSI_PROTOTYPES 1
#define PTR void *
#define PTRCONST void *const
#define LONG_DOUBLE long double
#define PARAMS(ARGS) ARGS
#define VPARAMS(ARGS) ARGS
#define VA_START(VA_LIST, VAR) va_start(VA_LIST, VAR)
/* variadic function helper macros */
/* "struct Qdmy" swallows the semicolon after VA_OPEN/VA_FIXEDARG's
use without inhibiting further decls and without declaring an
actual variable. */
#define VA_OPEN(AP, VAR) { va_list AP; va_start(AP, VAR); { struct Qdmy
#define VA_CLOSE(AP) } va_end(AP); }
#define VA_FIXEDARG(AP, T, N) struct Qdmy
#undef const
#undef volatile
#undef signed
/* inline requires special treatment; it's in C99, and GCC >=2.7 supports
it too, but it's not in C89. */
#undef inline
#if __STDC_VERSION__ > 199901L
/* it's a keyword */
#else
# if GCC_VERSION >= 2007
# define inline __inline__ /* __inline__ prevents -pedantic warnings */
# else
# define inline /* nothing */
# endif
#endif
/* These are obsolete. Do not use. */
#ifndef IN_GCC
#define CONST const
#define VOLATILE volatile
#define SIGNED signed
#define PROTO(type, name, arglist) type name arglist
#define EXFUN(name, proto) name proto
#define DEFUN(name, arglist, args) name(args)
#define DEFUN_VOID(name) name(void)
#define AND ,
#define DOTS , ...
#define NOARGS void
#endif /* ! IN_GCC */
#else /* Not ANSI C. */
#undef ANSI_PROTOTYPES
#define PTR char *
#define PTRCONST PTR
#define LONG_DOUBLE double
#define PARAMS(args) ()
#define VPARAMS(args) (va_alist) va_dcl
#define VA_START(va_list, var) va_start(va_list)
#define VA_OPEN(AP, VAR) { va_list AP; va_start(AP); { struct Qdmy
#define VA_CLOSE(AP) } va_end(AP); }
#define VA_FIXEDARG(AP, TYPE, NAME) TYPE NAME = va_arg(AP, TYPE)
/* some systems define these in header files for non-ansi mode */
#undef const
#undef volatile
#undef signed
#undef inline
#define const
#define volatile
#define signed
#define inline
#ifndef IN_GCC
#define CONST
#define VOLATILE
#define SIGNED
#define PROTO(type, name, arglist) type name ()
#define EXFUN(name, proto) name()
#define DEFUN(name, arglist, args) name arglist args;
#define DEFUN_VOID(name) name()
#define AND ;
#define DOTS
#define NOARGS
#endif /* ! IN_GCC */
#endif /* ANSI C. */
/* Define macros for some gcc attributes. This permits us to use the
macros freely, and know that they will come into play for the
version of gcc in which they are supported. */
#if (GCC_VERSION < 2007)
# define __attribute__(x)
#endif
/* Attribute __malloc__ on functions was valid as of gcc 2.96. */
#ifndef ATTRIBUTE_MALLOC
# if (GCC_VERSION >= 2096)
# define ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
# else
# define ATTRIBUTE_MALLOC
# endif /* GNUC >= 2.96 */
#endif /* ATTRIBUTE_MALLOC */
/* Attributes on labels were valid as of gcc 2.93. */
#ifndef ATTRIBUTE_UNUSED_LABEL
# if (GCC_VERSION >= 2093)
# define ATTRIBUTE_UNUSED_LABEL ATTRIBUTE_UNUSED
# else
# define ATTRIBUTE_UNUSED_LABEL
# endif /* GNUC >= 2.93 */
#endif /* ATTRIBUTE_UNUSED_LABEL */
#ifndef ATTRIBUTE_UNUSED
#define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
#endif /* ATTRIBUTE_UNUSED */
#ifndef ATTRIBUTE_NORETURN
#define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__))
#endif /* ATTRIBUTE_NORETURN */
#ifndef ATTRIBUTE_PRINTF
#define ATTRIBUTE_PRINTF(m, n) __attribute__ ((__format__ (__printf__, m, n)))
#define ATTRIBUTE_PRINTF_1 ATTRIBUTE_PRINTF(1, 2)
#define ATTRIBUTE_PRINTF_2 ATTRIBUTE_PRINTF(2, 3)
#define ATTRIBUTE_PRINTF_3 ATTRIBUTE_PRINTF(3, 4)
#define ATTRIBUTE_PRINTF_4 ATTRIBUTE_PRINTF(4, 5)
#define ATTRIBUTE_PRINTF_5 ATTRIBUTE_PRINTF(5, 6)
#endif /* ATTRIBUTE_PRINTF */
/* We use __extension__ in some places to suppress -pedantic warnings
about GCC extensions. This feature didn't work properly before
gcc 2.8. */
#if GCC_VERSION < 2008
#define __extension__
#endif
/* Bootstrap support: Adjust certain macros defined by Autoconf,
which are only valid for the stage1 compiler. If we detect
a modern version of GCC, we are probably in stage2 or beyond,
so unconditionally reset the values. Note that const, inline,
etc. have been dealt with above. */
#if (GCC_VERSION >= 2007)
# ifndef HAVE_LONG_DOUBLE
# define HAVE_LONG_DOUBLE 1
# endif
#endif /* GCC >= 2.7 */
#endif /* ansidecl.h */

View File

@@ -0,0 +1,71 @@
/*
* assert.h
*
* Define the assert macro for debug output.
*
* This file is part of the Mingw32 package.
*
* Contributors:
* Created by Colin Peters <colin@bird.fu.is.saga-u.ac.jp>
*
* THIS SOFTWARE IS NOT COPYRIGHTED
*
* This source code is offered for use in the public domain. You may
* use, modify or distribute it freely.
*
* This code is distributed in the hope that it will be useful but
* WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
* DISCLAIMED. This includes but is not limited to warranties of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*
* $Revision: 1.4 $
* $Author: earnie $
* $Date: 2003/02/21 21:19:51 $
*
*/
#ifndef _ASSERT_H_
#define _ASSERT_H_
/* All the headers include this file. */
#include <_mingw.h>
#ifndef RC_INVOKED
#ifdef __cplusplus
extern "C" {
#endif
#ifdef NDEBUG
/*
* If not debugging, assert does nothing.
*/
#define assert(x) ((void)0)
#else /* debugging enabled */
/*
* CRTDLL nicely supplies a function which does the actual output and
* call to abort.
*/
_CRTIMP void __cdecl _assert (const char*, const char*, int)
#ifdef __GNUC__
__attribute__ ((noreturn))
#endif
;
/*
* Definition of the assert macro.
*/
#define assert(e) ((e) ? (void)0 : _assert(#e, __FILE__, __LINE__))
#endif /* NDEBUG */
#ifdef __cplusplus
}
#endif
#endif /* Not RC_INVOKED */
#endif /* Not _ASSERT_H_ */

119
TBE/MinGW/include/basetsd.h Normal file
View File

@@ -0,0 +1,119 @@
#ifndef _BASETSD_H
#define _BASETSD_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifdef __GNUC__
#ifndef __int64
#define __int64 long long
#endif
#endif
#if defined(_WIN64)
#define __int3264 __int64
#define ADDRESS_TAG_BIT 0x40000000000UI64
#else /* !_WIN64 */
#define __int3264 __int32
#define ADDRESS_TAG_BIT 0x80000000UL
#define HandleToUlong( h ) ((ULONG)(ULONG_PTR)(h) )
#define HandleToLong( h ) ((LONG)(LONG_PTR) (h) )
#define LongToHandle( h) ((HANDLE)(LONG_PTR) (h))
#define PtrToUlong( p ) ((ULONG)(ULONG_PTR) (p) )
#define PtrToLong( p ) ((LONG)(LONG_PTR) (p) )
#define PtrToUint( p ) ((UINT)(UINT_PTR) (p) )
#define PtrToInt( p ) ((INT)(INT_PTR) (p) )
#define PtrToUshort( p ) ((unsigned short)(ULONG_PTR)(p) )
#define PtrToShort( p ) ((short)(LONG_PTR)(p) )
#define IntToPtr( i ) ((VOID*)(INT_PTR)((int)i))
#define UIntToPtr( ui ) ((VOID*)(UINT_PTR)((unsigned int)ui))
#define LongToPtr( l ) ((VOID*)(LONG_PTR)((long)l))
#define ULongToPtr( ul ) ((VOID*)(ULONG_PTR)((unsigned long)ul))
#endif /* !_WIN64 */
#define UlongToPtr(ul) ULongToPtr(ul)
#define UintToPtr(ui) UIntToPtr(ui)
#define MAXUINT_PTR (~((UINT_PTR)0))
#define MAXINT_PTR ((INT_PTR)(MAXUINT_PTR >> 1))
#define MININT_PTR (~MAXINT_PTR)
#define MAXULONG_PTR (~((ULONG_PTR)0))
#define MAXLONG_PTR ((LONG_PTR)(MAXULONG_PTR >> 1))
#define MINLONG_PTR (~MAXLONG_PTR)
#define MAXUHALF_PTR ((UHALF_PTR)~0)
#define MAXHALF_PTR ((HALF_PTR)(MAXUHALF_PTR >> 1))
#define MINHALF_PTR (~MAXHALF_PTR)
#ifndef RC_INVOKED
#ifdef __cplusplus
extern "C" {
#endif
typedef int LONG32, *PLONG32;
#ifndef XFree86Server
typedef int INT32, *PINT32;
#endif /* ndef XFree86Server */
typedef unsigned int ULONG32, *PULONG32;
typedef unsigned int DWORD32, *PDWORD32;
typedef unsigned int UINT32, *PUINT32;
#if defined(_WIN64)
typedef __int64 INT_PTR, *PINT_PTR;
typedef unsigned __int64 UINT_PTR, *PUINT_PTR;
typedef __int64 LONG_PTR, *PLONG_PTR;
typedef unsigned __int64 ULONG_PTR, *PULONG_PTR;
typedef unsigned __int64 HANDLE_PTR;
typedef unsigned int UHALF_PTR, *PUHALF_PTR;
typedef int HALF_PTR, *PHALF_PTR;
#if 0 /* TODO when WIN64 is here */
inline unsigned long HandleToUlong(const void* h )
{ return((unsigned long) h ); }
inline long HandleToLong( const void* h )
{ return((long) h ); }
inline void* LongToHandle( const long h )
{ return((void*) (INT_PTR) h ); }
inline unsigned long PtrToUlong( const void* p)
{ return((unsigned long) p ); }
inline unsigned int PtrToUint( const void* p )
{ return((unsigned int) p ); }
inline unsigned short PtrToUshort( const void* p )
{ return((unsigned short) p ); }
inline long PtrToLong( const void* p )
{ return((long) p ); }
inline int PtrToInt( const void* p )
{ return((int) p ); }
inline short PtrToShort( const void* p )
{ return((short) p ); }
inline void* IntToPtr( const int i )
{ return( (void*)(INT_PTR)i ); }
inline void* UIntToPtr(const unsigned int ui)
{ return( (void*)(UINT_PTR)ui ); }
inline void* LongToPtr( const long l )
{ return( (void*)(LONG_PTR)l ); }
inline void* ULongToPtr( const unsigned long ul )
{ return( (void*)(ULONG_PTR)ul ); }
#endif /* 0_ */
#else /* !_WIN64 */
typedef int INT_PTR, *PINT_PTR;
typedef unsigned int UINT_PTR, *PUINT_PTR;
typedef long LONG_PTR, *PLONG_PTR;
typedef unsigned long ULONG_PTR, *PULONG_PTR;
typedef unsigned short UHALF_PTR, *PUHALF_PTR;
typedef short HALF_PTR, *PHALF_PTR;
typedef unsigned long HANDLE_PTR;
#endif /* !_WIN64 */
typedef ULONG_PTR SIZE_T, *PSIZE_T;
typedef LONG_PTR SSIZE_T, *PSSIZE_T;
typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR;
typedef __int64 LONG64, *PLONG64;
typedef __int64 INT64, *PINT64;
typedef unsigned __int64 ULONG64, *PULONG64;
typedef unsigned __int64 DWORD64, *PDWORD64;
typedef unsigned __int64 UINT64, *PUINT64;
#ifdef __cplusplus
}
#endif
#endif /* !RC_INVOKED */
#endif /* _BASETSD_H */

View File

@@ -0,0 +1,166 @@
#ifndef _BASETYPS_H
#define _BASETYPS_H
#if __GNUC__ >=3
#pragma GCC system_header
#endif
#ifndef __OBJC__
# ifdef __cplusplus
# define EXTERN_C extern "C"
# else
# define EXTERN_C extern
# endif /* __cplusplus */
# ifndef __int64
# define __int64 long long
# endif
# ifndef __int32
# define __int32 long
# endif
# ifndef __int16
# define __int16 int
# endif
# ifndef __int8
# define __int8 char
# endif
# ifndef __small
# define __small char
# endif
# ifndef __hyper
# define __hyper long long
# endif
# define STDMETHODCALLTYPE __stdcall
# define STDMETHODVCALLTYPE __cdecl
# define STDAPICALLTYPE __stdcall
# define STDAPIVCALLTYPE __cdecl
# define STDAPI EXTERN_C HRESULT STDAPICALLTYPE
# define STDAPI_(t) EXTERN_C t STDAPICALLTYPE
# define STDMETHODIMP HRESULT STDMETHODCALLTYPE
# define STDMETHODIMP_(t) t STDMETHODCALLTYPE
# define STDAPIV EXTERN_C HRESULT STDAPIVCALLTYPE
# define STDAPIV_(t) EXTERN_C t STDAPIVCALLTYPE
# define STDMETHODIMPV HRESULT STDMETHODVCALLTYPE
# define STDMETHODIMPV_(t) t STDMETHODVCALLTYPE
# define interface struct
# if defined(__cplusplus) && !defined(CINTERFACE)
# define STDMETHOD(m) virtual HRESULT STDMETHODCALLTYPE m
# define STDMETHOD_(t,m) virtual t STDMETHODCALLTYPE m
# define PURE =0
# define THIS_
# define THIS void
/*
__attribute__((com_interface)) is obsolete in __GNUC__ >= 3
g++ vtables are now COM-compatible by default
*/
# if defined(__GNUC__) && __GNUC__ < 3 && !defined(NOCOMATTRIBUTE)
# define DECLARE_INTERFACE(i) interface __attribute__((com_interface)) i
# define DECLARE_INTERFACE_(i,b) interface __attribute__((com_interface)) i : public b
# else
# define DECLARE_INTERFACE(i) interface i
# define DECLARE_INTERFACE_(i,b) interface i : public b
# endif
# else
# define STDMETHOD(m) HRESULT(STDMETHODCALLTYPE *m)
# define STDMETHOD_(t,m) t(STDMETHODCALLTYPE *m)
# define PURE
# define THIS_ INTERFACE *,
# define THIS INTERFACE *
# ifndef CONST_VTABLE
# define CONST_VTABLE
# endif
# define DECLARE_INTERFACE(i) \
typedef interface i { CONST_VTABLE struct i##Vtbl *lpVtbl; } i; \
typedef CONST_VTABLE struct i##Vtbl i##Vtbl; \
CONST_VTABLE struct i##Vtbl
# define DECLARE_INTERFACE_(i,b) DECLARE_INTERFACE(i)
# endif
# define BEGIN_INTERFACE
# define END_INTERFACE
# define FWD_DECL(i) typedef interface i i
# if defined(__cplusplus) && !defined(CINTERFACE)
# define IENUM_THIS(T)
# define IENUM_THIS_(T)
# else
# define IENUM_THIS(T) T*
# define IENUM_THIS_(T) T*,
# endif
# define DECLARE_ENUMERATOR_(I,T) \
DECLARE_INTERFACE_(I,IUnknown) \
{ \
STDMETHOD(QueryInterface)(IENUM_THIS_(I) REFIID,PVOID*) PURE; \
STDMETHOD_(ULONG,AddRef)(IENUM_THIS(I)) PURE; \
STDMETHOD_(ULONG,Release)(IENUM_THIS(I)) PURE; \
STDMETHOD(Next)(IENUM_THIS_(I) ULONG,T*,ULONG*) PURE; \
STDMETHOD(Skip)(IENUM_THIS_(I) ULONG) PURE; \
STDMETHOD(Reset)(IENUM_THIS(I)) PURE; \
STDMETHOD(Clone)(IENUM_THIS_(I) I**) PURE; \
}
# define DECLARE_ENUMERATOR(T) DECLARE_ENUMERATOR_(IEnum##T,T)
#endif /* __OBJC__ */
#ifdef _GUID_DEFINED
# warning _GUID_DEFINED is deprecated, use GUID_DEFINED instead
#endif
#if ! (defined _GUID_DEFINED || defined GUID_DEFINED) /* also defined in winnt.h */
#define GUID_DEFINED
typedef struct _GUID
{
unsigned long Data1;
unsigned short Data2;
unsigned short Data3;
unsigned char Data4[8];
} GUID,*REFGUID,*LPGUID;
#endif /* GUID_DEFINED */
#ifndef UUID_DEFINED
#define UUID_DEFINED
typedef GUID UUID;
#endif /* UUID_DEFINED */
typedef GUID IID;
typedef GUID CLSID;
typedef CLSID *LPCLSID;
typedef IID *LPIID;
typedef IID *REFIID;
typedef CLSID *REFCLSID;
typedef GUID FMTID;
typedef FMTID *REFFMTID;
typedef unsigned long error_status_t;
#define uuid_t UUID
typedef unsigned long PROPID;
#ifndef _REFGUID_DEFINED
#if defined (__cplusplus) && !defined (CINTERFACE)
#define REFGUID const GUID&
#define REFIID const IID&
#define REFCLSID const CLSID&
#else
#define REFGUID const GUID* const
#define REFIID const IID* const
#define REFCLSID const CLSID* const
#endif
#define _REFGUID_DEFINED
#define _REFGIID_DEFINED
#define _REFCLSID_DEFINED
#endif
#ifndef GUID_SECTION
#define GUID_SECTION ".text"
#endif
#ifdef __GNUC__
#define GUID_SECT __attribute__ ((section (GUID_SECTION)))
#else
#define GUID_SECT
#endif
#if !defined(INITGUID) || (defined(INITGUID) && defined(__cplusplus))
#define GUID_EXT EXTERN_C
#else
#define GUID_EXT
#endif
#ifdef INITGUID
#define DEFINE_GUID(n,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) GUID_EXT const GUID n GUID_SECT = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
#define DEFINE_OLEGUID(n,l,w1,w2) DEFINE_GUID(n,l,w1,w2,0xC0,0,0,0,0,0,0,0x46)
#else
#define DEFINE_GUID(n,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) GUID_EXT const GUID n
#define DEFINE_OLEGUID(n,l,w1,w2) DEFINE_GUID(n,l,w1,w2,0xC0,0,0,0,0,0,0,0x46)
#endif
#endif

4239
TBE/MinGW/include/bfd.h Normal file

File diff suppressed because it is too large Load Diff

638
TBE/MinGW/include/bfdlink.h Normal file
View File

@@ -0,0 +1,638 @@
/* bfdlink.h -- header file for BFD link routines
Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2002
Free Software Foundation, Inc.
Written by Steve Chamberlain and Ian Lance Taylor, Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
#ifndef BFDLINK_H
#define BFDLINK_H
/* Which symbols to strip during a link. */
enum bfd_link_strip
{
strip_none, /* Don't strip any symbols. */
strip_debugger, /* Strip debugging symbols. */
strip_some, /* keep_hash is the list of symbols to keep. */
strip_all /* Strip all symbols. */
};
/* Which local symbols to discard during a link. This is irrelevant
if strip_all is used. */
enum bfd_link_discard
{
discard_sec_merge, /* Discard local temporary symbols in SEC_MERGE
sections. */
discard_none, /* Don't discard any locals. */
discard_l, /* Discard local temporary symbols. */
discard_all /* Discard all locals. */
};
/* Describes the type of hash table entry structure being used.
Different hash table structure have different fields and so
support different linking features. */
enum bfd_link_hash_table_type
{
bfd_link_generic_hash_table,
bfd_link_elf_hash_table
};
/* These are the possible types of an entry in the BFD link hash
table. */
enum bfd_link_hash_type
{
bfd_link_hash_new, /* Symbol is new. */
bfd_link_hash_undefined, /* Symbol seen before, but undefined. */
bfd_link_hash_undefweak, /* Symbol is weak and undefined. */
bfd_link_hash_defined, /* Symbol is defined. */
bfd_link_hash_defweak, /* Symbol is weak and defined. */
bfd_link_hash_common, /* Symbol is common. */
bfd_link_hash_indirect, /* Symbol is an indirect link. */
bfd_link_hash_warning /* Like indirect, but warn if referenced. */
};
enum bfd_link_common_skip_ar_aymbols
{
bfd_link_common_skip_none,
bfd_link_common_skip_text,
bfd_link_common_skip_data,
bfd_link_common_skip_all
};
/* The linking routines use a hash table which uses this structure for
its elements. */
struct bfd_link_hash_entry
{
/* Base hash table entry structure. */
struct bfd_hash_entry root;
/* Type of this entry. */
enum bfd_link_hash_type type;
/* Undefined and common symbols are kept in a linked list through
this field. This field is not in the union because that would
force us to remove entries from the list when we changed their
type, which would force the list to be doubly linked, which would
waste more memory. When an undefined or common symbol is
created, it should be added to this list, the head of which is in
the link hash table itself. As symbols are defined, they need
not be removed from the list; anything which reads the list must
doublecheck the symbol type.
Weak symbols are not kept on this list.
Defined and defweak symbols use this field as a reference marker.
If the field is not NULL, or this structure is the tail of the
undefined symbol list, the symbol has been referenced. If the
symbol is undefined and becomes defined, this field will
automatically be non-NULL since the symbol will have been on the
undefined symbol list. */
struct bfd_link_hash_entry *next;
/* A union of information depending upon the type. */
union
{
/* Nothing is kept for bfd_hash_new. */
/* bfd_link_hash_undefined, bfd_link_hash_undefweak. */
struct
{
bfd *abfd; /* BFD symbol was found in. */
} undef;
/* bfd_link_hash_defined, bfd_link_hash_defweak. */
struct
{
bfd_vma value; /* Symbol value. */
asection *section; /* Symbol section. */
} def;
/* bfd_link_hash_indirect, bfd_link_hash_warning. */
struct
{
struct bfd_link_hash_entry *link; /* Real symbol. */
const char *warning; /* Warning (bfd_link_hash_warning only). */
} i;
/* bfd_link_hash_common. */
struct
{
/* The linker needs to know three things about common
symbols: the size, the alignment, and the section in
which the symbol should be placed. We store the size
here, and we allocate a small structure to hold the
section and the alignment. The alignment is stored as a
power of two. We don't store all the information
directly because we don't want to increase the size of
the union; this structure is a major space user in the
linker. */
bfd_size_type size; /* Common symbol size. */
struct bfd_link_hash_common_entry
{
unsigned int alignment_power; /* Alignment. */
asection *section; /* Symbol section. */
} *p;
} c;
} u;
};
/* This is the link hash table. It is a derived class of
bfd_hash_table. */
struct bfd_link_hash_table
{
/* The hash table itself. */
struct bfd_hash_table table;
/* The back end which created this hash table. This indicates the
type of the entries in the hash table, which is sometimes
important information when linking object files of different
types together. */
const bfd_target *creator;
/* A linked list of undefined and common symbols, linked through the
next field in the bfd_link_hash_entry structure. */
struct bfd_link_hash_entry *undefs;
/* Entries are added to the tail of the undefs list. */
struct bfd_link_hash_entry *undefs_tail;
/* The type of the ink hash table. */
enum bfd_link_hash_table_type type;
};
/* Look up an entry in a link hash table. If FOLLOW is TRUE, this
follows bfd_link_hash_indirect and bfd_link_hash_warning links to
the real symbol. */
extern struct bfd_link_hash_entry *bfd_link_hash_lookup
PARAMS ((struct bfd_link_hash_table *, const char *, bfd_boolean create,
bfd_boolean copy, bfd_boolean follow));
/* Look up an entry in the main linker hash table if the symbol might
be wrapped. This should only be used for references to an
undefined symbol, not for definitions of a symbol. */
extern struct bfd_link_hash_entry *bfd_wrapped_link_hash_lookup
PARAMS ((bfd *, struct bfd_link_info *, const char *, bfd_boolean,
bfd_boolean, bfd_boolean));
/* Traverse a link hash table. */
extern void bfd_link_hash_traverse
PARAMS ((struct bfd_link_hash_table *,
bfd_boolean (*) (struct bfd_link_hash_entry *, PTR),
PTR));
/* Add an entry to the undefs list. */
extern void bfd_link_add_undef
PARAMS ((struct bfd_link_hash_table *, struct bfd_link_hash_entry *));
struct bfd_sym_chain
{
struct bfd_sym_chain *next;
const char *name;
};
/* This structure holds all the information needed to communicate
between BFD and the linker when doing a link. */
struct bfd_link_info
{
/* TRUE if BFD should generate a relocatable object file. */
unsigned int relocateable: 1;
/* TRUE if BFD should generate relocation information in the final
executable. */
unsigned int emitrelocations: 1;
/* TRUE if BFD should generate a "task linked" object file,
similar to relocatable but also with globals converted to
statics. */
unsigned int task_link: 1;
/* TRUE if BFD should generate a shared object. */
unsigned int shared: 1;
/* TRUE if BFD should pre-bind symbols in a shared object. */
unsigned int symbolic: 1;
/* TRUE if BFD should export all symbols in the dynamic symbol table
of an executable, rather than only those used. */
unsigned int export_dynamic: 1;
/* TRUE if shared objects should be linked directly, not shared. */
unsigned int static_link: 1;
/* TRUE if the output file should be in a traditional format. This
is equivalent to the setting of the BFD_TRADITIONAL_FORMAT flag
on the output file, but may be checked when reading the input
files. */
unsigned int traditional_format: 1;
/* TRUE if we want to produced optimized output files. This might
need much more time and therefore must be explicitly selected. */
unsigned int optimize: 1;
/* TRUE if BFD should generate errors for undefined symbols
even if generating a shared object. */
unsigned int no_undefined: 1;
/* TRUE if BFD should allow undefined symbols in shared objects even
when no_undefined is set to disallow undefined symbols. The net
result will be that undefined symbols in regular objects will
still trigger an error, but undefined symbols in shared objects
will be ignored. The implementation of no_undefined makes the
assumption that the runtime linker will choke on undefined
symbols. However there is at least one system (BeOS) where
undefined symbols in shared libraries is normal since the kernel
patches them at load time to select which function is most
appropriate for the current architecture. I.E. dynamically
select an appropriate memset function. Apparently it is also
normal for HPPA shared libraries to have undefined symbols. */
unsigned int allow_shlib_undefined: 1;
/* TRUE if ok to have multiple definition. */
unsigned int allow_multiple_definition: 1;
/* TRUE if ok to have version with no definition. */
unsigned int allow_undefined_version: 1;
/* TRUE if symbols should be retained in memory, FALSE if they
should be freed and reread. */
unsigned int keep_memory: 1;
/* TRUE if every symbol should be reported back via the notice
callback. */
unsigned int notice_all: 1;
/* TRUE if executable should not contain copy relocs.
Setting this true may result in a non-sharable text segment. */
unsigned int nocopyreloc: 1;
/* TRUE if the new ELF dynamic tags are enabled. */
unsigned int new_dtags: 1;
/* TRUE if non-PLT relocs should be merged into one reloc section
and sorted so that relocs against the same symbol come together. */
unsigned int combreloc: 1;
/* TRUE if .eh_frame_hdr section and PT_GNU_EH_FRAME ELF segment
should be created. */
unsigned int eh_frame_hdr: 1;
/* TRUE if global symbols in discarded sections should be stripped. */
unsigned int strip_discarded: 1;
/* Which symbols to strip. */
enum bfd_link_strip strip;
/* Which local symbols to discard. */
enum bfd_link_discard discard;
/* Criteria for skipping symbols when detemining
whether to include an object from an archive. */
enum bfd_link_common_skip_ar_aymbols common_skip_ar_aymbols;
/* Function callbacks. */
const struct bfd_link_callbacks *callbacks;
/* Hash table handled by BFD. */
struct bfd_link_hash_table *hash;
/* Hash table of symbols to keep. This is NULL unless strip is
strip_some. */
struct bfd_hash_table *keep_hash;
/* Hash table of symbols to report back via the notice callback. If
this is NULL, and notice_all is FALSE, then no symbols are
reported back. */
struct bfd_hash_table *notice_hash;
/* Hash table of symbols which are being wrapped (the --wrap linker
option). If this is NULL, no symbols are being wrapped. */
struct bfd_hash_table *wrap_hash;
/* The list of input BFD's involved in the link. These are chained
together via the link_next field. */
bfd *input_bfds;
/* If a symbol should be created for each input BFD, this is section
where those symbols should be placed. It must be a section in
the output BFD. It may be NULL, in which case no such symbols
will be created. This is to support CREATE_OBJECT_SYMBOLS in the
linker command language. */
asection *create_object_symbols_section;
/* List of global symbol names that are starting points for marking
sections against garbage collection. */
struct bfd_sym_chain *gc_sym_list;
/* If a base output file is wanted, then this points to it */
PTR base_file;
/* The function to call when the executable or shared object is
loaded. */
const char *init_function;
/* The function to call when the executable or shared object is
unloaded. */
const char *fini_function;
/* If non-zero, specifies that branches which are problematic for the
MPC860 C0 (or earlier) should be checked for and modified. It gives the
number of bytes that should be checked at the end of each text page. */
int mpc860c0;
/* Non-zero if auto-import thunks for DATA items in pei386 DLLs
should be generated/linked against. Set to 1 if this feature
is explicitly requested by the user, -1 if enabled by default. */
int pei386_auto_import;
/* Non-zero if runtime relocs for DATA items with non-zero addends
in pei386 DLLs should be generated. Set to 1 if this feature
is explicitly requested by the user, -1 if enabled by default. */
int pei386_runtime_pseudo_reloc;
/* How many spare .dynamic DT_NULL entries should be added? */
unsigned int spare_dynamic_tags;
/* May be used to set DT_FLAGS for ELF. */
bfd_vma flags;
/* May be used to set DT_FLAGS_1 for ELF. */
bfd_vma flags_1;
};
/* This structures holds a set of callback functions. These are
called by the BFD linker routines. The first argument to each
callback function is the bfd_link_info structure being used. Each
function returns a boolean value. If the function returns FALSE,
then the BFD function which called it will return with a failure
indication. */
struct bfd_link_callbacks
{
/* A function which is called when an object is added from an
archive. ABFD is the archive element being added. NAME is the
name of the symbol which caused the archive element to be pulled
in. */
bfd_boolean (*add_archive_element)
PARAMS ((struct bfd_link_info *, bfd *abfd, const char *name));
/* A function which is called when a symbol is found with multiple
definitions. NAME is the symbol which is defined multiple times.
OBFD is the old BFD, OSEC is the old section, OVAL is the old
value, NBFD is the new BFD, NSEC is the new section, and NVAL is
the new value. OBFD may be NULL. OSEC and NSEC may be
bfd_com_section or bfd_ind_section. */
bfd_boolean (*multiple_definition)
PARAMS ((struct bfd_link_info *, const char *name,
bfd *obfd, asection *osec, bfd_vma oval,
bfd *nbfd, asection *nsec, bfd_vma nval));
/* A function which is called when a common symbol is defined
multiple times. NAME is the symbol appearing multiple times.
OBFD is the BFD of the existing symbol; it may be NULL if this is
not known. OTYPE is the type of the existing symbol, which may
be bfd_link_hash_defined, bfd_link_hash_defweak,
bfd_link_hash_common, or bfd_link_hash_indirect. If OTYPE is
bfd_link_hash_common, OSIZE is the size of the existing symbol.
NBFD is the BFD of the new symbol. NTYPE is the type of the new
symbol, one of bfd_link_hash_defined, bfd_link_hash_common, or
bfd_link_hash_indirect. If NTYPE is bfd_link_hash_common, NSIZE
is the size of the new symbol. */
bfd_boolean (*multiple_common)
PARAMS ((struct bfd_link_info *, const char *name,
bfd *obfd, enum bfd_link_hash_type otype, bfd_vma osize,
bfd *nbfd, enum bfd_link_hash_type ntype, bfd_vma nsize));
/* A function which is called to add a symbol to a set. ENTRY is
the link hash table entry for the set itself (e.g.,
__CTOR_LIST__). RELOC is the relocation to use for an entry in
the set when generating a relocateable file, and is also used to
get the size of the entry when generating an executable file.
ABFD, SEC and VALUE identify the value to add to the set. */
bfd_boolean (*add_to_set)
PARAMS ((struct bfd_link_info *, struct bfd_link_hash_entry *entry,
bfd_reloc_code_real_type reloc, bfd *abfd, asection *sec,
bfd_vma value));
/* A function which is called when the name of a g++ constructor or
destructor is found. This is only called by some object file
formats. CONSTRUCTOR is TRUE for a constructor, FALSE for a
destructor. This will use BFD_RELOC_CTOR when generating a
relocateable file. NAME is the name of the symbol found. ABFD,
SECTION and VALUE are the value of the symbol. */
bfd_boolean (*constructor)
PARAMS ((struct bfd_link_info *, bfd_boolean constructor,
const char *name, bfd *abfd, asection *sec, bfd_vma value));
/* A function which is called to issue a linker warning. For
example, this is called when there is a reference to a warning
symbol. WARNING is the warning to be issued. SYMBOL is the name
of the symbol which triggered the warning; it may be NULL if
there is none. ABFD, SECTION and ADDRESS identify the location
which trigerred the warning; either ABFD or SECTION or both may
be NULL if the location is not known. */
bfd_boolean (*warning)
PARAMS ((struct bfd_link_info *, const char *warning, const char *symbol,
bfd *abfd, asection *section, bfd_vma address));
/* A function which is called when a relocation is attempted against
an undefined symbol. NAME is the symbol which is undefined.
ABFD, SECTION and ADDRESS identify the location from which the
reference is made. FATAL indicates whether an undefined symbol is
a fatal error or not. In some cases SECTION may be NULL. */
bfd_boolean (*undefined_symbol)
PARAMS ((struct bfd_link_info *, const char *name, bfd *abfd,
asection *section, bfd_vma address, bfd_boolean fatal));
/* A function which is called when a reloc overflow occurs. NAME is
the name of the symbol or section the reloc is against,
RELOC_NAME is the name of the relocation, and ADDEND is any
addend that is used. ABFD, SECTION and ADDRESS identify the
location at which the overflow occurs; if this is the result of a
bfd_section_reloc_link_order or bfd_symbol_reloc_link_order, then
ABFD will be NULL. */
bfd_boolean (*reloc_overflow)
PARAMS ((struct bfd_link_info *, const char *name, const char *reloc_name,
bfd_vma addend, bfd *abfd, asection *section, bfd_vma address));
/* A function which is called when a dangerous reloc is performed.
The canonical example is an a29k IHCONST reloc which does not
follow an IHIHALF reloc. MESSAGE is an appropriate message.
ABFD, SECTION and ADDRESS identify the location at which the
problem occurred; if this is the result of a
bfd_section_reloc_link_order or bfd_symbol_reloc_link_order, then
ABFD will be NULL. */
bfd_boolean (*reloc_dangerous)
PARAMS ((struct bfd_link_info *, const char *message,
bfd *abfd, asection *section, bfd_vma address));
/* A function which is called when a reloc is found to be attached
to a symbol which is not being written out. NAME is the name of
the symbol. ABFD, SECTION and ADDRESS identify the location of
the reloc; if this is the result of a
bfd_section_reloc_link_order or bfd_symbol_reloc_link_order, then
ABFD will be NULL. */
bfd_boolean (*unattached_reloc)
PARAMS ((struct bfd_link_info *, const char *name,
bfd *abfd, asection *section, bfd_vma address));
/* A function which is called when a symbol in notice_hash is
defined or referenced. NAME is the symbol. ABFD, SECTION and
ADDRESS are the value of the symbol. If SECTION is
bfd_und_section, this is a reference. */
bfd_boolean (*notice)
PARAMS ((struct bfd_link_info *, const char *name,
bfd *abfd, asection *section, bfd_vma address));
};
/* The linker builds link_order structures which tell the code how to
include input data in the output file. */
/* These are the types of link_order structures. */
enum bfd_link_order_type
{
bfd_undefined_link_order, /* Undefined. */
bfd_indirect_link_order, /* Built from a section. */
bfd_data_link_order, /* Set to explicit data. */
bfd_section_reloc_link_order, /* Relocate against a section. */
bfd_symbol_reloc_link_order /* Relocate against a symbol. */
};
/* This is the link_order structure itself. These form a chain
attached to the section whose contents they are describing. */
struct bfd_link_order
{
/* Next link_order in chain. */
struct bfd_link_order *next;
/* Type of link_order. */
enum bfd_link_order_type type;
/* Offset within output section. */
bfd_vma offset;
/* Size within output section. */
bfd_size_type size;
/* Type specific information. */
union
{
struct
{
/* Section to include. If this is used, then
section->output_section must be the section the
link_order is attached to, section->output_offset must
equal the link_order offset field, and section->_raw_size
must equal the link_order size field. Maybe these
restrictions should be relaxed someday. */
asection *section;
} indirect;
struct
{
/* Size of contents, or zero when contents size == size
within output section.
A non-zero value allows filling of the output section
with an arbitrary repeated pattern. */
unsigned int size;
/* Data to put into file. */
bfd_byte *contents;
} data;
struct
{
/* Description of reloc to generate. Used for
bfd_section_reloc_link_order and
bfd_symbol_reloc_link_order. */
struct bfd_link_order_reloc *p;
} reloc;
} u;
};
/* A linker order of type bfd_section_reloc_link_order or
bfd_symbol_reloc_link_order means to create a reloc against a
section or symbol, respectively. This is used to implement -Ur to
generate relocs for the constructor tables. The
bfd_link_order_reloc structure describes the reloc that BFD should
create. It is similar to a arelent, but I didn't use arelent
because the linker does not know anything about most symbols, and
any asymbol structure it creates will be partially meaningless.
This information could logically be in the bfd_link_order struct,
but I didn't want to waste the space since these types of relocs
are relatively rare. */
struct bfd_link_order_reloc
{
/* Reloc type. */
bfd_reloc_code_real_type reloc;
union
{
/* For type bfd_section_reloc_link_order, this is the section
the reloc should be against. This must be a section in the
output BFD, not any of the input BFDs. */
asection *section;
/* For type bfd_symbol_reloc_link_order, this is the name of the
symbol the reloc should be against. */
const char *name;
} u;
/* Addend to use. The object file should contain zero. The BFD
backend is responsible for filling in the contents of the object
file correctly. For some object file formats (e.g., COFF) the
addend must be stored into in the object file, and for some
(e.g., SPARC a.out) it is kept in the reloc. */
bfd_vma addend;
};
/* Allocate a new link_order for a section. */
extern struct bfd_link_order *bfd_new_link_order PARAMS ((bfd *, asection *));
/* These structures are used to describe version information for the
ELF linker. These structures could be manipulated entirely inside
BFD, but it would be a pain. Instead, the regular linker sets up
these structures, and then passes them into BFD. */
/* Regular expressions for a version. */
struct bfd_elf_version_expr
{
/* Next regular expression for this version. */
struct bfd_elf_version_expr *next;
/* Regular expression. */
const char *pattern;
/* Matching function. */
int (*match) PARAMS ((struct bfd_elf_version_expr *, const char *));
/* Defined by ".symver". */
unsigned int symver: 1;
/* Defined by version script. */
unsigned int script : 1;
};
/* Version dependencies. */
struct bfd_elf_version_deps
{
/* Next dependency for this version. */
struct bfd_elf_version_deps *next;
/* The version which this version depends upon. */
struct bfd_elf_version_tree *version_needed;
};
/* A node in the version tree. */
struct bfd_elf_version_tree
{
/* Next version. */
struct bfd_elf_version_tree *next;
/* Name of this version. */
const char *name;
/* Version number. */
unsigned int vernum;
/* Regular expressions for global symbols in this version. */
struct bfd_elf_version_expr *globals;
/* Regular expressions for local symbols in this version. */
struct bfd_elf_version_expr *locals;
/* List of versions which this version depends upon. */
struct bfd_elf_version_deps *deps;
/* Index of the version name. This is used within BFD. */
unsigned int name_indx;
/* Whether this version tree was used. This is used within BFD. */
int used;
};
#endif

View File

@@ -0,0 +1,75 @@
// <algorithm> -*- C++ -*-
// Copyright (C) 2001, 2002 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/*
*
* Copyright (c) 1994
* Hewlett-Packard Company
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Hewlett-Packard Company makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*
*
* Copyright (c) 1996,1997
* Silicon Graphics Computer Systems, Inc.
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Silicon Graphics makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*/
/** @file algorithm
* This is a Standard C++ Library header. You should @c #include this header
* in your programs, rather than any of the "st[dl]_*.h" implementation files.
*/
#ifndef _CPP_ALGORITHM
#define _CPP_ALGORITHM 1
#pragma GCC system_header
#include <bits/stl_algobase.h>
#include <bits/stl_construct.h>
#include <bits/stl_uninitialized.h>
#include <bits/stl_algo.h>
#endif /* _CPP_ALGORITHM */
// Local Variables:
// mode:C++
// End:

View File

@@ -0,0 +1,149 @@
// Backward-compat support -*- C++ -*-
// Copyright (C) 2001 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/*
*
* Copyright (c) 1994
* Hewlett-Packard Company
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Hewlett-Packard Company makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*
*
* Copyright (c) 1996,1997
* Silicon Graphics Computer Systems, Inc.
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Silicon Graphics makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*/
#ifndef _CPP_BACKWARD_ALGO_H
#define _CPP_BACKWARD_ALGO_H 1
#include "backward_warning.h"
#include "algobase.h"
#include "tempbuf.h"
#include "iterator.h"
#include <bits/stl_algo.h>
#include <bits/stl_numeric.h>
#include <ext/algorithm>
#include <ext/numeric>
// Names from <stl_algo.h>
using std::for_each;
using std::find;
using std::find_if;
using std::adjacent_find;
using std::count;
using std::count_if;
using std::search;
using std::search_n;
using std::swap_ranges;
using std::transform;
using std::replace;
using std::replace_if;
using std::replace_copy;
using std::replace_copy_if;
using std::generate;
using std::generate_n;
using std::remove;
using std::remove_if;
using std::remove_copy;
using std::remove_copy_if;
using std::unique;
using std::unique_copy;
using std::reverse;
using std::reverse_copy;
using std::rotate;
using std::rotate_copy;
using std::random_shuffle;
using std::partition;
using std::stable_partition;
using std::sort;
using std::stable_sort;
using std::partial_sort;
using std::partial_sort_copy;
using std::nth_element;
using std::lower_bound;
using std::upper_bound;
using std::equal_range;
using std::binary_search;
using std::merge;
using std::inplace_merge;
using std::includes;
using std::set_union;
using std::set_intersection;
using std::set_difference;
using std::set_symmetric_difference;
using std::min_element;
using std::max_element;
using std::next_permutation;
using std::prev_permutation;
using std::find_first_of;
using std::find_end;
// Names from stl_heap.h
using std::push_heap;
using std::pop_heap;
using std::make_heap;
using std::sort_heap;
// Names from stl_numeric.h
using std::accumulate;
using std::inner_product;
using std::partial_sum;
using std::adjacent_difference;
// Names from ext/algorithm
using __gnu_cxx::random_sample;
using __gnu_cxx::random_sample_n;
using __gnu_cxx::is_sorted;
using __gnu_cxx::is_heap;
using __gnu_cxx::count; // Extension returning void
using __gnu_cxx::count_if; // Extension returning void
// Names from ext/numeric
using __gnu_cxx::power;
using __gnu_cxx::iota;
#endif /* _CPP_BACKWARD_ALGO_H */
// Local Variables:
// mode:C++
// End:

View File

@@ -0,0 +1,95 @@
// Backward-compat support -*- C++ -*-
// Copyright (C) 2001 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/*
*
* Copyright (c) 1994
* Hewlett-Packard Company
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Hewlett-Packard Company makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*
* Copyright (c) 1996,1997
* Silicon Graphics Computer Systems, Inc.
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Silicon Graphics makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*/
#ifndef _CPP_BACKWARD_ALGOBASE_H
#define _CPP_BACKWARD_ALGOBASE_H 1
#include "backward_warning.h"
#include "pair.h"
#include "iterator.h"
#include <bits/stl_algobase.h>
#include <bits/stl_uninitialized.h>
#include <ext/algorithm>
#include <ext/memory>
// Names from stl_algobase.h
using std::iter_swap;
using std::swap;
using std::min;
using std::max;
using std::copy;
using std::copy_backward;
using std::fill;
using std::fill_n;
using std::mismatch;
using std::equal;
using std::lexicographical_compare;
// Names from stl_uninitialized.h
using std::uninitialized_copy;
using std::uninitialized_fill;
using std::uninitialized_fill_n;
// Names from ext/algorithm
using __gnu_cxx::copy_n;
using __gnu_cxx::lexicographical_compare_3way;
// Names from ext/memory
using __gnu_cxx::uninitialized_copy_n;
#endif /* _CPP_BACKWARD_ALGOBASE_H */
// Local Variables:
// mode:C++
// End:

View File

@@ -0,0 +1,58 @@
// Backward-compat support -*- C++ -*-
// Copyright (C) 2001 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/*
* Copyright (c) 1996-1997
* Silicon Graphics Computer Systems, Inc.
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Silicon Graphics makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*/
#ifndef _CPP_BACKWARD_ALLOC_H
#define _CPP_BACKWARD_ALLOC_H 1
#include "backward_warning.h"
#include <bits/c++config.h>
#include <bits/stl_alloc.h>
using std::__malloc_alloc_template;
using std::__simple_alloc;
using std::__debug_alloc;
using std::__alloc;
using std::__single_client_alloc;
using std::allocator;
using std::__default_alloc_template;
#endif

View File

@@ -0,0 +1,39 @@
// Copyright (C) 2001 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
#ifndef _CPP_BACKWARD_BACKWARD_WARNING_H
#define _CPP_BACKWARD_BACKWARD_WARNING_H 1
#ifdef __DEPRECATED
#warning This file includes at least one deprecated or antiquated header. \
Please consider using one of the 32 headers found in section 17.4.1.2 of the \
C++ standard. Examples include substituting the <X> header for the <X.h> \
header for C++ includes, or <sstream> instead of the deprecated header \
<strstream.h>. To disable this warning use -Wno-deprecated.
#endif
#endif

View File

@@ -0,0 +1,69 @@
// Backward-compat support -*- C++ -*-
// Copyright (C) 2001 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/*
*
* Copyright (c) 1994
* Hewlett-Packard Company
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Hewlett-Packard Company makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*
*
* Copyright (c) 1996
* Silicon Graphics Computer Systems, Inc.
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Silicon Graphics makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*/
#ifndef __SGI_STL_BVECTOR_H
#define __SGI_STL_BVECTOR_H
#include "backward_warning.h"
#include <vector>
using std::bit_vector;
#endif /* __SGI_STL_BVECTOR_H */
// Local Variables:
// mode:C++
// End:

View File

@@ -0,0 +1,43 @@
// Copyright (C) 2000 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
#ifndef _CPP_BACKWARD_COMPLEX_H
#define _CPP_BACKWARD_COMPLEX_H 1
#include "backward_warning.h"
#include <complex>
using std::complex;
typedef complex<float> float_complex;
typedef complex<double> double_complex;
typedef complex<long double> long_double_complex;
#endif
// Local Variables:
// mode:C++
// End:

View File

@@ -0,0 +1,117 @@
// Backward-compat support -*- C++ -*-
// Copyright (C) 2001 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/*
*
* Copyright (c) 1994
* Hewlett-Packard Company
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Hewlett-Packard Company makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*
*/
// Inclusion of this file is DEPRECATED. This is the original HP
// default allocator. It is provided only for backward compatibility.
// This file WILL BE REMOVED in a future release.
//
// DO NOT USE THIS FILE unless you have an old container implementation
// that requires an allocator with the HP-style interface.
//
// Standard-conforming allocators have a very different interface. The
// standard default allocator is declared in the header <memory>.
#ifndef _CPP_BACKWARD_DEFALLOC_H
#define _CPP_BACKWARD_DEFALLOC_H 1
#include "backward_warning.h"
#include "new.h"
#include <stddef.h>
#include <stdlib.h>
#include <limits.h>
#include "iostream.h"
#include "algobase.h"
template <class _Tp>
inline _Tp* allocate(ptrdiff_t __size, _Tp*) {
set_new_handler(0);
_Tp* __tmp = (_Tp*)(::operator new((size_t)(__size * sizeof(_Tp))));
if (__tmp == 0) {
cerr << "out of memory" << endl;
exit(1);
}
return __tmp;
}
template <class _Tp>
inline void deallocate(_Tp* __buffer) {
::operator delete(__buffer);
}
template <class _Tp>
class allocator {
public:
typedef _Tp value_type;
typedef _Tp* pointer;
typedef const _Tp* const_pointer;
typedef _Tp& reference;
typedef const _Tp& const_reference;
typedef size_t size_type;
typedef ptrdiff_t difference_type;
pointer allocate(size_type __n) {
return ::allocate((difference_type)__n, (pointer)0);
}
void deallocate(pointer __p) { ::deallocate(__p); }
pointer address(reference __x) { return (pointer)&__x; }
const_pointer const_address(const_reference __x) {
return (const_pointer)&__x;
}
size_type init_page_size() {
return max(size_type(1), size_type(4096/sizeof(_Tp)));
}
size_type max_size() const {
return max(size_type(1), size_type(UINT_MAX/sizeof(_Tp)));
}
};
class allocator<void> {
public:
typedef void* pointer;
};
#endif /* _CPP_BACKWARD_DEFALLOC_H */

View File

@@ -0,0 +1,70 @@
// Backward-compat support -*- C++ -*-
// Copyright (C) 2001 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/*
*
* Copyright (c) 1994
* Hewlett-Packard Company
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Hewlett-Packard Company makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*
*
* Copyright (c) 1997
* Silicon Graphics Computer Systems, Inc.
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Silicon Graphics makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*/
#ifndef _CPP_BACKWARD_DEQUE_H
#define _CPP_BACKWARD_DEQUE_H 1
#include "backward_warning.h"
#include "algobase.h"
#include "alloc.h"
#include <deque>
using std::deque;
#endif /* _CPP_BACKWARD_DEQUE_H */
// Local Variables:
// mode:C++
// End:

View File

@@ -0,0 +1,52 @@
// Copyright (C) 2000, 2001 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
#ifndef _CPP_BACKWARD_FSTREAM_H
#define _CPP_BACKWARD_FSTREAM_H 1
#include "backward_warning.h"
#include <fstream>
using std::filebuf;
using std::ifstream;
using std::ofstream;
using std::fstream;
using std::streampos;
#ifdef _GLIBCPP_USE_WCHAR_T
using std::wfilebuf;
using std::wifstream;
using std::wofstream;
using std::wfstream;
using std::wstreampos;
#endif
#endif
// Local Variables:
// mode:C++
// End:

View File

@@ -0,0 +1,130 @@
// Backward-compat support -*- C++ -*-
// Copyright (C) 2001 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/*
*
* Copyright (c) 1994
* Hewlett-Packard Company
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Hewlett-Packard Company makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*
*
* Copyright (c) 1996,1997
* Silicon Graphics Computer Systems, Inc.
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Silicon Graphics makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*/
#ifndef _CPP_BACKWARD_FUNCTION_H
#define _CPP_BACKWARD_FUNCTION_H 1
#include "backward_warning.h"
#include <bits/c++config.h>
#include <stddef.h>
#include <bits/stl_function.h>
#include <ext/functional>
// Names from stl_function.h
using std::unary_function;
using std::binary_function;
using std::plus;
using std::minus;
using std::multiplies;
using std::divides;
using std::modulus;
using std::negate;
using std::equal_to;
using std::not_equal_to;
using std::greater;
using std::less;
using std::greater_equal;
using std::less_equal;
using std::logical_and;
using std::logical_or;
using std::logical_not;
using std::unary_negate;
using std::binary_negate;
using std::not1;
using std::not2;
using std::binder1st;
using std::binder2nd;
using std::bind1st;
using std::bind2nd;
using std::pointer_to_unary_function;
using std::pointer_to_binary_function;
using std::ptr_fun;
using std::mem_fun_t;
using std::const_mem_fun_t;
using std::mem_fun_ref_t;
using std::const_mem_fun_ref_t;
using std::mem_fun1_t;
using std::const_mem_fun1_t;
using std::mem_fun1_ref_t;
using std::const_mem_fun1_ref_t;
using std::mem_fun;
using std::mem_fun_ref;
// Names from ext/functional
using __gnu_cxx::identity_element;
using __gnu_cxx::unary_compose;
using __gnu_cxx::binary_compose;
using __gnu_cxx::compose1;
using __gnu_cxx::compose2;
using __gnu_cxx::identity;
using __gnu_cxx::select1st;
using __gnu_cxx::select2nd;
using __gnu_cxx::project1st;
using __gnu_cxx::project2nd;
using __gnu_cxx::constant_void_fun;
using __gnu_cxx::constant_unary_fun;
using __gnu_cxx::constant_binary_fun;
using __gnu_cxx::constant0;
using __gnu_cxx::constant1;
using __gnu_cxx::constant2;
using __gnu_cxx::subtractive_rng;
using __gnu_cxx::mem_fun1;
using __gnu_cxx::mem_fun1_ref;
#endif /* _CPP_BACKWARD_FUNCTION_H */
// Local Variables:
// mode:C++
// End:

View File

@@ -0,0 +1,72 @@
// Backward-compat support -*- C++ -*-
// Copyright (C) 2001 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/*
* Copyright (c) 1996
* Silicon Graphics Computer Systems, Inc.
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Silicon Graphics makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*
*
* Copyright (c) 1994
* Hewlett-Packard Company
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Hewlett-Packard Company makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*
*/
#ifndef _CPP_BACKWARD_HASH_MAP_H
#define _CPP_BACKWARD_HASH_MAP_H 1
#include "backward_warning.h"
#include "algobase.h"
#include <ext/hash_map>
using __gnu_cxx::hash;
using __gnu_cxx::hashtable;
using __gnu_cxx::hash_map;
using __gnu_cxx::hash_multimap;
#endif /* _CPP_BACKWARD_HASH_MAP_H */
// Local Variables:
// mode:C++
// End:

View File

@@ -0,0 +1,69 @@
// Backward-compat support -*- C++ -*-
// Copyright (C) 2001 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/*
* Copyright (c) 1996
* Silicon Graphics Computer Systems, Inc.
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Silicon Graphics makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*
*
* Copyright (c) 1994
* Hewlett-Packard Company
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Hewlett-Packard Company makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*
*/
#ifndef _CPP_BACKWARD_HASH_SET_H
#define _CPP_BACKWARD_HASH_SET_H 1
#include "backward_warning.h"
#include "algobase.h"
#include <ext/hash_set>
using __gnu_cxx::hash;
using __gnu_cxx::hashtable;
using __gnu_cxx::hash_set;
using __gnu_cxx::hash_multiset;
#endif /* _CPP_BACKWARD_HASH_SET_H */

View File

@@ -0,0 +1,76 @@
// Backward-compat support -*- C++ -*-
// Copyright (C) 2001 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/*
* Copyright (c) 1996,1997
* Silicon Graphics Computer Systems, Inc.
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Silicon Graphics makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*
*
* Copyright (c) 1994
* Hewlett-Packard Company
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Hewlett-Packard Company makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*
*/
/* NOTE: This is an internal header file, included by other STL headers.
* You should not attempt to use it directly.
*/
#ifndef _CPP_BACKWARD_HASHTABLE_H
#define _CPP_BACKWARD_HASHTABLE_H 1
#include "backward_warning.h"
#include <ext/stl_hashtable.h>
#include "algo.h"
#include "alloc.h"
#include "vector.h"
using __gnu_cxx::hash;
using __gnu_cxx::hashtable;
#endif /* _CPP_BACKWARD_HASHTABLE_H */
// Local Variables:
// mode:C++
// End:

View File

@@ -0,0 +1,71 @@
// Backward-compat support -*- C++ -*-
// Copyright (C) 2001 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
/*
*
* Copyright (c) 1994
* Hewlett-Packard Company
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Hewlett-Packard Company makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*
* Copyright (c) 1997
* Silicon Graphics Computer Systems, Inc.
*
* Permission to use, copy, modify, distribute and sell this software
* and its documentation for any purpose is hereby granted without fee,
* provided that the above copyright notice appear in all copies and
* that both that copyright notice and this permission notice appear
* in supporting documentation. Silicon Graphics makes no
* representations about the suitability of this software for any
* purpose. It is provided "as is" without express or implied warranty.
*/
#ifndef _CPP_BACKWARD_HEAP_H
#define _CPP_BACKWARD_HEAP_H 1
#include "backward_warning.h"
#include <bits/c++config.h>
#include <bits/stl_heap.h>
using std::push_heap;
using std::pop_heap;
using std::make_heap;
using std::sort_heap;
#endif /* _CPP_BACKWARD_HEAP_H */
// Local Variables:
// mode:C++
// End:

View File

@@ -0,0 +1,70 @@
// Copyright (C) 2000 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
// terms of the GNU General Public License as published by the
// Free Software Foundation; either version 2, or (at your option)
// any later version.
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
// You should have received a copy of the GNU General Public License along
// with this library; see the file COPYING. If not, write to the Free
// Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307,
// USA.
// As a special exception, you may use this file as part of a free software
// library without restriction. Specifically, if other files instantiate
// templates or use macros or inline functions from this file, or you compile
// this file and link it with other files to produce an executable, this
// file does not by itself cause the resulting executable to be covered by
// the GNU General Public License. This exception does not however
// invalidate any other reasons why the executable file might be covered by
// the GNU General Public License.
#ifndef _CPP_BACKWARD_IOMANIP_H
#define _CPP_BACKWARD_IOMANIP_H 1
#include "backward_warning.h"
#include "iostream.h"
#include <iomanip>
// These are from <ios> as per [27.4].
using std::boolalpha;
using std::noboolalpha;
using std::showbase;
using std::noshowbase;
using std::showpoint;
using std::noshowpoint;
using std::showpos;
using std::noshowpos;
using std::skipws;
using std::noskipws;
using std::uppercase;
using std::nouppercase;
using std::internal;
using std::left;
using std::right;
using std::dec;
using std::hex;
using std::oct;
using std::fixed;
using std::scientific;
// These are from <iomanip> as per [27.6]. Manipulators from <istream>
// and <ostream> (e.g., endl) are made available via <iostream.h>.
using std::resetiosflags;
using std::setiosflags;
using std::setbase;
using std::setfill;
using std::setprecision;
using std::setw;
#endif
// Local Variables:
// mode:C++
// End:

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