Activity log for bug #1490352

Date Who What changed Old value New value Message
2015-08-31 00:15:30 Michael Hudson-Doyle bug added bug
2015-09-10 10:13:24 Michael Hudson-Doyle description Go shared libraries depend on -Bsymbolic-functions working, which unfortunately doesn't in the version of binutils on trusty. The fix is in binutils-2_24-branch: https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=cd3813a8c9e59ccba0c42f5e3664465428e0e89c so could this be uploaded to trusty please? (I guess I should make this into a formal SRU request...) There is a bug in the version ld.bfd in trusty on arm64, where even if you pass -Bsymbolic-functions to ld, function pointer values are still subject to interposition by other shared objects. This was fixed and backported to the binutils-2_24 branch in January 2015. [Impact] Shared libraries for Go depend on -Bsymbolic-functions working properly and while it's unlikely that we'll ever support a version of Go on trusty that supports shared libraries, the arm64 builders for Go's build dashboard are trusty machines and so I can't run the shared library tests by default until this is fixed in trusty. It's also extremely confusing to debug the problems this causes. The bug existed on 32-bit ARM too, but there is a workaround: use gold instead (which does not have this bug). That doesn't apply to arm64 as there is no arm64 gold in trusty. [Test Case] $ cat shared.h typedef int (*intfunc)(void); int interpos(void); intfunc getintfunc(void); $ cat shared.c #include <stdio.h> #include "shared.h" int interpos(void) { return 0; } intfunc intfuncs[] = { interpos }; intfunc getintfunc(void) { return intfuncs[0]; } void callinterpos(void) { printf("calling interpos directly says %d\n", interpos()); } $ cat main.c #include <stdio.h> #include "shared.h" int interpos(void) { return 1; } int main(int argc, char** argv) { callinterpos(); printf("calling interpos via pointer says %d\n", getintfunc()()); } $ gcc -shared -Wl,-Bsymbolic-functions -o libshared.so shared.c $ gcc -o main main.c ./libshared.so $ ./main calling interpos directly says 0 calling interpos via pointer says 1 The two values printed should be the same. [Regression Potential] It is ever so slightly possible that some package depends on the broken behaviour, but that seems pretty unlikely given that this behaviour does not occur on intel platforms.
2015-09-10 10:25:15 Michael Hudson-Doyle attachment added binutils_2.24-5ubuntu13_2.24-5-ubuntu14.diff https://bugs.launchpad.net/ubuntu/+source/binutils/+bug/1490352/+attachment/4460452/+files/binutils_2.24-5ubuntu13_2.24-5-ubuntu14.diff
2015-09-10 11:02:09 Matthias Klose bug added subscriber Ubuntu Stable Release Updates Team
2015-09-10 16:29:15 C de-Avillez nominated for series Ubuntu Trusty
2015-09-10 16:29:15 C de-Avillez bug task added binutils (Ubuntu Trusty)
2015-09-16 14:24:19 Matthias Klose bug task added binutils-arm64-cross (Ubuntu)
2015-09-16 14:24:32 Matthias Klose bug task deleted binutils-arm64-cross (Ubuntu)
2015-09-16 14:24:45 Matthias Klose bug task deleted binutils (Ubuntu)
2015-09-16 15:58:05 Chris J Arges binutils (Ubuntu Trusty): status New Fix Committed
2015-09-16 15:58:08 Chris J Arges bug added subscriber SRU Verification
2015-09-16 15:58:11 Chris J Arges tags verification-needed
2015-09-17 00:09:47 Michael Hudson-Doyle tags verification-needed verification-done
2015-09-17 18:44:46 Brian Murray binutils-arm64-cross (Ubuntu Trusty): status New Fix Committed
2015-09-17 18:44:51 Brian Murray tags verification-done
2015-09-17 18:44:52 Brian Murray tags verification-needed
2015-09-17 18:57:50 Launchpad Janitor branch linked lp:ubuntu/trusty-proposed/binutils-arm64-cross
2015-09-17 20:12:45 Michael Hudson-Doyle tags verification-needed verification-done
2015-09-23 19:00:50 Launchpad Janitor binutils (Ubuntu Trusty): status Fix Committed Fix Released
2015-09-23 19:00:54 Chris J Arges removed subscriber Ubuntu Stable Release Updates Team
2015-09-30 00:08:21 Launchpad Janitor binutils-arm64-cross (Ubuntu Trusty): status Fix Committed Fix Released