|
From: | Fred Wright |
Subject: | bug#44462: Problem with get_multilibs on macOS |
Date: | Wed, 4 Nov 2020 19:18:30 -0800 (PST) |
User-agent: | Alpine 2.23 (OSX 453 2020-06-18) |
While investigating some issues in the libffi tests, I came across some cases where errors are caused by DejaGnu's get_multilibs function. For some unclear reason, this only seems to get invoked for C++ tests, but when it is, there can be a problem, because under some circumstances it invokes the compiler with the -dumpspecs option, which is a gcc-only option that clang chokes on. Even when it's using gcc, it bloats the logfile with the verbose -dumpspecs output, in order to determine something of highly questionable value.
I traced the results of get_multilibs (as used by the libffi tests) in many macOS versions, and even the "successful" cases seem to have questionably useful results:
10.4: /usr/. 10.5: /usr/. 10.6 (x86_64): /usr/x86_64 10.6 (i386): /usr/. 10.7: /usr/llvm-gcc-4.2/bin/../x86_64 10.8: ./x86_64 10.9: ./x86_64 10.10: (fails) 10.11: (fails) 10.12: (fails) 10.13: (fails) 10.14: ./. 10.15: ./.The "/usr/." result returned on 10.4, 10.5, and 32-bit 10.6 is the same as what I see on Ubuntu 14.04, CentOS 7, and Fedora 25, though it's not clear to me what it's supposed to represent.
Also note that when I build and test a 32-bit version of libffi on 10.9, the get_multilibs result is still "./x86_64".
Since get_multilibs already has code to return an empty string in the "remote" case (where it assumes this function won't work), I just added code to unix.exp to set multitop to "" for all "darwin" targets, thereby short-circuiting almost all og get_multilibs. That certainly fixes the problem with the libffi tests, and doesn't change any non-Mac behavior, though I don't know if that's the ideal fix. The whole get_mutilibs function looks pretty ugly anyway, and it's generally recognized that relying on -dumpspecs is a bad idea.
I primarily tested my patch against the 1.6.2 release, since the current master won't install from a non-git directory, and also has multiple failures in its own tests (even on Linux). The patch is nearly identical between the 1.6.2 and master cases, anyway.
I can send the current patch, either as a bare email or as an attachment. AFAIK, Savannah doesn't have the pull request / merge request concept.
Fred Wright
[Prev in Thread] | Current Thread | [Next in Thread] |