mirror of
https://git.do.srb2.org/KartKrew/Kart-Public.git
synced 2024-12-26 04:11:18 +00:00
Remove DJGPP GDB stub
Once more, SRB2 no longer works on DOS so this is irrelevant
This commit is contained in:
parent
4269f4eab6
commit
c278800d66
18 changed files with 0 additions and 3503 deletions
|
@ -1,83 +0,0 @@
|
|||
#
|
||||
# Makefile for GDB Stub for DJGPP/Mingw 0.3 source distribution
|
||||
#
|
||||
# Copyright 2000 by Jonathan Brogdon
|
||||
#
|
||||
|
||||
include Makefile.cfg
|
||||
|
||||
default:
|
||||
@$(ECHO) Welcome to GDB Stub for DJGPP & Mingw 0.3 source distribution!
|
||||
@$(ECHO) To make the GDB stub type:
|
||||
@$(ECHO) make all - Make library and demo programs
|
||||
@$(ECHO) make library - Make only library
|
||||
@$(ECHO) make demo - Make demo program
|
||||
@$(ECHO) make install - Install library and header files
|
||||
@$(ECHO) make uninstall - Uninstall library and header files
|
||||
@$(ECHO) make clean - Remove .o files
|
||||
@$(ECHO) make distclean - Remove ready binaries and .o files
|
||||
@$(ECHO) make dep - Make dependences
|
||||
|
||||
# Inform make of phony targets
|
||||
.PHONY: library demo clean blankdep dep distclean install
|
||||
|
||||
all: dep library demo
|
||||
@$(ECHO) Library and demo program created
|
||||
|
||||
./lib/libgdbst.a:
|
||||
@mkdir -p lib
|
||||
@make -s -C ./src/library all
|
||||
|
||||
library: ./lib/libgdbst.a
|
||||
@$(ECHO) Library created
|
||||
|
||||
demo: ./lib/libgdbst.a
|
||||
@mkdir -p demo
|
||||
@make -s -C ./src/demo all
|
||||
@$(ECHO) Demo program created
|
||||
|
||||
clean:
|
||||
@make -s -C ./src/library clean
|
||||
@make -s -C ./src/demo clean
|
||||
@$(ECHO) Clean complete
|
||||
|
||||
blankdep:
|
||||
# Create blank depend.dep files to avoid errors
|
||||
@$(ECHOBLANK) > ./src/library/depend.dep
|
||||
@$(ECHOBLANK) > ./src/demo/depend.dep
|
||||
|
||||
# Now carry on as usual
|
||||
dep: blankdep
|
||||
@make -s -C ./src/library dep
|
||||
@make -s -C ./src/demo dep
|
||||
@$(ECHO) Created dependency files
|
||||
|
||||
# Blank all the dependencies too
|
||||
distclean: blankdep
|
||||
@make -s -C ./src/library distclean
|
||||
@make -s -C ./src/demo distclean
|
||||
@$(RM) -r ./demo/
|
||||
@$(RM) -r ./lib/
|
||||
@$(ECHO) Cleaned up files
|
||||
|
||||
install: library
|
||||
ifdef DJGPP
|
||||
@cp lib/*.a $(DJDIR)/lib
|
||||
@ginstall -d $(DJDIR)/include
|
||||
@cp include/*.h $(DJDIR)/include
|
||||
@$(ECHO) GDB Stub Library for DJGPP installed
|
||||
endif
|
||||
|
||||
uninstall:
|
||||
ifdef DJGPP
|
||||
@$(RM) $(DJDIR)/lib/libgdb.a
|
||||
@$(RM) $(DJDIR)/include/i386-stub.h
|
||||
@$(ECHO) GDB Stub Library for DJGPP uninstalled
|
||||
ifdef DJGPP
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
GDB Stub for DJGPP 0.1 Announcement
|
||||
===================================
|
||||
|
||||
GDB Stub for DJGPP Copyright 2000 by Jonathan Brogdon
|
||||
|
||||
Hello.
|
||||
|
||||
I'd like to announce the GDB Stub for DJGPP for DJGPP, the latest version of
|
||||
a GDB stub for DJGPP targets. The GDB Stub for DJGPP conforms to the GNU GDB stub
|
||||
interface as specified in the GDB User's Manual. It allows for debugging of a
|
||||
DJGPP target remotely over a serial link with GDB.
|
||||
|
||||
It comes with an example program for demonstrating remote debugging of
|
||||
DJGPP targets, and documentation (man and HTML pages).
|
||||
|
||||
The GDB Stub for DJGPP is distributed under the GNU Library General Public License
|
||||
(LGPL).
|
||||
|
||||
If you have any questions relating to libsocket, please mail me and I'll
|
||||
be happy to help.
|
||||
|
||||
Thanks,
|
||||
|
||||
Jonathan Brogdon
|
||||
<brogdo@austin.rr.com>
|
||||
|
||||
June 29th 2000
|
|
@ -1,43 +0,0 @@
|
|||
/****************************************************************************
|
||||
*
|
||||
* i386-stub.h
|
||||
*
|
||||
* Description: Data definitions and constants for low level
|
||||
* GDB server support.
|
||||
*
|
||||
* Terms of use: This software is provided for use under the terms
|
||||
* and conditions of the GNU General Public License.
|
||||
* 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.
|
||||
*
|
||||
* Credits: Created by Jonathan Brogdon
|
||||
*
|
||||
* History
|
||||
* Engineer: Date: Notes:
|
||||
* --------- ----- ------
|
||||
* Jonathan Brogdon 20000617 Genesis
|
||||
* Gordon Schumacher 20020212 Updated for modularity
|
||||
*
|
||||
****************************************************************************/
|
||||
#ifndef _GDBSTUB_H_
|
||||
#define _GDBSTUB_H_
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
extern int gdb_serial_init(unsigned int port, unsigned int speed);
|
||||
extern void gdb_target_init(void);
|
||||
extern void gdb_target_close(void);
|
||||
|
||||
extern void set_debug_traps(void);
|
||||
extern void restore_traps(void);
|
||||
extern void breakpoint(void);
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* _GDBSTUB_H_ */
|
|
@ -1,20 +0,0 @@
|
|||
The makefile contains the information about the target products
|
||||
available.
|
||||
|
||||
Note: Makefile.cfg contains macros for various tools used during
|
||||
the build process. Of particular note: some folks use the echo.exe
|
||||
that is available from the DJGPP (or other) site(s). Others may not
|
||||
have installed this, and therefore calls to echo during the build
|
||||
will use the built-in DOS echo command. When attempting to echo a
|
||||
blank line, the arguments to these two echo commands are different.
|
||||
Therefore, makefile.cfg contains the macro ECHOBLANK. Please set
|
||||
this macro according to the needs of your environment. If you change
|
||||
this in makefile.cfg, it will be picked up by all other project
|
||||
makefiles.
|
||||
|
||||
Type 'make' to see a list of targets. When the 'install'
|
||||
target is made, the libgdb.a will be copied into your $(DJDIR)/lib
|
||||
directory. In addition, the i386-stub.h file will be copied into
|
||||
your $(DJDIR)/include directory. The uninstall target will remove
|
||||
these files.
|
||||
|
|
@ -1,454 +0,0 @@
|
|||
|
||||
GNU LIBRARY GENERAL PUBLIC LICENSE
|
||||
**********************************
|
||||
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1991 Free Software Foundation, Inc.
|
||||
675 Mass Ave, Cambridge, MA 02139, 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.
|
||||
|
||||
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
|
||||
|
|
@ -1,67 +0,0 @@
|
|||
#
|
||||
# Makefile.cfg for GDB stub for DJGPP and Mingw
|
||||
#
|
||||
# libgdbst Copyright 2000 by Jonathan Brogodn
|
||||
#
|
||||
|
||||
#
|
||||
# GNU compiler & tools' flags
|
||||
#
|
||||
CC = gcc
|
||||
CFLAGS = -Wall -Werror -march=i486 -O2 -g
|
||||
|
||||
# Archiver
|
||||
AR = ar
|
||||
ARFLAGS = -r
|
||||
|
||||
# Stripper
|
||||
STRIP = strip
|
||||
|
||||
# Assembler
|
||||
AS = as
|
||||
ASFLAGS =
|
||||
|
||||
# Linker
|
||||
LD = ld
|
||||
LDFLAGS =
|
||||
|
||||
# Remove
|
||||
RM = rm -f
|
||||
|
||||
# Echo
|
||||
ECHO = echo
|
||||
|
||||
# Echo Blank
|
||||
#ECHOBLANK = echo ""
|
||||
ECHOBLANK = echo.
|
||||
|
||||
#
|
||||
# check for OS... badly
|
||||
#
|
||||
|
||||
ifndef DJDIR
|
||||
ifndef DJGPP
|
||||
WINDOWS=1
|
||||
endif
|
||||
endif
|
||||
|
||||
ifndef windir
|
||||
ifndef WINDOWS
|
||||
DJGPP=1
|
||||
endif
|
||||
endif
|
||||
|
||||
#
|
||||
# Rules
|
||||
#
|
||||
.SUFFIXES: .c .asm .o
|
||||
|
||||
.asm.o:
|
||||
@$(CC) $(CFLAGS) -I$(INC_PATH) -c -o ./$@ ./$<
|
||||
|
||||
.s.o:
|
||||
@$(AS) $(ASFLAGS) ./$<
|
||||
|
||||
.c.o :
|
||||
@$(CC) $(CFLAGS) -c -I$(INC_PATH) -c -o ./$@ ./$<
|
||||
|
|
@ -1,171 +0,0 @@
|
|||
GDB Stub for DJGPP 0.2 Readme File
|
||||
==================================
|
||||
|
||||
Copyright
|
||||
---------
|
||||
GDB Stub for DJGPP is distributed under the terms of the GNU Library
|
||||
General Public License (GNU LGPL) - please see the document LICENSE,
|
||||
which should be found in the same directory as this file.
|
||||
|
||||
Copyright (c) 2000 by Jonathan Brogdon, 2002 by Gordon Schumacher
|
||||
|
||||
What It Does
|
||||
------------
|
||||
The GDB stub is used to debug a DJGPP target remotely over a one of
|
||||
the PC COM ports. GDB, running on a host machine, communicates with
|
||||
the target using the GDB serial protocol over the serial link. For
|
||||
more information on the GDB stub, see "Debugging with GDB, The GNU
|
||||
Source-Level Debugger", by Richard M. Stallman and Roland H. Pesch
|
||||
(http://sources.redhat.com/gdb/download/onlinedocs/gdb.html)
|
||||
|
||||
How It Works
|
||||
------------
|
||||
|
||||
Exceptions:
|
||||
|
||||
The GDB stub needs to handle all processor exceptions. Since these
|
||||
exceptions already handled by DJGPP, we cannot handle them directly.
|
||||
DJGPP maps all processor exceptions to signals. Therefore, we can
|
||||
install the GDB stub handler as the signal handler for those signals
|
||||
that represent processor exceptions. The following table shows the
|
||||
processor exception to signal mapping:
|
||||
|
||||
Exception/Interrupt: Exception #: Signal:
|
||||
------------------- ----------- ------
|
||||
Divide Error 0 SIGFPE
|
||||
Debug Exception 1 SIGTRAP
|
||||
NMI Interrupt 2 No signal defined
|
||||
Breakpoint 3 SIGTRAP
|
||||
INTO-detected overflow 4 SIGFPE
|
||||
BOUND Range Exceeded 5 SIGSEGV
|
||||
Invalid Opcode 6 No signal defined
|
||||
Coprocessor not available 7 SIGNOFP
|
||||
Double Fault 8 SIGSEGV
|
||||
Coprocessor Seg overrun 9 SIGSEGV
|
||||
Invalid Task State Seg 10 No signal defined
|
||||
Segment not present 11 SIGSEGV
|
||||
Stack Fault 12 SIGSEGV
|
||||
General Protection Fault 13 SIGSEGV
|
||||
Page Fault 14 SIGSEGV
|
||||
Intel Reserved 15 No signal defined
|
||||
Coprocessor Error 16 SIGFPE
|
||||
|
||||
The GDB stub handler services requests from the GDB host. These
|
||||
requests are seen by the GDB stub handler as command messages from
|
||||
the GDB host. These commands and command formats are defined in
|
||||
"Debugging with GDB, The GNU Source-Level Debugger", by Richard M.
|
||||
Stallman and Roland H. Pesch (http://sources.redhat.com/gdb/
|
||||
download/onlinedocs/gdb.html -- one of many sources).
|
||||
|
||||
Serial Interface:
|
||||
|
||||
Interface functions for sending and receiving characters from the
|
||||
serial interface must be provided by the engineer porting the GDB
|
||||
stub. The following funtions must be provided to support the
|
||||
implementation.
|
||||
|
||||
int getDebugChar(void);
|
||||
void putDebugChar(int c);
|
||||
|
||||
There are a variety of serial libraries for DJGPP. The user may
|
||||
already be using one of these libraries in their application, and
|
||||
installing more than one serial library often causes conflicts.
|
||||
To this end, a modular function layer was written that allows any
|
||||
serial library to be used with the GDB stub. Layers have been
|
||||
written to support SVAsync, DZComm, and the _bios_serialcom()
|
||||
function. At the time of this writing, DZComm appears to work the
|
||||
best for serial debugging.
|
||||
|
||||
Hard Coded Breakpoint:
|
||||
|
||||
A breakpoint() function is provided to manually invoke the stub.
|
||||
This function, inserts a breakpoint instruction directly in the code
|
||||
to invoke the GDB stub handler.
|
||||
|
||||
How You Use It
|
||||
--------------
|
||||
First, you need to select a serial library. In the i386-supp.c file,
|
||||
there are lines of the form
|
||||
|
||||
// #include "some_layer.h"
|
||||
|
||||
Uncomment the line for the serial library you intend to use - or add
|
||||
a new include line for a file written for some other library.
|
||||
In the main() function of your target program, you should initilize
|
||||
the GDB serial handlers and the GDB stub. The following functions
|
||||
are provided in the GDB stub library for this purpose.
|
||||
|
||||
gdb_serial_init(unsigned int port, unsigned int speed);
|
||||
gdb_target_init(void);
|
||||
|
||||
Where, port is the COM port number, and speed is the baud rate for
|
||||
the serial link.
|
||||
|
||||
After initialing the GDB serial interface and target, you should
|
||||
invoke the breakpoint() function somewhere. You may choose to do
|
||||
this immediately after initialization, or at a specific location in
|
||||
your code where you wish to set a breakpoint. By putting the
|
||||
breakpoint() function in the beginning of main(), you can use the
|
||||
GDB host to set a breakpoint at any place in your code.
|
||||
|
||||
Make sure that you use the '-g' option when compiling your files with
|
||||
gcc.
|
||||
|
||||
After the target executable is running, start up gdb on the host,
|
||||
passing the target executable as an argument.
|
||||
|
||||
Example: gdb demo.exe
|
||||
|
||||
Now, tell gdb which serial interface to use for communicating to
|
||||
the target.
|
||||
|
||||
Example: (gdb) target remote COM1
|
||||
|
||||
This example uses COM1 on the host to communicate with the target.
|
||||
GDB is now 'listening' on COM for a valid GDB serial packet.
|
||||
|
||||
Once your GDB host finds your target, you may need to tell GDB where
|
||||
to find any source files which were used to generate your program.
|
||||
Use the directory command to do this.
|
||||
|
||||
Example: (gdb) directory ../src/demo
|
||||
|
||||
That's it. You should now be able to single step through code, set
|
||||
breakpoints, set variables, examine variables, any anthing else that
|
||||
you would normally use GDB to accomplish.
|
||||
|
||||
What You Build
|
||||
--------------
|
||||
Read the INSTALL file for more information on installing the GDB stub
|
||||
library. After installing the library, your code should include
|
||||
i386-stub.h for function prototypes. In addition, your code should
|
||||
link against the libgdb.a library. The source for a demonstration
|
||||
program has been included with this distributias an example.
|
||||
As an alternative, you can simply include the i386-stub and i386-supp
|
||||
files and the layer header for the serial library you plan to use into
|
||||
your project and link them in directly.
|
||||
|
||||
For More Info
|
||||
-------------
|
||||
See "Debugging with GDB, The GNU Source-Level Debugger", by Richard
|
||||
M. Stallman and Roland H. Pesch (http://sources.redhat.com/gdb/
|
||||
download/onlinedocs/gdb.html -- one of many sources).
|
||||
|
||||
TODO
|
||||
----
|
||||
Port for network operation.
|
||||
|
||||
Contact Info
|
||||
------------
|
||||
My contact info is below. If you have any comments, suggestions, bug
|
||||
reports or problems, please mail me, and I'll see what I can do.
|
||||
|
||||
Regards,
|
||||
Jonathan Brogdon
|
||||
<brogdon@austin.rr.com>
|
||||
6th June 2000
|
||||
|
||||
Modular update:
|
||||
Gordon Schumacher
|
||||
<gordons@valleyhold.org>
|
||||
12th February 2002
|
|
@ -1,46 +0,0 @@
|
|||
#define POLY 0x8408
|
||||
/*
|
||||
// 16 12 5
|
||||
// this is the CCITT CRC 16 polynomial X + X + X + 1.
|
||||
// This works out to be 0x1021, but the way the algorithm works
|
||||
// lets us use 0x8408 (the reverse of the bit pattern). The high
|
||||
// bit is always assumed to be set, thus we only use 16 bits to
|
||||
// represent the 17 bit value.
|
||||
*/
|
||||
|
||||
#include "crc.h"
|
||||
|
||||
WORD crc16(char *data_p, WORD length)
|
||||
{
|
||||
unsigned char i;
|
||||
unsigned int data;
|
||||
unsigned int crc = 0xffff;
|
||||
|
||||
if (length == 0)
|
||||
return (~crc);
|
||||
|
||||
do
|
||||
{
|
||||
for (i=0, data=(unsigned int)0xff & *data_p++;
|
||||
i < 8;
|
||||
i++, data >>= 1)
|
||||
{
|
||||
if ((crc & 0x0001) ^ (data & 0x0001))
|
||||
crc = (crc >> 1) ^ POLY;
|
||||
else crc >>= 1;
|
||||
}
|
||||
} while (--length);
|
||||
|
||||
crc = ~crc;
|
||||
data = crc;
|
||||
crc = (crc << 8) | ((data >> 8) & 0xff);
|
||||
|
||||
return (crc);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
#
|
||||
# Makefile for GDB Stub demo
|
||||
# Written by Jonathan Brogodn
|
||||
#
|
||||
# GDB Stub for DJGPP Copyright 2000 by Jonathan Brogdon
|
||||
#
|
||||
|
||||
include ../../Makefile.cfg
|
||||
|
||||
CFLAGS += -g
|
||||
CFLAGS += -I../../include -I../include -I.
|
||||
CFLAGS += -DDEBUG_COM_PORT=1
|
||||
CFLAGS += -DDEBUG_COM_PORT_SPEED=9600
|
||||
CFLAGS += -DREMOTE_DEBUGGING
|
||||
|
||||
# Objects to build
|
||||
OBJS = serdbg.o crc_16.o
|
||||
|
||||
all: demo
|
||||
|
||||
demo: $(OBJS)
|
||||
ifdef DJGPP
|
||||
@$(LD) $(LDFLAGS) -Map ./$@.map -o../../demo/$@.exe $(DJDIR)/lib/crt0.o $(OBJS) -L$(DJDIR)/lib -L../../lib -lgdbst -ldzcom -lc -lgcc
|
||||
endif
|
||||
ifdef WINDOWS
|
||||
@$(LD) $(LDFLAGS) -Map ./$@.map -o../../demo/$@.exe $(DJDIR)/lib/crt0.o $(OBJS) -L../../lib -lgdbst -lwsock32 -lc -lgcc
|
||||
endif
|
||||
|
||||
clean:
|
||||
@$(RM) $(OBJS)
|
||||
@$(RM) *.map
|
||||
|
||||
distclean: clean
|
||||
@$(RM) $(OBJS)
|
||||
@$(RM) depend.dep
|
||||
@$(RM) ../../demo/*.exe
|
||||
|
||||
dep:
|
||||
@$(CC) $(CFLAGS) -M *.c > depend.dep
|
||||
|
||||
$(OBJS):
|
||||
include depend.dep
|
|
@ -1,102 +0,0 @@
|
|||
/***********************************************************************
|
||||
* serdbg.c
|
||||
*
|
||||
* Description: Pretty simple demonstration program. It accomplishes
|
||||
* the following.
|
||||
*
|
||||
* 1. Allocate a block of memory Feel free to change
|
||||
* size (memBlockSize) with debugger.
|
||||
*
|
||||
* 2. Writes a word pattern to the entire block. Feel
|
||||
* free to change the pattern (memPatternWord) with
|
||||
* debugger.
|
||||
*
|
||||
* 3. Computes the CRC-16 on the block. Feel free to
|
||||
* check the size with the debuger.
|
||||
*
|
||||
* 4. Free the memory block allocated in step 1. Repeat
|
||||
* step 1. If you wish to exit, set doneFlag to 0 with
|
||||
* the debugger.
|
||||
*
|
||||
* Credits: Created by Jonathan Brogdon
|
||||
*
|
||||
* Terms of use: Use as you will.
|
||||
*
|
||||
* Global Data: None.
|
||||
* Global Functions: main
|
||||
*
|
||||
* History
|
||||
* Engineer: Date: Notes:
|
||||
* --------- ----- ------
|
||||
* Jonathan Brogdon 070500 Genesis
|
||||
*
|
||||
***********************************************************************/
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <i386-stub.h>
|
||||
#include <crc.h>
|
||||
|
||||
#define MEM_BLOCK_SIZE 100 /* Words */
|
||||
#define MEM_PATTERN_WORD 0x55AA
|
||||
|
||||
void write_mem_pattern(unsigned short*, unsigned short, unsigned short);
|
||||
|
||||
/************************************************************************
|
||||
*
|
||||
* main()
|
||||
*
|
||||
************************************************************************/
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
volatile int doneFlag = 0;
|
||||
unsigned short crcValue = 0;
|
||||
unsigned short * memBlockPtr = NULL;
|
||||
short memBlockSize = MEM_BLOCK_SIZE;
|
||||
short memPatternWord = MEM_PATTERN_WORD;
|
||||
|
||||
#ifdef REMOTE_DEBUGGING
|
||||
/* Only setup if demonstrating remote debugging */
|
||||
gdb_serial_init(DEBUG_COM_PORT,DEBUG_COM_PORT_SPEED);
|
||||
gdb_target_init();
|
||||
breakpoint();
|
||||
#endif
|
||||
|
||||
while(doneFlag != 1)
|
||||
{
|
||||
memBlockSize = MEM_BLOCK_SIZE;
|
||||
memPatternWord = MEM_PATTERN_WORD;
|
||||
memBlockPtr = (unsigned short *) malloc((int)memBlockSize);
|
||||
|
||||
write_mem_pattern(memBlockPtr, memBlockSize, memPatternWord);
|
||||
|
||||
crcValue = crc16((char *)memBlockPtr,memBlockSize);
|
||||
|
||||
free(memBlockPtr);
|
||||
}
|
||||
|
||||
exit(0);
|
||||
}
|
||||
|
||||
/************************************************************************
|
||||
*
|
||||
* write_mem_pattern()
|
||||
*
|
||||
* Description: Writes a word pattern to a block of RAM.
|
||||
*
|
||||
************************************************************************/
|
||||
void write_mem_pattern(unsigned short *block, unsigned short blockSize, unsigned short patternWord)
|
||||
{
|
||||
int index = 0;
|
||||
|
||||
for(index = 0; index < blockSize; index++)
|
||||
{
|
||||
block[index] = patternWord;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
/*
|
||||
* CRC.H - header file for CRC functions
|
||||
*/
|
||||
|
||||
#ifndef _CRC_H_
|
||||
#define _CRC_H_
|
||||
|
||||
#include <stdlib.h> /* For size_t */
|
||||
|
||||
typedef unsigned char BYTE;
|
||||
typedef unsigned short WORD;
|
||||
typedef unsigned long DWORD;
|
||||
|
||||
/*
|
||||
** File: CRC-16.C
|
||||
*/
|
||||
|
||||
WORD crc16(char *data_p, WORD length);
|
||||
|
||||
#endif /* _CRC_H_ */
|
|
@ -1,30 +0,0 @@
|
|||
/****************************************************************************
|
||||
*
|
||||
* i386-supp.h
|
||||
*
|
||||
* Description: Data definitions and constants for low level
|
||||
* GDB stub support.
|
||||
*
|
||||
* Terms of use: This software is provided for use under the terms
|
||||
* and conditions of the GNU General Public License.
|
||||
* 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.
|
||||
*
|
||||
* Credits: Created by Jonathan Brogdon
|
||||
*
|
||||
* History
|
||||
* Engineer: Date: Notes:
|
||||
* --------- ----- ------
|
||||
* Jonathan Brogdon 20000629 Genesis
|
||||
* Gordon Schumacher 20020212 Updated for modularity
|
||||
*
|
||||
****************************************************************************/
|
||||
#ifndef _GDBSUPP_H_
|
||||
#define _GDBSUPP_H_
|
||||
|
||||
extern int putDebugChar(char c);
|
||||
extern int getDebugChar(void);
|
||||
|
||||
#endif /* _GDBSUPP_H_ */
|
|
@ -1,137 +0,0 @@
|
|||
//=======================================================================================================
|
||||
// bios_layer.h - Serial command layer for standard BIOS calls
|
||||
// It's here if you want it, but I wouldn't suggest it...
|
||||
//=======================================================================================================
|
||||
|
||||
//=======================================================================================================
|
||||
//=======================================================================================================
|
||||
|
||||
#ifndef _BIOS_LAYER_H
|
||||
#define _BIOS_LAYER_H
|
||||
|
||||
|
||||
//===============================================================================
|
||||
// Include files
|
||||
//===============================================================================
|
||||
|
||||
#include <pc.h>
|
||||
|
||||
//===============================================================================
|
||||
// Static variable definitions
|
||||
//===============================================================================
|
||||
|
||||
unsigned comport;
|
||||
|
||||
//===============================================================================
|
||||
// Inline function definitions
|
||||
//===============================================================================
|
||||
|
||||
#define BIOS_SER_TIMEOUT 1000000
|
||||
|
||||
// Initialize the serial library
|
||||
// Should return 0 if no error occurred
|
||||
__inline int GDBStub_SerInit(int port)
|
||||
{
|
||||
comport = (unsigned) port;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// Set the serial port speed (and other configurables)
|
||||
// Should return 0 if the speed is set properly
|
||||
__inline int GDBStub_SerSpeed(int speed)
|
||||
{
|
||||
unsigned bps;
|
||||
|
||||
switch (speed)
|
||||
{
|
||||
case 110:
|
||||
bps = _COM_110;
|
||||
break;
|
||||
|
||||
case 150:
|
||||
bps = _COM_150;
|
||||
break;
|
||||
|
||||
case 300:
|
||||
bps = _COM_300;
|
||||
break;
|
||||
|
||||
case 600:
|
||||
bps = _COM_600;
|
||||
break;
|
||||
|
||||
case 1200:
|
||||
bps = _COM_1200;
|
||||
break;
|
||||
|
||||
case 2400:
|
||||
bps = _COM_2400;
|
||||
break;
|
||||
|
||||
case 4800:
|
||||
bps = _COM_4800;
|
||||
break;
|
||||
|
||||
case 9600:
|
||||
default:
|
||||
bps = _COM_9600;
|
||||
break;
|
||||
}
|
||||
|
||||
_bios_serialcom(_COM_INIT, comport,
|
||||
bps | _COM_NOPARITY | _COM_CHR8 | _COM_STOP1);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// Check to see if there's room in the buffer to send data
|
||||
// Should return 0 if it is okay to send
|
||||
__inline int GDBStub_SerSendOk(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// Send a character to the serial port
|
||||
// Should return 0 if the send succeeds
|
||||
__inline int GDBStub_SerSend(int c)
|
||||
{
|
||||
register int ret;
|
||||
register int timeout = 0;
|
||||
|
||||
do
|
||||
{
|
||||
ret = _bios_serialcom(_COM_SEND, comport, (unsigned) c);
|
||||
} while((ret != 0) && (timeout++ < BIOS_SER_TIMEOUT));
|
||||
return (timeout >= BIOS_SER_TIMEOUT);
|
||||
}
|
||||
|
||||
|
||||
// Check to see if there are characters waiting in the buffer
|
||||
// Should return 0 if there's data waiting
|
||||
__inline int GDBStub_SerRecvOk(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// Read a character from the serial port
|
||||
// Should return the character read
|
||||
__inline int GDBStub_SerRecv(void)
|
||||
{
|
||||
register int data;
|
||||
register int timeout = 0;
|
||||
|
||||
do
|
||||
{
|
||||
data = _bios_serialcom(_COM_RECEIVE, comport, 0) & 0xff;
|
||||
} while((data > 0xff) && (timeout++ < BIOS_SER_TIMEOUT));
|
||||
|
||||
return data;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
|
@ -1,169 +0,0 @@
|
|||
//=======================================================================================================
|
||||
// dzc_layer.h - Serial command layer for DZcomm
|
||||
//
|
||||
//=======================================================================================================
|
||||
|
||||
//=======================================================================================================
|
||||
//=======================================================================================================
|
||||
|
||||
#ifndef _DZC_LAYER_H
|
||||
#define _DZC_LAYER_H
|
||||
|
||||
|
||||
//===============================================================================
|
||||
// Include files
|
||||
//===============================================================================
|
||||
|
||||
#include <dzcomm.h>
|
||||
|
||||
//===============================================================================
|
||||
// Static variable definitions
|
||||
//===============================================================================
|
||||
|
||||
comm_port *comport;
|
||||
|
||||
//===============================================================================
|
||||
// Inline function definitions
|
||||
//===============================================================================
|
||||
|
||||
// Initialize the serial library
|
||||
// Should return 0 if no error occurred
|
||||
__inline int GDBStub_SerInit(int port)
|
||||
{
|
||||
int ret;
|
||||
comm com;
|
||||
|
||||
ret = dzcomm_init();
|
||||
if (ret != 0)
|
||||
{
|
||||
switch (port)
|
||||
{
|
||||
case 4:
|
||||
com = _com4;
|
||||
break;
|
||||
|
||||
case 3:
|
||||
com = _com3;
|
||||
break;
|
||||
|
||||
case 2:
|
||||
com = _com2;
|
||||
break;
|
||||
|
||||
case 1:
|
||||
default:
|
||||
com = _com1;
|
||||
break;
|
||||
}
|
||||
comport = comm_port_init(com);
|
||||
}
|
||||
return (ret == 0);
|
||||
}
|
||||
|
||||
// Set the serial port speed (and other configurables)
|
||||
// Should return 0 if the speed is set properly
|
||||
__inline int GDBStub_SerSpeed(int speed)
|
||||
{
|
||||
baud_bits bps;
|
||||
|
||||
switch (speed)
|
||||
{
|
||||
case 110:
|
||||
bps = _110;
|
||||
break;
|
||||
|
||||
case 150:
|
||||
bps = _150;
|
||||
break;
|
||||
|
||||
case 300:
|
||||
bps = _300;
|
||||
break;
|
||||
|
||||
case 600:
|
||||
bps = _600;
|
||||
break;
|
||||
|
||||
case 1200:
|
||||
bps = _1200;
|
||||
break;
|
||||
|
||||
case 2400:
|
||||
bps = _2400;
|
||||
break;
|
||||
|
||||
case 4800:
|
||||
bps = _4800;
|
||||
break;
|
||||
|
||||
case 9600:
|
||||
bps = _9600;
|
||||
break;
|
||||
|
||||
case 19200:
|
||||
bps = _19200;
|
||||
break;
|
||||
|
||||
case 38400:
|
||||
bps = _38400;
|
||||
break;
|
||||
|
||||
case 57600:
|
||||
bps = _57600;
|
||||
break;
|
||||
|
||||
case 115200:
|
||||
default:
|
||||
bps = _115200;
|
||||
break;
|
||||
}
|
||||
|
||||
comm_port_set_baud_rate(comport, bps);
|
||||
comm_port_set_parity(comport, NO_PARITY);
|
||||
comm_port_set_data_bits(comport, BITS_8);
|
||||
comm_port_set_stop_bits(comport, STOP_1);
|
||||
comm_port_set_flow_control(comport, RTS_CTS);
|
||||
comm_port_install_handler(comport);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Check to see if there's room in the buffer to send data
|
||||
// Should return 0 if it is okay to send
|
||||
__inline int GDBStub_SerSendOk(void)
|
||||
{
|
||||
return (comm_port_out_full(comport) == 0);
|
||||
}
|
||||
|
||||
// Send a character to the serial port
|
||||
// Should return 0 if the send succeeds
|
||||
__inline int GDBStub_SerSend(int c)
|
||||
{
|
||||
return comm_port_out(comport, (unsigned char) c);
|
||||
}
|
||||
|
||||
// Check to see if there are characters waiting in the buffer
|
||||
// Should return 0 if there's data waiting
|
||||
__inline int GDBStub_SerRecvOk(void)
|
||||
{
|
||||
return (comm_port_in_empty(comport) == 0);
|
||||
}
|
||||
|
||||
// Read a character from the serial port
|
||||
// Should return the character read
|
||||
__inline int GDBStub_SerRecv(void)
|
||||
{
|
||||
return comm_port_test(comport);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
/*==================================================================
|
||||
|
||||
$Log: $
|
||||
|
||||
|
||||
===============================================================*/
|
File diff suppressed because it is too large
Load diff
|
@ -1,424 +0,0 @@
|
|||
/***********************************************************************
|
||||
* i386-supp.c
|
||||
*
|
||||
* Description: Support functions for the i386 GDB target stub.
|
||||
*
|
||||
* Credits: Created by Jonathan Brogdon
|
||||
*
|
||||
* Terms of use: This software is provided for use under the terms
|
||||
* and conditions of the GNU General Public License.
|
||||
* 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.
|
||||
*
|
||||
* Global Data: None.
|
||||
* Global Functions:
|
||||
* gdb_serial_init
|
||||
* gdb_target_init
|
||||
* gdb_target_close
|
||||
* putDebugChar
|
||||
* getDebugChar
|
||||
*
|
||||
* History
|
||||
* Engineer: Date: Notes:
|
||||
* --------- ----- ------
|
||||
* Jonathan Brogdon 20000617 Genesis
|
||||
* Gordon Schumacher 20020212 Updated for modularity
|
||||
*
|
||||
***********************************************************************/
|
||||
|
||||
|
||||
#ifdef DJGPP
|
||||
#include <bios.h>
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#include <windows.h>
|
||||
#include <winsock.h>
|
||||
#include <errno.h>
|
||||
#define DEBUGBUFFERSIZE 1024
|
||||
HANDLE ser_port = (HANDLE)(-1);
|
||||
|
||||
//#include "utility/utility.h"
|
||||
#ifdef _MSC_VER
|
||||
#ifndef DEBUG_SERIAL
|
||||
#pragma comment(lib, "wsock32")
|
||||
#endif
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <i386-stub.h>
|
||||
|
||||
#ifdef DJGPP
|
||||
//#include "bios_layer.h" // Include this for BIOS calls - NOT RECOMMENDED!
|
||||
//#include "sva_layer.h" // Include this for SVAsync usage
|
||||
#include "dzc_layer.h" // Include this for DZComm usage
|
||||
|
||||
|
||||
#endif
|
||||
#define SER_TIMEOUT 1000000
|
||||
|
||||
#ifdef _WIN32
|
||||
static LPTOP_LEVEL_EXCEPTION_FILTER s_prev_exc_handler = 0;
|
||||
|
||||
|
||||
#define I386_EXCEPTION_CNT 17
|
||||
|
||||
LONG WINAPI exc_protection_handler(EXCEPTION_POINTERS* exc_info)
|
||||
{
|
||||
int exc_nr = exc_info->ExceptionRecord->ExceptionCode & 0xFFFF;
|
||||
|
||||
if (exc_nr < I386_EXCEPTION_CNT) {
|
||||
//LOG(FmtString(TEXT("exc_protection_handler: Exception %x"), exc_nr));
|
||||
|
||||
#if 0
|
||||
if (exc_nr==11 || exc_nr==13 || exc_nr==14) {
|
||||
if (mem_fault_routine)
|
||||
mem_fault_routine();
|
||||
}
|
||||
#endif
|
||||
|
||||
++exc_info->ContextRecord->Eip;
|
||||
}
|
||||
|
||||
return EXCEPTION_CONTINUE_EXECUTION;
|
||||
}
|
||||
|
||||
LONG WINAPI exc_handler(EXCEPTION_POINTERS* exc_info)
|
||||
{
|
||||
int exc_nr = exc_info->ExceptionRecord->ExceptionCode & 0xFFFF;
|
||||
|
||||
if (exc_nr < I386_EXCEPTION_CNT) {
|
||||
//LOG(FmtString("Exception %x", exc_nr));
|
||||
//LOG(FmtString("EIP=%08X EFLAGS=%08X", exc_info->ContextRecord->Eip, exc_info->ContextRecord->EFlags));
|
||||
|
||||
// step over initial breakpoint
|
||||
if (s_initial_breakpoint) {
|
||||
s_initial_breakpoint = 0;
|
||||
++exc_info->ContextRecord->Eip;
|
||||
}
|
||||
|
||||
SetUnhandledExceptionFilter(exc_protection_handler);
|
||||
|
||||
win32_exception_handler(exc_info);
|
||||
//LOG(FmtString("EIP=%08X EFLAGS=%08X", exc_info->ContextRecord->Eip, exc_info->ContextRecord->EFlags));
|
||||
|
||||
SetUnhandledExceptionFilter(exc_handler);
|
||||
|
||||
return EXCEPTION_CONTINUE_EXECUTION;
|
||||
}
|
||||
|
||||
return EXCEPTION_CONTINUE_SEARCH;
|
||||
}
|
||||
|
||||
void disable_debugging()
|
||||
{
|
||||
if (s_prev_exc_handler) {
|
||||
SetUnhandledExceptionFilter(s_prev_exc_handler);
|
||||
s_prev_exc_handler = 0;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !(defined(DJGPP) || defined(_WIN32))
|
||||
void exceptionHandler(int exc_nr, void* exc_addr)
|
||||
{
|
||||
if (exc_nr>=0 && exc_nr<I386_EXCEPTION_CNT)
|
||||
exc_handlers[exc_nr] = exc_addr;
|
||||
}
|
||||
#endif
|
||||
|
||||
/***********************************************************************
|
||||
* gdb_serial_init
|
||||
*
|
||||
* Description: Initializes the serial port for remote debugging.
|
||||
*
|
||||
* Inputs:
|
||||
* port - the PC COM port to use.
|
||||
* speed - the COM port speed.
|
||||
* Outputs: None.
|
||||
* Returns: 0 for success
|
||||
*
|
||||
***********************************************************************/
|
||||
int gdb_serial_init(unsigned int port, unsigned int speed)
|
||||
{
|
||||
#ifdef DJGPP
|
||||
int ret;
|
||||
|
||||
ret = GDBStub_SerInit(port);
|
||||
if (ret == 0)
|
||||
ret = GDBStub_SerSpeed(speed);
|
||||
|
||||
return ret;
|
||||
#elif defined(_WIN32)
|
||||
DCB dcb ;
|
||||
|
||||
port = 0; //TODO
|
||||
|
||||
s_prev_exc_handler = SetUnhandledExceptionFilter(exc_handler);
|
||||
|
||||
ser_port = CreateFile( "COM1", GENERIC_READ | GENERIC_WRITE,
|
||||
0, // exclusive access
|
||||
NULL, // no security attrs
|
||||
OPEN_EXISTING,
|
||||
FILE_ATTRIBUTE_NORMAL,
|
||||
NULL );
|
||||
if( ser_port == (HANDLE)(-1) )
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
// buffers
|
||||
SetupComm( ser_port, DEBUGBUFFERSIZE, DEBUGBUFFERSIZE ) ;
|
||||
|
||||
// purge buffers
|
||||
PurgeComm( ser_port, PURGE_TXABORT | PURGE_RXABORT |
|
||||
PURGE_TXCLEAR | PURGE_RXCLEAR ) ;
|
||||
|
||||
// setup port to 9600 8N1
|
||||
dcb.DCBlength = sizeof( DCB ) ;
|
||||
|
||||
GetCommState( ser_port, &dcb ) ;
|
||||
|
||||
dcb.BaudRate = speed;
|
||||
dcb.ByteSize = 8;
|
||||
dcb.Parity = NOPARITY ;
|
||||
dcb.StopBits = ONESTOPBIT ;
|
||||
|
||||
dcb.fDtrControl = DTR_CONTROL_ENABLE ;
|
||||
dcb.fRtsControl = RTS_CONTROL_ENABLE ;
|
||||
|
||||
dcb.fBinary = TRUE ;
|
||||
dcb.fParity = FALSE ;
|
||||
|
||||
SetCommState( ser_port, &dcb ) ;
|
||||
|
||||
return 1;
|
||||
#endif
|
||||
}
|
||||
/***********************************************************************
|
||||
* gdb_target_init
|
||||
*
|
||||
* Description: This function inializes the GDB target.
|
||||
*
|
||||
* Inputs: None.
|
||||
* Outputs: None.
|
||||
* Returns: None.
|
||||
*
|
||||
***********************************************************************/
|
||||
void gdb_target_init(void)
|
||||
{
|
||||
set_debug_traps();
|
||||
atexit(restore_traps);
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* gdb_target_close
|
||||
*
|
||||
* Description: This function closes the GDB target.
|
||||
*
|
||||
* Inputs: None.
|
||||
* Outputs: None.
|
||||
* Returns: None.
|
||||
*
|
||||
***********************************************************************/
|
||||
void gdb_target_close(void)
|
||||
{
|
||||
restore_traps();
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* putDebugChar
|
||||
*
|
||||
* Description: sends a character to the debug COM port.
|
||||
*
|
||||
* Inputs:
|
||||
* c - the data character to be sent
|
||||
* Outputs: None.
|
||||
* Returns: 0 for success
|
||||
*
|
||||
***********************************************************************/
|
||||
int putDebugChar(char c)
|
||||
{
|
||||
register int timeout = 0;
|
||||
#ifdef DJGPP
|
||||
|
||||
while ((GDBStub_SerSendOk() == 0) && (timeout < SER_TIMEOUT))
|
||||
timeout++;
|
||||
return GDBStub_SerSend(c);
|
||||
#elif defined(_WIN32)
|
||||
DWORD buffer[DEBUGBUFFERSIZE];
|
||||
COMSTAT ComStat ;
|
||||
DWORD dwErrorFlags;
|
||||
DWORD dwLength;
|
||||
|
||||
if(ser_port == (HANDLE)-1)
|
||||
return 0;
|
||||
|
||||
buffer[0] = c;
|
||||
|
||||
retrywrite:
|
||||
ClearCommError( ser_port, &dwErrorFlags, &ComStat ) ;
|
||||
dwLength = ComStat.cbOutQue;
|
||||
|
||||
if (dwLength < DEBUGBUFFERSIZE || timeout > SER_TIMEOUT)
|
||||
{
|
||||
if(WriteFile( ser_port, buffer, 1, &dwLength, NULL ))
|
||||
return 1;
|
||||
else if(timeout > SER_TIMEOUT)
|
||||
return 0;
|
||||
}
|
||||
else timeout++;
|
||||
goto retrywrite;
|
||||
#endif
|
||||
}
|
||||
|
||||
/***********************************************************************
|
||||
* getDebugChar
|
||||
*
|
||||
* Description: gets a character from the debug COM port.
|
||||
*
|
||||
* Inputs: None.
|
||||
* Outputs: None.
|
||||
* Returns: character data from the serial support.
|
||||
*
|
||||
***********************************************************************/
|
||||
int getDebugChar(void)
|
||||
{
|
||||
register int timeout = 0;
|
||||
#ifdef DJGPP
|
||||
register int ret = -1;
|
||||
|
||||
while ((GDBStub_SerRecvOk() == 0) && (timeout < SER_TIMEOUT))
|
||||
timeout++;
|
||||
if (timeout < SER_TIMEOUT)
|
||||
ret = GDBStub_SerRecv();
|
||||
|
||||
return ret;
|
||||
#elif defined(_WIN32)
|
||||
DWORD buffer[DEBUGBUFFERSIZE];
|
||||
COMSTAT ComStat ;
|
||||
DWORD dwErrorFlags;
|
||||
DWORD dwLength;
|
||||
|
||||
if(ser_port == (HANDLE)-1)
|
||||
return -1;
|
||||
|
||||
retryread:
|
||||
ClearCommError( ser_port, &dwErrorFlags, &ComStat ) ;
|
||||
dwLength = min( DEBUGBUFFERSIZE, ComStat.cbInQue ) ;
|
||||
|
||||
if (dwLength > 0 || timeout > SER_TIMEOUT)
|
||||
{
|
||||
if(ReadFile( ser_port, buffer, 1, &dwLength, NULL ))
|
||||
return buffer[0];
|
||||
else if(timeout > SER_TIMEOUT)
|
||||
return -1;
|
||||
}
|
||||
else timeout++;
|
||||
goto retryread;
|
||||
#endif
|
||||
}
|
||||
|
||||
#if 0
|
||||
static SOCKET s_rem_fd = INVALID_SOCKET;
|
||||
|
||||
int init_gdb_connect()
|
||||
{
|
||||
#ifdef _WIN32
|
||||
WORD wVersionRequested;
|
||||
WSADATA wsa_data;
|
||||
#endif
|
||||
SOCKADDR_IN srv_addr;
|
||||
SOCKADDR_IN rem_addr;
|
||||
SOCKET srv_socket;
|
||||
int rem_len;
|
||||
|
||||
memset(&srv_addr,0,sizeof(srv_addr));
|
||||
s_prev_exc_handler = SetUnhandledExceptionFilter(exc_handler);
|
||||
|
||||
#ifdef _WIN32
|
||||
wVersionRequested= MAKEWORD( 2, 2 );
|
||||
if (WSAStartup(wVersionRequested, &wsa_data)) {
|
||||
fprintf(stderr, "WSAStartup() failed");
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
srv_addr.sin_family = AF_INET;
|
||||
srv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
|
||||
srv_addr.sin_port = htons(9999);
|
||||
|
||||
srv_socket = socket(PF_INET, SOCK_STREAM, 0);
|
||||
if (srv_socket == INVALID_SOCKET) {
|
||||
perror("socket()");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (bind(srv_socket, (struct sockaddr*) &srv_addr, sizeof(srv_addr)) == -1) {
|
||||
perror("bind()");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (listen(srv_socket, 4) == -1) {
|
||||
perror("listen()");
|
||||
return 0;
|
||||
}
|
||||
|
||||
rem_len = sizeof(rem_addr);
|
||||
|
||||
for(;;) {
|
||||
s_rem_fd = accept(srv_socket, (struct sockaddr*)&rem_addr, &rem_len);
|
||||
|
||||
if (s_rem_fd == INVALID_SOCKET) {
|
||||
if (errno == EINTR)
|
||||
continue;
|
||||
|
||||
perror("accept()");
|
||||
return 0;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int getDebugChar()
|
||||
{
|
||||
char buffer[DEBUGBUFFERSIZE];
|
||||
int r;
|
||||
|
||||
if (s_rem_fd == INVALID_SOCKET)
|
||||
return EOF;
|
||||
|
||||
r = recv(s_rem_fd, buffer, 1, 0);
|
||||
if (r == -1) {
|
||||
perror("recv()");
|
||||
//LOG(TEXT("debugger connection broken"));
|
||||
s_rem_fd = INVALID_SOCKET;
|
||||
return EOF;
|
||||
}
|
||||
|
||||
if (!r)
|
||||
return EOF;
|
||||
|
||||
return buffer[0];
|
||||
}
|
||||
|
||||
void putDebugChar(int c)
|
||||
{
|
||||
if (s_rem_fd == INVALID_SOCKET) {
|
||||
const char buffer[] = {c};
|
||||
|
||||
if (!send(s_rem_fd, buffer, 1, 0)) {
|
||||
perror("send()");
|
||||
//LOG(TEXT("debugger connection broken"));
|
||||
exit(-1);
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif
|
|
@ -1,30 +0,0 @@
|
|||
#
|
||||
# Makefile for GDB Stub for DJGPP
|
||||
#
|
||||
# GDB Stub for DJGPP Copyright 2000 by Jonathan Brogdon
|
||||
#
|
||||
|
||||
include ../../Makefile.cfg
|
||||
|
||||
CFLAGS += -I../../include -I../include
|
||||
|
||||
LOBJS = i386-stub.o i386-supp.o
|
||||
|
||||
all: library
|
||||
|
||||
library: $(LOBJS)
|
||||
@$(RM) ../../lib/libgdbst.a
|
||||
@$(AR) rcs ../../lib/libgdbst.a $(LOBJS)
|
||||
|
||||
dep:
|
||||
@$(CC) $(CFLAGS) -M *.c > depend.dep
|
||||
|
||||
clean:
|
||||
@$(RM) $(LOBJS)
|
||||
|
||||
distclean: clean
|
||||
@$(RM) ../../lib/libgdbst.a
|
||||
@$(RM) depend.dep
|
||||
|
||||
$(OBJS) $(LOBJS):
|
||||
include depend.dep
|
|
@ -1,83 +0,0 @@
|
|||
//=======================================================================================================
|
||||
// sva_layer.h - Serial command layer for SVAsync
|
||||
//
|
||||
//=======================================================================================================
|
||||
|
||||
//=======================================================================================================
|
||||
//=======================================================================================================
|
||||
|
||||
#ifndef _SVA_LAYER_H
|
||||
#define _SVA_LAYER_H
|
||||
|
||||
|
||||
//===============================================================================
|
||||
// Include files
|
||||
//===============================================================================
|
||||
|
||||
#include "svasync.h"
|
||||
|
||||
//===============================================================================
|
||||
// Inline function definitions
|
||||
//===============================================================================
|
||||
|
||||
// Initialize the serial library
|
||||
// Should return 0 if no error occurred
|
||||
__inline int GDBStub_SerInit(int port)
|
||||
{
|
||||
int ret, init;
|
||||
|
||||
ret = init = SVAsyncInit(port - 1);
|
||||
if (ret == 0)
|
||||
ret = SVAsyncFifoInit();
|
||||
if (init == 0)
|
||||
atexit(SVAsyncStop);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
// Set the serial port speed (and other configurables)
|
||||
// Should return 0 if the speed is set properly
|
||||
__inline int GDBStub_SerSpeed(int speed)
|
||||
{
|
||||
SVAsyncSet(speed, BITS_8 | NO_PARITY | STOP_1);
|
||||
SVAsyncHand(DTR | RTS);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// Check to see if there's room in the buffer to send data
|
||||
// Should return 0 if it is okay to send
|
||||
__inline int GDBStub_SerSendOk(void)
|
||||
{
|
||||
return !SVAsyncOutStat();
|
||||
}
|
||||
|
||||
|
||||
// Send a character to the serial port
|
||||
// Should return 0 if the send succeeds
|
||||
__inline int GDBStub_SerSend(int c)
|
||||
{
|
||||
SVAsyncOut((char) c);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// Check to see if there are characters waiting in the buffer
|
||||
// Should return 0 if there's data waiting
|
||||
__inline int GDBStub_SerRecvOk(void)
|
||||
{
|
||||
return SVAsyncInStat();
|
||||
}
|
||||
|
||||
|
||||
// Read a character from the serial port
|
||||
// Should return the character read
|
||||
__inline int GDBStub_SerRecv(void)
|
||||
{
|
||||
return SVAsyncIn();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#endif
|
Loading…
Reference in a new issue