Quuxplusone / LLVMBugzillaTest

0 stars 0 forks source link

libomp doesn't set SOVERSION #32276

Open Quuxplusone opened 7 years ago

Quuxplusone commented 7 years ago
Bugzilla Link PR33304
Status NEW
Importance P enhancement
Reported by Bernhard Rosenkraenzer (bero@linaro.org)
Reported on 2017-06-04 12:03:27 -0700
Last modified on 2017-12-31 03:40:17 -0800
Version unspecified
Hardware PC Linux
CC geek4civic@gmail.com, hahnjo@hahnjo.de, hfinkel@anl.gov, llvm-bugs@lists.llvm.org
Fixed by commit(s)
Attachments
Blocks
Blocked by
See also

The cmake files for libomp don't set the SOVERSION property, causing a "libomp.so" without version info (expected: libomp.so.1 or similar) in the name to be built.

The problem with this is that it makes it hard to keep legacy binaries working when the ABI changes incompatibly (where e.g. libomp.so.1 could continue to be OpenMP 3.0 while libomp.so.2 is OpenMP 5.0).

It also triggers warnings about nonstandard behavior with some Linux package checkers (e.g. rpmlint).

Quuxplusone commented 6 years ago

From my understanding, libomp will always stay binary compatible. If we need new functionality, existing bitfields will be extended (assuming the old default) or this will be done in new entry points (that may internally map to the same code with old defaults). So we shouldn't need this from a library perspective, correct?

We could still add an SOVERSION and never increase it, ie live with libomp.so.1 for eternity. I'd say we should only do this if we get packaging errors, warnings can be safely ignored (maybe even disabled for this package?)...