View Issue Details

IDProjectCategoryView StatusLast Update
0004235unrealinstallingpublic2015-10-26 11:03
ReporterQIXOZL Assigned Tosyzop  
PrioritynormalSeverityminorReproducibilityalways
Status closedResolutionfixed 
Product Version3.2.10.1 
Summary0004235: [Solaris 11] Linking fails with solaris studio 12
Descriptionlinking fails with solaris studio 12 giving:

Undefined first referenced
 symbol in file
find_CommandEx packet.o
ld: fatal: symbol referencing errors. No output written to ircd
Steps To Reproduce./configure --with-showlistmodes --enable-ssl --enable-ziplinks --with-listen=5 --with-dpath=/root/Unreal3.2.10.1 --with-spath=/root/Unreal3.2.10.1/src/ircd --with-nick-history=2000 --with-sendq=3000000 --with-bufferpool=18 --with-permissions=0600 --with-fd-setsize=1024 --enable-dynamic-linking

...

gmake[1]: Entering directory `/root/Unreal3.2.10.1/src'
cc -I../include -I/root/Unreal3.2.10.1/extras/regexp/include -I/root/Unreal3.2.10.1/extras/c-ares/include -xc99=all -fast -xunroll=12 -xarch=ssse3 -m64 -xCC -features=extensions -lssl -lcrypto -o ircd timesynch.o res.o s_bsd.o auth.o aln.o channel.o cloak.o crule.o dbuf.o events.o fdlist.o hash.o help.o ircd.o ircsprintf.o list.o lusers.o match.o modules.o packet.o parse.o s_auth.o s_conf.o s_debug.o s_err.o s_extra.o s_kline.o s_misc.o s_numeric.o s_serv.o s_svs.o socket.o ssl.o s_user.o charsys.o scache.o send.o support.o umodes.o version.o whowas.o zip.o cidr.o random.o extcmodes.o extbans.o md5.o api-isupport.o api-command.o -lcrypt -lsocket -lnsl -lz -lresolv ../extras/regexp/lib/libtre.a -L../extras/c-ares/lib /root/Unreal3.2.10.1/extras/c-ares/lib/libcares.a -lrt -lssl -lcrypto
Undefined first referenced
 symbol in file
find_CommandEx packet.o
ld: fatal: symbol referencing errors. No output written to ircd
gmake[1]: *** [ircd] Error 2
3rd party modules

Relationships

related to 0004121 closedsyzop [Solaris 10] Config fails to produce a Makefile and thus make fails. Issue may be in c-ares-1.7.3 

Activities

syzop

2013-09-18 11:59

administrator   ~0017761

Hmmm Solaris :)

Sorry I'm not familiar with Solaris and we currently have too few resources to seriously support it.

In any case, we only support gcc at the moment. I suggest trying compiling with that.

See 0004121 for another issue on Solaris (10) -- which also happens to show how to use gcc by the way. Hopefully that issue is not an issue on Solaris 11, I don't know, let us know.

It used to work at one point.. and I don't think we added any incompatible code since then.. so it's probably something easy.

QIXOZL

2013-09-18 15:40

reporter   ~0017762

>> we currently have too few resources to seriously support it

you can get solaris and the studio for free from sun, eh, i mean oracle ;-)
a small vm is installed in less than 10 minutes and letting it run there every once in a while takes even less time. if something shows up it could be a quick fix and an improvement for the code as well. if not then no harm done either.


>> we only support gcc at the moment

as pretty much any other project these days. a pity tho because not only that gcc has never been known for great results it also gives a much better view at the program and so far unnoticed potential issues when running it through a serious compiler.


>> Hopefully that issue is not an issue on Solaris 11

it's not. a gcc build was successful.

QIXOZL

2013-09-21 09:17

reporter   ~0017768

seems i found a solution here. basically the sun compiler doesn't allow mixing static and inline functions. there're 2 solutions for that:
1. remove inline
2. use option -features=no%extinl

the docs say:
Compile new codes with -features=no%extinl to obtain the same treatment of extern inline functions as provided by older versions of the C and C++ compilers.
http://docs.oracle.com/cd/E24457_01/html/E21990/bjapr.html#bjaqo

for much more detailed info: https://blogs.oracle.com/dew/entry/c99_inline_function

nenolod

2013-09-21 09:59

reporter   ~0017769

then the oracle compiler is not C99-compliant.

'static' defines a symbol as having internal linkage (similar to visibility 'hidden', which is a GNU-ism).

GNU C is the correct interpretation of C99 here...

QIXOZL

2013-09-21 10:08

reporter   ~0017770

Last edited: 2013-09-21 17:48

did you check the second link?

EDIT: anyway there're 2 more things to get it done properly using suncc:
1. option -features=extensions to avoid problems with anonymous structures, and
2. there're 2 versions of install available. the native one /usr/sbin/install doesn't work with the Makefile so in case that has been found first and added to the Makefile replace it with /usr/gnu/bin/install

nenolod

2013-09-21 19:41

reporter   ~0017771

I did check the link. The oracle compiler is not C99-compliant.

Both 'static' and 'inline' define a translation unit as having internal linkage.

Beyond that, anonymous structures are a valid feature in both C99 and C11.

QIXOZL

2013-09-21 20:15

reporter   ~0017772

my bad, it was anonymous structures with union(s).

anyway this seems solved for now :-)

Issue History

Date Modified Username Field Change
2013-09-13 07:15 QIXOZL New Issue
2013-09-18 11:59 syzop Note Added: 0017761
2013-09-18 12:00 syzop Summary undefined symbol find_CommandEx => [Solaris 11] Linking fails with solaris studio 12
2013-09-18 15:40 QIXOZL Note Added: 0017762
2013-09-21 09:17 QIXOZL Note Added: 0017768
2013-09-21 09:59 nenolod Note Added: 0017769
2013-09-21 10:08 QIXOZL Note Added: 0017770
2013-09-21 17:48 QIXOZL Note Edited: 0017770
2013-09-21 19:41 nenolod Note Added: 0017771
2013-09-21 20:15 QIXOZL Note Added: 0017772
2014-01-12 16:42 syzop Relationship added related to 0004121
2014-03-14 01:14 peterkingalexander Issue cloned: 0004264
2015-10-26 11:02 syzop Status new => closed
2015-10-26 11:03 syzop Assigned To => syzop
2015-10-26 11:03 syzop Resolution open => fixed