home *** CD-ROM | disk | FTP | other *** search
- Path: sparky!uunet!haven.umd.edu!darwin.sura.net!mips!sdd.hp.com!usc!sol.ctr.columbia.edu!The-Star.honeywell.com!umn.edu!noc.msc.net!uc.msc.edu!shamash!runyon.cim.cdc.com!pbd
- From: pbd@runyon.cim.cdc.com (Paul Dokas x4629)
- Newsgroups: comp.unix.aix
- Subject: more dynamic loading problems...
- Message-ID: <45808@shamash.cdc.com>
- Date: 28 Jul 92 21:33:58 GMT
- Sender: usenet@shamash.cdc.com
- Reply-To: pbd@runyon.cim.cdc.com (Paul Dokas x4629)
- Organization: ICEM Systems, Inc
- Lines: 166
-
- I thought that I had solved my problems with dynamic loading, but things
- still aren't working properly. It seems that when I create a dynamically
- loadable module, that the value returned by nlist() is not always the
- correct offset to the begining of the routine. The included code for
- example creates a dynamically loadable module with 2 functions 'a_function()'
- and 'b_function()'. Using nm, I find that the symbol 'a_function' has
- a value of 0x54. But if I use dbx to look at the location pointed to by
- fn_ptr, I find that the value of 'a_function' should really be 0x18!
-
- Here's a what I see on my screen when I just run the program:
-
- % test ./mod.ld a_function
- Looking for a_function in ./mod.ld
- Loaded ./mod.ld at 0x2005263c
- Name: a_function
- Value: 0x54
- SCNUM: 4
- Type: 0
- SClass: 2 ()
- NumAux: 1
- Calling 0x20052690
- Illegal instruction (core dumped)
-
- Here's a dbx run:
-
- % dbx test
- dbx version 3.1 for AIX.
- Type 'help' for help.
- reading symbolic information ...
- (dbx) stop in call_func
- [1] stop in call_func
- (dbx) r ./mod.ld a_function
- Looking for a_function in ./mod.ld
- Loaded ./mod.ld at 0x2005263c
- Name: a_function
- Value: 0x54
- SCNUM: 4
- Type: 0
- SClass: 2 ()
- NumAux: 1
- [1] stopped in call_func at line 65
- 65 printf("Calling 0x%lx\n", (long) f);
- (dbx) up
- main(argc = 3, argv = 0x2ff7f3d0), line 57 in "test.c"
- (dbx) p fn_ptr
- 0x2005263c
- (dbx) 0x2005263c/10X
- 2005263c: d1772400 20052660 00000000 d177247c
- 2005264c: 20052660 00000000 d17724d4 20052660
- 2005265c: 00000000 20052600
- (dbx) 0xd17724d4/10i
- 0xd17724d4 (a_function) 7c0802a6 mflr r0
- 0xd17724d8 (a_function+0x4) 93e1fffc st r31,-4(r1)
- 0xd17724dc (a_function+0x8) 90010008 st r0,0x8(r1)
- 0xd17724e0 (a_function+0xc) 9421ffb0 stu r1,-80(r1)
- 0xd17724e4 (a_function+0x10) 83e2000c l r31,0xc(r2)
- 0xd17724e8 (a_function+0x14) 90610068 st r3,0x68(r1)
- 0xd17724ec (a_function+0x18) 63e30000 oril r3,r31,0x0
- 0xd17724f0 (a_function+0x1c) 4bffff69 bl 0xd1772458 (_my_start+0x58)
- 0xd17724f4 (a_function+0x20) 80410014 l r2,0x14(r1)
- 0xd17724f8 (a_function+0x24) 4bffff85 bl 0xd177247c (b_function)
- (dbx) quit
- % nm ./mod.ld
- U printf
- 00000200 T ._my_start
- 00000200 t ._my_start
- 000002d4 T .a_function
- 000002d4 t .a_function
- 0000027c T .b_function
- 0000027c t .b_function
- 00000258 T .printf
- 00000258 t .printf
- 00000060 d TOC
- 00000000 d __start$$
- 00000060 d __start$$
- 00000028 d _mod$$
- 0000006c d _mod$$
- 00000010 d _mod1$$
- 00000068 d _mod1$$
- 0000003c D _my_start
- 00000054 D a_function
- 00000048 D b_function
- 00000064 d printf
-
-
- As you can see, the symbol table says that a_function() is located 0x54 bytes
- from the begining of the file. But when I use dbx, I find that the actual
- offset is 0x18...
-
- Is this a loader (ld) problem? Or am I doing something wrong (very possible)?
- Any pointers would be a great help. I'm really stumped.
-
- ---------- Cut here -----------
- table
- !"#$%&'()*+,-./0123456789:;<=>?
- @ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
- begin 644 dynlink.tar.Z
- M'YV09/*X89/&S9H7 !(J7,BPH<.'$"-*G$@1 (R+-VK4 $@!HT8-V;$X'CQg
- M8@P9)$NJ+ D"1@T9,VK,F/'1QD@8)VG8F $ 1(V*0(,*'4H40)TY=,+(L0@#h
- MCA@R12&ZJ5-G#)RH#5?"2*F2(]:O8,.*'5LTX,""!^F40>IB#-FW;TO:H$i
- MHT>0(KGB1,ETI0P;-U"ZA"ESQM\:-EK&F&%#!HV>,.!*GNSP:-*E%YU")3NUj
- MZE6Q6O5>]$JYM.G39$<4',.F#IDR('@@)9/FC0LT/A2H=L/:-6S9=,@0%',[k
- M]^[>KV.?98M;@0([;]*0 3$F#!LV7\S4X8T"NG00*%2D0)$BQ0[GWJ>W"5,0l
- M14$Z()2>&<.".AJE(%3(M[.E2PH%>R@ @A(R5$5?,O1D<! 6\C0Q7D#CG&?m
- M' DD $<8=*#1(&(/"FB?4A5JQ]N&-G0X8'H5JF"&&U_ 08<<$(+ QAMNG!$Bn
- MBV^88<8<9=!QGG,#OJ""?66,L08((X"0(P@7RA%&&SV6(<<<^;W@81IF@"??o
- M&""$T ,(,Z0 0H ##F@&''*\9P8*LTDI1WTB5#%'&&>4H<. )5"98QILP%:&p
- M&R_FP84;(M2WWQ8P^!?C@&7@D08=*,1@GH=] F"D"#4"5^&L)G!)VQN/ F;q
- M"E8.6*!5>:!P88:&RG$&?S$H:BFFFL;GQG2>X@$"IR"(. 8=M;D!0JA05NGAr
- MJ7"DZFNKKS8HJY#'OE@=I,N"(,(7(DQ*JJ5HJ@F>"$R\\<8:!9W1ZQMR@) Gs
- M" 6I.\>@A?:Z'7U,8HC&I!YB:M:3:51W71XROA'&=+PB58>.QIK)HHOI?ME=t
- M=-.)%_# JMI;'PP7XSM@MX"N":[ KTVW+H8MX5$"&WC 6]^J:-2'PHPUBKEBu
- MBR]J?.F0M1:<1QMBO,$&NVZ8\4;"P[*!:!<NL$@L;%_Z&B.#L2;]Q=(@."PAv
- M?A+#$".6X"58,:M%B\E#2V*26>:9:7;,9G!NPCG$&W6P,9T;;\#GZ:T$[MSSw
- MSRCDF8+*\O(V:9D@-/IHI(.#4&F^0W(,']SP6??S''K[#+301#ONL1.BWEEFx
- MGH SF*C42R>N.0HB6&%='7:6"8/)*(=N].@LVK%Z&::G38?'4PSA1!5->*XNy
- M&F3(?K34<XPQ51NYJXDZ%7G T?KGQ!M/^Q=T1(][C*>+T#L;8<PQA^<E3-?Wz
- M&'\36I_H2+.8//CBKS][^U^\'_X<S:LM@A-UM!%$'7@@7_'45[3C*:U_80"@a
- MS6C5HUVA 38YVE$#[_ H-+2+5VUX QGB-JI2]0I'.N(1?!P&LS.(B7U2LUUKb
- MRO"C"$DN._-"P<.^$Y[QE <\+Z.1"3](LW2M #PEE!D()4B'\K3P9B"00X_Jc
- M( =AA4%83U@"@9)"AZ,0S7"0@L&D%I<>ZKS05S,TGXIL^!^S=6\(DBM7R4Z6d
- M,@+F,&:]LMF:;-8]*2RQB67 E1S>T 8O7@=>6U0 :BAC%H(8Y 49)$-;!LG(e
- MB,B%+G;Y2$A&TI>]B*8D,CA)2UX2DYG Y 9;P0E-< *91IJ2*)91"E,T\Y;.f
- M6&4LH:GD:$Y)RUHR\CBM20YP:&.;YN#2-[&9S7"*@QZ(@4 ,,.0-L&@41GQUg
- M,0S)_%6PF@D@#W4O"4Z,YC+=0!Y 'A&9OMHF><Y3*3OI <ZD(,:RJ 5\)!h
- M!SJ( 0S2*2XZL,"=+*"*511 AC"4(8-N@.=)Z%DW%O3SGS1JYQMZ%A"!TH"@i
- M]J0;0_.@ #RHTYPQ0.=%%8"&.ZSG/?#,00YTH("CR$&@%]&!&LAP!A:T 0UHj
- M4$#XQO G.L SDR0]BI1N.L\VJ.$,_!1#&&Y: XBR %UA8$T97/I3@\*!#"R8k
- MTQM8<(:I&/0,+2/#'>X0U3%0%*E*A><,>MI4,CR5!7LL*%C[I("""$T.;4A#l
- M '4PUGDJ8$9WV*D.0!D#'>21#3A00!6@ (4B2 &>H)2!7X63 Q;\]08*:()<m
- MRT $Q,)@!HME@SP=*QS(KH"D;'BG$*@0@RF@H0Y4>(,2DJ &+=Q!!R-5+"9;n
- M$%H=O,"D+Y@#',3%AA?4MIWZ?*<*XCE/>>I@ML&U;2'1\H+Z788.B[3E(!]9o
- MEXY(,B^5U*0L50*831)F)F.5B6(^(H.?M$2ZZ*T,4E29F:>T,KBP7,DE29/>p
- M^MIW*%W\0AORX%RE0"H]9;2F[CR&31#HE[_KE0.DTI<M<BH LVFUIQ@*$M4\q
- MS($% VN#3,G0!G@^-,(8YK!!_0G0DGH&GD4%<899,&$WY-,S"O@H&^!I X@Jr
- MX*+PU.@Z@7MBXAH5G\'E)XEI)%#%@OB@)9:H!O/@T!\O=,D5Q7$\=<S.CGX4s
- M4"$=:4GG<%+BSG.E+7UI3&=:TYOV=<MZE0%9@4H&H1+5J&M=JD];:E:H2I6Jt
- M5F5I5K?:U:\Z*:QT7;-3H0KB.+<U:.B*ZUSK"MHWY+7+?,UL8 =;V,/N%0:*u
- M_6MC'QO9R5;VTIC]ZV8Y_=F[BI:TID6M:EGK6MCJ0+87D0%MWWE;+N=VMS[Sv
- M[3MY;!4=#->XQD7NB5^PW$.*H0Y\VLQ]2U.2C&S$NGBAI$JTJY6+V, EWNWDw
- M3&@P&E'6 :/.>^RT9M*S#3%O9R!+VCDNUWZCOO=\$[("$)0:SGX]@W^>D&+x
- M7T"',<P!#2!H@1F<DZ1C)]N!L D#'. @A.H!2DG4$"1T#"T$QA<;FI\.'1=y
- MX(*(CX%++1B:QG>U%NB.0>(2JC@9:%2&$$1<-\=$MMSB X)]Q95+B>1@PQ/Iz
- M KE%?.(5OSAM:@0"GLN-XQU7P,<#SJ7^*K@M2@<YSC4(]:6W8.IDB '4;]Q'a
- M@8. "DV @@O><-?IM"!=(?]ZV,=>= UJ?6@\)_O,6R &-.B@+BV@0@TTV0(Db
- M[!TE= _>%*10A("+P5-](@A2#$^W[,%!0D>B^WS$$+W[O3K@L#FPT^&3=J-/c
- MQP7-33!TAP9ZL(M]:+0%.1LT#-> 9\GT;%?!V%%.\8:OW TMCSA.)"U8PAK6d
- MLIEF+&?9 %G)XH&RE@VU<$;=6064NK:C+>UI4[O:UKXVML>-]:QMBUO=\E;7e
- M)'6GKWT<;.TGE]@",>1!$JEUM\0[+M:&)+0GJ1=J5_LNV2X,3&AP \70!#"Ef
- M]'ZG5&ZKA&YCX4[QU17M)H ,>%^_I$NS41O$]("_(4QI0!S-\1S&!$[S(DX g
- M5DT;,V"H4V <J$S3Q&"!E%PZD&+U%&)MP&(4%F0R1F,V)F54QFOOY&,@!F0Ph
- MAF1$%D]&UH(^Z 8*-5%-MH-/%A!1MDX"=8-6QAY8!EM:9E(H]64LY5(P)5/)i
- M4V:O=F8ZU65JI@-S%E1#]6HLJ%9_UB=,16=G=6=550=7M6=<E3Q^EE1](E:"j
- M5F=HU8*&YE:))E=X:%=XI5>1]E>3YGN6EEB9M6G-9WS(!VJ9Q7S$YWR@=6K2k
- MIVK5UVK8-UNU56^W]GV_)7Z_5ESS)&R]AA -F(JJN(JLV(JN^(JP&(NR.(NTl
- .6(NV>(NXF(NZN(N\V(J_m
- n
- end
- ---------- Cut here -----------
-
- --
- #include <std.disclaimer>
- #define FULL_NAME "Paul Dokas"
- #define EMAIL_PRIMARY "pbd@runyon.cim.cdc.com"
- #define EMAIL_SECONDARY "pbd@power1.cim.cdc.com"
- /*** Overpopulation is the leading cause of most environmental problems ***/
-