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>
This commit is contained in:
Chang S. Bae 2018-08-13 13:50:18 -07:00 committed by Cyrill Gorcunov
parent a578634b61
commit b8d153eb4d

View file

@ -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: