-
Notifications
You must be signed in to change notification settings - Fork 274
goto-gcc hybrid binaries on OS X #3867
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
✔️
Passed Diffblue compatibility checks (cbmc commit: 48629e2).
Build URL: https://travis-ci.com/diffblue/test-gen/builds/98026294
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm not an expert on Mach-O (only read the lowlevelbits.org summary, plus some background knowledge of other object formats, such as ELF, COFF, etc). Mach-O parsing functionality looks OK to me. I might question the user experience a bit though. For instance, what happens if a user on, say, a linux host attempts to analyse Mach-O object files? As far as I can tell they'll get told that the files are not goto-programs - where in reality the situation is that reading Mach-O object files is only supported on APPLE platforms. It would be a nicer if there was an explicit message to that affect.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
On grounds the @chrisr-diffblue knows his onions, happy to proxy approve :)
48629e2
to
aeeccd1
Compare
Rebase done, I'll try to implement @chrisr-diffblue's suggestion as soon as possible. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
✔️
Passed Diffblue compatibility checks (cbmc commit: aeeccd1).
Build URL: https://travis-ci.com/diffblue/test-gen/builds/98143634
aeeccd1
to
cced593
Compare
cced593
to
f26a30a
Compare
@chrisr-diffblue @smowton @kroening I have added a commit that should enable detection, and yield a warning if we are on a platform where we cannot fully parse the file. Should be ready for (re-)review. |
LGTM - thanks for the improved user experience. |
f26a30a
to
cdb3726
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🚫
This PR failed Diffblue compatibility checks (cbmc commit: adc6af1).
Build URL: https://travis-ci.com/diffblue/test-gen/builds/100295745
Status will be re-evaluated on next push.
Please contact @peterschrammel, @thk123, or @allredj for support.
Common spurious failures:
- the cbmc commit has disappeared in the mean time (e.g. in a force-push)
- the author is not in the list of contributors (e.g. first-time contributors).
The incompatibility may have been introduced by an earlier PR. In that case merging this
PR should be avoided unless it fixes the current incompatibility.
adc6af1
to
7893de0
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This PR failed Diffblue compatibility checks (cbmc commit: 7893de0).
Build URL: https://travis-ci.com/diffblue/test-gen/builds/102433712
Status will be re-evaluated on next push.
Common spurious failures:
-
the cbmc commit has disappeared in the mean time (e.g. in a force-push)
-
the author is not in the list of contributors (e.g. first-time contributors).
-
the compatibility was already broken by an earlier merge.
Pass a message handler to is_goto_binary [blocks: #3867]
7893de0
to
d16fdcb
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This PR failed Diffblue compatibility checks (cbmc commit: d16fdcb).
Build URL: https://travis-ci.com/diffblue/test-gen/builds/103556283
Status will be re-evaluated on next push.
Common spurious failures:
-
the cbmc commit has disappeared in the mean time (e.g. in a force-push)
-
the author is not in the list of contributors (e.g. first-time contributors).
-
the compatibility was already broken by an earlier merge.
d16fdcb
to
76600d0
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This PR failed Diffblue compatibility checks (cbmc commit: 76600d0).
Build URL: https://travis-ci.com/diffblue/test-gen/builds/104510954
Status will be re-evaluated on next push.
Common spurious failures:
-
the cbmc commit has disappeared in the mean time (e.g. in a force-push)
-
the author is not in the list of contributors (e.g. first-time contributors).
-
the compatibility was already broken by an earlier merge.
76600d0
to
e615d37
Compare
lipo/fat binaries only work properly for executables as it isn't possible to build archives of fat binaries containing goto-cc sections (ranlib complains about invalid object files); conversely, adding additional sections isn't possible with executables, but fat binaries work fine.
A basic Mach-O header parser, only functional on OS X.
The test requires building platform-specific code, and thus additional rules were added to the Makefile.
Hard-code the magic values as extracted from OS X header files, but check them when actually building on OS X.
e615d37
to
c7e8bcc
Compare
Depends on #3702, #3866, only the last three commits are specifically for this feature. They finally provide a test for the code touched in #3702.