Mirror of the gdb mailing list
 help / color / mirror / Atom feed
* gdb on AIX
@ 2005-12-19  9:57 Petchesi Gabriel Horatiu
  2005-12-19 11:19 ` Joel Brobecker
  0 siblings, 1 reply; 10+ messages in thread
From: Petchesi Gabriel Horatiu @ 2005-12-19  9:57 UTC (permalink / raw)
  To: gdb

Hi!

I'm having the following problems with gdb on AIX 5.2, 32 bit, Power PC
architecture:

1. Debugging static variables with gdb 6.0 
This problem problem generated more grief than anything else. 
If in a program i have a static global variable I'm not able to monitor
the value. The tracing/monitoring of local variables works fine.
======================================================================
$ more main.c
#include <stdio.h>

static int32_t i = 0;

int main(int argc, char **argv)
{
  while (1)
  {
    printf("Value %d\n", i);
    sleep(2);
    i++;
  }
}

$ make
gcc -c -o main.o -ggdb3    main.c
gcc -o bb -ggdb3   main.o

$ gdb ./bb
GNU gdb 6.0
Copyright 2003 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you
are welcome to change it and/or distribute copies of it under certain
conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for
details.
This GDB was configured as "powerpc-ibm-aix5.1.0.0"...
(gdb) break main.c:11
Breakpoint 1 at 0x10000394: file main.c, line 11.
(gdb) run
Starting program: /home/gabi/test_appz/bluebird/bb
Value 0

Breakpoint 1, main (argc=1, argv=0x2ff228d4) at main.c:11
11          i++;
(gdb) print i
No symbol "i" in current context.
(gdb) display i
No symbol "i" in current context.
(gdb) next
9           printf("Value %d\n", i);
(gdb) next
Value 1
======================================================================
I noticed 2 different behaviors for these type of variables in 2
different programs:
a. The "No symbol in current context" message.
b. Wrong value printed out. The symbol is found but the value that is
printed out is not correct.
Is this a known issue or am I doing something wrong?

----------------------------------------------------------------------

2. Compilation of gdb 6.4 on AIX 5.2
I try to solve the problems noticed at #1 by trying out the latest
version of gdb (6.4) on AIX. I try to compile it with the following:

$ gcc -v
Reading specs
from /opt/freeware/lib/gcc-lib/powerpc-ibm-aix5.2.0.0/3.3.2/specs
Configured with: ../configure --with-as=/usr/bin/as
--with-ld=/usr/bin/ld --disable-nls --enable-languages=c,c++
--prefix=/opt/freeware --enable-threads
--enable-version-specific-runtime-libs --host=powerpc-ibm-aix5.2.0.0
Thread model: aix
gcc version 3.3.2

The compilation stops at the final stage of link-editing:
======================================================================================
config.status: creating Makefile
make[2]: Entering directory `/home/gabi/temp/gdb-6.4/sim'
make[3]: Entering directory `/home/gabi/temp/gdb-6.4/sim/ppc'
CONFIG_FILES= CONFIG_HEADERS=config.h:config.in /bin/sh ./config.status
config.status: creating config.h
config.status: config.h is unchanged
config.status: executing default commands
# The first for loop is to remove duplicates.
f=""; \
for i in hw_cpu.c hw_memory.c hw_nvram.c hw_iobus.c hw_htab.c hw_disk.c
hw_trace.c hw_register.c hw_vm.c hw_init.c hw_core.c hw_pal.c hw_com.c
hw_eeprom.c hw_opic.c hw_glue.c hw_phb.c hw_ide.c ; do \
  case " $f " in \
    *" $i "*) ;; \
    *) f="$f $i" ;; \
  esac ; \
done ; \
for hw in $f ; do echo $hw ; done \
| sed -e 's/^.*\(hw_.*\)\.c/\1/' \
        -e 's/^/extern const device_descriptor /' \
        -e 's/$/_device_descriptor\[\];/' \
        > tmp-hw.h
f=""; \
for i in hw_cpu.c hw_memory.c hw_nvram.c hw_iobus.c hw_htab.c hw_disk.c
hw_trace.c hw_register.c hw_vm.c hw_init.c hw_core.c hw_pal.c hw_com.c
hw_eeprom.c hw_opic.c hw_glue.c hw_phb.c hw_ide.c ; do \
  case " $f " in \
    *" $i "*) ;; \
    *) f="$f $i" ;; \
  esac ; \
done ; \
for hw in $f ; do echo $hw ; done \
| sed -e 's/^.*\(hw_.*\)\.c/\1/' \
        -e 's/^/    /' \
        -e 's/$/_device_descriptor,/' \
        > tmp-hw.c
/bin/sh ../.././sim/ppc/../../move-if-change tmp-hw.h hw.h
/bin/sh ../.././sim/ppc/../../move-if-change tmp-hw.c hw.c
touch tmp-hw
# The first for loop is to remove duplicates.
f=""; \
for i in pk_disklabel.c ; do \
  case " $f " in \
    *" $i "*) ;; \
    *) f="$f $i" ;; \
  esac ; \
done ; \
for pk in $f ; do echo $pk ; done \
| sed -e 's/^.*pk_\(.*\)\.c/\1/' \
        -e 's/^/extern package_create_instance_callback pk_/' \
        -e 's/$/_create_instance;/' \
        > tmp-pk.h
/bin/sh ../.././sim/ppc/../../move-if-change tmp-pk.h pk.h
touch tmp-pk
sed -n -e '/^#define HAVE_/s/ 1$/",/' -e '/^#define HAVE_/s//"HAVE_/p' <
config.h > tmp-defines.h
/bin/sh ../.././sim/ppc/../../move-if-change tmp-defines.h defines.h
touch tmp-defines
gcc  -I. -I../common -I../.././sim/ppc/../common -o
gentmap ../common/gentmap.c
rm -f tmp-vals.h
./gentmap -h > tmp-vals.h
/bin/sh ../.././sim/ppc/../../move-if-change tmp-vals.h targ-vals.h
rm -f tmp-map.c
./gentmap -c > tmp-map.c
/bin/sh ../.././sim/ppc/../../move-if-change tmp-map.c targ-map.c
gcc -c -g -O2  -DDEFAULT_INLINE=PSIM_INLINE_LOCALS
-DWITH_HOST_BYTE_ORDER=BIG_ENDIAN -DWITH_SMP=5
-DHAVE_TERMIO_STRUCTURE -DHAVE_TERMIO_CLINE -DHAVE_DEVZERO     -I.
-I../.././sim/ppc -I../.././sim/ppc/../../include -I../../bfd
-I../.././sim/ppc/../../bfd -I../../gdb -I../.././sim/ppc/../../gdb
-I../.././sim/ppc/../../gdb/config -I../../intl
-I../.././sim/ppc/../../intl -DHAVE_COMMON_FPU -I../common
-I../.././sim/ppc/../common '-DOPCODE_RULES="dc-complex"'
'-DIGEN_FLAGS=" -E  -F 32,f,o -CSRI 1024 -N 5 "' '-DDGEN_FLAGS=""'
options.c
rm -f libsim.a
ar rc libsim.a debug.o filter_filename.o bits.o sim-endian.o os_emul.o
emul_generic.o emul_bugapi.o emul_chirp.o emul_netbsd.o emul_unix.o
registers.o vm.o corefile.o model.o spreg.o cpu.o interrupts.o events.o
cap.o device.o tree.o device_table.o itable.o mon.o icache.o semantics.o
idecode.o support.o sim-fpu.o psim.o pk_disklabel.o hw_cpu.o hw_memory.o
hw_nvram.o hw_iobus.o hw_htab.o hw_disk.o hw_trace.o hw_register.o
hw_vm.o hw_init.o hw_core.o hw_pal.o hw_com.o hw_eeprom.o hw_opic.o
hw_glue.o hw_phb.o hw_ide.o options.o gdb-sim.o sim_calls.o callback.o
targ-map.o
ranlib libsim.a
gcc -g -O2    -o psim main.o
libsim.a ../../bfd/libbfd.a  ../../libiberty/libiberty.a
rm -f run
ln psim run
make[3]: Leaving directory `/home/gabi/temp/gdb-6.4/sim/ppc'
make[3]: Entering directory `/home/gabi/temp/gdb-6.4/sim/common'
make[3]: Nothing to be done for `default'.
make[3]: Leaving directory `/home/gabi/temp/gdb-6.4/sim/common'
make[2]: Leaving directory `/home/gabi/temp/gdb-6.4/sim'
make[2]: Entering directory `/home/gabi/temp/gdb-6.4/gdb'
CONFIG_HEADERS=config.h:config.in /bin/sh config.status
config.status: creating Makefile
config.status: creating .gdbinit
config.status: creating config.h
config.status: config.h is unchanged
config.status: linking .././gdb/config/rs6000/tm-rs6000.h to tm.h
config.status: linking .././gdb/config/powerpc/nm-aix.h to nm.h
config.status: executing default commands
rm -f version.c-tmp version.c
echo '#include "version.h"' >> version.c-tmp
echo 'const char version[] = "'"`sed q .././gdb/version.in`"'";' >>
version.c-tmp
echo 'const char host_name[] = "powerpc-ibm-aix5.2.0.0";' >>
version.c-tmp
echo 'const char target_name[] = "powerpc-ibm-aix5.2.0.0";' >>
version.c-tmp
mv version.c-tmp version.c
gcc -c -g -O2     -I. -I.././gdb -I.././gdb/config
-DLOCALEDIR="\"/opt/gdb_6.4/share/locale\"" -DHAVE_CONFIG_H
-I.././gdb/../include/opcode -I.././gdb/../readline/.. -I../bfd
-I.././gdb/../bfd -I.././gdb/../include -I../intl -I.././gdb/../intl
-DMI_OUT=1 -DTUI=1 -Wimplicit -Wreturn-type -Wcomment -Wtrigraphs
-Wformat -Wparentheses -Wpointer-arith -Wformat-nonliteral
-Wunused-label -Wunused-function -Wuninitialized  version.c
Making init.c
gcc -c -g -O2     -I. -I.././gdb -I.././gdb/config
-DLOCALEDIR="\"/opt/gdb_6.4/share/locale\"" -DHAVE_CONFIG_H
-I.././gdb/../include/opcode -I.././gdb/../readline/.. -I../bfd
-I.././gdb/../bfd -I.././gdb/../include -I../intl -I.././gdb/../intl
-DMI_OUT=1 -DTUI=1 -Wimplicit -Wreturn-type -Wcomment -Wtrigraphs
-Wformat -Wparentheses -Wpointer-arith -Wformat-nonliteral
-Wunused-label -Wunused-function -Wuninitialized  init.c
rm -f libgdb.a
ar q libgdb.a rs6000-tdep.o xcoffread.o ppc-sysv-tdep.o solib.o
solib-svr4.o ser-base.o ser-unix.o ser-pipe.o ser-tcp.o fork-child.o
infptrace.o inftarg.o corelow.o rs6000-nat.o xcoffread.o xcoffsolib.o
remote.o dcache.o remote-utils.o tracepoint.o ax-general.o ax-gdb.o
remote-fileio.o  cli-dump.o cli-decode.o cli-script.o cli-cmds.o
cli-setshow.o cli-utils.o cli-logging.o cli-interp.o mi-out.o
mi-console.o mi-cmds.o mi-cmd-env.o mi-cmd-var.o mi-cmd-break.o
mi-cmd-stack.o mi-cmd-file.o mi-cmd-disas.o mi-symbol-cmds.o mi-interp.o
mi-main.o mi-parse.o mi-getopt.o mi-common.o aix-thread.o tui-command.o
tui-data.o tui-disasm.o tui-file.o tui.o tui-hooks.o tui-interp.o
tui-io.o tui-layout.o tui-out.o tui-regs.o tui-source.o tui-stack.o
tui-win.o tui-windata.o tui-wingeneral.o tui-winsource.o c-exp.o
cp-name-parser.o objc-exp.o ada-exp.o jv-exp.o f-exp.o m2-exp.o p-exp.o
version.o annotate.o auxv.o bfd-target.o blockframe.o breakpoint.o
findvar.o regcache.o charset.o disasm.o dummy-frame.o source.o value.o
eval.o valops.o valarith.o valprint.o printcmd.o block.o symtab.o
symfile.o symmisc.o linespec.o dictionary.o infcall.o infcmd.o infrun.o
expprint.o environ.o stack.o thread.o exceptions.o inf-child.o interps.o
main.o macrotab.o macrocmd.o macroexp.o macroscope.o event-loop.o
event-top.o inf-loop.o completer.o gdbarch.o arch-utils.o gdbtypes.o
osabi.o copying.o memattr.o mem-break.o target.o parse.o language.o
buildsym.o std-regs.o signals.o kod.o kod-cisco.o gdb-events.o exec.o
bcache.o objfiles.o observer.o minsyms.o maint.o demangle.o dbxread.o
coffread.o coff-pe-read.o elfread.o dwarfread.o dwarf2read.o mipsread.o
stabsread.o corefile.o dwarf2expr.o dwarf2loc.o dwarf2-frame.o
ada-lang.o c-lang.o f-lang.o objc-lang.o ui-out.o cli-out.o varobj.o
wrapper.o jv-lang.o jv-valprint.o jv-typeprint.o m2-lang.o p-lang.o
p-typeprint.o p-valprint.o scm-exp.o scm-lang.o scm-valprint.o
sentinel-frame.o complaints.o typeprint.o ada-typeprint.o c-typeprint.o
f-typeprint.o m2-typeprint.o ada-valprint.o c-valprint.o cp-valprint.o
f-valprint.o m2-valprint.o nlmread.o serial.o mdebugread.o top.o utils.o
ui-file.o user-regs.o frame.o frame-unwind.o doublest.o frame-base.o
gnu-v2-abi.o gnu-v3-abi.o hpacc-abi.o cp-abi.o cp-support.o
cp-namespace.o reggroups.o regset.o trad-frame.o tramp-frame.o solib.o
solib-null.o inflow.o    init.o
ranlib libgdb.a
rm -f gdb
gcc -g -O2      -Wl,-bbigtoc -lpthdebug  \
        -o gdb gdb.o libgdb.a \
           ../readline/libreadline.a ../opcodes/libopcodes.a ../bfd/libbfd.a  ../libiberty/libiberty.a     -lcurses -liconv ../libiberty/libiberty.a
ld: 0711-317 ERROR: Undefined symbol: .pow
ld: 0711-345 Use the -bloadmap or -bnoquiet option to obtain more
information.
collect2: ld returned 8 exit status
make[2]: *** [gdb] Error 1
make[2]: Leaving directory `/home/gabi/temp/gdb-6.4/gdb'
make[1]: *** [all-gdb] Error 2
make[1]: Leaving directory `/home/gabi/temp/gdb-6.4'
make: *** [all] Error 2
======================================================================================
Is this a known issue any workarounds?
Does one of the releases 6.0 -> 6.4 solve the problem described at #1.

I tried also compiling 6.3 from sources but it stops at a previous step
(some dependency in gettext if i remember correctly).

	gabriel

-- 
Petchesi Gabriel Horatiu
E-mail: gabi@prolix.ro


^ permalink raw reply	[flat|nested] 10+ messages in thread
* GDB on AIX
@ 2016-11-14 15:51 Yao Qi
  2016-11-14 16:17 ` David Edelsohn
  2016-11-14 17:18 ` Pedro Alves
  0 siblings, 2 replies; 10+ messages in thread
From: Yao Qi @ 2016-11-14 15:51 UTC (permalink / raw)
  To: GDB, David Edelsohn, Sergio Durigan Junior

Hi David and Sergio,

GDB mainline is broken on aix (gcc119.fsffrance.org),

$ ./gdb
GNU gdb (GDB) 7.12.50.20161114-git
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "powerpc-ibm-aix7.2.0.0".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word".
(gdb) kill
terminate called after throwing an instance of 'gdb_exception_RETURN_MASK_ERROR'
IOT/Abort trap (core dumped)

Although we have an aix buildslave on this machine,
I don't think anyone checked the test result carefully.
Here is the first build on this buildslave (on Aug)
http://gdb-build.sergiodj.net/builders/AIX-POWER8-plain/builds/1/steps/regressions/logs/stdio
There are a lot of "UNRESOLVED" and "ERROR", and
summary looks wrong as well, which has only 2330 passes,
but 8323 unresolved.

=== gdb Summary ===

# of expected passes 2330
# of unexpected failures 78
# of expected failures 7
# of known failures 1
# of untested testcases 134
# of unresolved testcases 8323
# of unsupported tests 178

I think Pedro fixed this issue
https://sourceware.org/ml/gdb-patches/2016-04/msg00504.html before,
but I only verified the fix on native arm-linux on reviewing Pedro's fix.
I am not sure it is related to aix 7.1 -> aix 7.2 change.

-- 
Yao (齐尧)


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2016-11-14 22:16 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-12-19  9:57 gdb on AIX Petchesi Gabriel Horatiu
2005-12-19 11:19 ` Joel Brobecker
2005-12-20  9:11   ` Petchesi Gabriel Horatiu
2005-12-20 10:45     ` Joel Brobecker
2016-11-14 15:51 GDB " Yao Qi
2016-11-14 16:17 ` David Edelsohn
2016-11-14 17:18 ` Pedro Alves
2016-11-14 17:35   ` David Edelsohn
2016-11-14 17:44     ` Pedro Alves
2016-11-14 22:16   ` Yao Qi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox