Re: Fwd: Fix PIC flags with MPI wrappers using Portland C++ on GNU/Linux

Christian Rössel <[email protected]>
Newsgroups gmane.comp.gnu.libtool.patches
Message-ID <[email protected]>
Brooks,

On 10/10/2013 12:44 AM, Brooks Moses wrote:
> Christian,
>
> I'm going through old libtool patches that haven't been reviewed, and
> came across this one.  (Sorry that these have been ignored so long.)
>
> On 09/21/2012 10:34 AM, Christian Rössel wrote:
>> please find attached a patch that fixes the erroneous detection of PIC
>> flags in case when CXX is a MPI wrapper that uses pgCC or pgcpp on
>> GNU/Linux as well as the wrong rpath option.
>
> I do have one small question about the patch, before I commit it:
>> -        case `$CC -V 2>&1 | sed 5q` in
>> +        case `$CC -V 2>&1` in
>
> You make this change in a couple of places where we match verbose
> compiler output looking for (among other things) "*Portland\ Group*".
> The "sed 5q" simply has the effect of trimming off the first 5 lines of
> the output and ignoring the rest -- presumably to avoid spurious matches
> to things in later output.
>
> Is this change required in order to correctly match the Portland Group
> compilers?  That is, is the expected "*Portland\ Group*" coming
> somewhere after the first five lines?  That seems odd.

the change is required when using MPICH2 (tested with version 1.3.2p1) 
as the output of mpicxx -V 2>&1 | sed 5q is

/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 0 
has invalid symbol index 12
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 1 
has invalid symbol index 13
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 2 
has invalid symbol index 2
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 3 
has invalid symbol index 2
/usr/bin/ld: /usr/lib/debug/usr/lib/crt1.o(.debug_info): relocation 4 
has invalid symbol index 12


> The rest of the patch looks good to me, though I'd be curious to see a
> copy of the "$CC -V" output that you're matching.  (In particular, I'd
> like to see output from both pre-version-6 and post-version-6 versions
> to see how the version-matching relates to the expected input.)

Most of the patch is copy-paste from locations where cc_basename matches 
"pgCC* | pgcpp*)", the version-matching was copied as well.

As I wrote in [1], I'm not sure if copy-pasting is the best approach to 
deal with compilers used through a wrapper. Extending _LT_CC_BASENAME 
might be a more robust approach.

If you prefer an improvement of _LT_CC_BASENAME over copy-pasting, 
please ignore my patch. Please let me know if patching _LT_CC_BASENAME 
is an option.

Thanks,
Christian

[1] https://lists.gnu.org/archive/html/libtool-patches/2013-10/msg00021.html

> Also, thanks for the test reports that you included.
>
> Thanks,
> - Brooks
>
>
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.