Bug 56073

Summary: automake fails to pick up asm files
Product: [Retired] Red Hat Raw Hide Reporter: Bernhard Rosenkraenzer <bero>
Component: automakeAssignee: Jens Petersen <petersen>
Status: CLOSED WORKSFORME QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: 1.0   
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2001-12-14 10:54:31 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Bernhard Rosenkraenzer 2001-11-12 15:25:10 UTC
Description of Problem:
I'm getting this when trying to compile anything that links with SDL:
/usr/lib/libSDL.so: undefined reference to `_ConvertX86p32_24RGB888'
/usr/lib/libSDL.so: undefined reference to `_ConvertX86p16_16BGR555'
/usr/lib/libSDL.so: undefined reference to `_ConvertMMXpII32_24RGB888'
/usr/lib/libSDL.so: undefined reference to `_ConvertX86p32_32RGBA888'
/usr/lib/libSDL.so: undefined reference to `_ConvertX86p32_16RGB555'
/usr/lib/libSDL.so: undefined reference to `_ConvertX86p16_8RGB332'
/usr/lib/libSDL.so: undefined reference to `_ConvertMMXpII32_16BGR555'
/usr/lib/libSDL.so: undefined reference to `_ConvertX86p32_16BGR555'
/usr/lib/libSDL.so: undefined reference to `_ConvertX86p32_16BGR565'
/usr/lib/libSDL.so: undefined reference to `_Hermes_X86_CPU'
/usr/lib/libSDL.so: undefined reference to `_ConvertX86p32_24BGR888'
/usr/lib/libSDL.so: undefined reference to `_ConvertMMXpII32_16RGB565'
/usr/lib/libSDL.so: undefined reference to `_ConvertMMXpII32_16RGB555'
/usr/lib/libSDL.so: undefined reference to `_ConvertMMXpII32_16BGR565'
/usr/lib/libSDL.so: undefined reference to `_ConvertX86p16_16RGB555'
/usr/lib/libSDL.so: undefined reference to `_ConvertX86p32_16RGB565'
/usr/lib/libSDL.so: undefined reference to `_ConvertX86p32_32BGR888'
/usr/lib/libSDL.so: undefined reference to `_ConvertX86p16_16BGR565'
/usr/lib/libSDL.so: undefined reference to `_ConvertX86'
/usr/lib/libSDL.so: undefined reference to `_ConvertX86p32_32BGRA888'
/usr/lib/libSDL.so: undefined reference to `_ConvertMMX'
/usr/lib/libSDL.so: undefined reference to `_ConvertX86p32_8RGB332'

SDL defines those symbols this way:
[root@parma SDL-1.2.2]# grep -r "_ConvertX86p32_24RGB888" .
./src/hermes/x86p_32.asm:GLOBAL _ConvertX86p32_24RGB888
./src/hermes/x86p_32.asm:_ConvertX86p32_24RGB888:
./src/hermes/HeadX86.h:  void ConvertX86p32_24RGB888() __attribute__ 
((alias ("_ConvertX86p32_24RGB888")));


Version-Release number of selected component (if applicable):
3.1-0.7

Additional Information:
Please re-assign to SDL if the syntax of __attribute__ alias has changed.

Comment 1 Jakub Jelinek 2001-11-12 15:39:25 UTC
Actually, if you get such unresolved references, it looks like __attribute__((alias()))
works properly. I'd bet it is NASM crap that screwes things up.
Can you look what readelf -s x86p_32.lo shows?

Comment 2 Bernhard Rosenkraenzer 2001-11-12 15:57:46 UTC
You're right, looks like an automake bug after all.
The file isn't generated at all (even though x86p_32.asm is listed in 
Makefile.am); instead, an empty libhermes.la is created.

Debugging some more.



Comment 3 Bernhard Rosenkraenzer 2001-11-12 16:03:46 UTC
Automake fails to pick up the asm files; it creates an empty 
libhermes_la_OBJECTS rather than listing anything generated from the asm 
files. Used to work in automake 1.4, and the Makefile.am looks correct.


Comment 4 Tom Tromey 2001-11-26 19:49:39 UTC
To my knowledge automake has only ever supported ".s" and ".S"
as extensions for assembly code.  ".asm" has never been supported.
I looked at the most recent 1.4 sources (from the 1.4 branch in
automake cvs) to verify this.

The documentation is pretty bad here.  It doesn't mention what
extensions are supported.  I'll fix this shortly.

Does the Makefile.am have a `.asm.o' rule and `SUFFIXES = asm'?
If so then that probably ought to work, depending on some other
context (i.e., whether libtool is in use).  (I can't easily dig up
the Makefile.am in question.)


Comment 5 Jens Petersen 2001-12-14 10:16:51 UTC
So just to be confirm: the problem is that SDL doesn't get built properly when
using automake-1.5?

Comment 6 Jens Petersen 2001-12-14 10:54:25 UTC
Hmm, I rebuilt and installed SDL-1.2.2-3 with automake-1.5 (just replacing
"./autogen.sh" by "autoreconf" in the spec) and then rebuilt smpeg-0.4.4-3
without any problem.