User Tools

Site Tools


gdb

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
gdb [2024/12/12 08:02] keremetgdb [2024/12/17 20:24] (current) keremet
Line 6: Line 6:
   cd binutils-gdb   cd binutils-gdb
   git checkout gdb-15.2-release   git checkout gdb-15.2-release
 +
 +Пропатченная версия
 +  git clone https://github.com/keremet/binutils-gdb -b gpdb6
  
 Компиляция Компиляция
  
-  wget https://ftp.gnu.org/gnu/gdb/gdb-15.2.tar.xz +  cd binutils-gdb
-  tar xf gdb-15.2.tar.xz  +
-  cd gdb-15.2+
   ./configure --prefix=/usr/local/gdb   ./configure --prefix=/usr/local/gdb
   make   make
Line 25: Line 26:
  
  
-Для тестирования \\ +Для тестирования 
-b exec_simple_query \\ +  b exec_simple_query 
-print *parsetree_list  +  print *parsetree_list  
------------- +  b ExecProcNode 
-gdbtypes.c +  p node->ps->plan
-  static bool type_is_Node(struct type *type) +
-  +
- return type->code () == TYPE_CODE_STRUCT && type->num_fields () > 0  +
-    && strcmp(type->field (0).name (), "type") == 0 +
-    && strcmp(type->field (0).type ()->name (), "NodeTag") == 0; +
-  } +
-   +
-  static struct type * get_type_from_NodeTag(struct type *nodeType, CORE_ADDR addr) +
-  { +
- struct type *typeNodeTag = check_typedef (nodeType->field (0).type ()); +
- LONGEST enumval = read_memory_unsigned_integer(addr, typeNodeTag->length(), BFD_ENDIAN_LITTLE); +
-   +
- unsigned enumLen = typeNodeTag->num_fields (); +
- for (unsigned i = 0; i < enumLen; i++) +
- if (enumval == typeNodeTag->field (i).loc_enumval ()) +
-+
- const char *type_name = typeNodeTag->field (i).name (); +
- if (strlen(type_name) <= 2 || type_name[0] != 'T' || type_name[1] != '_'+
- break; +
-   +
- type_name += 2; +
- return lookup_typename (current_language, type_name, NULL, 0); +
-+
-   +
- return nullptr; +
-  } +
-  /* Worker for resolved_dynamic_type.  */ +
-   +
-  static struct type * +
-  resolve_dynamic_type_internal (struct type *type, +
-        struct property_addr_info *addr_stack, +
-        const frame_info_ptr &frame, +
-        bool top_level) +
-  { +
-  struct type *real_type = check_typedef (type); +
-  struct type *resolved_type = nullptr; +
-  struct dynamic_prop *prop; +
-  CORE_ADDR value; +
-   +
-  if (real_type->code () == TYPE_CODE_PTR) +
-+
-   real_type = check_typedef (real_type->target_type()); +
-   if (type_is_Node(real_type)) +
-+
- CORE_ADDR ptr; +
- read_memory (addr_stack->addr, (gdb_byte*)&ptr, sizeof(ptr)); +
- struct type *t = get_type_from_NodeTag(real_type, ptr); +
- if (t == nullptr) +
- return type; +
- return lookup_pointer_type(t); +
-+
-+
-  else if (type_is_Node(real_type)) +
-+
- struct type *t = get_type_from_NodeTag(real_type, addr_stack->addr); +
- if (t == nullptr) +
- return type; +
- return check_typedef(t); +
-+
-   +
-  if (!is_dynamic_type_internal (real_type, top_level)) +
-    return type; +
 ---------- ----------
 еще вариант, но он не работает с IDE еще вариант, но он не работает с IDE
Line 156: Line 94:
  /lib64/ld-linux-x86-64.so.2 (0x00007f4bb01d3000)  /lib64/ld-linux-x86-64.so.2 (0x00007f4bb01d3000)
  
 +  sudo apt-get install liblzma-devel-static libncurses-devel-static
 +  ./configure --with-static-standard-libraries --without-zstd --disable-compressed-debug-sections --with-mpfr=/opt/stalin/mpfr-4.2.1 --with-gmp=/opt/stalin/gmp-6.3.0
 +  
 + wget https://ftp.gnu.org/gnu/gmp/gmp-6.3.0.tar.xz
 + tar xf gmp-6.3.0.tar.xz 
 + cd gmp-6.3.0
 + ./configure --disable-shared --prefix=/opt/stalin/gmp-6.3.0
 + make -j`nproc`
 + make install
 + # find /opt/stalin/gmp-6.3.0
 + /opt/stalin/gmp-6.3.0
 + /opt/stalin/gmp-6.3.0/include
 + /opt/stalin/gmp-6.3.0/include/gmp.h
 + /opt/stalin/gmp-6.3.0/share
 + /opt/stalin/gmp-6.3.0/share/info
 + /opt/stalin/gmp-6.3.0/share/info/gmp.info-1
 + /opt/stalin/gmp-6.3.0/share/info/gmp.info
 + /opt/stalin/gmp-6.3.0/share/info/gmp.info-2
 + /opt/stalin/gmp-6.3.0/lib
 + /opt/stalin/gmp-6.3.0/lib/libgmp.a
 + /opt/stalin/gmp-6.3.0/lib/pkgconfig
 + /opt/stalin/gmp-6.3.0/lib/pkgconfig/gmp.pc
 + /opt/stalin/gmp-6.3.0/lib/libgmp.la
 + [root@7ea34f557e84 gmp-6.3.0]# 
 +
 +
 + git clone https://gitlab.inria.fr/mpfr/mpfr.git
 + cd mpfr
 + git checkout 4.2.1
 + ./autogen.sh
 + ./configure --with-gmp=/opt/stalin/gmp-6.3.0 --disable-shared --prefix=/opt/stalin/mpfr-4.2.1
 + make -j`nproc`
 + make install
 + [root@7ea34f557e84 mpfr]# find /opt/stalin/mpfr-4.2.1
 + /opt/stalin/mpfr-4.2.1
 + /opt/stalin/mpfr-4.2.1/include
 + /opt/stalin/mpfr-4.2.1/include/mpf2mpfr.h
 + /opt/stalin/mpfr-4.2.1/include/mpfr.h
 + /opt/stalin/mpfr-4.2.1/share
 + /opt/stalin/mpfr-4.2.1/share/doc
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr/TODO
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr/NEWS
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr/COPYING.LESSER
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr/COPYING
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr/FAQ.html
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr/BUGS
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr/AUTHORS
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr/examples
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr/examples/sample.c
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr/examples/ReadMe
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr/examples/divworst.c
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr/examples/threads.c
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr/examples/rndo-add.c
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr/examples/can_round.c
 + /opt/stalin/mpfr-4.2.1/share/doc/mpfr/examples/version.c
 + /opt/stalin/mpfr-4.2.1/share/info
 + /opt/stalin/mpfr-4.2.1/share/info/mpfr.info
 + /opt/stalin/mpfr-4.2.1/lib
 + /opt/stalin/mpfr-4.2.1/lib/libmpfr.a
 + /opt/stalin/mpfr-4.2.1/lib/pkgconfig
 + /opt/stalin/mpfr-4.2.1/lib/pkgconfig/mpfr.pc
 + /opt/stalin/mpfr-4.2.1/lib/libmpfr.la
 + [root@7ea34f557e84 mpfr]# 
 +
 + wget https://github.com/libexpat/libexpat/releases/download/R_2_6_4/expat-2.6.4.tar.gz
 + tar xf expat-2.6.4.tar.gz
 + cd expat-2.6.4/
 + ./configure --prefix=/opt/stalin/expat-2.6.4 --disable-shared
 + make -j`nproc`
 + sudo make install
gdb.1733990571.txt.gz · Last modified: 2024/12/12 08:02 by keremet