fpc.paketlendi
This commit is contained in:
parent
12d160da1e
commit
b23ed0b23d
|
@ -0,0 +1,41 @@
|
|||
# Description: Özgür pascal derleyicisi
|
||||
# URL: http://www.freepascal.org/
|
||||
# Packager: milisarge
|
||||
# Depends on:
|
||||
|
||||
name=fpc
|
||||
version=2.6.4
|
||||
release=1
|
||||
source=(ftp://ftp.freepascal.org/pub/fpc/dist/$version/source/fpcbuild-$version.tar.gz
|
||||
http://crux.ster.zone/downloads/fpc/md5/2f440a0e40d134ed67db2fbf58c6e30a/x86_64-linux-ppcx64.bz2
|
||||
ftp://ftp.freepascal.org/pub/fpc/contrib/libgdb/v7.2/libgdb_mingw702.zip)
|
||||
|
||||
build() {
|
||||
bunzip2 x86_64-linux-ppcx64.bz2
|
||||
chmod 0755 x86_64-linux-ppcx64
|
||||
|
||||
export LIBGDBDIR=$SRC/libgdb/win64/x86_64/
|
||||
|
||||
cd fpcbuild-$version/fpcsrc/
|
||||
|
||||
make -j 1 PP=$SRC/x86_64-linux-ppcx64 build
|
||||
|
||||
cp $SRC/fpcbuild-$version/fpcsrc/compiler/ppcx64 \
|
||||
$SRC/fpcbuild-$version/fpcsrc/compiler/ppcx64.new
|
||||
|
||||
make -j 1 PP=$SRC/fpcbuild-$version/fpcsrc/compiler/ppcx64.new build
|
||||
rm $SRC/fpcbuild-$version/fpcsrc/compiler/ppcx64.new
|
||||
|
||||
make -j 1 PP=$SRC/fpcbuild-$version/fpcsrc/compiler/ppcx64 rtl_clean
|
||||
make -j 1 PP=$SRC/fpcbuild-$version/fpcsrc/compiler/ppcx64 rtl packages_all utils
|
||||
|
||||
set -- PP=$SRC/fpcbuild-$version/fpcsrc/compiler/ppcx64 \
|
||||
FPCMAKE=$SRC/fpcbuild-$version/fpcsrc/utils/fpcm/fpcmake \
|
||||
INSTALL_PREFIX=$PKG/usr \
|
||||
INSTALL_DOCDIR=$PKG/usr/share/doc/fpcbuild \
|
||||
INSTALL_MANDIR=$PKG/usr/share/man \
|
||||
INSTALL_SOURCEDIR=$PKG/usr/lib/fpc/fpcbuild-$version/source
|
||||
|
||||
make -j 1 "$@" compiler_install rtl_install packages_install utils_install
|
||||
ln -sf /usr/lib/fpc/$version/ppcx64 $PKG/usr/bin/ppcx64
|
||||
}
|
|
@ -0,0 +1,737 @@
|
|||
diff -wbBur fpcbuild-2.6.0/fpcsrc/ide/fp.pas fpcbuild-2.6.0.my/fpcsrc/ide/fp.pas
|
||||
--- fpcbuild-2.6.0/fpcsrc/ide/fp.pas 2010-08-20 15:04:44.000000000 +0400
|
||||
+++ fpcbuild-2.6.0.my/fpcsrc/ide/fp.pas 2013-01-14 20:55:58.472376421 +0400
|
||||
@@ -14,6 +14,9 @@
|
||||
**********************************************************************}
|
||||
program FP;
|
||||
|
||||
+{$LINKLIB libz.so}
|
||||
+
|
||||
+
|
||||
{$ifdef Windows}
|
||||
{ some windows versions, namely at least XP x64 don't like if the IDE stack
|
||||
is too big }
|
||||
diff -wbBur fpcbuild-2.6.0/fpcsrc/packages/gdbint/Makefile fpcbuild-2.6.0.my/fpcsrc/packages/gdbint/Makefile
|
||||
--- fpcbuild-2.6.0/fpcsrc/packages/gdbint/Makefile 2011-12-11 00:19:00.000000000 +0400
|
||||
+++ fpcbuild-2.6.0.my/fpcsrc/packages/gdbint/Makefile 2013-01-14 20:32:15.545303270 +0400
|
||||
@@ -2337,10 +2337,12 @@
|
||||
endif
|
||||
ifeq ($(OS_SOURCE),openbsd)
|
||||
override FPCOPT+=-FD$(NEW_BINUTILS_PATH)
|
||||
+override FPCMAKEOPT+=-FD$(NEW_BINUTILS_PATH)
|
||||
endif
|
||||
ifndef CROSSBOOTSTRAP
|
||||
ifneq ($(BINUTILSPREFIX),)
|
||||
override FPCOPT+=-XP$(BINUTILSPREFIX)
|
||||
+override FPCMAKEOPT+=-XP$(BINUTILSPREFIX)
|
||||
endif
|
||||
ifneq ($(BINUTILSPREFIX),)
|
||||
override FPCOPT+=-Xr$(RLINKPATH)
|
||||
diff -wbBur fpcbuild-2.6.0/fpcsrc/packages/gdbint/src/gdbint.pp fpcbuild-2.6.0.my/fpcsrc/packages/gdbint/src/gdbint.pp
|
||||
--- fpcbuild-2.6.0/fpcsrc/packages/gdbint/src/gdbint.pp 2011-12-10 20:50:23.000000000 +0400
|
||||
+++ fpcbuild-2.6.0.my/fpcsrc/packages/gdbint/src/gdbint.pp 2013-01-14 20:53:27.332331458 +0400
|
||||
@@ -17,6 +17,7 @@
|
||||
|
||||
{$define NotImplemented}
|
||||
|
||||
+{$define GDB_DISABLE_PYTHON}
|
||||
{$define COMPILING_GDBINT_UNIT}
|
||||
{$ifdef USE_GDBLIBINC}
|
||||
{$i gdblib.inc}
|
||||
@@ -50,7 +51,6 @@
|
||||
{$ifdef GDB_V601}
|
||||
{$info using gdb 6.1.x}
|
||||
{$define GDB_V6}
|
||||
- {$define GDB_HAS_DB_COMMANDS}
|
||||
{$undef GDB_HAS_DEPRECATED_CBPH}
|
||||
{$endif def GDB_V601}
|
||||
|
||||
@@ -58,14 +58,12 @@
|
||||
{$ifdef GDB_V602}
|
||||
{$info using gdb 6.2.x}
|
||||
{$define GDB_V6}
|
||||
- {$define GDB_HAS_DB_COMMANDS}
|
||||
{$endif def GDB_V602}
|
||||
|
||||
{ 6.3.x }
|
||||
{$ifdef GDB_V603}
|
||||
{$info using gdb 6.3.x}
|
||||
{$define GDB_V6}
|
||||
- {$define GDB_HAS_DB_COMMANDS}
|
||||
{$endif def GDB_V603}
|
||||
|
||||
{ 6.4.x }
|
||||
@@ -73,7 +71,6 @@
|
||||
{$info using gdb 6.4.x}
|
||||
{$define GDB_V6}
|
||||
{$define GDB_NEEDS_NO_ERROR_INIT}
|
||||
- {$define GDB_HAS_DB_COMMANDS}
|
||||
{$endif def GDB_V604}
|
||||
|
||||
{ 6.5.x }
|
||||
@@ -87,7 +84,6 @@
|
||||
{$ifdef GDB_V606}
|
||||
{$info using gdb 6.6.x}
|
||||
{$define GDB_V6}
|
||||
- {$define GDB_HAS_DB_COMMANDS}
|
||||
{$define GDB_USES_BP_LOCATION}
|
||||
{$define GDB_NEEDS_NO_ERROR_INIT}
|
||||
{$define GDB_USES_EXPAT_LIB}
|
||||
@@ -98,7 +94,6 @@
|
||||
{$ifdef GDB_V607}
|
||||
{$info using gdb 6.7.x}
|
||||
{$define GDB_V6}
|
||||
- {$define GDB_HAS_DB_COMMANDS}
|
||||
{$define GDB_USES_BP_LOCATION}
|
||||
{$define GDB_NEEDS_NO_ERROR_INIT}
|
||||
{$define GDB_USES_EXPAT_LIB}
|
||||
@@ -109,7 +104,6 @@
|
||||
{$ifdef GDB_V608}
|
||||
{$info using gdb 6.8.x}
|
||||
{$define GDB_V6}
|
||||
- {$define GDB_HAS_DB_COMMANDS}
|
||||
{$define GDB_USES_BP_LOCATION}
|
||||
{$define GDB_BP_LOCATION_HAS_GLOBAL_NEXT}
|
||||
{$define GDB_NEEDS_NO_ERROR_INIT}
|
||||
@@ -120,13 +114,64 @@
|
||||
{$define GDB_HAS_BP_NONE}
|
||||
{$endif def GDB_V608}
|
||||
|
||||
+{ 7.5.x }
|
||||
+{$ifdef GDB_V705}
|
||||
+ {$info using gdb 7.5.x}
|
||||
+ {$define GDB_V7}
|
||||
+ {$define GDB_BP_LOCATION_HAS_GDBARCH}
|
||||
+ {$define GDB_HAS_PROGRAM_SPACE}
|
||||
+ {$define GDB_NO_UIOUT}
|
||||
+ {$define GDB_NEEDS_INTERPRETER_SETUP}
|
||||
+ {$define GDB_NEEDS_SET_INSTREAM}
|
||||
+ {$define GDB_NOTIFY_BREAKPOINT_ARG_IS_BREAKPOINT_PTR}
|
||||
+ {$define GDB_USES_BP_OPS}
|
||||
+ {$define GDB_BP_TI_HAS_LENGTH}
|
||||
+ {$define GDB_BP_LOCATION_HAS_REFCOUNT}
|
||||
+ {$define GDB_BP_LOCATION_HAS_OPS}
|
||||
+ {$define GDB_UI_FILE_HAS_WRITE_ASYNC}
|
||||
+ {$ifdef win32}
|
||||
+ {$define GDB_USES_LIBADVAPI32}
|
||||
+ {$endif win32}
|
||||
+{$endif def GDB_V705}
|
||||
+
|
||||
+{ 7.4.x }
|
||||
+{$ifdef GDB_V704}
|
||||
+ {$info using gdb 7.4.x}
|
||||
+ {$define GDB_V7}
|
||||
+ {$define GDB_BP_LOCATION_HAS_GDBARCH}
|
||||
+ {$define GDB_HAS_PROGRAM_SPACE}
|
||||
+ {$define GDB_NO_UIOUT}
|
||||
+ {$define GDB_NEEDS_INTERPRETER_SETUP}
|
||||
+ {$define GDB_NEEDS_SET_INSTREAM}
|
||||
+ {$define GDB_NOTIFY_BREAKPOINT_ARG_IS_BREAKPOINT_PTR}
|
||||
+ {$define GDB_USES_BP_OPS}
|
||||
+ {$define GDB_BP_TI_HAS_LENGTH}
|
||||
+ {$define GDB_BP_LOCATION_HAS_REFCOUNT}
|
||||
+ {$define GDB_BP_LOCATION_HAS_OPS}
|
||||
+ {$define GDB_UI_FILE_HAS_WRITE_ASYNC}
|
||||
+ {$ifdef win32}
|
||||
+ {$define GDB_USES_LIBADVAPI32}
|
||||
+ {$endif win32}
|
||||
+{$endif def GDB_V704}
|
||||
+
|
||||
{ 7.3.x }
|
||||
{$ifdef GDB_V703}
|
||||
{$info using gdb 7.3.x}
|
||||
{$define GDB_V7}
|
||||
{$define GDB_BP_LOCATION_HAS_GDBARCH}
|
||||
{$define GDB_HAS_PROGRAM_SPACE}
|
||||
-{$endif def GDB_V702}
|
||||
+ {$define GDB_BP_TI_HAS_LENGTH}
|
||||
+ {$define GDB_BP_LOCATION_HAS_REFCOUNT}
|
||||
+ {$ifdef GDB_CVS}
|
||||
+ {$define GDB_NO_UIOUT}
|
||||
+ {$define GDB_NEEDS_INTERPRETER_SETUP}
|
||||
+ {$define GDB_NEEDS_SET_INSTREAM}
|
||||
+ {$define GDB_NOTIFY_BREAKPOINT_ARG_IS_BREAKPOINT_PTR}
|
||||
+ {$define GDB_USES_BP_OPS}
|
||||
+ {$define GDB_BP_LOCATION_HAS_OPS}
|
||||
+ {$define GDB_UI_FILE_HAS_WRITE_ASYNC}
|
||||
+ {$endif GDB_CVS}
|
||||
+{$endif def GDB_V703}
|
||||
|
||||
{ 7.2.x }
|
||||
{$ifdef GDB_V702}
|
||||
@@ -448,8 +493,11 @@
|
||||
{$LINKLIB libintl.a}
|
||||
{$LINKLIB imagehlp}
|
||||
{$endif not USE_MINGW_GDB}
|
||||
- {$LINKLIB kernel32}
|
||||
+ {$ifdef GDB_USES_LIBADVAPI32}
|
||||
+ {$LINKLIB advapi32}
|
||||
+ {$endif GDB_USES_LIBADVAPI32}
|
||||
{$LINKLIB user32}
|
||||
+ {$LINKLIB kernel32}
|
||||
{$endif win32}
|
||||
|
||||
{$ifdef win64}
|
||||
@@ -588,9 +636,11 @@
|
||||
type
|
||||
|
||||
pui_file = ^ui_file;
|
||||
+ pstdio_file = ^stdio_file;
|
||||
|
||||
ui_file_flush_ftype = procedure(stream : pui_file);cdecl;
|
||||
ui_file_write_ftype = procedure(stream : pui_file;buf : pchar;len : longint);cdecl;
|
||||
+ ui_file_write_async_save_ftype = procedure(stream : pui_file;buf : pchar;len : longint);cdecl;
|
||||
ui_file_fputs_ftype = procedure(buf : pchar; stream : pui_file);cdecl;
|
||||
ui_file_delete_ftype = procedure(stream : pui_file);cdecl;
|
||||
ui_file_isatty_ftype = function(stream : pui_file) : longbool;cdecl;
|
||||
@@ -605,6 +655,9 @@
|
||||
magic : plongint;
|
||||
to_flush : ui_file_flush_ftype;
|
||||
to_write : ui_file_write_ftype;
|
||||
+ {$ifdef GDB_UI_FILE_HAS_WRITE_ASYNC}
|
||||
+ to_write_async_safe : ui_file_write_async_save_ftype;
|
||||
+ {$endif}
|
||||
to_fputs : ui_file_fputs_ftype;
|
||||
{$ifdef GDB_V6}
|
||||
to_read : ui_file_read_ftype;
|
||||
@@ -616,6 +669,13 @@
|
||||
to_data : pointer;
|
||||
end;
|
||||
|
||||
+ stdio_file = record
|
||||
+ magic : plongint;
|
||||
+ _file : P_C_FILE;
|
||||
+ df : longint;
|
||||
+ close_p : longint;
|
||||
+ end;
|
||||
+
|
||||
{ used to delete stdio_ui_file gdb_stdout and gdb_stderr }
|
||||
procedure ui_file_delete(stream : pui_file);cdecl;external;
|
||||
|
||||
@@ -774,10 +834,16 @@
|
||||
{$ifdef GDB_V6}
|
||||
type
|
||||
ui_out = pointer;
|
||||
+{$ifndef GDB_NO_UIOUT}
|
||||
var
|
||||
uiout : ui_out;cvar;external;
|
||||
+{$else GDB_NO_UIOUT}
|
||||
+var
|
||||
+ cli_uiout : ui_out;cvar;external;
|
||||
+ current_uiout : ui_out;cvar;external;
|
||||
+{$endif GDB_NO_UIOUT}
|
||||
function cli_out_new (stream : pui_file):ui_out;cdecl;external;
|
||||
-{$endif}
|
||||
+{$endif GDB_V6}
|
||||
|
||||
{$ifdef go32v2}
|
||||
{ needed to be sure %fs contains the DOS memory selector
|
||||
@@ -815,8 +881,11 @@
|
||||
jmp_buf = dpmi_jmp_buf;
|
||||
pjmp_buf = pdpmi_jmp_buf;
|
||||
|
||||
+
|
||||
function setjmp(var rec : jmp_buf) : longint;cdecl;external;
|
||||
|
||||
+ function malloc(size : longint) : pointer;cdecl;external;
|
||||
+
|
||||
procedure longjmp(var rec : jmp_buf;return_value : longint);cdecl;external;
|
||||
|
||||
procedure reload_fs;assembler;
|
||||
@@ -869,6 +938,13 @@
|
||||
pCORE_ADDR = ^CORE_ADDR;
|
||||
pblock = ^block;
|
||||
|
||||
+ tframe_id = record
|
||||
+ stack_addr, code_addr, special_addr : CORE_ADDR;
|
||||
+ addr_p_flags : byte;{ for three 1 bit flags
|
||||
+ stack_addr_p, code_addr_p, special_addr_p : cint : 1; }
|
||||
+ inline_depth : longint;
|
||||
+ end;
|
||||
+
|
||||
tlanguage = (language_unknown,language_auto,language_c,
|
||||
language_cplus,language_java,language_chill,
|
||||
language_fortran,language_m2,language_asm,
|
||||
@@ -897,9 +973,18 @@
|
||||
|
||||
target_hw_bp_type = (hw_write, hw_read, hw_access, hw_execute);
|
||||
|
||||
+ { pointer to structures that we don't need }
|
||||
+ pbp_ops = pointer;
|
||||
+ pbp_location_ops = pointer;
|
||||
+ pprogram_space = pointer;
|
||||
+ pgdbarch = pointer;
|
||||
+
|
||||
{$PACKRECORDS 4}
|
||||
pbreakpoint = ^breakpoint;
|
||||
breakpoint = record
|
||||
+{$ifdef GDB_USES_BP_OPS}
|
||||
+ ops : pbp_ops;
|
||||
+{$endif GDB_USES_BP_OPS}
|
||||
next : pbreakpoint;
|
||||
typ : bptype;
|
||||
enable : tenable;
|
||||
@@ -910,9 +995,15 @@
|
||||
{$else not GDB_USES_BP_LOCATION}
|
||||
address : CORE_ADDR;
|
||||
{$endif not GDB_USES_BP_LOCATION}
|
||||
+{$ifndef GDB_USES_BP_OPS}
|
||||
line_number : longint;
|
||||
source_file : pchar;
|
||||
+{$endif not GDB_USES_BP_OPS}
|
||||
silent : byte;
|
||||
+{$ifdef GDB_USES_BP_OPS}
|
||||
+ display_canonical: byte;
|
||||
+{$endif GDB_USES_BP_OPS}
|
||||
+
|
||||
ignore_count : longint;
|
||||
{$ifndef GDB_USES_BP_LOCATION}
|
||||
shadow_contents : array[0..15] of char;
|
||||
@@ -919,10 +1010,21 @@
|
||||
inserted : char;
|
||||
duplicate : char;
|
||||
{$endif not GDB_USES_BP_LOCATION}
|
||||
+
|
||||
commands : pointer; {^command_line}
|
||||
+{$ifdef GDB_USES_BP_OPS}
|
||||
+ frame_id : tframe_id;
|
||||
+ pspace : pprogram_space;
|
||||
+{$else not GDB_USES_BP_OPS}
|
||||
frame : CORE_ADDR;
|
||||
cond : pointer; {^expression}
|
||||
- addr_string : ^char;
|
||||
+{$endif GDB_USES_BP_OPS}
|
||||
+ addr_string : pchar;
|
||||
+{$ifdef GDB_USES_BP_OPS}
|
||||
+ filter : pchar;
|
||||
+ addr_string_range_end : pchar;
|
||||
+ gdbarch : pgdbarch;
|
||||
+{$endif GDB_USES_BP_OPS}
|
||||
language : tlanguage;
|
||||
input_radix : longint;
|
||||
cond_string : ^char;
|
||||
@@ -941,6 +1043,9 @@
|
||||
bp_target_info = record
|
||||
placed_address_space : pointer;{paddress_space;}
|
||||
placed_address : CORE_ADDR;
|
||||
+{$ifdef GDB_BP_TI_HAS_LENGTH}
|
||||
+ length : longint;
|
||||
+{$endif GDB_BP_TI_HAS_LENGTH}
|
||||
shadow_contents : array[0..15] of char;
|
||||
shadow_len : longint;
|
||||
placed_size : longint;
|
||||
@@ -948,9 +1053,17 @@
|
||||
|
||||
bp_location = record
|
||||
next : pbp_location;
|
||||
+{$ifdef GDB_BP_LOCATION_HAS_OPS}
|
||||
+ ops : pbp_location_ops;
|
||||
+{$endif GDB_BP_LOCATION_HAS_OPS}
|
||||
+
|
||||
+{$ifdef GDB_BP_LOCATION_HAS_REFCOUNT}
|
||||
+ refc : longint;
|
||||
+{$else}
|
||||
{$ifdef GDB_BP_LOCATION_HAS_GLOBAL_NEXT}
|
||||
global_next : pbp_location;
|
||||
{$endif GDB_BP_LOCATION_HAS_GLOBAL_NEXT}
|
||||
+{$endif}
|
||||
loc_type : bp_loc_type;
|
||||
owner : pbreakpoint;
|
||||
{$ifdef GDB_BP_LOCATION_HAS_GLOBAL_NEXT}
|
||||
@@ -961,10 +1074,10 @@
|
||||
inserted : byte;
|
||||
duplicate : byte;
|
||||
{$ifdef GDB_BP_LOCATION_HAS_GDBARCH}
|
||||
- gdbarch : pointer;{pgdbarch;}
|
||||
+ gdbarch : pgdbarch;
|
||||
{$endif GDB_BP_LOCATION_HAS_GDBARCH}
|
||||
{$ifdef GDB_HAS_PROGRAM_SPACE}
|
||||
- pspace : pointer;{pprogram_space;}
|
||||
+ pspace : pprogram_space;
|
||||
{$endif GDB_HAS_PROGRAM_SPACE}
|
||||
address : CORE_ADDR;
|
||||
{$ifdef GDB_BP_LOCATION_HAS_GLOBAL_NEXT}
|
||||
@@ -979,6 +1092,11 @@
|
||||
target_info : bp_target_info;
|
||||
overlay_target_info : bp_target_info;
|
||||
events_till_retirement : longint;
|
||||
+{$ifdef GDB_USES_BP_OPS}
|
||||
+ { line and source file are in location }
|
||||
+ line_number : longint;
|
||||
+ source_file : pchar;
|
||||
+{$endif not GDB_USES_BP_OPS}
|
||||
end;
|
||||
|
||||
tfreecode=(free_nothing,free_contents,free_linetable);
|
||||
@@ -1488,7 +1606,9 @@
|
||||
{$endif ndef GDB_HAS_OBSERVER_NOTIFY_BREAKPOINT_CREATED}
|
||||
current_target : target_ops;cvar;external;
|
||||
stop_pc : CORE_ADDR;cvar;external;
|
||||
- { Only used from GDB 5.01 but doesn't hurst otherwise }
|
||||
+ { Only used from GDB 5.0 but doesn't hurst otherwise }
|
||||
+ { This global variable is declared in defs.h as external
|
||||
+ and instanciated in main.c since version 5.0. }
|
||||
interpreter_p : pchar;cvar;public;
|
||||
|
||||
{ we need also to declare some vars }
|
||||
@@ -1502,13 +1622,22 @@
|
||||
|
||||
{ Whether xdb commands will be handled }
|
||||
{$ifdef GDB_HAS_DB_COMMANDS}
|
||||
+ { These two global variables are declared in defs.h
|
||||
+ since version 4.18 }
|
||||
xdb_commands : longint;cvar;public;
|
||||
|
||||
{ Whether dbx commands will be handled }
|
||||
dbx_commands : longint;cvar;public;
|
||||
{$endif GDB_HAS_DB_COMMANDS}
|
||||
|
||||
+{$ifdef GDB_NEEDS_SET_INSTREAM}
|
||||
var
|
||||
+ instream : P_C_FILE;cvar;external;
|
||||
+ function gdb_fopen (filename : pchar; mode : pchar) : pui_file;cdecl;external;
|
||||
+{$endif GDB_NEEDS_SET_INSTREAM}
|
||||
+var
|
||||
+ { The four following variables are defined in defs.h
|
||||
+ and instanciated in main.c since version 5.0 }
|
||||
gdb_stdout : pui_file;cvar;public;
|
||||
gdb_stderr : pui_file;cvar;public;
|
||||
gdb_stdlog : pui_file;cvar;public;
|
||||
@@ -1516,6 +1645,9 @@
|
||||
event_loop_p : longint;cvar;public;
|
||||
{$ifdef GDB_V6}
|
||||
(* target IO streams *)
|
||||
+ { The three following variables are declared in defs.h
|
||||
+ and instanciated in main.c since version 6.0 }
|
||||
+ gdb_stdin : pui_file;cvar;public;
|
||||
gdb_stdtargin : pui_file;cvar;public;
|
||||
gdb_stdtargerr : pui_file;cvar;public;
|
||||
{$endif}
|
||||
@@ -1523,7 +1655,10 @@
|
||||
{ used for gdb_stdout and gdb_stderr }
|
||||
function xmalloc(size : longint) : pointer;cdecl;external;
|
||||
{ used for QueryHook }
|
||||
-function xstrvprintf(msg : pchar) : pchar; varargs; cdecl; external;
|
||||
+{ xvasprintf is present at least from GDB 5.3
|
||||
+ while xstrvprintf only appears in version 6.2,
|
||||
+ so only use xvasprintf function }
|
||||
+function xvasprintf(ret : ppchar; msg : pchar) : pchar; varargs; cdecl; external;
|
||||
procedure xfree(p : pointer); cdecl; external;
|
||||
function find_pc_line(i:CORE_ADDR;l:longint):symtab_and_line;cdecl;external;
|
||||
function find_pc_function(i:CORE_ADDR):psymbol;cdecl;external;
|
||||
@@ -2406,11 +2541,15 @@
|
||||
QueryHook:=0
|
||||
else
|
||||
begin
|
||||
- if curr_gdb^.reset_command and (pos('Kill',question)>0) then
|
||||
+ if curr_gdb^.reset_command and ((pos('Kill',question)>0) or
|
||||
+ (pos('Discard symbol table',question)>0)) then
|
||||
QueryHook:=1
|
||||
else if pos('%',question)>0 then
|
||||
begin
|
||||
- local:=xstrvprintf(question,arg);
|
||||
+ xvasprintf(@local,question,arg);
|
||||
+ { xvasprintf can failed, in that case local is set to nil }
|
||||
+ if not assigned(local) then
|
||||
+ local:=question;
|
||||
QueryHook:=curr_gdb^.Query(local, nil);
|
||||
xfree(local);
|
||||
end
|
||||
@@ -2451,7 +2590,12 @@
|
||||
last_breakpoint_number:=b.number;
|
||||
{ function breakpoints have zero as file and as line !!
|
||||
but they are valid !! }
|
||||
+{$ifndef GDB_USES_BP_OPS}
|
||||
invalid_breakpoint_line:=(b.line_number<>sym.line) and (b.line_number<>0);
|
||||
+{$else GDB_USES_BP_OPS}
|
||||
+ invalid_breakpoint_line:=(b.loc=nil) or
|
||||
+ ((b.loc^.line_number<>sym.line) and (b.loc^.line_number<>0));
|
||||
+{$endif GDB_USES_BP_OPS}
|
||||
{$ifdef GDB_USES_BP_LOCATION}
|
||||
if assigned (b.loc) then
|
||||
last_breakpoint_address:=b.loc^.address
|
||||
@@ -2471,7 +2615,11 @@
|
||||
{$ifdef GDB_HAS_OBSERVER_NOTIFY_BREAKPOINT_CREATED}
|
||||
|
||||
type
|
||||
+{$ifdef GDB_NOTIFY_BREAKPOINT_ARG_IS_BREAKPOINT_PTR}
|
||||
+ breakpoint_created_function_type = procedure (bpp : pbreakpoint); cdecl;
|
||||
+{$else not GDB_NOTIFY_BREAKPOINT_ARG_IS_BREAKPOINT_PTR}
|
||||
breakpoint_created_function_type = procedure (bpnum : longint); cdecl;
|
||||
+{$endif not GDB_NOTIFY_BREAKPOINT_ARG_IS_BREAKPOINT_PTR}
|
||||
pobserver = pointer;
|
||||
var
|
||||
breakpoint_created_observer : pobserver = nil;
|
||||
@@ -2479,8 +2627,14 @@
|
||||
function observer_attach_breakpoint_created(create_func : breakpoint_created_function_type) : pobserver;cdecl;external;
|
||||
procedure observer_detach_breakpoint_created(pob : pobserver);cdecl;external;
|
||||
|
||||
-var breakpoint_chain : pbreakpoint ;cvar;external;
|
||||
|
||||
+{$ifdef GDB_NOTIFY_BREAKPOINT_ARG_IS_BREAKPOINT_PTR}
|
||||
+procedure notify_breakpoint_created(bpp : pbreakpoint); cdecl;
|
||||
+begin
|
||||
+ CreateBreakpointHook(bpp^);
|
||||
+end;
|
||||
+{$else not GDB_NOTIFY_BREAKPOINT_ARG_IS_BREAKPOINT_PTR}
|
||||
+var breakpoint_chain : pbreakpoint ;cvar;external;
|
||||
|
||||
procedure notify_breakpoint_created(bpnum : longint);cdecl;
|
||||
var
|
||||
@@ -2498,8 +2652,16 @@
|
||||
pb:=pb^.next;
|
||||
end;
|
||||
end;
|
||||
+{$endif not GDB_NOTIFY_BREAKPOINT_ARG_IS_BREAKPOINT_PTR}
|
||||
{$endif def GDB_HAS_OBSERVER_NOTIFY_BREAKPOINT_CREATED}
|
||||
|
||||
+{ Avoid loading of main.o object by providing a
|
||||
+ stripped down version of relocate_gdb_directory function }
|
||||
+function relocate_gdb_directory(path : pchar) : pchar; cdecl; public;
|
||||
+begin
|
||||
+ relocate_gdb_directory:=path;
|
||||
+end;
|
||||
+
|
||||
{*****************************************************************************
|
||||
tgdbinterface
|
||||
*****************************************************************************}
|
||||
@@ -2528,7 +2690,7 @@
|
||||
gdb_command('set print object on');
|
||||
gdb_command('set print null-stop');
|
||||
{$ifdef USE_MINGW_GDB} // maybe this also should be done for newer cygwin gdbs.
|
||||
- gdb_command('set confirm off');
|
||||
+ //gdb_command('set confirm off');
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
@@ -2609,9 +2771,9 @@
|
||||
var
|
||||
top_level_val : longint;
|
||||
|
||||
-function catch_errors(func : pointer; command : pchar; from_tty,mask : longint) : longint;cdecl;external;
|
||||
+function catch_command_errors(func : pointer; command : pchar; from_tty,mask : longint) : longint;cdecl;external;
|
||||
|
||||
-function gdbint_execute_command(command : pchar; from_tty,mask : longint) : longint;cdecl;
|
||||
+function gdbint_execute_command(command : pchar; from_tty : longint) : longint;cdecl;
|
||||
begin
|
||||
gdbint_execute_command:=1;
|
||||
execute_command(command,from_tty);
|
||||
@@ -2658,6 +2820,8 @@
|
||||
begin
|
||||
{$ifdef cpui386}
|
||||
MaskAllFPUExceptions := control or MaskAllExceptions;
|
||||
+{$else}
|
||||
+ MaskAllFPUExceptions:=0;
|
||||
{$endif}
|
||||
end;
|
||||
|
||||
@@ -2716,7 +2880,8 @@
|
||||
begin
|
||||
quit_return:=error_return;
|
||||
mask:=longint($ffffffff);
|
||||
- catch_errors(@gdbint_execute_command,@command,0,mask);
|
||||
+ catch_command_errors(@gdbint_execute_command,@command,
|
||||
+ 1,mask);
|
||||
{$ifdef go32v2}
|
||||
reload_fs;
|
||||
{$endif go32v2}
|
||||
@@ -2973,11 +3138,43 @@
|
||||
c_environ : ppchar;external name '_environ';
|
||||
c_argc : longint;external name '___crt0_argc';
|
||||
c_argv : ppchar;external name '___crt0_argv';
|
||||
+
|
||||
+ procedure ReallocateEnvironUsingCMalloc;
|
||||
+
|
||||
+ var
|
||||
+ neededsize , count : longint;
|
||||
+ penv : pchar;
|
||||
+ newenv : ppchar;
|
||||
+ begin
|
||||
+ if not assigned(c_environ) then
|
||||
+ neededsize:=0
|
||||
+ else
|
||||
+ begin
|
||||
+ count:=0;
|
||||
+ penv:=c_environ^;
|
||||
+ while assigned(penv) do
|
||||
+ begin
|
||||
+ inc(count);
|
||||
+ inc(penv,sizeof(pchar));
|
||||
+ end;
|
||||
+ neededsize:=count*sizeof(pchar);
|
||||
+ end;
|
||||
+ newenv:=malloc(neededsize);
|
||||
+ system.move(c_environ,newenv,neededsize);
|
||||
+ c_environ:=newenv;
|
||||
+ end;
|
||||
+
|
||||
{$endif def go32v2}
|
||||
var
|
||||
current_directory : pchar; cvar; external;
|
||||
gdb_dirbuf : array[0..0] of char; cvar; external;
|
||||
CurrentDir : AnsiString;
|
||||
+{$ifdef GDB_NEEDS_INTERPRETER_SETUP}
|
||||
+ type
|
||||
+ interpreter_struct_p = pointer; { to opaque type }
|
||||
+ function interp_lookup (name : pchar) : interpreter_struct_p;cdecl; external;
|
||||
+ function interp_set (interp : interpreter_struct_p) : longbool;cdecl; external;
|
||||
+{$endif GDB_NEEDS_INTERPRETER_SETUP}
|
||||
const
|
||||
DIRBUF_SIZE = 1024;
|
||||
|
||||
@@ -2986,13 +3183,28 @@
|
||||
var
|
||||
OldSigInt : SignalHandler;
|
||||
{$endif supportexceptions}
|
||||
+{$ifdef GDB_NEEDS_SET_INSTREAM}
|
||||
+var
|
||||
+ dummy_file : pui_file;
|
||||
+{$endif GDB_NEEDS_SET_INSTREAM}
|
||||
+
|
||||
{$ifdef GDB_INIT_HAS_ARGV0}
|
||||
var
|
||||
argv0 : pchar;
|
||||
{$endif not GDB_INIT_HAS_ARGV0}
|
||||
+{$ifdef GDB_NEEDS_INTERPRETER_SETUP}
|
||||
+var
|
||||
+ interp : interpreter_struct_p;
|
||||
+{$endif GDB_NEEDS_INTERPRETER_SETUP}
|
||||
+var
|
||||
+ save_gdb_stdin,
|
||||
+ save_gdb_stdout,
|
||||
+ save_gdb_stderr : pui_file;
|
||||
begin
|
||||
{$ifdef go32v2}
|
||||
- c_environ:=system.envp;
|
||||
+ { c_environ:=system.envp; }
|
||||
+ { DJGPP libC presupposes the c_enivron was malloc'ated }
|
||||
+ ReallocateEnvironUsingCMalloc;
|
||||
c_argc:=system.argc;
|
||||
c_argv:=system.argv;
|
||||
{$endif def go32v2}
|
||||
@@ -3012,8 +3224,25 @@
|
||||
ui_file_delete(gdb_stderr);
|
||||
if assigned(gdb_stdout) then
|
||||
ui_file_delete(gdb_stdout);
|
||||
+{$ifdef GDB_NEEDS_SET_INSTREAM}
|
||||
+ if assigned(gdb_stdin) then
|
||||
+ ui_file_delete(gdb_stdin);
|
||||
+ gdb_stdin:=mem_fileopen;
|
||||
+ save_gdb_stdin:=gdb_stdin;
|
||||
+ dummy_file :=gdb_fopen('dummy.$$$','a');
|
||||
+ {in captured_main code, this is simply
|
||||
+ instream:=stdin; but stdin is a highly system dependent macro
|
||||
+ so that we try to avoid it here }
|
||||
+ if assigned(dummy_file) then
|
||||
+ instream:=pstdio_file(dummy_file^.to_data)^._file
|
||||
+ else
|
||||
+ instream:=nil;
|
||||
+{$endif GDB_NEEDS_SET_INSTREAM}
|
||||
+
|
||||
gdb_stderr:=mem_fileopen;
|
||||
gdb_stdout:=mem_fileopen;
|
||||
+ save_gdb_stderr:=gdb_stderr;
|
||||
+ save_gdb_stdout:=gdb_stdout;
|
||||
gdb_stdlog:=gdb_stderr;
|
||||
gdb_stdtarg:=gdb_stderr;
|
||||
set_ui_file_write(gdb_stdout,@gdbint_ui_file_write);
|
||||
@@ -3022,7 +3251,9 @@
|
||||
error_init;
|
||||
{$endif GDB_NEEDS_NO_ERROR_INIT}
|
||||
{$ifdef GDB_V6}
|
||||
-// gdb_stdtargin := gdb_stdin;
|
||||
+{$ifdef GDB_NEEDS_SET_INSTREAM}
|
||||
+ gdb_stdtargin := gdb_stdin;
|
||||
+{$endif GDB_NEEDS_SET_INSTREAM}
|
||||
gdb_stdtargerr := gdb_stderr;
|
||||
{$endif}
|
||||
GetDir(0, CurrentDir);
|
||||
@@ -3034,8 +3265,10 @@
|
||||
next_exit:=exitproc;
|
||||
exitproc:=@DoneLibGDB;
|
||||
{$ifdef GDB_V6}
|
||||
+{$ifndef GDB_NO_UIOUT}
|
||||
uiout := cli_out_new (gdb_stdout);
|
||||
-{$endif}
|
||||
+{$endif not GDB_NO_UIOUT}
|
||||
+{$endif GDB_V6}
|
||||
{$ifdef GDB_INIT_HAS_ARGV0}
|
||||
getmem(argv0,length(paramstr(0))+1);
|
||||
strpcopy(argv0,paramstr(0));
|
||||
@@ -3044,6 +3277,31 @@
|
||||
{$else not GDB_INIT_HAS_ARGV0}
|
||||
gdb_init;
|
||||
{$endif not GDB_INIT_HAS_ARGV0}
|
||||
+{$ifdef GDB_NEEDS_INTERPRETER_SETUP}
|
||||
+ { interpreter can only be set after all files are
|
||||
+ initialized, which is done in gdb_init function. }
|
||||
+ interp := interp_lookup ('console');
|
||||
+ interp_set (interp);
|
||||
+
|
||||
+ { We need to re-set gdb_stdXX ui_files }
|
||||
+ if assigned(gdb_stderr) then
|
||||
+ ui_file_delete(gdb_stderr);
|
||||
+ if assigned(gdb_stdout) then
|
||||
+ ui_file_delete(gdb_stdout);
|
||||
+ if assigned(gdb_stdin) then
|
||||
+ ui_file_delete(gdb_stdin);
|
||||
+ gdb_stdin:=save_gdb_stdin;
|
||||
+ gdb_stderr:=save_gdb_stderr;
|
||||
+ gdb_stdout:=save_gdb_stdout;
|
||||
+ gdb_stdlog:=gdb_stderr;
|
||||
+ gdb_stdtarg:=gdb_stderr;
|
||||
+ set_ui_file_write(gdb_stdout,@gdbint_ui_file_write);
|
||||
+ set_ui_file_write(gdb_stderr,@gdbint_ui_file_write);
|
||||
+{$ifdef GDB_NO_UIOUT}
|
||||
+ cli_uiout := cli_out_new (gdb_stdout);
|
||||
+ current_uiout:=cli_uiout;
|
||||
+{$endif GDB_NO_UIOUT}
|
||||
+{$endif GDB_NEEDS_INTERPRETER_SETUP}
|
||||
{$ifdef supportexceptions}
|
||||
{$ifdef unix}
|
||||
fpsignal(SIGINT,OldSigInt);
|
||||
@@ -3069,14 +3327,34 @@
|
||||
end;
|
||||
|
||||
{$ifdef GDB_HAS_SYSROOT}
|
||||
-var gdb_sysroot : pchar; cvar;public;
|
||||
+ { Here we declare as cvar;public; a bunch of global
|
||||
+ variables that are defined in main.c source.
|
||||
+ We must not load main.o otherwise, we will get
|
||||
+ into multiply defined symbols troubles. }
|
||||
+var
|
||||
+ gdb_sysrootc : char;
|
||||
+ { used locally only to provide a pchar pointing to '\0' }
|
||||
+ gdb_sysroot : pchar; cvar;public;
|
||||
+ { gdb_sysroot global variable is declared in defs.h and
|
||||
+ instanciated in main.c since version 6.0 }
|
||||
gdb_datadir : pchar; cvar;public;
|
||||
+ { gdb_datadir global variable is declared in defs.h and
|
||||
+ instanciated in main.c since version 7.0 }
|
||||
python_libdir : pchar;cvar;public;
|
||||
- gdb_sysrootc : char;
|
||||
+ { python_libdir global variable is declared in defs.h and instanciated
|
||||
+ in main.c since version 7.2 }
|
||||
return_child_result : longbool;cvar;public;
|
||||
+ { return_chlid_result global variable is declared in main.h and
|
||||
+ instanciated in main.c since version 6.4 }
|
||||
return_child_result_value : longint;cvar;public;
|
||||
+ { return_child_result_value global variable is declared in main.h and
|
||||
+ instanciated in main.c since version 6.4 with a startup value of -1 }
|
||||
batch_silent : longbool;cvar;public;
|
||||
+ { batch_silent global variable is declared in main.h since 7.0, but
|
||||
+ instanciated in main.c since version 6.4 }
|
||||
batch_flag : longbool;cvar;public;
|
||||
+ { batch_flag global variable is declared in main.h and
|
||||
+ instanciated in main.c since version 7.2 }
|
||||
{$endif}
|
||||
{$ifdef GDB_HAS_DEBUG_FILE_DIRECTORY}
|
||||
var
|
||||
@@ -3086,6 +3364,7 @@
|
||||
begin
|
||||
{$ifdef GDB_HAS_SYSROOT}
|
||||
gdb_sysrootc := #0;
|
||||
+ return_child_result_value := -1;
|
||||
gdb_sysroot := @gdb_sysrootc;
|
||||
gdb_datadir := @gdb_sysrootc;
|
||||
python_libdir := @gdb_sysrootc;
|
|
@ -0,0 +1 @@
|
|||
mps sil fpc
|
|
@ -0,0 +1,47 @@
|
|||
# Description: Özgür pascal derleyicisi
|
||||
# URL: http://www.freepascal.org/
|
||||
# Packager: milisarge
|
||||
# Depends on: fpc
|
||||
|
||||
name=fpc3
|
||||
version=3.0.2
|
||||
release=1
|
||||
source=(ftp://ftp.freepascal.org/pub/fpc/dist/$version/source/fpcbuild-$version.tar.gz
|
||||
https://ftp.gnu.org/gnu/gdb/gdb-7.10.tar.xz
|
||||
fpc-gdb.patch)
|
||||
build() {
|
||||
cd "$SRC"/gdb-7.10
|
||||
./configure --prefix=/usr --disable-nls --without-python --disable-werror --disable-tui
|
||||
make
|
||||
make -C gdb libgdb.a
|
||||
cp libdecnumber/libdecnumber.a gdb/
|
||||
|
||||
cd "$SRC"/fpcbuild-$version
|
||||
#patch -p1 <"$SRC"/fpc-gdb.patch
|
||||
export GDBLIBDIR="$SRC"/gdb-7.10/gdb
|
||||
export LIBGDBFILE=$GDBLIBDIR/libgdb.a
|
||||
pushd fpcsrc/compiler
|
||||
fpcmake -Tall
|
||||
popd
|
||||
make build NOGDB=1
|
||||
|
||||
export HOME="$SRC"
|
||||
|
||||
make -j1 PREFIX="$PKG"/usr install
|
||||
|
||||
export PATH="$PKG"/usr/bin:$PATH
|
||||
|
||||
install -Dm0644 fpcsrc/rtl/COPYING.FPC "$PKG"/usr/share/licenses/${name}/COPYING.FPC
|
||||
|
||||
ln -s /usr/lib/fpc/${version}/ppcx64 "$PKG"/usr/bin/
|
||||
|
||||
mkdir -p "$PKG"/etc
|
||||
"$PKG"/usr/lib/fpc/${version}/samplecfg "$PKG"/usr/lib/fpc/${version} "$PKG"/etc
|
||||
|
||||
# use -fPIC by default
|
||||
echo -e "#ifdef cpux86_64\n# for x86_64 use -fPIC by default\n-Cg\n#endif" >> "$PKG/etc/fpc.cfg"
|
||||
|
||||
mv "$PKG"/usr/man "$PKG"/usr/share/
|
||||
|
||||
find "$PKG"/etc/ -type f -exec sed -i "s|"$PKG"||g" {} \;
|
||||
}
|
Loading…
Reference in New Issue