summaryrefslogtreecommitdiff
path: root/output
diff options
context:
space:
mode:
authorChang S. Bae <chang.seok.bae@intel.com>2018-08-13 13:50:18 -0700
committerCyrill Gorcunov <gorcunov@gmail.com>2018-08-16 00:01:38 +0300
commitb8d153eb4dee2ac22fc09cfba99dbae48c724b88 (patch)
treec017964dc8cd4bd791a8e9153f805397b583e20b /output
parenta578634b61615a4a0d5e51b1d1b046efdbd9867d (diff)
downloadnasm-b8d153eb4dee2ac22fc09cfba99dbae48c724b88.tar.gz
macho: Turn off jump-match optimization for subsections_via_symbols
The jump-match optimization tends to remove labels. When the "subsections_via_symbols" pragma is declared, all the labels should be emitted. Disabling the optimization (only) makes the pragma effective. It might be cleaner to extend the OFMT interface to support callback function. In this case, the reconfiguration can be done through the callback interface, rather than direct access to the global variable. Signed-off-by: Chang S. Bae <chang.seok.bae@intel.com>
Diffstat (limited to 'output')
-rw-r--r--output/outmacho.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/output/outmacho.c b/output/outmacho.c
index 93b4768e..d092cf23 100644
--- a/output/outmacho.c
+++ b/output/outmacho.c
@@ -1891,6 +1891,9 @@ macho_pragma(const struct pragma *pragma)
if (real)
head_flags |= MH_SUBSECTIONS_VIA_SYMBOLS;
+ /* Jmp-match optimization conflicts */
+ optimizing.flag |= OPTIM_DISABLE_JMP_MATCH;
+
return DIRR_OK;
case D_NO_DEAD_STRIP: