* [Qemu-devel] [PATCH] rules.mak: Use -r instead of -Wl, -r to fix building when PIE is default
@ 2016-11-27 16:28 Adrian Bunk
2016-11-28 15:05 ` Paolo Bonzini
0 siblings, 1 reply; 8+ messages in thread
From: Adrian Bunk @ 2016-11-27 16:28 UTC (permalink / raw)
To: qemu-devel, qemu-trivial
Building qemu fails in distributions where gcc enables PIE
by default (e.g. Debian unstable) with:
/usr/bin/ld: -r and -pie may not be used together
-r and -pie cannot be used together in the linker,
and position independent is already relocatable.
Use -r instead of -Wl,-r to avoid gcc passing -r to the
linker when PIE is enabled.
Signed-off-by: Adrian Bunk <bunk@stusta.de>
---
rules.mak | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/rules.mak b/rules.mak
index 0333ae3..545ebd9 100644
--- a/rules.mak
+++ b/rules.mak
@@ -93,7 +93,7 @@ module-common.o: CFLAGS += $(DSO_OBJ_CFLAGS)
$(if $(findstring /,$@),$(call quiet-command,cp $@ $(subst /,-,$@),"CP","$(subst /,-,$@)"))
-LD_REL := $(CC) -nostdlib -Wl,-r $(LD_REL_FLAGS)
+LD_REL := $(CC) -nostdlib -r $(LD_REL_FLAGS)
%.mo:
$(call quiet-command,$(LD_REL) -o $@ $^,"LD","$(TARGET_DIR)$@")
--
2.10.2
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [PATCH] rules.mak: Use -r instead of -Wl, -r to fix building when PIE is default
2016-11-27 16:28 [Qemu-devel] [PATCH] rules.mak: Use -r instead of -Wl, -r to fix building when PIE is default Adrian Bunk
@ 2016-11-28 15:05 ` Paolo Bonzini
2016-11-28 15:24 ` Adrian Bunk
0 siblings, 1 reply; 8+ messages in thread
From: Paolo Bonzini @ 2016-11-28 15:05 UTC (permalink / raw)
To: Adrian Bunk, qemu-devel, qemu-trivial
On 27/11/2016 17:28, Adrian Bunk wrote:
> Building qemu fails in distributions where gcc enables PIE
> by default (e.g. Debian unstable) with:
> /usr/bin/ld: -r and -pie may not be used together
>
> -r and -pie cannot be used together in the linker,
> and position independent is already relocatable.
>
> Use -r instead of -Wl,-r to avoid gcc passing -r to the
> linker when PIE is enabled.
>
> Signed-off-by: Adrian Bunk <bunk@stusta.de>
I think this is a bug in the linker. If the linker is producing
relocatable objects by default, it has no reason to refuse -r. Have you
tried asking the binutils folks about it too?
But the patch would probably remove the need for LD_REL_FLAGS, based on
a quick look at the GCC source code, so I guess it's fine.
Paolo
> ---
> rules.mak | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/rules.mak b/rules.mak
> index 0333ae3..545ebd9 100644
> --- a/rules.mak
> +++ b/rules.mak
> @@ -93,7 +93,7 @@ module-common.o: CFLAGS += $(DSO_OBJ_CFLAGS)
> $(if $(findstring /,$@),$(call quiet-command,cp $@ $(subst /,-,$@),"CP","$(subst /,-,$@)"))
>
>
> -LD_REL := $(CC) -nostdlib -Wl,-r $(LD_REL_FLAGS)
> +LD_REL := $(CC) -nostdlib -r $(LD_REL_FLAGS)
>
> %.mo:
> $(call quiet-command,$(LD_REL) -o $@ $^,"LD","$(TARGET_DIR)$@")
>
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [PATCH] rules.mak: Use -r instead of -Wl, -r to fix building when PIE is default
2016-11-28 15:05 ` Paolo Bonzini
@ 2016-11-28 15:24 ` Adrian Bunk
2016-11-28 15:38 ` Paolo Bonzini
0 siblings, 1 reply; 8+ messages in thread
From: Adrian Bunk @ 2016-11-28 15:24 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: qemu-devel, qemu-trivial
On Mon, Nov 28, 2016 at 04:05:33PM +0100, Paolo Bonzini wrote:
>
>
> On 27/11/2016 17:28, Adrian Bunk wrote:
> > Building qemu fails in distributions where gcc enables PIE
> > by default (e.g. Debian unstable) with:
> > /usr/bin/ld: -r and -pie may not be used together
> >
> > -r and -pie cannot be used together in the linker,
> > and position independent is already relocatable.
> >
> > Use -r instead of -Wl,-r to avoid gcc passing -r to the
> > linker when PIE is enabled.
> >
> > Signed-off-by: Adrian Bunk <bunk@stusta.de>
>
> I think this is a bug in the linker. If the linker is producing
> relocatable objects by default, it has no reason to refuse -r. Have you
> tried asking the binutils folks about it too?
The linker knows nothing about this default, gcc is passing -pie
to the linker.
>...
> Paolo
>...
cu
Adrian
--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [PATCH] rules.mak: Use -r instead of -Wl, -r to fix building when PIE is default
2016-11-28 15:24 ` Adrian Bunk
@ 2016-11-28 15:38 ` Paolo Bonzini
2016-11-28 15:42 ` Paolo Bonzini
0 siblings, 1 reply; 8+ messages in thread
From: Paolo Bonzini @ 2016-11-28 15:38 UTC (permalink / raw)
To: Adrian Bunk; +Cc: qemu-devel, qemu-trivial
On 28/11/2016 16:24, Adrian Bunk wrote:
> On Mon, Nov 28, 2016 at 04:05:33PM +0100, Paolo Bonzini wrote:
>>
>>
>> On 27/11/2016 17:28, Adrian Bunk wrote:
>>> Building qemu fails in distributions where gcc enables PIE
>>> by default (e.g. Debian unstable) with:
>>> /usr/bin/ld: -r and -pie may not be used together
>>>
>>> -r and -pie cannot be used together in the linker,
>>> and position independent is already relocatable.
>>>
>>> Use -r instead of -Wl,-r to avoid gcc passing -r to the
>>> linker when PIE is enabled.
>>>
>>> Signed-off-by: Adrian Bunk <bunk@stusta.de>
>>
>> I think this is a bug in the linker. If the linker is producing
>> relocatable objects by default, it has no reason to refuse -r. Have you
>> tried asking the binutils folks about it too?
>
> The linker knows nothing about this default, gcc is passing -pie
> to the linker.
The linker is receiving "-r -pie". It can satisfy the requirement of
producing a relocatable object by discarding the "-r", but it doesn't.
That'd be a linker bug.
But in fact ELF makes PIE ET_DYN and relocatable ET_REL. That would
make the linker error the right thing, but then I don't understand what
you mean by "position independent is already relocatable".
Paolo
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [PATCH] rules.mak: Use -r instead of -Wl, -r to fix building when PIE is default
2016-11-28 15:38 ` Paolo Bonzini
@ 2016-11-28 15:42 ` Paolo Bonzini
2016-11-28 19:11 ` Adrian Bunk
2016-11-29 9:33 ` Stefan Hajnoczi
0 siblings, 2 replies; 8+ messages in thread
From: Paolo Bonzini @ 2016-11-28 15:42 UTC (permalink / raw)
To: Adrian Bunk; +Cc: qemu-trivial, qemu-devel
On 28/11/2016 16:38, Paolo Bonzini wrote:
>
>
> On 28/11/2016 16:24, Adrian Bunk wrote:
>> On Mon, Nov 28, 2016 at 04:05:33PM +0100, Paolo Bonzini wrote:
>>>
>>>
>>> On 27/11/2016 17:28, Adrian Bunk wrote:
>>>> Building qemu fails in distributions where gcc enables PIE
>>>> by default (e.g. Debian unstable) with:
>>>> /usr/bin/ld: -r and -pie may not be used together
>>>>
>>>> -r and -pie cannot be used together in the linker,
>>>> and position independent is already relocatable.
>>>>
>>>> Use -r instead of -Wl,-r to avoid gcc passing -r to the
>>>> linker when PIE is enabled.
>>>>
>>>> Signed-off-by: Adrian Bunk <bunk@stusta.de>
>>>
>>> I think this is a bug in the linker. If the linker is producing
>>> relocatable objects by default, it has no reason to refuse -r. Have you
>>> tried asking the binutils folks about it too?
>>
>> The linker knows nothing about this default, gcc is passing -pie
>> to the linker.
>
> The linker is receiving "-r -pie". It can satisfy the requirement of
> producing a relocatable object by discarding the "-r", but it doesn't.
> That'd be a linker bug.
>
> But in fact ELF makes PIE ET_DYN and relocatable ET_REL. That would
> make the linker error the right thing, but then I don't understand what
> you mean by "position independent is already relocatable".
Aha, I looked at GCC source code and this is incorrect: "Use -r instead
of -Wl,-r to avoid gcc passing -r to the linker when PIE is enabled".
When GCC sees -r (as opposed to -Wl,-r) it does not pass -pie to the linker.
Paolo
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [PATCH] rules.mak: Use -r instead of -Wl, -r to fix building when PIE is default
2016-11-28 15:42 ` Paolo Bonzini
@ 2016-11-28 19:11 ` Adrian Bunk
2016-11-29 9:33 ` Stefan Hajnoczi
1 sibling, 0 replies; 8+ messages in thread
From: Adrian Bunk @ 2016-11-28 19:11 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: qemu-trivial, qemu-devel
On Mon, Nov 28, 2016 at 04:42:54PM +0100, Paolo Bonzini wrote:
>
> Aha, I looked at GCC source code and this is incorrect: "Use -r instead
> of -Wl,-r to avoid gcc passing -r to the linker when PIE is enabled".
> When GCC sees -r (as opposed to -Wl,-r) it does not pass -pie to the linker.
That's what I get for writing things I did not double-check myself...
You are correct here (with the implication that my patch does change
behaviour even less).
> Paolo
cu
Adrian
--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [PATCH] rules.mak: Use -r instead of -Wl, -r to fix building when PIE is default
2016-11-28 15:42 ` Paolo Bonzini
2016-11-28 19:11 ` Adrian Bunk
@ 2016-11-29 9:33 ` Stefan Hajnoczi
2016-11-29 12:09 ` Paolo Bonzini
1 sibling, 1 reply; 8+ messages in thread
From: Stefan Hajnoczi @ 2016-11-29 9:33 UTC (permalink / raw)
To: Paolo Bonzini; +Cc: Adrian Bunk, qemu-trivial, qemu-devel
[-- Attachment #1: Type: text/plain, Size: 1807 bytes --]
On Mon, Nov 28, 2016 at 04:42:54PM +0100, Paolo Bonzini wrote:
>
>
> On 28/11/2016 16:38, Paolo Bonzini wrote:
> >
> >
> > On 28/11/2016 16:24, Adrian Bunk wrote:
> >> On Mon, Nov 28, 2016 at 04:05:33PM +0100, Paolo Bonzini wrote:
> >>>
> >>>
> >>> On 27/11/2016 17:28, Adrian Bunk wrote:
> >>>> Building qemu fails in distributions where gcc enables PIE
> >>>> by default (e.g. Debian unstable) with:
> >>>> /usr/bin/ld: -r and -pie may not be used together
> >>>>
> >>>> -r and -pie cannot be used together in the linker,
> >>>> and position independent is already relocatable.
> >>>>
> >>>> Use -r instead of -Wl,-r to avoid gcc passing -r to the
> >>>> linker when PIE is enabled.
> >>>>
> >>>> Signed-off-by: Adrian Bunk <bunk@stusta.de>
> >>>
> >>> I think this is a bug in the linker. If the linker is producing
> >>> relocatable objects by default, it has no reason to refuse -r. Have you
> >>> tried asking the binutils folks about it too?
> >>
> >> The linker knows nothing about this default, gcc is passing -pie
> >> to the linker.
> >
> > The linker is receiving "-r -pie". It can satisfy the requirement of
> > producing a relocatable object by discarding the "-r", but it doesn't.
> > That'd be a linker bug.
> >
> > But in fact ELF makes PIE ET_DYN and relocatable ET_REL. That would
> > make the linker error the right thing, but then I don't understand what
> > you mean by "position independent is already relocatable".
>
> Aha, I looked at GCC source code and this is incorrect: "Use -r instead
> of -Wl,-r to avoid gcc passing -r to the linker when PIE is enabled".
> When GCC sees -r (as opposed to -Wl,-r) it does not pass -pie to the linker.
Should we merge this patch for 2.8 with the commit updated to reflect this?
Stefan
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 455 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [Qemu-devel] [PATCH] rules.mak: Use -r instead of -Wl, -r to fix building when PIE is default
2016-11-29 9:33 ` Stefan Hajnoczi
@ 2016-11-29 12:09 ` Paolo Bonzini
0 siblings, 0 replies; 8+ messages in thread
From: Paolo Bonzini @ 2016-11-29 12:09 UTC (permalink / raw)
To: Stefan Hajnoczi; +Cc: Adrian Bunk, qemu-trivial, qemu-devel
On 29/11/2016 10:33, Stefan Hajnoczi wrote:
> On Mon, Nov 28, 2016 at 04:42:54PM +0100, Paolo Bonzini wrote:
>>
>>
>> On 28/11/2016 16:38, Paolo Bonzini wrote:
>>>
>>>
>>> On 28/11/2016 16:24, Adrian Bunk wrote:
>>>> On Mon, Nov 28, 2016 at 04:05:33PM +0100, Paolo Bonzini wrote:
>>>>>
>>>>>
>>>>> On 27/11/2016 17:28, Adrian Bunk wrote:
>>>>>> Building qemu fails in distributions where gcc enables PIE
>>>>>> by default (e.g. Debian unstable) with:
>>>>>> /usr/bin/ld: -r and -pie may not be used together
>>>>>>
>>>>>> -r and -pie cannot be used together in the linker,
>>>>>> and position independent is already relocatable.
>>>>>>
>>>>>> Use -r instead of -Wl,-r to avoid gcc passing -r to the
>>>>>> linker when PIE is enabled.
>>>>>>
>>>>>> Signed-off-by: Adrian Bunk <bunk@stusta.de>
>>>>>
>>>>> I think this is a bug in the linker. If the linker is producing
>>>>> relocatable objects by default, it has no reason to refuse -r. Have you
>>>>> tried asking the binutils folks about it too?
>>>>
>>>> The linker knows nothing about this default, gcc is passing -pie
>>>> to the linker.
>>>
>>> The linker is receiving "-r -pie". It can satisfy the requirement of
>>> producing a relocatable object by discarding the "-r", but it doesn't.
>>> That'd be a linker bug.
>>>
>>> But in fact ELF makes PIE ET_DYN and relocatable ET_REL. That would
>>> make the linker error the right thing, but then I don't understand what
>>> you mean by "position independent is already relocatable".
>>
>> Aha, I looked at GCC source code and this is incorrect: "Use -r instead
>> of -Wl,-r to avoid gcc passing -r to the linker when PIE is enabled".
>> When GCC sees -r (as opposed to -Wl,-r) it does not pass -pie to the linker.
>
> Should we merge this patch for 2.8 with the commit updated to reflect this?
Yes, I've already sent a pull request for it.
Paolo
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2016-11-29 12:09 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-11-27 16:28 [Qemu-devel] [PATCH] rules.mak: Use -r instead of -Wl, -r to fix building when PIE is default Adrian Bunk
2016-11-28 15:05 ` Paolo Bonzini
2016-11-28 15:24 ` Adrian Bunk
2016-11-28 15:38 ` Paolo Bonzini
2016-11-28 15:42 ` Paolo Bonzini
2016-11-28 19:11 ` Adrian Bunk
2016-11-29 9:33 ` Stefan Hajnoczi
2016-11-29 12:09 ` Paolo Bonzini
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.