summaryrefslogtreecommitdiff
path: root/src/server/gdb_server.c
Commit message (Collapse)AuthorAgeFilesLines
* RTOS Thread awareness support wipBroadcom Corporation (Evan Hunter)2011-04-151-9/+27
| | | | | | | | | | | - works on Cortex-M3 with ThreadX and FreeRTOS Compared to original patch a few nits were fixed: - remove stricmp usage - unsigned compare fix - printf formatting fixes - fixed a bug with overrunning a memory buffer allocated with malloc.
* gdb: fix occasional crash when flash probe failedØyvind Harboe2010-11-151-3/+7
| | | | Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
* gdb: improve error message when gdb connect failsØyvind Harboe2010-11-111-1/+1
| | | | | | | | | | | | | gdb connect can fail when the flash has not been probed. During gdb connect, the flash layout is reported, but this can not be automatically detected for a target that is powered up and OpenOCD supports connecting to gdb server even if the target is powered down. The solution is to turn of the gdb_memory_map feature. Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
* build: remove warn_unused_result errorsSpencer Oliver2010-10-051-1/+1
| | | | | | | Remove any build errors for strtol when building release version of openocd. Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
* gdbserver: fix gdb_port memory leakSpencer Oliver2010-10-041-1/+3
| | | | Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
* pipes: add documentation for pipesØyvind Harboe2010-10-011-3/+7
| | | | | | | | | Stick with the name "gdb_port" even if this command can be used for other things(disable, named pipes, anonymous stdin/out pipe). "port" is correct for probably more than 90% of use cases, if not more. Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
* server: add support for pipesØyvind Harboe2010-10-011-23/+3
| | | | | | | -p/--pipe is now deprecated. Use '-c "gdb_port pipe;log_output openocd.log"' instead. Warning logged. Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
* server: specify port as a stringØyvind Harboe2010-10-011-25/+32
| | | | | | | | | This will allow switching to using named pipes. Split this out as a seperate commit to make changes easier to follow. Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
* server: read/write now goes through connection fn'sØyvind Harboe2010-10-011-1/+1
| | | | | | | | | | | depending on whether the connection is over a socket or pipe, the read is done differently. pipes can return -1 when writing 0 bytes, make 0 byte writes a successful no-op. 0 byte writes falls out naturally of tcl server code. Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
* server: split file descriptors in in/out fd'sØyvind Harboe2010-10-011-14/+3
| | | | | | | pipes have different fd's for in/out. This makes the code more orthogonal and prepares for adding pipes. Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
* gdb: fix blank line at topØyvind Harboe2010-09-261-1/+0
| | | | | | snuck in at some point... Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
* gdbserver: incorrect memory map for multiple targets (bug #24)sb-sf2010-07-051-2/+4
| | | | | | | The gdb server incorrectly reports the memory map if we have multiple targets with multiple flash banks. Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
* gdb-server: fix -Wshadow warningOyvind Harboe2010-06-171-7/+8
| | | | | | | | | | This warning was only reproducable with Cygwin. Cygwin now builds without warnings for the basic case. Signed-off-by: Oyvind Harboe <oyvind.harboe@zylin.com>
* gdb: -Wshadow warning fixesØyvind Harboe2010-06-161-1/+0
| | | | Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
* gdb: clean up error handling in step/continueØyvind Harboe2010-06-161-5/+15
| | | | | | | | | | if step/continue fails, then the error should be reported to the calling fn. The calling fn decides if the connection has to be aborted or if packet processing can continue. Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
* gdb-server: fix error reporting bugsØyvind Harboe2010-06-081-24/+9
| | | | | | | | | | | | GDB and OpenOCD has two different error number spaces and no mapping exists between them. If a specific error number is to be reported to GDB then this has to be done at the calling site, rather than as a generic routine that tries to map "retval" to GDB error number speak. Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
* gdbserver: gdb cmds returning failure on successSpencer Oliver2010-05-171-9/+12
| | | | | | | The gdb_memory_map cmd for example fell through and returned ERROR_COMMAND_SYNTAX_ERROR on success - behaviour is now as expected. Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
* missing pointer's declaration when enable macro -D_DEBUG_GDB_IO_.Jun Ma2010-05-141-0/+3
| | | | | | | reproducable when "./configure --enable-maintainer-mode CFLAGS=-D_DEBUG_GDB_IO_" Signed-off-by: Jun Ma <sync.jma@gmail.com> Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
* gdb: connect will now fail if flash autoprobe failsØyvind Harboe2010-05-051-3/+23
| | | | | | | | | | | | This stops GDB from launching with an empty memory map, making gdb load w/flashing fail for no obvious reason. The error message points in the direction of the gdb-attach event that can be set up to issue a halt or "reset init" which will put GDB in a well defined stated upon attach and thus have a robust flash autoprobe. Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
* gdb_server: improved gdb load performanceØyvind Harboe2010-03-171-8/+37
| | | | | | | | | | | by ack'ing memory writes immediately and reporting either at next memory write or stepi/continue time. GDB will then send off a new packet that is ready by the time the previous packet has been written to target memory. On faster adapters this can be as much as 10% improvement. Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
* gdb_server: handle stepi/continue packet while target is running with more graceØyvind Harboe2010-01-211-9/+14
| | | | | | | | | | Rather than issuing a halt and then stepi/resume, just wait for target to halt. Issue a sterner warning via gdb console that any gdb register changes will be ignored in this case. Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
* gdb_server: correctly report flash sector sizesDavid Brownell2010-01-201-31/+46
| | | | | | | | | | | | | | | Report each region of same-size sectors separately, instead of incorrectly reporting that every sector has the same size. This is a longstanding bug on NOR flash chips with non-uniform sector sizes. It was largely hidden by other bugs in flash handling. When some of those were recently fixed, this one was exposed as a regression on str710. [oyvind.harboe@zylin.com: update the loop to behave on str7 ] Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com> Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
* gdb_server -- subroutinize memory map logicDavid Brownell2010-01-191-107/+116
| | | | | | | | Put the memory map logic into its own subroutine. This will make it a bit easier to package bugfixes, and simplifies the query packet handling. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
* gdb_server -- symbol cleanupDavid Brownell2010-01-191-61/+105
| | | | | | | | Make most methods static; net minor object code shrink. Likewise various data symbols; no net change. Shrink some overlong lines. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
* GDB: change gdb_breakpoint_override to COMMAND_ANYSpencer Oliver2010-01-141-1/+1
| | | | | | - enable gdb_breakpoint_override to be used within config script. Signed-off-by: Spencer Oliver <ntfreak@users.sourceforge.net>
* NOR: add optional "flash erase_address" sector paddingDavid Brownell2010-01-131-3/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a NOR flash mechanism where erase_address ranges can be padded out to sector boundaries, triggering a diagnostic: > flash erase_address 0x0001f980 16 address range 0x0001f980 .. 0x0001f98f is not sector-aligned Command handler execution failed in procedure 'flash' called at file "command.c", line 647 called at file "command.c", line 361 > > flash erase_address pad 0x0001f980 16 Adding extra erase range, 0x0001f800 to 0x0001f97f Adding extra erase range, 0x0001f990 to 0x0001fbff erased address 0x0001f980 (length 16) in 0.095975s (0.163 kb/s) > This addresses what would otherwise be something of a functional regression. An earlier version of the interface had a dangerous problem: it would silently erase data outside the range it was told to erase. Fixing that bug turned up some folk who relied on that unsafe behavior. (The classic problem with interface bugs!) Now they can get that behavior again. If they really need it, just specify "pad". Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
* gdbserver: fix typo that broke read/write watchpointØyvind Harboe2010-01-131-2/+8
| | | | | | | | | | | | | It looks like a bugfix from normal breakpoints was not copied over. Do not use clever mathematics and assumptions to convert from GDB enum for break/watchpoints to OpenOCD enum. Drop connection upon unknown breakpoint type, this code path was not really considered by the previous code I think. Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
* Doxygen file commentsDavid Brownell2010-01-111-1/+10
| | | | | | | Add file comments to a few files. Make the GDB server use more conventional (pointer-free) hex digit conversion. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
* src/server: usage/help/doc updatesDavid Brownell2010-01-091-15/+16
| | | | | | | | | | | | | | | Make "usage" messages use the same EBNF as the User's Guide; no angle brackets. Improve and correct various helptexts. Specifically for the port commands, clarify that the number is optional, and omitting it causes the current number to be displayed. Don't use "&function"; a function's name is its address. Remove a couple instances of pointless whitespace; shrink a few overlong lines. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
* gdb: fix regression in gdb_port commandØyvind Harboe2010-01-051-2/+3
| | | | | | | | | | | | | | | | | | | The gdb_port command can be invoked during normal execution to report the port used for gdb, whereas it was listed as CONFIG stage only, which caused an error when excuting it to return the reported error. Also in line with the grander goal of making more commands available during all "modes" (perhaps retiring config mode), there is no particular reason to limit gdb_port to the config stage. Regression was introduced in: b3bf1d12b2fdfba1c1cbee3e1afbfbb27cbd1a26 aka v0.4.0-rc1-32-gb3bf1d1 Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
* streamline and document helptext mode displaysDavid Brownell2010-01-021-1/+2
| | | | | | | | | | | | | | | | | | | Most commands are usable only at runtime; so don't bother saying that, it's noise. Moreover, tokens like EXEC are cryptic. Be more clear: highlight only the commands which may (also) be used during the config stage, thus matching the docs more closely. There are - Configuration commands (per documentation) - And also some commands that valid at *any* time. Update the docs to note that "help" now shows this mode info. This also highlighted a few mistakes in command configuration, mostly commands listed as "valid at any time" which shouldn't have been. This just fixes ones I noted when sanity testing. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
* cygwin 1.7 build fixesDavid Brownell2009-12-261-1/+1
| | | | | | | | | | | It's less accepting of signed char ... insisting that e.g. tolower() not receive one as a parameter. It's probably good to phase out such usage, given the number of bugs that lurk in the vicinity (assumptions that char is unsigned), so fix these even though such usage is actually legal. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
* gdb_server: use more local variables in inner loop of fetching packetstiny ↵Øyvind Harboe2009-12-111-31/+73
| | | | | | | | | | | | | | | | | | refactoring to allow optimisation of inner loops Some profiling information for arm7 16MHz GDB load operation shows gdb_get_packet_inner() near the very top. Each sample counts as 0.01 seconds. % cumulative self self total time seconds seconds calls Ts/call Ts/call name 52.91 2.27 2.27 embeddedice_write_dcc 11.89 2.78 0.51 gdb_get_packet_inner 8.86 3.16 0.38 memcpy 3.26 3.30 0.14 idle_thread_main(unsigned int) 3.03 3.43 0.13 cyg_in_cksum Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
* gdb_server: make struct gdb_connection privateØyvind Harboe2009-12-111-1/+20
| | | | | | it is only used inside gdb_server.c Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com>
* remove flash.h from treeZachary T Welch2009-12-041-1/+1
| | | | | Remove the now vestigial <flash/flash.h> header from the tree, replacing a few references with <flash/nor/core.h>
* fix regressions with GDB port numbersZachary T Welch2009-12-031-3/+11
| | | | | | Use a separate variable for iterating GDB service port numbers than the one set by the user. Restores the behavior of returning the original port number and only incrementing the port used on success.
* change #include "flash.h" to <flash/flash.h>Zachary T Welch2009-12-031-1/+1
| | | | | | | | | | | | Changes from the flat namespace to heirarchical one. Instead of writing: #include "flash.h" the following form should be used. #include <flash/flash.h> The exception is from .c files in the same directory.
* change #include "target_request.h" to <target/target_request.h>Zachary T Welch2009-12-031-1/+1
| | | | | | | | | | | | Changes from the flat namespace to heirarchical one. Instead of writing: #include "target_request.h" the following form should be used. #include <target/target_request.h> The exception is from .c files in the same directory.
* change #include "register.h" to <target/register.h>Zachary T Welch2009-12-031-1/+1
| | | | | | | | | | | | Changes from the flat namespace to heirarchical one. Instead of writing: #include "register.h" the following form should be used. #include <target/register.h> The exception is from .c files in the same directory.
* change #include "image.h" to <target/image.h>Zachary T Welch2009-12-031-1/+1
| | | | | | | | | | | | Changes from the flat namespace to heirarchical one. Instead of writing: #include "image.h" the following form should be used. #include <target/image.h> The exception is from .c files in the same directory.
* change #include "breakpoints.h" to <target/breakpoints.h>Zachary T Welch2009-12-031-1/+1
| | | | | | | | | | | | Changes from the flat namespace to heirarchical one. Instead of writing: #include "breakpoints.h" the following form should be used. #include <target/breakpoints.h> The exception is from .c files in the same directory.
* change #include "jtag.h" to <jtag/jtag.h>Zachary T Welch2009-12-031-1/+1
| | | | | | | | | | | | Changes from the flat namespace to heirarchical one. Instead of writing: #include "jtag.h" the following form should be used. #include <jtag/jtag.h> The exception is from .c files in the same directory.
* improve gdb_init() sequenceZachary T Welch2009-11-301-33/+46
| | | | | | | | | | | | Rework gdb_init to create flexible APIs (gdb_target_add_{one,all}) and static helper (gdb_target_start) for starting GDB services. Eliminates duplicated code and provides general mechanisms for adding GDB services. The 'init' command is updated to call the new API, and later patches can decouple its policy of adding all targets therein. Provides the new capability to use both piped and TCP servers when multiple targets are defined. The first target fills the pipe, and others will be started on TCP ports (unless disabled, i.e. gdb_port=0).
* fix typos in source filesUwe Hermann2009-11-261-5/+5
| | | | | | Correct some spelling errors in source comments and printed output. Signed-off-by: Zachary T Welch <zw@superlucidity.net>
* target: create and use target_name()David Brownell2009-11-251-5/+5
| | | | | | | | | | | | | Several of the sites now using target_type_name() really ought to be using an instance-specific name. Create a function called target_name(), accessing the instance's own (command) name. Use it in several places that really should be displaying instance-specific names. Also in several places which were already doing so, but which had no wrapper to call. Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
* target: target_get_name() --> target_type_name()David Brownell2009-11-251-2/+2
| | | | | | | | | | | | | There are two names that may matter on a per-target basis. One is a per-instance name (for example, "at91sam7s.cpu"). The other is the name of its type (for example, "arm7tdmi"), which is shared among multiple targets. Currently target_get_name() returns the type name, which is misleading and is rarely appropriate for target diagnostics. Rename that as target_type_name(). Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
* server: use register_commandsZachary T Welch2009-11-241-22/+50
| | | | Converts server directory to use new command registration paradigm.
* use COMMAND_REGISTER macroZachary T Welch2009-11-241-6/+6
| | | | | Replaces direct calls to register_command() with a macro, to allow its parameters to be changed and callers updated in phases.
* use COMMAND_PARSE_ENABLE macro where appropriateZachary T Welch2009-11-181-42/+3
| | | | | | | | Updates all command parsing of simple "enable" and "disable" arguments. A few case in the tree use a tri-state or extended arguments, which cannot use this simple macro. Simlifies the xscale icache/dcache command handler logic.
* command_handler: change 'cmd_ctx' to CMD_CTXZachary T Welch2009-11-171-1/+1
| | | | Convert all command handler 'cmd_ctx' parameter usage with CMD_CTX.