#63381 closed defect (fixed)
grep @3.7_0: 'struct mcontext' has no member named '__ss' on Tiger/PPC
Reported by: | evanmiller (Evan Miller) | Owned by: | Schamschula (Marius Schamschula) |
---|---|---|---|
Priority: | Normal | Milestone: | |
Component: | ports | Version: | 2.7.1 |
Keywords: | tiger | Cc: | kencu (Ken), mascguy (Christopher Nielsen) |
Port: | grep |
Description
:info:build sigsegv.c: In function 'sigsegv_handler': :info:build sigsegv.c:940: error: 'struct mcontext' has no member named '__ss'
Looking at /usr/include/ppc/ucontext.h
, it appears that Tiger does not use the double-underscore prefixes for its mcontext struct member names. This issue should probably be addressed in legacysupport.
System info:
:debug:sysinfo Mac OS X 10.4.11 (darwin/8.11.0) arch powerpc :debug:sysinfo MacPorts 2.7.1 :debug:sysinfo Xcode 2.5 :debug:sysinfo SDK 10.4 :debug:sysinfo MACOSX_DEPLOYMENT_TARGET: 10.4
Full log to follow.
Attachments (1)
Change History (18)
Changed 3 years ago by evanmiller (Evan Miller)
Attachment: | grep-tiger-ppc-main.log added |
---|
comment:1 Changed 3 years ago by Schamschula (Marius Schamschula)
comment:2 Changed 3 years ago by kencu (Ken)
this happens on the rare ports that use this header. I have so far patched it -- I did one within the past couple of months. It is so rare that I've not thought to put it in legacysupport, but I can think that over.
Let me see if I can recall where I last patched this.
comment:3 Changed 3 years ago by evanmiller (Evan Miller)
This message
https://lists.gnu.org/archive/html/bug-libsigsegv/2021-05/msg00000.html
indicates that things may work on legacy systems using the +libsigsegv
variant. Trying it now....
comment:5 Changed 3 years ago by kencu (Ken)
ld64-97 does the fix as a reinplace on line 423 which is also fairly simple
https://github.com/macports/macports-ports/blob/master/devel/ld64/Portfile
comment:6 Changed 3 years ago by evanmiller (Evan Miller)
It looks like the +libsigsegv
variant does not work as expected (all platforms). Grep now uses the --with-libsigsegv
configure option instead of auto-detection. Will open a PR to reflect this (and crossing fingers it fixes the Tiger issue).
comment:7 Changed 3 years ago by mascguy (Christopher Nielsen)
Cc: | mascguy added |
---|
comment:8 Changed 3 years ago by evanmiller (Evan Miller)
Upstream bug report regarding --with-libsigsegv
not working: https://lists.gnu.org/archive/html/bug-grep/2021-08/msg00033.html
Proposed fix for original struct member issue: https://github.com/macports/macports-ports/pull/11913
comment:9 Changed 3 years ago by evanmiller (Evan Miller)
Resolution: | → fixed |
---|---|
Status: | assigned → closed |
comment:10 Changed 3 years ago by evanmiller (Evan Miller)
comment:11 Changed 3 years ago by evanmiller (Evan Miller)
Update: while the provided struct-member-rename patch does allow grep to build, there may be unexpected run-time behavior. See discussion here:
https://lists.gnu.org/archive/html/bug-gnulib/2021-08/msg00132.html
10.4 therefore should require the +libsigsegv
variant. I will offer up a patch when I have time.
comment:12 Changed 3 years ago by kencu (Ken)
I for one always think we should run the test suite, on everything, and I do that as much as possible.
Before we jump off to the variant, we (so far as I know) at this moment have no indication that the libsigsegv variant performs any better on Tiger than the non-libsigsegv variant, although we can hope it does for sure, and I look forward to hearing if it does. If it does, obviously preferred.
So being the tester kind of guy I am, it would be nice to know we are upgrading in some way and not trading for something even worse :>
BTW PTHREAD_RWLOCK_INITIALIZER
was one of my first additions to legacy-support way back when. So it is there, for grep to use if desired, as i see you found the tests wanted it (I think).
The other function missing was mempcpy
. I don't know if that exists in darwin, as per BigSur here:
% man mempcpy No manual entry for mempcpy
But I see someone put together a workaround in this file for it, at least <https://android.googlesource.com/platform/external/elfutils/+/441f72d43a9b550baa779fc82f70816da5f74f0e/config-compat-darwin.h>. Not sure if the grep guys already took care of that for darwin or not, I didn't follow all the links in your email chain.
comment:13 Changed 3 years ago by kencu (Ken)
As an aside, running the test suite on certain software can be extremely enlightening. I ran it on the opencv software one time, and as I recall 21% of the tests passed, 79% failed.
So there is that :>
comment:14 Changed 3 years ago by evanmiller (Evan Miller)
Indeed, I'm seeing more failing gnulib tests using libsigsegv
than without it. Good catch. I've sent my latest report to the gnulib mailing list.
The two tests that were failing without libsigsegv have to do with stack overflows. I presume this will be a rare condition in a seasoned code base like grep. (Usually happens when someone implements a recursive algorithm incorrectly.) So I feel fairly comfortable with the current solution.
The grep/gnulib folks have resolved the mempcpy
issue. The test suite expected PTHREAD_RWLOCK_INITIALIZER
, but grep itself doesn't require it.
comment:15 Changed 3 years ago by evanmiller (Evan Miller)
Anyone on Leopard/PPC is encouraged to try the gnulib patch here:
https://lists.gnu.org/archive/html/bug-gnulib/2021-08/msg00153.html
You should be able to apply it directly to the grep source.
comment:16 Changed 3 years ago by mascguy (Christopher Nielsen)
Of note, I'm seeing the same build failure for diffutils
, on 10.4 PPC.
Would the changes made for grep
, also be applicable to that port?
comment:17 Changed 3 years ago by evanmiller (Evan Miller)
Would the changes made for grep, also be applicable to that port?
Very likely. The struct member names changed after Tiger.
I don't have access to legacy systems.
GitHub PRs are welcome.