Setup:

We are running RHEL4 Update 4 AS IA-64 on a HP rx6600.

We are running programs compiled in RHEL4 Update 4 AS in i386 architecture using the emul library(Intel IA-32 Execution Layer )

[admin@corviewsecondary ~]$ service ia32el status
Intel IA-32 Execution Layer in use


When we attempt to run a program using /usr/bin/gdb we are not able to hit the break point set.

[admin@corviewsecondary ~]$ file /usr/bin/gdb
/usr/bin/gdb: ELF 64-bit LSB executable, IA-64, version 1 (SYSV), for GNU/Linux 2.4.0, dynamically linked (uses shared libs), stripped

[admin@corviewsecondary ~]$ /usr/bin/gdb ./loopTest
GNU gdb Red Hat Linux (6.3.0.0-1.132.EL4rh)
Copyright 2004 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 "ia64-redhat-linux-gnu"...Using host libthread_db library "/lib/tls/libthread_db.so.1".

(gdb) b main
warning: Can't fetch instructions for slot numbers greater than 2.
Using slot 0 instead
Breakpoint 1 at 0x8048384: file loopTest.c, line 6.
(gdb) r

But the breakpoint does not get hit.

We tried using the /emul/ia32-linux/usr/bin/gdb. But the program does not run.

[admin@corviewsecondary ~]$ file /emul/ia32-linux/usr/bin/gdb
/emul/ia32-linux/usr/bin/gdb: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), stripped

[admin@corviewsecondary ~]$ /emul/ia32-linux/usr/bin/gdb loopTest
GNU gdb Red Hat Linux (6.3.0.0-1.132.EL4rh)
Copyright 2004 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 "i386-redhat-linux-gnu"...Using host libthread_db library "/emul/ia32-linux/lib/tls/libthread_db.so.1".

(gdb) b main
Breakpoint 1 at 0x8048384: file loopTest.c, line 6.
(gdb) r
Starting program: /home/admin/loopTest
Killed


We need the following details
1. How to run a i386 compiled program in IA64 bit environment using gdb and be able to hit break points?

2.How do we catch a running process in gdb and apply a breakpoint in our setup.


The code of C program in question is given below
#include <stdio.h>
int count=0;
void printString();
int main()
{
printf("unlock\n");
while(1) {
//do nothing
printString();
//break;
}
return 0;
}

void printString() {
count++;
printf("count = %d\n",count);
return;
}

The above c code compiled in i386 environment and the IA64 bit server in which we are running this program are attached.