> On Mar 19, 2021, at 4:59 PM, Philip Prindeville 
> <[email protected]> wrote:
> 
> 
> 
>> On Mar 19, 2021, at 4:06 PM, Eneas U de Queiroz <[email protected]> 
>> wrote:
>> 
>> On Fri, Mar 19, 2021 at 5:08 PM Philip Prindeville
>> <[email protected]> wrote:
>>> 
>>> 
>>> Maybe I'm missing something, but why not just fix rules.mk:
>>> 
>>> 
>>> ifneq (,$(findstring $(ARCH) , aarch64 aarch64_be powerpc ))
>>> FPIC:=-fPIC
>>> else
>>> FPIC:=-fpic
>>> endif
>>> 
>>> HOST_FPIC:=-fPIC
>>> 
>>> 
>>> To have the FPIC and HOST_FPIC definitions include -DPIC?
>> 
>> I think it would be the proper way to handle this.  I was initially
>> fearful of changing too much and breaking things, but I think it
>> should be expected behaviour.  What else would you use a 'PIC'
>> definition for?  I will resend a patch changing rules.mk instead.
> 
> 
> Just saw this... Turns out that this would break a couple of packages (both 
> in openwrt and in packages), so I've included those as well.
> 
> -Philip
> 


Hi all,

I think that Eneas and I have converged on a fix, it should help with some of 
the CircleCI issues we've been having with x86_64 (which oddly isn't our most 
leveraged architecture for CI/CD testing, even though it's the easiest to cloud 
deploy... but that's a separate discussion).

We've both built and tested with this patch and no ill effects.

There's actually a surprising number of places where the symbol "PIC" is 
tested, not just in asm files (which was the original libgmp problem), but also 
in C files supporting dlopen(), stack unwinding, etc.

If you go into build_dir/target-*/ and run:

% find . \( -name "*.[hc]" -o -name "*.[hc]pp" -o -name "*.asm" \) -print | 
xargs egrep -r -n '\<if.*\<PIC\>' 

You'll get about 200+ hits (modulo some occurrences of "PIC" in comments), very 
close to 50% of those being in gmp-6.2.1 itself (not surprising because it has 
a lot of asm code).

Other hits are also where you'd expect them: elfutils, binutils, gdb, etc. i.e. 
things that need to be relocation-aware or else projects with plugin support in 
the form of .so's (such as cyrus-sasl).

The fix itself is trivial: it's 3 lines of changes.  Can we please get core 
reviewers to consider and merge this?

https://github.com/openwrt/openwrt/pull/4006

Thanks!

-Philip



_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to