#42374 [Opn]: --as-needed bug - follow-up

2007-08-23 Thread galtgendo at o2 dot pl
 ID:   42374
 User updated by:  galtgendo at o2 dot pl
 Reported By:  galtgendo at o2 dot pl
 Status:   Open
 Bug Type: Compile Failure
 Operating System: gentoo linux
 PHP Version:  5.2.3
 New Comment:

For a simple test case:
#include 
int main()
{
g_print("test done\n");
return 0;
}
gcc -o minitest -Wl,--as-needed `pkg-config glib-2.0 --cflags`
minitest.c `pkg-config glib-2.0 --libs`
- compiles fine
gcc -o minitest -Wl,--as-needed `pkg-config glib-2.0 --cflags`
`pkg-config glib-2.0 --libs` minitest.c
- gives 
/tmp/ccKZrHDW.o: In function `main':
minitest.c:(.text+0x19): undefined reference to `g_print'
collect2: ld returned 1 exit status


Previous Comments:


[2007-08-23 15:21:10] galtgendo at o2 dot pl

Well, that's incorrect.
PHP_CHECK_LIBRARY calls AC_CHECK_LIB.
without -Wl,--as-needed it does not matter whether libs are in LDFLAGS
or in LIBS, with that flag however all dependent libraries must appear
after the objects.
AC_CHECK_LIB does something like 
i686-pc-linux-gnu-gcc -o conftest  ${CFLAGS}  ${LDFLAGS} conftest.c
${LIBS}
(more or less)

that check fails with --as-needed flag if lib is added to LDFLAGS
so it does not matter if it gets restored, cause the check already
failed - those are the false negatives I'm talking about.
All the other macros from the patch seem to do this, so that's why I
changed them. I'm not sure if something got broken, however it was
correct for the ext/ldap/config.m4 so there's at least a chance it will
work for the rest.



[2007-08-23 10:38:24] [EMAIL PROTECTED]

PHP_CHECK_LIBRARY restores the LDFLAGS after doing the test so it
shouldn't be any problem?

And bug #41973 was about ext/ldap and that was fixed.
I'd fix these case by case rather than blindly changing places unlikely
to even cause any problems.




[2007-08-22 15:40:41] galtgendo at o2 dot pl

Well, I'm not 100%, if I was, I would mentioned it, not asked for
futher testing.
And AFAIK that commit from bug #41973 was only
http://cvs.php.net/viewvc.cgi/php-src/ext/ldap/config.m4?r1=1.44&r2=1.45&diff_format=u
so only about ext/ldap/config.m4 (as in my patch).
What's more, although I can't recall if it made any difference you
should consider changes in acinclude.m4, cause in PHP_CHECK_LIBRARY
macro you were adding libraries to LDFLAGS instead of LIBS and that's
most common source of --as-needed bugs. That's why I'm talking about
false negatives - standard configure check would put those libraries in
wrong place and check would fail even if the library was OK.



[2007-08-22 14:46:27] [EMAIL PROTECTED]

And have you even tested what was committed in our CVS?



[2007-08-22 14:45:33] [EMAIL PROTECTED]

FYI: this is not bugzilla and it's not annoying. It's just old. :)

And about your patch..are you really sure you need to change all those
places?



The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/42374

-- 
Edit this bug report at http://bugs.php.net/?id=42374&edit=1


#42374 [Opn]: --as-needed bug - follow-up

2007-08-22 Thread galtgendo at o2 dot pl
 ID:   42374
 User updated by:  galtgendo at o2 dot pl
 Reported By:  galtgendo at o2 dot pl
 Status:   Open
 Bug Type: Compile Failure
 Operating System: gentoo linux
 PHP Version:  5.2.3
 New Comment:

As I don't see a way to attach anything here, I'll give you a link to
an old gentoo bug with my patch. It's
http://bugs.gentoo.org/show_bug.cgi?id=151444
It's an old bug so it still covers the part from the closed bug.
BTW your bugzilla is REALLY annoying.


Previous Comments:


[2007-08-22 09:57:33] galtgendo at o2 dot pl

Description:

Recently closed bug #41973 may not cover all the issues.
I have a patch that doesn't seem to break anything for me and AFAIK
solves all potential issues. The --as-needed bugs happen mostly when you
use libtool and add -L and -l to LDFLAGS instead of LIBS. So by the use
of grep I tried to change all the macros that seem to do that. I hope I
didn't break anything, however somebody should check that, cause 'works
for me'!='it works'. At least look at acinclude.m4, cause that one may
lead to false negatives with library detection.






-- 
Edit this bug report at http://bugs.php.net/?id=42374&edit=1