Re: [PATCH] shrink git-shell by avoiding redundant dependencies
- From
Dmitry Potapov <dpotapov@gmail.com>
- Date
- Jul 18, 2008, 05:59 UTC
- Message-ID
- <20080718055902.GI2925@dpotapov.dyndns.org>
- In-Reply-To
- <20080718002620.GE8421@leksak.fem-net>
On Fri, Jul 18, 2008 at 02:26:20AM +0200, Stephan Beyer wrote:
Show 31 quoted lines
>
> Dmitry Potapov wrote:
> > diff --git a/shell.c b/shell.c
> > index b27d01c..91ca7de 100644
> > --- a/shell.c
> > +++ b/shell.c
> > @@ -3,6 +3,14 @@
> > #include "exec_cmd.h"
> > #include "strbuf.h"
> >
> > +/* Stubs for functions that make no sense for git-shell. These stubs
> > + * are provided here to avoid linking in external redundant modules.
> > + */
> > +void release_pack_memory(size_t need, int fd){}
> > +void trace_argv_printf(const char **argv, const char *fmt, ...){}
> > +void trace_printf(const char *fmt, ...){}
> > +
> > +
>
> I don't really understand why this works.
> You redefine libgit.a functions here
>
> So the linker should complain like that:
> libgit.a(sha1_file.o): In function `release_pack_memory':
> /home/sbeyer/src/git/sha1_file.c:624: multiple definition of `release_pack_memory'
> shell.o:/home/sbeyer/src/git/shell.c:9: first defined here
> collect2: ld returned 1 exit status
>
> And, in fact, it does when I move a function from a builtin to a lib
> source file, for example launch_editor() from builtin-tag.c to strbuf.c,
> like the following one:It works because these functions are defined in object files, so the linker should not search for them in libraries. However, if the linker is forced to link sha1_file.c for some other reason, you will get the conflict.
Dmitry