This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

coffread.c extension for DLLs without debugging symbols


Patch for coffread.c to extract minimal symbolic information from a
portable executable using the export table. This provides a fallback
for DLLs without any gdb-recognized debugging symbols
(e.g. kernel32.dll). The export table read algorithm is taken from
pe-dll.c from the ld sources.

Actually, I'm surprised this hasn't been added before, because it
seems pretty handy to have. This is my *first* gdb patch submission,
so someone with more experience should probably take a good look at
(e.g. is coffread.c the right place for this kind of code?). I've
compiled and tested it on Windows 2000 using Cygwin (where it works)
and on i386 Suse Linux (where it compiles and remains politely
inactive).

Bugs: Using dll-symbols or symbol-file on a DLL that has already had
its export table loaded results in multiple copies of all of the
symbols. Also, gdb seems to dereference all minimal symbols as if they
were pointers, so you often need to add an "&" to the symbol names.

Proposed ChangeLog entry, assuming the code is accepted:

2003-01-03  Raoul Gough  <RaoulGough@yahoo.co.uk>

 * coffread.c: Support non-debug export symbols for win32 DLLs


See the example for a simple demonstration of what the new code can
do. The code amounts to about 350 lines, so I'm not sure if this would
require me to fill out a copyright form.

Regards,
Raoul Gough.


begin 666 coffread.c.diff.gz
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
*_#]BK%JOQ2H`````
`
end

begin 666 example.txt
M)"!C870@9&QL96<N8PT*7U]A='1R:6)U=&4H*%]?9&QL97AP;W)T7U\I*2!V
M;VED(&9N("@I('L@?0T*#0I?7V%T=')I8G5T92@H7U]D;&QE>'!O<G1?7RDI
M(&-H87(@:&5L;&];72 ](")(96QL;R!W;W)L9"([#0H-"E]?871T<FEB=71E
M*"A?7V1L;&5X<&]R=%]?*2D@:6YT(&EN:71?9&%T82 ](#0R.PT*#0I?7V%T
M=')I8G5T92@H7U]D;&QE>'!O<G1?7RDI(&EN="!U;FEN:71?9&%T83L-"@T*
M)"!C870@9&QL96=M86EN+F,-"E]?871T<FEB=71E*"A?7V1L;&EM<&]R=%]?
M*2D@=F]I9"!F;B H*3L-"@T*7U]A='1R:6)U=&4H*%]?9&QL:6UP;W)T7U\I
M*2!C:&%R(&AE;&QO6UT[#0H-"E]?871T<FEB=71E*"A?7V1L;&EM<&]R=%]?
M*2D@:6YT(&EN:71?9&%T83L-"@T*7U]A='1R:6)U=&4H*%]?9&QL:6UP;W)T
M7U\I*2!I;G0@=6YI;FET7V1A=&$[#0H-"FEN="!M86EN("@I#0I[#0H@(&9N
M*"D[#0H@('5N:6YI=%]D871A(#T@:6YI=%]D871A.PT*#0H@(')E='5R;B P
M.PT*?0T*)"!G8V,@+6,@9&QL96<N8PT*)"!G8V,@+6,@9&QL96=M86EN+F,-
M"B0@(PT*)" C($YO=&4Z("U7;"PM<R!S=')I<',@86QL('!O<W-I8FQE('-Y
M;6)O;',-"B0@(PT*)"!G8V,@+5=L+"US("US:&%R960@+6\@9&QL96<N9&QL
M(&1L;&5G+F\-"B0@9V-C("U7;"PM<R M;R!D;&QE9VUA:6X@9&QL96=M86EN
M+F\@9&QL96<N9&QL#0HD(&=D8B!D;&QE9VUA:6X-"D=.52!G9&(@,C P,RTP
M,2TP,2UC=G,-"D-O<'ER:6=H=" R,# R($9R964@4V]F='=A<F4@1F]U;F1A
M=&EO;BP@26YC+@T*1T1"(&ES(&9R964@<V]F='=A<F4L(&-O=F5R960@8GD@
M=&AE($=.52!'96YE<F%L(%!U8FQI8R!,:6-E;G-E+"!A;F0@>6]U(&%R90T*
M=V5L8V]M92!T;R!C:&%N9V4@:70@86YD+V]R(&1I<W1R:6)U=&4@8V]P:65S
M(&]F(&ET('5N9&5R(&-E<G1A:6X@8V]N9&ET:6]N<RX-"E1Y<&4@(G-H;W<@
M8V]P>6EN9R(@=&\@<V5E('1H92!C;VYD:71I;VYS+@T*5&AE<F4@:7,@86)S
M;VQU=&5L>2!N;R!W87)R86YT>2!F;W(@1T1"+B @5'EP92 B<VAO=R!W87)R
M86YT>2(@9F]R(&1E=&%I;',N#0I4:&ES($=$0B!W87,@8V]N9FEG=7)E9"!A
M<R B:38X-BUP8RUC>6=W:6XB+BXN*&YO(&1E8G5G9VEN9R!S>6UB;VQS(&9O
M=6YD*2XN+@T**&=D8BD@8G)E86L@;6%I;@T*3F\@<WEM8F]L('1A8FQE(&ES
M(&QO861E9"X@(%5S92!T:&4@(F9I;&4B(&-O;6UA;F0N#0HH9V1B*2 C#0HH
M9V1B*2 C(%)U;B!T:&4@<')O9W)A;2!T;R!G970@86QL($1,3',@;&]A9&5D
M+B!4:&4@;F5W(&-O9&4-"BAG9&(I(",@97AT<F%C=',@=&AE(&5X<&]R=&5D
M('-Y;6)O;',@9G)O;2!T:&4@1$Q,<PT**&=D8BD@(PT**&=D8BD@<G5N#0I3
M=&%R=&EN9R!P<F]G<F%M.B O8WEG9')I=F4O9B]5<V5R<R]286]U;"]G9&(O
M9&QL96=M86EN+F5X92 -"@T*4')O9W)A;2!E>&ET960@;F]R;6%L;'DN#0HH
M9V1B*2 C#0HH9V1B*2 C($-A;B!N;W<@<V5T(&$@8G)E86MP;VEN="!A;F0@
M<F5S=&%R="!T:&4@<')O9W)A;2X-"BAG9&(I(",@57-E("HF('1O(&)Y<&%S
M<R!E;G1R>2!P;VEN="!D971E<FUI;F%T:6]N("AS964-"BAG9&(I(",@86QS
M;R!087-C86P@3V)R>2=S(&DS.#8M=&1E<"YC('!A=&-H(&9O<B!G9&(-"BAG
M9&(I(",@<')O8FQE;2!R97!O<G0@-S@P*0T**&=D8BD@(PT**&=D8BD@8G)E
M86L@*B9F;@T*0G)E86MP;VEN=" Q(&%T(#!X,3 P,#$P,# -"BAG9&(I(')U
M;@T*4W1A<G1I;F<@<')O9W)A;3H@+V-Y9V1R:79E+V8O57-E<G,O4F%O=6PO
M9V1B+V1L;&5G;6%I;BYE>&4@#0H-"D)R96%K<&]I;G0@,2P@,'@Q,# P,3 P
M,"!I;B!F;B H*2!F<F]M("]C>6=D<FEV92]F+U5S97)S+U)A;W5L+V=D8B]D
M;&QE9RYD;&P-"BAG9&(I(",-"BAG9&(I(",@2&ET('1H92!B<F5A:W!O:6YT
M(2!7:71H;W5T('1H92!P871C:"P@9V1B(&1O97-N)W0-"BAG9&(I(",@<F5P
M;W)T(&%N>2!O9B!S>6UB;VQI8R!N86UE<R!I;B!T:&4@9F]L;&]W:6YG#0HH
M9V1B*2 C('-T86-K('1R86-E.@T**&=D8BD@(PT**&=D8BD@=VAE<F4-"B,P
M(" P>#$P,# Q,# P(&EN(&9N("@I(&9R;VT@+V-Y9V1R:79E+V8O57-E<G,O
M4F%O=6PO9V1B+V1L;&5G+F1L; T*(S$@(#!X-C$P,#-F-#(@:6X@8WEG=VEN
M,2%?7V%S<V5R=" H*0T*(S(@(#!X-C$P,#0R,S8@:6X@9&QL7V-R=#! ," H
M*0T*(S,@(#!X-C$P,#0R-S4@:6X@9&QL7V-R=# @*"D-"B,T(" P># P-# Q
M,&)F(&EN(#\_("@I#0HC-2 @,'@P,#0P,3 S9"!I;B _/R H*0T*(S8@(#!X
M-S=E.3DR838@:6X@2T523D5,,S(A1V5T0V]M;6%N9$QI;F57("@I#0HH9V1B
M*2 C#0HH9V1B*2 C($%C8V5S<VEN9R!D871A(&-A;B!B92!A(&)I="!T<FEC
M:WD@8F5C875S92!T:&5R92!I<PT**&=D8BD@(R!N;R!T>7!E(&EN9F]R;6%T
M:6]N#0HH9V1B*2 C#0HH9V1B*2!P<FEN="!I;FET7V1A=&$-"B0Q(#T@-#(-
M"BAG9&(I('!R:6YT("AC:&%R("HI)FAE;&QO#0HD,B ](#!X,3 P,#(P,# @
M(DAE;&QO('=O<FQD(@T**&=D8BD@>"]S("9H96QL;PT*,'@Q,# P,C P," \
M:&5L;&\^.@D@(DAE;&QO('=O<FQD(@T**&=D8BD@>"]X("9I;FET7V1A=&$-
M"C!X,3 P,#(P,&,@/&EN:71?9&%T83XZ"3!X,# P,# P,F$-"BAG9&(I('@O
M>" F=6YI;FET7V1A=&$-"C!X,3 P,#,P9F,@/'5N:6YI=%]D871A/CH),'@P
M,# P,# P, T**&=D8BD@(PT**&=D8BD@(R!1=6%L:69I960@;F%M97,@=7-U
M86QL>2!N965D('%U;W1E<R!T;R!W;W)K('!R;W!E<FQY+@T**&=D8BD@(R!4
M:&5S92!M87D@8F4@=7-E9G5L('-O;65T:6UE<R!T;R!R97-O;'9E(&YA;64@
M8VQA<VAE<PT**&=D8BD@(R!O<B!W:&5N(&QI<W1I;F<@86QL('-Y;6)O;',@
M9G)O;2!A($1,3"X-"BAG9&(I(",-"BAG9&(I('@O>" F)V1L;&5G(6EN:71?
M9&%T82<-"C!X,3 P,#(P,&,@/&EN:71?9&%T83XZ"3!X,# P,# P,F$-"BAG
M9&(I(&EN9F\@=F%R:6%B;&5S(&1L;&5G(0T*06QL('9A<FEA8FQE<R!M871C
M:&EN9R!R96=U;&%R(&5X<')E<W-I;VX@(F1L;&5G(2(Z#0H-"DYO;BUD96)U
M9V=I;F<@<WEM8F]L<SH-"C!X,3 P,#(P,# @(&1L;&5G(6AE;&QO#0HP>#$P
M,# R,#!C("!D;&QE9R%I;FET7V1A=&$-"C!X,3 P,#,P9F,@(&1L;&5G(75N
M:6YI=%]D871A#0HH9V1B*2!I;F9O(&9U;F-T:6]N<R!D;&QE9R$-"D%L;"!F
M=6YC=&EO;G,@;6%T8VAI;F<@<F5G=6QA<B!E>'!R97-S:6]N(")D;&QE9R$B
M.@T*#0I.;VXM9&5B=6=G:6YG('-Y;6)O;',Z#0HP>#$P,# Q,# P("!D;&QE
M9R%F;@T**&=D8BD@(PT**&=D8BD@(R!0<F]B;&5M(&AE<F4@:7,@=&AA="!S
M>6UB;VPM9FEL92!R96QO861S('1H92 J<V%M92H@<WEM8F]L<PT**&=D8BD@
M(R!A;F0@8W)E871E<R!D=7!L:6-A=&4@;6EN:6UA;"!S>6UB;VP@96YT<FEE
M<PT**&=D8BD@(PT**&=D8BD@<WEM8F]L+69I;&4@9&QL96<N9&QL#0I296%D
M:6YG('-Y;6)O;',@9G)O;2!D;&QE9RYD;&PN+BY-:6YI;6%L('-Y;6)O;',@
M9G)O;2!D;&QE9RYD;&PN+BX-"BAN;R!D96)U9V=I;F<@<WEM8F]L<R!F;W5N
M9"DN+BYD;VYE+@T**&=D8BD@:6YF;R!F=6YC=&EO;G,@2T523D5,,S(N*@T*
M06QL(&9U;F-T:6]N<R!M871C:&EN9R!R96=U;&%R(&5X<')E<W-I;VX@(DM%
M4DY%3#,R+BHB.@T*#0I.;VXM9&5B=6=G:6YG('-Y;6)O;',Z#0HP>#<W93@Q
M-68V("!+15).14PS,B%)<T1E8G5G9V5R4')E<V5N= T*,'@W-V4X,38P-" @
M2T523D5,,S(A3W5T<'5T1&5B=6=3=')I;F=7#0HP>#<W93@Q-C9E("!+15).
M14PS,B%7<FET95!R;V9I;&5396-T:6]N00T*,'@W-V4X,38X," @2T523D5,
M,S(A1V5T4')O9FEL95-E8W1I;VY7#0HP>#<W93@Q-CDV("!+15).14PS,B%7
M<FET95!R:79A=&50<F]F:6QE4V5C=&EO;D$-"C!X-S=E.#$V8F8@($M%4DY%
L3#,R(4=E=%!R:79A=&50<F]F:6QE4V5C=&EO;E<-"@T*6V5T8RXN+BY=#0H`
`
end




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]