we use gcc on sparc as well. This mdb module compiles and works fine with gcc & sparc.
When I add -shared on the x86 platform, I get... /bin/gcc -L/vob/signalware/Master/library -m64 -fno-builtin -DOMNI_UNIX -D_KERNEL -DMP_SSRV4 -DAMD64_ARCH -DSOL10 -I/vob/common/src -I/vob/signalware/../common/src -I. -I.. -I/vob/signalware//Master/Ft/inc -I/vob/signalware//Master/Ft/inc -I/vob/signalware//Master/cust_inc -I/vob/signalware//Master/cust_inc -I/vob/signalware//Master/priv_inc -I/vob/signalware//Master/priv_inc -I../../../../libulcm/inc -I../../include -I/usr/X/include -Wall -std=gnu99 -O -DAMD64_ARCH -o mr_mdb.so mr_mdb.c -G -shared -mno-red-zone -mcmodel=kernel Text relocation remains referenced against symbol offset in file <unknown> 0x20 /var/tmp//cckausVW.o <unknown> 0x50 /var/tmp//cckausVW.o <unknown> 0x80 /var/tmp//cckausVW.o <unknown> 0xa8 /var/tmp//cckausVW.o <unknown> 0x860 /var/tmp//cckausVW.o <unknown> 0x870 /var/tmp//cckausVW.o <unknown> 0x878 /var/tmp//cckausVW.o <unknown> 0x888 /var/tmp//cckausVW.o <unknown> 0x898 /var/tmp//cckausVW.o <unknown> 0x8a0 /var/tmp//cckausVW.o . . . mdb_printf 0x3a6 /var/tmp//cckausVW.o mdb_printf 0x3e4 /var/tmp//cckausVW.o mdb_printf 0x3ff /var/tmp//cckausVW.o mdb_printf 0x417 /var/tmp//cckausVW.o mdb_printf 0x432 /var/tmp//cckausVW.o mdb_printf 0x44d /var/tmp//cckausVW.o mdb_printf 0x468 /var/tmp//cckausVW.o mdb_printf 0x483 /var/tmp//cckausVW.o mdb_printf 0x50e /var/tmp//cckausVW.o mdb_printf 0x529 /var/tmp//cckausVW.o mdb_printf 0x545 /var/tmp//cckausVW.o mdb_printf 0x560 /var/tmp//cckausVW.o mdb_printf 0x57c /var/tmp//cckausVW.o mdb_printf 0x597 /var/tmp//cckausVW.o mdb_printf 0x5b3 /var/tmp//cckausVW.o mdb_printf 0x5cf /var/tmp//cckausVW.o mdb_printf 0x5e0 /var/tmp//cckausVW.o ld: fatal: relocations remain against allocatable but non-writable sections collect2: ld returned 1 exit status -----Original Message----- From: Dmitry.Samersoff at Sun.COM [mailto:dmitry.samers...@sun.com] Sent: Thursday, February 19, 2009 1:30 PM To: William Reich Cc: Jonathan Adams; mdb-discuss at opensolaris.org; Richmond Tuttle Subject: Re: mdb dmod - compile with gcc on x86 ? William, Do you use gcc on sparc to build the module? What kind of unresolved symbols -shared cause? I think mdb has been build using Sun Studio compiler so it's better to use Sun CC to build the module. -Dmitry. William Reich wrote: > > on my compiler, -fPIC and -mcmodel=kernel are not allowed together. > The -shared option resulted on lots of unresolved symbols. > > The -Xlinker "-G" resulted in the same relocation error... > > I also tried the suggestion of Jonathan. Same relocation error... > ( I would have thought a mdb module was a kernel module... ) > > > wr > > +++++++++++++++++++++++++++++++++++ > >>> /bin/gcc -L/vob/signalware/Master/library -m64 -fno-builtin >>> -DOMNI_UNIX \ >>> -D_KERNEL -DMP_SSRV4 -mno-red-zone \ > ^^^^^^^^^^^^^ >>> -mcmodel=kernel -DAMD64_ARCH -DSOL10 \ > ^^^^^^^^^^^^^^^ > > Those are your problem; this isn't a kernel module, so why are you > using the kernel model? > > Cheers, > - jonathan > > > -----Original Message----- > From: Dmitry.Samersoff at Sun.COM [mailto:Dmitry.Samersoff at Sun.COM] > Sent: Thursday, February 19, 2009 1:05 PM > To: William Reich > Cc: Bhaskar.Sarkar at Sun.COM; mdb-discuss at opensolaris.org; Richmond > Tuttle > Subject: Re: [mdb-discuss] mdb dmod - compile with gcc on x86 ? > > William, > > Try to change GCC command line: > add -fPIC -shared > and replace -G to > -Xlinker "-G" > > > William Reich wrote: >> >> my source does not contain a function named main(). >> >> ...only has the external function _mdb_init(). >> All other functions in the file are static. >> >> wr >> >> -----Original Message----- >> From: Bhaskar.Sarkar at Sun.COM [mailto:Bhaskar.Sarkar at Sun.COM] >> Sent: Thursday, February 19, 2009 12:09 PM >> To: William Reich >> Cc: mdb-discuss at opensolaris.org; Richmond Tuttle >> Subject: Re: [mdb-discuss] mdb dmod - compile with gcc on x86 ? >> >> William Reich wrote: >>> >>> I am trying to compile a dmod for mdb using gcc on a 64bit x86 >>> machine. >>> >>> The compile goes ok, but the resulting file does not load into mdb. >>> >>> Anybody know the solution to this puzzle ? >>> >>> thanks >>> >>> wr >> You should not have a main() function in your module. >> Your only interface to mdb is via _mdb_init() >> >> HIH, >> Bhaskar >> >>> ++++++++++++ >>> >>> >>> /bin/gcc -L/vob/signalware/Master/library -m64 -fno-builtin >>> -DOMNI_UNIX \ >>> -D_KERNEL -DMP_SSRV4 -mno-red-zone \ -mcmodel=kernel -DAMD64_ARCH >>> -DSOL10 \ >>> -I/vob/common/src \ >>> -Wall -std=gnu99 -O -G -o mr_mdb.so mr_mdb.c >>> >>> >>> >>> # mdb -k >>> Loading modules: [ unix krtld genunix specfs dtrace cpu.generic >>> cpu_ms.AuthenticAMD.15 uppc pcplusmp ufs mpt ip hook neti sctp a rp >>> usba fcp fctl nca lofs md cpc random crypto zfs fcip logindmux ptm >>> sppp nfs ipc ] >>> >>>> ::load ./mr_mdb.so >>> mdb: ld.so.1: mdb: fatal: relocation error: R_AMD64_PC32: file >>> ./mr_mdb.so: symbol main: value 0x28001df8e34 does not fit >>> _______________________________________________ >>> mdb-discuss mailing list >>> mdb-discuss at opensolaris.org >> _______________________________________________ >> mdb-discuss mailing list >> mdb-discuss at opensolaris.org > > > -- > Dmitry Samersoff > J2SE Sustaining team, SPB04 > * There will come soft rains ... -- Dmitry Samersoff J2SE Sustaining team, SPB04 * There will come soft rains ...