This is the mail archive of the gdb-patches@sourceware.org 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]

Re: [RFA/Windows] Remove ADD_SHARED_SYMBOL_FILES macro


On Tuesday 23 June 2009 02:54:41, Christopher Faylor wrote:
> On Mon, Jun 22, 2009 at 01:49:50PM -0700, Joel Brobecker wrote:
> >[trying to catch up on email...]
> >
> >> On Monday 25 May 2009 23:57:25, Joel Brobecker wrote:
> >> > >        (_initialize _symfile): Move "add-shared-symbol-files"
> >> > >        command and "assf" alias.
> >> > >        * windows-nat.c (_initialize_windows_nat): to here.
> >> > >        Change "add-shared-symbol-files" to alias.
> >> > 
> >> > I propose we deprecate these aliases as well; does it really make sense
> >> > to have 2 identical commands?
> >> > 
> >> 
> >>Well, let me go the other way around.  Why is "dll-symbols" needed at
> >>all?  Why isn't "add-symbol-file" good enough?  Other than the ugly
> >>safe_symbol_file_add hack that would be nice to get rid of, and setting
> >>OBJF_SHARED (itself dubious) it doesn't have anything Windows specific
> >>at all (magically appending ".dll" doesn't count).
> >
> >I would love to get rid of these commands if they are indeed equivalent
> >to add-symbol-file.  I assumed that there was a reason for the
> >different command name.  Chris, do you remember?
> 
>   (gdb) add-symbol-file cygwin1.dll
>   The address where cygwin1.dll has been loaded is missing
>   (gdb) dll cygwin1.dll
>   (gdb) l dll_crt0
>   952       _main_tls = &_my_tls;
>   953       _main_tls->call ((DWORD (*) (void *, void *)) dll_crt0_1, NULL);
>   954     }
>   955
>   956     void
>   957     dll_crt0 (per_process *uptr)
>   958     {
>   959       /* Set the local copy of the pointer into the user space. */
>   960       if (!in_forkee && uptr && uptr != user_data)
>   961         {
> 
> As I have previously mentioned, the commands are not equivalent.

Wouldn't "add-symbol-file cygwin1.dll 0" have pretty much
the effect you want?

(gdb) add-symbol-file dll.dll 0
add symbol table from file "dll.dll" at
        .text_addr = 0x0
(y or n) y
Reading symbols from /home/pedro/dll.dll...done.

(gdb) list foo
1
2       __declspec(dllexport) int foo ()
3       {
4         return 0;
5       }
(gdb)

Or, even:

(gdb) define dll-symbols2
Type commands for definition of "dll-symbols2".
End with a line saying just "end".
>add-symbol-file $arg0 0
>end
(gdb) dll-symbols2 dll.dll
add symbol table from file "dll.dll" at
        .text_addr = 0x0
(gdb) list foo
1
2       __declspec(dllexport) int foo ()
3       {
4         return 0;
5       }
(gdb) 

This is a legitimate question.  I'm probably missing something
important that is possible with dll-symbols and not with
add-symbol-file.  I'd be nice to understand it, since the command
uses OBJF_SHARED for a user added object -- I can picture having these
uses misunderstood making the job harder for people working on
objfiles (re-)designs, for example.

The other point I was getting across, and which Ulrich also pointed out
in the other thread Pierre started that led to this patch, is that I
it is a bit wrong to see this command/feature, being a symbols
related command, included in a native Windows hosted gdb, while not,
e.g., in a cross to Windows; or having it be a Windows specific at
all, given that it doesn't seem to contain anything Windows related,
other than the points I already mentioned.  But this latter issue is
not something worth iterating much over.

-- 
Pedro Alves


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