Added script that creates initial version of agent customization project
diff --git a/agent/bin/create-agent-project b/agent/bin/create-agent-project
new file mode 100755
index 0000000..b467933
--- /dev/null
+++ b/agent/bin/create-agent-project
@@ -0,0 +1,328 @@
+#!/bin/bash
+set -e
+
+while getopts n:f name ; do
+  case $name in
+  f)
+    FORCE=y
+    ;;
+  n)
+    OPSYS=$OPTARG
+    ;;
+  esac
+done
+
+cd `dirname $0`/../../..
+
+echo "This script creates a git repository for a customized TCF agent."
+echo "The repository will contain minimal amount of code"
+echo "to start porting the agent to a new OS."
+echo
+
+if [ -z "$OPSYS" ] ; then
+  read -p 'Target OS name: ' OPSYS
+fi
+
+if [ -z "$OPSYS" ] ; then
+  exit 0
+fi
+
+REPO=tcf.agent.$OPSYS
+
+if [ -z "$FORCE" ] ; then
+  if [ -d $REPO ] ; then
+    echo "Directory $REPO already exists"
+    exit 1
+  fi
+else
+  rm -rf $REPO
+fi
+
+mkdir $REPO
+cd $REPO
+
+mkdir -p system/$OPSYS/tcf
+
+cat >system/$OPSYS/tcf/context-`echo "$OPSYS" | tr '[:upper:]' '[:lower:]'`.c <<EOF
+#include <tcf/config.h>
+
+#include <tcf/framework/myalloc.h>
+#include <tcf/framework/events.h>
+#include <tcf/framework/context.h>
+
+Context * context_find_from_pid(pid_t pid, int thread) {
+    return NULL;
+}
+
+int context_attach_self(void) {
+    errno = ERR_UNSUPPORTED;
+    return -1;
+}
+
+int context_attach(pid_t pid, ContextAttachCallBack * done, void * client_data, int mode) {
+    errno = ERR_UNSUPPORTED;
+    return -1;
+}
+
+int context_has_state(Context * ctx) {
+    return 0;
+}
+
+#if ENABLE_ContextMemoryProperties
+int context_get_memory_properties(Context * ctx, const char *** names, const char *** values, int * cnt) {
+    return 0;
+}
+#endif
+
+#if ENABLE_ContextExtraProperties
+int context_get_extra_properties(Context * ctx, const char *** names, const char *** values, int * cnt) {
+    return 0;
+}
+#endif
+
+#if ENABLE_ContextStateProperties
+int context_get_state_properties(Context * ctx, const char *** names, const char *** values, int * cnt) {
+    return 0;
+}
+#endif
+
+int context_stop(Context * ctx) {
+    errno = ERR_UNSUPPORTED;
+    return -1;
+}
+
+int context_resume(Context * ctx, int mode, ContextAddress range_start, ContextAddress range_end) {
+    errno = ERR_UNSUPPORTED;
+    return -1;
+}
+
+int context_can_resume(Context * ctx, int mode) {
+    return 0;
+}
+
+int context_continue(Context * ctx) {
+    errno = ERR_UNSUPPORTED;
+    return -1;
+}
+
+int context_single_step(Context * ctx) {
+    errno = ERR_UNSUPPORTED;
+    return -1;
+}
+
+const char * context_suspend_reason(Context * ctx) {
+    return NULL;
+}
+
+int context_get_memory_map(Context * ctx, MemoryMap * map) {
+    errno = ERR_UNSUPPORTED;
+    return -1;
+}
+
+int context_write_mem(Context * ctx, ContextAddress address, void * buf, size_t size) {
+    errno = ERR_UNSUPPORTED;
+    return -1;
+}
+
+int context_read_mem(Context * ctx, ContextAddress address, void * buf, size_t size) {
+    errno = ERR_UNSUPPORTED;
+    return -1;
+}
+
+#if ENABLE_ExtendedMemoryErrorReports
+int context_get_mem_error_info(MemoryErrorInfo * info) {
+    errno = ERR_UNSUPPORTED;
+    return -1;
+}
+#endif
+
+#if ENABLE_MemoryAccessModes
+int context_write_mem_ext(Context * ctx, MemoryAccessMode * mode, ContextAddress address, void * buf, size_t size) {
+    errno = ERR_UNSUPPORTED;
+    return -1;
+}
+
+int context_read_mem_ext(Context * ctx, MemoryAccessMode * mode, ContextAddress address, void * buf, size_t size) {
+    errno = ERR_UNSUPPORTED;
+    return -1;
+}
+#endif
+
+int context_write_reg(Context * ctx, RegisterDefinition * def, unsigned offs, unsigned size, void * buf) {
+    errno = ERR_UNSUPPORTED;
+    return -1;
+}
+
+int context_read_reg(Context * ctx, RegisterDefinition * def, unsigned offs, unsigned size, void * buf) {
+    errno = ERR_UNSUPPORTED;
+    return -1;
+}
+
+unsigned context_word_size(Context * ctx) {
+    return 8;
+}
+
+int context_get_canonical_addr(Context * ctx, ContextAddress addr,
+        Context ** canonical_ctx, ContextAddress * canonical_addr,
+        ContextAddress * block_addr, ContextAddress * block_size) {
+    errno = ERR_UNSUPPORTED;
+    return -1;
+}
+
+Context * context_get_group(Context * ctx, int group) {
+    return ctx;
+}
+
+int context_get_supported_bp_access_types(Context * ctx) {
+    return 0;
+}
+
+int context_plant_breakpoint(ContextBreakpoint * bp) {
+    errno = ERR_UNSUPPORTED;
+    return -1;
+}
+
+int context_unplant_breakpoint(ContextBreakpoint * bp) {
+    errno = ERR_UNSUPPORTED;
+    return -1;
+}
+
+#if ENABLE_ContextBreakpointCapabilities
+int context_get_breakpoint_capabilities(Context * ctx, const char *** names, const char *** values, int * cnt) {
+    *cnt = 0;
+    return 0;
+}
+#endif
+
+#if ENABLE_ExtendedBreakpointStatus
+int context_get_breakpoint_status(ContextBreakpoint * bp, const char *** names, const char *** values, int * cnt) {
+    *cnt = 0;
+    return 0;
+}
+#endif
+
+#if ENABLE_ContextISA
+int context_get_isa(Context * ctx, ContextAddress addr, ContextISA * isa) {
+    errno = ERR_UNSUPPORTED;
+    return -1;
+}
+#endif
+
+RegisterDefinition * get_reg_definitions(Context * ctx) {
+    return NULL;
+}
+
+RegisterDefinition * get_PC_definition(Context * ctx) {
+    return NULL;
+}
+
+RegisterDefinition * get_reg_by_id(Context * ctx, unsigned id, RegisterIdScope * scope) {
+    return NULL;
+}
+
+int read_reg_bytes(StackFrame * frame, RegisterDefinition * reg_def, unsigned offs, unsigned size, uint8_t * buf) {
+    errno = ERR_UNSUPPORTED;
+    return -1;
+}
+
+int write_reg_bytes(StackFrame * frame, RegisterDefinition * reg_def, unsigned offs, unsigned size, uint8_t * buf) {
+    errno = ERR_UNSUPPORTED;
+    return -1;
+}
+
+uint8_t * get_break_instruction(Context * ctx, size_t * size) {
+    return NULL;
+}
+
+int crawl_stack_frame(StackFrame * frame, StackFrame * down) {
+    errno = ERR_UNSUPPORTED;
+    return -1;
+}
+
+void init_contexts_sys_dep(void) {
+}
+EOF
+
+cat >system/$OPSYS/tcf/regset.h <<EOF
+#include <tcf/config.h>
+EOF
+
+cat >Makefile <<EOF
+OPSYS = $OPSYS
+MACHINE = x86_64
+LIBS = -lpthread -lrt
+TCF_AGENT_DIR=../org.eclipse.tcf.agent/agent
+
+include \$(TCF_AGENT_DIR)/Makefile.inc
+
+override CFLAGS += \$(foreach dir,\$(INCDIRS),-I\$(dir)) \$(OPTS)
+
+HFILES := \$(foreach dir,\$(SRCDIRS),\$(wildcard \$(dir)/*.h)) \$(HFILES)
+CFILES := \$(sort \$(foreach dir,\$(SRCDIRS),\$(wildcard \$(dir)/*.c)) \$(CFILES))
+
+all: \$(addprefix \$(BINDIR)/,agent\$(EXTEXE))
+
+\$(BINDIR)/libtcf\$(EXTLIB) : \$(OFILES)
+	\$(AR) \$(AR_FLAGS) \$(AR_OUT_F)\$@ \$^
+	\$(RANLIB)
+
+\$(BINDIR)/agent\$(EXTEXE): \$(BINDIR)/tcf/main/main\$(EXTOBJ) \$(BINDIR)/libtcf\$(EXTLIB)
+	\$(LINK) \$(LINK_FLAGS) \$(LINK_OUT_F)\$@ \$(BINDIR)/tcf/main/main\$(EXTOBJ) \$(BINDIR)/libtcf\$(EXTLIB) \$(LIBS)
+
+\$(BINDIR)/%\$(EXTOBJ): %.c \$(HFILES) Makefile
+	@\$(call MKDIR,\$(dir \$@))
+	\$(CC) \$(CFLAGS) -c -o \$@ \$<
+
+\$(BINDIR)/%\$(EXTOBJ): \$(TCF_AGENT_DIR)/%.c \$(HFILES) Makefile
+	@\$(call MKDIR,\$(dir \$@))
+	\$(CC) \$(CFLAGS) -c -o \$@ \$<
+
+clean:
+	\$(call RMDIR,\$(BINDIR))
+EOF
+
+mkdir -p tcf
+
+cat >tcf/config.h <<EOF
+#ifndef D_config
+#define D_config
+
+#define ENABLE_SSL              0
+#define ENABLE_ELF              0
+#define ENABLE_LineNumbersProxy 1
+#define ENABLE_SymbolsProxy     1
+#define ENABLE_ContextProxy     1
+
+#define ENABLE_ContextIdHashTable             1
+#define ENABLE_ContextMemoryProperties        0
+#define ENABLE_ContextExtraProperties         0
+#define ENABLE_ContextStateProperties         0
+#define ENABLE_ContextBreakpointCapabilities  0
+#define ENABLE_ExtendedBreakpointStatus       0
+#define ENABLE_ExtendedMemoryErrorReports     0
+#define ENABLE_MemoryAccessModes              0
+#define ENABLE_ContextISA                     1
+
+#define USE_uuid_generate       0
+
+#define SERVICE_Symbols         0
+#define SERVICE_LineNumbers     0
+#define SERVICE_SysMonitor      0
+#define SERVICE_Terminals       0
+
+#include <tcf/framework/config.h>
+
+#endif /* D_config */
+EOF
+
+cat >.gitignore <<EOF
+/obj
+EOF
+
+git init
+git add .gitignore Makefile
+git add tcf/* system/$OPSYS/tcf/*
+git commit -am "Initial version"
+
+echo "Successfully created repository:"
+echo "  $(pwd)"