|
From: <sv...@va...> - 2005-06-18 03:28:03
|
Author: njn Date: 2005-06-18 04:27:58 +0100 (Sat, 18 Jun 2005) New Revision: 3929 Log: Moved the code trampoline stuff into a new module, m_trampoline. Not certain this was the right thing to do, but that stuff sure as hell didn't fit in any of the existing modules. Added: trunk/coregrind/m_trampoline.S trunk/coregrind/pub_core_trampoline.h Removed: trunk/coregrind/amd64/helpers.S trunk/coregrind/x86/helpers.S Modified: trunk/coregrind/Makefile.am trunk/coregrind/amd64/Makefile.am trunk/coregrind/core.h trunk/coregrind/m_main.c trunk/coregrind/m_redir.c trunk/coregrind/m_sigframe/sigframe-amd64-linux.c trunk/coregrind/m_sigframe/sigframe-x86-linux.c trunk/coregrind/m_stacktrace.c trunk/coregrind/x86/Makefile.am Modified: trunk/coregrind/Makefile.am =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/coregrind/Makefile.am 2005-06-18 02:25:16 UTC (rev 3928) +++ trunk/coregrind/Makefile.am 2005-06-18 03:27:58 UTC (rev 3929) @@ -70,6 +70,7 @@ pub_core_syswrap.h \ pub_core_threadmodel.h \ pub_core_tooliface.h \ + pub_core_trampoline.h \ pub_core_translate.h \ pub_core_transtab.h \ pub_core_transtab_asm.h \ @@ -118,6 +119,7 @@ m_syscall.c \ m_threadmodel.c \ m_tooliface.c \ + m_trampoline.S \ m_translate.c \ m_transtab.c \ \ Modified: trunk/coregrind/amd64/Makefile.am =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/coregrind/amd64/Makefile.am 2005-06-18 02:25:16 UTC (rev 3928) +++ trunk/coregrind/amd64/Makefile.am 2005-06-18 03:27:58 UTC (rev 3929) @@ -11,7 +11,6 @@ =20 libarch_a_SOURCES =3D \ cpuid.S \ - helpers.S \ jmp_with_stack.c \ state.c =20 Deleted: trunk/coregrind/amd64/helpers.S =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/coregrind/amd64/helpers.S 2005-06-18 02:25:16 UTC (rev 3928) +++ trunk/coregrind/amd64/helpers.S 2005-06-18 03:27:58 UTC (rev 3929) @@ -1,96 +0,0 @@ -##--------------------------------------------------------------------## -##--- Support routines for the JITter output. amd64/helpers.S ---## -##--------------------------------------------------------------------## - -/* - This file is part of Valgrind, a dynamic binary instrumentation - framework. - - Copyright (C) 2000-2005 Julian Seward=20 - js...@ac... - - 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., 59 Temple Place, Suite 330, Boston, MA - 02111-1307, USA. - - The GNU General Public License is contained in the file COPYING. -*/ - -#include "core_asm.h" -#include "vki_unistd.h" - -/* ------------------ SIMULATED CPU HELPERS ------------------ */ -/* A stubs for a return which we want to catch: a signal return. - returns and pthread returns. In the latter case, the thread's - return value is in %EAX, so we pass this as the first argument - to the request. In both cases we use the user request mechanism. - You need to to read the definition of VALGRIND_MAGIC_SEQUENCE - in valgrind.h to make sense of this. - - This isn't used in-place. It is copied into the client address space - at an arbitary address. Therefore, this code must be completely - position-independent. -*/ -.global VG_(trampoline_code_start) -.global VG_(trampoline_code_length) -.global VG_(tramp_rt_sigreturn_offset) -.global VG_(tramp_syscall_offset) -.global VG_(tramp_gettimeofday_offset) -.global VG_(tramp_time_offset) -=09 -VG_(trampoline_code_start): -rt_sigreturn_start: - /* Likewise for rt signal frames */ - movq $__NR_rt_sigreturn, %rax - syscall - ud2 - - # We can point our sysinfo stuff here - .align 16 -syscall_start: - /* unused on amd64 */ - - .align 16 -gettimeofday_start: - movq $__NR_gettimeofday, %rax - syscall - ret - - .align 16 -time_start: - movq $__NR_time, %rax - syscall - ret -tramp_code_end: - =09 -.data -VG_(trampoline_code_length): - .long tramp_code_end - VG_(trampoline_code_start) -VG_(tramp_rt_sigreturn_offset): - .long rt_sigreturn_start - VG_(trampoline_code_start) -VG_(tramp_syscall_offset): - .long syscall_start - VG_(trampoline_code_start) -VG_(tramp_gettimeofday_offset): - .long gettimeofday_start - VG_(trampoline_code_start) -VG_(tramp_time_offset): - .long time_start - VG_(trampoline_code_start) -.text - - -/* Let the linker know we don't need an executable stack */ -.section .note.GNU-stack,"",@progbits - =09 -##--------------------------------------------------------------------## -##--- end ---## -##--------------------------------------------------------------------## Modified: trunk/coregrind/core.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/coregrind/core.h 2005-06-18 02:25:16 UTC (rev 3928) +++ trunk/coregrind/core.h 2005-06-18 03:27:58 UTC (rev 3929) @@ -49,19 +49,6 @@ =20 #include "pub_core_scheduler.h" // for types 'ThreadArchState' =20 -/* --------------------------------------------------------------------- - Exports of vg_helpers.S - ------------------------------------------------------------------ */ - -/* Information about trampoline code (for signal return and syscalls) */ -extern const Char VG_(trampoline_code_start); -extern const Int VG_(trampoline_code_length); -extern const Int VG_(tramp_sigreturn_offset); -extern const Int VG_(tramp_rt_sigreturn_offset); -extern const Int VG_(tramp_syscall_offset); -extern const Int VG_(tramp_gettimeofday_offset); -extern const Int VG_(tramp_time_offset); -=20 // --------------------------------------------------------------------- // Architecture-specific things defined in eg. x86/*.c // --------------------------------------------------------------------- Modified: trunk/coregrind/m_main.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/coregrind/m_main.c 2005-06-18 02:25:16 UTC (rev 3928) +++ trunk/coregrind/m_main.c 2005-06-18 03:27:58 UTC (rev 3929) @@ -52,6 +52,7 @@ #include "pub_core_signals.h" #include "pub_core_syswrap.h" #include "pub_core_tooliface.h" +#include "pub_core_trampoline.h" #include "pub_core_transtab.h" =20 #include <dirent.h> Modified: trunk/coregrind/m_redir.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/coregrind/m_redir.c 2005-06-18 02:25:16 UTC (rev 3928) +++ trunk/coregrind/m_redir.c 2005-06-18 03:27:58 UTC (rev 3929) @@ -40,6 +40,7 @@ #include "pub_core_options.h" #include "pub_core_redir.h" #include "pub_core_skiplist.h" +#include "pub_core_trampoline.h" #include "pub_core_transtab.h" #include "m_debuginfo/priv_symtab.h" // XXX: bad! =20 Modified: trunk/coregrind/m_sigframe/sigframe-amd64-linux.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/coregrind/m_sigframe/sigframe-amd64-linux.c 2005-06-18 02:25:16= UTC (rev 3928) +++ trunk/coregrind/m_sigframe/sigframe-amd64-linux.c 2005-06-18 03:27:58= UTC (rev 3929) @@ -39,6 +39,7 @@ #include "pub_core_sigframe.h" #include "pub_core_signals.h" #include "pub_core_tooliface.h" +#include "pub_core_trampoline.h" =20 #include "libvex_guest_amd64.h" =20 Modified: trunk/coregrind/m_sigframe/sigframe-x86-linux.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/coregrind/m_sigframe/sigframe-x86-linux.c 2005-06-18 02:25:16 U= TC (rev 3928) +++ trunk/coregrind/m_sigframe/sigframe-x86-linux.c 2005-06-18 03:27:58 U= TC (rev 3929) @@ -39,6 +39,7 @@ #include "pub_core_sigframe.h" #include "pub_core_signals.h" #include "pub_core_tooliface.h" +#include "pub_core_trampoline.h" =20 #include "libvex_guest_x86.h" =20 Modified: trunk/coregrind/m_stacktrace.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/coregrind/m_stacktrace.c 2005-06-18 02:25:16 UTC (rev 3928) +++ trunk/coregrind/m_stacktrace.c 2005-06-18 03:27:58 UTC (rev 3929) @@ -37,6 +37,7 @@ #include "pub_core_options.h" #include "pub_core_profile.h" #include "pub_core_stacktrace.h" +#include "pub_core_trampoline.h" =20 /*------------------------------------------------------------*/ /*--- Exported functions. ---*/ Copied: trunk/coregrind/m_trampoline.S (from rev 3925, trunk/coregrind/x8= 6/helpers.S) =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/coregrind/x86/helpers.S 2005-06-18 01:35:16 UTC (rev 3925) +++ trunk/coregrind/m_trampoline.S 2005-06-18 03:27:58 UTC (rev 3929) @@ -0,0 +1,122 @@ + +##--------------------------------------------------------------------## +##--- Trampoline code page stuff. m_trampoline.S ---## +##--------------------------------------------------------------------## + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright (C) 2000-2005 Julian Seward=20 + js...@ac... + + 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., 59 Temple Place, Suite 330, Boston, MA + 02111-1307, USA. + + The GNU General Public License is contained in the file COPYING. +*/ + +#include "core_asm.h" +#include "vki_unistd.h" + +/* ------------------ SIMULATED CPU HELPERS ------------------ */ +/* Stubs for returns which we want to catch. + This code isn't used in-place. It is copied into the client address + space at an arbitary address. Therefore, this code must be completel= y + position-independent. +*/ +.global VG_(trampoline_code_start) +.global VG_(trampoline_code_length) +.global VG_(tramp_sigreturn_offset) +.global VG_(tramp_rt_sigreturn_offset) +.global VG_(tramp_syscall_offset) +=09 +VG_(trampoline_code_start): +#if defined(VGP_x86_linux) + sigreturn_start: + /* This is a very specific sequence which GDB uses to + recognize signal handler frames. */ + popl %eax + movl $__NR_sigreturn, %eax + int $0x80 + ud2 + + rt_sigreturn_start: + /* Likewise for rt signal frames */ + movl $__NR_rt_sigreturn, %eax + int $0x80 + ud2 + + # We can point our sysinfo stuff here + .align 16 + syscall_start:=09 + int $0x80 + ret + + gettimeofday_start: + time_start: + /* unused on x86 */ + +#elif defined(VGP_amd64_linux) + rt_sigreturn_start: + /* Likewise for rt signal frames */ + movq $__NR_rt_sigreturn, %rax + syscall + ud2 + + .align 16 + gettimeofday_start: + movq $__NR_gettimeofday, %rax + syscall + ret + + .align 16 + time_start: + movq $__NR_time, %rax + syscall + ret + + .align 16 + sigreturn_start: + syscall_start: + /* unused on amd64 */ + +#else +# error Unknown platform +#endif +tramp_code_end: + =09 +.data +VG_(trampoline_code_length): + .long tramp_code_end - VG_(trampoline_code_start) +VG_(tramp_sigreturn_offset): + .long sigreturn_start - VG_(trampoline_code_start) +VG_(tramp_rt_sigreturn_offset): + .long rt_sigreturn_start - VG_(trampoline_code_start) +VG_(tramp_syscall_offset): + .long syscall_start - VG_(trampoline_code_start) +VG_(tramp_gettimeofday_offset): + .long gettimeofday_start - VG_(trampoline_code_start) +VG_(tramp_time_offset): + .long time_start - VG_(trampoline_code_start) +.text + + +/* Let the linker know we don't need an executable stack */ +.section .note.GNU-stack,"",@progbits + =09 +##--------------------------------------------------------------------## +##--- end ---## +##--------------------------------------------------------------------## Added: trunk/coregrind/pub_core_trampoline.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/coregrind/pub_core_trampoline.h 2005-06-18 02:25:16 UTC (rev 39= 28) +++ trunk/coregrind/pub_core_trampoline.h 2005-06-18 03:27:58 UTC (rev 39= 29) @@ -0,0 +1,56 @@ + +/*--------------------------------------------------------------------*/ +/*--- The trampoline code page. pub_core_trampoline.h ---*/ +/*--------------------------------------------------------------------*/ + +/* + This file is part of Valgrind, a dynamic binary instrumentation + framework. + + Copyright (C) 2000-2005 Julian Seward + js...@ac... + + 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., 59 Temple Place, Suite 330, Boston, MA + 02111-1307, USA. + + The GNU General Public License is contained in the file COPYING. +*/ + +#ifndef __PUB_CORE_TRAMPOLINE_H +#define __PUB_CORE_TRAMPOLINE_H + +//-------------------------------------------------------------------- +// PURPOSE: This module defines our trampoline code page, which we copy +// over the client's, for arcane signal return and syscall purposes... +//-------------------------------------------------------------------- + +// Platform-specifics aren't neatly factored out here, since some of the +// constants are not used on all platforms. But it's non-obvious how +// to do it better. + +extern const Char VG_(trampoline_code_start); // x86 + amd64 +extern const Int VG_(trampoline_code_length); // x86 + amd64 + +extern const Int VG_(tramp_sigreturn_offset); // x86 +extern const Int VG_(tramp_rt_sigreturn_offset); // x86 + amd64 +extern const Int VG_(tramp_syscall_offset); // x86 +extern const Int VG_(tramp_gettimeofday_offset); // amd64 +extern const Int VG_(tramp_time_offset); // amd64 +=20 +#endif // __PUB_CORE_TRAMPOLINE_H + +/*--------------------------------------------------------------------*/ +/*--- end ---*/ +/*--------------------------------------------------------------------*/ Modified: trunk/coregrind/x86/Makefile.am =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/coregrind/x86/Makefile.am 2005-06-18 02:25:16 UTC (rev 3928) +++ trunk/coregrind/x86/Makefile.am 2005-06-18 03:27:58 UTC (rev 3929) @@ -11,7 +11,6 @@ =20 libarch_a_SOURCES =3D \ cpuid.S \ - helpers.S \ jmp_with_stack.c \ state.c =20 Deleted: trunk/coregrind/x86/helpers.S =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- trunk/coregrind/x86/helpers.S 2005-06-18 02:25:16 UTC (rev 3928) +++ trunk/coregrind/x86/helpers.S 2005-06-18 03:27:58 UTC (rev 3929) @@ -1,90 +0,0 @@ -##--------------------------------------------------------------------## -##--- Support routines for the JITter output. x86/helpers.S ---## -##--------------------------------------------------------------------## - -/* - This file is part of Valgrind, a dynamic binary instrumentation - framework. - - Copyright (C) 2000-2005 Julian Seward=20 - js...@ac... - - 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., 59 Temple Place, Suite 330, Boston, MA - 02111-1307, USA. - - The GNU General Public License is contained in the file COPYING. -*/ - -#include "core_asm.h" -#include "vki_unistd.h" - -/* ------------------ SIMULATED CPU HELPERS ------------------ */ -/* A stubs for a return which we want to catch: a signal return. - returns and pthread returns. In the latter case, the thread's - return value is in %EAX, so we pass this as the first argument - to the request. In both cases we use the user request mechanism. - You need to to read the definition of VALGRIND_MAGIC_SEQUENCE - in valgrind.h to make sense of this. - - This isn't used in-place. It is copied into the client address space - at an arbitary address. Therefore, this code must be completely - position-independent. -*/ -.global VG_(trampoline_code_start) -.global VG_(trampoline_code_length) -.global VG_(tramp_sigreturn_offset) -.global VG_(tramp_rt_sigreturn_offset) -.global VG_(tramp_syscall_offset) -=09 -VG_(trampoline_code_start): -sigreturn_start: - /* This is a very specific sequence which GDB uses to - recognize signal handler frames. */ - popl %eax - movl $__NR_sigreturn, %eax - int $0x80 - ud2 - -rt_sigreturn_start: - /* Likewise for rt signal frames */ - movl $__NR_rt_sigreturn, %eax - int $0x80 - ud2 - - # We can point our sysinfo stuff here - .align 16 -syscall_start:=09 - int $0x80 - ret -tramp_code_end: - =09 -.data -VG_(trampoline_code_length): - .long tramp_code_end - VG_(trampoline_code_start) -VG_(tramp_sigreturn_offset): - .long sigreturn_start - VG_(trampoline_code_start) -VG_(tramp_rt_sigreturn_offset): - .long rt_sigreturn_start - VG_(trampoline_code_start) -VG_(tramp_syscall_offset): - .long syscall_start - VG_(trampoline_code_start) -.text - - -/* Let the linker know we don't need an executable stack */ -.section .note.GNU-stack,"",@progbits - =09 -##--------------------------------------------------------------------## -##--- end ---## -##--------------------------------------------------------------------## |