Message ID | 1314260332-10534-1-git-send-email-stefanha@linux.vnet.ibm.com |
---|---|
State | New |
Headers | show |
On 08/25/2011 03:18 AM, Stefan Hajnoczi wrote: > Avoid duplicate object files during the link. There are legitimate > cases where a link command-line would include duplicate object files > because two independent subsystems both depend on common infrastructure. > > Use GNU make's $(sort) function to remove duplicate object files from > the link command-line. > > Signed-off-by: Stefan Hajnoczi<stefanha@linux.vnet.ibm.com> Applied. Thanks. Regards, Anthony Liguori > --- > Your patch seems fine but we need to avoid duplicate object files during the > link phase. Otherwise we run into linker warnings because qemu-timer-common.o > is linked multiple times. Please include this patch and resend the two > together with this patch as 1/2 and yours as 2/2. > > rules.mak | 2 +- > 1 files changed, 1 insertions(+), 1 deletions(-) > > diff --git a/rules.mak b/rules.mak > index 884d421..04a9198 100644 > --- a/rules.mak > +++ b/rules.mak > @@ -31,7 +31,7 @@ endif > %.o: %.m > $(call quiet-command,$(CC) $(QEMU_INCLUDES) $(QEMU_CFLAGS) $(QEMU_DGFLAGS) $(CFLAGS) -c -o $@ $<," OBJC $(TARGET_DIR)$@") > > -LINK = $(call quiet-command,$(CC) $(QEMU_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ $(1) $(LIBS)," LINK $(TARGET_DIR)$@") > +LINK = $(call quiet-command,$(CC) $(QEMU_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ $(sort $(1)) $(LIBS)," LINK $(TARGET_DIR)$@") > > %$(EXESUF): %.o > $(call LINK,$^)
Anthony Liguori writes: > On 08/25/2011 03:18 AM, Stefan Hajnoczi wrote: >> Avoid duplicate object files during the link. There are legitimate >> cases where a link command-line would include duplicate object files >> because two independent subsystems both depend on common infrastructure. >> >> Use GNU make's $(sort) function to remove duplicate object files from >> the link command-line. >> >> Signed-off-by: Stefan Hajnoczi<stefanha@linux.vnet.ibm.com> > Applied. Thanks. > Regards, AFAIK, this patch is unnecessary once commit e03b41d47708744669aaa51e781021c3dc380198 in Stefan's repo is merged into upstream (which, according to the list, you just pulled). The reason is that $(sort) is unnecessary when passing $^ to the LINK function ($^ already eliminates repeats, while keeping the order intact). The patch fixes the QEMU_PROG rule, which was the only one not using $^. Thanks, Lluis
On 09/01/2011 01:54 PM, Anthony Liguori wrote: > On 08/25/2011 03:18 AM, Stefan Hajnoczi wrote: >> Avoid duplicate object files during the link. There are legitimate >> cases where a link command-line would include duplicate object files >> because two independent subsystems both depend on common infrastructure. >> >> Use GNU make's $(sort) function to remove duplicate object files from >> the link command-line. >> >> Signed-off-by: Stefan Hajnoczi<stefanha@linux.vnet.ibm.com> > > Applied. Thanks. > Don't think it'll hurt to have both, but "[PATCH 01/15] build: Fix linkage of QEMU_PROG" from Stefan's tracing pull request has the more elegant fix for this. > Regards, > > Anthony Liguori > >> --- >> Your patch seems fine but we need to avoid duplicate object files >> during the >> link phase. Otherwise we run into linker warnings because >> qemu-timer-common.o >> is linked multiple times. Please include this patch and resend the two >> together with this patch as 1/2 and yours as 2/2. >> >> rules.mak | 2 +- >> 1 files changed, 1 insertions(+), 1 deletions(-) >> >> diff --git a/rules.mak b/rules.mak >> index 884d421..04a9198 100644 >> --- a/rules.mak >> +++ b/rules.mak >> @@ -31,7 +31,7 @@ endif >> %.o: %.m >> $(call quiet-command,$(CC) $(QEMU_INCLUDES) $(QEMU_CFLAGS) >> $(QEMU_DGFLAGS) $(CFLAGS) -c -o $@ $<," OBJC $(TARGET_DIR)$@") >> >> -LINK = $(call quiet-command,$(CC) $(QEMU_CFLAGS) $(CFLAGS) $(LDFLAGS) >> -o $@ $(1) $(LIBS)," LINK $(TARGET_DIR)$@") >> +LINK = $(call quiet-command,$(CC) $(QEMU_CFLAGS) $(CFLAGS) $(LDFLAGS) >> -o $@ $(sort $(1)) $(LIBS)," LINK $(TARGET_DIR)$@") >> >> %$(EXESUF): %.o >> $(call LINK,$^) > >
2011/9/1 Michael Roth <mdroth@linux.vnet.ibm.com>: > On 09/01/2011 01:54 PM, Anthony Liguori wrote: >> >> On 08/25/2011 03:18 AM, Stefan Hajnoczi wrote: >>> >>> Avoid duplicate object files during the link. There are legitimate >>> cases where a link command-line would include duplicate object files >>> because two independent subsystems both depend on common infrastructure. >>> >>> Use GNU make's $(sort) function to remove duplicate object files from >>> the link command-line. >>> >>> Signed-off-by: Stefan Hajnoczi<stefanha@linux.vnet.ibm.com> >> >> Applied. Thanks. >> > > Don't think it'll hurt to have both, but "[PATCH 01/15] build: Fix linkage > of QEMU_PROG" from Stefan's tracing pull request has the more elegant fix > for this. Agreed, it doesn't hurt to take this one but the $^ fix is nicer and already merged. Anthony: Do you want to revert this patch? It's not necessary. Stefan
On 09/02/2011 03:42 AM, Stefan Hajnoczi wrote: > 2011/9/1 Michael Roth<mdroth@linux.vnet.ibm.com>: >> On 09/01/2011 01:54 PM, Anthony Liguori wrote: >>> >>> On 08/25/2011 03:18 AM, Stefan Hajnoczi wrote: >>>> >>>> Avoid duplicate object files during the link. There are legitimate >>>> cases where a link command-line would include duplicate object files >>>> because two independent subsystems both depend on common infrastructure. >>>> >>>> Use GNU make's $(sort) function to remove duplicate object files from >>>> the link command-line. >>>> >>>> Signed-off-by: Stefan Hajnoczi<stefanha@linux.vnet.ibm.com> >>> >>> Applied. Thanks. >>> >> >> Don't think it'll hurt to have both, but "[PATCH 01/15] build: Fix linkage >> of QEMU_PROG" from Stefan's tracing pull request has the more elegant fix >> for this. > > Agreed, it doesn't hurt to take this one but the $^ fix is nicer and > already merged. > > Anthony: Do you want to revert this patch? It's not necessary. If someone wants to send a patch, I can apply it, but I don't see the motivation to revert. Regards, Anthony Liguori > Stefan > >
diff --git a/rules.mak b/rules.mak index 884d421..04a9198 100644 --- a/rules.mak +++ b/rules.mak @@ -31,7 +31,7 @@ endif %.o: %.m $(call quiet-command,$(CC) $(QEMU_INCLUDES) $(QEMU_CFLAGS) $(QEMU_DGFLAGS) $(CFLAGS) -c -o $@ $<," OBJC $(TARGET_DIR)$@") -LINK = $(call quiet-command,$(CC) $(QEMU_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ $(1) $(LIBS)," LINK $(TARGET_DIR)$@") +LINK = $(call quiet-command,$(CC) $(QEMU_CFLAGS) $(CFLAGS) $(LDFLAGS) -o $@ $(sort $(1)) $(LIBS)," LINK $(TARGET_DIR)$@") %$(EXESUF): %.o $(call LINK,$^)
Avoid duplicate object files during the link. There are legitimate cases where a link command-line would include duplicate object files because two independent subsystems both depend on common infrastructure. Use GNU make's $(sort) function to remove duplicate object files from the link command-line. Signed-off-by: Stefan Hajnoczi <stefanha@linux.vnet.ibm.com> --- Your patch seems fine but we need to avoid duplicate object files during the link phase. Otherwise we run into linker warnings because qemu-timer-common.o is linked multiple times. Please include this patch and resend the two together with this patch as 1/2 and yours as 2/2. rules.mak | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-)