| /*---------------------------------------------------------------*/ |
| /*--- Begin multiarch_main_main.c ---*/ |
| /*---------------------------------------------------------------*/ |
| |
| /* |
| This file is part of Valgrind, a dynamic binary instrumentation |
| framework. |
| |
| Copyright (C) 2015 Philippe Waroquiers |
| |
| This program is free software; you can redistribute it and/or |
| modify it under the terms of the GNU General Public License as |
| published by the Free Software Foundation; either version 2 of the |
| License, or (at your option) any later version. |
| |
| This program is distributed in the hope that it will be useful, but |
| WITHOUT ANY WARRANTY; without even the implied warranty of |
| MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| General Public License for more details. |
| |
| You should have received a copy of the GNU General Public License |
| along with this program; if not, write to the Free Software |
| Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA |
| 02110-1301, USA. |
| |
| The GNU General Public License is contained in the file COPYING. |
| |
| Neither the names of the U.S. Department of Energy nor the |
| University of California nor the names of its contributors may be |
| used to endorse or promote products derived from this software |
| without prior written permission. |
| */ |
| |
| /* This file is used to have main_main.c compiled with VEXMULTIARCH |
| defined, so that all host and guest arch are callable from LibVEX_Translate |
| and other functions defined in main_main.c. |
| The resulting object file will be put in libvexmultiarch-<platform>-os>.a. |
| |
| The valgrind tools are making the assumption that host and guest are |
| the same. So, no need to drag the full set of archs when |
| linking a tool. |
| The VEX library is nicely split in arch independent and arch dependent |
| objects. Only main_main.c is dragging the various arch specific files. |
| So, main_main.c (the main entry point of the VEX library) is compiled |
| only for the current guest/host arch. |
| |
| This file ensures we recompile main_main.c with all archs activated. |
| |
| So, a VEX user can decide (at link time) to use a 'single arch' VEX lib, |
| or to use a multiarch VEX lib. |
| If t1.o is a 'main' that calls LibVEX_Translate, then |
| to link with a single arch VEX lib, use e.g. the following : |
| gcc -o t1single t1.o -LInst/lib/valgrind -lvex-amd64-linux -lgcc |
| |
| to link with a multi arch VEX lib, you must insert |
| -lvexmultiarch-amd64-linux *before* -lvex-amd64-linux |
| i.e; |
| gcc -o t1multi t1.o \ |
| -LInst/lib/valgrind -lvexmultiarch-amd64-linux -lvex-amd64-linux -lgcc |
| |
| t1single will only be able to translate from amd64 to amd64. |
| t1multi will be able to translate from any arch supported by VEX |
| to any other arch supported by VEX. |
| Note however that multiarch support is experimental and poorly |
| or not tested. |
| */ |
| |
| #define VEXMULTIARCH 1 |
| #include "main_main.c" |
| |
| /*---------------------------------------------------------------*/ |
| /*--- end multiarch_main_main.c ---*/ |
| /*---------------------------------------------------------------*/ |